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);
}