// File: /workspace/github_c_makefile_star2_O0/olcaytaner[P]Isell/ripper.c
// Function: learn_ruleset_ripper
Ruleset learn_ruleset_ripper(Instanceptr* instances, int reptype, Ripper_parameterptr param)
{
 /*!Last Changed 02.12.2004 added free_rule and safe_rule*/
 /*!Last Changed 05.05.2004 added unordered classes*/
 /*!Last Changed 03.05.2004 added given permutation*/
 /*!Last Changed 02.02.2004 added safemalloc*/
 /*!Last Changed 18.05.2003*/
 Ruleset result;
 Decisionruleptr newrule;
 BOOLEAN givenperm;
 int* counts, classno, posclass, classcount, *classes, i, j, rcount, first, covered, uncovered, fp, fn, totalinstance, maxcount, lastclass;
 double smallestdl, dlnow, ruledl, *proportions, datadlwith, datadlwithout;
 Instanceptr grow, prune, removed = NULL, totalremoved = NULL, tmp;
 if (strlen(param->classpermutation) == 0)
   givenperm = BOOLEAN_FALSE;
 else
   givenperm = BOOLEAN_TRUE;
 empty_ruleset(&result);
 if (get_parameter_o("usediscrete") == OFF)
   result.possibleconditioncount = possible_condition_count(*instances);
 else
   if (get_parameter_i("smallsetsize") == 0)
     result.possibleconditioncount = find_discrete_split_count(get_parameter_i("hybridspace"));
   else
     result.possibleconditioncount = find_discrete_split_count(get_parameter_i("smallsetsize"));
 classno = all_in_one_class(*instances, &maxcount);
 if (!(classno % 10))
   return result;
 if (reptype < 2)
   rcount = 0;
 else
   rcount = param->optimizecount;
 counts = find_class_counts(*instances);
 if (!givenperm)
   classes = find_max_occured(counts, current_dataset->classno, &classcount);
 else
   classcount = current_dataset->classno;
 proportions = safemalloc(current_dataset->classno*sizeof(double), "learn_ruleset_ripper", 24);
 if (!givenperm)
   result.defaultclass = classes[0];
 else
   result.defaultclass = param->classpermutation[classcount - 1] - '0';
 totalinstance = data_size(*instances);
 uncovered = data_size(*instances);
 if (param->rulesordered)
   lastclass = 1;
 else
   lastclass = 0;
 for (i = classcount - 1; i > lastclass - 1; i--)
  {
   if (!givenperm)
     posclass = classes[i];
   else
     posclass = param->classpermutation[classcount - i - 1] - '0';
   proportions[i] = (counts[posclass] + 0.0) / totalinstance;
   smallestdl = +INT_MAX;
   first = 1;
   covered = 0;
   fp = 0;
   fn = find_class_count(*instances, posclass);
   while (fn > 0)
    {
     divide_instancelist(instances, &prune, &grow, 3);
     newrule = growrule(&grow, posclass, param);
     if (newrule->start)
       prunerule(newrule, prune, posclass, reptype);
     if (!(newrule->start))
      {
       *instances = restore_instancelist(*instances, grow);
       merge_instancelist(instances, prune);
       free_rule(*newrule);
       safe_free(newrule);
       break;
      }
     update_counts(newrule, grow, 1);
     update_counts(newrule, prune, 0);
     if (reptype == 0)
      {
       if (test_rule(*newrule, prune) >= 0.5)
        {
         *instances = restore_instancelist(*instances, grow);
         merge_instancelist(instances, prune);
         free_rule(*newrule);
         safe_free(newrule);
         break;
        }
       else
        {
         *instances = restore_instancelist(*instances, grow);
         merge_instancelist(instances, prune);
         add_rule(&result, newrule);
         remove_covered(instances, &removed, newrule);
        }
      }
     else
      {
       *instances = restore_instancelist(*instances, grow);
       merge_instancelist(instances, prune);
       datadlwithout = description_length_of_exceptions(covered, uncovered, fp, fn, proportions[i]);
       ruledl = description_length_of_rule(*newrule, result.possibleconditioncount);
       datadlwith = description_length_of_exceptions(covered + newrule->covered + newrule->falsepositives, uncovered - newrule->covered - newrule->falsepositives, fp + newrule->falsepositives, fn - newrule->covered, proportions[i]);
       if (first)
         dlnow = datadlwith + ruledl;
       else
         dlnow = dlnow - datadlwithout + datadlwith + ruledl;
       if (dless(dlnow,smallestdl) && (first != 1 || error_rate_of_rule(*newrule) < 0.5))
        {
         smallestdl = dlnow;
         insert_rule_and_update_counts(newrule, &result, &covered, &uncovered, &fp, &fn);
         remove_covered(instances, &removed, newrule);
        }
       else
         if ((dlnow - smallestdl > 64) || (error_rate_of_rule(*newrule) >= 0.5))
          {
           free_rule(*newrule);
           safe_free(newrule);
           break;
          }
         else
          {
           insert_rule_and_update_counts(newrule, &result, &covered, &uncovered, &fp, &fn);
           remove_covered(instances, &removed, newrule);
          }
      }
     first = 0;
    }
   for (j = 0; j < rcount; j++)
    {
     merge_instancelist(instances, removed);
     removed = NULL;
     optimize_ruleset(&result, posclass, instances, proportions[i], param);
     simplify_ruleset(&result, posclass, *instances, removed, proportions[i]);
     remove_covered_by_ruleset(instances, &removed, result, 0);
    }
   if (param->rulesordered)
     merge_instancelist(&totalremoved, removed);
   else
    {
     if (param->rexenabled)
      {
       tmp = *instances;
       while (tmp)
        {
         if (give_classno(tmp) == posclass)
           tmp->isexception = 1;
         tmp = tmp->next;
        }
      }
     merge_instancelist(instances, removed);
    }
   removed = NULL;
  }
 if (param->rulesordered)
   merge_instancelist(instances, totalremoved);
 safe_free(counts);
 safe_free(proportions);
 if (!givenperm)
   safe_free(classes);
 return result;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x120, %rsp            # imm = 0x120
movq %rdi, -0xe0(%rbp)
movq %rdi, -0xd8(%rbp)
movq %rsi, -0x8(%rbp)
movl %edx, -0xc(%rbp)
movq %rcx, -0x18(%rbp)
movq $0x0, -0xc0(%rbp)
movq $0x0, -0xc8(%rbp)
movq -0x18(%rbp), %rdi
callq 0x4150
cmpq $0x0, %rax
jne 0xa9df2
movl $0x0, -0x24(%rbp)
jmp 0xa9df9
movl $0x1, -0x24(%rbp)
movq -0xe0(%rbp), %rdi
callq 0xade30
leaq 0x387d9(%rip), %rdi     # 0xe25e5
callq 0x79440
cmpl $0x0, %eax
jne 0xa9e30
movq -0x8(%rbp), %rax
movq (%rax), %rdi
callq 0xd9890
movl %eax, %ecx
movq -0xe0(%rbp), %rax
movl %ecx, 0x20(%rax)
jmp 0xa9e83
leaq 0x38742(%rip), %rdi     # 0xe2579
callq 0x78f10
cmpl $0x0, %eax
jne 0xa9e62
leaq 0x3b988(%rip), %rdi     # 0xe57d0
callq 0x78f10
movl %eax, %edi
callq 0xdd570
movl %eax, %ecx
movq -0xe0(%rbp), %rax
movl %ecx, 0x20(%rax)
jmp 0xa9e81
leaq 0x38710(%rip), %rdi     # 0xe2579
callq 0x78f10
movl %eax, %edi
callq 0xdd570
movl %eax, %ecx
movq -0xe0(%rbp), %rax
movl %ecx, 0x20(%rax)
jmp 0xa9e83
movq -0x8(%rbp), %rax
movq (%rax), %rdi
leaq -0x70(%rbp), %rsi
callq 0x18420
movl %eax, -0x34(%rbp)
movl -0x34(%rbp), %eax
movl $0xa, %ecx
cltd
idivl %ecx
cmpl $0x0, %edx
jne 0xa9eab
jmp 0xaa687
cmpl $0x2, -0xc(%rbp)
jge 0xa9eba
movl $0x0, -0x54(%rbp)
jmp 0xa9ec4
movq -0x18(%rbp), %rax
movl 0x10(%rax), %eax
movl %eax, -0x54(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rdi
callq 0x183a0
movq %rax, -0x30(%rbp)
cmpl $0x0, -0x24(%rbp)
jne 0xa9efa
movq -0x30(%rbp), %rdi
leaq 0x5b95b(%rip), %rax     # 0x105840
movq (%rax), %rax
movl 0x10(%rax), %esi
leaq -0x3c(%rbp), %rdx
callq 0x50160
movq %rax, -0x48(%rbp)
jmp 0xa9f0a
leaq 0x5b93f(%rip), %rax     # 0x105840
movq (%rax), %rax
movl 0x10(%rax), %eax
movl %eax, -0x3c(%rbp)
leaq 0x5b92f(%rip), %rax     # 0x105840
movq (%rax), %rax
movslq 0x10(%rax), %rdi
shlq $0x3, %rdi
leaq 0x424d5(%rip), %rsi     # 0xec3f8
movl $0x18, %edx
callq 0x52d70
movq %rax, -0x98(%rbp)
cmpl $0x0, -0x24(%rbp)
jne 0xa9f4c
movq -0xe0(%rbp), %rax
movq -0x48(%rbp), %rcx
movl (%rcx), %ecx
movl %ecx, 0x14(%rax)
jmp 0xa9f6a
movq -0xe0(%rbp), %rax
movq -0x18(%rbp), %rcx
movl -0x3c(%rbp), %edx
subl $0x1, %edx
movslq %edx, %rdx
movsbl (%rcx,%rdx), %ecx
subl $0x30, %ecx
movl %ecx, 0x14(%rax)
movq -0x8(%rbp), %rax
movq (%rax), %rdi
callq 0x449f0
movl %eax, -0x6c(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rdi
callq 0x449f0
movl %eax, -0x60(%rbp)
movq -0x18(%rbp), %rax
cmpl $0x0, 0xc(%rax)
je 0xa9f9b
movl $0x1, -0x74(%rbp)
jmp 0xa9fa2
movl $0x0, -0x74(%rbp)
movl -0x3c(%rbp), %eax
subl $0x1, %eax
movl %eax, -0x4c(%rbp)
movl -0x4c(%rbp), %eax
movl -0x74(%rbp), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jle 0xaa647
cmpl $0x0, -0x24(%rbp)
jne 0xa9fd2
movq -0x48(%rbp), %rax
movslq -0x4c(%rbp), %rcx
movl (%rax,%rcx,4), %eax
movl %eax, -0x38(%rbp)
jmp 0xa9fec
movq -0x18(%rbp), %rax
movl -0x3c(%rbp), %ecx
subl -0x4c(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movsbl (%rax,%rcx), %eax
subl $0x30, %eax
movl %eax, -0x38(%rbp)
movq -0x30(%rbp), %rax
movslq -0x38(%rbp), %rcx
cvtsi2sdl (%rax,%rcx,4), %xmm0
xorps %xmm1, %xmm1
addsd %xmm1, %xmm0
cvtsi2sdl -0x6c(%rbp), %xmm1
divsd %xmm1, %xmm0
movq -0x98(%rbp), %rax
movslq -0x4c(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movsd 0x37fef(%rip), %xmm0    # 0xe2010
movsd %xmm0, -0x80(%rbp)
movl $0x1, -0x58(%rbp)
movl $0x0, -0x5c(%rbp)
movl $0x0, -0x64(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rdi
movl -0x38(%rbp), %esi
callq 0x18240
movl %eax, -0x68(%rbp)
cmpl $0x0, -0x68(%rbp)
jle 0xaa4e3
movq -0x8(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
leaq -0xb0(%rbp), %rdx
movl $0x3, %ecx
callq 0x45f60
movl -0x38(%rbp), %esi
movq -0x18(%rbp), %rdx
leaq -0xb0(%rbp), %rdi
callq 0xdaf10
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0xaa0ab
movq -0x20(%rbp), %rdi
movq -0xb8(%rbp), %rsi
movl -0x38(%rbp), %edx
movl -0xc(%rbp), %ecx
callq 0xdb170
movq -0x20(%rbp), %rax
cmpq $0x0, 0x18(%rax)
jne 0xaa11b
movq -0x8(%rbp), %rax
movq (%rax), %rdi
movq -0xb0(%rbp), %rsi
callq 0x464e0
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, (%rax)
movq -0x8(%rbp), %rdi
movq -0xb8(%rbp), %rsi
callq 0x44f40
movq -0x20(%rbp), %rcx
movq 0x30(%rcx), %rdx
movq %rsp, %rax
movq %rdx, 0x30(%rax)
movups (%rcx), %xmm0
movups 0x10(%rcx), %xmm1
movups 0x20(%rcx), %xmm2
movups %xmm2, 0x20(%rax)
movups %xmm1, 0x10(%rax)
movups %xmm0, (%rax)
callq 0xadd10
movq -0x20(%rbp), %rdi
callq 0x52e80
jmp 0xaa4e3
movq -0x20(%rbp), %rdi
movq -0xb0(%rbp), %rsi
movl $0x1, %edx
callq 0xaea90
movq -0x20(%rbp), %rdi
movq -0xb8(%rbp), %rsi
xorl %edx, %edx
callq 0xaea90
cmpl $0x0, -0xc(%rbp)
jne 0xaa246
movq -0x20(%rbp), %rcx
movq -0xb8(%rbp), %rdi
movq 0x30(%rcx), %rdx
movq %rsp, %rax
movq %rdx, 0x30(%rax)
movups (%rcx), %xmm0
movups 0x10(%rcx), %xmm1
movups 0x20(%rcx), %xmm2
movups %xmm2, 0x20(%rax)
movups %xmm1, 0x10(%rax)
movups %xmm0, (%rax)
callq 0xae710
movsd 0x38833(%rip), %xmm1    # 0xe29b8
ucomisd %xmm1, %xmm0
jb 0xaa1f0
movq -0x8(%rbp), %rax
movq (%rax), %rdi
movq -0xb0(%rbp), %rsi
callq 0x464e0
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, (%rax)
movq -0x8(%rbp), %rdi
movq -0xb8(%rbp), %rsi
callq 0x44f40
movq -0x20(%rbp), %rcx
movq 0x30(%rcx), %rdx
movq %rsp, %rax
movq %rdx, 0x30(%rax)
movups (%rcx), %xmm0
movups 0x10(%rcx), %xmm1
movups 0x20(%rcx), %xmm2
movups %xmm2, 0x20(%rax)
movups %xmm1, 0x10(%rax)
movups %xmm0, (%rax)
callq 0xadd10
movq -0x20(%rbp), %rdi
callq 0x52e80
jmp 0xaa4e3
movq -0x8(%rbp), %rax
movq (%rax), %rdi
movq -0xb0(%rbp), %rsi
callq 0x464e0
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, (%rax)
movq -0x8(%rbp), %rdi
movq -0xb8(%rbp), %rsi
callq 0x44f40
movq -0xe0(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0xaea30
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rdx
leaq -0xc0(%rbp), %rsi
callq 0xdb5b0
jmp 0xaa4d7
movq -0x8(%rbp), %rax
movq (%rax), %rdi
movq -0xb0(%rbp), %rsi
callq 0x464e0
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, (%rax)
movq -0x8(%rbp), %rdi
movq -0xb8(%rbp), %rsi
callq 0x44f40
movl -0x5c(%rbp), %edi
movl -0x60(%rbp), %esi
movl -0x64(%rbp), %edx
movl -0x68(%rbp), %ecx
movq -0x98(%rbp), %rax
movslq -0x4c(%rbp), %r8
movsd (%rax,%r8,8), %xmm0
callq 0xabdd0
movq -0xe0(%rbp), %rax
movsd %xmm0, -0xa8(%rbp)
movq -0x20(%rbp), %rcx
movl 0x20(%rax), %edi
movq 0x30(%rcx), %rdx
movq %rsp, %rax
movq %rdx, 0x30(%rax)
movups (%rcx), %xmm0
movups 0x10(%rcx), %xmm1
movups 0x20(%rcx), %xmm2
movups %xmm2, 0x20(%rax)
movups %xmm1, 0x10(%rax)
movups %xmm0, (%rax)
callq 0xabc80
movsd %xmm0, -0x90(%rbp)
movl -0x5c(%rbp), %edi
movq -0x20(%rbp), %rax
addl 0x4(%rax), %edi
movq -0x20(%rbp), %rax
addl 0x8(%rax), %edi
movl -0x60(%rbp), %esi
movq -0x20(%rbp), %rax
subl 0x4(%rax), %esi
movq -0x20(%rbp), %rax
subl 0x8(%rax), %esi
movl -0x64(%rbp), %edx
movq -0x20(%rbp), %rax
addl 0x8(%rax), %edx
movl -0x68(%rbp), %ecx
movq -0x20(%rbp), %rax
subl 0x4(%rax), %ecx
movq -0x98(%rbp), %rax
movslq -0x4c(%rbp), %r8
movsd (%rax,%r8,8), %xmm0
callq 0xabdd0
movsd %xmm0, -0xa0(%rbp)
cmpl $0x0, -0x58(%rbp)
je 0xaa34d
movsd -0xa0(%rbp), %xmm0
addsd -0x90(%rbp), %xmm0
movsd %xmm0, -0x88(%rbp)
jmp 0xaa375
movsd -0x88(%rbp), %xmm0
subsd -0xa8(%rbp), %xmm0
addsd -0xa0(%rbp), %xmm0
addsd -0x90(%rbp), %xmm0
movsd %xmm0, -0x88(%rbp)
movsd -0x88(%rbp), %xmm0
movsd -0x80(%rbp), %xmm1
callq 0x52750
cmpl $0x0, %eax
je 0xaa417
cmpl $0x1, -0x58(%rbp)
jne 0xaa3d1
movq -0x20(%rbp), %rcx
movq 0x30(%rcx), %rdx
movq %rsp, %rax
movq %rdx, 0x30(%rax)
movups (%rcx), %xmm0
movups 0x10(%rcx), %xmm1
movups 0x20(%rcx), %xmm2
movups %xmm2, 0x20(%rax)
movups %xmm1, 0x10(%rax)
movups %xmm0, (%rax)
callq 0xaedc0
movaps %xmm0, %xmm1
movsd 0x385ed(%rip), %xmm0    # 0xe29b8
ucomisd %xmm1, %xmm0
jbe 0xaa417
movq -0xe0(%rbp), %rsi
movsd -0x88(%rbp), %xmm0
movsd %xmm0, -0x80(%rbp)
movq -0x20(%rbp), %rdi
leaq -0x5c(%rbp), %rdx
leaq -0x60(%rbp), %rcx
leaq -0x64(%rbp), %r8
leaq -0x68(%rbp), %r9
callq 0xdb970
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rdx
leaq -0xc0(%rbp), %rsi
callq 0xdb5b0
jmp 0xaa4d5
movsd -0x88(%rbp), %xmm0
subsd -0x80(%rbp), %xmm0
movsd 0x41fc4(%rip), %xmm1    # 0xec3f0
ucomisd %xmm1, %xmm0
ja 0xaa46a
movq -0x20(%rbp), %rcx
movq 0x30(%rcx), %rdx
movq %rsp, %rax
movq %rdx, 0x30(%rax)
movups (%rcx), %xmm0
movups 0x10(%rcx), %xmm1
movups 0x20(%rcx), %xmm2
movups %xmm2, 0x20(%rax)
movups %xmm1, 0x10(%rax)
movups %xmm0, (%rax)
callq 0xaedc0
movsd 0x38554(%rip), %xmm1    # 0xe29b8
ucomisd %xmm1, %xmm0
jb 0xaa49f
movq -0x20(%rbp), %rcx
movq 0x30(%rcx), %rdx
movq %rsp, %rax
movq %rdx, 0x30(%rax)
movups (%rcx), %xmm0
movups 0x10(%rcx), %xmm1
movups 0x20(%rcx), %xmm2
movups %xmm2, 0x20(%rax)
movups %xmm1, 0x10(%rax)
movups %xmm0, (%rax)
callq 0xadd10
movq -0x20(%rbp), %rdi
callq 0x52e80
jmp 0xaa4e3
movq -0xe0(%rbp), %rsi
movq -0x20(%rbp), %rdi
leaq -0x5c(%rbp), %rdx
leaq -0x60(%rbp), %rcx
leaq -0x64(%rbp), %r8
leaq -0x68(%rbp), %r9
callq 0xdb970
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rdx
leaq -0xc0(%rbp), %rsi
callq 0xdb5b0
jmp 0xaa4d5
jmp 0xaa4d7
movl $0x0, -0x58(%rbp)
jmp 0xaa04d
movl $0x0, -0x50(%rbp)
movl -0x50(%rbp), %eax
cmpl -0x54(%rbp), %eax
jge 0xaa5a8
movq -0x8(%rbp), %rdi
movq -0xc0(%rbp), %rsi
callq 0x44f40
movq -0xe0(%rbp), %rdi
movq $0x0, -0xc0(%rbp)
movl -0x38(%rbp), %esi
movq -0x8(%rbp), %rdx
movq -0x98(%rbp), %rax
movslq -0x4c(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq -0x18(%rbp), %rcx
callq 0xa90b0
movq -0xe0(%rbp), %rdi
movl -0x38(%rbp), %esi
movq -0x8(%rbp), %rax
movq (%rax), %rdx
movq -0xc0(%rbp), %rcx
movq -0x98(%rbp), %rax
movslq -0x4c(%rbp), %r8
movsd (%rax,%r8,8), %xmm0
callq 0xa9ab0
movq -0xe0(%rbp), %rcx
movq -0x8(%rbp), %rdi
xorl %eax, %eax
movq 0x20(%rcx), %rdx
movq %rsp, %rax
movq %rdx, 0x20(%rax)
movups (%rcx), %xmm0
movups 0x10(%rcx), %xmm1
movups %xmm1, 0x10(%rax)
movups %xmm0, (%rax)
leaq -0xc0(%rbp), %rsi
xorl %edx, %edx
callq 0xdb410
movl -0x50(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x50(%rbp)
jmp 0xaa4ea
movq -0x18(%rbp), %rax
cmpl $0x0, 0xc(%rax)
je 0xaa5c7
movq -0xc0(%rbp), %rsi
leaq -0xc8(%rbp), %rdi
callq 0x44f40
jmp 0xaa62e
movq -0x18(%rbp), %rax
cmpl $0x0, 0x24(%rax)
je 0xaa61e
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq %rax, -0xd0(%rbp)
cmpq $0x0, -0xd0(%rbp)
je 0xaa61c
movq -0xd0(%rbp), %rdi
callq 0x43530
cmpl -0x38(%rbp), %eax
jne 0xaa608
movq -0xd0(%rbp), %rax
movl $0x1, 0x20(%rax)
movq -0xd0(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0xd0(%rbp)
jmp 0xaa5df
jmp 0xaa61e
movq -0x8(%rbp), %rdi
movq -0xc0(%rbp), %rsi
callq 0x44f40
movq $0x0, -0xc0(%rbp)
movl -0x4c(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x4c(%rbp)
jmp 0xa9fab
movq -0x18(%rbp), %rax
cmpl $0x0, 0xc(%rax)
je 0xaa661
movq -0x8(%rbp), %rdi
movq -0xc8(%rbp), %rsi
callq 0x44f40
movq -0x30(%rbp), %rdi
callq 0x52e80
movq -0x98(%rbp), %rdi
callq 0x52e80
cmpl $0x0, -0x24(%rbp)
jne 0xaa685
movq -0x48(%rbp), %rdi
callq 0x52e80
jmp 0xaa687
movq -0xd8(%rbp), %rax
addq $0x120, %rsp            # imm = 0x120
popq %rbp
retq
nopw (%rax,%rax)