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