// File: /workspace/github_cpp_makefile_star2_O1/donfreiday[P]gb/./imgui/imgui_draw.cpp
// Function: ImDrawList::PathArcToFast(ImVec2 const&, float, int, int)
void ImDrawList::PathArcToFast(const ImVec2& centre, float radius, int amin, int amax)
{
    static ImVec2 circle_vtx[12];
    static bool circle_vtx_builds = false;
    const int circle_vtx_count = IM_ARRAYSIZE(circle_vtx);
    if (!circle_vtx_builds)
    {
        for (int i = 0; i < circle_vtx_count; i++)
        {
            const float a = ((float)i / (float)circle_vtx_count) * 2*IM_PI;
            circle_vtx[i].x = cosf(a);
            circle_vtx[i].y = sinf(a);
        }
        circle_vtx_builds = true;
    }

    if (amin > amax) return;
    if (radius == 0.0f)
    {
        _Path.push_back(centre);
    }
    else
    {
        _Path.reserve(_Path.Size + (amax - amin + 1));
        for (int a = amin; a <= amax; a++)
        {
            const ImVec2& c = circle_vtx[a % circle_vtx_count];
            _Path.push_back(ImVec2(centre.x + c.x * radius, centre.y + c.y * radius));
        }
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movl %edx, %r12d
movq %rsi, %rbx
movq %rdi, %r14
movb 0x30d88(%rip), %al      # 0x5fd80
testb %al, %al
movss %xmm0, -0x30(%rbp)
je 0x2f277
cmpb $0x0, 0x30d7c(%rip)     # 0x5fd88
jne 0x2f071
movl %ecx, -0x2c(%rbp)
xorl %r15d, %r15d
leaq 0x30d05(%rip), %r13     # 0x5fd20
xorps %xmm0, %xmm0
cvtsi2ss %r15d, %xmm0
divss 0x13815(%rip), %xmm0    # 0x42840
addss %xmm0, %xmm0
mulss 0x1380d(%rip), %xmm0    # 0x42844
movss %xmm0, -0x34(%rbp)
callq 0x74f0
movss %xmm0, (%r13,%r15,8)
movss -0x34(%rbp), %xmm0
callq 0x7050
movss %xmm0, 0x4(%r13,%r15,8)
incq %r15
cmpq $0xc, %r15
jne 0x2f01b
movb $0x1, 0x30d1f(%rip)     # 0x5fd88
movl -0x2c(%rbp), %ecx
movss -0x30(%rbp), %xmm0
movl %ecx, %eax
subl %r12d, %eax
jl 0x2f268
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
movl 0x70(%r14), %r13d
jne 0x2f0b2
jp 0x2f0b2
movl 0x74(%r14), %eax
cmpl %eax, %r13d
jne 0x2f252
incl %r13d
testl %eax, %eax
je 0x2f20d
movl %eax, %ecx
shrl $0x1f, %ecx
addl %eax, %ecx
sarl %ecx
addl %eax, %ecx
jmp 0x2f212
addl %r13d, %eax
incl %eax
cmpl %eax, 0x74(%r14)
jge 0x2f100
movslq %eax, %r15
leaq (,%r15,8), %rdi
movl %ecx, -0x2c(%rbp)
callq 0x85d9
movq %rax, %r13
movq 0x78(%r14), %rsi
movslq 0x70(%r14), %rdx
shlq $0x3, %rdx
movq %rax, %rdi
callq 0x7080
movq 0x78(%r14), %rdi
callq 0x9065
movss -0x30(%rbp), %xmm0
movl -0x2c(%rbp), %ecx
movq %r13, 0x78(%r14)
movl %r15d, 0x74(%r14)
cmpl %r12d, %ecx
jl 0x2f268
incl %ecx
leaq 0x30c0e(%rip), %rdi     # 0x5fd20
movq %rbx, -0x40(%rbp)
movslq %r12d, %rax
imulq $0x2aaaaaab, %rax, %rsi # imm = 0x2AAAAAAB
movq %rsi, %rdx
shrq $0x3f, %rdx
shrq $0x21, %rsi
addl %edx, %esi
shll $0x2, %esi
leal (%rsi,%rsi,2), %edx
subl %edx, %eax
cltq
movss (%rdi,%rax,8), %xmm1
mulss %xmm0, %xmm1
addss (%rbx), %xmm1
movss 0x4(%rdi,%rax,8), %xmm2
mulss %xmm0, %xmm2
addss 0x4(%rbx), %xmm2
movl 0x70(%r14), %r15d
movl 0x74(%r14), %eax
cmpl %eax, %r15d
jne 0x2f1e5
testl %eax, %eax
je 0x2f175
movl %eax, %edx
shrl $0x1f, %edx
addl %eax, %edx
sarl %edx
addl %eax, %edx
jmp 0x2f17a
movl $0x8, %edx
incl %r15d
cmpl %r15d, %edx
cmovgl %edx, %r15d
cmpl %r15d, %eax
jge 0x2f1e5
movslq %r15d, %rdi
shlq $0x3, %rdi
movl %ecx, %ebx
movss %xmm1, -0x34(%rbp)
movss %xmm2, -0x2c(%rbp)
callq 0x85d9
movq %rax, %r13
movq 0x78(%r14), %rsi
movslq 0x70(%r14), %rdx
shlq $0x3, %rdx
movq %rax, %rdi
callq 0x7080
movq 0x78(%r14), %rdi
callq 0x9065
movss -0x2c(%rbp), %xmm2
movss -0x34(%rbp), %xmm1
leaq 0x30b4e(%rip), %rdi     # 0x5fd20
movss -0x30(%rbp), %xmm0
movl %ebx, %ecx
movq -0x40(%rbp), %rbx
movq %r13, 0x78(%r14)
movl %r15d, 0x74(%r14)
movq 0x78(%r14), %rax
movslq 0x70(%r14), %rsi
leal 0x1(%rsi), %edx
movl %edx, 0x70(%r14)
movss %xmm1, (%rax,%rsi,8)
movss %xmm2, 0x4(%rax,%rsi,8)
incl %r12d
cmpl %r12d, %ecx
jne 0x2f116
jmp 0x2f268
movl $0x8, %ecx
cmpl %r13d, %ecx
cmovgl %ecx, %r13d
cmpl %r13d, %eax
jge 0x2f252
movslq %r13d, %rdi
shlq $0x3, %rdi
callq 0x85d9
movq %rax, %r15
movq 0x78(%r14), %rsi
movslq 0x70(%r14), %rdx
shlq $0x3, %rdx
movq %rax, %rdi
callq 0x7080
movq 0x78(%r14), %rdi
callq 0x9065
movq %r15, 0x78(%r14)
movl %r13d, 0x74(%r14)
movq 0x78(%r14), %rax
movslq 0x70(%r14), %rcx
leal 0x1(%rcx), %edx
movl %edx, 0x70(%r14)
movq (%rbx), %rdx
movq %rdx, (%rax,%rcx,8)
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rbx, %r15
movl %ecx, %ebx
callq 0x7a3b
movss -0x30(%rbp), %xmm0
movl %ebx, %ecx
movq %r15, %rbx
jmp 0x2f005