int rt28xx_ap_ioctl(undefined4 param_1,int param_2,int param_3)

{
  char cVar1;
  ushort uVar2;
  int *piVar3;
  int iVar4;
  int iVar5;
  code *pcVar6;
  char *pcVar7;
  uint uVar8;
  uint uVar9;
  char *pcVar10;
  int iVar11;
  undefined4 uVar12;
  undefined2 uVar13;
  size_t __n;
  int unaff_gp;
  undefined4 uVar14;
  char *local_70;
  uint local_6c;
  ushort local_68;
  undefined4 local_64;
  undefined4 local_60;
  uint local_5c;
  uint local_58;
  undefined4 local_54;
  undefined4 local_50;
  undefined4 local_4c;
  undefined4 local_48;
  undefined4 local_44;
  int local_40;
  ushort local_3c;
  
  piVar3 = (int *)RtmpOsGetNetDevPriv();
  if (piVar3 == (int *)0x0) {
    return -0x7f;
  }
  local_6c = *(uint *)(param_2 + 0x10);
  uVar2 = *(ushort *)(param_2 + 0x14);
  local_4c = 0;
  local_68 = uVar2;
  local_64 = param_1;
  local_60 = RtmpDevPrivFlagsGet(param_1);
  local_5c = *(uint *)(param_2 + 0x10);
  local_58 = 0x8be2;
  local_50 = 0;
  local_54 = param_1;
  iVar4 = RTMP_AP_IoctlHandle(piVar3,0,0x20,0,&local_64,0);
  uVar12 = local_50;
  iVar11 = local_4c;
  if (iVar4 != 0) {
LAB_00093154:
    if (iVar11 != 0) {
      if (iVar11 == 30000) {
        return -0x16;
      }
LAB_00093170:
      if (iVar11 == 0x7531) {
        return -0x7a;
      }
      if (iVar11 == 0x7532) {
        return -0xe;
      }
      if (iVar11 == 0x7534) {
        return -7;
      }
      if (iVar11 == 0x7535) {
        return -0xc;
      }
      if (iVar11 == 0x7536) {
        return -0xb;
      }
      if (iVar11 != 0x7537) {
        return iVar11;
      }
      return -0x86;
    }
    goto LAB_000931cc;
  }
  if (param_3 == 0x8b01) {
    if (2 < RTDebugLevel) {
      printk("IOCTL::SIOCGIWNAME\n");
    }
    RTMP_COM_IoctlHandle(piVar3,0,0x5030,0,param_2 + 0x10,0);
    return 0;
  }
  if (param_3 == 0x8be3) {
    uVar12 = 7;
LAB_000930d8:
    iVar11 = 0;
    uVar14 = 0;
  }
  else {
    if (0x8be3 < param_3) {
      if (param_3 != 0x8bef) {
        if (param_3 < 0x8bf0) {
          if (param_3 != 0x8be8) {
            if (param_3 < 0x8be9) {
              if (param_3 == 0x8be5) {
                uVar12 = 8;
              }
              else {
                if (param_3 != 0x8be7) {
                  iVar11 = 0x7531;
                  goto LAB_00093170;
                }
                uVar12 = 6;
              }
            }
            else if (param_3 == 0x8be9) {
              uVar12 = 4;
            }
            else {
              if (param_3 != 0x8bed) {
                iVar11 = 0x7531;
                goto LAB_00093170;
              }
              uVar12 = 3;
            }
            goto LAB_00093100;
          }
          uVar12 = 0xe;
          pcVar6 = RTMP_COM_IoctlHandle;
          iVar11 = param_2;
        }
        else {
          if (param_3 == 0x8bf6) {
            uVar12 = 5;
            goto LAB_000930d8;
          }
          if (0x8bf6 < param_3) {
            if (param_3 == 0x8bfd) {
              uVar12 = 1;
            }
            else {
              if (param_3 == 0x8bff) {
                uVar12 = 0x11;
                goto LAB_00093100;
              }
              if (param_3 != 0x8bfc) {
                iVar11 = 0x7531;
                goto LAB_00093170;
              }
              uVar12 = 0;
            }
            iVar11 = hapd_ioctl_param(uVar12,piVar3,param_2);
            goto LAB_00093154;
          }
          if (param_3 == 0x8bf1) {
            if ((((uint)*(ushort *)(param_2 + 0x14) + *(uint *)(param_2 + 0x10) |
                  *(uint *)(param_2 + 0x10) | (uint)*(ushort *)(param_2 + 0x14)) &
                *(uint *)(unaff_gp + 0x18)) == 0) {
              uVar12 = 0xc;
LAB_00093054:
              uVar13 = 0;
              uVar14 = 0;
              goto LAB_0009305c;
            }
            goto LAB_00093210;
          }
          if (param_3 != 0x8bf3) {
            iVar11 = 0x7531;
            goto LAB_00093170;
          }
          uVar12 = 9;
LAB_00093100:
          pcVar6 = RTMP_AP_IoctlHandle;
          iVar11 = 0;
        }
        (*pcVar6)(piVar3,&local_6c,uVar12,0,iVar11,0);
        iVar11 = 0;
        goto LAB_000931cc;
      }
      uVar12 = 2;
      goto LAB_000930d8;
    }
    if (param_3 != 0x8b15) {
      if (param_3 < 0x8b16) {
        if (param_3 == 0x8b07) {
          local_44 = 2;
          goto LAB_00092e88;
        }
        if (param_3 < 0x8b08) {
          if (param_3 == 0x8927) {
            if (2 < RTDebugLevel) {
              printk("IOCTLIOCTLIOCTL::SIOCGIFHWADDR\n");
            }
            uVar12 = 0x22;
            goto LAB_00093100;
          }
          if (param_3 != 0x8b05) {
            iVar11 = 0x7531;
            goto LAB_00093170;
          }
          RTMP_COM_IoctlHandle(piVar3,0,0x502f,0,&local_70,0);
          *(undefined2 *)(param_2 + 0x14) = 0;
          *(char **)(param_2 + 0x10) = local_70;
          *(undefined1 *)(param_2 + 0x16) = 0;
        }
        else {
          if (param_3 == 0x8b0b) {
            local_70 = (char *)0x0;
            os_alloc_mem(0,&local_70,0x238);
            if (local_70 == (char *)0x0) {
              if (RTDebugLevel == 0) {
                iVar11 = 0;
                goto LAB_000931cc;
              }
              pcVar10 = "%s: Allocate memory fail!!!\n";
              pcVar6 = printk;
              pcVar7 = "rt28xx_ap_ioctl";
            }
            else {
              memset(local_70,0,0x238)   //possible issue identified - semgrep
              local_70[0x118] = '\x16';
              local_70[0x119] = '\x0e';
              local_70[0x2c] = 'd';
              local_70[0x2d] = '\0';
              local_70[0x2e] = '\0';
              if (((local_6c + 0x238 | local_6c) & *(uint *)(unaff_gp + 0x18)) == 0) {
                __copy_user(local_6c,local_70,0x238);
              }
              pcVar10 = (char *)0x0;
              pcVar6 = os_free_mem;
              pcVar7 = local_70;
            }
            (*pcVar6)(pcVar10,pcVar7);
            iVar11 = 0;
            goto LAB_000931cc;
          }
          iVar11 = 0x7531;
          if (param_3 != 0x8b0d) goto LAB_00093170;
          uVar9 = *(uint *)(param_2 + 0x10);
          if ((uVar9 != 0) &&
             (uVar8 = uVar9 + 0x108 | uVar9, (uVar8 & *(uint *)(unaff_gp + 0x18)) == 0)) {
            iVar11 = 0x7534;
            if (10 < local_68) {
              *(undefined2 *)(param_2 + 0x14) = 0xb;
              iVar11 = 0x108;
              if ((uVar8 & *(uint *)(unaff_gp + 0x18)) == 0) {
                __copy_user(uVar9,&ap_privtab);
                if (iVar11 == 0) {
                  iVar11 = 0;
                  goto LAB_000931cc;
                }
                iVar11 = 0x7532;
              }
              else {
                iVar11 = 0x7532;
              }
            }
            goto LAB_00093170;
          }
        }
      }
      else if (param_3 == 0x8b21) {
        local_48 = RtmpDevPrivFlagsGet(param_1);
        RTMP_COM_IoctlHandle(piVar3,0,0x24,0,&local_48,0);
        *(undefined1 *)(param_2 + 0x15) = 0;
LAB_00092e88:
        *(undefined4 *)(param_2 + 0x10) = local_44;
      }
      else if (param_3 < 0x8b22) {
        if (param_3 != 0x8b1a) {
          if (param_3 != 0x8b1b) {
            iVar11 = 0x7531;
            goto LAB_00093170;
          }
          *(undefined2 *)(param_2 + 0x16) = 1;
          local_48 = RtmpDevPrivFlagsGet(param_1);
          local_44 = uVar12;
          RTMP_AP_IoctlHandle(piVar3,&local_6c,0x23,0,&local_48,0);
          uVar8 = (uint)local_3c;
          uVar9 = *(uint *)(param_2 + 0x10);
          *(ushort *)(param_2 + 0x14) = local_3c;
          if ((uVar9 != 0) && (local_40 != 0)) {
            if (((uVar9 + uVar8 | uVar9 | uVar8) & *(uint *)(unaff_gp + 0x18)) == 0) {
              __copy_user();
            }
            iVar11 = 0x7532;
            if (uVar8 != 0) goto LAB_00093170;
          }
          if (RTDebugLevel < 3) {
            iVar11 = 0;
          }
          else {
            printk("IOCTL::SIOCGIWESSID (Len=%d, ssid=%s...)\n",*(undefined2 *)(param_2 + 0x14),
                   *(undefined4 *)(param_2 + 0x10));
            iVar11 = 0;
          }
          goto LAB_000931cc;
        }
        iVar4 = *piVar3;
        if ((short)local_58 != 0) {
          memset(&local_48,0,0x20)   //possible issue identified - semgrep
          uVar9 = 0x20;
          if ((local_58 & 0xffff) < 0x21) {
            uVar9 = local_58 & 0xffff;
          }
          if (((uVar9 + local_5c | local_5c | uVar9) & *(uint *)(unaff_gp + 0x18)) == 0) {
            __copy_user(&local_48,local_5c,uVar9);
          }
          pcVar7 = (char *)((int)&local_4c + uVar9 + 3);
          do {
            __n = uVar9   //possible issue identified - semgrep
            if (__n == 0) break;
            cVar1 = *pcVar7;
            pcVar7 = pcVar7 + -1;
            uVar9 = __n - 1;
          } while (cVar1 == '\0');
          iVar5 = memcmp((void *)((int)piVar3 + *(int *)(iVar4 + 0xfc) * 0x1140 + 0x51b3),&local_48,
                         __n)   //possible issue identified - semgrep
          iVar11 = 0;
          if (iVar5 != 0) {
            memset((void *)((int)piVar3 + *(int *)(iVar4 + 0xfc) * 0x1140 + 0x51b3),0,0x20)   //possible issue identified - semgrep
            memmove((void *)((int)piVar3 + *(int *)(iVar4 + 0xfc) * 0x1140 + 0x51b3),&local_48,__n)   //possible issue identified - semgrep
            *(char *)((int)piVar3 + *(int *)(iVar4 + 0xfc) * 0x1140 + 0x51b2) = (char)__n;
            if (((char)piVar3[0x5aa0] == '\0') || (cVar1 = (char)piVar3[0x5ab3], cVar1 == '\x02')) {   //possible issue identified - semgrep
              APStop(piVar3);
              pcVar6 = APStartUp;
            }
            else {
              iVar11 = 0;
              if ((cVar1 == '\x01') || (cVar1 != '\0')) goto LAB_000931cc;
              APStop(piVar3);
              APStartUp(piVar3);
              pcVar6 = AsicEnableBssSync;
            }
            (*pcVar6)(piVar3);
            iVar11 = 0;
          }
          goto LAB_000931cc;
        }
      }
      else {
        if (param_3 == 0x8be1) {
          uVar14 = *(undefined4 *)(param_2 + 0x10);
          uVar13 = *(undefined2 *)(param_2 + 0x16);
          uVar12 = 10;
LAB_0009305c:
          iVar11 = RTMP_AP_IoctlHandle(piVar3,&local_6c,uVar12,uVar13,uVar14,0);
          goto LAB_00093154;
        }
        iVar11 = 0x7531;
        if (param_3 != 0x8be2) goto LAB_00093170;
        if ((((uint)*(ushort *)(param_2 + 0x14) + *(uint *)(param_2 + 0x10) |
              *(uint *)(param_2 + 0x10) | (uint)*(ushort *)(param_2 + 0x14)) &
            *(uint *)(unaff_gp + 0x18)) == 0) {
          uVar12 = 0xb;
          goto LAB_00093054;
        }
      }
LAB_00093210:
      iVar11 = 0;
      goto LAB_000931cc;
    }
    *(undefined2 *)(param_2 + 0x10) = 1;
    uVar14 = RtmpDevPrivFlagsGet(param_1);
    iVar11 = param_2 + 0x12;
    uVar12 = 0x21;
  }
  RTMP_AP_IoctlHandle(piVar3,&local_6c,uVar12,0,iVar11,uVar14);
  iVar11 = 0;
LAB_000931cc:
  if (local_68 != uVar2) {
    *(ushort *)(param_2 + 0x14) = local_68;
  }
  return iVar11;
}