RtlpInsertStringAtom

UINT8 __stdcall RtlpInsertStringAtom(_RTL_ATOM_TABLE *Table, _RTL_ATOM_TABLE_ENTRY *TableEntry){
  VOID *Handle; 
  VOID *v5; 
  INT64 v6; 
  VOID *v7; 
  unsigned int v8; 
  _ETHREAD *CurrentThread; 
  _HANDLE_TABLE_ENTRY *v11; 
  const VOID *v12; 
  INT64 v13; 
  void *v14; 

  Handle = ExCreateHandleEx(Table->ExHandleTable, TableEntry, 0i64, 0i64, 0i64);
  v7 = Handle;
  if( Handle )
  {
    v8 = (unsigned int)Handle >> 2;
    if( v8 <= 0xFFFF && v8 + 49152 >= v8 && v8 + 49152 <= 0xFFFF )
    {
      TableEntry->HandleIndex = v8;
      TableEntry->Atom = v8 - 0x4000;
      return 1;
    }
    CurrentThread = (_ETHREAD *)KeGetCurrentThread();
    --CurrentThread->Tcb.KernelApcDisable;
    v11 = ExMapHandleToPointer(Table->ExHandleTable, v7, v5, v6, v12, v13, v14);
    ExDestroyHandle(Table->ExHandleTable, v7, v11);
    KeLeaveCriticalRegionThread(KeGetCurrentThread());
  }
  return 0;
}

Referenced by:

RtlAddAtomToAtomTableEx