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.