// File: /workspace/github_c_makefile_star2_O0/PoulinV[P]AxiCLASS/build/../source/harmonic.c
// Function: harmonic_cl_at_l
int harmonic_cl_at_l(
                     struct harmonic * phr,
                     double l,
                     double * cl_tot,    /* array with argument cl_tot[index_ct] (must be already allocated) */
                     double * * cl_md,   /* array with argument cl_md[index_md][index_ct] (must be already allocated only if several modes) */
                     double * * cl_md_ic /* array with argument cl_md_ic[index_md][index_ic1_ic2*phr->ct_size+index_ct] (must be already allocated for a given mode only if several ic's) */
                     ) {

  /** Summary: */

  /** - define local variables */

  int last_index;
  int index_md;
  int index_ic1,index_ic2,index_ic1_ic2;
  int index_ct;

  /** - (a) treat case in which there is only one mode and one initial condition.
      Then, only cl_tot needs to be filled. */

  if ((phr->md_size == 1) && (phr->ic_size[0] == 1)) {
    index_md = 0;
    if ((int)l <= phr->l[phr->l_size[index_md]-1]) {

      /* interpolate at l */
      class_call(array_interpolate_spline(phr->l,
                                          phr->l_size[index_md],
                                          phr->cl[index_md],
                                          phr->ddcl[index_md],
                                          phr->ct_size,
                                          l,
                                          &last_index,
                                          cl_tot,
                                          phr->ct_size,
                                          phr->error_message),
                 phr->error_message,
                 phr->error_message);

      /* set to zero for the types such that l<l_max */
      for (index_ct=0; index_ct<phr->ct_size; index_ct++)
        if ((int)l > phr->l_max_ct[index_md][index_ct])
          cl_tot[index_ct]=0.;
    }
    else {
      for (index_ct=0; index_ct<phr->ct_size; index_ct++)
        cl_tot[index_ct]=0.;
    }
  }

  /** - (b) treat case in which there is only one mode
      with several initial condition.
      Fill cl_md_ic[index_md=0] and sum it to get cl_tot. */

  if ((phr->md_size == 1) && (phr->ic_size[0] > 1)) {
    index_md = 0;
    for (index_ct=0; index_ct<phr->ct_size; index_ct++)
      cl_tot[index_ct]=0.;
    for (index_ic1 = 0; index_ic1 < phr->ic_size[index_md]; index_ic1++) {
      for (index_ic2 = index_ic1; index_ic2 < phr->ic_size[index_md]; index_ic2++) {
        index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic2,phr->ic_size[index_md]);
        if (((int)l <= phr->l[phr->l_size[index_md]-1]) &&
            (phr->is_non_zero[index_md][index_ic1_ic2] == _TRUE_)) {

          class_call(array_interpolate_spline(phr->l,
                                              phr->l_size[index_md],
                                              phr->cl[index_md],
                                              phr->ddcl[index_md],
                                              phr->ic_ic_size[index_md]*phr->ct_size,
                                              l,
                                              &last_index,
                                              cl_md_ic[index_md],
                                              phr->ic_ic_size[index_md]*phr->ct_size,
                                              phr->error_message),
                     phr->error_message,
                     phr->error_message);

          for (index_ct=0; index_ct<phr->ct_size; index_ct++)
            if ((int)l > phr->l_max_ct[index_md][index_ct])
              cl_md_ic[index_md][index_ic1_ic2*phr->ct_size+index_ct]=0.;
        }
        else {
          for (index_ct=0; index_ct<phr->ct_size; index_ct++)
            cl_md_ic[index_md][index_ic1_ic2*phr->ct_size+index_ct]=0.;
        }

        /* compute cl_tot by summing over cl_md_ic */
        for (index_ct=0; index_ct<phr->ct_size; index_ct++) {
          if (index_ic1 == index_ic2)
            cl_tot[index_ct]+=cl_md_ic[index_md][index_ic1_ic2*phr->ct_size+index_ct];
          else
            cl_tot[index_ct]+=2.*cl_md_ic[index_md][index_ic1_ic2*phr->ct_size+index_ct];
        }
      }
    }
  }

  /** - (c) loop over modes */

  if (phr->md_size > 1) {

    for (index_ct=0; index_ct<phr->ct_size; index_ct++)
      cl_tot[index_ct]=0.;

    for (index_md = 0; index_md < phr->md_size; index_md++) {

      /** - --> (c.1.) treat case in which the mode under consideration
          has only one initial condition.
          Fill cl_md[index_md]. */

      if (phr->ic_size[index_md] == 1) {
        if ((int)l <= phr->l[phr->l_size[index_md]-1]) {

          class_call(array_interpolate_spline(phr->l,
                                              phr->l_size[index_md],
                                              phr->cl[index_md],
                                              phr->ddcl[index_md],
                                              phr->ct_size,
                                              l,
                                              &last_index,
                                              cl_md[index_md],
                                              phr->ct_size,
                                              phr->error_message),
                     phr->error_message,
                     phr->error_message);

          for (index_ct=0; index_ct<phr->ct_size; index_ct++)
            if ((int)l > phr->l_max_ct[index_md][index_ct])
              cl_md[index_md][index_ct]=0.;
        }
        else {
          for (index_ct=0; index_ct<phr->ct_size; index_ct++)
            cl_md[index_md][index_ct]=0.;
        }
      }

      /** - --> (c.2.) treat case in which the mode under consideration
          has several initial conditions.
          Fill cl_md_ic[index_md] and sum it to get cl_md[index_md] */

      if (phr->ic_size[index_md] > 1) {

        if ((int)l <= phr->l[phr->l_size[index_md]-1]) {

          /* interpolate all ic and ct */
          class_call(array_interpolate_spline(phr->l,
                                              phr->l_size[index_md],
                                              phr->cl[index_md],
                                              phr->ddcl[index_md],
                                              phr->ic_ic_size[index_md]*phr->ct_size,
                                              l,
                                              &last_index,
                                              cl_md_ic[index_md],
                                              phr->ic_ic_size[index_md]*phr->ct_size,
                                              phr->error_message),
                     phr->error_message,
                     phr->error_message);

          /* set to zero some of the components */
          for (index_ic1 = 0; index_ic1 < phr->ic_size[index_md]; index_ic1++) {
            for (index_ic2 = index_ic1; index_ic2 < phr->ic_size[index_md]; index_ic2++) {
              index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic2,phr->ic_size[index_md]);
              for (index_ct=0; index_ct<phr->ct_size; index_ct++) {

                if (((int)l > phr->l_max_ct[index_md][index_ct]) || (phr->is_non_zero[index_md][index_ic1_ic2] == _FALSE_))
                  cl_md_ic[index_md][index_ic1_ic2*phr->ct_size+index_ct]=0.;
              }
            }
          }
        }
        /* if l was too big, set anyway all components to zero */
        else {
          for (index_ic1 = 0; index_ic1 < phr->ic_size[index_md]; index_ic1++) {
            for (index_ic2 = index_ic1; index_ic2 < phr->ic_size[index_md]; index_ic2++) {
              index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic2,phr->ic_size[index_md]);
              for (index_ct=0; index_ct<phr->ct_size; index_ct++) {
                cl_md_ic[index_md][index_ic1_ic2*phr->ct_size+index_ct]=0.;
              }
            }
          }
        }

        /* sum up all ic for each mode */

        for (index_ct=0; index_ct<phr->ct_size; index_ct++) {

          cl_md[index_md][index_ct]=0.;

          for (index_ic1 = 0; index_ic1 < phr->ic_size[index_md]; index_ic1++) {
            for (index_ic2 = index_ic1; index_ic2 < phr->ic_size[index_md]; index_ic2++) {
              index_ic1_ic2 = index_symmetric_matrix(index_ic1,index_ic2,phr->ic_size[index_md]);

              if (index_ic1 == index_ic2)
                cl_md[index_md][index_ct]+=cl_md_ic[index_md][index_ic1_ic2*phr->ct_size+index_ct];
              else
                cl_md[index_md][index_ct]+=2.*cl_md_ic[index_md][index_ic1_ic2*phr->ct_size+index_ct];
            }
          }
        }
      }

      /** - --> (c.3.) add contribution of cl_md[index_md] to cl_tot */

      for (index_ct=0; index_ct<phr->ct_size; index_ct++)
        cl_tot[index_ct]+=cl_md[index_md][index_ct];
    }
  }

  return _SUCCESS_;

}

// Assembly:
subq $0x2098, %rsp           # imm = 0x2098
movq %rdi, 0x2088(%rsp)
movsd %xmm0, 0x2080(%rsp)
movq %rsi, 0x2078(%rsp)
movq %rdx, 0x2070(%rsp)
movq %rcx, 0x2068(%rsp)
movq 0x2088(%rsp), %rax
cmpl $0x1, 0x10(%rax)
jne 0x14c0d9
movq 0x2088(%rsp), %rax
movq 0x18(%rax), %rax
cmpl $0x1, (%rax)
jne 0x14c0d9
movl $0x0, 0x2060(%rsp)
cvttsd2si 0x2080(%rsp), %eax
cvtsi2sd %eax, %xmm1
movq 0x2088(%rsp), %rax
movq 0xb0(%rax), %rax
movq 0x2088(%rsp), %rcx
movq 0xa0(%rcx), %rcx
movslq 0x2060(%rsp), %rdx
movl (%rcx,%rdx,4), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm0
ucomisd %xmm1, %xmm0
jb 0x14c088
movq 0x2088(%rsp), %rax
movq 0xb0(%rax), %rdi
movq 0x2088(%rsp), %rax
movq 0xa0(%rax), %rax
movslq 0x2060(%rsp), %rcx
movl (%rax,%rcx,4), %esi
movq 0x2088(%rsp), %rax
movq 0xd0(%rax), %rax
movslq 0x2060(%rsp), %rcx
movq (%rax,%rcx,8), %rdx
movq 0x2088(%rsp), %rax
movq 0xd8(%rax), %rax
movslq 0x2060(%rsp), %rcx
movq (%rax,%rcx,8), %rcx
movq 0x2088(%rsp), %rax
movl 0x9c(%rax), %r8d
movsd 0x2080(%rsp), %xmm0
movq 0x2078(%rsp), %r11
movq 0x2088(%rsp), %rax
movl 0x9c(%rax), %r10d
movq 0x2088(%rsp), %rax
addq $0xea, %rax
leaq 0x2064(%rsp), %r9
movq %r11, (%rsp)
movl %r10d, 0x8(%rsp)
movq %rax, 0x10(%rsp)
callq 0x24220
cmpl $0x1, %eax
jne 0x14c006
leaq 0x1850(%rsp), %rdi
movq 0x2088(%rsp), %rcx
addq $0xea, %rcx
leaq 0x86421(%rip), %rsi     # 0x1d23d8
leaq 0xb9cc5(%rip), %rdx     # 0x205c83
movb $0x0, %al
callq 0x5b9c0
movq 0x2088(%rsp), %rdi
addq $0xea, %rdi
leaq 0x1850(%rsp), %r8
leaq 0x86051(%rip), %rsi     # 0x1d2034
leaq 0xb9d41(%rip), %rdx     # 0x205d2b
movl $0x49, %ecx
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x2094(%rsp)
jmp 0x14d2a4
movl $0x0, 0x2050(%rsp)
movl 0x2050(%rsp), %eax
movq 0x2088(%rsp), %rcx
cmpl 0x9c(%rcx), %eax
jge 0x14c086
cvttsd2si 0x2080(%rsp), %eax
movq 0x2088(%rsp), %rcx
movq 0xb8(%rcx), %rcx
movslq 0x2060(%rsp), %rdx
movq (%rcx,%rdx,8), %rcx
movslq 0x2050(%rsp), %rdx
cmpl (%rcx,%rdx,4), %eax
jle 0x14c071
movq 0x2078(%rsp), %rax
movslq 0x2050(%rsp), %rcx
xorps %xmm0, %xmm0
movsd %xmm0, (%rax,%rcx,8)
jmp 0x14c073
movl 0x2050(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x2050(%rsp)
jmp 0x14c011
jmp 0x14c0d7
movl $0x0, 0x2050(%rsp)
movl 0x2050(%rsp), %eax
movq 0x2088(%rsp), %rcx
cmpl 0x9c(%rcx), %eax
jge 0x14c0d5
movq 0x2078(%rsp), %rax
movslq 0x2050(%rsp), %rcx
xorps %xmm0, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movl 0x2050(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x2050(%rsp)
jmp 0x14c093
jmp 0x14c0d7
jmp 0x14c0d9
movq 0x2088(%rsp), %rax
cmpl $0x1, 0x10(%rax)
jne 0x14c6ad
movq 0x2088(%rsp), %rax
movq 0x18(%rax), %rax
cmpl $0x1, (%rax)
jle 0x14c6ad
movl $0x0, 0x2060(%rsp)
movl $0x0, 0x2050(%rsp)
movl 0x2050(%rsp), %eax
movq 0x2088(%rsp), %rcx
cmpl 0x9c(%rcx), %eax
jge 0x14c158
movq 0x2078(%rsp), %rax
movslq 0x2050(%rsp), %rcx
xorps %xmm0, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movl 0x2050(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x2050(%rsp)
jmp 0x14c116
movl $0x0, 0x205c(%rsp)
movl 0x205c(%rsp), %eax
movq 0x2088(%rsp), %rcx
movq 0x18(%rcx), %rcx
movslq 0x2060(%rsp), %rdx
cmpl (%rcx,%rdx,4), %eax
jge 0x14c6ab
movl 0x205c(%rsp), %eax
movl %eax, 0x2058(%rsp)
movl 0x2058(%rsp), %eax
movq 0x2088(%rsp), %rcx
movq 0x18(%rcx), %rcx
movslq 0x2060(%rsp), %rdx
cmpl (%rcx,%rdx,4), %eax
jge 0x14c693
movl 0x205c(%rsp), %eax
cmpl 0x2058(%rsp), %eax
jg 0x14c21f
movl 0x2058(%rsp), %eax
movq 0x2088(%rsp), %rcx
movq 0x18(%rcx), %rcx
movslq 0x2060(%rsp), %rdx
movl (%rcx,%rdx,4), %ecx
imull 0x205c(%rsp), %ecx
addl %ecx, %eax
movl %eax, 0x48(%rsp)
movl 0x205c(%rsp), %eax
movl 0x205c(%rsp), %ecx
addl $0x1, %ecx
imull %ecx, %eax
movl $0x2, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movl 0x48(%rsp), %eax
subl %ecx, %eax
movl %eax, 0x4c(%rsp)
jmp 0x14c273
movl 0x205c(%rsp), %eax
movq 0x2088(%rsp), %rcx
movq 0x18(%rcx), %rcx
movslq 0x2060(%rsp), %rdx
movl (%rcx,%rdx,4), %ecx
imull 0x2058(%rsp), %ecx
addl %ecx, %eax
movl %eax, 0x44(%rsp)
movl 0x2058(%rsp), %eax
movl 0x2058(%rsp), %ecx
addl $0x1, %ecx
imull %ecx, %eax
movl $0x2, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movl 0x44(%rsp), %eax
subl %ecx, %eax
movl %eax, 0x4c(%rsp)
movl 0x4c(%rsp), %eax
movl %eax, 0x2054(%rsp)
cvttsd2si 0x2080(%rsp), %eax
cvtsi2sd %eax, %xmm1
movq 0x2088(%rsp), %rax
movq 0xb0(%rax), %rax
movq 0x2088(%rsp), %rcx
movq 0xa0(%rcx), %rcx
movslq 0x2060(%rsp), %rdx
movl (%rcx,%rdx,4), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm0
ucomisd %xmm1, %xmm0
jb 0x14c50a
movq 0x2088(%rsp), %rax
movq 0x28(%rax), %rax
movslq 0x2060(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movslq 0x2054(%rsp), %rcx
movswl (%rax,%rcx,2), %eax
cmpl $0x1, %eax
jne 0x14c50a
movq 0x2088(%rsp), %rax
movq 0xb0(%rax), %rdi
movq 0x2088(%rsp), %rax
movq 0xa0(%rax), %rax
movslq 0x2060(%rsp), %rcx
movl (%rax,%rcx,4), %esi
movq 0x2088(%rsp), %rax
movq 0xd0(%rax), %rax
movslq 0x2060(%rsp), %rcx
movq (%rax,%rcx,8), %rdx
movq 0x2088(%rsp), %rax
movq 0xd8(%rax), %rax
movslq 0x2060(%rsp), %rcx
movq (%rax,%rcx,8), %rcx
movq 0x2088(%rsp), %rax
movq 0x20(%rax), %rax
movslq 0x2060(%rsp), %r8
movl (%rax,%r8,4), %r8d
movq 0x2088(%rsp), %rax
imull 0x9c(%rax), %r8d
movsd 0x2080(%rsp), %xmm0
movq 0x2068(%rsp), %rax
movslq 0x2060(%rsp), %r9
movq (%rax,%r9,8), %r11
movq 0x2088(%rsp), %rax
movq 0x20(%rax), %rax
movslq 0x2060(%rsp), %r9
movl (%rax,%r9,4), %r10d
movq 0x2088(%rsp), %rax
imull 0x9c(%rax), %r10d
movq 0x2088(%rsp), %rax
addq $0xea, %rax
leaq 0x2064(%rsp), %r9
movq %r11, (%rsp)
movl %r10d, 0x8(%rsp)
movq %rax, 0x10(%rsp)
callq 0x24220
cmpl $0x1, %eax
jne 0x14c45d
leaq 0x1050(%rsp), %rdi
movq 0x2088(%rsp), %rcx
addq $0xea, %rcx
leaq 0x85fca(%rip), %rsi     # 0x1d23d8
leaq 0xb9927(%rip), %rdx     # 0x205d3c
movb $0x0, %al
callq 0x5b9c0
movq 0x2088(%rsp), %rdi
addq $0xea, %rdi
leaq 0x1050(%rsp), %r8
leaq 0x85bfa(%rip), %rsi     # 0x1d2034
leaq 0xb98ea(%rip), %rdx     # 0x205d2b
movl $0x6f, %ecx
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x2094(%rsp)
jmp 0x14d2a4
movl $0x0, 0x2050(%rsp)
movl 0x2050(%rsp), %eax
movq 0x2088(%rsp), %rcx
cmpl 0x9c(%rcx), %eax
jge 0x14c508
cvttsd2si 0x2080(%rsp), %eax
movq 0x2088(%rsp), %rcx
movq 0xb8(%rcx), %rcx
movslq 0x2060(%rsp), %rdx
movq (%rcx,%rdx,8), %rcx
movslq 0x2050(%rsp), %rdx
cmpl (%rcx,%rdx,4), %eax
jle 0x14c4f0
movq 0x2068(%rsp), %rax
movslq 0x2060(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movl 0x2054(%rsp), %ecx
movq 0x2088(%rsp), %rdx
imull 0x9c(%rdx), %ecx
addl 0x2050(%rsp), %ecx
movslq %ecx, %rcx
xorps %xmm0, %xmm0
movsd %xmm0, (%rax,%rcx,8)
jmp 0x14c4f2
movl 0x2050(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x2050(%rsp)
jmp 0x14c468
jmp 0x14c57d
movl $0x0, 0x2050(%rsp)
movl 0x2050(%rsp), %eax
movq 0x2088(%rsp), %rcx
cmpl 0x9c(%rcx), %eax
jge 0x14c57b
movq 0x2068(%rsp), %rax
movslq 0x2060(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movl 0x2054(%rsp), %ecx
movq 0x2088(%rsp), %rdx
imull 0x9c(%rdx), %ecx
addl 0x2050(%rsp), %ecx
movslq %ecx, %rcx
xorps %xmm0, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movl 0x2050(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x2050(%rsp)
jmp 0x14c515
jmp 0x14c57d
movl $0x0, 0x2050(%rsp)
movl 0x2050(%rsp), %eax
movq 0x2088(%rsp), %rcx
cmpl 0x9c(%rcx), %eax
jge 0x14c67b
movl 0x205c(%rsp), %eax
cmpl 0x2058(%rsp), %eax
jne 0x14c608
movq 0x2068(%rsp), %rax
movslq 0x2060(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movl 0x2054(%rsp), %ecx
movq 0x2088(%rsp), %rdx
imull 0x9c(%rdx), %ecx
addl 0x2050(%rsp), %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm0
movq 0x2078(%rsp), %rax
movslq 0x2050(%rsp), %rcx
addsd (%rax,%rcx,8), %xmm0
movsd %xmm0, (%rax,%rcx,8)
jmp 0x14c663
movq 0x2068(%rsp), %rax
movslq 0x2060(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movl 0x2054(%rsp), %ecx
movq 0x2088(%rsp), %rdx
imull 0x9c(%rdx), %ecx
addl 0x2050(%rsp), %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm0
movq 0x2078(%rsp), %rax
movslq 0x2050(%rsp), %rcx
movsd (%rax,%rcx,8), %xmm1
addsd %xmm0, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
jmp 0x14c665
movl 0x2050(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x2050(%rsp)
jmp 0x14c588
jmp 0x14c67d
movl 0x2058(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x2058(%rsp)
jmp 0x14c195
jmp 0x14c695
movl 0x205c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x205c(%rsp)
jmp 0x14c163
jmp 0x14c6ad
movq 0x2088(%rsp), %rax
cmpl $0x1, 0x10(%rax)
jle 0x14d299
movl $0x0, 0x2050(%rsp)
movl 0x2050(%rsp), %eax
movq 0x2088(%rsp), %rcx
cmpl 0x9c(%rcx), %eax
jge 0x14c70c
movq 0x2078(%rsp), %rax
movslq 0x2050(%rsp), %rcx
xorps %xmm0, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movl 0x2050(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x2050(%rsp)
jmp 0x14c6ca
movl $0x0, 0x2060(%rsp)
movl 0x2060(%rsp), %eax
movq 0x2088(%rsp), %rcx
cmpl 0x10(%rcx), %eax
jge 0x14d297
movq 0x2088(%rsp), %rax
movq 0x18(%rax), %rax
movslq 0x2060(%rsp), %rcx
cmpl $0x1, (%rax,%rcx,4)
jne 0x14c9bb
cvttsd2si 0x2080(%rsp), %eax
cvtsi2sd %eax, %xmm1
movq 0x2088(%rsp), %rax
movq 0xb0(%rax), %rax
movq 0x2088(%rsp), %rcx
movq 0xa0(%rcx), %rcx
movslq 0x2060(%rsp), %rdx
movl (%rcx,%rdx,4), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm0
ucomisd %xmm1, %xmm0
jb 0x14c95e
movq 0x2088(%rsp), %rax
movq 0xb0(%rax), %rdi
movq 0x2088(%rsp), %rax
movq 0xa0(%rax), %rax
movslq 0x2060(%rsp), %rcx
movl (%rax,%rcx,4), %esi
movq 0x2088(%rsp), %rax
movq 0xd0(%rax), %rax
movslq 0x2060(%rsp), %rcx
movq (%rax,%rcx,8), %rdx
movq 0x2088(%rsp), %rax
movq 0xd8(%rax), %rax
movslq 0x2060(%rsp), %rcx
movq (%rax,%rcx,8), %rcx
movq 0x2088(%rsp), %rax
movl 0x9c(%rax), %r8d
movsd 0x2080(%rsp), %xmm0
movq 0x2070(%rsp), %rax
movslq 0x2060(%rsp), %r9
movq (%rax,%r9,8), %r11
movq 0x2088(%rsp), %rax
movl 0x9c(%rax), %r10d
movq 0x2088(%rsp), %rax
addq $0xea, %rax
leaq 0x2064(%rsp), %r9
movq %r11, (%rsp)
movl %r10d, 0x8(%rsp)
movq %rax, 0x10(%rsp)
callq 0x24220
cmpl $0x1, %eax
jne 0x14c8cd
leaq 0x850(%rsp), %rdi
movq 0x2088(%rsp), %rcx
addq $0xea, %rcx
leaq 0x85b5a(%rip), %rsi     # 0x1d23d8
leaq 0xb959f(%rip), %rdx     # 0x205e24
movb $0x0, %al
callq 0x5b9c0
movq 0x2088(%rsp), %rdi
addq $0xea, %rdi
leaq 0x850(%rsp), %r8
leaq 0x8578a(%rip), %rsi     # 0x1d2034
leaq 0xb947a(%rip), %rdx     # 0x205d2b
movl $0xa0, %ecx
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x2094(%rsp)
jmp 0x14d2a4
movl $0x0, 0x2050(%rsp)
movl 0x2050(%rsp), %eax
movq 0x2088(%rsp), %rcx
cmpl 0x9c(%rcx), %eax
jge 0x14c95c
cvttsd2si 0x2080(%rsp), %eax
movq 0x2088(%rsp), %rcx
movq 0xb8(%rcx), %rcx
movslq 0x2060(%rsp), %rdx
movq (%rcx,%rdx,8), %rcx
movslq 0x2050(%rsp), %rdx
cmpl (%rcx,%rdx,4), %eax
jle 0x14c944
movq 0x2070(%rsp), %rax
movslq 0x2060(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movslq 0x2050(%rsp), %rcx
xorps %xmm0, %xmm0
movsd %xmm0, (%rax,%rcx,8)
jmp 0x14c946
movl 0x2050(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x2050(%rsp)
jmp 0x14c8d8
jmp 0x14c9b9
movl $0x0, 0x2050(%rsp)
movl 0x2050(%rsp), %eax
movq 0x2088(%rsp), %rcx
cmpl 0x9c(%rcx), %eax
jge 0x14c9b7
movq 0x2070(%rsp), %rax
movslq 0x2060(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movslq 0x2050(%rsp), %rcx
xorps %xmm0, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movl 0x2050(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x2050(%rsp)
jmp 0x14c969
jmp 0x14c9b9
jmp 0x14c9bb
movq 0x2088(%rsp), %rax
movq 0x18(%rax), %rax
movslq 0x2060(%rsp), %rcx
cmpl $0x1, (%rax,%rcx,4)
jle 0x14d20f
cvttsd2si 0x2080(%rsp), %eax
cvtsi2sd %eax, %xmm1
movq 0x2088(%rsp), %rax
movq 0xb0(%rax), %rax
movq 0x2088(%rsp), %rcx
movq 0xa0(%rcx), %rcx
movslq 0x2060(%rsp), %rdx
movl (%rcx,%rdx,4), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm0
ucomisd %xmm1, %xmm0
jb 0x14cdb4
movq 0x2088(%rsp), %rax
movq 0xb0(%rax), %rdi
movq 0x2088(%rsp), %rax
movq 0xa0(%rax), %rax
movslq 0x2060(%rsp), %rcx
movl (%rax,%rcx,4), %esi
movq 0x2088(%rsp), %rax
movq 0xd0(%rax), %rax
movslq 0x2060(%rsp), %rcx
movq (%rax,%rcx,8), %rdx
movq 0x2088(%rsp), %rax
movq 0xd8(%rax), %rax
movslq 0x2060(%rsp), %rcx
movq (%rax,%rcx,8), %rcx
movq 0x2088(%rsp), %rax
movq 0x20(%rax), %rax
movslq 0x2060(%rsp), %r8
movl (%rax,%r8,4), %r8d
movq 0x2088(%rsp), %rax
imull 0x9c(%rax), %r8d
movsd 0x2080(%rsp), %xmm0
movq 0x2068(%rsp), %rax
movslq 0x2060(%rsp), %r9
movq (%rax,%r9,8), %r11
movq 0x2088(%rsp), %rax
movq 0x20(%rax), %rax
movslq 0x2060(%rsp), %r9
movl (%rax,%r9,4), %r10d
movq 0x2088(%rsp), %rax
imull 0x9c(%rax), %r10d
movq 0x2088(%rsp), %rax
addq $0xea, %rax
leaq 0x2064(%rsp), %r9
movq %r11, (%rsp)
movl %r10d, 0x8(%rsp)
movq %rax, 0x10(%rsp)
callq 0x24220
cmpl $0x1, %eax
jne 0x14cb85
leaq 0x50(%rsp), %rdi
movq 0x2088(%rsp), %rcx
addq $0xea, %rcx
leaq 0x8589f(%rip), %rsi     # 0x1d23d8
leaq 0xb91fc(%rip), %rdx     # 0x205d3c
movb $0x0, %al
callq 0x5b9c0
movq 0x2088(%rsp), %rdi
addq $0xea, %rdi
leaq 0x50(%rsp), %r8
leaq 0x854d2(%rip), %rsi     # 0x1d2034
leaq 0xb91c2(%rip), %rdx     # 0x205d2b
movl $0xc0, %ecx
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x2094(%rsp)
jmp 0x14d2a4
movl $0x0, 0x205c(%rsp)
movl 0x205c(%rsp), %eax
movq 0x2088(%rsp), %rcx
movq 0x18(%rcx), %rcx
movslq 0x2060(%rsp), %rdx
cmpl (%rcx,%rdx,4), %eax
jge 0x14cdaf
movl 0x205c(%rsp), %eax
movl %eax, 0x2058(%rsp)
movl 0x2058(%rsp), %eax
movq 0x2088(%rsp), %rcx
movq 0x18(%rcx), %rcx
movslq 0x2060(%rsp), %rdx
cmpl (%rcx,%rdx,4), %eax
jge 0x14cd97
movl 0x205c(%rsp), %eax
cmpl 0x2058(%rsp), %eax
jg 0x14cc4c
movl 0x2058(%rsp), %eax
movq 0x2088(%rsp), %rcx
movq 0x18(%rcx), %rcx
movslq 0x2060(%rsp), %rdx
movl (%rcx,%rdx,4), %ecx
imull 0x205c(%rsp), %ecx
addl %ecx, %eax
movl %eax, 0x3c(%rsp)
movl 0x205c(%rsp), %eax
movl 0x205c(%rsp), %ecx
addl $0x1, %ecx
imull %ecx, %eax
movl $0x2, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movl 0x3c(%rsp), %eax
subl %ecx, %eax
movl %eax, 0x40(%rsp)
jmp 0x14cca0
movl 0x205c(%rsp), %eax
movq 0x2088(%rsp), %rcx
movq 0x18(%rcx), %rcx
movslq 0x2060(%rsp), %rdx
movl (%rcx,%rdx,4), %ecx
imull 0x2058(%rsp), %ecx
addl %ecx, %eax
movl %eax, 0x38(%rsp)
movl 0x2058(%rsp), %eax
movl 0x2058(%rsp), %ecx
addl $0x1, %ecx
imull %ecx, %eax
movl $0x2, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movl 0x38(%rsp), %eax
subl %ecx, %eax
movl %eax, 0x40(%rsp)
movl 0x40(%rsp), %eax
movl %eax, 0x2054(%rsp)
movl $0x0, 0x2050(%rsp)
movl 0x2050(%rsp), %eax
movq 0x2088(%rsp), %rcx
cmpl 0x9c(%rcx), %eax
jge 0x14cd7f
cvttsd2si 0x2080(%rsp), %eax
movq 0x2088(%rsp), %rcx
movq 0xb8(%rcx), %rcx
movslq 0x2060(%rsp), %rdx
movq (%rcx,%rdx,8), %rcx
movslq 0x2050(%rsp), %rdx
cmpl (%rcx,%rdx,4), %eax
jg 0x14cd2b
movq 0x2088(%rsp), %rax
movq 0x28(%rax), %rax
movslq 0x2060(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movslq 0x2054(%rsp), %rcx
movswl (%rax,%rcx,2), %eax
cmpl $0x0, %eax
jne 0x14cd67
movq 0x2068(%rsp), %rax
movslq 0x2060(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movl 0x2054(%rsp), %ecx
movq 0x2088(%rsp), %rdx
imull 0x9c(%rdx), %ecx
addl 0x2050(%rsp), %ecx
movslq %ecx, %rcx
xorps %xmm0, %xmm0
movsd %xmm0, (%rax,%rcx,8)
jmp 0x14cd69
movl 0x2050(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x2050(%rsp)
jmp 0x14ccb6
jmp 0x14cd81
movl 0x2058(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x2058(%rsp)
jmp 0x14cbc2
jmp 0x14cd99
movl 0x205c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x205c(%rsp)
jmp 0x14cb90
jmp 0x14cf7d
movl $0x0, 0x205c(%rsp)
movl 0x205c(%rsp), %eax
movq 0x2088(%rsp), %rcx
movq 0x18(%rcx), %rcx
movslq 0x2060(%rsp), %rdx
cmpl (%rcx,%rdx,4), %eax
jge 0x14cf7b
movl 0x205c(%rsp), %eax
movl %eax, 0x2058(%rsp)
movl 0x2058(%rsp), %eax
movq 0x2088(%rsp), %rcx
movq 0x18(%rcx), %rcx
movslq 0x2060(%rsp), %rdx
cmpl (%rcx,%rdx,4), %eax
jge 0x14cf63
movl 0x205c(%rsp), %eax
cmpl 0x2058(%rsp), %eax
jg 0x14ce7b
movl 0x2058(%rsp), %eax
movq 0x2088(%rsp), %rcx
movq 0x18(%rcx), %rcx
movslq 0x2060(%rsp), %rdx
movl (%rcx,%rdx,4), %ecx
imull 0x205c(%rsp), %ecx
addl %ecx, %eax
movl %eax, 0x30(%rsp)
movl 0x205c(%rsp), %eax
movl 0x205c(%rsp), %ecx
addl $0x1, %ecx
imull %ecx, %eax
movl $0x2, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movl 0x30(%rsp), %eax
subl %ecx, %eax
movl %eax, 0x34(%rsp)
jmp 0x14cecf
movl 0x205c(%rsp), %eax
movq 0x2088(%rsp), %rcx
movq 0x18(%rcx), %rcx
movslq 0x2060(%rsp), %rdx
movl (%rcx,%rdx,4), %ecx
imull 0x2058(%rsp), %ecx
addl %ecx, %eax
movl %eax, 0x2c(%rsp)
movl 0x2058(%rsp), %eax
movl 0x2058(%rsp), %ecx
addl $0x1, %ecx
imull %ecx, %eax
movl $0x2, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movl 0x2c(%rsp), %eax
subl %ecx, %eax
movl %eax, 0x34(%rsp)
movl 0x34(%rsp), %eax
movl %eax, 0x2054(%rsp)
movl $0x0, 0x2050(%rsp)
movl 0x2050(%rsp), %eax
movq 0x2088(%rsp), %rcx
cmpl 0x9c(%rcx), %eax
jge 0x14cf4b
movq 0x2068(%rsp), %rax
movslq 0x2060(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movl 0x2054(%rsp), %ecx
movq 0x2088(%rsp), %rdx
imull 0x9c(%rdx), %ecx
addl 0x2050(%rsp), %ecx
movslq %ecx, %rcx
xorps %xmm0, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movl 0x2050(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x2050(%rsp)
jmp 0x14cee5
jmp 0x14cf4d
movl 0x2058(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x2058(%rsp)
jmp 0x14cdf1
jmp 0x14cf65
movl 0x205c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x205c(%rsp)
jmp 0x14cdbf
jmp 0x14cf7d
movl $0x0, 0x2050(%rsp)
movl 0x2050(%rsp), %eax
movq 0x2088(%rsp), %rcx
cmpl 0x9c(%rcx), %eax
jge 0x14d20d
movq 0x2070(%rsp), %rax
movslq 0x2060(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movslq 0x2050(%rsp), %rcx
xorps %xmm0, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movl $0x0, 0x205c(%rsp)
movl 0x205c(%rsp), %eax
movq 0x2088(%rsp), %rcx
movq 0x18(%rcx), %rcx
movslq 0x2060(%rsp), %rdx
cmpl (%rcx,%rdx,4), %eax
jge 0x14d1f5
movl 0x205c(%rsp), %eax
movl %eax, 0x2058(%rsp)
movl 0x2058(%rsp), %eax
movq 0x2088(%rsp), %rcx
movq 0x18(%rcx), %rcx
movslq 0x2060(%rsp), %rdx
cmpl (%rcx,%rdx,4), %eax
jge 0x14d1dd
movl 0x205c(%rsp), %eax
cmpl 0x2058(%rsp), %eax
jg 0x14d08e
movl 0x2058(%rsp), %eax
movq 0x2088(%rsp), %rcx
movq 0x18(%rcx), %rcx
movslq 0x2060(%rsp), %rdx
movl (%rcx,%rdx,4), %ecx
imull 0x205c(%rsp), %ecx
addl %ecx, %eax
movl %eax, 0x24(%rsp)
movl 0x205c(%rsp), %eax
movl 0x205c(%rsp), %ecx
addl $0x1, %ecx
imull %ecx, %eax
movl $0x2, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movl 0x24(%rsp), %eax
subl %ecx, %eax
movl %eax, 0x28(%rsp)
jmp 0x14d0e2
movl 0x205c(%rsp), %eax
movq 0x2088(%rsp), %rcx
movq 0x18(%rcx), %rcx
movslq 0x2060(%rsp), %rdx
movl (%rcx,%rdx,4), %ecx
imull 0x2058(%rsp), %ecx
addl %ecx, %eax
movl %eax, 0x20(%rsp)
movl 0x2058(%rsp), %eax
movl 0x2058(%rsp), %ecx
addl $0x1, %ecx
imull %ecx, %eax
movl $0x2, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movl 0x20(%rsp), %eax
subl %ecx, %eax
movl %eax, 0x28(%rsp)
movl 0x28(%rsp), %eax
movl %eax, 0x2054(%rsp)
movl 0x205c(%rsp), %eax
cmpl 0x2058(%rsp), %eax
jne 0x14d15e
movq 0x2068(%rsp), %rax
movslq 0x2060(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movl 0x2054(%rsp), %ecx
movq 0x2088(%rsp), %rdx
imull 0x9c(%rdx), %ecx
addl 0x2050(%rsp), %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm0
movq 0x2070(%rsp), %rax
movslq 0x2060(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movslq 0x2050(%rsp), %rcx
addsd (%rax,%rcx,8), %xmm0
movsd %xmm0, (%rax,%rcx,8)
jmp 0x14d1c5
movq 0x2068(%rsp), %rax
movslq 0x2060(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movl 0x2054(%rsp), %ecx
movq 0x2088(%rsp), %rdx
imull 0x9c(%rdx), %ecx
addl 0x2050(%rsp), %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm0
movq 0x2070(%rsp), %rax
movslq 0x2060(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movslq 0x2050(%rsp), %rcx
movsd (%rax,%rcx,8), %xmm1
addsd %xmm0, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
jmp 0x14d1c7
movl 0x2058(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x2058(%rsp)
jmp 0x14d004
jmp 0x14d1df
movl 0x205c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x205c(%rsp)
jmp 0x14cfd2
jmp 0x14d1f7
movl 0x2050(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x2050(%rsp)
jmp 0x14cf88
jmp 0x14d20f
movl $0x0, 0x2050(%rsp)
movl 0x2050(%rsp), %eax
movq 0x2088(%rsp), %rcx
cmpl 0x9c(%rcx), %eax
jge 0x14d27f
movq 0x2070(%rsp), %rax
movslq 0x2060(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movslq 0x2050(%rsp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq 0x2078(%rsp), %rax
movslq 0x2050(%rsp), %rcx
addsd (%rax,%rcx,8), %xmm0
movsd %xmm0, (%rax,%rcx,8)
movl 0x2050(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x2050(%rsp)
jmp 0x14d21a
jmp 0x14d281
movl 0x2060(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x2060(%rsp)
jmp 0x14c717
jmp 0x14d299
movl $0x0, 0x2094(%rsp)
movl 0x2094(%rsp), %eax
addq $0x2098, %rsp           # imm = 0x2098
retq
nopw %cs:(%rax,%rax)