PopPlInitComponents
__int64 __fastcall PopPlInitComponents(
__int64 a1,
__int128 *a2,
unsigned __int64 a3,
__int64 a4,
unsigned __int64 a5,
unsigned __int64 *a6,
_QWORD *a7){
_QWORD *PoolWithTag;
unsigned __int64 v8;
__int128 *v11;
int inited;
unsigned __int64 v14;
unsigned __int64 i;
char *v17;
v17 = 0i64;
PoolWithTag = 0i64;
v8 = 0i64;
v11 = a2;
if( a3 )
{
if( (unsigned __int64)a2 + 24 * a3 <= a5 )
{
PoolWithTag = ExAllocatePoolWithTag(NonPagedPoolNx, 8 * a3, 0x6C506F50ui64);
if( PoolWithTag )
{
inited = 0;
v14 = 0i64;
if( a3 )
{
while( 1 )
{
inited = PopPlInitComponent(a1, v11, a4, a5, &v17);
if( inited < 0 )
break;
++v14;
PoolWithTag[v8] = v17;
v11 = (__int128 *)((char *)v11 + 24);
++v8;
if( v14 >= a3 )
goto LABEL_14;
}
for( i = 0i64; i < v8; ++i )
ExFreePoolWithTag((PVOID)PoolWithTag[i], 0x6C506F50u);
ExFreePoolWithTag(PoolWithTag, 0x6C506F50u);
PoolWithTag = 0i64;
v8 = 0i64;
}
}
else
{
inited = -1073741670;
}
}
else
{
inited = -1073741306;
}
}
else
{
inited = 0;
}
LABEL_14:
*a7 = PoolWithTag;
*a6 = v8;
return(unsigned int)inited;
}Referenced by:
PopPlInitDevice