SepExpandSingletonArrays
INT64 __stdcall SepExpandSingletonArrays(){
VOID *PoolWithTag;
void *v1;
unsigned __int64 v2;
UINT8 *v3;
UINT8 *v4;
PEX_SPIN_LOCK v5;
INT64 *v6;
void *v7;
PoolWithTag = ExAllocatePoolWithTag(NonPagedPoolNx, 0x600ui64, 0x74446553ui64);
v1 = PoolWithTag;
if( PoolWithTag )
{
memset((INT64)PoolWithTag, 0i64);
v2 = ExAcquireSpinLockExclusive(SepSingletonGlobal);
v3 = (UINT8 *)ExAllocatePoolWithTag(
NonPagedPoolNx,
8i64 * (unsigned int)(*((_DWORD *)SepSingletonGlobal + 1) + 1),
0x74446553ui64);
v4 = v3;
if( v3 )
{
v5 = SepSingletonGlobal;
memmove(v3, *((UINT8 **)SepSingletonGlobal + 1), 8i64 * *((unsigned int *)SepSingletonGlobal + 1));
*(_QWORD *)&v4[8 * *((unsigned int *)v5 + 1)] = v1;
v6 = (INT64 *)SepSingletonGlobal;
v7 = (void *)*((_QWORD *)SepSingletonGlobal + 1);
++*((_DWORD *)SepSingletonGlobal + 1);
v6[1] = (INT64)v4;
ExReleaseSpinLockExclusiveFromDpcLevel(v6);
__writecr8(v2);
ExFreePoolWithTag(v7, 0x74446553u);
return 0i64;
}
ExReleaseSpinLockExclusiveFromDpcLevel((INT64 *)SepSingletonGlobal);
__writecr8(v2);
ExFreePoolWithTag(v1, 0x74446553u);
}
return 3221225495i64;
}Referenced by:
SepAddLuidToIndexEntry