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