WheapLogInitEvent
VOID __stdcall WheapLogInitEvent(){
VOID **PoolWithTag;
_OWORD *v1;
unsigned int i;
_OWORD *v3;
__int64 v4;
VOID **v5;
__int128 v6;
REGHANDLE v7;
size_t v8;
VOID **v9;
VOID **v10;
size_t v11;
size_t Size;
int v13;
_EVENT_DATA_DESCRIPTOR UserData;
int *v15;
int v16;
int v17;
size_t *p_Size;
int v19;
int v20;
VOID **v21;
size_t v22;
int v23;
Size = 1072 * *(&WheapErrorSourceTable + 1);
PoolWithTag = ExAllocatePoolWithTag(0x200ui64, (unsigned int)(1072 * *(&WheapErrorSourceTable + 1)), 1634035799i64);
if( PoolWithTag )
{
v1 = (_OWORD *)*(&WheapErrorSourceTable + 2);
for( i = 0; v1 != (_OWORD *)((char *)&WheapErrorSourceTable + 16); v1 = *(_OWORD **)v1 )
{
v3 = v1;
v4 = 8i64;
v5 = &PoolWithTag[134 * i];
do
{
*(_OWORD *)v5 = *v3;
*((_OWORD *)v5 + 1) = v3[1];
*((_OWORD *)v5 + 2) = v3[2];
*((_OWORD *)v5 + 3) = v3[3];
*((_OWORD *)v5 + 4) = v3[4];
*((_OWORD *)v5 + 5) = v3[5];
*((_OWORD *)v5 + 6) = v3[6];
v5 += 16;
v6 = v3[7];
v3 += 8;
*((_OWORD *)v5 - 1) = v6;
--v4;
}
while( v4 );
++i;
*(_OWORD *)v5 = *v3;
*((_OWORD *)v5 + 1) = v3[1];
*((_OWORD *)v5 + 2) = v3[2];
}
v7 = *(&SbiVmbusArrivalEvent + 383);
v8 = Size;
UserData.Reserved = 0;
v17 = 0;
v20 = 0;
v23 = 0;
UserData.Ptr = (unsigned __int64)&WheapErrorSourceTable + 4;
v15 = &v13;
p_Size = &Size;
UserData.Size = 4;
v13 = 10;
v16 = 4;
v19 = 4;
v21 = PoolWithTag;
v22 = Size;
if( EtwEventEnabled(*(&SbiVmbusArrivalEvent + 383), &EVENT_WHEA_INIT_OP) )
{
EtwWrite(v7, &EVENT_WHEA_INIT_OP, 0, 4u, &UserData);
v8 = Size;
}
v9 = ExAllocatePoolWithTag(0x200ui64, v8 + 32i64, 1634035799i64);
v10 = v9;
if( v9 )
{
v11 = Size;
*((_DWORD *)v9 + 3) = 0;
*(_DWORD *)v9 = 1733060695;
*((_DWORD *)v9 + 1) = 1;
*((_DWORD *)v9 + 5) = -2147483646;
*((_DWORD *)v9 + 2) = v11 + 32;
*((_DWORD *)v9 + 4) = 1280201291;
*((_DWORD *)v9 + 6) = 2;
*((_DWORD *)v9 + 7) = v11;
memmove(v9 + 4, PoolWithTag, Size);
WheaLogInternalEvent(v10);
ExFreePoolWithTag(v10, 0x61656857u);
}
ExFreePoolWithTag(PoolWithTag, 0x61656857u);
}
}Referenced by:
WheaInitialize