uint RTMP_COM_IoctlHandle
               (undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4,uint *param_5,
               uint param_6)

{
  bool bVar1;
  char cVar2;
  char cVar3;
  uint uVar4;
  int iVar5;
  char *pcVar6;
  char *pcVar7;
  uint *puVar8;
  undefined1 *puVar9;
  undefined1 local_38 [2];
  undefined1 local_36 [2];
  undefined1 local_34 [4];
  uint local_30;
  char local_2c [12];
  
  puVar8 = (uint *)*param_1;
  if (param_3 == 0x5023) {
    pcVar7 = (char *)((int)param_1 + 0x4e3e);
    uVar4 = 1;
    while (uVar4 <= *(byte *)(param_1 + 0x1416)) {
      cVar2 = *pcVar7;
      pcVar7 = pcVar7 + 10;
      *(char *)((int)param_5 + (uVar4 - 1)) = cVar2;
      uVar4 = uVar4 + 1;
    }
    return 0;
  }
  if (param_3 < 0x5024) {
    if (param_3 == 0x5004) {
      uVar4 = Status & 1;
      param_1[0x3c] = 0x3fffc;
      param_1[0x3e] = 0;
      param_1[0x3d] = 0;
      Status = Status & 0xfffffffe;
      if (uVar4 != 0) {
        Status = Status | 1;
      }
      return 0;
    }
    if (param_3 < 0x5005) {
      if (param_3 == 0x5000) {
        uVar4 = param_1[1];
      }
      else {
        if (param_3 < 0x5001) {
          if (param_3 == 0xe) {
            RtmpDoAte(param_1,param_2,param_5);
            return 0;
          }
          if (param_3 == 0x24) {
            uVar4 = (uint)*(ushort *)(param_1 + puVar8[0x3f] * 0x450 + 0x1481);
            RtmpDrvMaxRateGet(param_1,(uVar4 << 0x10) >> 0x1e,(uVar4 << 0x17) >> 0x1f,
                              (uVar4 << 0x18) >> 0x1f,uVar4 & 0x7f,param_5 + 1);
            return 0;
          }
          return 1;
        }
        if (param_3 != 0x5002) {
          if (param_3 < 0x5003) {
            param_1[0x1476] = param_5;
            param_1[1] = param_5;
            return 0;
          }
          param_5[2] = (uint)(param_1 + 0xa73);
          *param_5 = (uint)(param_1 + 0xa7f);
          return 0;
        }
        uVar4 = (uint)*(byte *)(param_1 + 0x5a59);
      }
    }
    else {
      if (param_3 == 0x5008) {
        return ((param_1[0x1da41] ^ 2) << 0x1e) >> 0x1f;
      }
      if (param_3 < 0x5009) {
        if (param_3 != 0x5006) {
          if (param_3 < 0x5007) {
            RtmpOSIRQRelease(param_1[1],param_1[0xa7e],*puVar8,0);
            return 0;
          }
          param_1[0x1da41] = param_1[0x1da41] | 0x100;
          return 0;
        }
        uVar4 = *puVar8;
      }
      else if (param_3 == 0x5021) {
        uVar4 = param_1[0x12fd] & 0xf;
      }
      else {
        if (param_3 < 0x5022) {
          if (param_3 == 0x5020) {
            APMakeAllBssBeacon();
            APUpdateAllBeaconFrame(param_1);
            return 0;
          }
          return 1;
        }
        uVar4 = (uint)*(byte *)(param_1 + 0x1416);
      }
    }
  }
  else {
    if (param_3 == 0x502a) {
      *(char *)(param_5 + 3) = '\0';
      *(char *)((int)param_5 + 0xd) = '\0';
      *(char *)((int)param_5 + 0xe) = '\0';
      param_5[2] = param_1[0x1dac4];
      if ((param_1[0x1da41] & 2) != 0) {
        uVar4 = (uint)(param_1[0x5bee] * 0xc) / 10 + 10;
        *(char *)(param_5 + 3) = (char)uVar4;
        if (100 < (uVar4 & 0xff)) {
          *(char *)(param_5 + 3) = 'd';
        }
        cVar2 = RTMPMaxRssi(param_1,(int)*(char *)((int)param_1 + 0x165f7),
                            (int)*(char *)(param_1 + 0x597e),(int)*(char *)((int)param_1 + 0x165f9))   //possible issue identified - semgrep
        ;
        cVar3 = RTMPMinSnr(param_1,(int)*(char *)((int)param_1 + 0x16603),
                           (int)*(char *)(param_1 + 0x5981))   //possible issue identified - semgrep
        *(char *)((int)param_5 + 0xe) = cVar2 - cVar3;
        return 0;
      }
      return 1;
    }
    if (0x502a < param_3) {
      if (param_3 == 0x502e) {
        param_6 = param_6 ^ 0x600;
      }
      else {
        if (0x502e < param_3) {
          if (param_3 == 0x5030) {
            pcVar7 = "RTWIFI SoftAP";
            do {
              cVar2 = *pcVar7;
              pcVar7 = pcVar7 + 1;
              *(char *)param_5 = cVar2;
              param_5 = (uint *)((int)param_5 + 1);
            } while (cVar2 != '\0');
            return 0;
          }
          if (0x502f < param_3) {
            if (param_3 == 0x5034) {
              (*(code *)param_1[4])(param_1,4,local_38);
              (*(code *)param_1[4])(param_1,6,local_36);
              (*(code *)param_1[4])(param_1,8,local_34);
              local_2c[5] = SUB21(local_34._0_2_,1);
              local_2c[0] = local_38[0];
              local_2c[2] = local_36[0];
              local_2c[1] = local_38[1];
              local_2c[3] = local_36[1];
              local_2c[4] = (char)local_34._0_2_;
              iVar5 = 0;
              do {
                pcVar7 = local_2c + iVar5;
                pcVar6 = (char *)((int)param_5 + iVar5);
                iVar5 = iVar5 + 1;
                *pcVar6 = *pcVar7;
              } while (iVar5 != 6);
              return 0;
            }
            return 1;
          }
          uVar4 = (uint)*(byte *)(param_1 + 0x5a7b);
          goto LAB_0003e934;
        }
        if (param_3 == 0x502c) {
          *param_5 = 0x100;
          return 0;
        }
        if (param_3 < 0x502d) {
          uVar4 = RtmpPhyNetDevMainCreate();
          *param_5 = uVar4;
          return 0;
        }
        param_6 = param_6 ^ 0x100;
      }
      return (uint)(param_6 != 0);
    }
    if (param_3 == 0x5026) {
      iVar5 = param_1[2];
      param_1[2] = iVar5 + -1;
      if (iVar5 + -1 != 0) {
        return 0;
      }
      (*(code *)param_5[1])(param_1[1]);
      return 0;
    }
    if (param_3 < 0x5027) {
      if (param_3 == 0x5024) {
        puVar9 = (undefined1 *)((int)param_1 + 0x4e3e);
        uVar4 = 1;
        while (bVar1 = uVar4 <= *(byte *)(param_1 + 0x1416), uVar4 = uVar4 + 1, bVar1) {
          local_30 = 0x24cde0;
          RTMP_MapChannelID2KHZ(*puVar9,&local_30);
          puVar9 = puVar9 + 10;
          *param_5 = local_30;
          param_5 = param_5 + 1;
        }
        return 0;
      }
      if (param_3 == 0x5025) {
        if (param_1[2] == 0) {
          iVar5 = (*(code *)*param_5)(param_1[1]);
          if (iVar5 != 0) {
            if (2 < RTDebugLevel) {
              printk("rt28xx_open return fail!\n");
              return 1;
            }
            return 1;
          }
          iVar5 = param_1[2];
        }
        else {
          APMakeAllBssBeacon();
          APUpdateAllBeaconFrame(param_1);
          iVar5 = param_1[2];
        }
        param_1[2] = iVar5 + 1;
        return 0;
      }
      return 1;
    }
    if (param_3 == 0x5028) {
      uVar4 = param_1[0xa7e];
    }
    else {
      if (0x5028 < param_3) {
        param_5[1] = param_1[0x1dac5];
        param_5[2] = param_1[0x1d9b6];
        param_5[3] = param_1[0x1d9a4];
        param_5[4] = param_1[0x1d9d7];
        param_5[5] = param_1[0x1d9d6];
        param_5[6] = param_1[0x1d99c];
        param_5[7] = param_1[0x1d99b];
        param_5[8] = param_1[0x1d9b8];
        param_5[9] = param_1[0x1d9a0] + param_1[0x1d99f];
        uVar4 = param_1[0x1d99d];
        param_5[0xb] = 0;
        param_5[10] = uVar4;
        param_5[0xc] = param_1[0x1d99e];
        param_5[0xd] = param_1[0x1d99d];
        return 0;
      }
      uVar4 = param_1[2];
    }
  }
LAB_0003e934:
  *param_5 = uVar4;
  return 0;
}