// File: 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
subq $0xc0, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl %edx, -0x10(%rbp)
movq 0x149d44(%rip), %rax    # 0x212f40
movq %rax, -0x18(%rbp)
movl -0xc(%rbp), %eax
movq -0x18(%rbp), %rcx
cmpl 0x1c98(%rcx), %eax
je 0xc9214
jmp 0xc9491
movq -0x18(%rbp), %rax
testb $0x1, 0x1ce6(%rax)
je 0xc9231
movl -0x10(%rbp), %eax
andl $0x4, %eax
cmpl $0x0, %eax
jne 0xc9231
jmp 0xc9491
movq -0x18(%rbp), %rax
movq 0x1ae0(%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
testb $0x1, 0x15c(%rax)
je 0xc9252
jmp 0xc9491
movl -0x10(%rbp), %eax
andl $0x8, %eax
cmpl $0x0, %eax
je 0xc9267
xorps %xmm0, %xmm0
movss %xmm0, -0x7c(%rbp)
jmp 0xc9278
movq -0x18(%rbp), %rax
movss 0x15a0(%rax), %xmm0
movss %xmm0, -0x7c(%rbp)
movss -0x7c(%rbp), %xmm0
movss %xmm0, -0x24(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rcx
movq %rcx, -0x34(%rbp)
movq 0x8(%rax), %rax
movq %rax, -0x2c(%rbp)
movq -0x20(%rbp), %rsi
addq $0x258, %rsi            # imm = 0x258
leaq -0x34(%rbp), %rdi
callq 0xe8970
movl -0x10(%rbp), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0xc9419
movss 0xa8d0c(%rip), %xmm0    # 0x171fcc
movss %xmm0, -0x38(%rbp)
movss 0xa9467(%rip), %xmm0    # 0x172734
movss %xmm0, -0x3c(%rbp)
leaq -0x44(%rbp), %rdi
movss 0xa9456(%rip), %xmm1    # 0x172734
movaps %xmm1, %xmm0
callq 0xbf4c0
leaq -0x34(%rbp), %rdi
leaq -0x44(%rbp), %rsi
callq 0xe89d0
movq -0x20(%rbp), %rdi
addq $0x258, %rdi            # imm = 0x258
leaq -0x34(%rbp), %rsi
callq 0xe8a40
andb $0x1, %al
movb %al, -0x45(%rbp)
testb $0x1, -0x45(%rbp)
jne 0xc933e
movq -0x20(%rbp), %rax
movq 0x2b8(%rax), %rdi
movq -0x34(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x2c(%rbp), %rax
movq %rax, -0x58(%rbp)
movsd -0x50(%rbp), %xmm0
movsd -0x58(%rbp), %xmm1
xorl %esi, %esi
callq 0x10f4f0
movq -0x20(%rbp), %rax
movq 0x2b8(%rax), %rax
movq %rax, -0x88(%rbp)
leaq -0x68(%rbp), %rdi
movq %rdi, -0xa8(%rbp)
movss 0xa78d9(%rip), %xmm1    # 0x170c3c
movss %xmm1, -0x9c(%rbp)
movaps %xmm1, %xmm0
callq 0xbf4c0
movq -0xa8(%rbp), %rsi
leaq -0x34(%rbp), %rdi
callq 0xc41b0
movss -0x9c(%rbp), %xmm1
movlpd %xmm0, -0x60(%rbp)
leaq -0x2c(%rbp), %rax
movq %rax, -0x98(%rbp)
leaq -0x78(%rbp), %rdi
movq %rdi, -0x90(%rbp)
movaps %xmm1, %xmm0
callq 0xbf4c0
movq -0x98(%rbp), %rdi
movq -0x90(%rbp), %rsi
callq 0xc3c00
movlpd %xmm0, -0x70(%rbp)
movl $0x31, %edi
movss 0xa7869(%rip), %xmm0    # 0x170c3c
callq 0xc76e0
movq -0x88(%rbp), %rdi
movl %eax, %ecx
movss -0x24(%rbp), %xmm0
leaq -0x60(%rbp), %rsi
leaq -0x70(%rbp), %rdx
movl $0xf, %r8d
movss 0xa8bd0(%rip), %xmm1    # 0x171fcc
callq 0x112ef0
testb $0x1, -0x45(%rbp)
jne 0xc9417
movq -0x20(%rbp), %rax
movq 0x2b8(%rax), %rdi
callq 0x10f6c0
jmp 0xc9419
movl -0x10(%rbp), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0xc9491
movq -0x20(%rbp), %rax
movq 0x2b8(%rax), %rax
movq %rax, -0xc0(%rbp)
leaq -0x34(%rbp), %rax
movq %rax, -0xb8(%rbp)
leaq -0x34(%rbp), %rax
addq $0x8, %rax
movq %rax, -0xb0(%rbp)
movl $0x31, %edi
movss 0xa77df(%rip), %xmm0    # 0x170c3c
callq 0xc76e0
movq -0xc0(%rbp), %rdi
movq -0xb8(%rbp), %rsi
movq -0xb0(%rbp), %rdx
movl %eax, %ecx
movss -0x24(%rbp), %xmm0
movl $0xffffffff, %r8d       # imm = 0xFFFFFFFF
movss 0xa77b0(%rip), %xmm1    # 0x170c3c
callq 0x112ef0
addq $0xc0, %rsp
popq %rbp
retq
nopw (%rax,%rax)