HalpMcExportAllData
CHAR *__stdcall HalpMcExportAllData(UINT64 *a1, INT64 a2, POOL_TYPE a3){
unsigned int v3;
VOID **PoolWithTag;
CHAR *result;
unsigned int v9;
unsigned int v10;
v3 = 0;
v9 = 0;
PoolWithTag = 0i64;
if( *(&CmpDummyThreadEvent + 857) )
{
if( (unsigned int)(*(&CmpDummyThreadEvent + 857))(0i64, &v9, a2) == -1073741789 )
{
v9 = (v9 + 4095) & 0xFFFFF000;
PoolWithTag = ExAllocatePoolWithTag((unsigned int)a3, v9, 543973704i64);
if( PoolWithTag )
{
v10 = v9;
if( (int)(*(&CmpDummyThreadEvent + 857))(PoolWithTag, &v10, a2) < 0 )
{
ExFreePoolWithTag(PoolWithTag, 0x206C6148u);
PoolWithTag = 0i64;
}
if( PoolWithTag )
v3 = v9;
}
}
}
result = (CHAR *)PoolWithTag;
*(_DWORD *)a1 = v3;
return result;
}Referenced by:
HalpLoadMicrocode
HalpMcExportAndChargeNeededData