undefined4 FUN_004056b4(int param_1)
{
time_t tVar1;
undefined4 uVar2;
undefined4 uVar3;
int iVar4;
int *piVar5;
int *piVar6;
uint uVar7;
int local_30 [2];
tVar1 = time((time_t *)0x0);
uVar7 = tVar1 - *(int *)(param_1 + 0x28);
if (tVar1 < *(int *)(param_1 + 0x28)) {
uVar7 = 0;
}
if (*(int *)(param_1 + 8) == 0) {
piVar5 = *(int **)(param_1 + 0x1c);
if (piVar5 != (int *)0x0) {
do {
piVar6 = (int *)*piVar5;
if ((*(int *)(param_1 + 0x14) != 4) && (*(int *)(param_1 + 0x14) != 6)) {
dprintf(3,"binding_timo","internal error: unknown binding type (%d)");
return 0;
}
if ((piVar5[4] != 0xffffffff) && ((uint)piVar5[4] <= uVar7)) {
uVar2 = in6addr2str(piVar5 + 5,0);
iVar4 = piVar5[9];
uVar3 = FUN_00404404(param_1);
dprintf(7,"binding_timo","bound prefix %s/%d in %s has expired",uVar2,iVar4,uVar3);
if (*(int *)(param_1 + 0x14) == 6) {
release_address(piVar5 + 5);
iVar4 = *piVar5;
if (iVar4 == 0) goto LAB_004058f8;
LAB_004058ac:
*(int *)(iVar4 + 4) = piVar5[1];
}
else {
iVar4 = *piVar5;
if (iVar4 != 0) goto LAB_004058ac;
LAB_004058f8:
*(int *)(param_1 + 0x20) = piVar5[1];
iVar4 = *piVar5;
}
*(int *)piVar5[1] = iVar4;
dhcp6_clear_listval(piVar5);
}
piVar5 = piVar6;
} while (piVar6 != (int *)0x0);
if (*(int *)(param_1 + 0x1c) != 0) {
FUN_0040330c(param_1);
local_30[0] = *(int *)(param_1 + 0x24);
if (local_30[0] == -1) {
return 0;
}
local_30[1] = 0;
dhcp6_set_timer(local_30,*(undefined4 *)(param_1 + 0x2c));
return *(undefined4 *)(param_1 + 0x2c);
}
}
FUN_004055f0(param_1);
}
else {
dprintf(3,"binding_timo","unknown binding type %d");
}
return 0;
}