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