undefined4 main(int param_1,int param_2)

{
  size_t sVar1;
  int iVar2;
  int local_190;
  int local_18c;
  int local_188;
  int local_184;
  undefined4 local_180;
  char acStack_17c [100];
  char acStack_118 [100];
  char acStack_b4 [140];
  int local_28 [2];
  int local_20;
  int local_14;
  int local_10;
  int local_c;
  
  local_18c = 0x100000;
  nice(0xf);
  DAT_004148e0 = 0;
  DAT_004148e4 = 0;
  if ((1 < param_1) && (**(char **)(param_2 + 4) == 'D')) {
    DAT_004148e0 = 1;
  }
  if ((1 < param_1) && (*(char *)(*(int *)(param_2 + 4) + 1) != '\0')) {
    DAT_004148e4 = 1;
  }
  FUN_004026f0();
  for (local_180 = 0; iVar2 = DAT_00414470, (int)local_180 < DAT_00414470; local_180 = local_180 + 1
      ) {
    FUN_00401d40("16.17.18.19",0x40,local_180 + 2);
    FUN_00401d40("16.17.18.19",0x40,local_180 + 2);
    *(undefined4 *)(IPARRAY + local_180 * 0x10) = IPTMP;
    *(undefined4 *)(IPARRAY + (local_180 * 4 + 1) * 4) = DAT_00414a94;
    *(undefined4 *)(IPARRAY + (local_180 * 2 + 1) * 8) = DAT_00414a98;
    *(undefined4 *)(IPARRAY + local_180 * 0x10 + 0xc) = DAT_00414a9c;
  }
  do {
    local_180 = iVar2 + -1;
    if ((int)local_180 < 0) break;
    local_188 = local_180;
    iVar2 = local_180;
  } while ((*(int *)(IPARRAY + local_180 * 0x10) != 0xc0) ||
          (*(int *)(IPARRAY + (local_180 * 4 + 1) * 4) != 0xa8));
  if ((int)local_180 < 0) {
    local_188 = 0;
  }
  else {
    local_188 = local_188 + 1;
  }
  iVar2 = local_188 + 1;
  sprintf(IPTMP2,"%i.%i.%i.%i",*(undefined4 *)(IPARRAY + iVar2 * 0x10),
          *(undefined4 *)(IPARRAY + (iVar2 * 4 + 1) * 4),
          *(undefined4 *)(IPARRAY + (iVar2 * 2 + 1) * 8),
          *(undefined4 *)(IPARRAY + iVar2 * 0x10 + 0xc))   //possible issue identified - semgrep
  iVar2 = local_188 + 2;
  sprintf(IPTMP3,"%i.%i.%i.%i",*(undefined4 *)(IPARRAY + iVar2 * 0x10),
          *(undefined4 *)(IPARRAY + (iVar2 * 4 + 1) * 4),
          *(undefined4 *)(IPARRAY + (iVar2 * 2 + 1) * 8),
          *(undefined4 *)(IPARRAY + iVar2 * 0x10 + 0xc))   //possible issue identified - semgrep
  puts("BIG ENDIAN SYSTEM");
  local_20 = DAT_004148e4;
  if (DAT_004148e4 == 0) {
    FUN_004029dc();
    for (local_180 = 0; (int)local_180 < 10; local_180 = local_180 + 1) {
      FUN_00401530(IPTMP3,1);
      FUN_00402a40(TICKDELAY);
    }
    for (local_184 = 0; local_184 < 0x14; local_184 = local_184 + 1) {
      if (local_184 == 0) {
        local_190 = 1000;
      }
      else {
        local_190 = FUN_00402b04(local_190,TICKDELAY);
      }
      if (local_190 < 1) break;
      local_18c = TICKRATE;
      printf("try [%i]%i ......\n",local_184,local_190);
      strcpy(acStack_17c,IPTMP2)   //possible issue identified - semgrep
      local_180 = strlen(acStack_17c);
      do {
        sVar1 = local_180;
        local_180 = sVar1 - 1;
        if ((int)local_180 < 1) goto LAB_00403bd0;
      } while (acStack_17c[sVar1 - 1] != '.');
      acStack_17c[sVar1 - 1] = '\0';
LAB_00403bd0:
      sprintf(acStack_118,"%s.1",acStack_17c)   //possible issue identified - semgrep
      if (DAT_004148e0 != 0) {
        printf("%s.xxx and %s\n",acStack_118,IPTMP3);
      }
      FUN_00401530(IPTMP3,0);
      gettimeofday((timeval *)&TICK1,(__timezone_ptr_t)0x0);
      FUN_00400e4c(acStack_118,local_190);
      FUN_00401530(IPTMP3,1);
      gettimeofday((timeval *)&TICK2,(__timezone_ptr_t)0x0);
      if (local_190 < 400) {
        TICKRATE = FUN_00402f60(local_190);
      }
      else {
        TICKRATE = (TICKTOTAL << 3) / (TICK2 - TICK1);
        if (TICK2 - TICK1 == 0) {
          trap(0x1c00);
        }
      }
      if (DAT_004148e0 != 0) {
        printf("RUN %i TIMES\n",TICKCOUNT);
      }
      if (DAT_004148e0 != 0) {
        printf("RATE IS %i\n",TICKRATE);
      }
      usleep(1000000);
    }
    FUN_00400e4c(acStack_118,1000);
    local_14 = local_18c;
    if (local_18c < 0) {
      local_14 = local_18c + 0x3ff;
    }
    printf("Bandwidth is %i \n",local_14 >> 10);
    local_10 = local_18c;
    if (local_18c < 0) {
      local_10 = local_18c + 0x3ff;
    }
    sprintf(acStack_b4,"rgdb -s /qos/bandwidth/upstream %i;submit QOS",local_10 >> 10)   //possible issue identified - semgrep
    local_c = local_18c;
    if (local_18c < 0) {
      local_c = local_18c + 0x3ff;
    }
    sprintf(acStack_b4,"xmldbc -s /runtime/device/qos/bwup %i;service QOS restart",local_c >> 10)   //possible issue identified - semgrep
    system(acStack_b4)   //possible issue identified - semgrep
  }
  else if (DAT_004148e4 == 1) {
    for (local_180 = 0; (int)local_180 < 10; local_180 = local_180 + 1) {
      FUN_00401530(IPTMP3,1);
    }
    while( true ) {
      printf("NNN=");
      scanf("%i",local_28)   //possible issue identified - semgrep
      if (local_28[0] < 1) break;
      if (local_28[0] == 1) {
        for (local_180 = 0; (int)local_180 < 0x14; local_180 = local_180 + 1) {
          FUN_00401530(IPTMP3,1);
        }
      }
      else {
        strcpy(acStack_17c,IPTMP2)   //possible issue identified - semgrep
        local_180 = strlen(acStack_17c);
        do {
          sVar1 = local_180;
          local_180 = sVar1 - 1;
          if ((int)local_180 < 1) goto LAB_00403810;
        } while (acStack_17c[sVar1 - 1] != '.');
        acStack_17c[sVar1 - 1] = '\0';
LAB_00403810:
        sprintf(acStack_118,"%s.1",acStack_17c)   //possible issue identified - semgrep
        if (DAT_004148e0 != 0) {
          printf("%s.xxx and %s\n",acStack_118,IPTMP3);
        }
        FUN_00401530(IPTMP3,0);
        gettimeofday((timeval *)&TICK1,(__timezone_ptr_t)0x0);
        FUN_00400e4c(acStack_118,local_28[0]);
        FUN_00401530(IPTMP3,1);
        gettimeofday((timeval *)&TICK2,(__timezone_ptr_t)0x0);
        if (local_28[0] < 400) {
          TICKRATE = FUN_00402f60(local_28[0]);
        }
        else {
          TICKRATE = (TICKTOTAL << 3) / (TICK2 - TICK1);
          if (TICK2 - TICK1 == 0) {
            trap(0x1c00);
          }
        }
        if (DAT_004148e0 != 0) {
          printf("RUN %i TIMES\n",TICKCOUNT);
        }
        if (DAT_004148e0 != 0) {
          printf("RATE IS %i\n",TICKRATE);
        }
      }
    }
  }
  return 0;
}