// File: /workspace/github_c_makefile_star2_O0/yui0[P]img2vec/./potracelib.h
// Function: opticurve
static int opticurve(privpath_t *pp, double opttolerance) {
  int m = pp->curve.n;
  int *pt = NULL;     /* pt[m+1] */
  double *pen = NULL; /* pen[m+1] */
  int *len = NULL;    /* len[m+1] */
  opti_t *opt = NULL; /* opt[m+1] */
  int om;
  int i,j,r;
  opti_t o;
  dpoint_t p0;
  int i1;
  double area;
  double alpha;
  double *s = NULL;
  double *t = NULL;
  int *convc = NULL; /* conv[m]: pre-computed convexities */
  double *areac = NULL; /* cumarea[m+1]: cache for fast area computation */
  SAFE_CALLOC(pt, m+1, int);
  SAFE_CALLOC(pen, m+1, double);
  SAFE_CALLOC(len, m+1, int);
  SAFE_CALLOC(opt, m+1, opti_t);
  SAFE_CALLOC(convc, m, int);
  SAFE_CALLOC(areac, m+1, double);
  /* pre-calculate convexity: +1 = right turn, -1 = left turn, 0 = corner */
  for (i=0; i<m; i++) {
    if (pp->curve.tag[i] == POTRACE_CURVETO) {
      convc[i] = sign(dpara(pp->curve.vertex[mod(i-1,m)], pp->curve.vertex[i], pp->curve.vertex[mod(i+1,m)]));
    } else {
      convc[i] = 0;
    }
  }
  /* pre-calculate areas */
  area = 0.0;
  areac[0] = 0.0;
  p0 = pp->curve.vertex[0];
  for (i=0; i<m; i++) {
    i1 = mod(i+1, m);
    if (pp->curve.tag[i1] == POTRACE_CURVETO) {
      alpha = pp->curve.alpha[i1];
      area += 0.3*alpha*(4-alpha)*dpara(pp->curve.c[i][2], pp->curve.vertex[i1], pp->curve.c[i1][2])/2;
      area += dpara(p0, pp->curve.c[i][2], pp->curve.c[i1][2])/2;
    }
    areac[i+1] = area;
  }
  pt[0] = -1;
  pen[0] = 0;
  len[0] = 0;
  /* Fixme: we always start from a fixed point -- should find the best
     curve cyclically */
  for (j=1; j<=m; j++) {
    /* calculate best path from 0 to j */
    pt[j] = j-1;
    pen[j] = pen[j-1];
    len[j] = len[j-1]+1;
    for (i=j-2; i>=0; i--) {
      r = opti_penalty(pp, i, mod(j,m), &o, opttolerance, convc, areac);
      if (r) {
	break;
      }
      if (len[j] > len[i]+1 || (len[j] == len[i]+1 && pen[j] > pen[i] + o.pen)) {
	pt[j] = i;
	pen[j] = pen[i] + o.pen;
	len[j] = len[i] + 1;
	opt[j] = o;
      }
    }
  }
  om = len[m];
  r = privcurve_init(&pp->ocurve, om);
  if (r) {
    goto calloc_error;
  }
  SAFE_CALLOC(s, om, double);
  SAFE_CALLOC(t, om, double);
  j = m;
  for (i=om-1; i>=0; i--) {
    if (pt[j]==j-1) {
      pp->ocurve.tag[i]     = pp->curve.tag[mod(j,m)];
      pp->ocurve.c[i][0]    = pp->curve.c[mod(j,m)][0];
      pp->ocurve.c[i][1]    = pp->curve.c[mod(j,m)][1];
      pp->ocurve.c[i][2]    = pp->curve.c[mod(j,m)][2];
      pp->ocurve.vertex[i]  = pp->curve.vertex[mod(j,m)];
      pp->ocurve.alpha[i]   = pp->curve.alpha[mod(j,m)];
      pp->ocurve.alpha0[i]  = pp->curve.alpha0[mod(j,m)];
      pp->ocurve.beta[i]    = pp->curve.beta[mod(j,m)];
      s[i] = t[i] = 1.0;
    } else {
      pp->ocurve.tag[i] = POTRACE_CURVETO;
      pp->ocurve.c[i][0] = opt[j].c[0];
      pp->ocurve.c[i][1] = opt[j].c[1];
      pp->ocurve.c[i][2] = pp->curve.c[mod(j,m)][2];
      pp->ocurve.vertex[i] = interval(opt[j].s, pp->curve.c[mod(j,m)][2], pp->curve.vertex[mod(j,m)]);
      pp->ocurve.alpha[i] = opt[j].alpha;
      pp->ocurve.alpha0[i] = opt[j].alpha;
      s[i] = opt[j].s;
      t[i] = opt[j].t;
    }
    j = pt[j];
  }
  /* calculate beta parameters */
  for (i=0; i<om; i++) {
    i1 = mod(i+1,om);
    pp->ocurve.beta[i] = s[i] / (s[i] + t[i1]);
  }
  pp->ocurve.alphacurve = 1;
  free(pt);
  free(pen);
  free(len);
  free(opt);
  free(s);
  free(t);
  free(convc);
  free(areac);
  return 0;
 calloc_error:
  free(pt);
  free(pen);
  free(len);
  free(opt);
  free(s);
  free(t);
  free(convc);
  free(areac);
  return 1;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1e0, %rsp            # imm = 0x1E0
movq %rdi, -0x10(%rbp)
movsd %xmm0, -0x18(%rbp)
movq -0x10(%rbp), %rax
movl 0x38(%rax), %eax
movl %eax, -0x1c(%rbp)
movq $0x0, -0x28(%rbp)
movq $0x0, -0x30(%rbp)
movq $0x0, -0x38(%rbp)
movq $0x0, -0x40(%rbp)
movq $0x0, -0xc0(%rbp)
movq $0x0, -0xc8(%rbp)
movq $0x0, -0xd0(%rbp)
movq $0x0, -0xd8(%rbp)
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rdi
movl $0x4, %esi
callq 0x1120
movq %rax, -0x28(%rbp)
cmpq $0x0, %rax
jne 0xb05c
jmp 0xbd69
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rdi
movl $0x8, %esi
callq 0x1120
movq %rax, -0x30(%rbp)
cmpq $0x0, %rax
jne 0xb07e
jmp 0xbd69
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rdi
movl $0x4, %esi
callq 0x1120
movq %rax, -0x38(%rbp)
cmpq $0x0, %rax
jne 0xb0a0
jmp 0xbd69
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rdi
movl $0x40, %esi
callq 0x1120
movq %rax, -0x40(%rbp)
cmpq $0x0, %rax
jne 0xb0c2
jmp 0xbd69
movslq -0x1c(%rbp), %rdi
movl $0x4, %esi
callq 0x1120
movq %rax, -0xd0(%rbp)
cmpq $0x0, %rax
jne 0xb0e2
jmp 0xbd69
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rdi
movl $0x8, %esi
callq 0x1120
movq %rax, -0xd8(%rbp)
cmpq $0x0, %rax
jne 0xb107
jmp 0xbd69
movl $0x0, -0x48(%rbp)
movl -0x48(%rbp), %eax
cmpl -0x1c(%rbp), %eax
jge 0xb2f9
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rax
movslq -0x48(%rbp), %rcx
cmpl $0x1, (%rax,%rcx,4)
jne 0xb2d7
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rax
movq %rax, -0x108(%rbp)
movl -0x48(%rbp), %edi
subl $0x1, %edi
movl -0x1c(%rbp), %esi
callq 0x2ca20
movl %eax, %ecx
movq -0x108(%rbp), %rax
movslq %ecx, %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq %rax, -0x100(%rbp)
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rax
movslq -0x48(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq %rax, -0xf8(%rbp)
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rax
movq %rax, -0xf0(%rbp)
movl -0x48(%rbp), %edi
addl $0x1, %edi
movl -0x1c(%rbp), %esi
callq 0x2ca20
movq -0x100(%rbp), %rdx
movq -0xf8(%rbp), %rcx
movl %eax, %esi
movq -0xf0(%rbp), %rax
movslq %esi, %rsi
shlq $0x4, %rsi
addq %rsi, %rax
movsd (%rdx), %xmm0
movsd 0x8(%rdx), %xmm1
movsd (%rcx), %xmm2
movsd 0x8(%rcx), %xmm3
movsd (%rax), %xmm4
movsd 0x8(%rax), %xmm5
callq 0x2d7b0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jbe 0xb1f8
movl $0x1, %eax
movl %eax, -0x10c(%rbp)
jmp 0xb2c1
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rax
movq %rax, -0x130(%rbp)
movl -0x48(%rbp), %edi
subl $0x1, %edi
movl -0x1c(%rbp), %esi
callq 0x2ca20
movl %eax, %ecx
movq -0x130(%rbp), %rax
movslq %ecx, %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq %rax, -0x128(%rbp)
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rax
movslq -0x48(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq %rax, -0x120(%rbp)
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rax
movq %rax, -0x118(%rbp)
movl -0x48(%rbp), %edi
addl $0x1, %edi
movl -0x1c(%rbp), %esi
callq 0x2ca20
movq -0x128(%rbp), %rdx
movq -0x120(%rbp), %rcx
movl %eax, %esi
movq -0x118(%rbp), %rax
movslq %esi, %rsi
shlq $0x4, %rsi
addq %rsi, %rax
movsd (%rdx), %xmm0
movsd 0x8(%rdx), %xmm1
movsd (%rcx), %xmm2
movsd 0x8(%rcx), %xmm3
movsd (%rax), %xmm4
movsd 0x8(%rax), %xmm5
callq 0x2d7b0
movaps %xmm0, %xmm1
xorps %xmm0, %xmm0
xorl %eax, %eax
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
ucomisd %xmm1, %xmm0
cmoval %ecx, %eax
movl %eax, -0x10c(%rbp)
movl -0x10c(%rbp), %edx
movq -0xd0(%rbp), %rax
movslq -0x48(%rbp), %rcx
movl %edx, (%rax,%rcx,4)
jmp 0xb2e9
movq -0xd0(%rbp), %rax
movslq -0x48(%rbp), %rcx
movl $0x0, (%rax,%rcx,4)
jmp 0xb2eb
movl -0x48(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x48(%rbp)
jmp 0xb10e
xorps %xmm0, %xmm0
movsd %xmm0, -0xb0(%rbp)
movq -0xd8(%rbp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, (%rax)
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rax
movq (%rax), %rcx
movq %rcx, -0xa0(%rbp)
movq 0x8(%rax), %rax
movq %rax, -0x98(%rbp)
movl $0x0, -0x48(%rbp)
movl -0x48(%rbp), %eax
cmpl -0x1c(%rbp), %eax
jge 0xb4dc
movl -0x48(%rbp), %edi
addl $0x1, %edi
movl -0x1c(%rbp), %esi
callq 0x2ca20
movl %eax, -0xa4(%rbp)
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rax
movslq -0xa4(%rbp), %rcx
cmpl $0x1, (%rax,%rcx,4)
jne 0xb4b1
movq -0x10(%rbp), %rax
movq 0x60(%rax), %rax
movslq -0xa4(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movsd %xmm0, -0xb8(%rbp)
movsd 0x26c65(%rip), %xmm0    # 0x31ff8
mulsd -0xb8(%rbp), %xmm0
movsd 0x26cad(%rip), %xmm1    # 0x32050
subsd -0xb8(%rbp), %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, -0x138(%rbp)
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rdx
movslq -0x48(%rbp), %rax
imulq $0x30, %rax, %rax
addq %rax, %rdx
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rcx
movslq -0xa4(%rbp), %rax
shlq $0x4, %rax
addq %rax, %rcx
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movslq -0xa4(%rbp), %rsi
imulq $0x30, %rsi, %rsi
addq %rsi, %rax
movsd 0x20(%rdx), %xmm0
movsd 0x28(%rdx), %xmm1
movsd (%rcx), %xmm2
movsd 0x8(%rcx), %xmm3
movsd 0x20(%rax), %xmm4
movsd 0x28(%rax), %xmm5
callq 0x2d7b0
movaps %xmm0, %xmm1
movsd -0x138(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd 0x26c19(%rip), %xmm1    # 0x32048
divsd %xmm1, %xmm0
addsd -0xb0(%rbp), %xmm0
movsd %xmm0, -0xb0(%rbp)
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rcx
movslq -0x48(%rbp), %rax
imulq $0x30, %rax, %rax
addq %rax, %rcx
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movslq -0xa4(%rbp), %rdx
imulq $0x30, %rdx, %rdx
addq %rdx, %rax
movsd -0xa0(%rbp), %xmm0
movsd -0x98(%rbp), %xmm1
movsd 0x20(%rcx), %xmm2
movsd 0x28(%rcx), %xmm3
movsd 0x20(%rax), %xmm4
movsd 0x28(%rax), %xmm5
callq 0x2d7b0
movsd 0x26bab(%rip), %xmm1    # 0x32048
divsd %xmm1, %xmm0
addsd -0xb0(%rbp), %xmm0
movsd %xmm0, -0xb0(%rbp)
movsd -0xb0(%rbp), %xmm0
movq -0xd8(%rbp), %rax
movl -0x48(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movsd %xmm0, (%rax,%rcx,8)
movl -0x48(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x48(%rbp)
jmp 0xb336
movq -0x28(%rbp), %rax
movl $0xffffffff, (%rax)     # imm = 0xFFFFFFFF
movq -0x30(%rbp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, (%rax)
movq -0x38(%rbp), %rax
movl $0x0, (%rax)
movl $0x1, -0x4c(%rbp)
movl -0x4c(%rbp), %eax
cmpl -0x1c(%rbp), %eax
jg 0xb6b9
movl -0x4c(%rbp), %edx
subl $0x1, %edx
movq -0x28(%rbp), %rax
movslq -0x4c(%rbp), %rcx
movl %edx, (%rax,%rcx,4)
movq -0x30(%rbp), %rax
movl -0x4c(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm0
movq -0x30(%rbp), %rax
movslq -0x4c(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq -0x38(%rbp), %rax
movl -0x4c(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movl (%rax,%rcx,4), %edx
addl $0x1, %edx
movq -0x38(%rbp), %rax
movslq -0x4c(%rbp), %rcx
movl %edx, (%rax,%rcx,4)
movl -0x4c(%rbp), %eax
subl $0x2, %eax
movl %eax, -0x48(%rbp)
cmpl $0x0, -0x48(%rbp)
jl 0xb6a9
movq -0x10(%rbp), %rax
movq %rax, -0x148(%rbp)
movl -0x48(%rbp), %eax
movl %eax, -0x13c(%rbp)
movl -0x4c(%rbp), %edi
movl -0x1c(%rbp), %esi
callq 0x2ca20
movq -0x148(%rbp), %rdi
movl -0x13c(%rbp), %esi
movl %eax, %edx
movsd -0x18(%rbp), %xmm0
movq -0xd0(%rbp), %r8
movq -0xd8(%rbp), %r9
leaq -0x90(%rbp), %rcx
callq 0x2d900
movl %eax, -0x50(%rbp)
cmpl $0x0, -0x50(%rbp)
je 0xb5ca
jmp 0xb6a9
movq -0x38(%rbp), %rax
movslq -0x4c(%rbp), %rcx
movl (%rax,%rcx,4), %eax
movq -0x38(%rbp), %rcx
movslq -0x48(%rbp), %rdx
movl (%rcx,%rdx,4), %ecx
addl $0x1, %ecx
cmpl %ecx, %eax
jg 0xb630
movq -0x38(%rbp), %rax
movslq -0x4c(%rbp), %rcx
movl (%rax,%rcx,4), %eax
movq -0x38(%rbp), %rcx
movslq -0x48(%rbp), %rdx
movl (%rcx,%rdx,4), %ecx
addl $0x1, %ecx
cmpl %ecx, %eax
jne 0xb699
movq -0x30(%rbp), %rax
movslq -0x4c(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq -0x30(%rbp), %rax
movslq -0x48(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
addsd -0x90(%rbp), %xmm1
ucomisd %xmm1, %xmm0
jbe 0xb699
movl -0x48(%rbp), %edx
movq -0x28(%rbp), %rax
movslq -0x4c(%rbp), %rcx
movl %edx, (%rax,%rcx,4)
movq -0x30(%rbp), %rax
movslq -0x48(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
addsd -0x90(%rbp), %xmm0
movq -0x30(%rbp), %rax
movslq -0x4c(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq -0x38(%rbp), %rax
movslq -0x48(%rbp), %rcx
movl (%rax,%rcx,4), %edx
addl $0x1, %edx
movq -0x38(%rbp), %rax
movslq -0x4c(%rbp), %rcx
movl %edx, (%rax,%rcx,4)
movq -0x40(%rbp), %rdi
movslq -0x4c(%rbp), %rax
shlq $0x6, %rax
addq %rax, %rdi
leaq -0x90(%rbp), %rsi
movl $0x40, %edx
callq 0x1180
jmp 0xb69b
movl -0x48(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x48(%rbp)
jmp 0xb565
jmp 0xb6ab
movl -0x4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4c(%rbp)
jmp 0xb502
movq -0x38(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movl (%rax,%rcx,4), %eax
movl %eax, -0x44(%rbp)
movq -0x10(%rbp), %rdi
addq $0x78, %rdi
movl -0x44(%rbp), %esi
callq 0x8810
movl %eax, -0x50(%rbp)
cmpl $0x0, -0x50(%rbp)
je 0xb6e5
jmp 0xbd69
movslq -0x44(%rbp), %rdi
movl $0x8, %esi
callq 0x1120
movq %rax, -0xc0(%rbp)
cmpq $0x0, %rax
jne 0xb705
jmp 0xbd69
movslq -0x44(%rbp), %rdi
movl $0x8, %esi
callq 0x1120
movq %rax, -0xc8(%rbp)
cmpq $0x0, %rax
jne 0xb725
jmp 0xbd69
movl -0x1c(%rbp), %eax
movl %eax, -0x4c(%rbp)
movl -0x44(%rbp), %eax
subl $0x1, %eax
movl %eax, -0x48(%rbp)
cmpl $0x0, -0x48(%rbp)
jl 0xbc85
movq -0x28(%rbp), %rax
movslq -0x4c(%rbp), %rcx
movl (%rax,%rcx,4), %eax
movl -0x4c(%rbp), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jne 0xba04
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rax
movq %rax, -0x1a8(%rbp)
movl -0x4c(%rbp), %edi
movl -0x1c(%rbp), %esi
callq 0x2ca20
movl %eax, %ecx
movq -0x1a8(%rbp), %rax
movslq %ecx, %rcx
movl (%rax,%rcx,4), %edx
movq -0x10(%rbp), %rax
movq 0x80(%rax), %rax
movslq -0x48(%rbp), %rcx
movl %edx, (%rax,%rcx,4)
movq -0x10(%rbp), %rax
movq 0x88(%rax), %rax
movslq -0x48(%rbp), %rcx
imulq $0x30, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x198(%rbp)
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq %rax, -0x1a0(%rbp)
movl -0x4c(%rbp), %edi
movl -0x1c(%rbp), %esi
callq 0x2ca20
movq -0x1a0(%rbp), %rcx
movl %eax, %edx
movq -0x198(%rbp), %rax
movslq %edx, %rdx
imulq $0x30, %rdx, %rdx
addq %rdx, %rcx
movq (%rcx), %rdx
movq %rdx, (%rax)
movq 0x8(%rcx), %rcx
movq %rcx, 0x8(%rax)
movq -0x10(%rbp), %rax
movq 0x88(%rax), %rax
movslq -0x48(%rbp), %rcx
imulq $0x30, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x188(%rbp)
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq %rax, -0x190(%rbp)
movl -0x4c(%rbp), %edi
movl -0x1c(%rbp), %esi
callq 0x2ca20
movq -0x190(%rbp), %rcx
movl %eax, %edx
movq -0x188(%rbp), %rax
movslq %edx, %rdx
imulq $0x30, %rdx, %rdx
addq %rdx, %rcx
movq 0x10(%rcx), %rdx
movq %rdx, 0x10(%rax)
movq 0x18(%rcx), %rcx
movq %rcx, 0x18(%rax)
movq -0x10(%rbp), %rax
movq 0x88(%rax), %rax
movslq -0x48(%rbp), %rcx
imulq $0x30, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x178(%rbp)
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq %rax, -0x180(%rbp)
movl -0x4c(%rbp), %edi
movl -0x1c(%rbp), %esi
callq 0x2ca20
movq -0x180(%rbp), %rcx
movl %eax, %edx
movq -0x178(%rbp), %rax
movslq %edx, %rdx
imulq $0x30, %rdx, %rdx
addq %rdx, %rcx
movq 0x20(%rcx), %rdx
movq %rdx, 0x20(%rax)
movq 0x28(%rcx), %rcx
movq %rcx, 0x28(%rax)
movq -0x10(%rbp), %rax
movq 0x98(%rax), %rax
movslq -0x48(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq %rax, -0x168(%rbp)
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rax
movq %rax, -0x170(%rbp)
movl -0x4c(%rbp), %edi
movl -0x1c(%rbp), %esi
callq 0x2ca20
movq -0x170(%rbp), %rcx
movl %eax, %edx
movq -0x168(%rbp), %rax
movslq %edx, %rdx
shlq $0x4, %rdx
addq %rdx, %rcx
movq (%rcx), %rdx
movq %rdx, (%rax)
movq 0x8(%rcx), %rcx
movq %rcx, 0x8(%rax)
movq -0x10(%rbp), %rax
movq 0x60(%rax), %rax
movq %rax, -0x160(%rbp)
movl -0x4c(%rbp), %edi
movl -0x1c(%rbp), %esi
callq 0x2ca20
movl %eax, %ecx
movq -0x160(%rbp), %rax
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm0
movq -0x10(%rbp), %rax
movq 0xa0(%rax), %rax
movslq -0x48(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq -0x10(%rbp), %rax
movq 0x68(%rax), %rax
movq %rax, -0x158(%rbp)
movl -0x4c(%rbp), %edi
movl -0x1c(%rbp), %esi
callq 0x2ca20
movl %eax, %ecx
movq -0x158(%rbp), %rax
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm0
movq -0x10(%rbp), %rax
movq 0xa8(%rax), %rax
movslq -0x48(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq -0x10(%rbp), %rax
movq 0x70(%rax), %rax
movq %rax, -0x150(%rbp)
movl -0x4c(%rbp), %edi
movl -0x1c(%rbp), %esi
callq 0x2ca20
movl %eax, %ecx
movq -0x150(%rbp), %rax
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm0
movq -0x10(%rbp), %rax
movq 0xb0(%rax), %rax
movslq -0x48(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq -0xc8(%rbp), %rax
movslq -0x48(%rbp), %rcx
movsd 0x26636(%rip), %xmm0    # 0x32018
movsd %xmm0, (%rax,%rcx,8)
movq -0xc0(%rbp), %rax
movslq -0x48(%rbp), %rcx
movsd 0x2661e(%rip), %xmm0    # 0x32018
movsd %xmm0, (%rax,%rcx,8)
jmp 0xbc69
movq -0x10(%rbp), %rax
movq 0x80(%rax), %rax
movslq -0x48(%rbp), %rcx
movl $0x1, (%rax,%rcx,4)
movq -0x10(%rbp), %rax
movq 0x88(%rax), %rax
movslq -0x48(%rbp), %rcx
imulq $0x30, %rcx, %rcx
addq %rcx, %rax
movq -0x40(%rbp), %rcx
movslq -0x4c(%rbp), %rdx
shlq $0x6, %rdx
addq %rdx, %rcx
movq 0x8(%rcx), %rdx
movq %rdx, (%rax)
movq 0x10(%rcx), %rcx
movq %rcx, 0x8(%rax)
movq -0x10(%rbp), %rax
movq 0x88(%rax), %rax
movslq -0x48(%rbp), %rcx
imulq $0x30, %rcx, %rcx
addq %rcx, %rax
movq -0x40(%rbp), %rcx
movslq -0x4c(%rbp), %rdx
shlq $0x6, %rdx
addq %rdx, %rcx
movq 0x18(%rcx), %rdx
movq %rdx, 0x10(%rax)
movq 0x20(%rcx), %rcx
movq %rcx, 0x18(%rax)
movq -0x10(%rbp), %rax
movq 0x88(%rax), %rax
movslq -0x48(%rbp), %rcx
imulq $0x30, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x1d8(%rbp)
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq %rax, -0x1e0(%rbp)
movl -0x4c(%rbp), %edi
movl -0x1c(%rbp), %esi
callq 0x2ca20
movq -0x1e0(%rbp), %rcx
movl %eax, %edx
movq -0x1d8(%rbp), %rax
movslq %edx, %rdx
imulq $0x30, %rdx, %rdx
addq %rdx, %rcx
movq 0x20(%rcx), %rdx
movq %rdx, 0x20(%rax)
movq 0x28(%rcx), %rcx
movq %rcx, 0x28(%rax)
movq -0x10(%rbp), %rax
movq 0x98(%rax), %rax
movslq -0x48(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq %rax, -0x1b0(%rbp)
movq -0x40(%rbp), %rax
movslq -0x4c(%rbp), %rcx
shlq $0x6, %rcx
addq %rcx, %rax
movsd 0x30(%rax), %xmm0
movsd %xmm0, -0x1c0(%rbp)
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq %rax, -0x1d0(%rbp)
movl -0x4c(%rbp), %edi
movl -0x1c(%rbp), %esi
callq 0x2ca20
movl %eax, %ecx
movq -0x1d0(%rbp), %rax
movslq %ecx, %rcx
imulq $0x30, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x1c8(%rbp)
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rax
movq %rax, -0x1b8(%rbp)
movl -0x4c(%rbp), %edi
movl -0x1c(%rbp), %esi
callq 0x2ca20
movq -0x1c8(%rbp), %rcx
movsd -0x1c0(%rbp), %xmm0
movl %eax, %edx
movq -0x1b8(%rbp), %rax
movslq %edx, %rdx
shlq $0x4, %rdx
addq %rdx, %rax
movsd 0x20(%rcx), %xmm1
movsd 0x28(%rcx), %xmm2
movsd (%rax), %xmm3
movsd 0x8(%rax), %xmm4
callq 0x2d6b0
movq -0x1b0(%rbp), %rax
movsd %xmm0, -0xe8(%rbp)
movsd %xmm1, -0xe0(%rbp)
movq -0xe8(%rbp), %rcx
movq %rcx, (%rax)
movq -0xe0(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq -0x40(%rbp), %rax
movslq -0x4c(%rbp), %rcx
shlq $0x6, %rcx
addq %rcx, %rax
movsd 0x38(%rax), %xmm0
movq -0x10(%rbp), %rax
movq 0xa0(%rax), %rax
movslq -0x48(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq -0x40(%rbp), %rax
movslq -0x4c(%rbp), %rcx
shlq $0x6, %rcx
addq %rcx, %rax
movsd 0x38(%rax), %xmm0
movq -0x10(%rbp), %rax
movq 0xa8(%rax), %rax
movslq -0x48(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq -0x40(%rbp), %rax
movslq -0x4c(%rbp), %rcx
shlq $0x6, %rcx
addq %rcx, %rax
movsd 0x30(%rax), %xmm0
movq -0xc0(%rbp), %rax
movslq -0x48(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq -0x40(%rbp), %rax
movslq -0x4c(%rbp), %rcx
shlq $0x6, %rcx
addq %rcx, %rax
movsd 0x28(%rax), %xmm0
movq -0xc8(%rbp), %rax
movslq -0x48(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq -0x28(%rbp), %rax
movslq -0x4c(%rbp), %rcx
movl (%rax,%rcx,4), %eax
movl %eax, -0x4c(%rbp)
movl -0x48(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x48(%rbp)
jmp 0xb734
movl $0x0, -0x48(%rbp)
movl -0x48(%rbp), %eax
cmpl -0x44(%rbp), %eax
jge 0xbcfe
movl -0x48(%rbp), %edi
addl $0x1, %edi
movl -0x44(%rbp), %esi
callq 0x2ca20
movl %eax, -0xa4(%rbp)
movq -0xc0(%rbp), %rax
movslq -0x48(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq -0xc0(%rbp), %rax
movslq -0x48(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
movq -0xc8(%rbp), %rax
movslq -0xa4(%rbp), %rcx
addsd (%rax,%rcx,8), %xmm1
divsd %xmm1, %xmm0
movq -0x10(%rbp), %rax
movq 0xb0(%rax), %rax
movslq -0x48(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movl -0x48(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x48(%rbp)
jmp 0xbc8c
movq -0x10(%rbp), %rax
movl $0x1, 0x90(%rax)
movq -0x28(%rbp), %rdi
callq 0x1030
movq -0x30(%rbp), %rdi
callq 0x1030
movq -0x38(%rbp), %rdi
callq 0x1030
movq -0x40(%rbp), %rdi
callq 0x1030
movq -0xc0(%rbp), %rdi
callq 0x1030
movq -0xc8(%rbp), %rdi
callq 0x1030
movq -0xd0(%rbp), %rdi
callq 0x1030
movq -0xd8(%rbp), %rdi
callq 0x1030
movl $0x0, -0x4(%rbp)
jmp 0xbdc4
movq -0x28(%rbp), %rdi
callq 0x1030
movq -0x30(%rbp), %rdi
callq 0x1030
movq -0x38(%rbp), %rdi
callq 0x1030
movq -0x40(%rbp), %rdi
callq 0x1030
movq -0xc0(%rbp), %rdi
callq 0x1030
movq -0xc8(%rbp), %rdi
callq 0x1030
movq -0xd0(%rbp), %rdi
callq 0x1030
movq -0xd8(%rbp), %rdi
callq 0x1030
movl $0x1, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x1e0, %rsp            # imm = 0x1E0
popq %rbp
retq