MmRemoveImportOptimizationForDriverVerifier

NTSTATUS __stdcall MmRemoveImportOptimizationForDriverVerifier(INT64 a1){
  int v2; 
  int v3; 
  NTSTATUS v4; 
  _SECTION *v5; 
  _OWORD *v6; 
  _QWORD *DynamicRelocations; 
  __int64 v8; 
  unsigned int v9; 
  unsigned __int16 **v10; 
  __int64 v11; 
  _OWORD *Pool; 
  unsigned int v13; 
  __int64 v14; 
  unsigned __int16 *v15; 
  size_t v16; 
  VOID *v17; 
  unsigned __int8 CurrentIrql; 
  ULONG_PTR Context[2]; 
  __int64 v21; 
  INT64 v22; 
  INT64 v23[2]; 
  INT64 v24[8]; 

  memset(v24, 0i64, sizeof(v24));
  v2 = 0;
  *(_QWORD *)Context = 0i64;
  v21 = 0i64;
  *(_OWORD *)v23 = 0i64;
  MiInitializeDriverPatchState(a1, (INT64)v24);
  v22 = a1;
  LOBYTE(v3) = MmHasImageBeenImportOptimized();
  if( v3 )
  {
    if( (MiFlags & 0x10000) != 0 )
    {
      v4 = -1073740641;
    }
    else
    {
      if( KeIsNmiCallbackRegistered() )
        goto LABEL_6;
      v5 = *(_SECTION **)(a1 + 112);
      v6 = 0i64;
      if( v5 )
      {
        DynamicRelocations = MiSectionControlArea(v5)->u2.SeImageStub->DynamicRelocations;
        if( DynamicRelocations )
          v6 = (_OWORD *)DynamicRelocations[12];
      }
      else
      {
        v6 = *(_OWORD **)(a1 + 296);
      }
      v8 = *(_DWORD *)(a1 + 64) >> 12;
      if( !v6 )
      {
LABEL_6:
        v4 = -1073741637;
      }
      else
      {
        v4 = MiLockAndMapEntireDriver(a1, v24, (_MDL **)v23);
        if( v4 >= 0 )
        {
          v9 = 8 * v8 + 56;
          HIDWORD(v21) = v9;
          if( (_DWORD)v8 )
          {
            v10 = (unsigned __int16 **)v6 + 7;
            v11 = (unsigned int)v8;
            do
            {
              if( *v10 )
                v2 += ((*v10)[1] >> 1) + ((*v10)[2] >> 1) + (**v10 >> 2);
              ++v10;
              --v11;
            }
            while( v11 );
          }
          Pool = MiAllocatePool(64i64, v9 + 4 * ((_DWORD)v8 + v2 + 2 * (_DWORD)v8), 0x66766D4Dui64);
          v23[1] = (INT64)Pool;
          if( Pool )
          {
            v13 = 0;
            *Pool = *v6;
            Pool[1] = v6[1];
            Pool[2] = v6[2];
            *(_QWORD *)(v23[1] + 16) = 0i64;
            *(_QWORD *)(v23[1] + 24) = 0i64;
            *(_QWORD *)(v23[1] + 48) = v23[1] + v9;
            if( (_DWORD)v8 )
            {
              v14 = 56i64;
              do
              {
                v15 = *(unsigned __int16 **)((char *)v6 + v14);
                if( v15 )
                {
                  v16 = v15[1] + 12 + v15[2] + *v15;
                  v17 = (VOID *)(*(_QWORD *)(v23[1] + 48) + v13);
                  *(_QWORD *)(v14 + v23[1]) = v17;
                  memmove(v17, v15, v16);
                  v13 += v16;
                }
                v14 += 8i64;
                --v8;
              }
              while( v8 );
            }
            CurrentIrql = KeGetCurrentIrql();
            __writecr8(0xCui64);
            Context[1] = KeQueryActiveProcessorCountEx(0xFFFFu);
            Context[0] = Context[1];
            v4 = KeIpiGenericCall((PKIPI_BROADCAST_WORKER)MmRemoveImportOptimizationWorker, (ULONG_PTR)Context);
            __writecr8(CurrentIrql);
          }
          else
          {
            v4 = -1073741670;
          }
        }
      }
    }
  }
  else
  {
    v4 = 0;
  }
  MiUnlockEntireDriver((UINT64 *)v24, v23[0]);
  if( v23[1] )
    ExFreePoolWithTag((PVOID)v23[1], 0);
  return v4;
}

Referenced by:

VfDriverEnableVerifier