void FUN_00401530(char *param_1,int param_2)
{
undefined2 uVar1;
int __fd;
hostent *phVar2;
char *pcVar3;
undefined4 uStack_688;
undefined1 auStack_98 [24];
int local_74;
ssize_t local_6c;
sockaddr local_58;
int local_48;
timeval local_44;
timeval local_3c;
sockaddr sStack_34;
socklen_t local_24;
undefined1 *local_20;
undefined4 *local_1c;
undefined4 local_18;
undefined4 local_14;
undefined4 local_10;
undefined4 local_c;
local_20 = auStack_98;
local_10 = 0x600;
local_c = 0;
local_18 = 0x600;
local_14 = 0;
local_48 = 0x40;
local_1c = &uStack_688;
__fd = socket(2,3,1);
if (__fd < 0) {
puts("SOCK BUG");
/* WARNING: Subroutine does not return */
exit(0);
}
memset(&local_58,0,0x10) //possible issue identified - semgrep
local_58.sa_family = 2;
phVar2 = gethostbyname(param_1);
if (phVar2 != (hostent *)0x0) {
memcpy(local_58.sa_data + 2,*phVar2->h_addr_list,4) //possible issue identified - semgrep
DAT_004148f0 = phVar2->h_name;
if (0 < local_48) {
setsockopt(__fd,0,2,&local_48,4);
}
memset(&uStack_688,0,0x600) //possible issue identified - semgrep
uStack_688 = CONCAT31(uStack_688._1_3_,8);
uVar1 = FUN_00400c20(&uStack_688,0x40);
uStack_688 = CONCAT22(uVar1,(undefined2)uStack_688);
local_6c = sendto(__fd,&uStack_688,0x40,0,&local_58,0x10);
if (param_2 != 0) {
gettimeofday(&local_44,(__timezone_ptr_t)0x0);
}
if ((local_6c < 0) || (local_6c != 0x40)) {
puts("sendto error");
}
signal(0xe,FUN_00401500) //possible issue identified - semgrep
alarm(3);
DAT_004148e8 = 0;
while( true ) {
local_24 = 0x10;
FUN_00400dc4(__fd);
local_74 = 0;
while ((local_74 < 1000 &&
(local_6c = recvfrom(__fd,&uStack_688,0x600,0,&sStack_34,&local_24), local_6c < 0))) {
usleep(1000);
local_74 = local_74 + 1;
}
if (param_2 != 0) {
gettimeofday(&local_3c,(__timezone_ptr_t)0x0);
if (local_3c.tv_usec - local_44.tv_usec < 0) {
local_3c.tv_sec = local_3c.tv_sec + -1;
local_3c.tv_usec = local_3c.tv_usec + 1000000;
}
if (local_3c.tv_sec - local_44.tv_sec < 1) {
TICKDELAY = local_3c.tv_usec - local_44.tv_usec;
}
else {
TICKDELAY = 999999;
}
}
if (local_6c < 0) break;
if ((0x37 < local_6c) &&
((pcVar3 = (char *)(&uStack_688 + (uStack_688 & 0xf)), *pcVar3 == '\0' || (*pcVar3 == '\v')
))) {
if (*pcVar3 == '\0') {
if (DAT_004148e0 != 0) {
printf("%s is alive!\n",DAT_004148f0);
}
}
else if ((*pcVar3 == '\v') && (DAT_004148e0 != 0)) {
puts("Time to live exceeded!");
}
return;
}
}
puts("OK....TIME OUT");
return;
}
puts("HOST BUG");
/* WARNING: Subroutine does not return */
exit(0);
}