// File: /workspace/github_cpp_makefile_star2_O1/Ciaxur[P]yagb-emu/include/imgui/imgui_tables.cpp
// Function: ImGui::TableHeadersRow()
void ImGui::TableHeadersRow()
{
    ImGuiContext& g = *GImGui;
    ImGuiTable* table = g.CurrentTable;
    IM_ASSERT(table != NULL && "Need to call TableHeadersRow() after BeginTable()!");

    // Layout if not already done (this is automatically done by TableNextRow, we do it here solely to facilitate stepping in debugger as it is frequent to step in TableUpdateLayout)
    if (!table->IsLayoutLocked)
        TableUpdateLayout(table);

    // Open row
    const float row_y1 = GetCursorScreenPos().y;
    const float row_height = TableGetHeaderRowHeight();
    TableNextRow(ImGuiTableRowFlags_Headers, row_height);
    if (table->HostSkipItems) // Merely an optimization, you may skip in your own code.
        return;

    const int columns_count = TableGetColumnCount();
    for (int column_n = 0; column_n < columns_count; column_n++)
    {
        if (!TableSetColumnIndex(column_n))
            continue;

        // Push an id to allow unnamed labels (generally accidental, but let's behave nicely with them)
        // - in your own code you may omit the PushID/PopID all-together, provided you know they won't collide
        // - table->InstanceCurrent is only >0 when we use multiple BeginTable/EndTable calls with same identifier.
        const char* name = TableGetColumnName(column_n);
        PushID(table->InstanceCurrent * table->ColumnsCount + column_n);
        TableHeader(name);
        PopID();
    }

    // Allow opening popup from the right-most section after the last column.
    ImVec2 mouse_pos = ImGui::GetMousePos();
    if (IsMouseReleased(1) && TableGetHoveredColumn() == columns_count)
        if (mouse_pos.y >= row_y1 && mouse_pos.y < row_y1 + row_height)
            TableOpenContextMenu(-1); // Will open a non-column-specific popup.
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
leaq 0x6f826(%rip), %r12     # 0xfdcd0
movq (%r12), %rax
movq 0x20a8(%rax), %rbx
testq %rbx, %rbx
je 0x8e5ee
cmpb $0x0, 0x248(%rbx)
jne 0x8e4cf
movq %rbx, %rdi
callq 0x89339
callq 0x56ab2
movaps %xmm0, -0x50(%rbp)
callq 0x8e3d6
movl $0x1, %edi
movss %xmm0, -0x2c(%rbp)
callq 0x8d51e
cmpb $0x0, 0x256(%rbx)
jne 0x8e5df
movq (%r12), %rax
movq 0x20a8(%rax), %rax
testq %rax, %rax
je 0x8e50f
movl 0x6c(%rax), %r13d
jmp 0x8e512
xorl %r13d, %r13d
testl %r13d, %r13d
jle 0x8e56b
xorl %r14d, %r14d
movl %r14d, %edi
callq 0x8d861
testb %al, %al
je 0x8e563
movq (%r12), %rax
movq 0x20a8(%rax), %rdi
testq %rdi, %rdi
je 0x8e543
movl %r14d, %esi
callq 0x8d202
movq %rax, %r15
jmp 0x8e546
xorl %r15d, %r15d
movswl 0x78(%rbx), %edi
imull 0x6c(%rbx), %edi
addl %r14d, %edi
callq 0x55f53
movq %r15, %rdi
callq 0x8e60d
callq 0x56188
incl %r14d
cmpl %r14d, %r13d
jne 0x8e51a
callq 0x527cd
movaps %xmm0, -0x40(%rbp)
movl $0x1, %edi
callq 0x526c7
testb %al, %al
je 0x8e5df
movq (%r12), %rax
movq 0x20a8(%rax), %rax
testq %rax, %rax
je 0x8e59b
movsbl 0x234(%rax), %eax
jmp 0x8e5a0
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
cmpl %r13d, %eax
jne 0x8e5df
movaps -0x50(%rbp), %xmm1
shufps $0x55, %xmm1, %xmm1     # xmm1 = xmm1[1,1,1,1]
movaps -0x40(%rbp), %xmm3
shufps $0x55, %xmm3, %xmm3     # xmm3 = xmm3[1,1,1,1]
ucomiss %xmm1, %xmm3
jb 0x8e5df
movaps %xmm1, %xmm0
addss -0x2c(%rbp), %xmm0
ucomiss %xmm3, %xmm0
jbe 0x8e5df
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x8befe
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x438dc(%rip), %rdi     # 0xd1ed1
leaq 0x428be(%rip), %rsi     # 0xd0eba
leaq 0x43916(%rip), %rcx     # 0xd1f19
movl $0xa8e, %edx            # imm = 0xA8E
callq 0xc140