RtlGetIntegerAtom
INT8 __fastcall RtlGetIntegerAtom(UINT64 a1, WORD *a2){
wchar_t *v4;
_WORD *v5;
wchar_t v6;
_UNICODE_STRING String;
UINT64 Value;
String = 0i64;
if( (a1 & 0xFFFFFFFFFFFF0000ui64) == 0 )
{
if( (unsigned __int16)a1 < 0xC000u )
{
if( !(_WORD)a1 )
LOWORD(a1) = -16384;
if( a2 )
*a2 = a1;
return 1;
}
return 0;
}
if( *(_WORD *)a1 != 35 )
return 0;
v4 = (wchar_t *)(a1 + 2);
v5 = (_WORD *)(a1 + 2);
if( *(_WORD *)(a1 + 2) )
{
v6 = *v4;
while( (unsigned __int16)(v6 - 48) <= 9u )
{
v6 = *++v5;
if( !*v5 )
goto LABEL_8;
}
return 0;
}
LABEL_8:
String.Buffer = v4;
String.Length = (_WORD)v5 - (_WORD)v4;
String.MaximumLength = (_WORD)v5 - (_WORD)v4;
LODWORD(Value) = 0;
if( RtlUnicodeStringToInteger(&String, 0xAui64, &Value) < 0 )
return 0;
if( a2 )
{
if( (unsigned int)(Value - 1) > 0xBFFF )
*a2 = -16384;
else
*a2 = Value;
}
return 1;
}Referenced by:
RtlAddAtomToAtomTableEx
RtlLookupAtomInAtomTable