// File: /workspace/github_cpp_makefile_star2_O1/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, %r14
movq %rdi, %rbx
xorps %xmm3, %xmm3
ucomiss %xmm3, %xmm0
movl 0x78(%rdi), %r12d
jne 0x78a3a
jp 0x78a3a
movl 0x7c(%rbx), %eax
cmpl %eax, %r12d
jne 0x78c4a
incl %r12d
testl %eax, %eax
je 0x78bf7
movl %eax, %ecx
shrl $0x1f, %ecx
addl %eax, %ecx
sarl %ecx
addl %eax, %ecx
jmp 0x78bfc
leal (%rdx,%r12), %r15d
incl %r15d
cmpl %r15d, 0x7c(%rbx)
movq %rdx, %r12
movss %xmm0, -0x38(%rbp)
movss %xmm1, -0x34(%rbp)
jge 0x78aab
movss %xmm2, -0x2c(%rbp)
movq %r12, %r13
movslq %r15d, %rdi
shlq $0x3, %rdi
callq 0x424fb
movq %rax, %r12
movq 0x80(%rbx), %rsi
testq %rsi, %rsi
je 0x78a93
movslq 0x78(%rbx), %rdx
shlq $0x3, %rdx
movq %r12, %rdi
callq 0xc080
movq 0x80(%rbx), %rdi
callq 0x425d4
movq %r12, 0x80(%rbx)
movl %r15d, 0x7c(%rbx)
movq %r13, %r12
movss -0x2c(%rbp), %xmm2
movss -0x34(%rbp), %xmm1
testl %r12d, %r12d
js 0x78c5f
xorps %xmm0, %xmm0
cvtsi2ss %r12d, %xmm0
movss %xmm0, -0x3c(%rbp)
subss %xmm1, %xmm2
incl %r12d
xorl %r13d, %r13d
movq %r14, -0x50(%rbp)
movss %xmm2, -0x2c(%rbp)
xorps %xmm3, %xmm3
cvtsi2ss %r13d, %xmm3
divss -0x3c(%rbp), %xmm3
mulss %xmm2, %xmm3
addss %xmm1, %xmm3
movss %xmm3, -0x30(%rbp)
movss (%r14), %xmm0
movss %xmm0, -0x44(%rbp)
movaps %xmm3, %xmm0
callq 0xc5d0
movss %xmm0, -0x48(%rbp)
movss 0x4(%r14), %xmm0
movss %xmm0, -0x40(%rbp)
movss -0x30(%rbp), %xmm0
callq 0xc050
movss -0x38(%rbp), %xmm1
movl 0x78(%rbx), %r15d
movl 0x7c(%rbx), %eax
cmpl %eax, %r15d
jne 0x78baf
testl %eax, %eax
je 0x78b40
movl %eax, %ecx
shrl $0x1f, %ecx
addl %eax, %ecx
sarl %ecx
addl %eax, %ecx
jmp 0x78b45
movl $0x8, %ecx
incl %r15d
cmpl %r15d, %ecx
cmovgl %ecx, %r15d
cmpl %r15d, %eax
jge 0x78baf
movss %xmm0, -0x30(%rbp)
movq %r12, %r14
movslq %r15d, %rdi
shlq $0x3, %rdi
callq 0x424fb
movq %rax, %r12
movq 0x80(%rbx), %rsi
testq %rsi, %rsi
je 0x78b93
movslq 0x78(%rbx), %rdx
shlq $0x3, %rdx
movq %r12, %rdi
callq 0xc080
movq 0x80(%rbx), %rdi
callq 0x425d4
movq %r12, 0x80(%rbx)
movl %r15d, 0x7c(%rbx)
movq %r14, %r12
movq -0x50(%rbp), %r14
movss -0x38(%rbp), %xmm1
movss -0x30(%rbp), %xmm0
movss -0x48(%rbp), %xmm2
mulss %xmm1, %xmm2
addss -0x44(%rbp), %xmm2
mulss %xmm1, %xmm0
addss -0x40(%rbp), %xmm0
movq 0x80(%rbx), %rax
movslq 0x78(%rbx), %rcx
movss %xmm2, (%rax,%rcx,8)
movss %xmm0, 0x4(%rax,%rcx,8)
incl 0x78(%rbx)
incl %r13d
cmpl %r13d, %r12d
movss -0x2c(%rbp), %xmm2
movss -0x34(%rbp), %xmm1
jne 0x78ad4
jmp 0x78c5f
movl $0x8, %ecx
cmpl %r12d, %ecx
cmovgl %ecx, %r12d
cmpl %r12d, %eax
jge 0x78c4a
movslq %r12d, %rdi
shlq $0x3, %rdi
callq 0x424fb
movq %rax, %r15
movq 0x80(%rbx), %rsi
testq %rsi, %rsi
je 0x78c3f
movslq 0x78(%rbx), %rdx
shlq $0x3, %rdx
movq %r15, %rdi
callq 0xc080
movq 0x80(%rbx), %rdi
callq 0x425d4
movq %r15, 0x80(%rbx)
movl %r12d, 0x7c(%rbx)
movq 0x80(%rbx), %rax
movslq 0x78(%rbx), %rcx
movq (%r14), %rdx
movq %rdx, (%rax,%rcx,8)
incl 0x78(%rbx)
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq