HalpHvMapDeviceInterrupt

NTSTATUS __stdcall HalpHvMapDeviceInterrupt(CHAR a1, INT64 a2, INT64 a3, INT64 a4){
  int v5; 
  int v6; 
  int v7; 
  NTSTATUS result; 
  __int64 v9; 
  int v10; 
  unsigned __int64 v11; 
  __int128 v12; 
  __int128 v13; 
  __int128 v14; 

  v11 = 0x8000000000000000ui64;
  LOBYTE(v11) = a1;
  v5 = *(_DWORD *)(a3 + 20);
  v12 = 0i64;
  v13 = 0i64;
  v14 = 0i64;
  v6 = v5 - 1;
  if( v6 )
  {
    v7 = v6 - 1;
    if( v7 )
    {
      if( v7 == 1 )
        LODWORD(v13) = 2;
    }
    else
    {
      LODWORD(v13) = 4;
    }
  }
  else
  {
    LODWORD(v14) = *(_DWORD *)(a3 + 48);
  }
  DWORD2(v13) = 1;
  DWORD1(v13) = *(_DWORD *)(a3 + 8) == 0;
  result = ((__int64(__fastcall *)(unsigned __int64, __int128 *, INT64, __int128 *))qword_140C4A168)(
             v11,
             &v13,
             a4,
             &v12);
  if( result < 0 )
  {
    *(_DWORD *)(a3 + 12) &= ~0x10u;
  }
  else
  {
    v9 = *((_QWORD *)&v12 + 1);
    v10 = HIDWORD(v12);
    *(_DWORD *)(a3 + 32) = DWORD2(v12);
    *(_QWORD *)(a3 + 40) = v9;
    *(_DWORD *)(a3 + 24) = 8;
    *(_DWORD *)(a3 + 36) = v10;
  }
  return result;
}

Referenced by:

HalpInterruptEnableNmi
HalpInterruptRemap
HalpInterruptRemapFixedLines