HalpIommuJoinDmaDomain

NTSTATUS __stdcall HalpIommuJoinDmaDomain(INT64 *a1, _LONGLONG a2){
  __int64 v2; 
  INT64 v4; 
  int v5; 
  NTSTATUS result; 
  _LARGE_INTEGER *v7; 
  int v8; 
  int v9; 
  INT64 v10; 
  __int64 v11; 
  _LARGE_INTEGER *v12; 

  v9 = 0;
  v2 = *(_QWORD *)&a2;
  v11 = 0i64;
  v12 = 0i64;
  if( byte_140C49B2C )
  {
    v4 = a1[3];
    v12 = 0i64;
    v9 = 0;
    v11 = 0i64;
    v10 = v4;
    LODWORD(v12) = *(_DWORD *)(*(_QWORD *)&a2 + 32i64);
    BYTE4(v12) = *(_BYTE *)(*(_QWORD *)&a2 + 40i64);
    v8 = 4;
    return((__int64(__fastcall *)(int *, _LARGE_INTEGER **))qword_140C4A2B8)(&v8, &v12);
  }
  else
  {
    result = HalpIommuGetHardwareDomain(a2, a1[1], 1, 1, &v12);
    if( result < 0 )
      return result;
    v7 = v12;
    v5 = HalpIommuAttachDeviceDomain(a1[1], *a1, (INT64)&v12[4]);
    if( v5 < 0 )
      HalpIommuDereferenceHardwareDomain(v2, (INT64 *)v7);
  }
  return v5;
}

Referenced by:

HalJoinDmaDomain
HalpIommuUnblockDevice
IommuDomainAttachDevice