void FUN_00404c14(undefined4 *param_1,void *param_2,undefined *param_3,undefined4 param_4,
void *param_5,size_t param_6)
{
undefined **ppuVar1;
int iVar2;
undefined4 uVar3;
undefined **ppuVar4;
char *pcVar5;
uint uVar6;
uint uVar7;
undefined1 local_630 [4];
ushort local_62c;
undefined1 local_62a;
undefined1 local_629;
undefined1 auStack_628 [16];
undefined1 auStack_618 [16];
undefined1 local_608;
undefined1 local_607;
undefined2 local_606;
undefined1 auStack_604 [1508];
uVar7 = param_6 & 0xffff;
memset(local_630,0,0x60c) //possible issue identified - semgrep
uVar6 = uVar7 + 4 & 0xffff;
local_62c = (ushort)(uVar6 << 8) | (ushort)(uVar6 >> 8);
local_630[0] = 0x60;
local_62a = 0x3a;
local_629 = 0x40;
memcpy(auStack_628,param_1 + 0x11,0x10) //possible issue identified - semgrep
memcpy(auStack_618,param_2,0x10) //possible issue identified - semgrep
local_608 = SUB41(param_3,0);
local_607 = (undefined1)param_4;
if (0x5dc < param_6) {
param_6 = 0x5dc //possible issue identified - semgrep
}
memcpy(auStack_604,param_5,param_6) //possible issue identified - semgrep
local_606 = FUN_004011e0(local_630,0x3a,&local_608,uVar6);
ppuVar4 = &PTR_s_Destination_Unreachable_0041a114;
do {
pcVar5 = *ppuVar4;
if (pcVar5 == (char *)0x0) {
pcVar5 = "Unknown";
break;
}
ppuVar1 = ppuVar4 + -1;
ppuVar4 = ppuVar4 + 2;
} while (*ppuVar1 != param_3);
uVar3 = FUN_00401330(param_3,param_4);
dolog(7,"Sending ICMPv6 Type %s (%u) code %s (%u) on %s/%u\n",pcVar5,param_3,uVar3,param_4,
param_1 + 1,*param_1);
FUN_00402b0c(0,param_1,local_630,uVar7 + 0x2c & 0xffff);
iVar2 = g_conf;
uVar6 = *(uint *)(g_conf + 0x78) + 1;
*(uint *)(g_conf + 0x7c) = (uint)(uVar6 < *(uint *)(g_conf + 0x78)) + *(int *)(g_conf + 0x7c);
*(uint *)(iVar2 + 0x78) = uVar6;
uVar6 = param_1[0x20] + 1;
param_1[0x21] = (uint)(uVar6 < (uint)param_1[0x20]) + param_1[0x21];
param_1[0x20] = uVar6;
return;
}