// File: /workspace/github_c_makefile_star2_O0/olcaytaner[P]Isell/omnivariaterule.c
// Function: find_best_hybrid_condition_aic
Decisionconditionptr find_best_hybrid_condition_aic(Instanceptr* growset, int positive, Ripper_parameterptr param)
{
 /*!Last Changed 19.02.2005*/
 int hybridspace = get_parameter_i("hybridspace");
 double loglikelihood, results[3];
 int bestmodel, i, covered;
 Decisionconditionptr conditions[3];
 for (i = 0; i < hybridspace; i++)
  {
   switch (i)
    {
     case MODEL_UNI:conditions[0] = find_best_condition_for_realized_features(*growset, positive);
                    break;
     case MODEL_LIN:conditions[1] = find_best_multivariate_condition(growset, positive, MULTIVARIATE_LINEAR, param);
                    break;
     case MODEL_QUA:conditions[2] = find_best_multivariate_condition(growset, positive, MULTIVARIATE_QUADRATIC, param);
                    break;
    }
   if (conditions[i])
    {
     loglikelihood = log_likelihood_of_condition(conditions[i], *growset, positive, &covered);
     results[i] = aic_loglikelihood(loglikelihood, conditions[i]->freeparam + 1);
    }
   else
     results[i] = -1;
  }
 bestmodel = find_min_in_list_double(results, hybridspace);
 if (bestmodel == -1)
  {
   return NULL;
  }
 else
  {
   for (i = 0; i < hybridspace; i++)
     if (i != bestmodel && conditions[i])
      {
       free_condition(*(conditions[i]));
       safe_free(conditions[i]);
      }
   conditions[bestmodel]->datasize = data_size(*growset);
   conditions[bestmodel]->conditiontype = HYBRID_CONDITION;
   return conditions[bestmodel];
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x100, %rsp            # imm = 0x100
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movq %rdx, -0x20(%rbp)
leaq 0x705b3(%rip), %rdi     # 0xe57d0
callq 0x78f10
movl %eax, -0x24(%rbp)
movl $0x0, -0x58(%rbp)
movl -0x58(%rbp), %eax
cmpl -0x24(%rbp), %eax
jge 0x75322
movl -0x58(%rbp), %eax
movl %eax, -0x84(%rbp)
testl %eax, %eax
je 0x75261
jmp 0x75247
movl -0x84(%rbp), %eax
subl $0x1, %eax
je 0x75276
jmp 0x75254
movl -0x84(%rbp), %eax
subl $0x2, %eax
je 0x75291
jmp 0x752aa
movq -0x10(%rbp), %rax
movq (%rax), %rdi
movl -0x14(%rbp), %esi
callq 0xda380
movq %rax, -0x80(%rbp)
jmp 0x752aa
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
movq -0x20(%rbp), %rcx
movl $0xfffffffe, %edx       # imm = 0xFFFFFFFE
callq 0x6d880
movq %rax, -0x78(%rbp)
jmp 0x752aa
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
movq -0x20(%rbp), %rcx
movl $0xfffffffd, %edx       # imm = 0xFFFFFFFD
callq 0x6d880
movq %rax, -0x70(%rbp)
movslq -0x58(%rbp), %rax
cmpq $0x0, -0x80(%rbp,%rax,8)
je 0x75300
movslq -0x58(%rbp), %rax
movq -0x80(%rbp,%rax,8), %rdi
movq -0x10(%rbp), %rax
movq (%rax), %rsi
movl -0x14(%rbp), %edx
leaq -0x5c(%rbp), %rcx
callq 0x73ae0
movsd %xmm0, -0x30(%rbp)
movsd -0x30(%rbp), %xmm0
movslq -0x58(%rbp), %rax
movq -0x80(%rbp,%rax,8), %rax
movl 0x3c(%rax), %eax
addl $0x1, %eax
cvtsi2sd %eax, %xmm1
callq 0x66430
movslq -0x58(%rbp), %rax
movsd %xmm0, -0x50(%rbp,%rax,8)
jmp 0x75312
movslq -0x58(%rbp), %rax
movsd 0x6d73c(%rip), %xmm0    # 0xe2a48
movsd %xmm0, -0x50(%rbp,%rax,8)
jmp 0x75314
movl -0x58(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x58(%rbp)
jmp 0x7522c
leaq -0x50(%rbp), %rdi
movl -0x24(%rbp), %esi
callq 0x50490
movl %eax, -0x54(%rbp)
cmpl $-0x1, -0x54(%rbp)
jne 0x75344
movq $0x0, -0x8(%rbp)
jmp 0x75400
movl $0x0, -0x58(%rbp)
movl -0x58(%rbp), %eax
cmpl -0x24(%rbp), %eax
jge 0x753c9
movl -0x58(%rbp), %eax
cmpl -0x54(%rbp), %eax
je 0x753bc
movslq -0x58(%rbp), %rax
cmpq $0x0, -0x80(%rbp,%rax,8)
je 0x753bc
movslq -0x58(%rbp), %rax
movq -0x80(%rbp,%rax,8), %rcx
movups 0x60(%rcx), %xmm0
movq %rsp, %rax
movups %xmm0, 0x60(%rax)
movups 0x50(%rcx), %xmm0
movups %xmm0, 0x50(%rax)
movups 0x40(%rcx), %xmm0
movups %xmm0, 0x40(%rax)
movups (%rcx), %xmm0
movups 0x10(%rcx), %xmm1
movups 0x20(%rcx), %xmm2
movups 0x30(%rcx), %xmm3
movups %xmm3, 0x30(%rax)
movups %xmm2, 0x20(%rax)
movups %xmm1, 0x10(%rax)
movups %xmm0, (%rax)
callq 0xadc90
movslq -0x58(%rbp), %rax
movq -0x80(%rbp,%rax,8), %rdi
callq 0x52e80
jmp 0x753be
movl -0x58(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x58(%rbp)
jmp 0x7534b
movq -0x10(%rbp), %rax
movq (%rax), %rdi
callq 0x449f0
movl %eax, %ecx
movslq -0x54(%rbp), %rax
movq -0x80(%rbp,%rax,8), %rax
movl %ecx, 0x38(%rax)
movslq -0x54(%rbp), %rax
movq -0x80(%rbp,%rax,8), %rax
movl $0x2, 0x40(%rax)
movslq -0x54(%rbp), %rax
movq -0x80(%rbp,%rax,8), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x100, %rsp            # imm = 0x100
popq %rbp
retq
nopl (%rax)