void FUN_004185c4(undefined4 *param_1)

{
  void *__ptr;
  void *pvVar1;
  void *pvVar2;
  
  if (param_1 != (undefined4 *)0x0) {
    if ((void *)*param_1 != (void *)0x0) {
      free((void *)*param_1);
    }
    ixml_membuf_destroy(param_1 + 7);
    ixml_membuf_destroy(param_1 + 3);
    __ptr = (void *)param_1[0xc];
    while (__ptr != (void *)0x0) {
      FUN_004184ac(__ptr);
      pvVar1 = *(void **)((int)__ptr + 0xc);
      while (pvVar1 != (void *)0x0) {
        pvVar2 = *(void **)((int)pvVar1 + 8);
        FUN_00418550(pvVar1);
        free(pvVar1);
        pvVar1 = pvVar2;
      }
      pvVar1 = *(void **)((int)__ptr + 0x10);
      free(__ptr);
      __ptr = pvVar1;
    }
    (*(code *)(undefined *)0x0)(param_1);
    (*(code *)(undefined *)0x0)();
    (*(code *)(undefined *)0x0)();
    (*(code *)(undefined *)0x0)();
    (*(code *)(undefined *)0x0)();
    (*(code *)(undefined *)0x0)();
    (*(code *)(undefined *)0x0)();
    (*(code *)(undefined *)0x0)();
    (*(code *)(undefined *)0x0)();
    (*(code *)(undefined *)0x0)();
    FUN_004025d0();
    return;
  }
  return;
}