WbAllocateMemoryBlock

NTSTATUS __stdcall WbAllocateMemoryBlock(_MDL *Mdl, VOID *BufferVa, VOID *Source, VOID *Original, UINT64 Length){
  int VirtualMemory; 

  VirtualMemory = WbAlloc(1088);
  if( VirtualMemory >= 0 )
  {
    MEMORY[0] = 0i64;
    MEMORY[8] = 0x10000i64;
    MEMORY[0x18] = 0i64;
    MEMORY[0x20] = 0i64;
    MEMORY[0x438] = 0i64;
    MEMORY[0x10] = KeGetCurrentThread()->ApcState.Process;
    MEMORY[0x430] = 0i64;
    memset((VOID *)0x2C, 0i64, 0x400u);
    VirtualMemory = MmAllocateVirtualMemory((PVOID *)0xFFFFFFFFFFFFFFFFi64, 0i64, (UINT64 *)8, 0x1000ui64);
    if( VirtualMemory >= 0 )
    {
      if( MEMORY[0x438] )
      {
        VirtualMemory = WbMakeUserExecutablePagesKernelWritable(MEMORY[0], MEMORY[8], (_MDL **)0x18, (UINT64 *)0x20);
        if( VirtualMemory >= 0 && BufferVa )
          *(_QWORD *)BufferVa = 0i64;
      }
      else
      {
        VirtualMemory = -1073741595;
      }
    }
  }
  WbFreeMemoryBlock(0i64);
  return VirtualMemory;
}

Referenced by:

WbAllocateUserMemory