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