SepExpandSingletonArrays
NTSTATUS __stdcall SepExpandSingletonArrays(){
VOID **PoolWithTag;
VOID **v1;
unsigned __int64 v2;
VOID **v3;
VOID **v4;
PEX_SPIN_LOCK v5;
INT64 *v6;
void *v7;
PoolWithTag = ExAllocatePoolWithTag(0x200ui64, 0x600ui64, 1950639443i64);
v1 = PoolWithTag;
if( PoolWithTag )
{
memset(PoolWithTag, 0i64, 0x600u);
v2 = (unsigned __int8)ExAcquireSpinLockExclusive((INT64 *)SepSingletonGlobal);
v3 = ExAllocatePoolWithTag(0x200ui64, 8i64 * (unsigned int)(*((_DWORD *)SepSingletonGlobal + 1) + 1), 1950639443i64);
v4 = v3;
if( v3 )
{
v5 = SepSingletonGlobal;
memmove(v3, *((const VOID **)SepSingletonGlobal + 1), 8 * *((_DWORD *)SepSingletonGlobal + 1));
v4[*((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 0;
}
ExReleaseSpinLockExclusiveFromDpcLevel((INT64 *)SepSingletonGlobal);
__writecr8(v2);
ExFreePoolWithTag(v1, 0x74446553u);
}
return -1073741801;
}Referenced by:
SepAddLuidToIndexEntry