CmpInsertCallbackInListByAltitude
INT64 __fastcall CmpInsertCallbackInListByAltitude(INT64 a1, CHAR a2){
_ETHREAD *CurrentThread;
unsigned int v3;
_UNICODE_STRING *v6;
NTSTATUS v7;
INT64 *Buffer;
INT64 v9;
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
v3 = 0;
--CurrentThread->Tcb.KernelApcDisable;
ExAcquirePushLockExclusiveEx((_EX_PUSH_LOCK *)&CmpDummyThreadEvent + 251, 0i64);
*(_QWORD *)(a1 + 24) = ++*(&CmpDummyThreadEvent + 256);
v6 = (_UNICODE_STRING *)*(&CmpDummyThreadEvent + 252);
if( (_UNKNOWN *)*(&CmpDummyThreadEvent + 252) != (_UNKNOWN *)((char *)&CmpDummyThreadEvent + 2016) )
{
do
{
v7 = RtlCompareAltitudes(v6 + 3, (_UNICODE_STRING *)(a1 + 48));
if( v7 )
{
if( v7 < 0 )
break;
}
else if( !a2 )
{
goto LABEL_12;
}
v6 = *(_UNICODE_STRING **)&v6->Length;
}
while( v6 != (_UNICODE_STRING *)((char *)&CmpDummyThreadEvent + 2016) );
if( !v7 && !a2 )
{
LABEL_12:
v3 = -1071906799;
goto LABEL_8;
}
}
Buffer = (INT64 *)v6->Buffer;
v9 = *Buffer;
if( *(INT64 **)(*Buffer + 8) != Buffer )
__fastfail(3u);
*(_QWORD *)a1 = v9;
*(_QWORD *)(a1 + 8) = Buffer;
*(_QWORD *)(v9 + 8) = a1;
*Buffer = a1;
_InterlockedIncrement(&dword_140C5083C);
LABEL_8:
ExReleasePushLockEx((ULONG_PTR)&CmpDummyThreadEvent + 2008, 0);
KeLeaveCriticalRegionThread(KeGetCurrentThread());
return v3;
}Referenced by:
CmpRegisterCallbackInternal