ObpInsertCallbackByAltitude
__int64 __fastcall ObpInsertCallbackByAltitude(__int64 a1, _QWORD *a2){
_ETHREAD *CurrentThread;
_QWORD *v3;
unsigned int v4;
UINT64 v6;
_QWORD *v7;
__int64 *v8;
__int64 v9;
UNICODE_STRING *v11;
NTSTATUS v12;
bool v13;
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
v3 = (_QWORD *)(a1 + 200);
v4 = 0;
--*((_WORD *)CurrentThread + 243);
v6 = a1 + 184;
ExAcquirePushLockExclusiveEx(a1 + 184, 0i64);
v7 = (_QWORD *)*v3;
if( (_QWORD *)*v3 == v3 )
goto LABEL_2;
v11 = (UNICODE_STRING *)a2[3];
while( 1 )
{
v12 = RtlCompareAltitudes((UNICODE_STRING *)(v7[3] + 16i64), v11 + 1);
v13 = v12 == 0;
if( v12 <= 0 )
break;
v7 = (_QWORD *)*v7;
if( v7 == v3 )
{
v13 = v12 == 0;
break;
}
}
if( !v13 )
{
LABEL_2:
v8 = (__int64 *)v7[1];
v9 = *v8;
if( *(__int64 **)(*v8 + 8) != v8 )
__fastfail(3u);
*a2 = v9;
a2[1] = v8;
*(_QWORD *)(v9 + 8) = a2;
*v8 = (__int64)a2;
}
else
{
v4 = -1071906799;
}
ExReleasePushLockEx(v6, 0i64);
KiLeaveGuardedRegionUnsafe((__int64)KeGetCurrentThread());
return v4;
}Referenced by:
ObRegisterCallbacks