MiDecommitPages

__int64 __fastcall MiDecommitPages(
        unsigned __int64 a1,
        unsigned __int64 a2,
        ULONG_PTR a3,
        __int64 a4,
        int a5,
        _QWORD *a6){
  _QWORD *v6; 
  unsigned int v8; 
  INT64 v10; 
  unsigned __int64 v11; 
  UINT64 v12; 
  __int64 v13; 
  INT64 v14; 
  UINT64 v15; 
  _MMPTE *PteBase; 
  int v17; 
  unsigned __int64 v18; 
  __int64 v19; 
  unsigned __int64 v20; 
  int v21; 
  unsigned __int64 v22; 
  int v23; 
  __int64 v24; 
  UINT64 v25; 
  int v26; 
  UINT64 v27; 
  unsigned __int64 v28; 
  int v29; 
  INT64 v30; 
  unsigned __int8 v31; 
  LONG *v32; 
  KIRQL v33; 
  int v34; 
  UINT64 v35; 
  _MMPTE *v36; 
  volatile INT64 *v37; 
  __int64 v38; 
  __int64 v39; 
  __int64 v40; 
  UINT64 LeafVa; 
  UINT64 v42; 
  CHAR *AnyMultiplexedVm; 
  int v44; 
  unsigned int v45; 
  _MMPTE *v46; 
  unsigned __int64 v47; 
  __int64 v48; 
  __int64 v49; 
  __int64 v50; 
  __int64 v51; 
  _MMPTE *v52; 
  __int64 v53; 
  unsigned __int64 v54; 
  _MMPFN *UsedPtesHandle; 
  UINT64 v56; 
  UINT64 v57; 
  __int64 v58; 
  int v59; 
  INT64 v60; 
  LONG *v61; 
  struct _KPRCB *CurrentPrcb; 
  int v63; 
  int v64; 
  int v65; 
  _MMPTE *v66; 
  int v67; 
  unsigned __int64 v68; 
  _QWORD *CloneAddress; 
  volatile INT64 *v70; 
  UINT64 v71; 
  bool v72; 
  UINT64 v73; 
  _MMPFN *v74; 
  UINT8 *v75; 
  _MMPFN *v76; 
  UINT64 v77; 
  unsigned int v78; 
  unsigned __int64 v79; 
  _MI_PARTITION *v80; 
  UINT64 v81; 
  INT64 v82; 
  __int16 v83; 
  int v84; 
  UINT64 v85; 
  _MI_PARTITION *v86; 
  int v87; 
  INT64 v88; 
  __int64 v89; 
  INT64 updated; 
  __int16 v91; 
  unsigned __int64 v92; 
  INT64 v93; 
  __int64 v94; 
  volatile INT64 *v95; 
  INT64 a5a; 
  INT64 v98; 
  INT64 a7; 
  __int64 a8; 
  volatile INT64 *a2a; 
  INT64 a10; 
  INT64 a11; 
  _QWORD *a12; 
  unsigned int v105; 
  UINT64 WsInfo; 
  unsigned __int64 WsInfoa; 
  UINT64 v108; 
  int v109; 
  UINT64 v110; 
  _MI_PARTITION *Partition; 
  __int64 CurrentIrql; 
  unsigned __int64 v113; 
  CHAR v114[4]; 
  _DWORD LogAccess[3]; 
  UINT64 v116; 
  INT64 v117; 
  unsigned __int64 v118; 
  UINT64 INCR; 
  INT64 v120; 
  unsigned __int64 v121; 
  __int128 v122; 
  INT64 v123[2]; 
  INT64 v124[2]; 
  __int16 v125; 
  _BYTE v126[14]; 
  __int64 v127; 
  CHAR *v128; 
  __int64 v129; 
  __int64 v130; 
  INT64(__fastcall *v131)(INT64); 
  __int128 *v132; 
  int v133; 
  __int16 v134; 
  __int16 v135; 
  __int64 v136; 
  __int64 v137; 
  __int64 v138; 
  __int128 v139; 
  __int128 v140; 
  __int128 v141; 
  __int128 v142; 
  __int128 v143; 
  __int128 v144; 
  __int128 v145; 
  __int128 v146; 
  __int128 v147; 
  __int64 v148; 
  int a1a; 
  __int16 a1_4; 
  int v151; 
  __int64 v152; 
  __int64 v153; 
  INT64 v154; 
  __int64 v155; 
  __int64 v156; 
  __int64 v157; 
  INT64 result[256]; 
  v6 = a6;
  a2a = (volatile INT64 *)a3;
  v113 = a2;
  v8 = 0;
  a12 = a6;
  v116 = 0i64;
  *(_QWORD *)&LogAccess[1] = a4;
  memset((INT64)result, 0i64);
  v155 = 256i64;
  v154 = 1i64;
  *(_OWORD *)v124 = 0i64;
  LODWORD(v124[1]) = 2;
  *(_OWORD *)v123 = 0i64;
  v156 = 0i64;
  v157 = 0i64;
  a8 = 1i64;
  v109 = 0;
  v10 = MiSwizzleInvalidPte(512i64);
  v13 = *(unsigned __int8 *)(a4 + 33);
  v14 = v10;
  v120 = v10;
  v15 = v10;
  PteBase = MmGetPteBase();
  v17 = *(_DWORD *)(a4 + 52);
  v18 = (unsigned __int64)PteBase + 8 * ((*(unsigned int *)(a4 + 28) | (unsigned __int64)(v13 << 32)) & 0xFFFFFFFFFi64);
  v19 = (unsigned int)v17;
  LODWORD(v19) = v17 & 0x7FFFFFFF;
  v20 = v19 | ((unsigned __int64)*(unsigned __int8 *)(a4 + 34) << 31);
  v118 = v18;
  if( v20 == 0x7FFFFFFFEi64 )
  {
    v14 = MiSwizzleInvalidPte(32i64 * ((*(_DWORD *)(a4 + 48) >> 7) & 0x1F));
    v120 = v14;
    v15 = v14;
  }
  else if( v17 >= 0 )
  {
    v21 = *(_DWORD *)(a4 + 48);
    if( (v21 & 0x100000) == 0 || (v21 & 0x1000000) != 0 || (v21 & 0x2000000) == 0 )
      v15 = 0i64;
    v118 = 0i64;
    v109 = MiVadPureReserve(a4);
  }
  v22 = *(unsigned int *)(a4 + 48);
  v23 = *(_DWORD *)(a4 + 48) & 0x500000;
  INCR = v12;
  v105 = 3;
  if( v23 == 5242880 )
  {
    v24 = (v22 >> 18) & 3;
    v25 = 16i64;
    a8 = MiVadPageSizes[v24];
    if( a8 != 16 )
      v25 = v12;
    v105 = MiVadPageIndices[v24];
    INCR = v25;
    v11 = 2i64;
  }
  v26 = v11;
  v108 = 0i64;
  if( a5 )
    v26 = 0;
  v27 = 0i64;
  *(_DWORD *)v114 = v26;
  v28 = (unsigned __int64)PteBase + ((a1 >> 9) & 0x7FFFFFFFF8i64);
  LODWORD(a11) = v12;
  WsInfo = a1 & 0xFFFFFFFFFFFFF000ui64;
  v29 = v12;
  v30 = (INT64)(a2a + 208);
  LODWORD(a7) = 0;
  a10 = (INT64)(a2a + 208);
  Partition = *(_MI_PARTITION **)(qword_140C4E388 + 8i64 * *((unsigned __int16 *)a2a + 919));
  v31 = a2a[231] & 7;
  if( v31 < 6u )
  {
    if( v31 == 2 )
      v32 = &dword_140C4F4C0;
    else
      v32 = (LONG *)(a2a + 232);
    v33 = ExAcquireSpinLockShared(v32);
    if( v32[1] )
      _InterlockedExchange(v32 + 1, 0);
    v29 = a11;
    LODWORD(v12) = 1;
    v30 = (INT64)(a2a + 208);
    LOBYTE(CurrentIrql) = v33;
  }
  else
  {
    CurrentIrql = KeGetCurrentIrql();
    __writecr8(v11);
  }
  if( v28 > v113 )
    goto LABEL_192;
  while( 1 )
  {
    v34 = 0;
    v35 = v28;
    if( v29 == 1 )
    {
      v34 = v12;
LABEL_26:
      v36 = MmGetPteBase();
      goto LABEL_27;
    }
    if( v105 > 1 )
      goto LABEL_26;
    v36 = MmGetPteBase();
    v38 = 2 - v105;
    do
    {
      v35 = (UINT64)v36 + ((v35 >> 9) & 0x7FFFFFFFF8i64);
      --v38;
    }
    while( v38 );
LABEL_27:
    if( (v35 & 0xFFF) == 0 || v34 )
      break;
LABEL_65:
    v54 = *(_QWORD *)v35;
    v121 = v54;
    if( !v54 )
    {
      if( v28 > v118 )
        v6[3] += a8;
      if( v15 )
      {
        UsedPtesHandle = MiGetUsedPtesHandle((__int64)((v35 << 25) - ((_QWORD)v36 << 25)) >> 16);
        v56 = INCR;
        MiIncreaseUsedPtesCount(UsedPtesHandle, (unsigned int)INCR);
        v57 = v56;
        do
        {
          *(_QWORD *)v35 = v15;
          v35 += 8i64;
          --v57;
        }
        while( v57 );
        v14 = v120;
      }
LABEL_72:
      v58 = a8;
LABEL_73:
      v59 = 1;
      goto LABEL_74;
    }
    if( (v54 & 1) != 0 )
    {
      if( a8 != 1 )
        goto LABEL_84;
      LogAccess[0] = 0;
      if( (HIBYTE(*(_QWORD *)((char *)v36 + ((WsInfo >> 9) & 0x7FFFFFFFF8i64))) & 0xF) == 8
        || !(unsigned int)MiAppendWsleCluster((INT64)v123, a10, (UINT64 *)v28) )
      {
        MiTerminateWsle((PVOID)a10, (_MMSUPPORT_INSTANCE *)WsInfo, 0i64, (UINT64)LogAccess);
        MiInsertTbFlushEntry((INT64)&v154, WsInfo, 1i64, 0i64);
        v121 = v54 & 0xFFFFFFFFFFFFFBFEui64 | 0x400;
        *(_QWORD *)v28 = v121;
      }
      if( HIDWORD(v155) != (_DWORD)v155 - 1 )
        goto LABEL_72;
      if( (unsigned int)MiDeletePteWsleCluster((INT64)v123, a2a, v15, v6) )
        v8 = 1;
      LODWORD(a5a) = 1;
      LODWORD(a7) = v8;
      v65 = MiDeletePteList((INT64)&v154, a2a, v15, v6, a5a);
      v59 = 1;
LABEL_122:
      v72 = v65 == 0;
      v58 = a8;
      if( !v72 )
      {
        v8 = 1;
        LODWORD(a7) = 1;
      }
      goto LABEL_74;
    }
    if( (v54 & 0x400) != 0 )
    {
      if( MI_PROTO_FORMAT_COMBINED(v54) )
      {
        v67 = MiDecrementCombinedPte(a10, v66);
LABEL_98:
        if( v67 == 3 )
        {
          ++v6[1];
        }
        else if( v67 == 5 )
        {
          ++v6[2];
        }
      }
      else if( !MiIsPrototypePteVadLookup(v54) )
      {
        CloneAddress = MiLocateCloneAddress((__int64)a2a, v68);
        if( CloneAddress )
        {
          v67 = MiDecrementCloneBlockReference((UINT64)CloneAddress, v70, v71);
          goto LABEL_98;
        }
      }
      *(_QWORD *)v28 = v15;
      v72 = v15 == 0;
LABEL_120:
      v59 = 1;
      if( !v72 )
        goto LABEL_161;
      v65 = MiReducePteUseCount(v28, 1u);
      goto LABEL_122;
    }
    if( (v54 & 0x800) != 0 )
    {
      if( a8 != 1 )
      {
LABEL_84:
        v65 = MiDecommitLargePte(*(INT64 *)&LogAccess[1], v35, v15, (INT64)v6, (INT64)&v154);
        v59 = 1;
        goto LABEL_122;
      }
      v116 = 0i64;
      v73 = 0i64;
      v74 = MiLockTransitionLeafPage((_MMPTE *)v28, 0i64);
      v76 = v74;
      if( !v74 )
        goto LABEL_188;
      v77 = 0i64;
      v78 = 1;
      if( !*((_WORD *)v74 + 16) )
      {
        v73 = *((_QWORD *)v74 + 2);
        v79 = *((_QWORD *)v74 + 5);
        v77 = v73;
        v116 = v73;
        v80 = *(_MI_PARTITION **)(qword_140C4E388 + 8 * ((v79 >> 39) & 0x3FF));
        Partition = v80;
        if( (v73 & 2) != 0 && !(unsigned int)MI_IS_PTE_IN_WS_SWAP_SET((MMPTE *)v80) )
          v78 = 0;
      }
      LOBYTE(v75) = 17;
      if( (unsigned int)MiDeleteTransitionPte((_MMPTE *)v28, v76, v75, 0i64) == 3 )
        ++a12[1];
      if( v77 )
        MiReleasePageFileSpace(Partition, v73, v78);
      _InterlockedExchangeAdd64(a2a + 159, 0xFFFFFFFFFFFFFFFFui64);
      v81 = v15;
      if( !v78 )
      {
        v82 = *((_QWORD *)Partition + ((unsigned __int16)v77 >> 12) + 868);
        if( qword_140C4DC80 && (v77 & 0x10) == 0 )
          v77 &= ~qword_140C4DC80;
        v81 = MiTransferSoftwarePte(v14, v82, HIDWORD(v77));
      }
      *(_QWORD *)v28 = v81;
      v72 = v81 == 0;
      goto LABEL_120;
    }
    if( ((v54 >> 5) & 0x1F) == 16 )
    {
      v58 = a8;
      v6[3] += a8;
      goto LABEL_73;
    }
    v83 = v54;
    if( qword_140C4DC80 && (v54 & 0x10) == 0 )
      v83 = v54 & ~(_WORD)qword_140C4DC80;
    if( (v83 & 0x400) != 0 || (v83 & 0x800) != 0 || (v83 & 4) != 0 )
      _InterlockedExchangeAdd64(a2a + 159, 0xFFFFFFFFFFFFFFFFui64);
    v84 = 1;
    v85 = v15;
    v86 = *(_MI_PARTITION **)(qword_140C4E388 + 8i64 * *(unsigned __int16 *)(a10 + 174));
    Partition = v86;
    if( ((v54 >> 1) & 1) != 0 && !(unsigned int)MI_IS_PTE_IN_WS_SWAP_SET((MMPTE *)v86) )
    {
      v84 = v87;
      v110 = v14;
      MiSetNonResidentPteHeat(&v110, 0i64);
      v85 = v110;
      if( (v14 & 0x400) == 0 )
      {
        v85 = v110 & 0xFFFFFFFFFFFFFFF9ui64;
        v110 &= 0xFFFFFFFFFFFFFFF9ui64;
      }
      if( v89 )
      {
        if( v85 )
          updated = MiUpdatePageFileHighInPte(v85, v88);
        else
          updated = MiSwizzleInvalidPte(v88 << 32);
        v85 = updated ^ (unsigned __int16)(updated ^ (v91 << 12)) & 0xF000 | 2;
        v110 = v85;
      }
    }
    v92 = v85;
    if( v28 >= (unsigned __int64)MmGetPml4eBase()
      && v28 <= (unsigned __int64)MmGetPxeUserLimit()
      && (*(_DWORD *)(*((_QWORD *)KeGetCurrentThread() + 23) + 2172i64) & 0x1000) != 0
      && (v85 & 1) != 0 )
    {
      v92 = v85 | 0x8000000000000000ui64;
    }
    *(_QWORD *)v28 = v92;
    v117 = v54;
    if( (v54 & 4) != 0 )
    {
      v93 = MI_READ_PTE_LOCK_FREE((INT64)&v117);
      if( !v84 )
        v93 &= ~2ui64;
    }
    else if( v84 && ((v54 >> 1) & 1) != 0 )
    {
      v93 = MI_READ_PTE_LOCK_FREE((INT64)&v117);
    }
    else
    {
      v93 = 0i64;
    }
    v117 = v93;
    if( v93 )
      MiReleasePageFileInfo((INT64)Partition, v93, 0, (INT64)v86, a5a, v98, a7, a8, (INT64)a2a, a10, a11, (INT64)a12);
    v59 = 1;
    if( v85 )
    {
      v8 = a7;
LABEL_161:
      v58 = a8;
      goto LABEL_74;
    }
    v8 = a7;
    v72 = !MiReducePteUseCount(v28, 1u);
    v58 = a8;
    if( !v72 )
      v8 = 1;
    LODWORD(a7) = v8;
LABEL_74:
    v28 += 8 * v58;
    if( (v28 & 0x78) == 0 )
    {
      v60 = a10;
      v61 = &dword_140C4F4C0;
      if( (*(_BYTE *)(a10 + 184) & 7) != 2 )
        v61 = (LONG *)(a10 + 192);
      if( (*v61 & 0x40000000) != 0 )
        goto LABEL_178;
    }
    CurrentPrcb = KeGetCurrentPrcb();
    v63 = *((_DWORD *)CurrentPrcb + 3147);
    if( (v63 & 1) == 0 )
    {
      v64 = 0;
      if( (v63 & 0x1E) != 0 )
      {
        v59 = 2;
        goto LABEL_176;
      }
      if( *((_BYTE *)CurrentPrcb + 12585) )
      {
        v59 = 3;
        goto LABEL_176;
      }
      v94 = *((_QWORD *)CurrentPrcb + 2);
      if( v94 && v94 != *((_QWORD *)CurrentPrcb + 1) )
      {
        v59 = 4;
        goto LABEL_176;
      }
LABEL_169:
      if( *((_DWORD *)CurrentPrcb + 7931) <= 7u )
        goto LABEL_187;
      if( v64 )
      {
LABEL_171:
        if( (v63 & 0x1E) != 0 )
        {
          v59 = 5;
          goto LABEL_176;
        }
        if( *((_QWORD *)CurrentPrcb + 1) != *((_QWORD *)CurrentPrcb + 3) )
        {
          v59 = 6;
          goto LABEL_176;
        }
      }
      _disable();
      v59 = 0;
      *((_DWORD *)CurrentPrcb + 7931) = 0;
      *((_DWORD *)CurrentPrcb + 8103) = 0;
      KiResetGlobalDpcWatchdogProfiler((INT64)CurrentPrcb);
      _enable();
      goto LABEL_176;
    }
    v64 = 1;
    if( *((_DWORD *)CurrentPrcb + 8103) <= 7u )
      goto LABEL_169;
    if( !*((_BYTE *)CurrentPrcb + 12585) )
      goto LABEL_171;
LABEL_176:
    if( v59 )
    {
      v60 = a10;
LABEL_178:
      if( (unsigned int)MiDeletePteWsleCluster((INT64)v123, a2a, v15, a12) )
        v8 = 1;
      LODWORD(a7) = v8;
      if( HIDWORD(v155) )
      {
        LODWORD(a5a) = 1;
        if( (unsigned int)MiDeletePteList((INT64)&v154, a2a, v15, a12, a5a) )
          v8 = 1;
        LODWORD(a7) = v8;
      }
      if( v108 )
      {
        MiUnlockPageTableInternal(v60, v108);
        v108 = 0i64;
      }
      MiUnlockWorkingSetShared(v60, CurrentIrql);
      LODWORD(a11) = 1;
      MiLockWorkingSetShared(v60);
    }
LABEL_187:
    WsInfo += a8 << 12;
LABEL_188:
    v6 = a12;
    if( v28 > v113 )
      goto LABEL_191;
    v29 = a11;
    LODWORD(v12) = 1;
    v30 = a10;
  }
  memset((INT64)&a1a, 0i64);
  if( v123[1] )
  {
    a1a = 1;
    v152 = 0i64;
    v153 = 0i64;
    a1_4 = 0;
    v151 = 20;
    MiInsertTbFlushEntry((INT64)&a1a, ((v123[1] << 25) - ((_QWORD)MmGetPteBase() << 25)) >> 16, v124[0], 0i64);
    MiTerminateWsleCluster((INT64)v123);
    LODWORD(a5a) = 0;
    v37 = a2a;
    if( (unsigned int)MiDeletePteList((INT64)&a1a, a2a, v15, v6, a5a) )
      v8 = 1;
    LODWORD(a7) = v8;
  }
  else
  {
    v37 = a2a;
  }
  if( HIDWORD(v155) )
  {
    LODWORD(a5a) = 1;
    if( (unsigned int)MiDeletePteList((INT64)&v154, v37, v15, v6, a5a) )
      v8 = 1;
    LODWORD(a7) = v8;
  }
  if( v108 )
  {
    MiUnlockPageTableInternal(v30, v108);
    v108 = 0i64;
  }
  if( !v109 )
  {
    v35 = v28;
    if( v105 <= 1 )
    {
      v52 = MmGetPteBase();
      v53 = 2 - v105;
      do
      {
        v35 = (UINT64)v52 + ((v35 >> 9) & 0x7FFFFFFFF8i64);
        --v53;
      }
      while( v53 );
      v6 = a12;
    }
    MiMakeSystemAddressValid(
      v35,
      0i64,
      (*(_DWORD *)(*(_QWORD *)&LogAccess[1] + 48i64) >> 12) & 0x3F,
      CurrentIrql,
      v114[0]);
    goto LABEL_64;
  }
  v122 = 0i64;
  memset((INT64)v126, 0i64);
  v39 = (_QWORD)MmGetPteBase() << 25;
  WsInfoa = (__int64)((v28 << 25) - v39) >> 16;
  v40 = (__int64)((v113 << 25) - v39) >> 16;
  v125 = 2145;
  LeafVa = MiGetLeafVa(WsInfoa);
  if( LeafVa < 0xFFFF800000000000ui64 || LeafVa >= qword_140C4F878 && LeafVa <= qword_140C4E0A8 )
    AnyMultiplexedVm = (CHAR *)(*((_QWORD *)KeGetCurrentThread() + 23) + 1664i64);
  else
    AnyMultiplexedVm = MiGetAnyMultiplexedVm(1i64);
  v44 = MiFastLockLeafPageTable((INT64)AnyMultiplexedVm, v42);
  if( v44 )
  {
    v45 = v44 - 1;
    LODWORD(v122) = v44 - 1;
    v46 = MmGetPteBase();
    v47 = (unsigned __int64)v46 + ((WsInfoa >> 9) & 0x7FFFFFFFF8i64);
    *((_QWORD *)&v122 + 1) = v47;
  }
  else
  {
    v125 |= 4u;
    v132 = &v122;
    v127 = 0i64;
    v128 = AnyMultiplexedVm;
    v126[0] = v126[0] & 0xE3 | 4;
    v131 = MiGetNextPageTableTail;
    v126[4] = CurrentIrql;
    v129 = (__int64)((v28 << 25) - v39) >> 16;
    v130 = v40;
    MiWalkPageTables((INT64)&v125);
    v45 = v122;
    v47 = *((_QWORD *)&v122 + 1);
    v46 = MmGetPteBase();
  }
  v48 = a12[3];
  if( v47 )
  {
    v49 = v47 - v28;
    v28 = v47;
    a12[3] = v48 + (v49 >> 3);
    v35 = v47;
    if( v45 )
    {
      v35 = (UINT64)v46 + ((v47 >> 9) & 0x7FFFFFFFF8i64);
      if( v45 > 1 )
      {
        v50 = v45 - 1;
        do
        {
          v35 = (UINT64)v46 + ((v35 >> 9) & 0x7FFFFFFFF8i64);
          --v50;
        }
        while( v50 );
      }
    }
    v51 = (v47 << 25) - v39;
    v6 = a12;
    WsInfo = v51 >> 16;
LABEL_64:
    v36 = MmGetPteBase();
    v108 = (UINT64)v36 + ((v35 >> 9) & 0x7FFFFFFFF8i64);
    LODWORD(a11) = 0;
    goto LABEL_65;
  }
  v6 = a12;
  a12[3] = v48 + ((__int64)(v113 - v28) >> 3) + 1;
LABEL_191:
  v27 = v108;
LABEL_192:
  v135 = 0;
  v148 = 0i64;
  v139 = 0i64;
  v140 = 0i64;
  v141 = 0i64;
  v142 = 0i64;
  v143 = 0i64;
  v144 = 0i64;
  v145 = 0i64;
  v146 = 0i64;
  v147 = 0i64;
  if( v123[1] )
  {
    v134 = 0;
    v137 = 0i64;
    v138 = 0i64;
    v136 = 20i64;
    v133 = 1;
    MiInsertTbFlushEntry((INT64)&v133, ((v123[1] << 25) - ((_QWORD)MmGetPteBase() << 25)) >> 16, v124[0], 0i64);
    MiTerminateWsleCluster((INT64)v123);
    LODWORD(a5a) = 0;
    v95 = a2a;
    if( (unsigned int)MiDeletePteList((INT64)&v133, a2a, v15, v6, a5a) )
      v8 = 1;
  }
  else
  {
    v95 = a2a;
  }
  if( HIDWORD(v155) )
  {
    LODWORD(a5a) = 1;
    if( (unsigned int)MiDeletePteList((INT64)&v154, v95, v15, v6, a5a) )
      v8 = 1;
  }
  if( v27 )
    MiUnlockPageTableInternal(a10, v27);
  MiUnlockWorkingSetShared(a10, CurrentIrql);
  return v8;
}

Referenced by:

MiDecommitRegion
MmStoreAllocateVirtualMemory
MmStoreDecommitVirtualMemory