KdRegisterDebuggerDataBlock
char __fastcall KdRegisterDebuggerDataBlock(__int64 a1, __int64 a2){
unsigned __int8 v3;
unsigned __int64 v4;
__int64 *v5;
__int64 *v6;
char result;
__int64 *v8;
KeAcquireSpinLockRaiseToDpc(&KdpDataSpinLock, a2);
v4 = v3;
v5 = (__int64 *)KdpDebuggerDataListHead;
while( v5 != &KdpDebuggerDataListHead )
{
v8 = v5;
v5 = (__int64 *)*v5;
if( v8 == (__int64 *)a2 || *((_DWORD *)v8 + 4) == 1195525195 )
{
KxReleaseSpinLock(&KdpDataSpinLock);
result = 0;
goto LABEL_5;
}
}
*(_DWORD *)(a2 + 16) = 1195525195;
*(_DWORD *)(a2 + 20) = 896;
v6 = (__int64 *)qword_140C40578;
if( *(__int64 **)qword_140C40578 != &KdpDebuggerDataListHead )
__fastfail(3u);
*(_QWORD *)a2 = &KdpDebuggerDataListHead;
*(_QWORD *)(a2 + 8) = v6;
*v6 = a2;
qword_140C40578 = a2;
KxReleaseSpinLock(&KdpDataSpinLock);
result = 1;
LABEL_5:
__writecr8(v4);
return result;
}Referenced by:
KdInitSystem