undefined4 FUN_0040f294(uint param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4)
{
undefined4 uVar1;
int iVar2;
undefined4 uVar3;
undefined4 *puVar4;
undefined4 local_38;
undefined4 local_34;
undefined4 local_30;
undefined4 local_2c;
if (((param_1 & 0xf) == 0) && (puVar4 = (undefined4 *)((int)param_2 + param_1), param_1 != 0)) {
if (param_2 < puVar4) {
do {
local_38 = *param_2;
local_34 = param_2[1];
local_30 = param_2[2];
local_2c = param_2[3];
iVar2 = dhcp6_find_listval(param_4,3,&local_38,0);
if (iVar2 == 0) {
iVar2 = dhcp6_add_listval(param_4,3,&local_38,0);
if (iVar2 == 0) {
uVar3 = dhcp6optstr(param_3);
dprintf(3,"dhcp6_get_addr","failed to copy %s address",uVar3);
return 0xffffffff;
}
}
else {
uVar3 = dhcp6optstr(param_3);
uVar1 = in6addr2str(&local_38,0);
dprintf(6,"dhcp6_get_addr","duplicated %s address (%s)",uVar3,uVar1);
}
param_2 = param_2 + 4;
uVar3 = 0;
} while (param_2 < puVar4);
}
else {
uVar3 = 0;
}
}
else {
dprintf(6,"dhcp6_get_addr","malformed DHCP option: type %d, len %d",param_3,param_1);
uVar3 = 0xffffffff;
}
return uVar3;
}