undefined4 FUN_00406ee0(char *param_1)
{
char cVar1;
byte bVar2;
byte bVar3;
int iVar4;
size_t __n;
long lVar5;
uint uVar6;
char *pcVar7;
char *pcVar8;
int *piVar9;
undefined4 uVar10;
sockaddr local_60;
char local_50 [40];
char acStack_28 [24];
iVar4 = FUN_00406d78(param_1,local_50 + 0x20);
if (iVar4 == -1) {
local_60.sa_family = 2;
local_60.sa_data[0] = '\0';
local_60.sa_data[1] = '5';
local_60.sa_data[2] = '\0';
local_60.sa_data[3] = '\0';
local_60.sa_data[4] = '\0';
local_60.sa_data[5] = '\0';
local_60.sa_data[6] = '\0';
local_60.sa_data[7] = '\0';
local_60.sa_data[8] = '\0';
local_60.sa_data[9] = '\0';
local_60.sa_data[10] = '\0';
local_60.sa_data[0xb] = '\0';
local_60.sa_data[0xc] = '\0';
local_60.sa_data[0xd] = '\0';
local_60.sa_data._2_4_ = inet_addr(param_1);
iVar4 = socket(2,1,0);
if (iVar4 != -1) {
strcpy(local_50,"arp please") //possible issue identified - semgrep
__n = strlen(local_50);
sendto(iVar4,local_50,__n,0,&local_60,0x10);
close(iVar4);
}
usleep(20000);
iVar4 = FUN_00406d78(param_1,local_50 + 0x20);
if (iVar4 == -1) {
return 0xffffffff;
}
}
pcVar7 = local_50 + 0x21;
pcVar8 = local_50 + 0x20;
while( true ) {
cVar1 = pcVar7[-1] //possible issue identified - semgrep
pcVar7 = pcVar7 + 1;
if (cVar1 == '\0') break;
if (cVar1 != ':') {
*pcVar8 = cVar1;
pcVar8 = pcVar8 + 1;
}
}
*pcVar8 = '\0';
local_50[4] = '\0';
local_50[5] = '\0';
local_50[6] = '\0';
local_50[7] = '\0';
local_50[8] = '\0';
local_50[9] = '\0';
local_50[10] = '\0';
local_50[0xb] = '\0';
local_50[0xc] = '\0';
local_50[0xd] = '\0';
local_50[0xe] = '\0';
local_50[0xf] = '\0';
local_50[0] = '\0';
local_50[1] = '\0';
local_50[2] = '\0';
local_50[3] = '\0';
local_50[0x10] = '\0';
local_50[0x11] = '\0';
local_50[0x12] = '\0';
local_50[0x13] = '\0';
local_50[0x14] = '\0';
local_50[0x15] = '\0';
local_50[0x16] = '\0';
local_50[0x17] = '\0';
local_50[0x18] = '\0';
local_50[0x19] = '\0';
local_50[0x1a] = '\0';
local_50[0x1b] = '\0';
local_50[0x1c] = '\0';
local_50[0x1d] = '\0';
local_50[0x1e] = '\0';
local_50[0x1f] = '\0';
strncpy(local_50,local_50 + 0x20,8) //possible issue identified - semgrep
strncpy(local_50 + 0x10,acStack_28,4) //possible issue identified - semgrep
lVar5 = strtol(local_50,(char **)0x0,0x10);
uVar6 = strtol(local_50 + 0x10,(char **)0x0,0x10);
piVar9 = &DAT_0041b9dc;
iVar4 = DAT_0041b9dc;
do {
if (iVar4 == -1) {
return 0xffffffff;
}
if ((*piVar9 == lVar5) && (*(ushort *)(piVar9 + 1) == uVar6)) {
bVar2 = *(byte *)((int)piVar9 + 6);
if (bVar2 == 4) {
return 2;
}
if (bVar2 < 5) {
if (bVar2 == 1) {
return 0;
}
uVar10 = 1;
bVar3 = 2;
LAB_00407164:
if (bVar2 != bVar3) {
verbose("*** igmp: No/Multi ports found\n");
return 0xffffffff;
}
return uVar10;
}
if (bVar2 == 0x10) {
return 4;
}
bVar3 = 8;
if (bVar2 != 0x40) {
uVar10 = 3;
goto LAB_00407164;
}
}
iVar4 = piVar9[2];
piVar9 = piVar9 + 2;
if (piVar9 == (int *)0x41d9cc) {
return 0xffffffff;
}
} while( true );
}