undefined4 FUN_00403588(int param_1,int param_2,int *param_3)

{
  bool bVar1;
  bool bVar2;
  bool bVar3;
  bool bVar4;
  bool bVar5;
  bool bVar6;
  bool bVar7;
  bool bVar8;
  bool bVar9;
  bool bVar10;
  bool bVar11;
  int iVar12;
  undefined4 uVar13;
  char *pcVar14;
  
  param_3 = (int *)*param_3;
  if (param_3 == (int *)0x0) {
LAB_004036bc:
    iVar12 = optrefreshtime;
    uVar13 = 0;
    if ((param_1 == 0xb) && ((optrefreshtime != -1 || (uVar13 = 0, DAT_00438d14 != -1)))) {
      *(int *)(param_2 + 0x24) = DAT_00438d14;
      *(int *)(param_2 + 0x20) = iVar12;
      return 0;
    }
  }
  else {
    bVar11 = false;
    bVar10 = false;
    bVar9 = false;
    bVar8 = false;
    bVar7 = false;
    bVar6 = false;
    bVar5 = false;
    bVar4 = false;
    bVar3 = false;
    bVar2 = false;
    bVar1 = false;
    do {
      if (param_3[2] == 1) {
        switch(param_3[3]) {
        case 0x15:
          bVar1 = true;
          break;
        case 0x16:
          bVar2 = true;
          break;
        case 0x17:
          bVar3 = true;
          break;
        case 0x18:
          bVar4 = true;
          break;
        case 0x1b:
          bVar7 = true;
          break;
        case 0x1c:
          bVar9 = true;
          break;
        case 0x1d:
          bVar6 = true;
          break;
        case 0x1e:
          bVar8 = true;
          break;
        case 0x1f:
          bVar5 = true;
          break;
        case 0x21:
          bVar10 = true;
          break;
        case 0x22:
          bVar11 = true;
        }
      }
      param_3 = (int *)*param_3;
    } while (param_3 != (int *)0x0);
    if ((bVar1) && (iVar12 = dhcp6_copy_list(param_2 + 0x50,&sipnamelist), iVar12 != 0)) {
      pcVar14 = "failed to copy SIP domain list";
    }
    else if ((bVar2) && (iVar12 = dhcp6_copy_list(param_2 + 0x48,&siplist), iVar12 != 0)) {
      pcVar14 = "failed to copy SIP servers";
    }
    else if ((bVar3) && (iVar12 = dhcp6_copy_list(param_2 + 0x68,&dnslist), iVar12 != 0)) {
      pcVar14 = "failed to copy DNS servers";
    }
    else if ((bVar4) && (iVar12 = dhcp6_copy_list(param_2 + 0x70,&dnsnamelist), iVar12 != 0)) {
      pcVar14 = "failed to copy DNS search list";
    }
    else if ((bVar5) && (iVar12 = dhcp6_copy_list(param_2 + 0x78,&ntplist), iVar12 != 0)) {
      pcVar14 = "failed to copy NTP servers";
    }
    else if ((bVar6) && (iVar12 = dhcp6_copy_list(param_2 + 0x90,&nisnamelist), iVar12 != 0)) {
      pcVar14 = "failed to copy NIS domain list";
    }
    else if ((bVar7) && (iVar12 = dhcp6_copy_list(param_2 + 0x88,&nislist), iVar12 != 0)) {
      pcVar14 = "failed to copy NIS servers";
    }
    else if ((bVar8) && (iVar12 = dhcp6_copy_list(param_2 + 0xa0,&nispnamelist), iVar12 != 0)) {
      pcVar14 = "failed to copy NIS+ domain list";
    }
    else if ((bVar9) && (iVar12 = dhcp6_copy_list(param_2 + 0x98,&nisplist), iVar12 != 0)) {
      pcVar14 = "failed to copy NIS+ servers";
    }
    else if ((bVar10) && (iVar12 = dhcp6_copy_list(param_2 + 0xb0,&bcmcsnamelist), iVar12 != 0)) {
      pcVar14 = "failed to copy BCMCS domain list";
    }
    else {
      if ((!bVar11) || (iVar12 = dhcp6_copy_list(param_2 + 0xa8,&bcmcslist), iVar12 == 0))
      goto LAB_004036bc;
      pcVar14 = "failed to copy BCMCS servers";
    }
    dprintf(3,"set_statelessinfo",pcVar14);
    uVar13 = 0xffffffff;
  }
  return uVar13;
}