uint RTMPAPSetInformation(int *param_1,uint *param_2,uint param_3)

{
  char cVar1;
  short sVar2;
  code *pcVar3;
  char *pcVar4;
  size_t sVar5;
  uint uVar6;
  char *pcVar7;
  uint uVar8;
  int iVar9;
  int *unaff_gp;
  uint local_50;
  uint local_4c;
  char *local_48;
  undefined1 local_44;
  undefined1 local_43;
  undefined1 local_42;
  undefined1 local_41;
  undefined1 local_40;
  undefined1 local_3f;
  uint local_3c;
  undefined1 auStack_38 [32];
  
  local_4c = 10;
  uVar6 = param_3 & 0x7fff;
  iVar9 = *param_1;
  if (uVar6 == 0x511) {
    uVar6 = 0xffffffea;
    if ((short)param_2[1] == 4) {
      uVar8 = *param_2;
      uVar6 = 4;
      if (((uVar8 + 4 | uVar8) & unaff_gp[6]) == 0) {
        uVar6 = 4;
        __copy_user(&local_4c,uVar8,4);
      }
      if (10 < local_4c) {
        return 0xffffffea;
      }
      if (param_1[*(int *)(iVar9 + 0xfc) * 0x450 + 0x1477] != local_4c) {
        *(undefined1 *)(param_1 + 0x1da48) = 1;
      }
      param_1[*(int *)(iVar9 + 0xfc) * 0x450 + 0x1477] = local_4c;
      *(undefined1 *)((int)param_1 + *(int *)(iVar9 + 0xfc) * 0x1140 + 0x52d7) = 2;
      if (2 < RTDebugLevel) {
        printk("Set::OID_802_11_AUTHENTICATION_MODE (=%d) \n",param_1[0x1477]);
      }
    }
    APStop(param_1);
    APStartUp(param_1);
    return uVar6;
  }
  if (0x511 < uVar6) {
    if (uVar6 == 0x542) {
      pcVar3 = RTMPIoctlRadiusData;
    }
    else if (uVar6 < 0x543) {
      if (uVar6 == 0x526) {
        if (RTDebugLevel < 3) {
          sVar2 = (short)param_2[1]   //possible issue identified - semgrep
        }
        else {
          printk("Set::OID_802_11_DEAUTHENTICATION\n");
          sVar2 = (short)param_2[1]   //possible issue identified - semgrep
        }
        if (sVar2 == 8) {
          os_alloc_mem(param_1,&local_48,0x668);
          pcVar7 = local_48;
          if (local_48 != (char *)0x0) {
            uVar8 = (uint)(ushort)param_2[1];
            uVar6 = *param_2;
            if (((uVar8 + uVar6 | uVar6 | uVar8) & unaff_gp[6]) == 0) {
              __copy_user(local_48,uVar6,uVar8);
            }
            iVar9 = MacTableLookup(param_1,pcVar7);
            if (iVar9 != 0) {
              local_48[0x65d] = (char)*(undefined2 *)(iVar9 + 0x27e);
              MlmeEnqueue(param_1,0xc,0,8,local_48,0);
              if (2 < RTDebugLevel) {
                printk("Set::OID_802_11_DEAUTHENTICATION (Reason=%d)\n",*(undefined2 *)(pcVar7 + 6))
                ;
              }
            }
            os_free_mem(0,local_48);
            return uVar8;
          }
          return 0xfffffff2;
        }
        return 0xffffffea;
      }
      if (uVar6 != 0x541) goto LAB_0008d544;
      pcVar3 = RTMPIoctlAddPMKIDCache;
    }
    else if (uVar6 == 0x544) {
      pcVar3 = RTMPIoctlStaticWepCopy;
    }
    else if (uVar6 < 0x544) {
      pcVar3 = RTMPIoctlAddWPAKey;
    }
    else {
      if (uVar6 != 0x545) goto LAB_0008d544;
      pcVar3 = RTMPIoctlSetIdleTimeout;
    }
    (*pcVar3)();
    return 0;
  }
  if (uVar6 == 0x406) {
    uVar6 = (uint)(ushort)param_2[1];
    if (((uVar6 + *param_2 | *param_2 | uVar6) & unaff_gp[6]) == 0) {
      __copy_user(&local_44);
    }
    if (uVar6 != 0) {
      return 0xfffffff2;
    }
    if (2 < RTDebugLevel) {
      printk("RT_SET_DEL_MAC_ENTRY::(%02x:%02x:%02x:%02x:%02x:%02x)\n",local_44,local_43,local_42,
             local_41,local_40,local_3f);
    }
    iVar9 = MacTableLookup(param_1,&local_44);
    if (iVar9 != 0) {
      MlmeDeAuthAction(param_1,iVar9,8,0);
      return 0;
    }
  }
  else {
    if (0x406 < uVar6) {
      if (uVar6 == 0x509) {
        if ((short)param_2[1] != 0x24) {
          return 0xffffffea;
        }
        uVar6 = *param_2;
        local_48 = (char *)0x0;
        uVar8 = 0x24;
        if (((uVar6 + 0x24 | uVar6 | 0x24) & unaff_gp[6]) == 0) {
          uVar8 = 0x24;
          __copy_user(&local_3c,uVar6,0x24);
        }
        if (0x20 < local_3c) {
          return 0xffffffea;
        }
        if (local_3c == 0) {
          return 0xffffffea;
        }
        os_alloc_mem(0,&local_48,0x21);
        if (local_48 != (char *)0x0) {
          memset(local_48,0,0x21)   //possible issue identified - semgrep
          memmove(local_48,auStack_38,local_3c)   //possible issue identified - semgrep
          memset((void *)((int)param_1 + *(int *)(iVar9 + 0xfc) * 0x1140 + 0x51b3),0,0x20)   //possible issue identified - semgrep
          pcVar4 = (char *)((int)param_1 + *(int *)(iVar9 + 0xfc) * 0x1140 + 0x51b3);
          pcVar7 = local_48;
          do {
            cVar1 = *pcVar7;
            pcVar7 = pcVar7 + 1;
            *pcVar4 = cVar1;
            pcVar4 = pcVar4 + 1;
          } while (cVar1 != '\0');
          iVar9 = *(int *)(iVar9 + 0xfc);
          sVar5 = strlen(local_48);
          *(char *)((int)param_1 + iVar9 * 0x1140 + 0x51b2) = (char)sVar5;
          os_free_mem(0,local_48);
          return uVar8;
        }
        return 0xfffffff4;
      }
      if (uVar6 == 0x510) {
        if ((short)param_2[1] != 4) {
          return 0xffffffea;
        }
        uVar6 = *param_2;
        uVar8 = 4;
        if (((uVar6 + 4 | uVar6) & unaff_gp[6]) == 0) {
          uVar8 = 4;
          __copy_user(&local_50,uVar6,4);
        }
        if (0xb < local_50) {
          return 0xffffffea;
        }
        if (param_1[*(int *)(iVar9 + 0xfc) * 0x450 + 0x1478] != local_50) {
          *(undefined1 *)(param_1 + 0x1da48) = 1;
        }
        param_1[*(int *)(iVar9 + 0xfc) * 0x450 + 0x1478] = local_50;
        iVar9 = *(int *)(iVar9 + 0xfc);
        if (param_1[iVar9 * 0x450 + 0x1478] == 8) {
          param_1[iVar9 * 0x450 + 0x1479] = 4;
        }
        else {
          param_1[iVar9 * 0x450 + 0x1479] = local_50;
        }
        APStop(param_1);
        APStartUp(param_1);
        if (2 < RTDebugLevel) {
          printk("Set::OID_802_11_WEP_STATUS (=%d)\n",local_50);
          return uVar8;
        }
        return uVar8;
      }
LAB_0008d544:
      if (2 < RTDebugLevel) {
        printk("Set::unknown IOCTL\'s subcmd = 0x%08x\n",param_3);
        return 0xffffff86;
      }
      return 0xffffff86;
    }
    if (uVar6 == 0x404) {
      uVar6 = (uint)(ushort)param_2[1];
      if (((uVar6 + *param_2 | *param_2 | uVar6) & unaff_gp[6]) == 0) {
        __copy_user(&local_48);
      }
      if (uVar6 != 0) {
        return 0xfffffff2;
      }
      *(undefined4 *)(iVar9 + 0xf0) = *(undefined4 *)(*unaff_gp + 0x138);
      *(char **)(iVar9 + 0xf4) = local_48;
      if (2 < RTDebugLevel) {
        pcVar7 = "RT_SET_APD_PID::(IappPid=%lu(0x%x))\n";
LAB_0008d0f4:
        printk(pcVar7,local_48);
        return 0;
      }
    }
    else {
      if (uVar6 != 0x405) goto LAB_0008d544;
      uVar6 = (uint)(ushort)param_2[1];
      if (((uVar6 + *param_2 | *param_2 | uVar6) & unaff_gp[6]) == 0) {
        __copy_user(&local_48);
      }
      if (uVar6 != 0) {
        return 0xfffffff2;
      }
      *(undefined4 *)(iVar9 + 0xe8) = *(undefined4 *)(*unaff_gp + 0x138);
      *(char **)(iVar9 + 0xec) = local_48;
      if (2 < RTDebugLevel) {
        pcVar7 = "RT_SET_APD_PID::(ApdPid=%lu(0x%x))\n";
        goto LAB_0008d0f4;
      }
    }
  }
  return 0;
}