// File: /workspace/github_c_makefile_star2_O3/ggerganov[P]font-rasterizer/./stb_truetype.h
// Function: stbtt_GetGlyphSDF
STBTT_DEF unsigned char * stbtt_GetGlyphSDF(const stbtt_fontinfo *info, float scale, int glyph, int padding, unsigned char onedge_value, float pixel_dist_scale, int *width, int *height, int *xoff, int *yoff)
{
   float scale_x = scale, scale_y = scale;
   int ix0,iy0,ix1,iy1;
   int w,h;
   unsigned char *data;

   // if one scale is 0, use same scale for both
   if (scale_x == 0) scale_x = scale_y;
   if (scale_y == 0) {
      if (scale_x == 0) return NULL;  // if both scales are 0, return NULL
      scale_y = scale_x;
   }

   stbtt_GetGlyphBitmapBoxSubpixel(info, glyph, scale, scale, 0.0f,0.0f, &ix0,&iy0,&ix1,&iy1);

   // if empty, return NULL
   if (ix0 == ix1 || iy0 == iy1)
      return NULL;

   ix0 -= padding;
   iy0 -= padding;
   ix1 += padding;
   iy1 += padding;

   w = (ix1 - ix0);
   h = (iy1 - iy0);

   if (width ) *width  = w;
   if (height) *height = h;
   if (xoff  ) *xoff   = ix0;
   if (yoff  ) *yoff   = iy0;

   // invert for y-downwards bitmaps
   scale_y = -scale_y;
      
   {
      int x,y,i,j;
      float *precompute;
      stbtt_vertex *verts;
      int num_verts = stbtt_GetGlyphShape(info, glyph, &verts);
      data = (unsigned char *) STBTT_malloc(w * h, info->userdata);
      precompute = (float *) STBTT_malloc(num_verts * sizeof(float), info->userdata);

      for (i=0,j=num_verts-1; i < num_verts; j=i++) {
         if (verts[i].type == STBTT_vline) {
            float x0 = verts[i].x*scale_x, y0 = verts[i].y*scale_y;
            float x1 = verts[j].x*scale_x, y1 = verts[j].y*scale_y;
            float dist = (float) STBTT_sqrt((x1-x0)*(x1-x0) + (y1-y0)*(y1-y0));
            precompute[i] = (dist == 0) ? 0.0f : 1.0f / dist;
         } else if (verts[i].type == STBTT_vcurve) {
            float x2 = verts[j].x *scale_x, y2 = verts[j].y *scale_y;
            float x1 = verts[i].cx*scale_x, y1 = verts[i].cy*scale_y;
            float x0 = verts[i].x *scale_x, y0 = verts[i].y *scale_y;
            float bx = x0 - 2*x1 + x2, by = y0 - 2*y1 + y2;
            float len2 = bx*bx + by*by;
            if (len2 != 0.0f)
               precompute[i] = 1.0f / (bx*bx + by*by);
            else
               precompute[i] = 0.0f;
         } else
            precompute[i] = 0.0f;
      }

      for (y=iy0; y < iy1; ++y) {
         for (x=ix0; x < ix1; ++x) {
            float val;
            float min_dist = 999999.0f;
            float sx = (float) x + 0.5f;
            float sy = (float) y + 0.5f;
            float x_gspace = (sx / scale_x);
            float y_gspace = (sy / scale_y);

            int winding = stbtt__compute_crossings_x(x_gspace, y_gspace, num_verts, verts); // @OPTIMIZE: this could just be a rasterization, but needs to be line vs. non-tesselated curves so a new path

            for (i=0; i < num_verts; ++i) {
               float x0 = verts[i].x*scale_x, y0 = verts[i].y*scale_y;

               // check against every point here rather than inside line/curve primitives -- @TODO: wrong if multiple 'moves' in a row produce a garbage point, and given culling, probably more efficient to do within line/curve
               float dist2 = (x0-sx)*(x0-sx) + (y0-sy)*(y0-sy);
               if (dist2 < min_dist*min_dist)
                  min_dist = (float) STBTT_sqrt(dist2);

               if (verts[i].type == STBTT_vline) {
                  float x1 = verts[i-1].x*scale_x, y1 = verts[i-1].y*scale_y;

                  // coarse culling against bbox
                  //if (sx > STBTT_min(x0,x1)-min_dist && sx < STBTT_max(x0,x1)+min_dist &&
                  //    sy > STBTT_min(y0,y1)-min_dist && sy < STBTT_max(y0,y1)+min_dist)
                  float dist = (float) STBTT_fabs((x1-x0)*(y0-sy) - (y1-y0)*(x0-sx)) * precompute[i];
                  STBTT_assert(i != 0);
                  if (dist < min_dist) {
                     // check position along line
                     // x' = x0 + t*(x1-x0), y' = y0 + t*(y1-y0)
                     // minimize (x'-sx)*(x'-sx)+(y'-sy)*(y'-sy)
                     float dx = x1-x0, dy = y1-y0;
                     float px = x0-sx, py = y0-sy;
                     // minimize (px+t*dx)^2 + (py+t*dy)^2 = px*px + 2*px*dx*t + t^2*dx*dx + py*py + 2*py*dy*t + t^2*dy*dy
                     // derivative: 2*px*dx + 2*py*dy + (2*dx*dx+2*dy*dy)*t, set to 0 and solve
                     float t = -(px*dx + py*dy) / (dx*dx + dy*dy);
                     if (t >= 0.0f && t <= 1.0f)
                        min_dist = dist;
                  }
               } else if (verts[i].type == STBTT_vcurve) {
                  float x2 = verts[i-1].x *scale_x, y2 = verts[i-1].y *scale_y;
                  float x1 = verts[i  ].cx*scale_x, y1 = verts[i  ].cy*scale_y;
                  float box_x0 = STBTT_min(STBTT_min(x0,x1),x2);
                  float box_y0 = STBTT_min(STBTT_min(y0,y1),y2);
                  float box_x1 = STBTT_max(STBTT_max(x0,x1),x2);
                  float box_y1 = STBTT_max(STBTT_max(y0,y1),y2);
                  // coarse culling against bbox to avoid computing cubic unnecessarily
                  if (sx > box_x0-min_dist && sx < box_x1+min_dist && sy > box_y0-min_dist && sy < box_y1+min_dist) {
                     int num=0;
                     float ax = x1-x0, ay = y1-y0;
                     float bx = x0 - 2*x1 + x2, by = y0 - 2*y1 + y2;
                     float mx = x0 - sx, my = y0 - sy;
                     float res[3],px,py,t,it;
                     float a_inv = precompute[i];
                     if (a_inv == 0.0) { // if a_inv is 0, it's 2nd degree so use quadratic formula
                        float a = 3*(ax*bx + ay*by);
                        float b = 2*(ax*ax + ay*ay) + (mx*bx+my*by);
                        float c = mx*ax+my*ay;
                        if (a == 0.0) { // if a is 0, it's linear
                           if (b != 0.0) {
                              res[num++] = -c/b;
                           }
                        } else {
                           float discriminant = b*b - 4*a*c;
                           if (discriminant < 0)
                              num = 0;
                           else {
                              float root = (float) STBTT_sqrt(discriminant);
                              res[0] = (-b - root)/(2*a);
                              res[1] = (-b + root)/(2*a);
                              num = 2; // don't bother distinguishing 1-solution case, as code below will still work
                           }
                        }
                     } else {
                        float b = 3*(ax*bx + ay*by) * a_inv; // could precompute this as it doesn't depend on sample point
                        float c = (2*(ax*ax + ay*ay) + (mx*bx+my*by)) * a_inv;
                        float d = (mx*ax+my*ay) * a_inv;
                        num = stbtt__solve_cubic(b, c, d, res);
                     }
                     if (num >= 1 && res[0] >= 0.0f && res[0] <= 1.0f) {
                        t = res[0], it = 1.0f - t;
                        px = it*it*x0 + 2*t*it*x1 + t*t*x2;
                        py = it*it*y0 + 2*t*it*y1 + t*t*y2;
                        dist2 = (px-sx)*(px-sx) + (py-sy)*(py-sy);
                        if (dist2 < min_dist * min_dist)
                           min_dist = (float) STBTT_sqrt(dist2);
                     }
                     if (num >= 2 && res[1] >= 0.0f && res[1] <= 1.0f) {
                        t = res[1], it = 1.0f - t;
                        px = it*it*x0 + 2*t*it*x1 + t*t*x2;
                        py = it*it*y0 + 2*t*it*y1 + t*t*y2;
                        dist2 = (px-sx)*(px-sx) + (py-sy)*(py-sy);
                        if (dist2 < min_dist * min_dist)
                           min_dist = (float) STBTT_sqrt(dist2);
                     }
                     if (num >= 3 && res[2] >= 0.0f && res[2] <= 1.0f) {
                        t = res[2], it = 1.0f - t;
                        px = it*it*x0 + 2*t*it*x1 + t*t*x2;
                        py = it*it*y0 + 2*t*it*y1 + t*t*y2;
                        dist2 = (px-sx)*(px-sx) + (py-sy)*(py-sy);
                        if (dist2 < min_dist * min_dist)
                           min_dist = (float) STBTT_sqrt(dist2);
                     }
                  }
               }
            }
            if (winding == 0)
               min_dist = -min_dist;  // if outside the shape, value is negative
            val = onedge_value + pixel_dist_scale * min_dist;
            if (val < 0)
               val = 0;
            else if (val > 255)
               val = 255;
            data[(y-iy0)*w+(x-ix0)] = (unsigned char) val;
         }
      }
      STBTT_free(precompute, info->userdata);
      STBTT_free(verts, info->userdata);
   }
   return data;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1b8, %rsp            # imm = 0x1B8
xorps %xmm2, %xmm2
ucomiss %xmm2, %xmm0
jne 0x7d07
jnp 0x7d5f
movq %r8, %r12
movl %edx, %r13d
movl %esi, %ebx
movq %rdi, %r14
movq %r9, -0xa0(%rbp)
movl %ecx, -0x2c(%rbp)
movss %xmm1, -0x50(%rbp)
leaq -0x48(%rbp), %rdx
leaq -0x44(%rbp), %rcx
leaq -0x54(%rbp), %r15
leaq -0x40(%rbp), %r9
xorps %xmm3, %xmm3
movaps %xmm0, -0x110(%rbp)
movaps %xmm0, %xmm1
movq %r15, %r8
callq 0x4d75
leaq -0x48(%rbp), %rax
movl (%rax), %ecx
movl (%r15), %edx
cmpl %edx, %ecx
je 0x7d5f
movl -0x44(%rbp), %eax
movl -0x40(%rbp), %r15d
cmpl %r15d, %eax
jne 0x7d77
xorl %r14d, %r14d
movq %r14, %rax
addq $0x1b8, %rsp            # imm = 0x1B8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
subl %r13d, %ecx
movl %ecx, -0x48(%rbp)
subl %r13d, %eax
movl %eax, -0x44(%rbp)
addl %r13d, %edx
movl %edx, -0x54(%rbp)
addl %r13d, %r15d
movl %r15d, -0x40(%rbp)
subl %ecx, %edx
testq %r12, %r12
je 0x7d9b
movl %edx, (%r12)
movl %edx, -0x38(%rbp)
movq 0x10(%rbp), %rdx
subl %eax, %r15d
movq -0xa0(%rbp), %rsi
testq %rsi, %rsi
movaps -0x110(%rbp), %xmm0
je 0x7dbb
movl %r15d, (%rsi)
movq 0x18(%rbp), %rsi
testq %rdx, %rdx
je 0x7dc6
movl %ecx, (%rdx)
testq %rsi, %rsi
je 0x7dcd
movl %eax, (%rsi)
movaps 0x6d5c(%rip), %xmm1     # 0xeb30
xorps %xmm0, %xmm1
movaps %xmm1, -0x100(%rbp)
leaq -0x1d8(%rbp), %r12
movq %r14, %rdi
movl %ebx, %esi
movq %r12, %rdx
callq 0x3889
movl %eax, %ebx
imull -0x38(%rbp), %r15d
movslq %r15d, %rdi
callq 0x1170
movq %rax, %r14
movq %rbx, -0x128(%rbp)
movslq %ebx, %rbx
leaq (,%rbx,4), %rdi
callq 0x1170
movq %rax, -0xe8(%rbp)
movq (%r12), %r12
movl %ebx, %eax
movq %rax, -0x130(%rbp)
testl %ebx, %ebx
jle 0x7fc7
movq -0x128(%rbp), %rax
leal -0x1(%rax), %edx
xorl %eax, %eax
movss 0x6c3d(%rip), %xmm0     # 0xea88
xorps %xmm1, %xmm1
movq %r12, %rcx
movaps -0x110(%rbp), %xmm8
movaps -0x100(%rbp), %xmm9
movzbl 0xc(%rcx), %esi
cmpl $0x3, %esi
je 0x7efc
xorps %xmm3, %xmm3
cmpl $0x2, %esi
jne 0x7fa1
movswl (%rcx), %esi
xorps %xmm2, %xmm2
cvtsi2ss %esi, %xmm2
movaps -0x110(%rbp), %xmm6
mulss %xmm6, %xmm2
movswl 0x2(%rcx), %esi
xorps %xmm3, %xmm3
cvtsi2ss %esi, %xmm3
movslq %edx, %rdx
leaq (%rdx,%rdx), %rsi
shlq $0x4, %rdx
subq %rsi, %rdx
movswl (%r12,%rdx), %esi
xorps %xmm4, %xmm4
cvtsi2ss %esi, %xmm4
mulss %xmm6, %xmm4
movswl 0x2(%r12,%rdx), %edx
xorps %xmm5, %xmm5
cvtsi2ss %edx, %xmm5
subss %xmm2, %xmm4
mulss %xmm6, %xmm3
mulss %xmm6, %xmm5
subss %xmm5, %xmm3
mulss %xmm3, %xmm3
mulss %xmm4, %xmm4
addss %xmm3, %xmm4
xorps %xmm3, %xmm3
sqrtss %xmm4, %xmm3
movaps %xmm0, %xmm2
divss %xmm3, %xmm2
cmpeqss %xmm1, %xmm3
andnps %xmm2, %xmm3
jmp 0x7fa1
movslq %edx, %rdx
leaq (%rdx,%rdx), %rsi
shlq $0x4, %rdx
subq %rsi, %rdx
movswl (%r12,%rdx), %esi
xorps %xmm3, %xmm3
cvtsi2ss %esi, %xmm3
mulss %xmm8, %xmm3
movswl 0x2(%r12,%rdx), %edx
xorps %xmm4, %xmm4
cvtsi2ss %edx, %xmm4
movswl 0x4(%rcx), %edx
xorps %xmm5, %xmm5
cvtsi2ss %edx, %xmm5
mulss %xmm8, %xmm5
movswl 0x6(%rcx), %edx
xorps %xmm6, %xmm6
cvtsi2ss %edx, %xmm6
movswl (%rcx), %edx
xorps %xmm2, %xmm2
cvtsi2ss %edx, %xmm2
movswl 0x2(%rcx), %edx
xorps %xmm7, %xmm7
cvtsi2ss %edx, %xmm7
mulss %xmm9, %xmm6
mulss %xmm8, %xmm2
mulss %xmm9, %xmm7
addss %xmm5, %xmm5
subss %xmm5, %xmm2
addss %xmm3, %xmm2
addss %xmm6, %xmm6
subss %xmm6, %xmm7
mulss %xmm8, %xmm4
subss %xmm4, %xmm7
mulss %xmm7, %xmm7
mulss %xmm2, %xmm2
addss %xmm7, %xmm2
xorps %xmm3, %xmm3
ucomiss %xmm3, %xmm2
jne 0x7f9a
jnp 0x7fa1
movaps %xmm0, %xmm3
divss %xmm2, %xmm3
movq -0xe8(%rbp), %rdx
movss %xmm3, (%rdx,%rax,4)
movl %eax, %edx
leaq 0x1(%rax), %rsi
addq $0xe, %rcx
movq %rsi, %rax
cmpq %rsi, -0x130(%rbp)
jne 0x7e61
movl -0x44(%rbp), %ecx
movl -0x40(%rbp), %eax
movl %ecx, -0x3c(%rbp)
cmpl %eax, %ecx
movl -0x38(%rbp), %ebx
movaps -0x100(%rbp), %xmm10
jge 0x91b3
movzbl -0x2c(%rbp), %ecx
xorps %xmm0, %xmm0
cvtsi2ss %ecx, %xmm0
movss %xmm0, -0x144(%rbp)
movl -0x48(%rbp), %r15d
movl -0x54(%rbp), %ecx
movq -0x130(%rbp), %r13
leaq (,%r13,2), %rdx
shlq $0x4, %r13
subq %rdx, %r13
leaq -0xe(%r12), %rdx
movq %rdx, -0x1a8(%rbp)
movq %r14, -0x178(%rbp)
cmpl %ecx, %r15d
jge 0x91a3
xorps %xmm15, %xmm15
cvtsi2ssl -0x3c(%rbp), %xmm15
addss 0x6a62(%rip), %xmm15    # 0xeaa4
movaps %xmm15, %xmm0
divss %xmm10, %xmm0
xorps %xmm1, %xmm1
cvtss2sd %xmm0, %xmm1
movsd %xmm1, -0x1b0(%rbp)
movaps %xmm0, %xmm1
addss 0x6a63(%rip), %xmm1     # 0xeac8
movss %xmm1, -0x138(%rbp)
movss %xmm0, -0x13c(%rbp)
addss 0x6a4f(%rip), %xmm0     # 0xeacc
movss %xmm0, -0x148(%rbp)
movss %xmm15, -0x34(%rbp)
movaps %xmm6, -0x90(%rbp)
movaps %xmm7, -0x70(%rbp)
xorps %xmm0, %xmm0
cvtsi2ss %r15d, %xmm0
addss 0x69fe(%rip), %xmm0     # 0xeaa4
movss %xmm0, -0x30(%rbp)
movsd -0x1b0(%rbp), %xmm0
movsd 0x6a9d(%rip), %xmm1     # 0xeb58
callq 0x10e0
cvtsd2ss %xmm0, %xmm0
movss 0x6a00(%rip), %xmm1     # 0xeacc
ucomiss %xmm0, %xmm1
movss -0x148(%rbp), %xmm8
ja 0x80f5
ucomiss 0x69ef(%rip), %xmm0     # 0xead0
movss -0x13c(%rbp), %xmm8
jbe 0x80f5
movss -0x138(%rbp), %xmm8
cmpl $0x0, -0x128(%rbp)
movss -0x50(%rbp), %xmm1
movaps -0x110(%rbp), %xmm9
xorps %xmm11, %xmm11
movaps -0x70(%rbp), %xmm7
movaps -0x90(%rbp), %xmm6
jle 0x9107
movl %r15d, -0xa4(%rbp)
movss -0x30(%rbp), %xmm5
movaps %xmm5, %xmm3
divss %xmm9, %xmm3
movaps %xmm3, %xmm13
mulss %xmm11, %xmm13
movaps %xmm8, %xmm0
mulss %xmm11, %xmm0
addss %xmm3, %xmm0
movss %xmm0, -0x140(%rbp)
subss %xmm8, %xmm13
xorl %ebx, %ebx
xorl %r15d, %r15d
movaps -0x100(%rbp), %xmm10
movss -0x34(%rbp), %xmm15
movss %xmm3, -0x80(%rbp)
movss %xmm13, -0x160(%rbp)
movzbl 0xc(%r12,%rbx), %eax
cmpl $0x3, %eax
je 0x8233
cmpl $0x2, %eax
jne 0x8711
movswl -0xc(%r12,%rbx), %eax
movswl 0x2(%r12,%rbx), %ecx
cmpw %cx, %ax
movl %ecx, %edx
cmovll %eax, %edx
xorps %xmm0, %xmm0
cvtsi2ss %edx, %xmm0
ucomiss %xmm0, %xmm8
jbe 0x8711
cmpw %cx, %ax
movl %ecx, %edx
cmovgl %eax, %edx
xorps %xmm0, %xmm0
cvtsi2ss %edx, %xmm0
ucomiss %xmm8, %xmm0
jbe 0x8711
movswl -0xe(%r12,%rbx), %edx
movswl (%r12,%rbx), %esi
cmpl %esi, %edx
movl %esi, %edi
cmovll %edx, %edi
xorps %xmm0, %xmm0
cvtsi2ss %edi, %xmm0
ucomiss %xmm0, %xmm3
jbe 0x8711
xorl %edi, %edi
cmpw %cx, %ax
xorps %xmm0, %xmm0
cvtsi2ss %eax, %xmm0
setl %dil
movaps %xmm8, %xmm1
subss %xmm0, %xmm1
subl %eax, %ecx
xorps %xmm0, %xmm0
cvtsi2ss %ecx, %xmm0
divss %xmm0, %xmm1
subl %edx, %esi
xorps %xmm0, %xmm0
cvtsi2ss %esi, %xmm0
mulss %xmm1, %xmm0
xorps %xmm1, %xmm1
cvtsi2ss %edx, %xmm1
addss %xmm0, %xmm1
ucomiss %xmm1, %xmm3
jmp 0x83b4
movswl -0xe(%r12,%rbx), %eax
movzwl 0x4(%r12,%rbx), %edi
movzwl 0x6(%r12,%rbx), %r8d
movswl (%r12,%rbx), %ecx
cmpw %cx, %di
movl %edi, %r9d
cmovgel %ecx, %r9d
movswl 0x2(%r12,%rbx), %edx
cmpw %ax, %r9w
cmovgel %eax, %r9d
cmpw %dx, %r8w
movl %edx, %r11d
cmovll %r8d, %r11d
movswl -0xc(%r12,%rbx), %esi
movl %r8d, %r10d
cmovlel %edx, %r10d
cmpw %r11w, %si
cmovll %esi, %r11d
cmpw %r10w, %si
movswl %r11w, %r11d
xorps %xmm0, %xmm0
cvtsi2ss %r11d, %xmm0
cmovgl %esi, %r10d
ucomiss %xmm0, %xmm8
jbe 0x8711
movswl %r10w, %r10d
xorps %xmm0, %xmm0
cvtsi2ss %r10d, %xmm0
ucomiss %xmm8, %xmm0
jbe 0x8711
movswl %r9w, %r9d
xorps %xmm0, %xmm0
cvtsi2ss %r9d, %xmm0
ucomiss %xmm0, %xmm3
jbe 0x8711
xorps %xmm1, %xmm1
cvtsi2ss %eax, %xmm1
xorps %xmm2, %xmm2
cvtsi2ss %esi, %xmm2
movswl %di, %edi
xorps %xmm14, %xmm14
cvtsi2ss %edi, %xmm14
movswl %r8w, %edi
xorps %xmm0, %xmm0
cvtsi2ss %edi, %xmm0
ucomiss %xmm14, %xmm1
jne 0x82ff
jp 0x82ff
ucomiss %xmm0, %xmm2
jne 0x82ff
jnp 0x8336
xorps %xmm12, %xmm12
cvtsi2ss %ecx, %xmm12
xorps %xmm4, %xmm4
cvtsi2ss %edx, %xmm4
movaps %xmm12, -0xa0(%rbp)
ucomiss %xmm12, %xmm14
jne 0x83c8
jp 0x83c8
ucomiss %xmm4, %xmm0
jne 0x83c8
jp 0x83c8
cmpw %dx, %si
movl %edx, %edi
cmovll %esi, %edi
xorps %xmm0, %xmm0
cvtsi2ss %edi, %xmm0
ucomiss %xmm0, %xmm8
jbe 0x8711
cmpw %dx, %si
movl %edx, %edi
cmovgl %esi, %edi
xorps %xmm0, %xmm0
cvtsi2ss %edi, %xmm0
ucomiss %xmm8, %xmm0
jbe 0x8711
cmpl %ecx, %eax
movl %ecx, %edi
cmovll %eax, %edi
xorps %xmm0, %xmm0
cvtsi2ss %edi, %xmm0
ucomiss %xmm0, %xmm3
jbe 0x8711
xorl %edi, %edi
cmpw %dx, %si
setl %dil
subl %esi, %edx
xorps %xmm0, %xmm0
cvtsi2ss %edx, %xmm0
movaps %xmm1, %xmm4
movaps %xmm8, %xmm1
subss %xmm2, %xmm1
divss %xmm0, %xmm1
subl %eax, %ecx
xorps %xmm0, %xmm0
cvtsi2ss %ecx, %xmm0
mulss %xmm1, %xmm0
addss %xmm4, %xmm0
ucomiss %xmm0, %xmm3
leal -0x1(%rdi,%rdi), %eax
movl $0x0, %ecx
cmovbel %ecx, %eax
addl %eax, %r15d
jmp 0x8711
movaps %xmm1, -0x120(%rbp)
movaps %xmm4, -0xc0(%rbp)
movaps %xmm0, %xmm12
movaps 0x674f(%rip), %xmm4     # 0xeb30
xorps %xmm4, %xmm1
andps %xmm4, %xmm1
movaps %xmm2, -0xd0(%rbp)
addss %xmm2, %xmm1
movaps %xmm14, %xmm0
xorps %xmm4, %xmm0
andps %xmm4, %xmm0
movaps %xmm12, -0x170(%rbp)
addss %xmm12, %xmm0
movaps %xmm0, %xmm12
movaps -0xa0(%rbp), %xmm0
xorps %xmm4, %xmm0
andps %xmm4, %xmm0
addss -0xc0(%rbp), %xmm0
movaps %xmm12, %xmm2
addss %xmm12, %xmm2
movaps %xmm1, %xmm4
subss %xmm2, %xmm4
addss %xmm0, %xmm4
subss %xmm1, %xmm12
addss %xmm13, %xmm1
ucomiss %xmm11, %xmm4
jne 0x8448
jnp 0x8472
mulss %xmm4, %xmm1
movaps %xmm12, %xmm0
mulss %xmm12, %xmm0
subss %xmm1, %xmm0
ucomiss %xmm11, %xmm0
jbe 0x84ab
movaps %xmm14, -0x1c0(%rbp)
jb 0x84c2
sqrtss %xmm0, %xmm0
jmp 0x8521
movaps %xmm12, %xmm0
mulss 0x665a(%rip), %xmm0     # 0xead8
divss %xmm0, %xmm1
xorl %eax, %eax
xorps %xmm2, %xmm2
ucomiss %xmm2, %xmm1
jb 0x84ad
movaps %xmm14, -0x1c0(%rbp)
movaps %xmm4, %xmm14
movss 0x65e8(%rip), %xmm0     # 0xea88
ucomiss %xmm1, %xmm0
jae 0x85a4
jmp 0x84ad
xorl %eax, %eax
xorl %ecx, %ecx
movss -0x2c(%rbp), %xmm12
movaps -0xe0(%rbp), %xmm14
jmp 0x86be
movss %xmm8, -0x134(%rbp)
movaps %xmm12, -0x1a0(%rbp)
movaps %xmm4, -0x1d0(%rbp)
callq 0x1160
movaps -0x1d0(%rbp), %xmm4
movaps -0x1a0(%rbp), %xmm12
movss -0x134(%rbp), %xmm8
movss -0x30(%rbp), %xmm5
movaps -0x90(%rbp), %xmm6
movaps -0x70(%rbp), %xmm7
movss -0x34(%rbp), %xmm15
xorps %xmm11, %xmm11
movaps -0x100(%rbp), %xmm10
movaps -0x110(%rbp), %xmm9
movss 0x65b3(%rip), %xmm3     # 0xeadc
movaps %xmm4, %xmm14
divss %xmm4, %xmm3
movaps %xmm12, %xmm1
addss %xmm0, %xmm1
mulss %xmm3, %xmm1
movaps %xmm12, %xmm2
subss %xmm0, %xmm2
mulss %xmm3, %xmm2
movaps %xmm1, %xmm3
movss 0x6534(%rip), %xmm4     # 0xea88
cmpleps %xmm4, %xmm3
xorps %xmm4, %xmm4
cmpleps %xmm1, %xmm4
andps %xmm3, %xmm4
movd %xmm4, %ecx
ucomiss %xmm11, %xmm0
jbe 0x858b
ucomiss %xmm11, %xmm2
jb 0x858b
movss 0x650e(%rip), %xmm0     # 0xea88
ucomiss %xmm2, %xmm0
jb 0x858b
testb $0x1, %cl
jne 0x8587
movaps %xmm2, %xmm1
movl %ecx, %eax
jmp 0x85a4
xorl %eax, %eax
testb $0x1, %cl
movss -0x80(%rbp), %xmm3
movss -0x160(%rbp), %xmm13
je 0x84ad
movaps -0xd0(%rbp), %xmm7
movaps 0x657e(%rip), %xmm0     # 0xeb30
andps %xmm0, %xmm7
addss -0x120(%rbp), %xmm7
movaps %xmm12, %xmm6
movaps -0x170(%rbp), %xmm12
andps %xmm0, %xmm12
addss -0x1c0(%rbp), %xmm12
movaps -0xc0(%rbp), %xmm13
andps %xmm0, %xmm13
addss -0xa0(%rbp), %xmm13
subss %xmm7, %xmm12
subss %xmm7, %xmm13
subss -0x140(%rbp), %xmm7
movaps %xmm1, %xmm0
addss %xmm1, %xmm0
movss 0x64d4(%rip), %xmm4     # 0xeae0
movaps %xmm4, %xmm3
subss %xmm0, %xmm3
movaps %xmm12, %xmm0
mulss %xmm1, %xmm3
mulss %xmm12, %xmm3
addss %xmm7, %xmm3
movaps %xmm14, %xmm12
mulss %xmm1, %xmm14
mulss %xmm1, %xmm1
mulss %xmm13, %xmm1
addss %xmm3, %xmm1
movss %xmm1, -0x2c(%rbp)
movaps %xmm6, -0x1a0(%rbp)
addss %xmm6, %xmm14
testb $0x1, %al
je 0x869b
movaps %xmm0, %xmm3
movaps %xmm2, %xmm0
addss %xmm2, %xmm0
movaps %xmm4, %xmm1
subss %xmm0, %xmm1
mulss %xmm2, %xmm1
mulss %xmm3, %xmm1
addss %xmm7, %xmm1
mulss %xmm2, %xmm12
mulss %xmm2, %xmm2
mulss %xmm13, %xmm2
addss %xmm1, %xmm2
addss -0x1a0(%rbp), %xmm12
movb $0x1, %al
movss %xmm12, -0x4c(%rbp)
movss %xmm2, -0x190(%rbp)
movb $0x1, %cl
jmp 0x869f
movb $0x1, %al
xorl %ecx, %ecx
movss -0x80(%rbp), %xmm3
movss -0x160(%rbp), %xmm13
movss -0x2c(%rbp), %xmm12
movaps -0x70(%rbp), %xmm7
movaps -0x90(%rbp), %xmm6
xorl %edx, %edx
movaps %xmm14, -0xe0(%rbp)
ucomiss %xmm14, %xmm11
setbe %dl
movss %xmm12, -0x2c(%rbp)
ucomiss %xmm12, %xmm11
leal -0x1(%rdx,%rdx), %edx
movl $0x0, %esi
cmovbel %esi, %edx
testb %al, %al
cmovel %esi, %edx
addl %r15d, %edx
xorl %eax, %eax
ucomiss -0x4c(%rbp), %xmm11
setbe %al
ucomiss -0x190(%rbp), %xmm11
leal -0x1(%rax,%rax), %r15d
cmovbel %esi, %r15d
testb %cl, %cl
cmovel %esi, %r15d
addl %edx, %r15d
addq $0xe, %rbx
cmpq %rbx, %r13
jne 0x8176
cmpl $0x0, -0x128(%rbp)
jle 0x9119
movq -0x1a8(%rbp), %r14
xorl %ebx, %ebx
movss 0x63a8(%rip), %xmm4     # 0xeae4
movaps 0x63ec(%rip), %xmm12    # 0xeb30
movswl 0xe(%r14), %eax
xorps %xmm1, %xmm1
cvtsi2ss %eax, %xmm1
mulss %xmm9, %xmm1
movswl 0x10(%r14), %eax
xorps %xmm0, %xmm0
cvtsi2ss %eax, %xmm0
mulss %xmm10, %xmm0
movss %xmm1, -0xa0(%rbp)
subss %xmm5, %xmm1
movss %xmm0, -0x2c(%rbp)
subss %xmm15, %xmm0
movaps %xmm0, %xmm2
mulss %xmm0, %xmm2
movaps %xmm1, %xmm3
mulss %xmm1, %xmm3
addss %xmm2, %xmm3
movaps %xmm4, %xmm2
mulss %xmm4, %xmm2
movaps %xmm4, %xmm8
xorps %xmm4, %xmm4
sqrtss %xmm3, %xmm4
cmpltss %xmm2, %xmm3
andps %xmm3, %xmm4
andnps %xmm8, %xmm3
orps %xmm4, %xmm3
movaps %xmm3, %xmm4
movzbl 0x1a(%r14), %eax
cmpl $0x3, %eax
je 0x8885
cmpl $0x2, %eax
jne 0x90f1
testq %rbx, %rbx
je 0x91cc
movaps %xmm4, %xmm8
movswl (%r14), %eax
xorps %xmm2, %xmm2
cvtsi2ss %eax, %xmm2
mulss %xmm9, %xmm2
movswl 0x2(%r14), %eax
xorps %xmm4, %xmm4
cvtsi2ss %eax, %xmm4
mulss %xmm10, %xmm4
subss -0xa0(%rbp), %xmm2
subss -0x2c(%rbp), %xmm4
movaps %xmm1, %xmm5
mulss %xmm4, %xmm5
movaps %xmm2, %xmm3
mulss %xmm0, %xmm3
subss %xmm5, %xmm3
andps 0x6323(%rip), %xmm3     # 0xeb40
movq -0xe8(%rbp), %rax
mulss (%rax,%rbx,4), %xmm3
ucomiss %xmm3, %xmm8
jbe 0x8a7b
mulss %xmm4, %xmm0
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
xorps %xmm12, %xmm1
mulss %xmm4, %xmm4
mulss %xmm2, %xmm2
addss %xmm4, %xmm2
divss %xmm2, %xmm1
xorps %xmm0, %xmm0
cmpless %xmm1, %xmm0
cmpless 0x6224(%rip), %xmm1     # 0xea88
andps %xmm1, %xmm3
andnps %xmm8, %xmm1
orps %xmm3, %xmm1
andps %xmm0, %xmm1
andnps %xmm8, %xmm0
orps %xmm1, %xmm0
movaps %xmm0, %xmm4
movss -0x30(%rbp), %xmm5
jmp 0x90f1
movswl (%r14), %eax
xorps %xmm8, %xmm8
cvtsi2ss %eax, %xmm8
movswl 0x12(%r14), %eax
xorps %xmm14, %xmm14
cvtsi2ss %eax, %xmm14
mulss %xmm9, %xmm8
mulss %xmm9, %xmm14
movss -0xa0(%rbp), %xmm3
movaps %xmm3, %xmm2
minss %xmm14, %xmm2
minss %xmm8, %xmm2
subss %xmm4, %xmm2
ucomiss %xmm2, %xmm5
jbe 0x90f1
movss %xmm14, -0xc0(%rbp)
maxss %xmm3, %xmm14
movaps %xmm8, %xmm3
maxss %xmm14, %xmm3
addss %xmm4, %xmm3
ucomiss %xmm5, %xmm3
jbe 0x90f1
movss %xmm8, -0xe0(%rbp)
movswl 0x2(%r14), %eax
xorps %xmm14, %xmm14
cvtsi2ss %eax, %xmm14
movswl 0x14(%r14), %eax
xorps %xmm3, %xmm3
cvtsi2ss %eax, %xmm3
mulss %xmm10, %xmm14
mulss %xmm10, %xmm3
movss -0x2c(%rbp), %xmm8
movaps %xmm8, %xmm2
minss %xmm3, %xmm2
minss %xmm14, %xmm2
subss %xmm4, %xmm2
ucomiss %xmm2, %xmm15
jbe 0x90f1
movaps %xmm6, %xmm13
movaps %xmm3, %xmm2
maxss %xmm8, %xmm2
movaps %xmm3, %xmm6
movaps %xmm14, %xmm3
maxss %xmm2, %xmm3
addss %xmm4, %xmm3
ucomiss %xmm15, %xmm3
jbe 0x90ed
movaps %xmm4, -0x120(%rbp)
movaps %xmm13, -0x90(%rbp)
movaps %xmm7, -0x70(%rbp)
movss -0xc0(%rbp), %xmm5
movaps %xmm5, %xmm2
movss -0xa0(%rbp), %xmm4
subss %xmm4, %xmm2
movaps %xmm6, %xmm3
subss %xmm8, %xmm3
addss %xmm5, %xmm5
subss %xmm5, %xmm4
addss -0xe0(%rbp), %xmm4
movss %xmm6, -0xd0(%rbp)
addss %xmm6, %xmm6
movaps %xmm8, %xmm5
subss %xmm6, %xmm5
addss %xmm14, %xmm5
movq -0xe8(%rbp), %rax
movss (%rax,%rbx,4), %xmm6
ucomiss %xmm11, %xmm6
movaps %xmm3, %xmm7
mulss %xmm5, %xmm7
movaps %xmm2, %xmm13
mulss %xmm4, %xmm13
addss %xmm7, %xmm13
mulss 0x60fc(%rip), %xmm13    # 0xeae8
jne 0x8a89
jp 0x8a89
movaps %xmm3, %xmm6
mulss %xmm3, %xmm6
movaps %xmm2, %xmm7
mulss %xmm2, %xmm7
addss %xmm6, %xmm7
mulss %xmm0, %xmm5
mulss %xmm1, %xmm4
addss %xmm5, %xmm4
addss %xmm7, %xmm7
addss %xmm4, %xmm7
mulss %xmm3, %xmm0
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
ucomiss %xmm11, %xmm13
movaps -0x90(%rbp), %xmm6
jne 0x8b6a
jp 0x8b6a
ucomiss %xmm11, %xmm7
movaps %xmm7, %xmm0
movaps -0x70(%rbp), %xmm7
movss -0x30(%rbp), %xmm5
movaps -0x120(%rbp), %xmm4
movss -0xd0(%rbp), %xmm3
jne 0x8a68
jnp 0x90f1
xorps %xmm12, %xmm1
divss %xmm0, %xmm1
xorl %ecx, %ecx
movaps %xmm1, %xmm13
jmp 0x8eac
movss -0x30(%rbp), %xmm5
movaps %xmm8, %xmm4
jmp 0x90f1
mulss %xmm6, %xmm13
movaps %xmm3, %xmm8
mulss %xmm3, %xmm8
movaps %xmm2, %xmm7
mulss %xmm2, %xmm7
addss %xmm8, %xmm7
mulss %xmm0, %xmm5
mulss %xmm1, %xmm4
addss %xmm5, %xmm4
addss %xmm7, %xmm7
addss %xmm4, %xmm7
mulss %xmm6, %xmm7
mulss %xmm3, %xmm0
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
mulss %xmm6, %xmm1
movaps %xmm13, %xmm5
movss 0x6015(%rip), %xmm3     # 0xeaec
divss %xmm3, %xmm5
movaps %xmm13, %xmm0
mulss %xmm13, %xmm0
divss %xmm3, %xmm0
addss %xmm7, %xmm0
movaps %xmm13, %xmm6
addss %xmm13, %xmm6
mulss 0x5ff3(%rip), %xmm7     # 0xeaf0
mulss %xmm13, %xmm6
addss %xmm7, %xmm6
mulss %xmm13, %xmm6
movss 0x5fe1(%rip), %xmm4     # 0xeaf4
divss %xmm4, %xmm6
addss %xmm1, %xmm6
movaps %xmm0, %xmm7
mulss %xmm0, %xmm7
mulss %xmm0, %xmm7
movaps %xmm7, %xmm2
mulss 0x5fc7(%rip), %xmm2     # 0xeaf8
divss %xmm4, %xmm2
movaps %xmm6, %xmm1
mulss %xmm6, %xmm1
addss %xmm2, %xmm1
ucomiss %xmm11, %xmm1
movss %xmm14, -0x170(%rbp)
movaps %xmm5, -0x160(%rbp)
movaps %xmm6, -0x80(%rbp)
jae 0x8bbf
divss %xmm3, %xmm0
ucomiss %xmm11, %xmm0
jb 0x8bca
sqrtss %xmm0, %xmm0
jmp 0x8bd9
movaps %xmm13, %xmm0
mulss 0x5f8e(%rip), %xmm0     # 0xeb04
mulss %xmm0, %xmm1
movaps %xmm7, -0x80(%rbp)
movaps %xmm7, %xmm0
mulss %xmm7, %xmm0
addss %xmm1, %xmm0
ucomiss %xmm0, %xmm11
movaps -0x70(%rbp), %xmm7
movss -0x30(%rbp), %xmm5
movaps -0x120(%rbp), %xmm4
ja 0x90f1
movss %xmm13, -0x70(%rbp)
ucomiss %xmm11, %xmm0
jb 0x8e26
xorps %xmm7, %xmm7
sqrtss %xmm0, %xmm7
jmp 0x8e7b
jb 0x8c01
xorps %xmm0, %xmm0
sqrtss %xmm1, %xmm0
jmp 0x8c19
movss %xmm7, -0x70(%rbp)
callq 0x1160
movss -0x70(%rbp), %xmm7
movss %xmm0, -0x90(%rbp)
movss 0x5f13(%rip), %xmm0     # 0xeafc
divss %xmm7, %xmm0
cvtss2sd %xmm0, %xmm0
ucomisd 0x5f7f(%rip), %xmm0     # 0xeb78
jb 0x8c5c
sqrtsd %xmm0, %xmm0
jmp 0x8c61
movaps %xmm1, %xmm0
callq 0x1160
movaps -0x80(%rbp), %xmm6
movaps 0x5f1b(%rip), %xmm12    # 0xeb30
xorps %xmm11, %xmm11
movss %xmm0, -0x4c(%rbp)
subss %xmm6, %xmm0
mulss 0x5e7a(%rip), %xmm0     # 0xeaa4
ucomiss %xmm0, %xmm11
jbe 0x8d2f
xorps %xmm12, %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0x5f1c(%rip), %xmm1     # 0xeb60
callq 0x1070
movaps 0x5ee0(%rip), %xmm1     # 0xeb30
cvtsd2ss %xmm0, %xmm0
xorps %xmm1, %xmm0
jmp 0x8d4b
callq 0x1210
movaps -0x80(%rbp), %xmm1
cvtss2sd %xmm1, %xmm1
mulsd %xmm0, %xmm1
mulsd 0x5ef3(%rip), %xmm1     # 0xeb68
movapd %xmm1, %xmm0
callq 0x1100
cvtsd2ss %xmm0, %xmm0
divss 0x5e5e(%rip), %xmm0     # 0xeae8
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x80(%rbp)
callq 0x10f0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x70(%rbp)
movsd -0x80(%rbp), %xmm0
addsd 0x5ec2(%rip), %xmm0     # 0xeb70
callq 0x10f0
cvtsd2ss %xmm0, %xmm0
mulss 0x5e41(%rip), %xmm0     # 0xeb00
movss -0x90(%rbp), %xmm3
movaps %xmm3, %xmm1
addss %xmm3, %xmm1
movss -0x70(%rbp), %xmm4
mulss %xmm4, %xmm1
movaps -0x160(%rbp), %xmm6
addss %xmm6, %xmm1
movaps %xmm0, %xmm2
addss %xmm4, %xmm2
mulss %xmm3, %xmm2
movaps %xmm6, %xmm7
subss %xmm2, %xmm7
subss %xmm0, %xmm4
mulss %xmm3, %xmm4
subss %xmm4, %xmm6
movb $0x1, %cl
movaps %xmm1, %xmm13
movb $0x1, %al
movaps -0x110(%rbp), %xmm9
movaps -0x100(%rbp), %xmm10
xorps %xmm11, %xmm11
movaps 0x5e0c(%rip), %xmm12    # 0xeb30
movss -0x34(%rbp), %xmm15
jmp 0x8df6
cvtss2sd %xmm0, %xmm0
movsd 0x5e25(%rip), %xmm1     # 0xeb60
callq 0x1070
movaps 0x5de9(%rip), %xmm1     # 0xeb30
cvtsd2ss %xmm0, %xmm0
movaps %xmm0, -0x190(%rbp)
movaps -0x80(%rbp), %xmm2
xorps %xmm1, %xmm2
subss -0x4c(%rbp), %xmm2
mulss 0x5d3e(%rip), %xmm2     # 0xeaa4
xorps %xmm0, %xmm0
ucomiss %xmm2, %xmm0
jbe 0x8d97
xorps %xmm1, %xmm2
xorps %xmm0, %xmm0
cvtss2sd %xmm2, %xmm0
movsd 0x5de0(%rip), %xmm1     # 0xeb60
callq 0x1070
movaps 0x5da3(%rip), %xmm12    # 0xeb30
cvtsd2ss %xmm0, %xmm0
xorps %xmm12, %xmm0
jmp 0x8db7
xorps %xmm0, %xmm0
cvtss2sd %xmm2, %xmm0
movsd 0x5dba(%rip), %xmm1     # 0xeb60
callq 0x1070
movaps 0x5d7d(%rip), %xmm12    # 0xeb30
cvtsd2ss %xmm0, %xmm0
movaps -0x160(%rbp), %xmm13
addss -0x190(%rbp), %xmm13
addss %xmm0, %xmm13
xorl %ecx, %ecx
xorl %eax, %eax
movaps -0x110(%rbp), %xmm9
movaps -0x100(%rbp), %xmm10
xorps %xmm11, %xmm11
movss -0x34(%rbp), %xmm15
movaps -0x70(%rbp), %xmm7
movaps -0x90(%rbp), %xmm6
movss -0x30(%rbp), %xmm5
movaps -0x120(%rbp), %xmm4
movss -0x2c(%rbp), %xmm8
movss -0xc0(%rbp), %xmm0
movss -0x170(%rbp), %xmm14
movss -0xd0(%rbp), %xmm3
jmp 0x8eb6
movss %xmm14, -0x170(%rbp)
callq 0x1160
movss -0x170(%rbp), %xmm14
movss -0x2c(%rbp), %xmm8
movaps -0x120(%rbp), %xmm4
movss -0x30(%rbp), %xmm5
movaps -0x90(%rbp), %xmm6
movss -0x34(%rbp), %xmm15
movaps 0x5ccc(%rip), %xmm12    # 0xeb30
xorps %xmm11, %xmm11
movaps -0x100(%rbp), %xmm10
movaps -0x110(%rbp), %xmm9
movaps %xmm0, %xmm7
movss -0xd0(%rbp), %xmm3
movaps -0x80(%rbp), %xmm1
movaps %xmm1, %xmm13
xorps %xmm12, %xmm13
subss %xmm7, %xmm13
movss -0x70(%rbp), %xmm0
addss %xmm0, %xmm0
divss %xmm0, %xmm13
subss %xmm1, %xmm7
divss %xmm0, %xmm7
movb $0x1, %cl
xorl %eax, %eax
movss -0xc0(%rbp), %xmm0
ucomiss %xmm11, %xmm13
jb 0x8f61
movss 0x5bc0(%rip), %xmm1     # 0xea88
ucomiss %xmm13, %xmm1
jb 0x8f61
movss 0x5bae(%rip), %xmm1     # 0xea88
subss %xmm13, %xmm1
movaps %xmm13, %xmm2
addss %xmm13, %xmm2
mulss %xmm1, %xmm2
mulss %xmm1, %xmm1
mulss %xmm2, %xmm0
movaps %xmm1, %xmm3
mulss -0xa0(%rbp), %xmm3
addss %xmm0, %xmm3
mulss %xmm13, %xmm13
movaps %xmm13, %xmm0
mulss -0xe0(%rbp), %xmm0
addss %xmm3, %xmm0
movss -0xd0(%rbp), %xmm3
mulss %xmm3, %xmm2
mulss %xmm8, %xmm1
addss %xmm2, %xmm1
mulss %xmm14, %xmm13
addss %xmm1, %xmm13
subss %xmm5, %xmm0
subss %xmm15, %xmm13
mulss %xmm13, %xmm13
mulss %xmm0, %xmm0
addss %xmm13, %xmm0
movaps %xmm4, %xmm1
mulss %xmm4, %xmm1
ucomiss %xmm0, %xmm1
jbe 0x8f61
xorps %xmm4, %xmm4
sqrtss %xmm0, %xmm4
movaps %xmm7, %xmm0
movss 0x5b1c(%rip), %xmm1     # 0xea88
cmpleps %xmm1, %xmm0
xorps %xmm1, %xmm1
cmpleps %xmm7, %xmm1
andps %xmm0, %xmm1
movd %xmm1, %edx
andb %dl, %cl
cmpb $0x1, %cl
jne 0x9025
movss 0x5af7(%rip), %xmm1     # 0xea88
subss %xmm7, %xmm1
movaps %xmm7, %xmm2
addss %xmm7, %xmm2
mulss %xmm1, %xmm2
mulss %xmm1, %xmm1
movss -0xc0(%rbp), %xmm0
mulss %xmm2, %xmm0
movaps %xmm1, %xmm3
mulss -0xa0(%rbp), %xmm3
addss %xmm0, %xmm3
movaps %xmm4, %xmm8
movaps %xmm7, %xmm4
mulss %xmm7, %xmm4
movaps %xmm4, %xmm0
mulss -0xe0(%rbp), %xmm0
addss %xmm3, %xmm0
movss -0xd0(%rbp), %xmm3
mulss %xmm3, %xmm2
mulss -0x2c(%rbp), %xmm1
addss %xmm2, %xmm1
mulss %xmm14, %xmm4
addss %xmm1, %xmm4
subss %xmm5, %xmm0
subss %xmm15, %xmm4
mulss %xmm4, %xmm4
mulss %xmm0, %xmm0
addss %xmm4, %xmm0
movaps %xmm8, %xmm4
movaps %xmm8, %xmm1
mulss %xmm8, %xmm1
ucomiss %xmm0, %xmm1
jbe 0x9025
xorps %xmm4, %xmm4
sqrtss %xmm0, %xmm4
movaps %xmm6, %xmm0
movss 0x5a58(%rip), %xmm1     # 0xea88
cmpleps %xmm1, %xmm0
xorps %xmm1, %xmm1
cmpleps %xmm6, %xmm1
andps %xmm0, %xmm1
movd %xmm1, %ecx
andb %cl, %al
cmpb $0x1, %al
jne 0x90f1
movss 0x5a34(%rip), %xmm0     # 0xea88
subss %xmm6, %xmm0
movaps %xmm6, %xmm1
addss %xmm6, %xmm1
mulss %xmm0, %xmm1
mulss %xmm0, %xmm0
movss -0xc0(%rbp), %xmm2
mulss %xmm1, %xmm2
movaps %xmm6, %xmm8
movaps %xmm3, %xmm6
movss -0xa0(%rbp), %xmm3
mulss %xmm0, %xmm3
addss %xmm2, %xmm3
movaps %xmm8, %xmm13
movaps %xmm8, %xmm2
mulss %xmm8, %xmm2
movss -0xe0(%rbp), %xmm8
mulss %xmm2, %xmm8
addss %xmm3, %xmm8
mulss %xmm1, %xmm6
mulss -0x2c(%rbp), %xmm0
addss %xmm6, %xmm0
mulss %xmm14, %xmm2
addss %xmm0, %xmm2
subss %xmm5, %xmm8
subss %xmm15, %xmm2
mulss %xmm2, %xmm2
mulss %xmm8, %xmm8
addss %xmm2, %xmm8
movaps %xmm4, %xmm0
mulss %xmm4, %xmm0
ucomiss %xmm8, %xmm0
jbe 0x90ed
xorps %xmm4, %xmm4
sqrtss %xmm8, %xmm4
movaps %xmm13, %xmm6
incq %rbx
addq $0xe, %r14
cmpq %rbx, -0x130(%rbp)
jne 0x8744
jmp 0x9129
movss 0x59c5(%rip), %xmm4     # 0xead4
movaps -0x100(%rbp), %xmm10
jmp 0x9148
movss 0x59c3(%rip), %xmm4     # 0xeae4
movaps 0x5a07(%rip), %xmm12    # 0xeb30
testl %r15d, %r15d
jne 0x9132
xorps %xmm12, %xmm4
movl -0x38(%rbp), %ebx
movq -0x178(%rbp), %r14
movl -0xa4(%rbp), %r15d
movss -0x50(%rbp), %xmm1
mulss %xmm1, %xmm4
addss -0x144(%rbp), %xmm4
xorps %xmm0, %xmm0
ucomiss %xmm4, %xmm0
ja 0x9170
ucomiss 0x5959(%rip), %xmm4     # 0xeabc
movaps %xmm4, %xmm0
jbe 0x9170
movss 0x594c(%rip), %xmm0     # 0xeabc
cvttss2si %xmm0, %eax
movl -0x3c(%rbp), %ecx
subl -0x44(%rbp), %ecx
imull %ebx, %ecx
movl -0x48(%rbp), %edx
movl %r15d, %esi
subl %edx, %esi
addl %ecx, %esi
movslq %esi, %rcx
movb %al, (%r14,%rcx)
incl %r15d
movl -0x54(%rbp), %ecx
cmpl %ecx, %r15d
jl 0x808b
movl -0x40(%rbp), %eax
movl %edx, %r15d
movl -0x3c(%rbp), %edx
incl %edx
movl %edx, -0x3c(%rbp)
cmpl %eax, %edx
jl 0x8026
movq -0xe8(%rbp), %rdi
callq 0x1030
movq %r12, %rdi
callq 0x1030
jmp 0x7d62
leaq 0x5b8e(%rip), %rdi      # 0xed61
leaq 0x5a8e(%rip), %rsi      # 0xec68
leaq 0x5b87(%rip), %rcx      # 0xed68
movl $0x117b, %edx           # imm = 0x117B
callq 0x10c0