void FUN_00409784(void *param_1)

{
  if (param_1 != (void *)0x0) {
    if (*(void **)((int)param_1 + 8) != (void *)0x0) {
      free(*(void **)((int)param_1 + 8));
    }
    FUN_00407f28((int)param_1 + 0xc);
    FUN_00409728((int)param_1 + 0x14);
                    /* WARNING: Could not recover jumptable at 0x004097e8. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    free(param_1);
    return;
  }
  return;
}