RtlUnicodeStringToInt64
INT64 __fastcall RtlUnicodeStringToInt64(const _UNICODE_STRING *String, UINT64 Base, INT64 *Number, WCHAR **EndPointer){
__int64 Length;
unsigned int v6;
wchar_t *Buffer;
unsigned __int64 MaximumLength;
WCHAR *v11;
__int64 v12;
unsigned __int64 v13;
INT64 flags;
INT64 error;
WCHAR *endptr;
UINT8 dst[2];
Length = String->Length;
v6 = Base;
Buffer = String->Buffer;
MaximumLength = String->MaximumLength;
endptr = 0i64;
v11 = Buffer;
if( MaximumLength < Length + 2 || Buffer[((unsigned __int64)(unsigned int)MaximumLength >> 1) - 1] )
{
v11 = (WCHAR *)dst;
v12 = (unsigned int)Length >> 1;
if( (unsigned int)v12 >= 0x40 )
v12 = 64i64;
v13 = 2 * v12;
memmove(dst, (UINT8 *)Buffer, 2 * v12);
if( v13 >= 0x82 )
_report_rangecheckfailure();
*(_WORD *)&dst[v13] = 0;
}
LODWORD(error) = 0;
LODWORD(flags) = 0;
*Number = wcstoxq(0i64, v11, &endptr, v6, flags, &error);
if( EndPointer )
*EndPointer = &String->Buffer[endptr - v11];
return(_DWORD)error != 0 ? 0xC0000095 : 0;
}Referenced by:
GetFlags