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

undefined4 main(int param_1,char **param_2)

{
  char *pcVar1;
  int iVar2;
  ssize_t sVar3;
  char *pcVar4;
  int *piVar5;
  int iVar6;
  socklen_t local_140;
  undefined1 auStack_13c [16];
  sockaddr local_12c;
  sockaddr sStack_11c;
  char acStack_10c [32];
  undefined1 auStack_ec [64];
  undefined1 auStack_ac [2];
  char local_aa;
  
  iVar6 = 0;
LAB_004010a8:
  do {
    iVar2 = getopt(param_1,param_2,"hi:f:r:")   //possible issue identified - semgrep
    pcVar4 = _optarg;
    if (iVar2 < 1) break;
    if (iVar2 == 0x69) {
      o_interface = _optarg;
      goto LAB_004010a8;
    }
    if (iVar2 == 0x72) {
      if (7 < iVar6) {
        printf("exceed max resolve %d ,ignore %s\n",8,_optarg);
        goto LAB_004010a8;
      }
      pcVar1 = strchr(_optarg,0x3a);
      if (pcVar1 == (char *)0x0) {
        pcVar4 = strdup(pcVar4)   //possible issue identified - semgrep
        (&o_namemap)[iVar6 * 2] = (int)pcVar4;
      }
      else {
        *pcVar1 = '\0';
        pcVar4 = strdup(_optarg)   //possible issue identified - semgrep
        (&o_namemap)[iVar6 * 2] = (int)pcVar4;
        *pcVar1 = ':';
        inet_aton(pcVar1 + 1,(in_addr *)(&DAT_004117c4 + iVar6 * 2));
        if ((&DAT_004117c4)[iVar6 * 2] == 0) {
          printf("ip parse error %s ignore this entry\n",pcVar1 + 1);
          goto LAB_004010a8;
        }
      }
      iVar6 = iVar6 + 1;
      goto LAB_004010a8;
    }
    FUN_00400ad0();
  } while( true );
  piVar5 = &o_namemap;
  if (o_interface == (char *)0x0) {
    pcVar4 = "error interface";
  }
  else {
    do {
      if ((*piVar5 != 0) && (piVar5[1] == 0)) {
        iVar6 = FUN_00400e7c(o_interface);
        piVar5[1] = iVar6;
        if (iVar6 == 0) {
          pcVar4 = "get if ip error";
          goto LAB_00401178;
        }
      }
      piVar5 = piVar5 + 2;
    } while (piVar5 != (int *)&_end);
    if ((o_namemap != 0) && (DAT_004117c4 != 0)) {
      iVar6 = socket(2,1,0);
      if (-1 < iVar6) {
        if (o_interface != (char *)0x0) {
          strncpy(acStack_10c,o_interface,0x10)   //possible issue identified - semgrep
          iVar2 = setsockopt(iVar6,0xffff,0x19,acStack_10c,0x20);
          if (iVar2 < 0) goto LAB_00401234;
        }
        local_12c.sa_family = 2;
        local_12c.sa_data[0] = '\0';
        local_12c.sa_data[1] = -0x77;
        local_12c.sa_data[2] = '\0';
        local_12c.sa_data[3] = '\0';
        local_12c.sa_data[4] = '\0';
        local_12c.sa_data[5] = '\0';
        local_12c.sa_data[6] = '\0';
        local_12c.sa_data[7] = '\0';
        local_12c.sa_data[8] = '\0';
        local_12c.sa_data[9] = '\0';
        local_12c.sa_data[10] = '\0';
        local_12c.sa_data[0xb] = '\0';
        local_12c.sa_data[0xc] = '\0';
        local_12c.sa_data[0xd] = '\0';
        iVar2 = bind(iVar6,&local_12c,0x10);
        if (-1 < iVar2) {
          do {
            do {
              do {
                local_140 = 0x10;
                sVar3 = recvfrom(iVar6,auStack_ac,0x80,0,&sStack_11c,&local_140)   //possible issue identified - semgrep
              } while (sVar3 < 0);
            } while (local_aa < '\0');
            FUN_00400a64(auStack_ac,auStack_13c);
            iVar2 = FUN_00400d88(auStack_13c,sStack_11c.sa_data._2_4_);
            if (iVar2 != 0) {
              FUN_00400bd8(auStack_ec,auStack_ac,auStack_13c,iVar2);
              sendto(iVar6,auStack_ec,0x3e,0,&sStack_11c,0x10);
            }
          } while( true );
        }
        close(iVar6);
      }
      goto LAB_00401234;
    }
    pcVar4 = "name map error";
  }
LAB_00401178:
  puts(pcVar4);
  FUN_00400ad0();
LAB_00401234:
  FUN_00400b70();
  return 0;
}