HalpMcUpdateInitialize
__int64 __fastcall HalpMcUpdateInitialize(__int64 a1, INT64 a2){
INT64 v2;
int v4;
INT64 v5;
bool v6;
__int64 v8[5];
__int128 v9;
__int128 v10;
__int128 v11;
__int64 v12;
v12 = 0i64;
v2 = a2;
v8[0] = (__int64)HalMcUpdateReadPCIConfig;
v8[1] = (__int64)MmLockPagableDataSection;
v8[2] = (__int64)MmLockPagableDataSection;
v8[3] = (__int64)MmLockPagableSectionByHandle;
v8[4] = (__int64)MmUnlockPagableImageSection;
v4 = 0;
v9 = 0i64;
v10 = 0i64;
v11 = 0i64;
if( !a1 || (unsigned __int8)HalpIsPartitionCpuManager() )
{
if( !v2 )
{
LABEL_9:
*(&CmpDummyThreadEvent + 858) = 0i64;
*(&CmpDummyThreadEvent + 859) = 0i64;
*(&CmpDummyThreadEvent + 854) = 0i64;
*(&CmpDummyThreadEvent + 857) = 0i64;
*(&CmpDummyThreadEvent + 855) = 0i64;
*(&CmpDummyThreadEvent + 862) = 0i64;
return(unsigned int)v4;
}
}
else
{
LODWORD(v5) = HalpMcUpdateFindDataTableEntry((INT64 *)(a1 + 16));
v2 = v5;
v6 = (*(_DWORD *)(*(_QWORD *)(a1 + 240) + 132i64) & 0x40000000) != 0;
*(&CmpDummyThreadEvent + 6768) = (*(_DWORD *)(*(_QWORD *)(a1 + 240) + 132i64) & 0x8000000) != 0;
*(&CmpDummyThreadEvent + 6769) = v6;
}
if( !v2 )
goto LABEL_9;
v4 = (*(__int64(__fastcall **)(__int128 *, __int64 *))(v2 + 56))(&v9, v8);
if( v4 < 0 )
goto LABEL_9;
*(&CmpDummyThreadEvent + 855) = *((_QWORD *)&v9 + 1);
*(&CmpDummyThreadEvent + 862) = v9;
*(&CmpDummyThreadEvent + 857) = *((_QWORD *)&v11 + 1);
*(&CmpDummyThreadEvent + 859) = *((_QWORD *)&v10 + 1);
*(&CmpDummyThreadEvent + 854) = v10;
*(&CmpDummyThreadEvent + 858) = v11;
return(unsigned int)v4;
}Referenced by:
HalpLoadMicrocode
HalpProcInitDiscard
HalpProcInitSystem