CmpRebuildKcbCacheFromNode
char __fastcall CmpRebuildKcbCacheFromNode(PVOID BugCheckParameter3, __int64 a2, __int64 a3, char a4){
int v8;
int v9;
int v10;
__int16 v11;
UINT64 v12;
*((_BYTE *)BugCheckParameter3 + 65) = *(_BYTE *)(a2 + 13) & 3;
CmpCleanUpSubKeyInfo((INT64)BugCheckParameter3, 1);
v8 = *((_DWORD *)BugCheckParameter3 + 46);
if( (v8 & 0x400000) == 0 )
{
if( a4 )
{
CmpCleanUpKcbCachedSymlink((INT64)BugCheckParameter3, a3);
v8 = *((_DWORD *)BugCheckParameter3 + 46);
}
v9 = *(_DWORD *)(a2 + 40);
*((_DWORD *)BugCheckParameter3 + 24) = *(_DWORD *)(a2 + 36);
*((_DWORD *)BugCheckParameter3 + 25) = v9;
}
*((_QWORD *)BugCheckParameter3 + 21) = *(_QWORD *)(a2 + 4);
*((_WORD *)BugCheckParameter3 + 88) = *(_WORD *)(a2 + 52);
*((_WORD *)BugCheckParameter3 + 89) = *(_WORD *)(a2 + 60);
*((_DWORD *)BugCheckParameter3 + 45) = *(_DWORD *)(a2 + 64);
v10 = v8 ^ ((unsigned __int8)v8 ^ (unsigned __int8)*(_WORD *)(a2 + 54)) & 0xF;
*((_DWORD *)BugCheckParameter3 + 46) = v10;
*((_DWORD *)BugCheckParameter3 + 46) = v10 ^ ((unsigned __int8)v10 ^ (unsigned __int8)*(_WORD *)(a2 + 54)) & 0xF0;
*((_BYTE *)BugCheckParameter3 + 185) = *(_BYTE *)(a2 + 55);
v11 = *(_WORD *)(a2 + 2);
*((_WORD *)BugCheckParameter3 + 93) = v11;
v12 = *(unsigned int *)(a2 + 44);
if( (_DWORD)v12 == -1 )
*((_QWORD *)BugCheckParameter3 + 11) = 0i64;
else
LOBYTE(v11) = CmpAssignSecurityToKcb((UINT64)BugCheckParameter3, v12, 0i64, 0, 0);
return v11;
}Referenced by:
CmDeleteLayeredKey
CmRenameKey
CmpCreateChild
CmpCreateTombstone
CmpDoParseKey
CmpFullPromoteHiveRootFromKcbStack
CmpPromoteSingleKeyFromKcbStacks
CmpPromoteSingleKeyFromParentKcbAndChildKeyNode
CmpRebuildKcbCache