SepIsImageInMinTcbList
__int64 __fastcall SepIsImageInMinTcbList(
__int64 a1,
unsigned int a2,
UNICODE_STRING *a3,
char a4,
unsigned __int8 a5,
char a6,
char *a7,
char *a8,
unsigned __int8 *a9){
unsigned int v9;
unsigned int v14;
_DWORD *i;
__int64 v16;
__int64 *v17;
INT64 v18;
unsigned __int64 v20;
unsigned __int8 v21;
char *v22;
char v23;
char *v24;
char v25;
unsigned __int8 *v26;
int v27;
int v28;
UINT64 BufferSize;
HANDLE Handle;
int Buffer;
v9 = 0;
v14 = 0;
if( a2 )
{
for( i = (_DWORD *)(a1 + 20); ; i += 6 )
{
v16 = v14;
if( RtlEqualUnicodeString(a3, (UNICODE_STRING *)(a1 + 24i64 * v14), 1u) )
{
if( !*i || *i == dword_140C19650 )
break;
}
if( ++v14 >= a2 )
return(unsigned int)-1073741275;
}
v20 = 3i64 * v14;
v21 = *(_BYTE *)(a1 + 24i64 * v14 + 18);
if( v21 )
goto LABEL_9;
if( a5 )
v21 = a5;
if( v21 )
{
LABEL_9:
v22 = a7;
v17 = &SeProtectedMapping;
v20 = (unsigned __int64)v21 >> 4;
*a7 = *((_BYTE *)&SeProtectedMapping + 2 * v20);
v23 = *((_BYTE *)&SeProtectedMapping + 2 * v20 + 1);
}
else
{
v22 = a7;
*a7 = *(_BYTE *)(a1 + 24 * v16 + 16);
v23 = *(_BYTE *)(a1 + 24 * v16 + 17);
}
v24 = a8;
v25 = a6;
*a8 = v23;
if( !qword_140C1D900 || (LOBYTE(v20) = *v22, LOBYTE(v17) = v25, !(unsigned int)qword_140C1D900(v20, v17)) )
*v22 = v25;
if( !qword_140C1D900 || (LOBYTE(v20) = *v24, LOBYTE(v17) = v25, !(unsigned int)qword_140C1D900(v20, v17)) )
*v24 = v25;
v26 = a9;
if( (v21 & 7) != 1 && ((a4 & 1) != 0 || (v21 & 7) == 2) )
{
if( (*v24 & 0xFu) < 4 )
*v24 = *v22;
v21 = *v26 & 8 | v21 & 0xF2 | 2;
}
*v26 = v21;
Buffer = 0;
Handle = 0i64;
if( !*v26 && !*v24 && RtlpOpenImageFileOptionsKeyEx(&a3->Length, (INT64)v17, v18, &Handle) >= 0 )
{
LODWORD(BufferSize) = 4;
v27 = RtlQueryImageFileKeyOption(Handle, L"AuditLevel", 4ui64, &Buffer, BufferSize, 0i64);
if( v27 >= 0 )
{
v28 = Buffer & 0xF;
if( (unsigned int)(v28 - 2) <= 0xD )
{
*v24 = v28;
*v26 = 8;
}
}
ZwClose(Handle);
}
}
else
{
return(unsigned int)-1073741275;
}
return v9;
}Referenced by:
SepIsMinTCB