IopInitializeReserveIrps

CHAR __fastcall IopInitializeReserveIrps(DEVICE_OBJECT *a1){
  _DEVICE_OBJECT *v1; 
  _DEVICE_OBJECT *v2; 
  _DEVICE_OBJECT *v3; 
  int v4; 
  _IRP *IrpWithExtension; 
  CHAR result; 
  byte_140C45AA0 = 42;
  IopReserveIrps = IopAllocateIrpWithExtension(a1, 42, 0, 0i64);
  if( IopReserveIrps )
  {
    dword_140C459C8 = 0;
    qword_140C459E0 = (__int64)&qword_140C459D8;
    qword_140C459D8 = (__int64)&qword_140C459D8;
    word_140C459D0 = 1;
    byte_140C459D2 = 6;
    dword_140C459D4 = 0;
    qword_140C459E8 = IopAllocateIrpWithExtension(v1, 42, 0, 0i64);
    if( qword_140C459E8 )
    {
      dword_140C459F0 = 0;
      qword_140C45A08 = (__int64)&qword_140C45A00;
      qword_140C45A00 = (__int64)&qword_140C45A00;
      word_140C459F8 = 1;
      byte_140C459FA = 6;
      dword_140C459FC = 0;
      qword_140C45A10 = IopAllocateIrpWithExtension(v2, 42, 0, 0i64);
      if( qword_140C45A10 )
      {
        dword_140C45A18 = 0;
        stru_140C45A20.Header.WaitListHead.Blink = &stru_140C45A20.Header.WaitListHead;
        v4 = 0;
        stru_140C45A20.Header.WaitListHead.Flink = &stru_140C45A20.Header.WaitListHead;
        LOWORD(stru_140C45A20.Header.Lock) = 1;
        stru_140C45A20.Header.Size = 6;
        stru_140C45A20.Header.SignalState = 0;
        qword_140C45A98 = 0i64;
        while( 1 )
        {
          IrpWithExtension = IopAllocateIrpWithExtension(v3, 42, 0, 0i64);
          v3 = (_DEVICE_OBJECT *)IrpWithExtension;
          if( !IrpWithExtension )
            break;
          if( v4 )
          {
            if( v4 == 1 )
            {
              qword_140C45A68 = IrpWithExtension;
            }
            else
            {
              *(_QWORD *)IrpWithExtension = qword_140C45A98;
              qword_140C45A98 = IrpWithExtension;
            }
          }
          else
          {
            *(_QWORD *)Irp = IrpWithExtension;
          }
          if( (unsigned int)++v4 >= 8 )
          {
            dword_140C45A40 = 0;
            qword_140C45A60 = (__int64)&qword_140C45A58;
            result = 1;
            qword_140C45A58 = (__int64)&qword_140C45A58;
            stru_140C45A80.Header.WaitListHead.Blink = &stru_140C45A80.Header.WaitListHead;
            stru_140C45A80.Header.WaitListHead.Flink = &stru_140C45A80.Header.WaitListHead;
            dword_140C45A70 = 0;
            qword_140C45A48 = 0i64;
            qword_140C45A78 = 0i64;
            word_140C45A50 = 1;
            byte_140C45A52 = 6;
            dword_140C45A54 = 0;
            LOWORD(stru_140C45A80.Header.Lock) = 1;
            stru_140C45A80.Header.Size = 6;
            stru_140C45A80.Header.SignalState = 0;
            return result;
          }
        }
      }
    }
  }
  return 0;
}

Referenced by:

IoInitSystemPreDrivers