// File: /workspace/github_cpp_makefile_star2_O2/Ciaxur[P]yagb-emu/include/imgui/imgui_tables.cpp
// Function: ImGui::NextColumn()
void ImGui::NextColumn()
{
    ImGuiWindow* window = GetCurrentWindow();
    if (window->SkipItems || window->DC.CurrentColumns == NULL)
        return;

    ImGuiContext& g = *GImGui;
    ImGuiOldColumns* columns = window->DC.CurrentColumns;

    if (columns->Count == 1)
    {
        window->DC.CursorPos.x = IM_FLOOR(window->Pos.x + window->DC.Indent.x + window->DC.ColumnsOffset.x);
        IM_ASSERT(columns->Current == 0);
        return;
    }

    // Next column
    if (++columns->Current == columns->Count)
        columns->Current = 0;

    PopItemWidth();

    // Optimization: avoid PopClipRect() + SetCurrentChannel() + PushClipRect()
    // (which would needlessly attempt to update commands in the wrong channel, then pop or overwrite them),
    ImGuiOldColumnData* column = &columns->Columns[columns->Current];
    SetWindowClipRectBeforeSetChannel(window, column->ClipRect);
    columns->Splitter.SetCurrentChannel(window->DrawList, columns->Current + 1);

    const float column_padding = g.Style.ItemSpacing.x;
    columns->LineMaxY = ImMax(columns->LineMaxY, window->DC.CursorPos.y);
    if (columns->Current > 0)
    {
        // Columns 1+ ignore IndentX (by canceling it out)
        // FIXME-COLUMNS: Unnecessary, could be locked?
        window->DC.ColumnsOffset.x = GetColumnOffset(columns->Current) - window->DC.Indent.x + column_padding;
    }
    else
    {
        // New row/line: column 0 honor IndentX.
        window->DC.ColumnsOffset.x = ImMax(column_padding - window->WindowPadding.x, 0.0f);
        columns->LineMinY = columns->LineMaxY;
    }
    window->DC.CursorPos.x = IM_FLOOR(window->Pos.x + window->DC.Indent.x + window->DC.ColumnsOffset.x);
    window->DC.CursorPos.y = columns->LineMinY;
    window->DC.CurrLineSize = ImVec2(0.0f, 0.0f);
    window->DC.CurrLineTextBaseOffset = 0.0f;

    // FIXME-COLUMNS: Share code with BeginColumns() - move code on columns setup.
    float offset_0 = GetColumnOffset(columns->Current);
    float offset_1 = GetColumnOffset(columns->Current + 1);
    float width = offset_1 - offset_0;
    PushItemWidth(width * 0.65f);
    window->WorkRect.Max.x = window->Pos.x + offset_1 - column_padding;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x18, %rsp
leaq 0x6bdca(%rip), %rax     # 0xe3ce0
movq (%rax), %r15
movq 0x1ae0(%r15), %rbx
movb $0x1, 0x90(%rbx)
cmpb $0x0, 0x93(%rbx)
jne 0x780da
movq 0x1b0(%rbx), %r14
testq %r14, %r14
je 0x780da
movl 0x10(%r14), %eax
cmpl $0x1, %eax
jne 0x77f9b
movss 0x10(%rbx), %xmm0
addss 0x118(%rbx), %xmm0
addss 0x11c(%rbx), %xmm0
cvttps2dq %xmm0, %xmm0
cvtdq2ps %xmm0, %xmm0
movss %xmm0, 0xd8(%rbx)
cmpl $0x0, 0xc(%r14)
je 0x780da
leaq 0x3f988(%rip), %rdi     # 0xb790b
leaq 0x3e17c(%rip), %rsi     # 0xb6106
leaq 0x3f990(%rip), %rcx     # 0xb7921
movl $0xec8, %edx            # imm = 0xEC8
callq 0xc140
movl 0xc(%r14), %ecx
incl %ecx
xorl %edx, %edx
cmpl %eax, %ecx
cmovnel %ecx, %edx
movl %edx, 0xc(%r14)
callq 0x43cbe
leaq 0x60(%r14), %rdi
movl 0xc(%r14), %esi
callq 0x4bb92
leaq 0xc(%rax), %rsi
movq %rbx, %rdi
callq 0x74fd7
leaq 0x70(%r14), %rdi
movq 0x2b8(%rbx), %rsi
movl 0xc(%r14), %edx
incl %edx
callq 0x656c2
movss 0x15a8(%r15), %xmm0
movss %xmm0, -0x1c(%rbp)
movss 0x20(%r14), %xmm0
movss 0xdc(%rbx), %xmm2
movaps %xmm2, %xmm1
cmpless %xmm0, %xmm1
andps %xmm1, %xmm0
andnps %xmm2, %xmm1
orps %xmm0, %xmm1
movss %xmm1, 0x20(%r14)
movl 0xc(%r14), %edi
testl %edi, %edi
jle 0x78039
callq 0x775d3
movss 0x118(%rbx), %xmm2
subss %xmm2, %xmm0
addss -0x1c(%rbp), %xmm0
movss 0x1c(%r14), %xmm1
jmp 0x7805c
movss -0x1c(%rbp), %xmm2
subss 0x40(%rbx), %xmm2
xorps %xmm0, %xmm0
cmpless %xmm2, %xmm0
andps %xmm2, %xmm0
movss %xmm1, 0x1c(%r14)
movss 0x118(%rbx), %xmm2
movss %xmm0, 0x11c(%rbx)
addss 0x10(%rbx), %xmm2
addss %xmm0, %xmm2
cvttps2dq %xmm2, %xmm0
cvtdq2ps %xmm0, %xmm0
movss %xmm0, 0xd8(%rbx)
movss %xmm1, 0xdc(%rbx)
andq $0x0, 0x100(%rbx)
andl $0x0, 0x110(%rbx)
movl 0xc(%r14), %edi
callq 0x775d3
movss %xmm0, -0x24(%rbp)
movl 0xc(%r14), %edi
incl %edi
callq 0x775d3
movss %xmm0, -0x20(%rbp)
subss -0x24(%rbp), %xmm0
mulss 0x24826(%rip), %xmm0    # 0x9c8e4
callq 0x43b8c
movss -0x20(%rbp), %xmm0
addss 0x10(%rbx), %xmm0
subss -0x1c(%rbp), %xmm0
movss %xmm0, 0x240(%rbx)
addq $0x18, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq