PoGetRequester
NTSTATUS __fastcall PoGetRequester(){
VOID *v0;
char v1;
__int64 v2;
NTSTATUS result;
_ETHREAD *CurrentThread;
_QWORD *Teb;
__int64 v6;
_EWOW64PROCESS *WoW64Process;
unsigned __int16 Machine;
__int64 v9;
result = (int)v0;
if( v1 )
{
v9 = 0i64;
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
if( (CurrentThread->Tcb._bf_0 & 0x400) != 0 || CurrentThread->Tcb.ApcStateIndex == 1 )
Teb = 0i64;
else
Teb = CurrentThread->Tcb.Teb;
if( Teb )
{
if( KeGetCurrentThread()->ApcState.Process->WoW64Process
&& (WoW64Process = KeGetCurrentThread()->ApcState.Process->WoW64Process) != 0i64
&& ((Machine = WoW64Process->Machine, Machine == 332) || Machine == 452) )
{
v6 = *((unsigned int *)Teb + 3032);
}
else
{
v6 = Teb[740];
}
v9 = v6;
}
*(_DWORD *)v2 = (v9 != 0) + 1;
*(_QWORD *)(v2 + 8) = KeGetCurrentThread()->ApcState.Process;
result = v9;
*(_DWORD *)(v2 + 16) = v9;
}
else
{
*(_DWORD *)v2 = 0;
*(_QWORD *)(v2 + 8) = v0;
if( v0 )
return ObfReferenceObjectWithTag(v0, 0x67446F50ui64);
}
return result;
}Referenced by:
PoCaptureReasonContext