// File: 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
subq $0xe0, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
callq 0x2e220
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
testb $0x1, 0x74(%rax)
je 0x2796f
movb $0x0, -0x1(%rbp)
jmp 0x27bad
callq 0xcab0
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rdi
callq 0x1ccd0
movl %eax, -0x2c(%rbp)
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0x1, %edx
movss 0x336e3(%rip), %xmm0    # 0x5b07c
callq 0x10930
movlpd %xmm0, -0x34(%rbp)
movq -0x18(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x48(%rbp)
callq 0x185e0
movaps %xmm0, %xmm1
movq -0x28(%rbp), %rax
movss 0x20(%rax), %xmm0
addss %xmm0, %xmm0
addss %xmm1, %xmm0
movss %xmm0, -0xc0(%rbp)
callq 0x19a00
movss -0xc0(%rbp), %xmm1
movaps %xmm0, %xmm2
movq -0x28(%rbp), %rax
movss 0x30(%rax), %xmm0
movss 0x33730(%rip), %xmm3    # 0x5b120
mulss %xmm3, %xmm2
addss %xmm0, %xmm2
movsd -0x48(%rbp), %xmm0
callq 0xc690
movlpd %xmm0, -0x3c(%rbp)
movss -0x3c(%rbp), %xmm0
movss %xmm0, -0xbc(%rbp)
movss -0x38(%rbp), %xmm0
movss -0x30(%rbp), %xmm1
callq 0xb7c0
movaps %xmm0, %xmm1
movss -0xbc(%rbp), %xmm0
leaq -0x50(%rbp), %rdi
movq %rdi, -0xb8(%rbp)
callq 0x2d280
movq -0xb8(%rbp), %rsi
movq -0x20(%rbp), %rdi
addq $0xa8, %rdi
movq %rdi, -0xb0(%rbp)
callq 0xc7e0
movq -0xb0(%rbp), %rsi
movlpd %xmm0, -0x68(%rbp)
leaq -0x60(%rbp), %rdi
leaq -0x68(%rbp), %rdx
callq 0x2eb40
leaq -0x60(%rbp), %rax
movq %rax, -0xa8(%rbp)
leaq -0x60(%rbp), %rax
addq $0x8, %rax
movq %rax, -0xa0(%rbp)
movss -0x34(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jbe 0x27ab4
movq -0x28(%rbp), %rax
movss 0x34(%rax), %xmm0
addss -0x34(%rbp), %xmm0
movss %xmm0, -0xc4(%rbp)
jmp 0x27ac1
xorps %xmm0, %xmm0
movss %xmm0, -0xc4(%rbp)
jmp 0x27ac1
movss -0xc4(%rbp), %xmm0
leaq -0x88(%rbp), %rdi
movq %rdi, -0xd0(%rbp)
xorps %xmm1, %xmm1
callq 0x2d280
movq -0xa0(%rbp), %rdi
movq -0xd0(%rbp), %rsi
callq 0xc7e0
movq -0xa8(%rbp), %rsi
movlpd %xmm0, -0x80(%rbp)
leaq -0x78(%rbp), %rdi
leaq -0x80(%rbp), %rdx
callq 0x2eb40
movq -0x20(%rbp), %rax
movq -0x78(%rbp), %rcx
movq %rcx, 0xe4(%rax)
movq -0x70(%rbp), %rcx
movq %rcx, 0xec(%rax)
callq 0x211c0
movss -0x34(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jbe 0x27b7d
movss -0x5c(%rbp), %xmm1
movss -0x58(%rbp), %xmm0
movq -0x28(%rbp), %rax
movss 0x24(%rax), %xmm2
movss 0x34(%rax), %xmm3
addss %xmm3, %xmm0
addss %xmm2, %xmm1
leaq -0x90(%rbp), %rdi
callq 0x2d280
movq -0x10(%rbp), %rdi
movsd -0x90(%rbp), %xmm0
xorl %eax, %eax
movl %eax, %esi
movl $0x1, %edx
callq 0x10100
movl -0x2c(%rbp), %eax
movl %eax, -0xd4(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x2e250
movl -0xd4(%rbp), %edi
movlpd %xmm0, -0x98(%rbp)
leaq -0x98(%rbp), %rsi
callq 0x15fd0
movb $0x1, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0xe0, %rsp
popq %rbp
retq
nopl (%rax,%rax)