HalpIumSetVariable
INT64 __stdcall HalpIumSetVariable(VOID *Src, VOID *a2){
int v2;
UINT64 v3;
UINT64 v4;
int v5;
__int64 v8;
UINT64 v9;
unsigned __int64 v10;
UINT8 *PoolWithTag;
UINT8 *v13;
UINT8 *v14;
__int128 v15;
INT64 v16;
UINT8 *Srca;
v4 = v3;
v5 = v2;
if( !qword_140C4A210 || KeGetCurrentIrql() > 2u )
return 0x8000000000000003ui64;
v8 = -1i64;
do
++v8;
while( *((_WORD *)Src + v8) );
v9 = 2 * v8 + 2;
v10 = (v9 + v3 + 4151) & 0xFFFFFFFFFFFFF000ui64;
if( v10 > 0x1FA000 )
return 0x8000000000000004ui64;
PoolWithTag = (UINT8 *)ExAllocatePoolWithTag(
NonPagedPoolNx,
(v9 + v3 + 4151) & 0xFFFFFFFFFFFFF000ui64,
0x77466B53ui64);
v13 = PoolWithTag;
if( !PoolWithTag )
return 0x8000000000000009ui64;
*((_DWORD *)PoolWithTag + 8) = v5;
*(_QWORD *)PoolWithTag = PoolWithTag + 56;
memmove(PoolWithTag + 56, (UINT8 *)Src, v9);
v14 = (UINT8 *)(v9 + *(_QWORD *)v13);
*((_QWORD *)v13 + 1) = v9;
v15 = *(_OWORD *)a2;
*((_QWORD *)v13 + 6) = v14;
*((_OWORD *)v13 + 1) = v15;
memmove(v14, Srca, v4);
*((_QWORD *)v13 + 5) = v4;
v16 = ((__int64(__fastcall *)(__int64, UINT8 *, unsigned __int64))qword_140C4A210)(5i64, v13, v10);
ExFreePoolWithTag(v13, 0);
return v16;
}Referenced by:
No references.