PiSwIrpStartCreate

NTSTATUS __stdcall PiSwIrpStartCreate(IRP *Irp){
  __int64 v2; 
  IRP *v3; 
  __int64 v4; 
  NTSTATUS Worker; 
  PVOID P; 
  __int64 v8; 
  IRP *v9; 
  v2 = *((_QWORD *)Irp + 23);
  v8 = 0i64;
  P = 0i64;
  v3 = Irp;
  v9 = Irp;
  v4 = *((_QWORD *)Irp + 3);
  if( v4 )
  {
    if( *(_DWORD *)(v2 + 8) < 0xC8u )
    {
      Worker = -1073741789;
    }
    else
    {
      Worker = MesDecodeBufferHandleCreate(v4, *(unsigned int *)(v2 + 16), &v8);
      if( Worker >= 0 )
      {
        NdrMesTypeDecode3(v8, "TP 3\a", &off_140983A98, &off_140C01A60, 0, &P);
        Worker = PiSwIrpStartCreateWorker((INT64)P, (INT64)Irp);
        v3 = 0i64;
      }
    }
  }
  else
  {
    Worker = -1073741811;
  }
  if( v3 )
  {
    *((_DWORD *)v3 + 12) = Worker;
    *((_QWORD *)v3 + 7) = 0i64;
    IofCompleteRequest(v3, 0);
  }
  if( P )
    ExFreePoolWithTag(P, 0x6370726Bu);
  if( v8 )
    MesHandleFree();
  return Worker;
}

Referenced by:

PiSwDispatch