void FUN_0040330c(int param_1)

{
  time_t tVar1;
  int iVar2;
  uint uVar3;
  int *piVar4;
  uint uVar5;
  uint uVar6;
  
  tVar1 = time((time_t *)0x0);
  uVar6 = tVar1 - *(int *)(param_1 + 0x28);
  if (tVar1 < *(int *)(param_1 + 0x28)) {
    uVar6 = 0;
  }
  if (*(int *)(param_1 + 8) != 0) {
    dprintf(3,"update_binding_duration","unknown binding type (%d)");
    return;
  }
  piVar4 = *(int **)(param_1 + 0x1c);
  if (piVar4 == (int *)0x0) {
    iVar2 = 0;
  }
  else {
    uVar5 = 0;
    do {
      while( true ) {
        if ((*(int *)(param_1 + 0x14) != 4) && (*(int *)(param_1 + 0x14) != 6)) {
          dprintf(3,"update_binding_duration","unsupported IA type");
          return;
        }
        uVar3 = piVar4[4];
        if ((uVar5 == 0) || ((uVar3 != 0xffffffff && (uVar3 < uVar5)))) break;
        piVar4 = (int *)*piVar4;
        uVar3 = uVar5;
        if (piVar4 == (int *)0x0) goto LAB_00403408;
      }
      piVar4 = (int *)*piVar4;
      uVar5 = uVar3;
    } while (piVar4 != (int *)0x0);
LAB_00403408:
    iVar2 = 0;
    if (uVar6 < uVar3) {
      iVar2 = uVar3 - uVar6;
    }
  }
  *(int *)(param_1 + 0x24) = iVar2;
  return;
}