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.