// File: Ciaxur[P]yagb-emu/include/imgui/imstb_truetype.h
// Function: stbtt__handle_clipped_edge(float*, int, stbtt__active_edge*, float, float, float, float)
static void stbtt__handle_clipped_edge(float *scanline, int x, stbtt__active_edge *e, float x0, float y0, float x1, float y1)
{
   if (y0 == y1) return;
   STBTT_assert(y0 < y1);
   STBTT_assert(e->sy <= e->ey);
   if (y0 > e->ey) return;
   if (y1 < e->sy) return;
   if (y0 < e->sy) {
      x0 += (x1-x0) * (e->sy - y0) / (y1-y0);
      y0 = e->sy;
   }
   if (y1 > e->ey) {
      x1 += (x1-x0) * (e->ey - y1) / (y1-y0);
      y1 = e->ey;
   }

   if (x0 == x)
      STBTT_assert(x1 <= x+1);
   else if (x0 == x+1)
      STBTT_assert(x1 >= x);
   else if (x0 <= x)
      STBTT_assert(x1 <= x);
   else if (x0 >= x+1)
      STBTT_assert(x1 >= x+1);
   else
      STBTT_assert(x1 >= x && x1 <= x+1);

   if (x0 <= x && x1 <= x)
      scanline[x] += e->direction * (y1-y0);
   else if (x0 >= x+1 && x1 >= x+1)
      ;
   else {
      STBTT_assert(x0 >= x && x0 <= x+1 && x1 >= x && x1 <= x+1);
      scanline[x] += e->direction * (y1-y0) * (1-((x0-x)+(x1-x))/2); // coverage = 1 - average x position
   }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movq %rdx, -0x18(%rbp)
movss %xmm0, -0x1c(%rbp)
movss %xmm1, -0x20(%rbp)
movss %xmm2, -0x24(%rbp)
movss %xmm3, -0x28(%rbp)
movss -0x20(%rbp), %xmm0
ucomiss -0x28(%rbp), %xmm0
jne 0x1260d9
jp 0x1260d9
jmp 0x126521
jmp 0x1260db
movss -0x20(%rbp), %xmm1
movss -0x28(%rbp), %xmm0
ucomiss %xmm1, %xmm0
jbe 0x1260ec
jmp 0x12610b
leaq 0x655b1(%rip), %rdi     # 0x18b6a4
leaq 0x64ef0(%rip), %rsi     # 0x18afea
movl $0xb7b, %edx            # imm = 0xB7B
leaq 0x655a6(%rip), %rcx     # 0x18b6ac
callq 0xd180
jmp 0x12610d
jmp 0x12610f
movq -0x18(%rbp), %rax
movss 0x18(%rax), %xmm1
movq -0x18(%rbp), %rax
movss 0x1c(%rax), %xmm0
ucomiss %xmm1, %xmm0
jb 0x126128
jmp 0x126147
leaq 0x655dd(%rip), %rdi     # 0x18b70c
leaq 0x64eb4(%rip), %rsi     # 0x18afea
movl $0xb7c, %edx            # imm = 0xB7C
leaq 0x6556a(%rip), %rcx     # 0x18b6ac
callq 0xd180
jmp 0x126149
movss -0x20(%rbp), %xmm0
movq -0x18(%rbp), %rax
ucomiss 0x1c(%rax), %xmm0
jbe 0x12615d
jmp 0x126521
movss -0x28(%rbp), %xmm1
movq -0x18(%rbp), %rax
movss 0x18(%rax), %xmm0
ucomiss %xmm1, %xmm0
jbe 0x126175
jmp 0x126521
movss -0x20(%rbp), %xmm1
movq -0x18(%rbp), %rax
movss 0x18(%rax), %xmm0
ucomiss %xmm1, %xmm0
jbe 0x1261ca
movss -0x24(%rbp), %xmm0
subss -0x1c(%rbp), %xmm0
movq -0x18(%rbp), %rax
movss 0x18(%rax), %xmm1
subss -0x20(%rbp), %xmm1
mulss %xmm1, %xmm0
movss -0x28(%rbp), %xmm1
subss -0x20(%rbp), %xmm1
divss %xmm1, %xmm0
addss -0x1c(%rbp), %xmm0
movss %xmm0, -0x1c(%rbp)
movq -0x18(%rbp), %rax
movss 0x18(%rax), %xmm0
movss %xmm0, -0x20(%rbp)
movss -0x28(%rbp), %xmm0
movq -0x18(%rbp), %rax
ucomiss 0x1c(%rax), %xmm0
jbe 0x12621b
movss -0x24(%rbp), %xmm0
subss -0x1c(%rbp), %xmm0
movq -0x18(%rbp), %rax
movss 0x1c(%rax), %xmm1
subss -0x28(%rbp), %xmm1
mulss %xmm1, %xmm0
movss -0x28(%rbp), %xmm1
subss -0x20(%rbp), %xmm1
divss %xmm1, %xmm0
addss -0x24(%rbp), %xmm0
movss %xmm0, -0x24(%rbp)
movq -0x18(%rbp), %rax
movss 0x1c(%rax), %xmm0
movss %xmm0, -0x28(%rbp)
movss -0x1c(%rbp), %xmm0
cvtsi2ssl -0xc(%rbp), %xmm1
ucomiss %xmm1, %xmm0
jne 0x12626a
jp 0x12626a
jmp 0x12622e
movss -0x24(%rbp), %xmm1
movl -0xc(%rbp), %eax
addl $0x1, %eax
cvtsi2ss %eax, %xmm0
ucomiss %xmm1, %xmm0
jb 0x126244
jmp 0x126263
leaq 0x6550d(%rip), %rdi     # 0x18b758
leaq 0x64d98(%rip), %rsi     # 0x18afea
movl $0xb89, %edx            # imm = 0xB89
leaq 0x6544e(%rip), %rcx     # 0x18b6ac
callq 0xd180
jmp 0x126265
jmp 0x1263b2
movss -0x1c(%rbp), %xmm0
movl -0xc(%rbp), %eax
addl $0x1, %eax
cvtsi2ss %eax, %xmm1
ucomiss %xmm1, %xmm0
jne 0x1262b9
jp 0x1262b9
jmp 0x126282
movss -0x24(%rbp), %xmm0
cvtsi2ssl -0xc(%rbp), %xmm1
ucomiss %xmm1, %xmm0
jb 0x126293
jmp 0x1262b2
leaq 0x65481(%rip), %rdi     # 0x18b71b
leaq 0x64d49(%rip), %rsi     # 0x18afea
movl $0xb8b, %edx            # imm = 0xB8B
leaq 0x653ff(%rip), %rcx     # 0x18b6ac
callq 0xd180
jmp 0x1262b4
jmp 0x1263b0
movss -0x1c(%rbp), %xmm1
cvtsi2ssl -0xc(%rbp), %xmm0
ucomiss %xmm1, %xmm0
jb 0x126301
jmp 0x1262ca
movss -0x24(%rbp), %xmm1
cvtsi2ssl -0xc(%rbp), %xmm0
ucomiss %xmm1, %xmm0
jb 0x1262db
jmp 0x1262fa
leaq 0x65441(%rip), %rdi     # 0x18b723
leaq 0x64d01(%rip), %rsi     # 0x18afea
movl $0xb8d, %edx            # imm = 0xB8D
leaq 0x653b7(%rip), %rcx     # 0x18b6ac
callq 0xd180
jmp 0x1262fc
jmp 0x1263ae
movss -0x1c(%rbp), %xmm0
movl -0xc(%rbp), %eax
addl $0x1, %eax
cvtsi2ss %eax, %xmm1
ucomiss %xmm1, %xmm0
jb 0x126350
jmp 0x126317
movss -0x24(%rbp), %xmm0
movl -0xc(%rbp), %eax
addl $0x1, %eax
cvtsi2ss %eax, %xmm1
ucomiss %xmm1, %xmm0
jb 0x12632d
jmp 0x12634c
leaq 0x653f7(%rip), %rdi     # 0x18b72b
leaq 0x64caf(%rip), %rsi     # 0x18afea
movl $0xb8f, %edx            # imm = 0xB8F
leaq 0x65365(%rip), %rcx     # 0x18b6ac
callq 0xd180
jmp 0x12634e
jmp 0x1263ac
jmp 0x126352
movss -0x24(%rbp), %xmm0
cvtsi2ssl -0xc(%rbp), %xmm1
xorl %eax, %eax
ucomiss %xmm1, %xmm0
movb %al, -0x29(%rbp)
jb 0x12637e
movss -0x24(%rbp), %xmm1
movl -0xc(%rbp), %eax
addl $0x1, %eax
cvtsi2ss %eax, %xmm0
ucomiss %xmm1, %xmm0
setae %al
movb %al, -0x29(%rbp)
movb -0x29(%rbp), %al
testb $0x1, %al
jne 0x126387
jmp 0x126389
jmp 0x1263a8
leaq 0x653bd(%rip), %rdi     # 0x18b74d
leaq 0x64c53(%rip), %rsi     # 0x18afea
movl $0xb91, %edx            # imm = 0xB91
leaq 0x65309(%rip), %rcx     # 0x18b6ac
callq 0xd180
jmp 0x1263aa
jmp 0x1263ac
jmp 0x1263ae
jmp 0x1263b0
jmp 0x1263b2
movss -0x1c(%rbp), %xmm1
cvtsi2ssl -0xc(%rbp), %xmm0
ucomiss %xmm1, %xmm0
jb 0x126402
movss -0x24(%rbp), %xmm1
cvtsi2ssl -0xc(%rbp), %xmm0
ucomiss %xmm1, %xmm0
jb 0x126402
movq -0x18(%rbp), %rax
movss 0x14(%rax), %xmm0
movss -0x28(%rbp), %xmm2
subss -0x20(%rbp), %xmm2
movq -0x8(%rbp), %rax
movslq -0xc(%rbp), %rcx
movss (%rax,%rcx,4), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, (%rax,%rcx,4)
jmp 0x126521
movss -0x1c(%rbp), %xmm0
movl -0xc(%rbp), %eax
addl $0x1, %eax
cvtsi2ss %eax, %xmm1
ucomiss %xmm1, %xmm0
jb 0x12642f
movss -0x24(%rbp), %xmm0
movl -0xc(%rbp), %eax
addl $0x1, %eax
cvtsi2ss %eax, %xmm1
ucomiss %xmm1, %xmm0
jb 0x12642f
jmp 0x12651f
jmp 0x126431
movss -0x1c(%rbp), %xmm0
cvtsi2ssl -0xc(%rbp), %xmm1
xorl %eax, %eax
ucomiss %xmm1, %xmm0
movb %al, -0x2a(%rbp)
jb 0x12648a
movss -0x1c(%rbp), %xmm1
movl -0xc(%rbp), %eax
addl $0x1, %eax
cvtsi2ss %eax, %xmm0
xorl %eax, %eax
ucomiss %xmm1, %xmm0
movb %al, -0x2a(%rbp)
jb 0x12648a
movss -0x24(%rbp), %xmm0
cvtsi2ssl -0xc(%rbp), %xmm1
xorl %eax, %eax
ucomiss %xmm1, %xmm0
movb %al, -0x2a(%rbp)
jb 0x12648a
movss -0x24(%rbp), %xmm1
movl -0xc(%rbp), %eax
addl $0x1, %eax
cvtsi2ss %eax, %xmm0
ucomiss %xmm1, %xmm0
setae %al
movb %al, -0x2a(%rbp)
movb -0x2a(%rbp), %al
testb $0x1, %al
jne 0x126493
jmp 0x126495
jmp 0x1264b4
leaq 0x65299(%rip), %rdi     # 0x18b735
leaq 0x64b47(%rip), %rsi     # 0x18afea
movl $0xb98, %edx            # imm = 0xB98
leaq 0x651fd(%rip), %rcx     # 0x18b6ac
callq 0xd180
jmp 0x1264b6
movq -0x18(%rbp), %rax
movss 0x14(%rax), %xmm0
movss -0x28(%rbp), %xmm1
subss -0x20(%rbp), %xmm1
mulss %xmm1, %xmm0
movss -0x1c(%rbp), %xmm1
cvtsi2ssl -0xc(%rbp), %xmm2
subss %xmm2, %xmm1
movss -0x24(%rbp), %xmm2
cvtsi2ssl -0xc(%rbp), %xmm3
subss %xmm3, %xmm2
addss %xmm2, %xmm1
movss 0x4bad7(%rip), %xmm2    # 0x171fcc
divss %xmm2, %xmm1
movss 0x4a73b(%rip), %xmm2    # 0x170c3c
subss %xmm1, %xmm2
movq -0x8(%rbp), %rax
movslq -0xc(%rbp), %rcx
movss (%rax,%rcx,4), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, (%rax,%rcx,4)
jmp 0x126521
addq $0x30, %rsp
popq %rbp
retq
nopw (%rax,%rax)