// File: /workspace/github_cpp_makefile_star2_O1/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 0x6cdce(%rip), %rax     # 0xfdcd0
movq (%rax), %r15
movq 0x1ae0(%r15), %rbx
movb $0x1, 0x90(%rbx)
cmpb $0x0, 0x93(%rbx)
jne 0x9111e
movq 0x1b0(%rbx), %r14
testq %r14, %r14
je 0x9111e
movl 0x10(%r14), %eax
cmpl $0x1, %eax
jne 0x90f87
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 0x9111e
leaq 0x41750(%rip), %rdi     # 0xd26bf
leaq 0x3ff44(%rip), %rsi     # 0xd0eba
leaq 0x41758(%rip), %rcx     # 0xd26d5
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 0x571b8
movslq 0xc(%r14), %rax
testq %rax, %rax
js 0x91129
cmpl %eax, 0x60(%r14)
jle 0x91129
movq 0x68(%r14), %rcx
leaq (%rax,%rax,8), %rdx
leaq (%rdx,%rdx,2), %rdx
addq %rax, %rdx
movsd 0xc(%rcx,%rdx), %xmm0
movups 0xc(%rcx,%rdx), %xmm1
movhps 0x14(%rcx,%rdx), %xmm0  # xmm0 = xmm0[0,1],mem[0,1]
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 0x7c2ae
movss 0x15a8(%r15), %xmm0
movss %xmm0, -0x1c(%rbp)
movss 0x20(%r14), %xmm1
movss 0xdc(%rbx), %xmm2
movaps %xmm2, %xmm0
cmpless %xmm1, %xmm0
andps %xmm0, %xmm1
andnps %xmm2, %xmm0
orps %xmm1, %xmm0
movss %xmm0, 0x20(%r14)
movl 0xc(%r14), %edi
testl %edi, %edi
jle 0x9106d
callq 0x90238
subss 0x118(%rbx), %xmm0
addss -0x1c(%rbp), %xmm0
movss %xmm0, 0x11c(%rbx)
jmp 0x91090
movss -0x1c(%rbp), %xmm1
subss 0x40(%rbx), %xmm1
xorps %xmm2, %xmm2
cmpless %xmm1, %xmm2
andps %xmm1, %xmm2
movss %xmm2, 0x11c(%rbx)
movss %xmm0, 0x1c(%r14)
movss 0x10(%rbx), %xmm0
addss 0x118(%rbx), %xmm0
addss 0x11c(%rbx), %xmm0
cvttps2dq %xmm0, %xmm0
cvtdq2ps %xmm0, %xmm0
movss %xmm0, 0xd8(%rbx)
movss 0x1c(%r14), %xmm0
movss %xmm0, 0xdc(%rbx)
movq $0x0, 0x100(%rbx)
movl $0x0, 0x110(%rbx)
movl 0xc(%r14), %edi
callq 0x90238
movss %xmm0, -0x24(%rbp)
movl 0xc(%r14), %edi
incl %edi
callq 0x90238
movss %xmm0, -0x20(%rbp)
subss -0x24(%rbp), %xmm0
mulss 0x267b2(%rip), %xmm0    # 0xb78b4
callq 0x56dd7
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 0x2a548(%rip), %rdi     # 0xbb678
leaq 0x2a554(%rip), %rsi     # 0xbb68b
leaq 0x41cd4(%rip), %rcx     # 0xd2e12
movl $0x65c, %edx            # imm = 0x65C
callq 0xc140