HalpUsbLegacyStopOhciInterrupt
VOID __fastcall HalpUsbLegacyStopOhciInterrupt(INT64 a1, UINT64 a2, UINT64 a3){
unsigned int v3;
unsigned int v4;
unsigned int v5;
_DWORD *v6;
_DWORD *v7;
_BYTE result[16];
int v9;
v3 = a2;
v4 = a3;
memset((INT64)result, 0i64);
((void(__fastcall *)(_QWORD, _QWORD, _BYTE *, _QWORD, int))qword_140C00630)(v3, v4, result, 0i64, 64);
if( (result[4] & 2) != 0 && (v9 & 0xFFFFFFF0) != 0 )
{
v5 = 0;
v6 = (_DWORD *)HalpMap((LARGE_INTEGER)(v9 & 0xFFFFFFF0), MmCached, 1u);
v7 = v6;
if( v6 )
{
if( (v6[1] & 0x100) != 0 )
{
if( v6[1] != 256 || v6[4] )
{
v6[5] = 64;
v6[4] = -1073741824;
v6[2] = 8;
do
{
KeStallExecutionProcessor(0x3E8u);
if( (v7[1] & 0x100) == 0 )
break;
++v5;
}
while( v5 < 0x1F4 );
}
else
{
v6[1] = 0;
}
}
v7[5] = 0x80000000;
HalpUnmapVirtualAddress(v7, 1i64, 0);
}
}
}Referenced by:
HalpStopLegacyUsbInterruptsInternal