// File: /workspace/github_c_makefile_star2_O1/olcaytaner[P]Isell/lerils.c
// Function: generate_rule_pool
Ruleset generate_rule_pool(Instanceptr instances, int positive, int M, double p1)
{
 double **thresholds;
 int i, j, k, p, *counts, size, pos, **relevant, bestbit, bestp, bestdirection;
 Decisionconditionptr** included;
 Decisionconditionptr current;
 Decisionruleptr current_rule;
 Instanceptr tmp;
 Ruleset result;
 double prob, best_description_length, description_length;
 empty_ruleset(&result);
 size = data_size(instances);
 thresholds = safecalloc(current_dataset->featurecount, sizeof(double*), "learn_ruleset_lerils_oneclass", 4);
 counts = safecalloc(current_dataset->featurecount, sizeof(int), "learn_ruleset_lerils_oneclass", 5);
 for (i = 0; i < current_dataset->featurecount; i++)
   if (in_list(current_dataset->features[i].type, 2, INTEGER, REAL))
     thresholds[i] = possible_split_points(instances, i, &(counts[i]));
 included = (Decisionconditionptr**) safemalloc_2d(sizeof(Decisionconditionptr*), sizeof(Decisionconditionptr), M, current_dataset->featurecount, "generate_rule_pool", 10);
 relevant = (int**) safemalloc_2d(sizeof(int *), sizeof(int), M, current_dataset->featurecount, "generate_rule_pool", 11);
 for (i = 0; i < M; i++)
  {
   do{
      pos = myrand() % size;
      tmp = data_x(instances, pos);
   }while (give_classno(tmp) != positive);
   for (j = 0; j < current_dataset->featurecount; j++)
     if (current_dataset->features[j].type != CLASSDEF)
      {
       current = empty_condition();
       current->conditiontype = UNIVARIATE_CONDITION;
       current->freeparam = 1;
       current->featureindex = j;
       included[i][j] = current;
       prob = produce_random_value(0.0, 1.0);
       if (prob < 0.5)
         relevant[i][j] = YES;
       else
         relevant[i][j] = NO;
       switch (current_dataset->features[j].type)
        {
         case INTEGER:pos = split_point_lower_and_upper_limits(tmp->values[j].intvalue, thresholds[j], counts[j]);
                      current->comparison = '*';
                      current->upperlimit = thresholds[j][pos + 1];
                      current->lowerlimit = thresholds[j][pos];
                      current->datasize = pos;
                      current->value = pos + 1;
                      break;
         case    REAL:pos = split_point_lower_and_upper_limits(tmp->values[j].floatvalue, thresholds[j], counts[j]);
                      current->comparison = '*';
                      current->upperlimit = thresholds[j][pos + 1];
                      current->lowerlimit = thresholds[j][pos];
                      current->datasize = pos;
                      current->value = pos + 1;
                      break;
         case  STRING:current->comparison = '=';
                      current->value = tmp->values[j].stringindex;
                      break;
        }
      }
     else
       relevant[i][j] = NO;
   /*Random walk*/
   for (j = 0; j < 3 * (current_dataset->featurecount - 1); j++)
    {
     prob = produce_random_value(0.0, 1.0);
     if (prob < p1)
      {
       do{
         pos = myrand() % current_dataset->featurecount;
       }while (current_dataset->features[pos].type == CLASSDEF); 
       relevant[i][pos] = 1 - relevant[i][pos];
      }
     else
      {
       best_description_length = description_length_of_rule_lerils(included[i], relevant[i], instances, positive);
       bestbit = -1;
       for (k = 0; k < current_dataset->featurecount; k++)
         if (current_dataset->features[k].type != CLASSDEF)
          {
           if (current_dataset->features[k].type == STRING || relevant[i][k])
            {
             relevant[i][k] = 1 - relevant[i][k];
             if (rule_cover_instance_lerils(included[i], relevant[i], tmp))
              {
               description_length = description_length_of_rule_lerils(included[i], relevant[i], instances, positive);
               if (description_length < best_description_length)
                {
                 bestbit = k;
                 best_description_length = description_length;
                }
              }
             relevant[i][k] = 1 - relevant[i][k];
            }
           else
             if (!relevant[i][k])
              {
               relevant[i][k] = 1 - relevant[i][k];
               for (p = included[i][k]->datasize - 1; p >= 0; p--)
                {
                 included[i][k]->lowerlimit = thresholds[k][p];
                 if (rule_cover_instance_lerils(included[i], relevant[i], tmp))
                  {
                   description_length = description_length_of_rule_lerils(included[i], relevant[i], instances, positive);
                   if (description_length < best_description_length)
                    {
                     bestbit = k;
                     bestp = p;
                     bestdirection = -1;
                     best_description_length = description_length;
                    }
                  }
                }
               included[i][k]->lowerlimit = thresholds[k][included[i][k]->datasize];
               for (p = ((int)included[i][k]->value) + 1; p < counts[k]; p++)
                {
                 included[i][k]->upperlimit = thresholds[k][p];
                 if (rule_cover_instance_lerils(included[i], relevant[i], tmp))
                  {
                   description_length = description_length_of_rule_lerils(included[i], relevant[i], instances, positive);
                   if (description_length < best_description_length)
                    {
                     bestbit = k;
                     bestp = p;
                     bestdirection = +1;
                     best_description_length = description_length;
                    }
                  }
                }
               included[i][k]->upperlimit = thresholds[k][(int)included[i][k]->value];
               relevant[i][k] = 1 - relevant[i][k];
              }
          }
       if (bestbit != -1)
        {
         relevant[i][bestbit] = 1 - relevant[i][bestbit];
         if (relevant[i][bestbit] && current_dataset->features[bestbit].type != STRING)
          {
           if (bestdirection == -1)
             included[i][bestbit]->lowerlimit = thresholds[bestbit][bestp];
           else
             included[i][bestbit]->upperlimit = thresholds[bestbit][bestp];
          }
        }
      }
    }
   current_rule = empty_rule(positive);
   for (j = 0; j < current_dataset->featurecount; j++)
     if (relevant[i][j])
       add_condition(current_rule, create_copy_of_condition(included[i][j]));
   if (!rule_exists(result, current_rule))
     add_rule(&result, current_rule);
   else
    {
     free_rule(*current_rule);
     safe_free(current_rule);
    }
  }
 free_2d((void**)relevant, M);
 for (i = 0; i < M; i++)
  {
   for (j = 0; j < current_dataset->featurecount; j++)
     if (current_dataset->features[j].type != CLASSDEF)
      {
       free_condition(*(included[i][j]));
       safe_free(included[i][j]);
      }
   safe_free(included[i]);
  }
 safe_free(included);
 for (i = 0; i < current_dataset->featurecount; i++)
   if (counts[i] > 0)
     safe_free(thresholds[i]);
 safe_free(thresholds);
 safe_free(counts); 
 return result;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xd8, %rsp
movsd %xmm0, 0xd0(%rsp)
movl %ecx, 0xb4(%rsp)
movl %edx, %r15d
movq %rsi, %rbp
movq %rdi, 0xc0(%rsp)
callq 0x7aa63
movq %rbp, %rdi
callq 0x2fa14
movl %eax, %r14d
leaq 0x9c81d(%rip), %r13     # 0xd2870
movq (%r13), %rax
movslq 0x1bc(%rax), %rdi
leaq 0x706cf(%rip), %rbx     # 0xa6734
movl $0x8, %esi
movq %rbx, %rdx
movl $0x4, %ecx
callq 0x39210
movq %rax, 0x90(%rsp)
movq (%r13), %rax
movslq 0x1bc(%rax), %rdi
movl $0x4, %esi
movq %rbx, %rdx
movl $0x5, %ecx
callq 0x39210
movq %rax, 0x98(%rsp)
movq (%r13), %rax
movl 0x1bc(%rax), %ecx
testl %ecx, %ecx
movl %r15d, %r12d
movl %r15d, 0x7c(%rsp)
movl %r14d, 0xbc(%rsp)
jle 0x3612b
movl $0x18784, %r14d         # imm = 0x18784
movq 0x98(%rsp), %rbx
xorl %r15d, %r15d
movl (%rax,%r14,2), %edi
movl $0x2, %esi
xorl %edx, %edx
movl $0x2, %ecx
xorl %eax, %eax
callq 0x39a80
testl %eax, %eax
je 0x36108
movq %rbp, %rdi
movl %r15d, %esi
movq %rbx, %rdx
callq 0x35d24
movq 0x90(%rsp), %rcx
movq %rax, (%rcx,%r15,8)
incq %r15
movq (%r13), %rax
movslq 0x1bc(%rax), %rcx
addq $0x4, %rbx
addq $0x1a0, %r14            # imm = 0x1A0
cmpq %rcx, %r15
jl 0x360d3
movl 0x7c(%rsp), %r12d
movq %rbp, 0xa8(%rsp)
leaq 0x70618(%rip), %rbp     # 0xa6752
movl $0x8, %edi
movl $0x8, %esi
movl 0xb4(%rsp), %r15d
movl %r15d, %edx
movq %rbp, %r8
movl $0xa, %r9d
callq 0x393b5
movq %rax, %rbx
movq (%r13), %rax
movl 0x1bc(%rax), %ecx
movl $0x8, %edi
movl $0x4, %esi
movl %r15d, %edx
movq %rbp, %r8
movl $0xb, %r9d
callq 0x393b5
movq %rax, %rbp
movl %r15d, %eax
movq %rax, 0xc8(%rsp)
testl %r15d, %r15d
jle 0x36883
movl %r12d, %ecx
xorl %r12d, %r12d
xorl %eax, %eax
movl %ecx, %r14d
callq 0x39f18
cltd
idivl 0xbc(%rsp)
movq 0xa8(%rsp), %rdi
movl %edx, %esi
callq 0x30fe5
movq %rax, %r15
movq %rax, %rdi
callq 0x2eaca
movl %r14d, %ecx
cmpl %r14d, %eax
jne 0x361a2
movq (%r13), %rax
cmpl $0x0, 0x1bc(%rax)
jle 0x363c0
xorl %r14d, %r14d
imulq $0x340, %r14, %r13      # imm = 0x340
cmpl $0x3, 0x30f08(%rax,%r13)
jne 0x36215
movq (%rbp,%r12,8), %rax
movl $0x0, (%rax,%r14,4)
leaq 0x9c660(%rip), %r13     # 0xd2870
jmp 0x363a9
xorl %eax, %eax
callq 0x7aa9e
movq $0x1, 0x3c(%rax)
movl %r14d, (%rax)
movq (%rbx,%r12,8), %rcx
movq %rax, 0x88(%rsp)
movq %rax, (%rcx,%r14,8)
xorpd %xmm0, %xmm0
movsd 0x6c2dd(%rip), %xmm1    # 0xa2520
callq 0x39f62
xorl %eax, %eax
movsd 0x6cac6(%rip), %xmm1    # 0xa2d18
ucomisd %xmm0, %xmm1
seta %al
movq (%rbp,%r12,8), %rcx
movl %eax, (%rcx,%r14,4)
leaq 0x9c607(%rip), %rax     # 0xd2870
movq (%rax), %rax
movl 0x30f08(%rax,%r13), %eax
cmpl $0x2, %eax
je 0x36316
cmpl $0x1, %eax
je 0x362f4
testl %eax, %eax
leaq 0x9c5e5(%rip), %r13     # 0xd2870
jne 0x363a9
movq 0x90(%rsp), %rax
movq (%rax,%r14,8), %rax
movq 0x98(%rsp), %rcx
movl (%rcx,%r14,4), %esi
xorl %ecx, %ecx
cmpl $0x3, %esi
jl 0x36374
movq (%r15), %rcx
xorps %xmm0, %xmm0
cvtsi2sdl (%rcx,%r14,8), %xmm0
decl %esi
xorl %ecx, %ecx
movl %esi, %edx
movl %esi, %edi
shrl $0x1f, %edi
addl %esi, %edi
sarl %edi
movslq %edi, %rsi
movsd (%rax,%rsi,8), %xmm1
ucomisd %xmm0, %xmm1
ja 0x362e1
movl %edi, %ecx
jmp 0x362e3
movl %edi, %edx
leal (%rdx,%rcx), %esi
movl %edx, %edi
subl %ecx, %edi
cmpl $0x1, %edi
jg 0x362c6
jmp 0x36374
movq 0x88(%rsp), %rcx
movb $0x3d, 0x4(%rcx)
movq (%r15), %rax
xorps %xmm0, %xmm0
cvtsi2sdl (%rax,%r14,8), %xmm0
movsd %xmm0, 0x8(%rcx)
jmp 0x36209
movq 0x90(%rsp), %rax
movq (%rax,%r14,8), %rax
movq 0x98(%rsp), %rcx
movl (%rcx,%r14,4), %esi
xorl %ecx, %ecx
cmpl $0x3, %esi
leaq 0x9c536(%rip), %r13     # 0xd2870
jl 0x36374
movq (%r15), %rcx
movsd (%rcx,%r14,8), %xmm0
decl %esi
xorl %ecx, %ecx
movl %esi, %edx
movl %esi, %edi
shrl $0x1f, %edi
addl %esi, %edi
sarl %edi
movslq %edi, %rsi
movsd (%rax,%rsi,8), %xmm1
ucomisd %xmm0, %xmm1
ja 0x36366
movl %edi, %ecx
jmp 0x36368
movl %edi, %edx
leal (%rdx,%rcx), %esi
movl %edx, %edi
subl %ecx, %edi
cmpl $0x1, %edi
jg 0x3634b
movq 0x88(%rsp), %rsi
movb $0x2a, 0x4(%rsi)
movslq %ecx, %rdx
incl %ecx
movsd 0x8(%rax,%rdx,8), %xmm0
movsd %xmm0, 0x10(%rsi)
movsd (%rax,%rdx,8), %xmm0
movsd %xmm0, 0x18(%rsi)
movl %edx, 0x38(%rsi)
xorps %xmm0, %xmm0
cvtsi2sd %ecx, %xmm0
movsd %xmm0, 0x8(%rsi)
incq %r14
movq (%r13), %rax
movslq 0x1bc(%rax), %rcx
cmpq %rcx, %r14
jl 0x361ea
movq (%r13), %rax
movl 0x1bc(%rax), %eax
leal (%rax,%rax,2), %eax
addl $-0x3, %eax
testl %eax, %eax
jle 0x367a1
xorl %ecx, %ecx
movl 0x7c(%rsp), %r14d
movl %ecx, 0x80(%rsp)
xorpd %xmm0, %xmm0
movsd 0x6c12e(%rip), %xmm1    # 0xa2520
callq 0x39f62
movsd 0xd0(%rsp), %xmm1
ucomisd %xmm0, %xmm1
jbe 0x36441
xorl %eax, %eax
callq 0x39f18
movq (%r13), %rcx
cltd
idivl 0x1bc(%rcx)
movslq %edx, %rax
imulq $0x340, %rax, %rdx      # imm = 0x340
cmpl $0x3, 0x30f08(%rcx,%rdx)
je 0x36406
movq (%rbp,%r12,8), %rcx
movl $0x1, %edx
subl (%rcx,%rax,4), %edx
movl %edx, (%rcx,%rax,4)
jmp 0x3676c
movq (%rbx,%r12,8), %rdi
movq (%rbp,%r12,8), %rsi
movq 0xa8(%rsp), %rdx
movl %r14d, %ecx
callq 0x35f08
movsd %xmm0, 0x88(%rsp)
movq (%r13), %rax
cmpl $0x0, 0x1bc(%rax)
jle 0x366f1
movl $0xffffffff, 0x84(%rsp) # imm = 0xFFFFFFFF
xorl %r14d, %r14d
imulq $0x340, %r14, %rcx      # imm = 0x340
movl 0x30f08(%rax,%rcx), %eax
cmpl $0x1, %eax
je 0x364aa
cmpl $0x3, %eax
je 0x366d8
movq (%rbp,%r12,8), %rax
cmpl $0x0, (%rax,%r14,4)
je 0x36513
movq (%rbp,%r12,8), %rsi
movl $0x1, %eax
subl (%rsi,%r14,4), %eax
movl %eax, (%rsi,%r14,4)
movq (%rbx,%r12,8), %rdi
movq %r15, %rdx
callq 0x35e9a
testl %eax, %eax
je 0x366c6
movq (%rbx,%r12,8), %rdi
movq (%rbp,%r12,8), %rsi
movq 0xa8(%rsp), %rdx
movl 0x7c(%rsp), %ecx
callq 0x35f08
movsd 0x88(%rsp), %xmm1
ucomisd %xmm0, %xmm1
jbe 0x366c6
movl %r14d, 0x84(%rsp)
movsd %xmm0, 0x88(%rsp)
jmp 0x366c6
movl $0x1, (%rax,%r14,4)
movq (%rbx,%r12,8), %rax
movq (%rax,%r14,8), %rax
movslq 0x38(%rax), %r13
testq %r13, %r13
jle 0x365c2
movq 0x90(%rsp), %rax
movq (%rax,%r14,8), %rax
movsd -0x8(%rax,%r13,8), %xmm0
movq (%rbx,%r12,8), %rdi
movq (%rdi,%r14,8), %rax
movsd %xmm0, 0x18(%rax)
movq (%rbp,%r12,8), %rsi
movq %r15, %rdx
callq 0x35e9a
testl %eax, %eax
je 0x365b1
movq (%rbx,%r12,8), %rdi
movq (%rbp,%r12,8), %rsi
movq 0xa8(%rsp), %rdx
movl 0x7c(%rsp), %ecx
callq 0x35f08
movsd 0x88(%rsp), %xmm1
ucomisd %xmm0, %xmm1
jbe 0x365b1
leal -0x1(%r13), %eax
movl %eax, 0xb8(%rsp)
movl $0xffffffff, 0xa4(%rsp) # imm = 0xFFFFFFFF
movl %r14d, 0x84(%rsp)
movsd %xmm0, 0x88(%rsp)
decq %r13
leaq 0x1(%r13), %rax
cmpq $0x1, %rax
jg 0x36530
movq 0x90(%rsp), %rax
movq (%rax,%r14,8), %rax
movq (%rbx,%r12,8), %rcx
movq (%rcx,%r14,8), %rcx
movslq 0x38(%rcx), %rdx
movsd (%rax,%rdx,8), %xmm0
movsd %xmm0, 0x18(%rcx)
cvttsd2si 0x8(%rcx), %eax
leal 0x1(%rax), %ecx
movq 0x98(%rsp), %rdx
cmpl (%rdx,%r14,4), %ecx
jge 0x36699
movslq %eax, %r13
incq %r13
movq 0x90(%rsp), %rax
movq (%rax,%r14,8), %rax
movsd (%rax,%r13,8), %xmm0
movq (%rbx,%r12,8), %rdi
movq (%rdi,%r14,8), %rax
movsd %xmm0, 0x10(%rax)
movq (%rbp,%r12,8), %rsi
movq %r15, %rdx
callq 0x35e9a
testl %eax, %eax
je 0x36681
movq (%rbx,%r12,8), %rdi
movq (%rbp,%r12,8), %rsi
movq 0xa8(%rsp), %rdx
movl 0x7c(%rsp), %ecx
callq 0x35f08
movsd 0x88(%rsp), %xmm1
ucomisd %xmm0, %xmm1
jbe 0x36681
movl $0x1, 0xa4(%rsp)
movl %r14d, 0x84(%rsp)
movl %r13d, 0xb8(%rsp)
movsd %xmm0, 0x88(%rsp)
incq %r13
movq 0x98(%rsp), %rax
movslq (%rax,%r14,4), %rax
cmpq %rax, %r13
jl 0x36604
movq (%rbx,%r12,8), %rax
movq (%rax,%r14,8), %rax
cvttsd2si 0x8(%rax), %ecx
movq 0x90(%rsp), %rdx
movq (%rdx,%r14,8), %rdx
movslq %ecx, %rcx
movsd (%rdx,%rcx,8), %xmm0
movsd %xmm0, 0x10(%rax)
leaq 0x9c1aa(%rip), %r13     # 0xd2870
movq (%rbp,%r12,8), %rax
movl $0x1, %ecx
subl (%rax,%r14,4), %ecx
movl %ecx, (%rax,%r14,4)
incq %r14
movq (%r13), %rax
movslq 0x1bc(%rax), %rcx
cmpq %rcx, %r14
jl 0x36482
jmp 0x366fc
movl $0xffffffff, 0x84(%rsp) # imm = 0xFFFFFFFF
movl 0x84(%rsp), %ecx
cmpl $-0x1, %ecx
je 0x36767
movq (%rbp,%r12,8), %rdx
movslq %ecx, %rcx
movl (%rdx,%rcx,4), %esi
leal -0x1(%rsi), %edi
negl %edi
movl %edi, (%rdx,%rcx,4)
decl %esi
movl 0x7c(%rsp), %r14d
je 0x3676c
imulq $0x340, %rcx, %rdx      # imm = 0x340
cmpl $0x1, 0x30f08(%rax,%rdx)
je 0x3676c
movq 0x90(%rsp), %rax
movq (%rax,%rcx,8), %rax
movslq 0xb8(%rsp), %rdx
movsd (%rax,%rdx,8), %xmm0
movq (%rbx,%r12,8), %rax
movq (%rax,%rcx,8), %rax
cmpl $-0x1, 0xa4(%rsp)
je 0x3678f
movsd %xmm0, 0x10(%rax)
jmp 0x3676c
movl 0x7c(%rsp), %r14d
movl 0x80(%rsp), %ecx
incl %ecx
movq (%r13), %rax
movl 0x1bc(%rax), %eax
leal (%rax,%rax,2), %eax
addl $-0x3, %eax
cmpl %eax, %ecx
jl 0x363df
jmp 0x367a6
movsd %xmm0, 0x18(%rax)
movl $0xffffffff, 0xa4(%rsp) # imm = 0xFFFFFFFF
jmp 0x3676c
movl 0x7c(%rsp), %r14d
movl %r14d, %edi
callq 0x7a713
movq %rax, %r15
movq (%r13), %rax
cmpl $0x0, 0x1bc(%rax)
jle 0x367f8
xorl %r14d, %r14d
movq (%rbp,%r12,8), %rax
cmpl $0x0, (%rax,%r14,4)
je 0x367e5
movq (%rbx,%r12,8), %rax
movq (%rax,%r14,8), %rdi
callq 0x7a45e
movq %r15, %rdi
movq %rax, %rsi
callq 0x7a77b
incq %r14
movq (%r13), %rax
movslq 0x1bc(%rax), %rax
cmpq %rax, %r14
jl 0x367c1
movq 0xc0(%rsp), %r14
movq 0x20(%r14), %rax
movq %rax, 0x20(%rsp)
movupd (%r14), %xmm0
movupd 0x10(%r14), %xmm1
movupd %xmm1, 0x10(%rsp)
movupd %xmm0, (%rsp)
movq %r15, %rdi
callq 0x9cafc
testl %eax, %eax
je 0x36863
movq 0x30(%r15), %rax
movq %rax, 0x30(%rsp)
movupd (%r15), %xmm0
movupd 0x10(%r15), %xmm1
movups 0x20(%r15), %xmm2
movups %xmm2, 0x20(%rsp)
movupd %xmm1, 0x10(%rsp)
movupd %xmm0, (%rsp)
callq 0x7a989
movq %r15, %rdi
callq 0x39194
jmp 0x3686e
movq %r14, %rdi
movq %r15, %rsi
callq 0x7b0fb
incq %r12
cmpq 0xc8(%rsp), %r12
movl 0x7c(%rsp), %ecx
jne 0x361a2
movq %rbp, %rdi
movl 0xb4(%rsp), %ebp
movl %ebp, %esi
callq 0x3915f
testl %ebp, %ebp
jle 0x3690a
xorl %r14d, %r14d
movq (%r13), %rax
cmpl $0x0, 0x1bc(%rax)
jle 0x368f4
movl $0x61e1, %r15d          # imm = 0x61E1
xorl %r12d, %r12d
cmpl $0x3, (%rax,%r15,8)
je 0x368dd
movq (%rbx,%r14,8), %rax
movq (%rax,%r12,8), %rsi
movl $0xe, %ecx
movq %rsp, %rdi
rep  movsq (%rsi), %es:(%rdi)
callq 0x7a935
movq (%rbx,%r14,8), %rax
movq (%rax,%r12,8), %rdi
callq 0x39194
incq %r12
movq (%r13), %rax
movslq 0x1bc(%rax), %rcx
addq $0x68, %r15
cmpq %rcx, %r12
jl 0x368b1
movq (%rbx,%r14,8), %rdi
callq 0x39194
incq %r14
cmpq 0xc8(%rsp), %r14
jne 0x3689b
movq %rbx, %rdi
callq 0x39194
movq (%r13), %rax
cmpl $0x0, 0x1bc(%rax)
movq 0xc0(%rsp), %r14
jle 0x3695b
xorl %ebx, %ebx
movq 0x98(%rsp), %rax
cmpl $0x0, (%rax,%rbx,4)
jle 0x36948
movq 0x90(%rsp), %rax
movq (%rax,%rbx,8), %rdi
callq 0x39194
incq %rbx
movq (%r13), %rax
movslq 0x1bc(%rax), %rax
cmpq %rax, %rbx
jl 0x36929
movq 0x90(%rsp), %rdi
callq 0x39194
movq 0x98(%rsp), %rdi
callq 0x39194
movq %r14, %rax
addq $0xd8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq