/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
undefined4 main(int param_1,char **param_2)
{
int iVar1;
size_t sVar2;
int *piVar3;
ssize_t sVar4;
char *pcVar5;
undefined4 uVar6;
char *pcVar7;
uint uVar8;
int iVar9;
int local_b0;
fd_set local_ac;
pipe((int *)&signal_pipe) //possible issue identified - semgrep
signal(0xf,FUN_00401c94) //possible issue identified - semgrep
signal(0x10,FUN_00401c94) //possible issue identified - semgrep
signal(0x11,FUN_00401c94) //possible issue identified - semgrep
DAT_00414b4c = "ToBeOrNotToBe";
o_name = "ToBeOrNotToBe";
DAT_00414b44 = "ToBeOrNotToBe";
DAT_00414b48 = "ToBeOrNotToBe";
iVar9 = 0;
LAB_004016a0:
iVar1 = getopt(param_1,param_2,"hvi:p:r:") //possible issue identified - semgrep
if (0 < iVar1) {
uVar6 = 0xffffffff;
switch(iVar1) {
case 0x68:
uVar6 = 0;
break;
case 0x69:
o_interface = _optarg;
goto LAB_004016a0;
case 0x6a:
case 0x6b:
case 0x6c:
case 0x6d:
case 0x6e:
case 0x6f:
case 0x71:
case 0x73:
case 0x74:
case 0x75:
uVar6 = 0xffffffff;
break;
case 0x70:
o_ifinet6 = _optarg;
goto LAB_004016a0;
case 0x72:
if (iVar9 < 4) {
(&o_name)[iVar9] = _optarg;
iVar9 = iVar9 + 1;
}
else {
printf("exceed max resolv %d ,ignore %s\n",4,_optarg);
}
goto LAB_004016a0;
case 0x76:
goto switchD_00401614_caseD_76;
}
FUN_00400e80(uVar6);
goto LAB_004016a0;
}
iVar9 = msock_init();
if (iVar9 < 0) {
verbose("%s: msock_init() fail!\n",&DAT_0040445c);
return 1;
}
verbose("******************************************************************\n");
verbose("%s: o_interface=\"%s\"\n",&DAT_0040445c,o_interface);
pcVar5 = o_name;
sVar2 = strlen(o_name);
verbose("%s: o_name=\"%s\" (%u)\n",&DAT_0040445c,pcVar5,sVar2);
pcVar5 = DAT_00414b44;
sVar2 = strlen(DAT_00414b44);
verbose("%s: o_name=\"%s\" (%u)\n",&DAT_0040445c,pcVar5,sVar2);
pcVar5 = DAT_00414b48;
sVar2 = strlen(DAT_00414b48);
verbose("%s: o_name=\"%s\" (%u)\n",&DAT_0040445c,pcVar5,sVar2);
pcVar5 = DAT_00414b4c;
sVar2 = strlen(DAT_00414b4c);
verbose("%s: o_name=\"%s\" (%u)\n",&DAT_0040445c,pcVar5,sVar2);
verbose("%s: o_ifinet6=\"%s\"\n",&DAT_0040445c,o_ifinet6);
verbose("%s: o_verbose=%d\n",&DAT_0040445c,DAT_00414b30);
verbose("%s: msockfd4=%d\n",&DAT_0040445c,msockfd4);
verbose("%s: msockfd6=%d\n",&DAT_0040445c,msockfd6);
verbose("%s: signal_pipe[0]=%d\n",&DAT_0040445c,signal_pipe);
verbose("%s: signal_pipe[1]=%d\n",&DAT_0040445c,DAT_00414b00);
verbose("******************************************************************\n");
if (((((int)signal_pipe < 0) || (DAT_00414b00 < 0)) || ((int)msockfd4 < 0)) || ((int)msockfd6 < 0)
) {
verbose("%s: fd_check() fail!! signal_pipe[0]=%d, signal_pipe[1]=%d, msockfd4=%d, msockfd6=%d\n"
,"fd_check",signal_pipe,DAT_00414b00,msockfd4,msockfd6);
msock_deinit();
iVar9 = -1;
LAB_00401be0:
/* WARNING: Subroutine does not return */
exit(iVar9);
}
uVar8 = 0;
LAB_00401954:
for (; uVar8 < 0x20; uVar8 = uVar8 + 1) {
local_ac.fds_bits[uVar8] = 0;
}
local_ac.fds_bits[signal_pipe >> 5] =
local_ac.fds_bits[signal_pipe >> 5] | 1 << (signal_pipe & 0x1f);
local_ac.fds_bits[msockfd4 >> 5] = local_ac.fds_bits[msockfd4 >> 5] | 1 << (msockfd4 & 0x1f);
local_ac.fds_bits[msockfd6 >> 5] = local_ac.fds_bits[msockfd6 >> 5] | 1 << (msockfd6 & 0x1f);
uVar8 = msockfd4;
if ((int)msockfd4 < (int)signal_pipe) {
uVar8 = signal_pipe;
}
if ((int)uVar8 < (int)msockfd6) {
uVar8 = msockfd6;
}
iVar9 = select(uVar8 + 1,&local_ac,(fd_set *)0x0,(fd_set *)0x0,(timeval *)0x0);
if (iVar9 == 0) {
pcVar7 = "%s: ?? seconds elapsed. \n";
pcVar5 = "main";
}
else {
if (iVar9 < 0) {
piVar3 = __errno_location();
if (*piVar3 != 4) {
verbose("%s: select() fail!\n",&DAT_0040445c);
msock_deinit();
return 0xffffffff;
}
pcVar7 = "%s: got signale but res < 0\n";
pcVar5 = "main";
goto LAB_00401b9c;
}
if (((uint)local_ac.fds_bits[signal_pipe >> 5] >> (signal_pipe & 0x1f) & 1) == 0) {
if (((uint)local_ac.fds_bits[msockfd4 >> 5] >> (msockfd4 & 0x1f) & 1) != 0) {
max_udp_pdu_size = 0x5c0;
LAB_00401c50:
FUN_004012c4();
goto LAB_00401c58;
}
if (((uint)local_ac.fds_bits[msockfd6 >> 5] >> (msockfd6 & 0x1f) & 1) != 0) {
max_udp_pdu_size = 0x5ac;
goto LAB_00401c50;
}
LAB_00401950:
uVar8 = 0;
goto LAB_00401954;
}
sVar4 = read(signal_pipe,&local_b0,4) //possible issue identified - semgrep
iVar9 = local_b0;
if (sVar4 < 0) {
piVar3 = __errno_location();
pcVar5 = strerror(*piVar3);
verbose("%s: Could not read signal: %s",&DAT_0040445c,pcVar5);
goto LAB_00401c58;
}
pcVar5 = "SIGUSR1";
if ((local_b0 != 0x10) && (pcVar5 = "SIGTERM", local_b0 == 0x11)) {
pcVar5 = "SIGUSR2";
}
verbose("%s: process signal -- [%s]\n","process_sig",pcVar5);
if (iVar9 != 0x10) {
if (iVar9 == 0x11) {
pcVar7 = "%s: sig_usr2()\n";
pcVar5 = "sig_usr2";
goto LAB_00401b9c;
}
if (iVar9 != 0xf) goto LAB_00401950;
verbose("%s: sig_term()\n","sig_term");
msock_deinit();
iVar9 = 0;
goto LAB_00401be0;
}
pcVar7 = "%s: sig_usr1()\n";
pcVar5 = "sig_usr1";
}
LAB_00401b9c:
verbose(pcVar7,pcVar5);
LAB_00401c58:
uVar8 = 0;
goto LAB_00401954;
switchD_00401614_caseD_76:
DAT_00414b30 = DAT_00414b30 + 1;
goto LAB_004016a0;
}