PiDqSerializationAlloc

VOID __stdcall PiDqSerializationAlloc(VOID *State, CHAR **Buffer, UINT64 *BufferSize){
  size_t v3; 
  size_t v5; 
  void *v8; 
  VOID **PoolWithTag; 

  v3 = *(_DWORD *)BufferSize;
  v5 = *((_DWORD *)State + 6);
  if( *(_DWORD *)BufferSize > v5 )
  {
    v8 = (void *)*((_QWORD *)State + 2);
    v5 = 0;
    if( v8 )
    {
      ExFreePoolWithTag(v8, 0x58706E50u);
      v3 = *(_DWORD *)BufferSize;
    }
    if( v3 < 0x1000 )
    {
      *(_DWORD *)BufferSize = 4096;
      v3 = 4096;
    }
    PoolWithTag = ExAllocatePoolWithTag(1ui64, v3, 1483763280i64);
    *((_QWORD *)State + 2) = PoolWithTag;
    if( PoolWithTag )
    {
      memset(PoolWithTag, 0i64, *(_DWORD *)BufferSize);
      v5 = *(_DWORD *)BufferSize;
    }
    *((_DWORD *)State + 6) = v5;
  }
  *(_DWORD *)BufferSize = v5;
  *Buffer = (CHAR *)*((_QWORD *)State + 2);
}

Referenced by:

No references.