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