void FUN_004104fc(undefined4 *param_1)
{
undefined4 *__ptr;
int iVar1;
int iVar2;
void *pvVar3;
int *__ptr_00;
__ptr_00 = (int *)*param_1;
do {
if (__ptr_00 == (int *)0x0) {
return;
}
iVar2 = *__ptr_00;
if (iVar2 == 0) {
param_1[1] = __ptr_00[1];
}
else {
*(int *)(iVar2 + 4) = __ptr_00[1];
}
iVar1 = __ptr_00[2];
*(int *)__ptr_00[1] = iVar2;
if (iVar1 == 0) {
if (__ptr_00[4] != 0) {
dprintf(3,"clear_iaconf","assumption failure");
/* WARNING: Subroutine does not return */
exit(1);
}
__ptr = (undefined4 *)__ptr_00[8];
while (__ptr != (undefined4 *)0x0) {
pvVar3 = (void *)*__ptr;
free((void *)__ptr[2]);
free(__ptr);
__ptr = (undefined4 *)pvVar3;
}
dhcp6_clear_list(__ptr_00 + 6);
}
free(__ptr_00);
__ptr_00 = (int *)*param_1;
} while( true );
}