HalpBlkPoRegisterIdleState
NTSTATUS __stdcall HalpBlkPoRegisterIdleState(ULONG_PTR a1){
__int64 v1;
__int64 v2;
void *v4;
__int64 v5;
void *BugCheckParameter4;
unsigned __int64 v7;
int v8;
__int64(__fastcall *v9)(_QWORD, int *, __int128 *, __int64, int *);
NTSTATUS v10;
__int128 v12;
__int64 v13;
int v14;
int v15;
int v16;
int v17;
int v18;
v2 = v1;
v4 = (void *)a1;
v5 = *(_QWORD *)(*(&CmpDummyThreadEvent + 487) + 8i64 * a1);
BugCheckParameter4 = (void *)(v5 + 2216);
v7 = (unsigned __int8)KeAcquireSpinLockRaiseToDpc((UINT64 *)(v5 + 2216));
HalpBlkPoBusyWait(5u, a1, v5 + 2216);
*(_QWORD *)(v5 + 2232) = 0i64;
*(_QWORD *)(v5 + 2248) = 0i64;
*(_QWORD *)(v5 + 2240) = v2;
*(_DWORD *)(v5 + 2228) = 3;
_InterlockedExchange((volatile __int32 *)(v5 + 2224), 1);
v8 = *(_DWORD *)(v5 + 20);
v15 = -1;
v12 = 0i64;
DWORD2(v12) = v8;
v13 = 0i64;
LODWORD(v12) = 4;
v16 = 1;
v18 = *(_DWORD *)(qword_140C50700 + 20);
v17 = *(_DWORD *)(qword_140C50700 + 16);
v9 = *(__int64(__fastcall **)(_QWORD, int *, __int128 *, __int64, int *))(Controller + 120);
_disable();
v10 = v9(*(_QWORD *)(Controller + 16), &v17, &v12, 225i64, &v15);
if( (v14 & 0x200) != 0 )
_enable();
if( v10 < 0 )
KeBugCheckEx(0x1DAu, (PVOID)4, (PVOID)5, v4, BugCheckParameter4);
KxReleaseSpinLock((UINT64 *)BugCheckParameter4);
__writecr8(v7);
return v10;
}Referenced by:
No references.