void FUN_004041e4(int *param_1)

{
  int *piVar1;
  int *piVar2;
  int *piVar3;
  
  piVar3 = dhcp6_if;
  if (dhcp6_if != (int *)0x0) {
    do {
      if ((param_1 == (int *)0x0) || (param_1 == piVar3)) {
        release_all_ia(piVar3);
        piVar2 = (int *)piVar3[2];
        while (piVar1 = piVar2, piVar1 != (int *)0x0) {
          piVar2 = (int *)*piVar1;
          if (piVar1[0xf] != 6) {
            dhcp6_remove_event(piVar1);
          }
        }
      }
      piVar3 = (int *)*piVar3;
    } while (piVar3 != (int *)0x0);
  }
  return;
}