void FUN_00409200(void)

{
  undefined *__ptr;
  int *piVar1;
  int iVar2;
  void *__ptr_00;
  
  while( true ) {
    __ptr = PTR_LOOP_00430430;
    if ((undefined **)PTR_LOOP_00430430 == &PTR_LOOP_00430430) break;
    piVar1 = *(int **)(PTR_LOOP_00430430 + 4);
    iVar2 = *(int *)PTR_LOOP_00430430;
    __ptr_00 = *(void **)(PTR_LOOP_00430430 + 8);
    *piVar1 = iVar2;
    *(int **)(iVar2 + 4) = piVar1;
    *(undefined4 *)__ptr = 0;
    *(undefined4 *)(__ptr + 4) = 0;
    if (__ptr_00 != (void *)0x0) {
      free(__ptr_00);
    }
    if (*(void **)(__ptr + 0xc) != (void *)0x0) {
      free(*(void **)(__ptr + 0xc));
    }
    free(__ptr);
  }
  return;
}