PspInitializeQuotaBlock
INT64 __fastcall PspInitializeQuotaBlock(INT64 a1, INT64 *a2, INT64 a3){
INT64 v6;
int v7;
INT64 *v8;
__int64 v9;
INT64 *i;
char v11;
INT64 v12;
INT64 v14;
v14 = 0i64;
memset(a3, 0i64);
*(_DWORD *)(a3 + 516) = 1;
*(_DWORD *)(a3 + 512) = 1;
if( a1 && (*(_DWORD *)(a1 + 80) & 0x10) != 0 )
{
if( *(_QWORD *)a1 || *(_QWORD *)(a1 + 32) || *(_QWORD *)(a1 + 8) || *(_QWORD *)(a1 + 48) )
return 3221225485i64;
a1 = 0i64;
a2 = &PspDefaultResourceLimits;
}
v7 = 0;
v8 = (INT64 *)(a3 + 64);
v9 = 0i64;
for( i = a2; ; i = (INT64 *)((char *)i + 4) )
{
v11 = PspResourceFlags[v9 * 2];
if( (v11 & 2) != 0 )
goto LABEL_9;
v12 = a2 ? *(int *)i : *(_QWORD *)(a1 + *(_QWORD *)&PspQuotaLimitOffsets[v9]);
*v8 = v12;
if( (v11 & 1) == 0 )
goto LABEL_9;
if( v12 != -1 )
break;
*v8 = 0i64;
PspInsertExpansionEntry(&PspQuotaExpansionDescriptors[14 * v7], v8 - 8);
LABEL_9:
++v7;
v8 += 16;
v9 += 4i64;
if( v7 >= 4 )
return 0i64;
}
if( !v12 )
goto LABEL_9;
v14 = 0i64;
if( PspExpandLimit((unsigned int)v7, v6, v12, (INT64)&v14) )
{
if( !v7 )
IoEnableIrpCredits();
goto LABEL_9;
}
return 3221225626i64;
}Referenced by:
PspAssignProcessQuotaBlock