void FUN_0040f3e0(undefined4 *param_1)
{
int *piVar1;
void *pvVar2;
if (param_1 != (undefined4 *)0x0) {
do {
pvVar2 = (void *)*param_1;
free((void *)param_1[1]);
if (param_1[6] != 0) {
for (piVar1 = (int *)param_1[4]; piVar1 != (int *)0x0; piVar1 = (int *)*piVar1) {
while (piVar1[2] != 5) {
piVar1 = (int *)*piVar1;
if (piVar1 == (int *)0x0) goto LAB_0040f48c;
}
release_segment_prefix(param_1[6],piVar1 + 3);
}
}
LAB_0040f48c:
dhcp6_clear_list(param_1 + 4);
dhcp6_clear_list(param_1 + 7);
if ((void *)param_1[3] != (void *)0x0) {
free((void *)param_1[3]);
}
if ((void *)param_1[9] != (void *)0x0) {
free((void *)param_1[9]);
}
free(param_1);
param_1 = (undefined4 *)pvVar2;
} while (pvVar2 != (void *)0x0);
}
return;
}