MiCloneImageVad

INT64 __fastcall MiCloneImageVad(INT64 a1, INT64 a2, INT64 a3){
  int v3; 
  __int64 v5; 
  int v6; 
  unsigned int SessionId; 
  INT64 result; 
  v3 = *(_DWORD *)(a3 + 48);
  v5 = **(_QWORD **)(a3 + 72);
  if( (v3 & 0x100000) == 0 && (v3 & 0x70) == 32 && (v3 & 0x200000) != 0 )
  {
    v6 = 1;
    MiCopyForkedFixupVad(a2, a3);
    ++*(_QWORD *)(*(_QWORD *)(a1 + 1680) + 384i64);
  }
  else
  {
    v6 = 0;
  }
  if( (*(_DWORD *)(v5 + 56) & 0x4000000) == 0 )
    return 0i64;
  SessionId = MmGetSessionIdEx(a1);
  LODWORD(result) = MiCreatePerSessionProtos((_CONTROL_AREA *)v5, SessionId);
  if( (int)result >= 0 )
    return 0i64;
  if( v6 == 1 )
    --*(_QWORD *)(*(_QWORD *)(a1 + 1680) + 384i64);
  return result;
}

Referenced by:

MiAllocateChildVads