PspLocateInPEManifest
INT64 __fastcall PspLocateInPEManifest(INT64 a1, INT64 a2){
__int64 v2;
VOID *v4;
INT64 result;
int v6;
__int16 v7;
__int64 v8;
UINT64 InitResIds[5];
UINT64 Size;
v2 = *(_QWORD *)(a1 + 1408);
v4 = *(VOID **)(a1 + 1312);
if( v2 )
{
v7 = *(_WORD *)(v2 + 8);
if( v7 == 332 || v7 == 452 )
{
result = MmCheckImageMapping(a1);
if( (int)result < 0 )
return result;
v4 = (VOID *)(v8 | 1);
}
}
InitResIds[2] = 0i64;
Size = 0i64;
InitResIds[0] = 24i64;
InitResIds[1] = 1i64;
result = LdrResSearchResource(v4, InitResIds, 3ui64, 0x30ui64, (VOID **)(a2 + 304), &Size, 0i64, 0i64);
if( (int)result >= 0 )
{
v6 = Size;
if( Size > 0xFFFFFFFF )
return 3221225595i64;
*(_BYTE *)(a2 + 8) |= 0x20u;
*(_DWORD *)(a2 + 312) = v6;
*(_DWORD *)(*(_QWORD *)(a2 + 208) + 8i64) |= 0x2000u;
return 0i64;
}
if( (unsigned int)(result + 1073741687) <= 2 || (_DWORD)result == -1073741308 )
return 0i64;
return result;
}Referenced by:
PspSetupUserProcessAddressSpace