CmpVirtualPathPresent

UINT8 __stdcall CmpVirtualPathPresent(PUNICODE_STRING FullPath){
  _CMHIVE *v1; 
  __int64 v3; 
  char PathByName; 
  __int64 v5; 
  bool v6; 
  __int64 v8; 
  unsigned int v9; 
  int v10; 
  int v11; 
  PVOID v12; 

  v10 = -1;
  v1 = *(_CMHIVE **)&CmpMasterHive;
  v8 = 0i64;
  v9 = 0;
  v3 = 0i64;
  v12 = 0i64;
  v11 = 0;
  if( CmpGetCmHiveFromVirtualPath(FullPath, (_CMHIVE **)&v12) < 0 || CmpBlockTwoHiveWrites(v1, (_CMHIVE *)v12, 1u) < 0 )
    return 0;
  PathByName = CmpFindPathByName(0i64, (__m128i *)FullPath, 0i64, &v9, &v8);
  v5 = v8;
  v6 = PathByName;
  if( v8 )
    v3 = (*(__int64(__fastcall **)(__int64, _QWORD, int *))(v8 + 8))(v8, v9, &v10);
  if( v6 )
    v6 = v3 && CmpVEEnabled && (*(_WORD *)(v3 + 2) & 0x100) != 0;
  if( v3 )
    (*(void(__fastcall **)(__int64, int *))(v5 + 16))(v5, &v10);
  CmpUnblockTwoHiveWrites(v1, (_CMHIVE *)v12);
  return v6;
}

Referenced by:

CmpReparseToVirtualPath