SmProcessListRequest
INT64 __fastcall SmProcessListRequest(INT64 a1, UINT64 a2, UINT64 a3, UINT64 *a4, CHAR a5){
unsigned int v6;
unsigned int v9;
INT64 NonPaged;
INT64 v11;
int StoreList;
UINT64 v13;
v6 = a3;
v9 = 4228;
NonPaged = SSHSupportAllocateNonPaged(0x1084ui64, 0x524C6D73u);
v11 = NonPaged;
if( NonPaged )
{
memset(NonPaged, 0i64);
if( v6 < 0x84 )
goto LABEL_4;
if( a5 )
{
if( (a2 & 3) != 0 )
ExRaiseDatatypeMisalignment();
v13 = 0x7FFFFFFF0000i64;
if( a2 < 0x7FFFFFFF0000i64 )
v13 = a2;
*(_BYTE *)v13 = *(_BYTE *)v13;
*(_BYTE *)(v13 + 131) = *(_BYTE *)(v13 + 131);
}
*(_OWORD *)v11 = *(_OWORD *)a2;
*(_OWORD *)(v11 + 16) = *(_OWORD *)(a2 + 16);
*(_OWORD *)(v11 + 32) = *(_OWORD *)(a2 + 32);
*(_OWORD *)(v11 + 48) = *(_OWORD *)(a2 + 48);
*(_OWORD *)(v11 + 64) = *(_OWORD *)(a2 + 64);
*(_OWORD *)(v11 + 80) = *(_OWORD *)(a2 + 80);
*(_OWORD *)(v11 + 96) = *(_OWORD *)(a2 + 96);
*(_OWORD *)(v11 + 112) = *(_OWORD *)(a2 + 112);
*(_DWORD *)(v11 + 128) = *(_DWORD *)(a2 + 128);
if( (*(_DWORD *)v11 & 0x10000) != 0 )
{
if( a5 )
ProbeForWrite((VOID *)a2, 0x1084ui64, 4ui64);
}
else
{
v9 = 132;
}
if( v6 == v9 )
{
if( __PAIR16__(*(_BYTE *)(v11 + 1), *(_DWORD *)v11) == 2 && *(_DWORD *)v11 < 0x20000u )
{
StoreList = SmKmGetStoreList(a1);
if( StoreList >= 0 )
{
if( (*(_DWORD *)v11 & 0x10000) == 0 || (StoreList = SmProcessListRequestExtended(a1, v11), StoreList >= 0) )
{
memmove((UINT8 *)a2, (UINT8 *)v11, v9);
*(_DWORD *)a4 = v9;
}
}
}
else
{
StoreList = -1073741811;
}
}
else
{
LABEL_4:
StoreList = -1073741306;
}
}
else
{
StoreList = -1073740716;
}
if( v11 )
CmSiFreeMemory((PPRIVILEGE_SET)v11);
return(unsigned int)StoreList;
}Referenced by:
SmQueryStoreInformation