HalpClaimDebugResource

INT64 __fastcall HalpClaimDebugResource(UINT64 a1, INT64 a2){
  INT64 result; 
  __int64 v4; 
  __int64 v5; 
  int v6; 
  __int64 v7; 
  *(_QWORD *)a1 = HalpAddressUsageList;
  result = HalpDebugPortTable;
  *(_DWORD *)(a1 + 8) = 1;
  *(_BYTE *)(a1 + 12) = 33;
  *(_QWORD *)(a1 + 13) = a2;
  *(_QWORD *)(a1 + 21) = 8i64;
  *(_QWORD *)(a1 + 29) = 0i64;
  *(_QWORD *)(a1 + 37) = 0i64;
  HalpAddressUsageList = a1;
  if( result && *(_BYTE *)(result + 40) == 1 )
  {
    LODWORD(v4) = 0;
    v5 = 0i64;
    LOWORD(result) = 1016;
    while( (unsigned __int16)result != a2 )
    {
      v4 = (unsigned int)(v4 + 1);
      v5 = (unsigned int)v4;
      result = (unsigned __int16)HalpComPortIrqMapping[2 * v4];
      if( !(_WORD)result )
        return result;
    }
    v6 = (unsigned __int16)word_1400300A2[2 * v5];
    v7 = (unsigned int)(v6 + 48);
    HalpIDTUsageFlags[v7] = 35;
    result = 5 * v7;
    HalpIDTUsage[result] = 15;
    *(_DWORD *)&byte_140D57D61[result] = v6;
  }
  return result;
}

Referenced by:

HalpReportResourceUsage