HalpPicDiscover
NTSTATUS __stdcall HalpPicDiscover(){
_LARGE_INTEGER *AcpiTable;
_UNICODE_STRING *v1;
VOID **v2;
NTSTATUS result;
_UNICODE_STRING *v4;
VOID **v5;
char Lines[44];
int v7;
_BYTE NewController[232];
int v9;
AcpiTable = HalSocGetAcpiTable(0x43495041ui64);
if( AcpiTable && (AcpiTable[5].anonymous_0.LowPart & 1) == 0 )
return 0;
memset(NewController, 0i64, sizeof(NewController));
*(_DWORD *)NewController = 1;
*(_QWORD *)&NewController[192] = &v9;
*(_DWORD *)&NewController[4] = 232;
*(_QWORD *)&NewController[72] = HalpPicWriteEndOfInterrupt;
*(_DWORD *)&NewController[200] = 4;
*(_QWORD *)&NewController[88] = HalpPicSetLineState;
*(_DWORD *)&NewController[204] = 1;
*(_QWORD *)&NewController[96] = xKdEnumerateDebuggingDevices;
*(_QWORD *)&NewController[208] = 45056i64;
*(_QWORD *)&NewController[220] = 0i64;
*(_QWORD *)&NewController[8] = 0i64;
*(_QWORD *)&NewController[16] = HalpPicInitializeIoUnit;
*(_QWORD *)&NewController[56] = 0i64;
memset(&NewController[24], 0, 24);
*(_QWORD *)&NewController[104] = 0i64;
*(_DWORD *)&NewController[216] = 0;
v9 = 45056;
result = HalpInterruptRegisterController((_INTERRUPT_INITIALIZATION_BLOCK *)NewController, v1, v2);
if( result >= 0 )
{
memset(NewController, 0i64, sizeof(NewController));
*(_DWORD *)NewController = 1;
*(_QWORD *)&NewController[192] = &v9;
*(_DWORD *)&NewController[4] = 232;
*(_QWORD *)&NewController[72] = HalpPicWriteEndOfInterrupt;
*(_QWORD *)&NewController[88] = HalpPicSetLineState;
*(_QWORD *)&NewController[96] = xKdEnumerateDebuggingDevices;
*(_DWORD *)&NewController[200] = 4;
*(_DWORD *)&NewController[204] = 1;
*(_QWORD *)&NewController[208] = 45057i64;
*(_QWORD *)&NewController[220] = 0i64;
*(_QWORD *)&NewController[8] = 0i64;
*(_QWORD *)&NewController[16] = HalpPicInitializeIoUnit;
*(_QWORD *)&NewController[56] = 0i64;
memset(&NewController[24], 0, 24);
*(_QWORD *)&NewController[104] = 0i64;
*(_DWORD *)&NewController[216] = 0;
v9 = 45057;
result = HalpInterruptRegisterController((_INTERRUPT_INITIALIZATION_BLOCK *)NewController, v4, v5);
if( result >= 0 )
{
*(_DWORD *)&Lines[4] = 1;
*(_QWORD *)&Lines[12] = 6i64;
v7 = 0;
*(_DWORD *)&Lines[20] = -1;
*(_DWORD *)&Lines[8] = 2;
*(_OWORD *)&Lines[28] = 0i64;
*(_DWORD *)&Lines[24] = -1;
*(_DWORD *)Lines = 45056;
result = HalpInterruptRegisterLine((_INTERRUPT_LINE_DESCRIPTION *)Lines);
if( result >= 0 )
{
*(_DWORD *)&Lines[12] = 2;
*(_DWORD *)&Lines[4] = 0;
*(_DWORD *)&Lines[8] = 8;
*(_DWORD *)&Lines[24] = -1;
*(_DWORD *)Lines = 45056;
result = HalpInterruptRegisterLine((_INTERRUPT_LINE_DESCRIPTION *)Lines);
if( result >= 0 )
{
*(_QWORD *)&Lines[12] = 6i64;
v7 = 0;
*(_OWORD *)&Lines[28] = 0i64;
*(_DWORD *)&Lines[20] = 45056;
*(_DWORD *)&Lines[4] = 2;
*(_DWORD *)&Lines[8] = 3;
*(_DWORD *)&Lines[24] = -1;
*(_DWORD *)Lines = 45057;
result = HalpInterruptRegisterLine((_INTERRUPT_LINE_DESCRIPTION *)Lines);
if( result >= 0 )
{
*(_DWORD *)&Lines[12] = 2;
*(_DWORD *)&Lines[4] = 0;
*(_DWORD *)&Lines[8] = 8;
*(_DWORD *)&Lines[24] = -1;
*(_DWORD *)Lines = 45057;
return HalpInterruptRegisterLine((_INTERRUPT_LINE_DESCRIPTION *)Lines);
}
}
}
}
}
return result;
}Referenced by:
HalpInitializeInterrupts