// File: /workspace/github_cpp_makefile_star2_O1/donfreiday[P]gb/./imgui/imgui.cpp
// Function: ImGui::ListBoxHeader(char const*, ImVec2 const&)
bool ImGui::ListBoxHeader(const char* label, const ImVec2& size_arg)
{
    ImGuiWindow* window = GetCurrentWindow();
    if (window->SkipItems)
        return false;

    const ImGuiStyle& style = ImGui::GetStyle();
    const ImGuiID id = ImGui::GetID(label);
    const ImVec2 label_size = ImGui::CalcTextSize(label, NULL, true);

    // Size default to hold ~7 items. Fractional number of items helps seeing that we can scroll down/up without looking at scrollbar.
    ImVec2 size = CalcItemSize(size_arg, CalcItemWidth() + style.FramePadding.x * 2.0f, ImGui::GetTextLineHeightWithSpacing() * 7.4f + style.ItemSpacing.y);
    ImVec2 frame_size = ImVec2(size.x, ImMax(size.y, label_size.y));
    ImRect frame_bb(window->DC.CursorPos, window->DC.CursorPos + frame_size);
    ImRect bb(frame_bb.Min, frame_bb.Max + ImVec2(label_size.x > 0.0f ? style.ItemInnerSpacing.x + label_size.x : 0.0f, 0.0f));
    window->DC.LastItemRect = bb;

    ImGui::BeginGroup();
    if (label_size.x > 0)
        RenderText(ImVec2(frame_bb.Max.x + style.ItemInnerSpacing.x, frame_bb.Min.y + style.FramePadding.y), label);

    ImGui::BeginChildFrame(id, frame_bb.GetSize());
    return true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x58, %rsp
movq 0x34ae5(%rip), %r15     # 0x55490
movq 0x1758(%r15), %r12
movb $0x1, 0x72(%r12)
movb 0x74(%r12), %bl
testb %bl, %bl
jne 0x20b4b
movq %rsi, %r13
movq %rdi, %r14
movq %r12, %rdi
movq %r14, %rsi
xorl %edx, %edx
callq 0xa872
movl %eax, -0x34(%rbp)
movss 0x1c9a9(%rip), %xmm0    # 0x3d38c
movq %r14, %rdi
xorl %esi, %esi
movl $0x1, %edx
callq 0xe720
movaps %xmm0, -0x60(%rbp)
movsd (%r13), %xmm0
movaps %xmm0, -0x50(%rbp)
callq 0x14bda
movss 0x1408(%r15), %xmm1
addss %xmm1, %xmm1
addss %xmm0, %xmm1
movq 0x34a73(%rip), %rax     # 0x55490
movss 0x1718(%rax), %xmm2
addss 0x1418(%rax), %xmm2
mulss 0x1ca1f(%rip), %xmm2    # 0x3d454
addss 0x1418(%r15), %xmm2
movaps -0x50(%rbp), %xmm0
callq 0xafbc
movaps %xmm0, %xmm3
shufps $0x55, %xmm0, %xmm3     # xmm3 = xmm3[1,1],xmm0[1,1]
movaps -0x60(%rbp), %xmm5
movaps %xmm5, %xmm1
shufps $0x55, %xmm5, %xmm1     # xmm1 = xmm1[1,1],xmm5[1,1]
movaps %xmm1, %xmm4
cmpless %xmm3, %xmm4
movaps %xmm4, %xmm2
andnps %xmm1, %xmm2
andps %xmm3, %xmm4
orps %xmm2, %xmm4
movss 0xa8(%r12), %xmm2
movss 0xac(%r12), %xmm1
addss %xmm2, %xmm0
addss %xmm1, %xmm4
movss %xmm2, -0x30(%rbp)
movd %xmm2, %eax
movss %xmm1, -0x2c(%rbp)
movd %xmm1, %ecx
movss 0x141c(%r15), %xmm2
movaps %xmm5, %xmm3
addss %xmm5, %xmm2
xorps %xmm5, %xmm5
xorps %xmm1, %xmm1
cmpltss %xmm3, %xmm1
andps %xmm2, %xmm1
movaps %xmm0, -0x50(%rbp)
addss %xmm0, %xmm1
movaps %xmm4, -0x70(%rbp)
movaps %xmm4, %xmm0
addss %xmm5, %xmm0
unpcklps %xmm0, %xmm1            # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
shlq $0x20, %rcx
orq %rcx, %rax
movq %rax, 0xe4(%r12)
movlps %xmm1, 0xec(%r12)
callq 0x1b900
movaps -0x60(%rbp), %xmm0
ucomiss 0x1c8a9(%rip), %xmm0    # 0x3d3a0
jbe 0x20b27
movss 0x141c(%r15), %xmm0
addss -0x50(%rbp), %xmm0
movss 0x140c(%r15), %xmm1
addss -0x2c(%rbp), %xmm1
unpcklps %xmm1, %xmm0            # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movq %r14, %rdi
xorl %esi, %esi
movl $0x1, %edx
callq 0xe0f3
movaps -0x50(%rbp), %xmm0
subss -0x30(%rbp), %xmm0
movaps -0x70(%rbp), %xmm1
subss -0x2c(%rbp), %xmm1
unpcklps %xmm1, %xmm0            # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
leaq -0x78(%rbp), %rsi
movlps %xmm0, (%rsi)
movl -0x34(%rbp), %edi
callq 0x13602
xorb $0x1, %bl
movl %ebx, %eax
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq