SepIsImageInMinTcbList
VOID __stdcall SepIsImageInMinTcbList(VOID *Context){
unsigned int v1;
_UNICODE_STRING *v2;
char v3;
char v4;
_UNICODE_STRING *v5;
unsigned int v6;
unsigned int v8;
_DWORD *i;
__int64 v10;
__int64 *v11;
INT64 v12;
unsigned __int64 v13;
unsigned __int8 v14;
char *v15;
char v16;
char *v17;
char v18;
unsigned __int8 *v19;
int v20;
UINT64 BufferSize;
VOID *KeyHandle;
int Buffer;
unsigned __int8 v24;
char v25;
char *v26;
char *v27;
unsigned __int8 *v28;
v4 = v3;
v5 = v2;
v6 = v1;
v8 = 0;
if( v1 )
{
for( i = (char *)Context + 20; ; i += 6 )
{
v10 = v8;
if( (unsigned __int8)RtlEqualUnicodeString(v5, (PCUNICODE_STRING)((char *)Context + 24 * v8), 1u) )
{
if( !*i || *i == *(&ExBootDevicesRemovedEvent + 276) )
break;
}
if( ++v8 >= v6 )
return;
}
v13 = 3i64 * v8;
v14 = *((_BYTE *)Context + 24 * v8 + 18);
if( v14 )
goto LABEL_8;
if( v24 )
v14 = v24;
if( v14 )
{
LABEL_8:
v15 = v26;
v11 = &SeProtectedMapping;
v13 = (unsigned __int64)v14 >> 4;
*v26 = *((_BYTE *)&SeProtectedMapping + 2 * v13);
v16 = *((_BYTE *)&SeProtectedMapping + 2 * v13 + 1);
}
else
{
v15 = v26;
*v26 = *((_BYTE *)Context + 24 * v10 + 16);
v16 = *((_BYTE *)Context + 24 * v10 + 17);
}
v17 = v27;
v18 = v25;
*v27 = v16;
if( !qword_140C1D900 || (LOBYTE(v13) = *v15, LOBYTE(v11) = v18, !(unsigned int)qword_140C1D900(v13, v11)) )
*v15 = v18;
if( !qword_140C1D900 || (LOBYTE(v13) = *v17, LOBYTE(v11) = v18, !(unsigned int)qword_140C1D900(v13, v11)) )
*v17 = v18;
v19 = v28;
if( (v14 & 7) != 1 && ((v4 & 1) != 0 || (v14 & 7) == 2) )
{
if( (*v17 & 0xFu) < 4 )
*v17 = *v15;
v14 = *v19 & 8 | v14 & 0xF2 | 2;
}
*v19 = v14;
Buffer = 0;
KeyHandle = 0i64;
if( !*v19 && !*v17 && RtlpOpenImageFileOptionsKeyEx(v5, (INT64)v11, v12, &KeyHandle) >= 0 )
{
LODWORD(BufferSize) = 4;
if( RtlQueryImageFileKeyOption(KeyHandle, (WCHAR *)L"AuditLevel", 4ui64, &Buffer, BufferSize, 0i64) >= 0 )
{
v20 = Buffer & 0xF;
if( (unsigned int)(v20 - 2) <= 0xD )
{
*v17 = v20;
*v19 = 8;
}
}
ZwClose((_HANDLE)KeyHandle);
}
}
}Referenced by:
SepIsMinTCB