// File: /workspace/github_cpp_makefile_star2_O3/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 0x6cb14(%rip), %rax     # 0xfbcd0
movq (%rax), %r15
movq 0x1ae0(%r15), %rbx
movb $0x1, 0x90(%rbx)
cmpb $0x0, 0x93(%rbx)
jne 0x8f3ca
movq 0x1b0(%rbx), %r14
testq %r14, %r14
je 0x8f3ca
movl 0x10(%r14), %eax
cmpl $0x1, %eax
jne 0x8f241
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 0x8f3ca
leaq 0x41466(%rip), %rdi     # 0xd068f
leaq 0x3fc5a(%rip), %rsi     # 0xcee8a
leaq 0x4146e(%rip), %rcx     # 0xd06a5
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 0x560da
movslq 0xc(%r14), %rax
testq %rax, %rax
js 0x8f3d5
cmpl %eax, 0x60(%r14)
jle 0x8f3d5
movq 0x68(%r14), %rcx
leaq (%rax,%rax,8), %rdx
leaq (%rdx,%rdx,2), %rdx
addq %rax, %rdx
movups 0xc(%rcx,%rdx), %xmm0
movups 0xc(%rcx,%rdx), %xmm1
movups %xmm1, 0x258(%rbx)
movq 0x2b8(%rbx), %rax
movups %xmm0, 0x88(%rax)
movq 0x2b8(%rbx), %rax
movq 0x60(%rax), %rcx
movslq 0x58(%rax), %rax
shlq $0x4, %rax
movups %xmm0, -0x10(%rcx,%rax)
leaq 0x70(%r14), %rdi
movq 0x2b8(%rbx), %rsi
movl 0xc(%r14), %edx
incl %edx
callq 0x7a998
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 0x8f323
callq 0x8e54a
movss 0x118(%rbx), %xmm2
subss %xmm2, %xmm0
addss -0x1c(%rbp), %xmm0
movss 0x1c(%r14), %xmm1
jmp 0x8f346
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)
movq $0x0, 0x100(%rbx)
movl $0x0, 0x110(%rbx)
movl 0xc(%r14), %edi
callq 0x8e54a
movss %xmm0, -0x24(%rbp)
movl 0xc(%r14), %edi
incl %edi
callq 0x8e54a
movss %xmm0, -0x20(%rbp)
subss -0x24(%rbp), %xmm0
mulss 0x26506(%rip), %xmm0    # 0xb58b4
callq 0x55d0a
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
leaq 0x2a29c(%rip), %rdi     # 0xb9678
leaq 0x2a2a8(%rip), %rsi     # 0xb968b
leaq 0x418fa(%rip), %rcx     # 0xd0ce4
movl $0x65c, %edx            # imm = 0x65C
callq 0xc140