int __fastcall TraceHubInitialize(char a1)
{
int v2; // esi
int result; // eax
unsigned int v4; // [esp+Ch] [ebp-4h] BYREF
DebugPrint(64, (int)"TraceHubInitialize() - Start\n"); /*0xffd7fd84*/
sub_FFD8C909(&v4); /*0xffd7fd8c*/
*(_BYTE *)(v4 + 1488) = 0; /*0xffd7fd9b*/
v2 = sub_FFD8CBBA(0, 31, 7); /*0xffd7fdb0*/
if ( (unsigned __int16)sub_FFD8CCA5((unsigned __int16 *)v2) == 0xFFFF ) /*0xffd7fdc1*/
return DebugPrint(64, (int)"TraceHubInitialize() - End. TraceHub device is not present \n"); /*0xffd7fdc8*/
if ( (*(_DWORD *)(v2 + 4) & 2) != 0 ) /*0xffd7fdd2*/
{
DebugPrint(64, (int)"TraceHubInitialize() - End. Early init done already \n"); /*0xffd7fdda*/
DebugPrint(64, (int)"TraceHubInitialize() - FW_LBAR = 0x%08x\n", *(_DWORD *)(v2 + 112)); /*0xffd7fde9*/
DebugPrint(64, (int)"TraceHubInitialize() - MTB_LBAR = 0x%08x\n", *(_DWORD *)(v2 + 16)); /*0xffd7fdfb*/
DebugPrint(64, (int)"TraceHubInitialize() - SW_LBAR = 0x%08x\n", *(_DWORD *)(v2 + 24)); /*0xffd7fe0d*/
result = MEMORY[0xFE1000E0]; /*0xffd7fe1a*/
if ( (MEMORY[0xFE1000E0] & 0x1000000) != 0 ) /*0xffd7fe21*/
return DebugPrint(64, (int)"TraceHubInitialize() - Trace Hub enabled due to SCRPD0.24\n"); /*0xffd7fe2c*/
}
else
{
DebugPrint(64, (int)"TraceHubInitialize() - Setting MTB_BAR\n"); /*0xffd7fe37*/
*(_DWORD *)(v2 + 16) = -32505856; /*0xffd7fe3e*/
*(_DWORD *)(v2 + 20) = 0; /*0xffd7fe47*/
*(_BYTE *)(v2 + 4) |= 2u; /*0xffd7fe4f*/
if ( (MEMORY[0xFE1000E0] & 0x1000000) != 0 || a1 ) /*0xffd7fe62*/
{
MEMORY[0xFE1000CC] = 357000000; /*0xffd7fe91*/
*(_BYTE *)(v2 + 4) = 0; /*0xffd7fe9c*/
DebugPrint(64, (int)"TraceHubInitialize() - Setting SW_BAR\n"); /*0xffd7fe9f*/
*(_DWORD *)(v2 + 24) = -31457280; /*0xffd7fea9*/
*(_DWORD *)(v2 + 28) = 0; /*0xffd7feb1*/
DebugPrint(64, (int)"TraceHubInitialize() - Setting FW_BAR\n"); /*0xffd7feb8*/
SetTraceHubFwBar(); /*0xffd7febd*/
DebugPrint(64, (int)"TraceHubInitialize() - Enabling MSE and BME\n"); /*0xffd7fec8*/
*(_BYTE *)(v2 + 4) |= 6u; /*0xffd7fed8*/
DebugPrint(64, (int)"TraceHubInitialize () Assigned BARs:\n"); /*0xffd7fedb*/
DebugPrint(64, (int)"TraceHubInitialize () FW_LBAR = 0x%08x\n", *(_DWORD *)(v2 + 112)); /*0xffd7feea*/
DebugPrint(64, (int)"TraceHubInitialize () MTB_LBAR = 0x%08x\n", *(_DWORD *)(v2 + 16)); /*0xffd7fefc*/
DebugPrint(64, (int)"TraceHubInitialize () SW_LBAR = 0x%08x\n", *(_DWORD *)(v2 + 24)); /*0xffd7ff0e*/
return DebugPrint(64, (int)"TraceHubInitialize () - End\n"); /*0xffd7ff1c*/
}
else
{
*(_BYTE *)(v2 + 4) = 0; /*0xffd7fe6a*/
DebugPrint(64, (int)"TraceHubInitialize() - Clearing MTB_BAR\n"); /*0xffd7fe6d*/
*(_DWORD *)(v2 + 16) = 0; /*0xffd7fe78*/
return DebugPrint( /*0xffd7fe7f*/
64,
(int)"TraceHubInitialize() - End. STT disconnected and Trace Hub requested to be disable\n");
}
}
return result; /*0xffd7ff23*/
}