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