IopLiveDumpAllocateMappingResources

INT64 __fastcall IopLiveDumpAllocateMappingResources(INT64 a1){
  unsigned int v1; 
  VOID *PoolWithTag; 
  unsigned int v4; 
  INT64 v6; 
  int v7; 
  __int64 i; 
  __int64 v9; 
  void *v10; 
  PMDL Mdl; 
  v1 = KeNumberProcessors_0;
  PoolWithTag = ExAllocatePoolWithTag(NonPagedPoolNx, 16i64 * (unsigned int)KeNumberProcessors_0, 0x706D644Cui64);
  v4 = 0;
  *(_QWORD *)(a1 + 792) = PoolWithTag;
  if( PoolWithTag )
  {
    memset((INT64)PoolWithTag, 0i64);
    *(_DWORD *)(a1 + 784) = v1;
    v7 = 0;
    if( !v1 )
      return v4;
    for( i = 0i64; ; i += 16i64 )
    {
      v9 = *(_QWORD *)(a1 + 792);
      MmAllocateDumpHibernateResources(0x10000ui64, v6);
      *(_QWORD *)(i + v9) = v10;
      if( !v10 )
        break;
      Mdl = IoAllocateMdl(v10, 0x10000u, 0, 0, 0i64);
      *(_QWORD *)(i + v9 + 8) = Mdl;
      if( !Mdl )
        break;
      if( ++v7 >= v1 )
        return v4;
    }
  }
  else
  {
    *(_DWORD *)(a1 + 784) = 0;
  }
  IopLiveDumpFreeMappingResources();
  return(unsigned int)-1073741670;
}

Referenced by:

IopLiveDumpAllocAndInitResources