undefined4
FUN_00406b14(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,int *param_5,
            int param_6,undefined4 param_7,int param_8)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  uint uVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  char *pcVar7;
  int *piVar8;
  void *__s1;
  short local_140 [2];
  undefined4 local_13c;
  undefined4 *local_138;
  undefined1 auStack_130 [8];
  undefined1 auStack_128 [40];
  undefined1 auStack_100 [16];
  undefined1 auStack_f0 [184];
  void *local_38;
  int *local_34;
  undefined1 *local_30;
  
  local_140[0] = 0;
  if (param_5[2] != 0) {
    dprintf(6,"react_confirm","server ID option found");
    return 0xffffffff;
  }
  local_30 = auStack_130;
  if (*param_5 == 0) {
    dprintf(6,"react_confirm","no client ID option");
    return 0xffffffff;
  }
  dhcp6_init_options(local_30);
  iVar1 = duidcpy(auStack_128,&DAT_0043a634);
  if (iVar1 == 0) {
    iVar1 = duidcpy(local_30,param_5);
    if (iVar1 == 0) {
      iVar1 = find_hostconf(param_5);
      if (iVar1 != 0) {
        dprintf(7,"react_confirm","found a host configuration named %s",*(undefined4 *)(iVar1 + 4));
      }
      iVar2 = FUN_00403aac(param_3,param_4,iVar1,param_5,local_30);
      if (iVar2 != 0) {
        if (iVar1 == 0) {
          uVar5 = duidstr(param_5);
        }
        else {
          uVar5 = *(undefined4 *)(iVar1 + 4);
        }
        dprintf(6,"react_confirm","failed to process authentication information for %s",uVar5);
        goto LAB_00406be8;
      }
      if (iVar1 == 0) {
        if (*(int *)(param_1 + 0x38) == 0) {
          pcVar7 = "no client_conf";
        }
        else {
          iVar1 = create_dynamic_hostconf(param_5,param_1 + 0x38);
          if (iVar1 != 0) goto LAB_00406d18;
          pcVar7 = "failed to make host configuration";
        }
        dprintf(5,"react_confirm",pcVar7);
      }
      else {
LAB_00406d18:
        local_13c = 0;
        local_138 = &local_13c;
        iVar2 = dhcp6_copy_list(&local_13c,iVar1 + 0x1c);
        if (iVar2 == 0) {
          piVar3 = (int *)param_5[0xc];
          local_34 = piVar3;
          if (piVar3 == (int *)0x0) {
            dprintf(6,"react_confirm","no IA-NA option found");
          }
          else {
            local_38 = (void *)(param_1 + 0x1c);
            do {
              piVar8 = (int *)piVar3[10];
              if (piVar8 == (int *)0x0) {
                dprintf(6,"react_confirm","no IA-ADDR option found in IA-NA %d",piVar3[3]);
                goto LAB_00406be8;
              }
              uVar4 = *(uint *)(param_6 + 8);
              do {
                __s1 = local_38;
                if ((uVar4 & 0xc0ff) != 0x80fe) {
                  if (param_8 == 0) {
                    dprintf(6,"react_confirm","no link-addr found");
                    goto LAB_00406be8;
                  }
                  __s1 = (void *)(**(int **)(*(int *)(param_8 + 4) + 4) + 0xc);
                }
                iVar2 = memcmp(__s1,piVar8 + 5,8);
                if (iVar2 != 0) {
                  uVar5 = in6addr2str(piVar8 + 5,0);
                  uVar6 = in6addr2str(__s1,0);
                  dprintf(6,"react_confirm","%s does not seem to belong to %s\'s link",uVar5,uVar6);
                  local_140[0] = 4;
                  goto LAB_00406f10;
                }
                piVar8 = (int *)*piVar8;
              } while (piVar8 != (int *)0x0);
              piVar3 = (int *)*piVar3;
            } while (piVar3 != (int *)0x0);
            do {
              iVar2 = FUN_00404d68(local_34,&local_13c,auStack_100,iVar1,1);
              if (iVar2 == 0) {
                dprintf(7,"react_confirm","IA-NA configuration not found");
                goto LAB_00406be8;
              }
              local_34 = (int *)*local_34;
            } while (local_34 != (int *)0x0);
            if (local_140[0] == 0) {
              dhcp6_clear_list(auStack_100);
            }
LAB_00406f10:
            iVar2 = dhcp6_add_listval(auStack_f0,2,local_140,0);
            if (iVar2 != 0) {
              FUN_0040621c(7,param_1,param_3,param_5,param_6,param_7,local_30,param_8,iVar1);
              dhcp6_clear_options(local_30);
              dhcp6_clear_list(&local_13c);
            }
          }
        }
        else {
          dprintf(5,"react_confirm","failed to make local data");
        }
      }
      goto LAB_00406be8;
    }
    pcVar7 = "failed to copy client ID";
  }
  else {
    pcVar7 = "failed to copy server ID";
  }
  dprintf(3,"react_confirm",pcVar7);
LAB_00406be8:
  dhcp6_clear_options(local_30);
  dhcp6_clear_list(&local_13c);
  return 0xffffffff;
}