CmpAppendSection
CHAR __fastcall CmpAppendSection(INT64 a1, INT8 *a2, CHAR a3){
VOID **v6;
const char *v7;
VOID **PoolWithTag;
_QWORD *v9;
CHAR result;
if( a1 && a2 )
{
v6 = *(VOID ***)a1;
if( *(_QWORD *)a1 )
{
do
{
v7 = (const char *)v6[1];
if( v7 && !stricmp(v7, a2) )
break;
v6 = (VOID **)*v6;
}
while( v6 );
if( v6 )
{
v9 = v6[2];
if( v9 )
{
while( *v9 )
v9 = (_QWORD *)*v9;
}
goto LABEL_11;
}
}
PoolWithTag = ExAllocatePoolWithTag(1ui64, 0x20ui64, 1768967491i64);
v6 = PoolWithTag;
if( PoolWithTag )
{
*PoolWithTag = 0i64;
PoolWithTag[2] = 0i64;
PoolWithTag[1] = a2;
*((_BYTE *)PoolWithTag + 24) = a3;
*PoolWithTag = *(VOID **)a1;
*(_QWORD *)a1 = PoolWithTag;
if( !strnicmp(a2, "Strings", 7u) && (a2[7] == 0) > *(int *)(a1 + 32) )
*(_QWORD *)(a1 + 40) = v6;
v9 = 0i64;
LABEL_11:
*(_QWORD *)(a1 + 16) = v9;
result = 1;
*(_QWORD *)(a1 + 24) = 0i64;
*(_QWORD *)(a1 + 8) = v6;
return result;
}
}
return 0;
}Referenced by:
CmpParseInfBuffer