IoIs32bitProcess

BOOL __stdcall IoIs32bitProcess(PIRP Irp){
  _ETHREAD *Thread; 
  unsigned __int64 Process; 
  __int64 v3; 
  _EWOW64PROCESS *WoW64Process; 
  unsigned __int16 Machine; 
  char ApcEnvironment; 
  __int16 v8; 

  if( !Irp )
  {
    if( KeGetCurrentThread()->PreviousMode == 1 )
    {
      WoW64Process = KeGetCurrentThread()->ApcState.Process->WoW64Process;
      if( WoW64Process )
      {
        Machine = WoW64Process->Machine;
        if( Machine == 332 || Machine == 452 )
          return 1;
      }
    }
    return 0;
  }
  if( Irp->RequestorMode != 1 )
    return 0;
  Thread = Irp->Tail.Thread;
  if( (Irp->Flags & 0x2000) == 0 )
  {
    if( Thread )
    {
      ApcEnvironment = Irp->ApcEnvironment;
      if( !ApcEnvironment )
      {
        Process = (unsigned __int64)Thread->Tcb.Process;
        goto LABEL_5;
      }
      if( ApcEnvironment == 1 )
      {
        Process = (unsigned __int64)Thread->Tcb.ApcState.Process;
        goto LABEL_5;
      }
    }
    return 0;
  }
  Process = (unsigned __int64)Irp->Overlay.UserApcRoutine & 0xFFFFFFFFFFFFFFF9ui64;
LABEL_5:
  if( !Process )
    return 0;
  v3 = *(_QWORD *)(Process + 1408);
  if( !v3 )
    return 0;
  v8 = *(_WORD *)(v3 + 8);
  return v8 == 332 || v8 == 452;
}

Referenced by:

EtwpGetScsiPassThroughCdb
FsRtlGetMarkHandleInfo
IoIsInitiator32bitProcess
PiCMFastIoDeviceDispatch
PiDqDispatch
WmipIoControl
WmipProbeAndCaptureGuidObjectAttributes
WmipProbeWmiOpenGuidBlock