void FUN_004155a4(int param_1)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 *puVar3;
  int *piVar4;
  void *__ptr;
  undefined4 *puVar5;
  undefined *puVar6;
  int local_30 [3];
  undefined4 local_24;
  undefined4 local_20;
  
  iVar2 = *(int *)(*(int *)(param_1 + 8) + 8);
  if (iVar2 == 0) {
    puVar6 = &DAT_00429fec;
  }
  else if (iVar2 == 1) {
    puVar6 = &DAT_00429fe8;
  }
  else {
    puVar6 = &DAT_00427600;
  }
  dprintf(7,"renew_ia","renew IA: %s-%lu",puVar6,*(undefined4 *)(*(int *)(param_1 + 8) + 0xc));
  piVar4 = *(int **)(param_1 + 0x1c);
  if (piVar4 != (int *)0x0) {
    if (*piVar4 == 0) {
      *(int *)(piVar4[2] + 0x50) = piVar4[1];
    }
    else {
      *(int *)(*piVar4 + 4) = piVar4[1];
    }
    *(int *)piVar4[1] = *piVar4;
    __ptr = *(void **)(param_1 + 0x1c);
    if (*(code **)((int)__ptr + 0x14) != (code *)0x0) {
      (**(code **)((int)__ptr + 0x14))();
      __ptr = *(void **)(param_1 + 0x1c);
    }
    free(__ptr);
    *(undefined4 *)(param_1 + 0x1c) = 0;
  }
  *(undefined4 *)(param_1 + 0x14) = 1;
  if (*(uint *)(param_1 + 0xc) < *(uint *)(param_1 + 0x10)) {
    local_30[0] = *(uint *)(param_1 + 0x10) - *(uint *)(param_1 + 0xc);
  }
  else {
    local_30[0] = 0;
  }
  local_30[1] = 0;
  dhcp6_set_timer(local_30,*(undefined4 *)(param_1 + 0x18));
  puVar1 = (undefined4 *)dhcp6_create_event(*(undefined4 *)(param_1 + 0x20),4);
  if (puVar1 == (undefined4 *)0x0) {
    dprintf(5,"renew_ia","failed to create a new event");
    return;
  }
  iVar2 = *(int *)(param_1 + 0x20);
  puVar1[1] = *(undefined4 *)(iVar2 + 0xc);
  puVar5 = *(undefined4 **)(iVar2 + 0xc);
  *puVar1 = 0;
  *(undefined4 **)(iVar2 + 0xc) = puVar1;
  *puVar5 = puVar1;
  iVar2 = dhcp6_add_timer(client6_timo,puVar1);
  puVar1[3] = iVar2;
  if (iVar2 == 0) {
    dprintf(5,"renew_ia","failed to create a new event timer");
  }
  else {
    puVar5 = (undefined4 *)malloc(0x1c)   //possible issue identified - semgrep
    if (puVar5 == (undefined4 *)0x0) {
      dprintf(5,"renew_ia","failed to create a new event data");
    }
    else {
      puVar5[1] = 0;
      puVar5[3] = 0;
      puVar5[4] = 0;
      puVar5[5] = 0;
      puVar5[6] = 0;
      puVar5[1] = puVar1[0x14];
      puVar3 = (undefined4 *)puVar1[0x14];
      *puVar5 = 0;
      puVar5[2] = puVar1;
      *puVar3 = puVar5;
      puVar1[0x14] = puVar5;
      iVar2 = duidcpy(puVar1 + 4,param_1 + 0x24);
      if (iVar2 == 0) {
        local_24 = *(undefined4 *)(param_1 + 0xc);
        local_30[2] = *(undefined4 *)(*(int *)(param_1 + 8) + 0xc);
        local_20 = *(undefined4 *)(param_1 + 0x10);
        iVar2 = *(int *)(param_1 + 0x2c);
        if (iVar2 != 0) {
          if (*(code **)(iVar2 + 0x10) != (code *)0x0) {
            iVar2 = (**(code **)(iVar2 + 0x10))(iVar2,local_30 + 2,param_1 + 0x1c,puVar5);
            if (iVar2 != 0) {
              dprintf(5,"renew_ia","failed to make renew data");
              goto LAB_00415898;
            }
          }
        }
        puVar1[0xd] = 0;
        dhcp6_set_timeoparam(puVar1);
        dhcp6_reset_timer(puVar1);
        if (*(int *)(param_1 + 0x30) != 0) {
          iVar2 = copy_authparam();
          puVar1[0x12] = iVar2;
          if (iVar2 == 0) {
            dprintf(4,"renew_ia","failed to copy authparam");
            goto LAB_00415898;
          }
        }
        *(undefined4 **)(param_1 + 0x1c) = puVar5;
        client6_send(puVar1);
        return;
      }
      dprintf(5,"renew_ia","failed to copy server ID");
    }
  }
LAB_00415898:
  dhcp6_remove_event(puVar1);
  return;
}