// File: Ciaxur[P]yagb-emu/include/imgui/imstb_truetype.h
// Function: stbtt__tesselate_curve(stbtt__point*, int*, float, float, float, float, float, float, float, int)
static int stbtt__tesselate_curve(stbtt__point *points, int *num_points, float x0, float y0, float x1, float y1, float x2, float y2, float objspace_flatness_squared, int n)
{
   // midpoint
   float mx = (x0 + 2*x1 + x2)/4;
   float my = (y0 + 2*y1 + y2)/4;
   // versus directly drawn line
   float dx = (x0+x2)/2 - mx;
   float dy = (y0+y2)/2 - my;
   if (n > 16) // 65536 segments on one curve better be enough!
      return 1;
   if (dx*dx+dy*dy > objspace_flatness_squared) { // half-pixel error allowed... need to be smaller if AA
      stbtt__tesselate_curve(points, num_points, x0,y0, (x0+x1)/2.0f,(y0+y1)/2.0f, mx,my, objspace_flatness_squared,n+1);
      stbtt__tesselate_curve(points, num_points, mx,my, (x1+x2)/2.0f,(y1+y2)/2.0f, x2,y2, objspace_flatness_squared,n+1);
   } else {
      stbtt__add_point(points, *num_points,x2,y2);
      *num_points = *num_points+1;
   }
   return 1;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movss %xmm0, -0x1c(%rbp)
movss %xmm1, -0x20(%rbp)
movss %xmm2, -0x24(%rbp)
movss %xmm3, -0x28(%rbp)
movss %xmm4, -0x2c(%rbp)
movss %xmm5, -0x30(%rbp)
movss %xmm6, -0x34(%rbp)
movl %edx, -0x38(%rbp)
movss -0x1c(%rbp), %xmm1
movss -0x24(%rbp), %xmm0
addss %xmm0, %xmm0
addss %xmm1, %xmm0
addss -0x2c(%rbp), %xmm0
movss 0x4e3bf(%rip), %xmm1    # 0x172734
divss %xmm1, %xmm0
movss %xmm0, -0x3c(%rbp)
movss -0x20(%rbp), %xmm1
movss -0x28(%rbp), %xmm0
addss %xmm0, %xmm0
addss %xmm1, %xmm0
addss -0x30(%rbp), %xmm0
movss 0x4e397(%rip), %xmm1    # 0x172734
divss %xmm1, %xmm0
movss %xmm0, -0x40(%rbp)
movss -0x1c(%rbp), %xmm0
addss -0x2c(%rbp), %xmm0
movss 0x4dc14(%rip), %xmm1    # 0x171fcc
divss %xmm1, %xmm0
subss -0x3c(%rbp), %xmm0
movss %xmm0, -0x44(%rbp)
movss -0x20(%rbp), %xmm0
addss -0x30(%rbp), %xmm0
movss 0x4dbf4(%rip), %xmm1    # 0x171fcc
divss %xmm1, %xmm0
subss -0x40(%rbp), %xmm0
movss %xmm0, -0x48(%rbp)
cmpl $0x10, -0x38(%rbp)
jle 0x1243f8
movl $0x1, -0x4(%rbp)
jmp 0x1244ff
movss -0x44(%rbp), %xmm0
movss -0x44(%rbp), %xmm2
movss -0x48(%rbp), %xmm1
mulss -0x48(%rbp), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
ucomiss -0x34(%rbp), %xmm0
jbe 0x1244d0
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movss -0x1c(%rbp), %xmm0
movss -0x20(%rbp), %xmm1
movss -0x1c(%rbp), %xmm2
addss -0x24(%rbp), %xmm2
movss 0x4db8a(%rip), %xmm3    # 0x171fcc
divss %xmm3, %xmm2
movss -0x20(%rbp), %xmm3
addss -0x28(%rbp), %xmm3
movss 0x4db74(%rip), %xmm4    # 0x171fcc
divss %xmm4, %xmm3
movss -0x3c(%rbp), %xmm4
movss -0x40(%rbp), %xmm5
movss -0x34(%rbp), %xmm6
movl -0x38(%rbp), %edx
addl $0x1, %edx
callq 0x124320
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movss -0x3c(%rbp), %xmm0
movss -0x40(%rbp), %xmm1
movss -0x24(%rbp), %xmm2
addss -0x2c(%rbp), %xmm2
movss 0x4db32(%rip), %xmm3    # 0x171fcc
divss %xmm3, %xmm2
movss -0x28(%rbp), %xmm3
addss -0x30(%rbp), %xmm3
movss 0x4db1c(%rip), %xmm4    # 0x171fcc
divss %xmm4, %xmm3
movss -0x2c(%rbp), %xmm4
movss -0x30(%rbp), %xmm5
movss -0x34(%rbp), %xmm6
movl -0x38(%rbp), %edx
addl $0x1, %edx
callq 0x124320
jmp 0x1244f8
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movl (%rax), %esi
movss -0x2c(%rbp), %xmm0
movss -0x30(%rbp), %xmm1
callq 0x1242d0
movq -0x18(%rbp), %rax
movl (%rax), %ecx
addl $0x1, %ecx
movq -0x18(%rbp), %rax
movl %ecx, (%rax)
movl $0x1, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x50, %rsp
popq %rbp
retq
nopl (%rax,%rax)