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;
}