PspCaptureCreateInfo
NTSTATUS __stdcall PspCaptureCreateInfo(
INT8 PreviousMode,
PS_CREATE_INFO *CreateInfo,
PSP_CREATE_PROCESS_CONTEXT *CreateContext){
NTSTATUS v4;
__int64 v5;
char v6;
char v7;
v4 = 0;
if( PreviousMode )
{
if( ((unsigned __int8)CreateInfo & 3) != 0 )
ExRaiseDatatypeMisalignment();
v5 = 0x7FFFFFFF0000i64;
if( (unsigned __int64)CreateInfo < 0x7FFFFFFF0000i64 )
v5 = (__int64)CreateInfo;
*(_BYTE *)v5 = *(_BYTE *)v5;
*(_BYTE *)(v5 + 87) = *(_BYTE *)(v5 + 87);
}
if( CreateInfo[2] || *(_QWORD *)CreateInfo != 88i64 )
return -1073741811;
v6 = (32 * *((_BYTE *)CreateInfo + 16)) ^ (*((_BYTE *)CreateContext + 8) ^ (32 * *((_BYTE *)CreateInfo + 16))) & 0x7F;
*((_BYTE *)CreateContext + 8) = v6;
*((_BYTE *)CreateContext + 9) ^= (*((_BYTE *)CreateContext + 9) ^ (*((_BYTE *)CreateInfo + 16) >> 3)) & 1;
CreateContext[40] = CreateInfo[5];
v7 = v6 ^ (v6 ^ (2 * *((_BYTE *)CreateInfo + 16))) & 2;
*((_BYTE *)CreateContext + 8) = v7;
*((_BYTE *)CreateContext + 8) = v7 ^ (v7 ^ (8 * *((_BYTE *)CreateInfo + 16))) & 0x10;
*((_WORD *)CreateContext + 5) = *((_WORD *)CreateInfo + 9);
*((_QWORD *)CreateContext + 5) = CreateInfo;
return v4;
}Referenced by:
NtCreateUserProcess