// File: /workspace/github_cpp_makefile_star2_O3/Ciaxur[P]yagb-emu/include/imgui/imgui_draw.cpp
// Function: ImGui::RenderRectFilledWithHole(ImDrawList*, ImRect, ImRect, unsigned int, float)
void ImGui::RenderRectFilledWithHole(ImDrawList* draw_list, ImRect outer, ImRect inner, ImU32 col, float rounding)
{
    const bool fill_L = (inner.Min.x > outer.Min.x);
    const bool fill_R = (inner.Max.x < outer.Max.x);
    const bool fill_U = (inner.Min.y > outer.Min.y);
    const bool fill_D = (inner.Max.y < outer.Max.y);
    if (fill_L) draw_list->AddRectFilled(ImVec2(outer.Min.x, inner.Min.y), ImVec2(inner.Min.x, inner.Max.y), col, rounding, (fill_U ? 0 : ImDrawCornerFlags_TopLeft) | (fill_D ? 0 : ImDrawCornerFlags_BotLeft));
    if (fill_R) draw_list->AddRectFilled(ImVec2(inner.Max.x, inner.Min.y), ImVec2(outer.Max.x, inner.Max.y), col, rounding, (fill_U ? 0 : ImDrawCornerFlags_TopRight) | (fill_D ? 0 : ImDrawCornerFlags_BotRight));
    if (fill_U) draw_list->AddRectFilled(ImVec2(inner.Min.x, outer.Min.y), ImVec2(inner.Max.x, inner.Min.y), col, rounding, (fill_L ? 0 : ImDrawCornerFlags_TopLeft) | (fill_R ? 0 : ImDrawCornerFlags_TopRight));
    if (fill_D) draw_list->AddRectFilled(ImVec2(inner.Min.x, inner.Max.y), ImVec2(inner.Max.x, outer.Max.y), col, rounding, (fill_L ? 0 : ImDrawCornerFlags_BotLeft) | (fill_R ? 0 : ImDrawCornerFlags_BotRight));
    if (fill_L && fill_U) draw_list->AddRectFilled(ImVec2(outer.Min.x, outer.Min.y), ImVec2(inner.Min.x, inner.Min.y), col, rounding, ImDrawCornerFlags_TopLeft);
    if (fill_R && fill_U) draw_list->AddRectFilled(ImVec2(inner.Max.x, outer.Min.y), ImVec2(outer.Max.x, inner.Min.y), col, rounding, ImDrawCornerFlags_TopRight);
    if (fill_L && fill_D) draw_list->AddRectFilled(ImVec2(outer.Min.x, inner.Max.y), ImVec2(inner.Min.x, outer.Max.y), col, rounding, ImDrawCornerFlags_BotLeft);
    if (fill_R && fill_D) draw_list->AddRectFilled(ImVec2(inner.Max.x, inner.Max.y), ImVec2(outer.Max.x, outer.Max.y), col, rounding, ImDrawCornerFlags_BotRight);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0xa0, %rsp
movss %xmm4, -0x14(%rbp)
movl %esi, %ebx
movq %rdi, %r14
ucomiss %xmm0, %xmm2
movaps %xmm2, -0x90(%rbp)
shufps $0x55, %xmm2, %xmm2     # xmm2 = xmm2[1,1,1,1]
movaps %xmm0, -0x80(%rbp)
movaps %xmm0, %xmm4
shufps $0x55, %xmm0, %xmm4     # xmm4 = xmm4[1,1],xmm0[1,1]
movaps %xmm3, -0x60(%rbp)
shufps $0x55, %xmm3, %xmm3     # xmm3 = xmm3[1,1,1,1]
movaps %xmm3, -0x50(%rbp)
movaps %xmm1, -0x70(%rbp)
shufps $0x55, %xmm1, %xmm1     # xmm1 = xmm1[1,1,1,1]
movaps %xmm1, -0x40(%rbp)
movaps %xmm2, -0xb0(%rbp)
movaps %xmm4, -0xa0(%rbp)
jbe 0x82e6e
xorl %eax, %eax
movaps -0x50(%rbp), %xmm0
movaps -0x40(%rbp), %xmm1
ucomiss %xmm0, %xmm1
setbe %al
xorl %ecx, %ecx
ucomiss %xmm4, %xmm2
setbe %cl
leaq -0x24(%rbp), %rsi
movaps -0x80(%rbp), %xmm1
movss %xmm1, (%rsi)
movss %xmm2, 0x4(%rsi)
leaq -0x1c(%rbp), %rdx
movaps -0x90(%rbp), %xmm1
movss %xmm1, (%rdx)
movss %xmm0, 0x4(%rdx)
leal (%rcx,%rax,4), %r8d
movq %r14, %rdi
movl %ebx, %ecx
movss -0x14(%rbp), %xmm0
callq 0x785e6
movaps -0xa0(%rbp), %xmm4
movaps -0xb0(%rbp), %xmm2
movaps -0x70(%rbp), %xmm0
ucomiss -0x60(%rbp), %xmm0
jbe 0x82ed5
xorl %eax, %eax
movaps -0x50(%rbp), %xmm1
movaps -0x40(%rbp), %xmm0
ucomiss %xmm1, %xmm0
setbe %al
xorl %ecx, %ecx
ucomiss %xmm4, %xmm2
setbe %cl
leaq -0x24(%rbp), %rsi
movaps -0x60(%rbp), %xmm0
movss %xmm0, (%rsi)
movss %xmm2, 0x4(%rsi)
leaq -0x1c(%rbp), %rdx
movaps -0x70(%rbp), %xmm0
movss %xmm0, (%rdx)
movss %xmm1, 0x4(%rdx)
addl %ecx, %ecx
leal (%rcx,%rax,8), %r8d
movq %r14, %rdi
movl %ebx, %ecx
movss -0x14(%rbp), %xmm0
callq 0x785e6
movaps -0xa0(%rbp), %xmm4
movaps -0xb0(%rbp), %xmm2
ucomiss %xmm4, %xmm2
jbe 0x82f35
xorl %eax, %eax
movaps -0x70(%rbp), %xmm0
movaps -0x60(%rbp), %xmm1
ucomiss %xmm1, %xmm0
setbe %al
xorl %ecx, %ecx
movaps -0x90(%rbp), %xmm0
ucomiss -0x80(%rbp), %xmm0
setbe %cl
leaq -0x24(%rbp), %rsi
movss %xmm0, (%rsi)
movss %xmm4, 0x4(%rsi)
leaq -0x1c(%rbp), %rdx
movss %xmm1, (%rdx)
movss %xmm2, 0x4(%rdx)
leal (%rcx,%rax,2), %r8d
movq %r14, %rdi
movl %ebx, %ecx
movss -0x14(%rbp), %xmm0
callq 0x785e6
movaps -0xa0(%rbp), %xmm4
movaps -0xb0(%rbp), %xmm2
movaps -0x40(%rbp), %xmm0
ucomiss -0x50(%rbp), %xmm0
jbe 0x82fa5
xorl %eax, %eax
movaps -0x70(%rbp), %xmm0
movaps -0x60(%rbp), %xmm1
ucomiss %xmm1, %xmm0
setbe %al
xorl %ecx, %ecx
movaps -0x90(%rbp), %xmm0
ucomiss -0x80(%rbp), %xmm0
setbe %cl
leaq -0x24(%rbp), %rsi
movss %xmm0, (%rsi)
movaps -0x50(%rbp), %xmm0
movss %xmm0, 0x4(%rsi)
leaq -0x1c(%rbp), %rdx
movss %xmm1, (%rdx)
movaps -0x40(%rbp), %xmm0
movss %xmm0, 0x4(%rdx)
shll $0x2, %ecx
leal (%rcx,%rax,8), %r8d
movq %r14, %rdi
movl %ebx, %ecx
movss -0x14(%rbp), %xmm0
callq 0x785e6
movaps -0xa0(%rbp), %xmm4
movaps -0xb0(%rbp), %xmm2
movaps -0x90(%rbp), %xmm0
ucomiss -0x80(%rbp), %xmm0
jbe 0x82fff
ucomiss %xmm4, %xmm2
jbe 0x82fff
leaq -0x24(%rbp), %rsi
movaps -0x80(%rbp), %xmm0
movss %xmm0, (%rsi)
movss %xmm4, 0x4(%rsi)
leaq -0x1c(%rbp), %rdx
movaps -0x90(%rbp), %xmm0
movss %xmm0, (%rdx)
movss %xmm2, 0x4(%rdx)
movq %r14, %rdi
movl %ebx, %ecx
movss -0x14(%rbp), %xmm0
movl $0x1, %r8d
callq 0x785e6
movaps -0xa0(%rbp), %xmm4
movaps -0xb0(%rbp), %xmm2
movaps -0x70(%rbp), %xmm0
ucomiss -0x60(%rbp), %xmm0
jbe 0x83045
ucomiss %xmm4, %xmm2
jbe 0x83045
leaq -0x24(%rbp), %rsi
movaps -0x60(%rbp), %xmm0
movss %xmm0, (%rsi)
movss %xmm4, 0x4(%rsi)
leaq -0x1c(%rbp), %rdx
movaps -0x70(%rbp), %xmm0
movss %xmm0, (%rdx)
movss %xmm2, 0x4(%rdx)
movq %r14, %rdi
movl %ebx, %ecx
movss -0x14(%rbp), %xmm0
movl $0x2, %r8d
callq 0x785e6
movaps -0x90(%rbp), %xmm0
ucomiss -0x80(%rbp), %xmm0
jbe 0x8309e
movaps -0x40(%rbp), %xmm0
ucomiss -0x50(%rbp), %xmm0
jbe 0x8309e
leaq -0x24(%rbp), %rsi
movaps -0x80(%rbp), %xmm0
movss %xmm0, (%rsi)
movaps -0x50(%rbp), %xmm0
movss %xmm0, 0x4(%rsi)
leaq -0x1c(%rbp), %rdx
movaps -0x90(%rbp), %xmm0
movss %xmm0, (%rdx)
movaps -0x40(%rbp), %xmm0
movss %xmm0, 0x4(%rdx)
movq %r14, %rdi
movl %ebx, %ecx
movss -0x14(%rbp), %xmm0
movl $0x4, %r8d
callq 0x785e6
movaps -0x70(%rbp), %xmm0
ucomiss -0x60(%rbp), %xmm0
jbe 0x830f1
movaps -0x40(%rbp), %xmm0
ucomiss -0x50(%rbp), %xmm0
jbe 0x830f1
leaq -0x24(%rbp), %rsi
movaps -0x60(%rbp), %xmm0
movss %xmm0, (%rsi)
movaps -0x50(%rbp), %xmm0
movss %xmm0, 0x4(%rsi)
leaq -0x1c(%rbp), %rdx
movaps -0x70(%rbp), %xmm0
movss %xmm0, (%rdx)
movaps -0x40(%rbp), %xmm0
movss %xmm0, 0x4(%rdx)
movq %r14, %rdi
movl %ebx, %ecx
movss -0x14(%rbp), %xmm0
movl $0x8, %r8d
callq 0x785e6
addq $0xa0, %rsp
popq %rbx
popq %r14
popq %rbp
retq