HalpIumGetNextVariableName
__int64 __fastcall HalpIumGetNextVariableName(__int64 *a1, VOID *a2, _OWORD *a3){
unsigned __int64 v7;
__int64 v8;
unsigned __int64 v9;
VOID **PoolWithTag;
VOID **v11;
__int64 v12;
if( !qword_140C4A210 )
return 0x8000000000000003ui64;
v7 = *a1;
v8 = 2072544i64;
if( v7 < 0x1F9FE0 )
v8 = v7;
*a1 = v8;
v9 = (v8 + 4127) & 0xFFFFFFFFFFFFF000ui64;
PoolWithTag = ExAllocatePoolWithTag(0x200ui64, v9, 2001103699i64);
v11 = PoolWithTag;
if( !PoolWithTag )
return 0x8000000000000009ui64;
PoolWithTag[1] = PoolWithTag + 4;
memmove(PoolWithTag + 4, a2, *a1);
*v11 = (VOID *)*a1;
*((_OWORD *)v11 + 1) = *a3;
v12 = ((__int64(__fastcall *)(__int64, VOID **, unsigned __int64))qword_140C4A210)(4i64, v11, v9);
*a1 = (__int64)*v11;
*a3 = *((_OWORD *)v11 + 1);
if( v12 )
{
if( v12 == 0x8000000000000005ui64 && v9 == 2072576 )
v12 = 0x8000000000000004ui64;
}
else
{
memmove(a2, v11[1], *a1);
}
ExFreePoolWithTag(v11, 0);
return v12;
}Referenced by:
No references.