// File: /workspace/github_cpp_makefile_star2_O1/Ciaxur[P]yagb-emu/include/imgui/imgui_draw.cpp
// Function: ImGui::RenderMouseCursor(ImDrawList*, ImVec2, float, int, unsigned int, unsigned int, unsigned int)
void ImGui::RenderMouseCursor(ImDrawList* draw_list, ImVec2 pos, float scale, ImGuiMouseCursor mouse_cursor, ImU32 col_fill, ImU32 col_border, ImU32 col_shadow)
{
    if (mouse_cursor == ImGuiMouseCursor_None)
        return;
    IM_ASSERT(mouse_cursor > ImGuiMouseCursor_None && mouse_cursor < ImGuiMouseCursor_COUNT);

    ImFontAtlas* font_atlas = draw_list->_Data->Font->ContainerAtlas;
    ImVec2 offset, size, uv[4];
    if (font_atlas->GetMouseCursorTexData(mouse_cursor, &offset, &size, &uv[0], &uv[2]))
    {
        pos -= offset;
        const ImTextureID tex_id = font_atlas->TexID;
        draw_list->PushTextureID(tex_id);
        draw_list->AddImage(tex_id, pos + ImVec2(1, 0) * scale, pos + (ImVec2(1, 0) + size) * scale,    uv[2], uv[3], col_shadow);
        draw_list->AddImage(tex_id, pos + ImVec2(2, 0) * scale, pos + (ImVec2(2, 0) + size) * scale,    uv[2], uv[3], col_shadow);
        draw_list->AddImage(tex_id, pos,                        pos + size * scale,                     uv[2], uv[3], col_border);
        draw_list->AddImage(tex_id, pos,                        pos + size * scale,                     uv[0], uv[1], col_fill);
        draw_list->PopTextureID();
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xb8, %rsp
movlps %xmm0, -0x50(%rbp)
cmpl $-0x1, %esi
je 0x8400c
movss %xmm1, -0x30(%rbp)
movl %ecx, -0x48(%rbp)
cmpl $0x9, %esi
jae 0x8401e
movl %r8d, %r13d
movl %edx, %r15d
movq %rdi, %rbx
movq 0x38(%rdi), %rax
movq 0x8(%rax), %rax
movq 0x40(%rax), %r14
xorl %eax, %eax
leaq -0x60(%rbp), %rdx
movq %rax, (%rdx)
leaq -0x58(%rbp), %rcx
movq %rax, (%rcx)
xorps %xmm0, %xmm0
leaq -0x90(%rbp), %r12
movaps %xmm0, (%r12)
movaps %xmm0, -0x10(%r12)
leaq -0xa0(%rbp), %r8
movq %r14, %rdi
movq %r12, %r9
callq 0x7dc4a
testb %al, %al
je 0x8400c
leaq -0x50(%rbp), %rax
movss (%rax), %xmm1
movss 0x4(%rax), %xmm0
subss -0x60(%rbp), %xmm1
movss %xmm1, -0x2c(%rbp)
movss %xmm1, (%rax)
subss -0x5c(%rbp), %xmm0
movss %xmm0, -0x34(%rbp)
movss %xmm0, 0x4(%rax)
movq 0x8(%r14), %r14
movq %rbx, %rdi
movq %r14, %rsi
callq 0x77348
xorps %xmm0, %xmm0
movss -0x30(%rbp), %xmm1
movaps %xmm1, %xmm2
mulss %xmm0, %xmm2
movss -0x2c(%rbp), %xmm4
movaps %xmm4, %xmm0
addss %xmm1, %xmm0
movaps %xmm1, %xmm5
movss -0x34(%rbp), %xmm1
addss %xmm1, %xmm2
movaps %xmm2, -0xc0(%rbp)
unpcklps %xmm2, %xmm0            # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
leaq -0x40(%rbp), %rax
movlps %xmm0, (%rax)
movq %rax, %rdx
movss -0x58(%rbp), %xmm3
movaps %xmm3, -0x70(%rbp)
movss -0x54(%rbp), %xmm2
movaps %xmm2, -0xd0(%rbp)
movss 0x33114(%rip), %xmm0    # 0xb6fe4
addss %xmm3, %xmm0
xorps %xmm3, %xmm3
addss %xmm2, %xmm3
mulss %xmm5, %xmm0
mulss %xmm5, %xmm3
addss %xmm4, %xmm0
addss %xmm1, %xmm3
movaps %xmm3, -0xb0(%rbp)
unpcklps %xmm3, %xmm0            # xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
movl %r15d, -0x44(%rbp)
leaq -0x78(%rbp), %r15
movlps %xmm0, (%r15)
leaq -0x88(%rbp), %r9
movl %r13d, (%rsp)
movq %rbx, %rdi
movq %r14, %rsi
movq %r15, %rcx
movq %r12, %r8
callq 0x7b6fe
movss -0x30(%rbp), %xmm2
movaps %xmm2, %xmm0
addss %xmm2, %xmm0
movss -0x2c(%rbp), %xmm1
addss %xmm1, %xmm0
unpcklps -0xc0(%rbp), %xmm0      # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
leaq -0x40(%rbp), %rax
movlps %xmm0, (%rax)
movss 0x33920(%rip), %xmm0    # 0xb7868
addss -0x70(%rbp), %xmm0
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
unpcklps -0xb0(%rbp), %xmm0      # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
movlps %xmm0, (%r15)
movl %r13d, (%rsp)
leaq -0x40(%rbp), %r15
leaq -0x78(%rbp), %rcx
movq %rbx, %rdi
movq %r14, %rsi
movq %r15, %rdx
movq %r12, %r8
leaq -0x88(%rbp), %r9
callq 0x7b6fe
movaps -0x70(%rbp), %xmm0
movss -0x30(%rbp), %xmm1
mulss %xmm1, %xmm0
movaps -0xd0(%rbp), %xmm2
mulss %xmm1, %xmm2
addss -0x2c(%rbp), %xmm0
addss -0x34(%rbp), %xmm2
unpcklps %xmm2, %xmm0            # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
movaps %xmm0, -0x70(%rbp)
movlps %xmm0, (%r15)
movl -0x48(%rbp), %eax
movl %eax, (%rsp)
movq %rbx, %rdi
movq %r14, %rsi
leaq -0x50(%rbp), %r13
movq %r13, %rdx
movq %r15, %rcx
movq %r12, %r8
leaq -0x88(%rbp), %r9
callq 0x7b6fe
movaps -0x70(%rbp), %xmm0
movlps %xmm0, (%r15)
leaq -0x98(%rbp), %r9
movl -0x44(%rbp), %eax
movl %eax, (%rsp)
leaq -0x40(%rbp), %rcx
leaq -0xa0(%rbp), %r8
movq %rbx, %rdi
movq %r14, %rsi
movq %r13, %rdx
callq 0x7b6fe
movq %rbx, %rdi
callq 0x773ea
addq $0xb8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x4bdd2(%rip), %rdi     # 0xcfdf7
leaq 0x4b1aa(%rip), %rsi     # 0xcf1d6
leaq 0x4be12(%rip), %rcx     # 0xcfe45
movl $0xdc3, %edx            # imm = 0xDC3
callq 0xc140