undefined4 FUN_004013b0(void)

{
  undefined *puVar1;
  int ***pppiVar2;
  undefined4 uVar3;
  int iVar4;
  int iVar5;
  int ***pppiVar6;
  int *piVar7;
  int ***pppiVar8;
  int iVar9;
  int ****ppppiVar10;
  undefined **ppuVar11;
  uint uVar12;
  int local_1c0 [2];
  int ***local_1b8;
  int ***local_1b4;
  char local_1b0 [128];
  char acStack_130 [128];
  undefined1 auStack_b0 [128];
  int local_30;
  
  memset(local_1b0,0,0x80)   //possible issue identified - semgrep
  memset(acStack_130,0,0x80)   //possible issue identified - semgrep
  memset(auStack_b0,0,0x80)   //possible issue identified - semgrep
  local_30 = iw_sockets_open()   //possible issue identified - semgrep
  uVar3 = 0xffffffff;
  if (-1 < local_30) {
    uVar3 = (*FP_GetChannel)(local_30,DAT_004176f4);
    sprintf(acStack_130,"%d",uVar3)   //possible issue identified - semgrep
    FUN_00401114(DAT_004176f8,"media/channel",acStack_130);
    if (DAT_004176fc != 0) {
      FUN_00401114(DAT_004176fc,"media/channel",acStack_130);
    }
    iVar4 = atoi(acStack_130);
    memset(local_1b0,0,0x80)   //possible issue identified - semgrep
    sprintf(local_1b0,"%s/%s",DAT_00417700,"media/dot11n/bandwidth")   //possible issue identified - semgrep
    xmldbc_get_wb(0,0,local_1b0,acStack_130,0x80);
    iVar5 = strncmp(acStack_130,"20+40",5);
    iVar9 = iVar4;
    if (iVar5 == 0) {
      memset(acStack_130,0,0x80)   //possible issue identified - semgrep
      iVar9 = iVar4 + -2;
      if (iVar4 < 5) {
        iVar9 = iVar4 + 2;
      }
    }
    sprintf(acStack_130,"%d",iVar9)   //possible issue identified - semgrep
    FUN_00401114(DAT_004176f8,"media/dot11n/centralchannel",acStack_130);
    if (DAT_004176fc != 0) {
      FUN_00401114(DAT_004176fc,"media/dot11n/centralchannel",acStack_130);
    }
    uVar3 = DAT_004176f4;
    local_1b8 = (int ***)&local_1b8;
    local_1b4 = (int ***)&local_1b8;
    while (puVar1 = PTR_LOOP_00417550, (undefined **)PTR_LOOP_00417550 != &PTR_LOOP_00417550) {
      iVar9 = *(int *)PTR_LOOP_00417550;
      piVar7 = *(int **)(PTR_LOOP_00417550 + 4);
      *piVar7 = iVar9;
      *(undefined4 *)puVar1 = 0;
      *(int **)(iVar9 + 4) = piVar7;
      *(int ****)puVar1 = local_1b8;
      local_1b8[1] = (int **)puVar1;
      local_1b8 = (int ***)puVar1;
      *(int *****)(puVar1 + 4) = &local_1b8;
    }
    (*FP_GetClist)(local_30,uVar3,&PTR_LOOP_00417550);
    pppiVar2 = local_1b8;
    for (ppuVar11 = (undefined **)PTR_LOOP_00417550; ppuVar11 != &PTR_LOOP_00417550;
        ppuVar11 = (undefined **)*ppuVar11) {
      pppiVar6 = (int ***)ppuVar11[9];
      for (ppppiVar10 = (int ****)pppiVar2; ppppiVar10 != &local_1b8;
          ppppiVar10 = (int ****)*ppppiVar10) {
        iVar9 = memcmp(ppppiVar10 + 3,ppuVar11 + 3,6);
        if ((iVar9 == 0) && (ppppiVar10[9] == pppiVar6)) {
          pppiVar6 = ppppiVar10[2];
          ppuVar11[10] = (undefined *)0x1;
          ppuVar11[2] = (undefined *)pppiVar6;
          break;
        }
      }
    }
    while (pppiVar2 = local_1b8, (int ****)local_1b8 != &local_1b8) {
      pppiVar8 = (int ***)local_1b8[1];
      pppiVar6 = (int ***)*local_1b8;
      *pppiVar8 = (int **)pppiVar6;
      pppiVar6[1] = (int **)pppiVar8;
      *local_1b8 = (int **)0x0;
      pppiVar2[1] = (int **)0x0;
      free(pppiVar2);
    }
    local_1c0[0] = 0;
    local_1c0[1] = 0;
    for (ppuVar11 = (undefined **)PTR_LOOP_00417550; ppuVar11 != &PTR_LOOP_00417550;
        ppuVar11 = (undefined **)*ppuVar11) {
      uVar12 = (uint)ppuVar11[9] & (int)~(uint)ppuVar11[9] >> 0x1f;
      iVar9 = (&DAT_004176f8)[uVar12];
      if (iVar9 == 0) {
        iVar4 = local_1c0[0] + 1;
        iVar9 = DAT_004176f8;
        local_1c0[0] = iVar4;
      }
      else {
        iVar4 = local_1c0[uVar12] + 1;
        local_1c0[uVar12] = iVar4;
      }
      memset(local_1b0,0,0x80)   //possible issue identified - semgrep
      memset(acStack_130,0,0x80)   //possible issue identified - semgrep
      sprintf(local_1b0,"%s:%d/%s","media/clients/entry",iVar4,"macaddr")   //possible issue identified - semgrep
      sprintf(acStack_130,"%02X:%02X:%02X:%02X:%02X:%02X",(uint)*(byte *)(ppuVar11 + 3),
              (uint)*(byte *)((int)ppuVar11 + 0xd),(uint)*(byte *)((int)ppuVar11 + 0xe),
              (uint)*(byte *)((int)ppuVar11 + 0xf),(uint)*(byte *)(ppuVar11 + 4),
              (uint)*(byte *)((int)ppuVar11 + 0x11))   //possible issue identified - semgrep
      FUN_00401114(iVar9,local_1b0,acStack_130);
      memset(local_1b0,0,0x80)   //possible issue identified - semgrep
      memset(acStack_130,0,0x80)   //possible issue identified - semgrep
      sprintf(local_1b0,"%s:%d/%s","media/clients/entry",iVar4,"uptime")   //possible issue identified - semgrep
      sprintf(acStack_130,"%lu",ppuVar11[2])   //possible issue identified - semgrep
      FUN_00401114(iVar9,local_1b0,acStack_130);
      memset(local_1b0,0,0x80)   //possible issue identified - semgrep
      memset(acStack_130,0,0x80)   //possible issue identified - semgrep
      sprintf(local_1b0,"%s:%d/%s","media/clients/entry",iVar4,&DAT_00406754)   //possible issue identified - semgrep
      sprintf(acStack_130,"%u",ppuVar11[0xb])   //possible issue identified - semgrep
      FUN_00401114(iVar9,local_1b0,acStack_130);
      memset(local_1b0,0,0x80)   //possible issue identified - semgrep
      memset(acStack_130,0,0x80)   //possible issue identified - semgrep
      memset(auStack_b0,0,0x80)   //possible issue identified - semgrep
      sprintf(local_1b0,"%s:%d/%s","media/clients/entry",iVar4,&DAT_00406760)   //possible issue identified - semgrep
      (*FP_GetBandRate)(acStack_130,auStack_b0,ppuVar11);
      FUN_00401114(iVar9,local_1b0,acStack_130);
      memset(local_1b0,0,0x80)   //possible issue identified - semgrep
      sprintf(local_1b0,"%s:%d/%s","media/clients/entry",iVar4,&DAT_00406768)   //possible issue identified - semgrep
      FUN_00401114(iVar9,local_1b0,auStack_b0);
      if ((DAT_0041770c != 0) && (ppuVar11[10] == (undefined *)0x0)) {
        sprintf(acStack_130,"%s NEW_CLIENT %d %02X:%02X:%02X:%02X:%02X:%02X",DAT_0041770c,uVar12,
                (uint)*(byte *)(ppuVar11 + 3),(uint)*(byte *)((int)ppuVar11 + 0xd),
                (uint)*(byte *)((int)ppuVar11 + 0xe),(uint)*(byte *)((int)ppuVar11 + 0xf),
                (uint)*(byte *)(ppuVar11 + 4),(uint)*(byte *)((int)ppuVar11 + 0x11))   //possible issue identified - semgrep
        system(acStack_130)   //possible issue identified - semgrep
      }
    }
    FUN_004011c4(DAT_004176f8,local_1c0[0] + 1);
    if (DAT_004176fc != 0) {
      FUN_004011c4(DAT_004176fc,local_1c0[1] + 1);
    }
    close(local_30);
    uVar3 = 0;
  }
  return uVar3;
}