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