void FUN_00407e78(void *param_1)

{
  int iVar1;
  
  iVar1 = *(int *)((int)param_1 + 8);
  if ((iVar1 == 1) || (iVar1 == 0)) {
    if (*(void **)((int)param_1 + 0xc) != (void *)0x0) {
      free(*(void **)((int)param_1 + 0xc));
    }
  }
  else if (iVar1 == 2) {
    if (*(void **)((int)param_1 + 0xc) != (void *)0x0) {
      free(*(void **)((int)param_1 + 0xc));
    }
    FUN_00407df4((int)param_1 + 0x14);
  }
  free(param_1);
  return;
}