WheapWmiRegisterInfo

INT64 __stdcall WheapWmiRegisterInfo(UINT64 BufferSize, VOID *Buffer, UINT64 *Size){
  int *v3; 
  int v4; 
  int *v5; 
  __int64 v7; 
  int *v8; 
  _DWORD *v9; 
  int v10; 
  INT64 result; 
  v4 = 158;
  v5 = v3;
  if( (unsigned int)Buffer < 0x9E )
  {
    if( (unsigned int)Buffer >= 4 )
    {
      *(_DWORD *)Size = 158;
      v4 = 4;
    }
    result = 3221225507i64;
  }
  else
  {
    memset((INT64)Size, 0i64);
    v7 = 3i64;
    v8 = &dword_1400086AC;
    *((_DWORD *)Size + 4) = 3;
    v9 = (_DWORD *)Size + 11;
    do
    {
      *(_OWORD *)(v9 - 5) = *(_OWORD *)*(_QWORD *)(v8 - 3);
      v10 = *v8;
      v8 += 4;
      *(v9 - 1) = v10;
      *v9 = *(v8 - 5);
      v9[1] = 120;
      v9 += 8;
      --v7;
    }
    while( v7 );
    *((_WORD *)Size + 60) = 36;
    *(_OWORD *)((char *)Size + 122) = *(_OWORD *)L"WHEA_WMI_PROVIDER";
    *(_OWORD *)((char *)Size + 138) = *(_OWORD *)L"_PROVIDER";
    *(_DWORD *)((char *)Size + 154) = *(_DWORD *)L"R";
    result = 0i64;
    *(_DWORD *)Size = 158;
  }
  *v5 = v4;
  return result;
}

Referenced by:

WheaWmiDispatch