void FUN_00402710(undefined4 *param_1,void *param_2,undefined *param_3,undefined4 param_4,
void *param_5,uint param_6,uint param_7)
{
undefined **ppuVar1;
int iVar2;
undefined4 *puVar3;
int __fd;
undefined4 uVar4;
int *piVar5;
char *pcVar6;
ssize_t sVar7;
undefined **ppuVar8;
undefined **ppuVar9;
undefined4 uVar10;
undefined1 *__s;
char *pcVar11;
uint uVar12;
undefined1 auStack_80 [16];
socklen_t asStack_70 [6];
uint uStack_54;
undefined4 local_50;
undefined2 local_4c;
undefined2 local_4a;
undefined1 auStack_44 [20];
undefined4 *local_30;
undefined1 *local_2c;
local_2c = auStack_80;
if (0x4d0 < param_6) {
param_6 = 0x4d0;
}
uVar12 = (param_6 & 0xffff) + 0xb & 0xfffffffc;
iVar2 = -(uVar12 + 0xe & 0xfffffff8);
__s = auStack_44 + iVar2 + -0x14;
memset(__s,0,uVar12);
*(uint *)((int)&uStack_54 + iVar2) =
param_7 << 0x18 | param_7 >> 0x18 | param_7 >> 8 & 0xff00 | (param_7 & 0xff00) << 8;
*__s = (char)param_3;
auStack_44[iVar2 + -0x13] = (char)param_4;
memcpy((void *)((int)&local_50 + iVar2),param_5,param_6 & 0xffff) //possible issue identified - semgrep
__fd = socket(10,3,0x3a);
ppuVar9 = &PTR_s_Destination_Unreachable_0041a114;
if (__fd < 0) {
do {
pcVar11 = *ppuVar9;
if (pcVar11 == (char *)0x0) {
pcVar11 = "Unknown";
break;
}
ppuVar8 = ppuVar9 + -1;
ppuVar9 = ppuVar9 + 2;
} while (*ppuVar8 != param_3);
uVar4 = FUN_00401330(param_3,param_4);
piVar5 = __errno_location();
uVar10 = *param_1;
pcVar6 = strerror(*piVar5);
*(undefined4 *)((int)asStack_70 + iVar2) = uVar4;
*(undefined4 *)((int)asStack_70 + iVar2 + 4) = param_4;
*(undefined4 **)((int)asStack_70 + iVar2 + 8) = param_1 + 1;
*(undefined4 *)((int)asStack_70 + iVar2 + 0xc) = uVar10;
*(char **)((int)asStack_70 + iVar2 + 0x10) = pcVar6;
*(int *)((int)asStack_70 + iVar2 + 0x14) = *piVar5;
pcVar6 =
"Create icmpv6 socket to sending ICMPv6 Type %s (%u) code %s (%u) on %s/%u fail - %s (%d)\n";
}
else {
local_50 = 2;
*(undefined4 *)((int)asStack_70 + iVar2) = 4;
setsockopt(__fd,0xff,7,&local_50,*(socklen_t *)((int)asStack_70 + iVar2));
local_4c = 10;
memcpy(auStack_44,param_2,0x10) //possible issue identified - semgrep
ppuVar8 = ppuVar9;
do {
pcVar11 = *ppuVar8;
if (pcVar11 == (char *)0x0) {
pcVar11 = "Unknown";
break;
}
ppuVar1 = ppuVar8 + -1;
ppuVar8 = ppuVar8 + 2;
} while (*ppuVar1 != param_3);
local_4a = 0x3a00;
uVar4 = FUN_00401330(param_3,param_4);
local_30 = param_1 + 1;
*(undefined4 **)((int)asStack_70 + iVar2 + 8) = local_30;
*(undefined4 *)((int)asStack_70 + iVar2) = uVar4;
*(undefined4 *)((int)asStack_70 + iVar2 + 4) = param_4;
*(undefined4 *)((int)asStack_70 + iVar2 + 0xc) = *param_1;
dolog(7,"Sending ICMPv6 Type %s (%u) code %s (%u) on %s/%u\n",pcVar11,param_3);
*(undefined2 **)((int)asStack_70 + iVar2) = &local_4c;
*(undefined4 *)((int)asStack_70 + iVar2 + 4) = 0x1c;
sVar7 = sendto(__fd,__s,uVar12,0,*(sockaddr **)((int)asStack_70 + iVar2),
*(socklen_t *)((int)asStack_70 + iVar2 + 4));
if (-1 < sVar7) {
close(__fd);
iVar2 = g_conf;
uVar12 = *(uint *)(g_conf + 0x78) + 1;
*(uint *)(g_conf + 0x7c) = (uint)(uVar12 < *(uint *)(g_conf + 0x78)) + *(int *)(g_conf + 0x7c)
;
*(uint *)(iVar2 + 0x78) = uVar12;
uVar12 = param_1[0x20] + 1;
param_1[0x21] = (uint)(uVar12 < (uint)param_1[0x20]) + param_1[0x21];
param_1[0x20] = uVar12;
return;
}
do {
pcVar11 = *ppuVar9;
if (pcVar11 == (char *)0x0) {
pcVar11 = "Unknown";
break;
}
ppuVar8 = ppuVar9 + -1;
ppuVar9 = ppuVar9 + 2;
} while (*ppuVar8 != param_3);
uVar4 = FUN_00401330(param_3,param_4);
piVar5 = __errno_location();
uVar10 = *param_1;
pcVar6 = strerror(*piVar5);
*(undefined4 *)((int)asStack_70 + iVar2) = uVar4;
*(undefined4 *)((int)asStack_70 + iVar2 + 4) = param_4;
puVar3 = local_30;
*(undefined4 *)((int)asStack_70 + iVar2 + 0xc) = uVar10;
*(undefined4 **)((int)asStack_70 + iVar2 + 8) = puVar3;
*(char **)((int)asStack_70 + iVar2 + 0x10) = pcVar6;
*(int *)((int)asStack_70 + iVar2 + 0x14) = *piVar5;
pcVar6 = "Sending ICMPv6 Type %s (%u) code %s (%u) on %s/%u fail - %s (%d)\n";
}
dolog(3,pcVar6,pcVar11,param_3);
return;
}