// File: /workspace/github_cpp_makefile_star2_O2/Ciaxur[P]yagb-emu/include/imgui/imgui.cpp
// Function: ImGui::RenderNavHighlight(ImRect const&, unsigned int, int)
void ImGui::RenderNavHighlight(const ImRect& bb, ImGuiID id, ImGuiNavHighlightFlags flags)
{
    ImGuiContext& g = *GImGui;
    if (id != g.NavId)
        return;
    if (g.NavDisableHighlight && !(flags & ImGuiNavHighlightFlags_AlwaysDraw))
        return;
    ImGuiWindow* window = g.CurrentWindow;
    if (window->DC.NavHideHighlightOneFrame)
        return;

    float rounding = (flags & ImGuiNavHighlightFlags_NoRounding) ? 0.0f : g.Style.FrameRounding;
    ImRect display_rect = bb;
    display_rect.ClipWith(window->ClipRect);
    if (flags & ImGuiNavHighlightFlags_TypeDefault)
    {
        const float THICKNESS = 2.0f;
        const float DISTANCE = 3.0f + THICKNESS * 0.5f;
        display_rect.Expand(ImVec2(DISTANCE, DISTANCE));
        bool fully_visible = window->ClipRect.Contains(display_rect);
        if (!fully_visible)
            window->DrawList->PushClipRect(display_rect.Min, display_rect.Max);
        window->DrawList->AddRect(display_rect.Min + ImVec2(THICKNESS * 0.5f, THICKNESS * 0.5f), display_rect.Max - ImVec2(THICKNESS * 0.5f, THICKNESS * 0.5f), GetColorU32(ImGuiCol_NavHighlight), rounding, ImDrawCornerFlags_All, THICKNESS);
        if (!fully_visible)
            window->DrawList->PopClipRect();
    }
    if (flags & ImGuiNavHighlightFlags_TypeThin)
    {
        window->DrawList->AddRect(display_rect.Min, display_rect.Max, GetColorU32(ImGuiCol_NavHighlight), rounding, ~0, 1.0f);
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq 0xad037(%rip), %rax     # 0xe3ce0
cmpl %esi, 0x1c98(%rax)
jne 0x36e53
movl %edx, %ebx
testb $0x4, %bl
jne 0x36cc9
cmpb $0x0, 0x1ce6(%rax)
jne 0x36e53
movq 0x1ae0(%rax), %r12
cmpb $0x0, 0x15c(%r12)
jne 0x36e53
xorps %xmm0, %xmm0
movss %xmm0, -0x2c(%rbp)
testb $0x8, %bl
jne 0x36cf9
movss 0x15a0(%rax), %xmm0
movss %xmm0, -0x2c(%rbp)
movups (%rdi), %xmm0
leaq -0x40(%rbp), %rdi
movaps %xmm0, (%rdi)
leaq 0x258(%r12), %r14
movq %r14, %rsi
callq 0x49efc
testb $0x1, %bl
je 0x36e10
movss 0x65b68(%rip), %xmm0    # 0x9c88c
leaq -0x40(%rbp), %rsi
movss (%rsi), %xmm1
addss %xmm0, %xmm1
movss %xmm1, (%rsi)
addss 0x4(%rsi), %xmm0
movss %xmm0, 0x4(%rsi)
movss 0x65b4a(%rip), %xmm0    # 0x9c890
movss 0x8(%rsi), %xmm1
addss %xmm0, %xmm1
movss %xmm1, 0x8(%rsi)
addss 0xc(%rsi), %xmm0
movss %xmm0, 0xc(%rsi)
movq %r14, %rdi
callq 0x49f2c
movl %eax, %r14d
testb %al, %al
jne 0x36d86
movq 0x2b8(%r12), %rdi
movsd -0x40(%rbp), %xmm0
movsd -0x38(%rbp), %xmm1
xorl %esi, %esi
callq 0x62204
movq 0x2b8(%r12), %r15
movss 0x65262(%rip), %xmm0    # 0x9bff8
movss -0x40(%rbp), %xmm1
addss %xmm0, %xmm1
movss -0x3c(%rbp), %xmm2
addss %xmm0, %xmm2
unpcklps %xmm2, %xmm1            # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
leaq -0x48(%rbp), %rax
movss 0x65239(%rip), %xmm2    # 0x9bff0
movss -0x38(%rbp), %xmm3
addss %xmm2, %xmm3
addss -0x34(%rbp), %xmm2
movlps %xmm1, (%rax)
unpcklps %xmm2, %xmm3            # xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1]
leaq -0x50(%rbp), %r13
movlps %xmm3, (%r13)
pushq $0x31
popq %rdi
callq 0x35d33
pushq $0xf
popq %r8
movss 0x65aac(%rip), %xmm1    # 0x9c894
movq %r15, %rdi
leaq -0x48(%rbp), %rsi
movq %r13, %rdx
movl %eax, %ecx
movss -0x2c(%rbp), %xmm0
callq 0x63f6c
testb %r14b, %r14b
jne 0x36e10
movq 0x2b8(%r12), %rdi
callq 0x622f0
testb $0x2, %bl
je 0x36e53
movq 0x2b8(%r12), %rbx
leaq -0x38(%rbp), %r14
pushq $0x31
popq %rdi
movss 0x651cc(%rip), %xmm0    # 0x9bff8
callq 0x35d33
leaq -0x40(%rbp), %rsi
pushq $-0x1
popq %r8
movq %rbx, %rdi
movq %r14, %rdx
movl %eax, %ecx
movss -0x2c(%rbp), %xmm0
movss 0x651aa(%rip), %xmm1    # 0x9bff8
callq 0x63f6c
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq