// File: /workspace/github_cpp_makefile_star2_O3/Ciaxur[P]yagb-emu/include/imgui/imgui_draw.cpp
// Function: ImDrawList::PathArcTo(ImVec2 const&, float, float, float, int)
void ImDrawList::PathArcTo(const ImVec2& center, float radius, float a_min, float a_max, int num_segments)
{
    if (radius == 0.0f)
    {
        _Path.push_back(center);
        return;
    }

    // Note that we are adding a point at both a_min and a_max.
    // If you are trying to draw a full closed circle you don't want the overlapping points!
    _Path.reserve(_Path.Size + (num_segments + 1));
    for (int i = 0; i <= num_segments; i++)
    {
        const float a = a_min + ((float)i / (float)num_segments) * (a_max - a_min);
        _Path.push_back(ImVec2(center.x + ImCos(a) * radius, center.y + ImSin(a) * radius));
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rsi, -0x50(%rbp)
movq %rdi, %rbx
xorps %xmm3, %xmm3
ucomiss %xmm3, %xmm0
movl 0x78(%rdi), %eax
jne 0x77298
jp 0x77298
cmpl 0x7c(%rbx), %eax
jne 0x77443
leal 0x1(%rax), %r12d
testl %eax, %eax
je 0x7744c
movl %eax, %ecx
shrl $0x1f, %ecx
addl %eax, %ecx
sarl %ecx
addl %eax, %ecx
jmp 0x77451
movl %edx, %r14d
leal (%r14,%rax), %r15d
incl %r15d
cmpl %r15d, 0x7c(%rbx)
movss %xmm1, -0x34(%rbp)
movss %xmm0, -0x3c(%rbp)
jge 0x77303
movss %xmm2, -0x2c(%rbp)
movslq %r15d, %rdi
shlq $0x3, %rdi
callq 0x41c63
movq %rax, %r12
movq 0x80(%rbx), %rsi
testq %rsi, %rsi
je 0x772ee
movslq 0x78(%rbx), %rdx
shlq $0x3, %rdx
movq %r12, %rdi
callq 0xc080
movq 0x80(%rbx), %rdi
callq 0x41d3c
movq %r12, 0x80(%rbx)
movl %r15d, 0x7c(%rbx)
movss -0x2c(%rbp), %xmm2
movss -0x34(%rbp), %xmm1
testl %r14d, %r14d
js 0x774ad
xorps %xmm3, %xmm3
cvtsi2ss %r14d, %xmm3
movss %xmm3, -0x38(%rbp)
subss %xmm1, %xmm2
incl %r14d
xorl %r13d, %r13d
movss %xmm2, -0x2c(%rbp)
xorps %xmm3, %xmm3
cvtsi2ss %r13d, %xmm3
divss -0x38(%rbp), %xmm3
mulss %xmm2, %xmm3
addss %xmm1, %xmm3
movss %xmm3, -0x30(%rbp)
movq -0x50(%rbp), %r15
movss (%r15), %xmm0
movss %xmm0, -0x44(%rbp)
movaps %xmm3, %xmm0
callq 0xc5d0
movss %xmm0, -0x48(%rbp)
movss 0x4(%r15), %xmm0
movss %xmm0, -0x40(%rbp)
movss -0x30(%rbp), %xmm0
callq 0xc050
movaps %xmm0, %xmm2
movl 0x78(%rbx), %r15d
cmpl 0x7c(%rbx), %r15d
jne 0x77399
testl %r15d, %r15d
movss %xmm2, -0x30(%rbp)
je 0x773a2
movl %r15d, %eax
shrl $0x1f, %eax
addl %r15d, %eax
sarl %eax
addl %r15d, %eax
jmp 0x773a7
movq 0x80(%rbx), %r12
jmp 0x773fc
movl $0x8, %eax
incl %r15d
cmpl %r15d, %eax
cmovgl %eax, %r15d
movslq %r15d, %rdi
shlq $0x3, %rdi
callq 0x41c63
movq %rax, %r12
movq 0x80(%rbx), %rsi
testq %rsi, %rsi
je 0x773e8
movslq 0x78(%rbx), %rdx
shlq $0x3, %rdx
movq %r12, %rdi
callq 0xc080
movq 0x80(%rbx), %rdi
callq 0x41d3c
movq %r12, 0x80(%rbx)
movl %r15d, 0x7c(%rbx)
movl 0x78(%rbx), %r15d
movss -0x30(%rbp), %xmm2
movss -0x3c(%rbp), %xmm0
movss -0x48(%rbp), %xmm1
mulss %xmm0, %xmm1
addss -0x44(%rbp), %xmm1
mulss %xmm0, %xmm2
addss -0x40(%rbp), %xmm2
movslq %r15d, %rax
movss %xmm1, (%r12,%rax,8)
movss %xmm2, 0x4(%r12,%rax,8)
incl 0x78(%rbx)
incl %r13d
cmpl %r13d, %r14d
movss -0x2c(%rbp), %xmm2
movss -0x34(%rbp), %xmm1
jne 0x77328
jmp 0x774ad
movq 0x80(%rbx), %r15
jmp 0x7749d
movl $0x8, %ecx
cmpl %r12d, %ecx
cmovgl %ecx, %r12d
movslq %r12d, %rdi
shlq $0x3, %rdi
callq 0x41c63
movq %rax, %r15
movq 0x80(%rbx), %rsi
testq %rsi, %rsi
je 0x7748f
movslq 0x78(%rbx), %rdx
shlq $0x3, %rdx
movq %r15, %rdi
callq 0xc080
movq 0x80(%rbx), %rdi
callq 0x41d3c
movq %r15, 0x80(%rbx)
movl %r12d, 0x7c(%rbx)
movl 0x78(%rbx), %eax
cltq
movq -0x50(%rbp), %rcx
movq (%rcx), %rcx
movq %rcx, (%r15,%rax,8)
incl 0x78(%rbx)
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq