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