// File: /workspace/github_c_makefile_star2_O0/olcaytaner[P]Isell/omnivariatetree.c
// Function: find_best_hybrid_ldt_split_bic
int find_best_hybrid_ldt_split_bic(Decisionnodeptr node, Multildt_parameterptr param)
{
 /*!Last Changed 01.02.2005*/
 /*!Last Changed 22.11.2004*/
 int hybridspace = get_parameter_i("hybridspace");
 int i, d, N = data_size(node->instances);
 matrix qw;
 double loglikelihood, qw0, results[3];
 find_uni_and_multi_splits(node, &qw, &qw0, results, param->variance_explained, hybridspace);
 for (i = 0; i < hybridspace; i++)
   if (results[i] != -1)
    {
     switch (i)
      {
       case 0:loglikelihood = log_likelihood_for_uni_ldt_splits(node->instances, node->featureno, node->split, param->conditiontype);
              d = 2;
              break;
       case 1:loglikelihood = log_likelihood_for_multi_ldt_splits(node->instances, node->w, node->w0);
              d = node->lineard + 1;
              break;
       case 2:loglikelihood = log_likelihood_for_multi_ldt_splits(node->instances, qw, qw0);
              d = node->quadraticd + 1;
              break;
       default:loglikelihood = 0.0;
               d = 0;
               break;
      }
     results[i] = bic_loglikelihood(loglikelihood, d, N);
    }
 return set_best_hybrid_split(results, node, qw, qw0, hybridspace);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
leaq 0x6e529(%rip), %rdi     # 0xe57d0
callq 0x78f10
movl %eax, -0x14(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x449f0
movl %eax, -0x20(%rbp)
movq -0x8(%rbp), %rdi
leaq -0x60(%rbp), %rcx
movq -0x10(%rbp), %rax
movsd 0x20(%rax), %xmm0
movl -0x14(%rbp), %r8d
leaq -0x30(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x76ad0
movl $0x0, -0x18(%rbp)
movl -0x18(%rbp), %eax
cmpl -0x14(%rbp), %eax
jge 0x7740d
movslq -0x18(%rbp), %rax
movsd -0x60(%rbp,%rax,8), %xmm0
movsd 0x6b742(%rip), %xmm1    # 0xe2a48
ucomisd %xmm1, %xmm0
jne 0x77313
jp 0x77313
jmp 0x773fd
movl -0x18(%rbp), %eax
movl %eax, -0x64(%rbp)
testl %eax, %eax
je 0x77336
jmp 0x7731f
movl -0x64(%rbp), %eax
subl $0x1, %eax
je 0x77368
jmp 0x77329
movl -0x64(%rbp), %eax
subl $0x2, %eax
je 0x773a1
jmp 0x773d2
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rdi
movq -0x8(%rbp), %rax
movl 0x30(%rax), %esi
movq -0x8(%rbp), %rax
movsd 0x28(%rax), %xmm0
movq -0x10(%rbp), %rax
movl 0x2c(%rax), %edx
callq 0xdf780
movsd %xmm0, -0x38(%rbp)
movl $0x2, -0x1c(%rbp)
jmp 0x773e1
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rdi
movq -0x8(%rbp), %rax
movq -0x8(%rbp), %rcx
movsd 0x48(%rcx), %xmm0
movq 0x38(%rax), %rsi
movq 0x40(%rax), %rdx
callq 0x6fc70
movsd %xmm0, -0x38(%rbp)
movq -0x8(%rbp), %rax
movl 0x90(%rax), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x773e1
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rdi
movsd -0x40(%rbp), %xmm0
movq -0x30(%rbp), %rsi
movq -0x28(%rbp), %rdx
callq 0x6fc70
movsd %xmm0, -0x38(%rbp)
movq -0x8(%rbp), %rax
movl 0x94(%rax), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x773e1
xorps %xmm0, %xmm0
movsd %xmm0, -0x38(%rbp)
movl $0x0, -0x1c(%rbp)
movsd -0x38(%rbp), %xmm0
cvtsi2sdl -0x1c(%rbp), %xmm1
movl -0x20(%rbp), %edi
callq 0x669d0
movslq -0x18(%rbp), %rax
movsd %xmm0, -0x60(%rbp,%rax,8)
jmp 0x773ff
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x772e8
leaq -0x60(%rbp), %rdi
movq -0x8(%rbp), %rsi
movsd -0x40(%rbp), %xmm0
movl -0x14(%rbp), %r8d
movq -0x30(%rbp), %rdx
movq -0x28(%rbp), %rcx
callq 0x76df0
addq $0x70, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)