VOID __stdcall __noreturn HalpShutdownReset(INT64 a1, INT64 a2, INT64 a3, INT64 a4, INT32 *a5){
unsigned int v5;
struct _KPRCB *CurrentPrcb;
v5 = 0;
CurrentPrcb = KeGetCurrentPrcb();
if( _InterlockedDecrement(a5) )
{
do
{
if( (++v5 & dword_140C4A13C) != 0 || !qword_140C4A140 )
_mm_pause();
else
qword_140C4A140(v5, a2, a3);
}
while( *a5 );
}
if( !CurrentPrcb->Number )
HalReturnToFirmware(HalRebootRoutine);
while( 1 )
_mm_pause();
}