void FUN_00402b0c(int param_1,char *param_2,void *param_3,uint param_4)
{
int *piVar1;
ssize_t sVar2;
char *pcVar3;
uint uVar4;
int iVar5;
uint uVar6;
uint uVar7;
uint uVar8;
int iVar9;
undefined4 uVar10;
char *pcVar11;
sockaddr local_40;
uint local_30;
local_40.sa_data[0xc] = *(char *)((int)param_3 + 0x24);
local_40.sa_data[0xd] = *(char *)((int)param_3 + 0x25);
local_40.sa_data._6_2_ = *(undefined2 *)(param_2 + 0x24);
local_40.sa_data._2_4_ = *(undefined4 *)param_2;
local_40.sa_family = 0x11;
local_40.sa_data[0] = -0x7a;
local_40.sa_data[1] = -0x23;
local_40.sa_data[0xb] = '3';
local_30 = (uint)*(ushort *)((int)param_3 + 0x26);
local_40.sa_data[10] = '3';
local_40.sa_data[9] = '\x06';
local_40.sa_data[8] = '\0';
param_4 = param_4 & 0xffff;
piVar1 = __errno_location();
iVar5 = g_conf;
*piVar1 = 0;
sVar2 = sendto(*(int *)(iVar5 + 0x40),param_3,param_4,0,&local_40,0x14);
iVar5 = g_conf;
if (sVar2 < 0) {
iVar5 = *piVar1;
if (iVar5 == 6) {
dolog(7,"[%-5s] couldn\'t send %u bytes, received ENXIO, destroying interface %u\n",
param_2 + 4,param_4,*(undefined4 *)param_2);
int_destroy(param_2);
}
else {
pcVar11 = param_2 + 4;
uVar10 = *(undefined4 *)(param_2 + 0x18);
if (iVar5 == 0x61) {
pcVar3 = strerror(0x61);
dolog(7,"[%-5s] sending %u bytes failed, mtu = %u: %s (%d)\n",pcVar11,param_4,uVar10,pcVar3,
*piVar1);
DAT_0041a424 = 0;
FUN_00402080(param_2,1);
dolog(7,"[%-5s] after force update interface, now mtu = %u\n",pcVar11,
*(undefined4 *)(param_2 + 0x18));
if (param_1 != 0) {
if ((((*(int *)(param_1 + 0x44) == 0) && (*(int *)(param_1 + 0x48) == 0)) &&
(*(int *)(param_1 + 0x4c) == 0)) && (*(int *)(param_1 + 0x50) == 0)) {
dolog(7,
"[%-5s] prepare send ICMPv6 Packet Too Big with src is unspecified ... abrogating this action!!\n"
,pcVar11);
}
else if ((*(char *)((int)param_3 + 6) == ':') && (*(char *)((int)param_3 + 0x28) == -0x80)
) {
FUN_00402710(param_1,(int)param_3 + 8,2,0,param_3,param_4,
*(undefined4 *)(param_2 + 0x18));
}
}
}
else {
pcVar3 = strerror(iVar5);
dolog(7,"[%-5s] sending %u bytes failed, mtu = %u: %s (%d)\n",pcVar11,param_4,uVar10,pcVar3,
*piVar1);
}
}
}
else {
uVar6 = *(uint *)(g_conf + 0x58);
uVar4 = *(uint *)(g_conf + 0x68);
iVar9 = *(int *)(g_conf + 0x5c);
piVar1 = (int *)(g_conf + 0x6c);
uVar7 = uVar6 + 1;
uVar8 = uVar4 + param_4;
*(uint *)(g_conf + 0x68) = uVar8;
*(uint *)(iVar5 + 0x6c) = (uint)(uVar8 < uVar4) + *piVar1;
*(uint *)(iVar5 + 0x58) = uVar7;
*(uint *)(iVar5 + 0x5c) = (uint)(uVar7 < uVar6) + iVar9;
uVar4 = *(uint *)(param_2 + 0x70);
param_4 = uVar4 + param_4;
uVar6 = *(uint *)(param_2 + 0x60) + 1;
*(uint *)(param_2 + 100) = (uint)(uVar6 < *(uint *)(param_2 + 0x60)) + *(int *)(param_2 + 100);
*(uint *)(param_2 + 0x70) = param_4;
*(uint *)(param_2 + 0x74) = (uint)(param_4 < uVar4) + *(int *)(param_2 + 0x74);
*(uint *)(param_2 + 0x60) = uVar6;
}
return;
}