RtlpWow64GetContextOnAmd64
NTSTATUS __stdcall RtlpWow64GetContextOnAmd64(INT64 a1, INT64 a2, INT64 a3){
int v3;
NTSTATUS result;
v3 = *(_DWORD *)a3;
if( (*(_DWORD *)a3 & 0x27FFFF80) != 0x10000 )
return -1073741811;
if( !a2 )
goto LABEL_5;
result = RtlpWow64CtxFromAmd64(v3, (_DWORD *)a2, (int *)a3);
if( result < 0 )
return result;
if( *(_WORD *)(a2 + 56) != 35 )
{
LABEL_5:
if( (v3 & 0x100000) == 0 )
{
if( (v3 & 0x10001) == 65537 )
{
*(_DWORD *)(a3 + 180) = *(_DWORD *)(a1 + 180);
*(_DWORD *)(a3 + 184) = *(_DWORD *)(a1 + 184);
*(_DWORD *)(a3 + 188) = 35;
*(_DWORD *)(a3 + 192) = *(_DWORD *)(a1 + 192) & 0x3F0DD5 | 0x202;
*(_DWORD *)(a3 + 196) = *(_DWORD *)(a1 + 196);
*(_DWORD *)(a3 + 200) = 43;
}
if( (v3 & 0x10002) == 65538 )
{
*(_DWORD *)(a3 + 156) = *(_DWORD *)(a1 + 156);
*(_DWORD *)(a3 + 160) = *(_DWORD *)(a1 + 160);
*(_DWORD *)(a3 + 164) = *(_DWORD *)(a1 + 164);
*(_DWORD *)(a3 + 168) = *(_DWORD *)(a1 + 168);
*(_DWORD *)(a3 + 172) = *(_DWORD *)(a1 + 172);
*(_DWORD *)(a3 + 176) = *(_DWORD *)(a1 + 176);
}
if( (v3 & 0x10004) == 65540 )
{
*(_DWORD *)(a3 + 152) = 43;
*(_DWORD *)(a3 + 148) = 43;
*(_DWORD *)(a3 + 144) = 83;
*(_DWORD *)(a3 + 140) = 43;
}
if( (v3 & 0x10020) == 65568 )
{
*(_OWORD *)(a3 + 364) = *(_OWORD *)(a1 + 364);
*(_OWORD *)(a3 + 380) = *(_OWORD *)(a1 + 380);
*(_OWORD *)(a3 + 396) = *(_OWORD *)(a1 + 396);
*(_OWORD *)(a3 + 412) = *(_OWORD *)(a1 + 412);
*(_OWORD *)(a3 + 428) = *(_OWORD *)(a1 + 428);
*(_OWORD *)(a3 + 444) = *(_OWORD *)(a1 + 444);
}
if( (v3 & 0x40000000) != 0 && (*(_DWORD *)a3 & 0x18000000) == 0 )
*(_DWORD *)a3 |= 0x88000000;
return 0;
}
return -1073741811;
}
return 0;
}Referenced by:
PspWow64GetContextThread