CmpCheckCreateAccessOnKcbStack
char __fastcall CmpCheckCreateAccessOnKcbStack(
__int64 a1,
__int64 a2,
__int64 a3,
__int64 a4,
KPROCESSOR_MODE a5,
int a6,
char a7,
__int64 a8,
int *a9){
LIST_ENTRY *SecurityCacheEntryForKcbStack;
LIST_ENTRY *v12;
char v13;
_UNICODE_STRING *v14;
UINT64 AdditionalAccess;
SecurityCacheEntryForKcbStack = CmpGetSecurityCacheEntryForKcbStack(a2, a8, a3);
v12 = SecurityCacheEntryForKcbStack;
v13 = 1;
if( a7 && (int)CmpSetAccessStateForBackupRestore((_DWORD *)a4, a5, &SecurityCacheEntryForKcbStack[2], 1) < 0
|| (v14 = (_UNICODE_STRING *)(a6 | *(_DWORD *)(a4 + 24) | 4u),
((unsigned int)v14 & *(_DWORD *)(a3 + 96)) != (_DWORD)v14) )
{
v13 = 0;
*a9 = -1073741790;
}
else if( !a7 || *(_DWORD *)(a4 + 16) )
{
LODWORD(AdditionalAccess) = a6;
return CmpCheckCreateAccess(v14, &v12[2], (_ACCESS_STATE *)a4, a5, AdditionalAccess, (INT64 *)a9);
}
else
{
*a9 = 0;
}
return v13;
}Referenced by:
CmpDoParseKey