RtlpInsertStringAtom

CHAR __fastcall RtlpInsertStringAtom(INT64 a1, INT64 a2){
  void *Handle; 
  void *v5; 
  INT64 v6; 
  VOID *v7; 
  unsigned int v8; 
  _ETHREAD *CurrentThread; 
  _HANDLE_TABLE_ENTRY *v11; 
  INT64 v12; 
  INT64 v13; 
  void *v14; 
  Handle = ExCreateHandleEx(*(_QWORD *)(a1 + 16), a2, 0, 0, 0i64);
  v7 = Handle;
  if( Handle )
  {
    v8 = (unsigned int)Handle >> 2;
    if( v8 <= 0xFFFF && v8 + 49152 >= v8 && v8 + 49152 <= 0xFFFF )
    {
      *(_WORD *)(a2 + 8) = v8;
      *(_WORD *)(a2 + 10) = v8 - 0x4000;
      return 1;
    }
    CurrentThread = (_ETHREAD *)KeGetCurrentThread();
    --*((_WORD *)CurrentThread + 242);
    v11 = ExMapHandleToPointer(*(_HANDLE_TABLE **)(a1 + 16), v7, v5, v6, v12, v13, v14);
    ExDestroyHandle(*(_HANDLE_TABLE **)(a1 + 16), v7, v11);
    KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
  }
  return 0;
}

Referenced by:

RtlAddAtomToAtomTableEx