HalpInterruptResetThisProcessor

VOID __fastcall __noreturn HalpInterruptResetThisProcessor(INT64 a1, DOUBLE a2){
  unsigned int v2; 
  ULONG_PTR *v3; 
  ULONG_PTR *v4; 
  int v5; 
  __int64(__fastcall *v6)(ULONG_PTR); 
  int v7; 
  ULONG_PTR v8; 
  __int64(__fastcall *v9)(_QWORD); 
  int v10; 
  v2 = *((_DWORD *)KeGetPcr() + 105);
  _disable();
  HalpInterruptInitializeLocalUnit((PVOID)HalpInterruptController, a2);
  HalpInterruptLastProblem = 12;
  if( !v2 )
  {
    _InterlockedDecrement((volatile signed __int32 *)HalpInterruptProcessorsStarted);
    while( _InterlockedExchangeAdd((volatile signed __int32 *)HalpInterruptProcessorsStarted, 0) )
      _mm_pause();
    KeStallExecutionProcessor(0x64u);
    v3 = (ULONG_PTR *)HalpRegisteredInterruptControllers;
    while( v3 != &HalpRegisteredInterruptControllers )
    {
      v4 = v3;
      v3 = (ULONG_PTR *)*v3;
      v5 = *((_DWORD *)v4 + 56);
      if( (v5 & 1) != 0 )
      {
        *((_DWORD *)v4 + 56) = v5 & 0xFFFFFFFE;
        HalpInterruptInitializeController(v4, a2);
        v6 = (__int64(__fastcall *)(ULONG_PTR))v4[22];
        if( v6 && (v7 = v6(v4[2]), v7 < 0) )
        {
          HalpInterruptLastProblem = 35;
          *((_DWORD *)v4 + 73) = 35;
          *((_DWORD *)v4 + 74) = v7;
          v4[38] = (ULONG_PTR)"minkernel\\hals\\lib\\interrupts\\common\\intsup.c";
          *((_DWORD *)v4 + 78) = 3011;
        }
        else
        {
          *((_DWORD *)v4 + 56) &= ~1u;
        }
      }
    }
    KeStallExecutionProcessor(0x64u);
  }
  HalPerformEndOfInterruptAtController[0]();
  v8 = HalpInterruptController;
  v9 = *(__int64(__fastcall **)(_QWORD))(HalpInterruptController + 168);
  if( v9 )
  {
    v10 = v9(*(_QWORD *)(HalpInterruptController + 16));
    if( v10 < 0 )
    {
      *(_DWORD *)(v8 + 296) = v10;
      HalpInterruptLastProblem = 34;
      *(_DWORD *)(v8 + 292) = 34;
      *(_QWORD *)(v8 + 304) = "minkernel\\hals\\lib\\interrupts\\common\\intsup.c";
      *(_DWORD *)(v8 + 312) = 3060;
    }
  }
  HalpPowerWriteResetCommand(v2, (INT64 *)((unsigned __int64)HalpInterruptProcessorsStarted & -(__int64)(v2 != 0)));
  JUMPOUT(0x1404B9C51i64);
}

Referenced by:

HalpInterruptRebootService