void FUN_00404900(undefined *param_1)
{
undefined *puVar1;
int iVar2;
int *piVar3;
undefined **ppuVar4;
undefined **ppuVar5;
int *piVar6;
while (piVar6 = *(int **)(param_1 + 0x10), piVar6 != (int *)(param_1 + 0x10)) {
piVar3 = (int *)piVar6[1];
iVar2 = *piVar6;
*piVar3 = iVar2;
*(int **)(iVar2 + 4) = piVar3;
*piVar6 = 0;
piVar6[1] = 0;
FUN_0040486c(piVar6);
}
while (piVar6 = *(int **)(param_1 + 8), piVar6 != (int *)(param_1 + 8)) {
piVar3 = (int *)piVar6[1];
iVar2 = *piVar6;
*piVar3 = iVar2;
*(int **)(iVar2 + 4) = piVar3;
*piVar6 = 0;
piVar6[1] = 0;
FUN_00404900(piVar6);
}
if (*(void **)(param_1 + 0x1c) != (void *)0x0) {
free(*(void **)(param_1 + 0x1c));
}
if (*(void **)(param_1 + 0x20) != (void *)0x0) {
free(*(void **)(param_1 + 0x20));
}
puVar1 = PTR_LOOP_00433590;
ppuVar4 = (undefined **)0x0;
while( true ) {
ppuVar5 = (undefined **)puVar1;
if (ppuVar4 != (undefined **)0x0) {
ppuVar5 = (undefined **)*ppuVar4;
}
if ((ppuVar5 == &PTR_LOOP_00433590) || (ppuVar5 == (undefined **)0x0)) break;
ppuVar4 = ppuVar5;
if (ppuVar5[2] == param_1) {
ppuVar5[2] = (undefined *)0x0;
}
}
free(param_1);
return;
}