/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined4 ntpclient_main(int param_1,char **param_2)

{
  float fVar1;
  int iVar2;
  hostent *phVar3;
  char *__format;
  char *pcVar4;
  int iVar5;
  int iVar6;
  uint uVar7;
  int iVar8;
  int iVar9;
  code *pcVar10;
  double dVar11;
  double dVar12;
  uint uVar13;
  uint in_fcsr;
  int local_110;
  int local_10c;
  float local_108;
  float local_104;
  undefined1 auStack_100 [4];
  float local_fc;
  addrinfo *local_f8;
  char local_f4 [12];
  undefined8 local_e8;
  sockaddr local_e0;
  addrinfo local_d0;
  char acStack_b0 [104];
  
  uVar7 = 0;
  iVar9 = 600;
  iVar8 = 0;
  iVar5 = 0;
  iVar6 = 0;
  pcVar4 = (char *)0x0;
LAB_00404124:
  do {
    iVar2 = getopt(param_1,param_2,"c:dh:i:lp:rst:46")   //possible issue identified - semgrep
    if (iVar2 == -1) {
      if (iVar5 != 0) {
        dVar12 = 0.0;
        iVar8 = 0;
        uVar13 = 0x41f00000;
        uVar7 = 0x3ef00000;
        iVar9 = 0;
        goto LAB_004044d8;
      }
      if (pcVar4 != (char *)0x0) {
        if (debug != 0) {
          printf("Configuration:\n  -c probe_count %d\n  -d (debug)     %d\n  -h hostname    %s\n  -i interval    %d\n  -l live        %d\n  -p local_port  %d\n  -s set_clock   %d\n  -t timediff    %d\n  -4 use_ipv4(default)\n  -6 use_ipv6\t\t\n"
                 ,iVar8,debug,pcVar4,iVar9,DAT_0041ce94,uVar7,DAT_0041ce98,DAT_0041ce9c);
        }
        if (iVar6 == 0) {
          iVar5 = socket(2,1,0x11);
          if (iVar5 == -1) {
LAB_004047c0:
            pcVar10 = perror;
            pcVar4 = "socket";
          }
          else {
            local_e0.sa_data[6] = '\0';
            local_e0.sa_data[7] = '\0';
            local_e0.sa_data[8] = '\0';
            local_e0.sa_data[9] = '\0';
            local_e0.sa_data[10] = '\0';
            local_e0.sa_data[0xb] = '\0';
            local_e0.sa_data[0xc] = '\0';
            local_e0.sa_data[0xd] = '\0';
            local_e0.sa_data._0_2_ =
                 (ushort)((uVar7 & 0xffff) << 8) | (ushort)((uVar7 & 0xffff) >> 8);
            local_e0.sa_family = 2;
            local_e0.sa_data[2] = '\0';
            local_e0.sa_data[3] = '\0';
            local_e0.sa_data[4] = '\0';
            local_e0.sa_data[5] = '\0';
            iVar6 = bind(iVar5,&local_e0,0x10);
            if (iVar6 == -1) {
              fprintf(_stderr,"could not bind to udp port %d\n",uVar7);
LAB_00404838:
              pcVar10 = perror;
              pcVar4 = "bind";
            }
            else {
              listen(iVar5,3);
              local_e0.sa_family = 2;
              local_e0.sa_data[0] = '\0';
              local_e0.sa_data[1] = '\0';
              local_e0.sa_data[2] = '\0';
              local_e0.sa_data[3] = '\0';
              local_e0.sa_data[4] = '\0';
              local_e0.sa_data[5] = '\0';
              local_e0.sa_data[6] = '\0';
              local_e0.sa_data[7] = '\0';
              local_e0.sa_data[8] = '\0';
              local_e0.sa_data[9] = '\0';
              local_e0.sa_data[10] = '\0';
              local_e0.sa_data[0xb] = '\0';
              local_e0.sa_data[0xc] = '\0';
              local_e0.sa_data[0xd] = '\0';
              phVar3 = gethostbyname(pcVar4);
              if (phVar3 == (hostent *)0x0) {
                pcVar10 = herror;
              }
              else {
                pcVar4 = (char *)phVar3->h_length;
                if (pcVar4 != (char *)0x4) {
                  __format = "oops %d\n";
                  goto LAB_004048b0;
                }
                memcpy(local_e0.sa_data + 2,*phVar3->h_addr_list,4)   //possible issue identified - semgrep
                local_e0.sa_data._0_2_ = 0x7b00;
                iVar6 = connect(iVar5,&local_e0,0x10);
                if (iVar6 != -1) {
LAB_0040492c:
                  FUN_00403250(iVar5,iVar8,iVar9);
                  close(iVar5);
                  return DAT_0041cb80;
                }
LAB_00404904:
                pcVar10 = perror;
                pcVar4 = "connect";
              }
            }
          }
        }
        else {
          memset(&local_d0,0,0x20)   //possible issue identified - semgrep
          local_d0.ai_family = 0;
          local_d0.ai_socktype = 1;
          local_d0.ai_flags = 1;
          local_f4[0] = '\0';
          local_f4[1] = '\0';
          local_f4[2] = '\0';
          local_f4[3] = '\0';
          local_f4[4] = '\0';
          local_f4[5] = '\0';
          sprintf(local_f4,"%d",uVar7)   //possible issue identified - semgrep
          iVar5 = getaddrinfo((char *)0x0,local_f4,&local_d0,&local_f8);
          if (iVar5 == 0) {
            iVar5 = socket(local_f8->ai_family,local_f8->ai_socktype,0);
            if (iVar5 == -1) goto LAB_004047c0;
            iVar6 = bind(iVar5,local_f8->ai_addr,local_f8->ai_addrlen);
            if (iVar6 != 0) goto LAB_00404838;
            freeaddrinfo(local_f8);
            listen(iVar5,3);
            memset(&local_d0,0,0x20)   //possible issue identified - semgrep
            local_d0.ai_socktype = 1;
            local_d0.ai_family = 0;
            local_f4[0] = '\0';
            local_f4[1] = '\0';
            local_f4[2] = '\0';
            local_f4[3] = '\0';
            local_f4[4] = '\0';
            local_f4[5] = '\0';
            sprintf(local_f4,"%d",0x7b)   //possible issue identified - semgrep
            iVar6 = getaddrinfo(pcVar4,local_f4,&local_d0,&local_f8);
            if (iVar6 == 0) {
              iVar6 = connect(iVar5,local_f8->ai_addr,local_f8->ai_addrlen);
              if (iVar6 == 0) {
                freeaddrinfo(local_f8);
                goto LAB_0040492c;
              }
              goto LAB_00404904;
            }
            pcVar4 = gai_strerror(iVar6);
            printf("getaddrinfo failed: %s",pcVar4);
            pcVar10 = perror;
            pcVar4 = "getaddrinfo 2";
          }
          else {
            pcVar4 = gai_strerror(iVar5);
            printf("getaddrinfo failed: %s",pcVar4);
            pcVar10 = perror;
            pcVar4 = "getaddrinfo";
          }
        }
        (*pcVar10)(pcVar4);
        goto LAB_00404918;
      }
      break;
    }
    if (iVar2 == 0x69) {
      iVar9 = atoi(_optarg);
      goto LAB_00404124;
    }
    if (0x69 < iVar2) {
      if (iVar2 == 0x72) {
        iVar5 = iVar5 + 1;
      }
      else if (iVar2 < 0x73) {
        if (iVar2 == 0x6c) {
          DAT_0041ce94 = DAT_0041ce94 + 1;
        }
        else {
          if (iVar2 != 0x70) break;
          iVar2 = atoi(_optarg);
          uVar7 = (uint)(short)iVar2;
        }
      }
      else if (iVar2 == 0x73) {
        iVar8 = 1;
        DAT_0041ce98 = DAT_0041ce98 + 1;
      }
      else {
        if (iVar2 != 0x74) break;
        DAT_0041ce9c = atoi(_optarg);
      }
      goto LAB_00404124;
    }
    if (iVar2 == 99) {
      iVar8 = atoi(_optarg);
      goto LAB_00404124;
    }
    if (iVar2 < 100) {
      if ((iVar2 != 0x34) && (iVar6 = iVar6 + 1, iVar2 != 0x36)) break;
      goto LAB_00404124;
    }
    if (iVar2 == 100) {
      debug = debug + 1;
      goto LAB_00404124;
    }
    pcVar4 = _optarg;
  } while (iVar2 == 0x68);
  pcVar4 = *param_2;
  __format = 
  "Usage: %s [-c count] [-d] -h hostname [-i interval] [-l]\n\t[-p port] [-r] [-s] [-t time-difference] [-4] [-6]\n"
  ;
LAB_004048b0:
  fprintf(_stderr,__format,pcVar4);
LAB_00404918:
  iVar8 = 1;
LAB_00404498:
                    /* WARNING: Subroutine does not return */
  exit(iVar8);
LAB_004044d8:
  pcVar4 = fgets(acStack_b0,100,_stdin)   //possible issue identified - semgrep
  if (pcVar4 == (char *)0x0) goto code_r0x004044fc;
  iVar5 = sscanf(acStack_b0,"%d %f %f %f %lf %f %d",&local_110,&local_108,&local_104,auStack_100,
                 &local_e8,&local_fc,&local_10c)   //possible issue identified - semgrep
  if (iVar5 != 7) {
    fputs("Replay input error\n",_stderr);
    iVar8 = 2;
    goto LAB_00404498;
  }
  fputs(acStack_b0,_stdout);
  if ((((in_fcsr | 3) ^ 2) & 3) == 0) {
    fVar1 = ROUND(local_108);
  }
  else {
    fVar1 = FLOOR(local_108);
  }
  iVar5 = local_110 * 0x15180 + (int)fVar1 + -0x4d59c200;
  if (debug != 0) {
    printf("contemplate %u %.1f %.1f %d\n",iVar5,(undefined4)local_e8,local_e8._4_4_,
           (double)(local_104 + local_fc),local_10c);
  }
  if (iVar9 == 0) {
    iVar8 = local_10c;
  }
  dVar11 = (double)(iVar5 - iVar9);
  if (iVar5 - iVar9 < 0) {
    dVar11 = dVar11 + (double)((ulonglong)uVar13 << 0x20);
  }
  dVar12 = dVar12 + dVar11 * (double)(local_10c - iVar8) * (double)((ulonglong)uVar7 << 0x20);
  if (debug != 0) {
    printf("fake %f %d \n");
  }
  local_e8 = local_e8 + dVar12;
  local_10c = iVar8;
  iVar8 = contemplate_data(iVar5);
  iVar9 = iVar5;
  goto LAB_004044d8;
code_r0x004044fc:
  iVar8 = 0;
  goto LAB_00404498;
}