HalpPicDiscover

INT64 __stdcall HalpPicDiscover(){
  LARGE_INTEGER *AcpiTable; 
  INT64 v1; 
  int v2; 
  __int64 v3; 
  __int64 v4; 
  _QWORD v5[3]; 
  int v6; 
  INT64 result; 
  __int64 v8; 
  INT64(__fastcall *v9)(INT64 *); 
  __int64 v10; 
  __int64 v11; 
  __int64 v12; 
  __int64 v13; 
  VOID(__stdcall *v14)(); 
  INT64(__fastcall *v15)(_DWORD *, INT64, INT64); 
  INT64(__stdcall *v16)(_EPROCESS *, PVOID, UINT64); 
  __int64 v17; 
  int *v18; 
  int v19; 
  int v20; 
  __int64 v21; 
  int v22; 
  __int64 v23; 
  int v24; 
  AcpiTable = HalSocGetAcpiTable(0x43495041ui64);
  if( AcpiTable && (AcpiTable[5].LowPart & 1) == 0 )
    return 0i64;
  memset((INT64)&result, 0i64);
  result = 0xE800000001i64;
  v18 = &v24;
  v14 = HalpPicWriteEndOfInterrupt;
  v19 = 4;
  v15 = HalpPicSetLineState;
  v20 = 1;
  v16 = xKdEnumerateDebuggingDevices;
  v21 = 45056i64;
  v23 = 0i64;
  v8 = 0i64;
  v9 = HalpPicInitializeIoUnit;
  v13 = 0i64;
  v10 = 0i64;
  v11 = 0i64;
  v12 = 0i64;
  v17 = 0i64;
  v22 = 0;
  v24 = 45056;
  v1 = HalpInterruptRegisterController((__int64)&result);
  if( (int)v1 >= 0 )
  {
    memset((INT64)&result, 0i64);
    result = 0xE800000001i64;
    v18 = &v24;
    v14 = HalpPicWriteEndOfInterrupt;
    v15 = HalpPicSetLineState;
    v16 = xKdEnumerateDebuggingDevices;
    v19 = 4;
    v20 = 1;
    v21 = 45057i64;
    v23 = 0i64;
    v8 = 0i64;
    v9 = HalpPicInitializeIoUnit;
    v13 = 0i64;
    v10 = 0i64;
    v11 = 0i64;
    v12 = 0i64;
    v17 = 0i64;
    v22 = 0;
    v24 = 45057;
    v1 = HalpInterruptRegisterController((__int64)&result);
    if( (int)v1 >= 0 )
    {
      v3 = 0x200000001i64;
      v4 = 6i64;
      v6 = 0;
      v5[0] = -1i64;
      *(_OWORD *)&v5[1] = 0i64;
      v2 = 45056;
      v1 = HalpInterruptRegisterLine((__int64)&v2);
      if( (int)v1 >= 0 )
      {
        LODWORD(v4) = 2;
        v3 = 0x800000000i64;
        HIDWORD(v5[0]) = -1;
        v2 = 45056;
        v1 = HalpInterruptRegisterLine((__int64)&v2);
        if( (int)v1 >= 0 )
        {
          v4 = 6i64;
          v6 = 0;
          *(_OWORD *)&v5[1] = 0i64;
          v5[0] = -4294922240i64;
          v3 = 0x300000002i64;
          v2 = 45057;
          v1 = HalpInterruptRegisterLine((__int64)&v2);
          if( (int)v1 >= 0 )
          {
            LODWORD(v4) = 2;
            v3 = 0x800000000i64;
            HIDWORD(v5[0]) = -1;
            v2 = 45057;
            return HalpInterruptRegisterLine((__int64)&v2);
          }
        }
      }
    }
  }
  return v1;
}

Referenced by:

HalpInitializeInterrupts