/* 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;
}