WbMakeUserExecutablePagesKernelWritable

INT64 __fastcall WbMakeUserExecutablePagesKernelWritable(VOID *a1, UINT64 a2, MDL **a3, UINT64 *a4){
  int v6; 
  unsigned int v7; 
  PMDL Mdl; 
  PMDL v9; 
  PVOID MappedSystemVa; 
  v6 = 0;
  v7 = 0;
  Mdl = IoAllocateMdl(a1, a2, 0, 0, 0i64);
  v9 = Mdl;
  if( Mdl )
  {
    MmProbeAndLockPagesPrivate((INT64)Mdl);
    v6 = 1;
    if( (v9->MdlFlags & 5) != 0 )
      MappedSystemVa = v9->MappedSystemVa;
    else
      MappedSystemVa = MmMapLockedPagesSpecifyCache(v9, 0, MmCached, 0i64, 0, 0x40000020u);
    if( MappedSystemVa )
    {
      if( a4 )
        *a4 = (UINT64)MappedSystemVa;
      if( a3 )
      {
        *a3 = v9;
        v9 = 0i64;
      }
    }
    else
    {
      v7 = -1073741801;
    }
  }
  else
  {
    v7 = -1073741801;
  }
  if( v9 )
  {
    if( v6 )
      MmUnlockPages(v9);
    IoFreeMdl(v9);
  }
  return v7;
}

Referenced by:

WbAllocateMemoryBlock
sub_1405D28BC