HalpIumSetVariable
NTSTATUS __stdcall HalpIumSetVariable(VOID *Src, VOID *a2){
int v2;
VOID *v3;
VOID *v4;
int v5;
__int64 v8;
__int64 v9;
unsigned __int64 v10;
VOID **PoolWithTag;
VOID **v13;
char *v14;
__int128 v15;
NTSTATUS v16;
VOID *Srca;
v4 = v3;
v5 = v2;
if( !qword_140C4A210 || KeGetCurrentIrql() > 2u )
return 3;
v8 = -1i64;
do
++v8;
while( *((_WORD *)Src + v8) );
v9 = 2 * v8 + 2;
v10 = ((unsigned __int64)v3 + v9 + 4151) & 0xFFFFFFFFFFFFF000ui64;
if( v10 > 0x1FA000 )
return 4;
PoolWithTag = ExAllocatePoolWithTag(
0x200ui64,
((unsigned __int64)v3 + v9 + 4151) & 0xFFFFFFFFFFFFF000ui64,
2001103699i64);
v13 = PoolWithTag;
if( !PoolWithTag )
return 9;
*((_DWORD *)PoolWithTag + 8) = v5;
*PoolWithTag = PoolWithTag + 7;
memmove(PoolWithTag + 7, Src, v9);
v14 = (char *)*v13 + v9;
v13[1] = (VOID *)v9;
v15 = *(_OWORD *)a2;
v13[6] = v14;
*((_OWORD *)v13 + 1) = v15;
memmove(v14, Srca, (size_t)v4);
v13[5] = v4;
v16 = ((__int64(__fastcall *)(__int64, VOID **, unsigned __int64))qword_140C4A210)(5i64, v13, v10);
ExFreePoolWithTag(v13, 0);
return v16;
}Referenced by:
No references.