PiDqSerializationAlloc

VOID __stdcall PiDqSerializationAlloc(PVOID State, PSTR *Buffer, UINT64 *a3){
  unsigned int v3; 
  unsigned int v5; 
  void *v8; 
  VOID *PoolWithTag; 
  v3 = *(_DWORD *)a3;
  v5 = *((_DWORD *)State + 6);
  if( *(_DWORD *)a3 > v5 )
  {
    v8 = (void *)*((_QWORD *)State + 2);
    v5 = 0;
    if( v8 )
    {
      ExFreePoolWithTag(v8, 0x58706E50u);
      v3 = *(_DWORD *)a3;
    }
    if( v3 < 0x1000 )
    {
      *(_DWORD *)a3 = 4096;
      v3 = 4096;
    }
    PoolWithTag = ExAllocatePoolWithTag(PagedPool, v3, 0x58706E50ui64);
    *((_QWORD *)State + 2) = PoolWithTag;
    if( PoolWithTag )
    {
      memset((INT64)PoolWithTag, 0i64);
      v5 = *(_DWORD *)a3;
    }
    *((_DWORD *)State + 6) = v5;
  }
  *(_DWORD *)a3 = v5;
  *Buffer = (PSTR)*((_QWORD *)State + 2);
}

Referenced by:

No references.