// File: /workspace/github_cpp_makefile_star2_O2/Ciaxur[P]yagb-emu/include/imgui/imgui_tables.cpp
// Function: ImGui::TableSetupColumn(char const*, int, float, unsigned int)
void ImGui::TableSetupColumn(const char* label, ImGuiTableColumnFlags flags, float init_width_or_weight, ImGuiID user_id)
{
    ImGuiContext& g = *GImGui;
    ImGuiTable* table = g.CurrentTable;
    IM_ASSERT(table != NULL && "Need to call TableSetupColumn() after BeginTable()!");
    IM_ASSERT(table->IsLayoutLocked == false && "Need to call call TableSetupColumn() before first row!");
    IM_ASSERT((flags & ImGuiTableColumnFlags_StatusMask_) == 0 && "Illegal to pass StatusMask values to TableSetupColumn()");
    if (table->DeclColumnsCount >= table->ColumnsCount)
    {
        IM_ASSERT_USER_ERROR(table->DeclColumnsCount < table->ColumnsCount, "Called TableSetupColumn() too many times!");
        return;
    }

    ImGuiTableColumn* column = &table->Columns[table->DeclColumnsCount];
    table->DeclColumnsCount++;

    // Assert when passing a width or weight if policy is entirely left to default, to avoid storing width into weight and vice-versa.
    // Give a grace to users of ImGuiTableFlags_ScrollX.
    if (table->IsDefaultSizingPolicy && (flags & ImGuiTableColumnFlags_WidthMask_) == 0 && (flags & ImGuiTableFlags_ScrollX) == 0)
        IM_ASSERT(init_width_or_weight <= 0.0f && "Can only specify width/weight if sizing policy is set explicitely in either Table or Column.");

    // When passing a width automatically enforce WidthFixed policy
    // (whereas TableSetupColumnFlags would default to WidthAuto if table is not Resizable)
    if ((flags & ImGuiTableColumnFlags_WidthMask_) == 0 && init_width_or_weight > 0.0f)
        if ((table->Flags & ImGuiTableFlags_SizingMask_) == ImGuiTableFlags_SizingFixedFit || (table->Flags & ImGuiTableFlags_SizingMask_) == ImGuiTableFlags_SizingFixedSame)
            flags |= ImGuiTableColumnFlags_WidthFixed;

    TableSetupColumnFlags(table, column, flags);
    column->UserID = user_id;
    flags = column->Flags;

    // Initialize defaults
    column->InitStretchWeightOrWidth = init_width_or_weight;
    if (table->IsInitializing)
    {
        // Init width or weight
        if (column->WidthRequest < 0.0f && column->StretchWeight < 0.0f)
        {
            if ((flags & ImGuiTableColumnFlags_WidthFixed) && init_width_or_weight > 0.0f)
                column->WidthRequest = init_width_or_weight;
            if (flags & ImGuiTableColumnFlags_WidthStretch)
                column->StretchWeight = (init_width_or_weight > 0.0f) ? init_width_or_weight : -1.0f;

            // Disable auto-fit if an explicit width/weight has been specified
            if (init_width_or_weight > 0.0f)
                column->AutoFitQueue = 0x00;
        }

        // Init default visibility/sort state
        if ((flags & ImGuiTableColumnFlags_DefaultHide) && (table->SettingsLoadedFlags & ImGuiTableFlags_Hideable) == 0)
            column->IsEnabled = column->IsEnabledNextFrame = false;
        if (flags & ImGuiTableColumnFlags_DefaultSort && (table->SettingsLoadedFlags & ImGuiTableFlags_Sortable) == 0)
        {
            column->SortOrder = 0; // Multiple columns using _DefaultSort will be reassigned unique SortOrder values when building the sort specs.
            column->SortDirection = (column->Flags & ImGuiTableColumnFlags_PreferSortDescending) ? (ImS8)ImGuiSortDirection_Descending : (ImU8)(ImGuiSortDirection_Ascending);
        }
    }

    // Store name (append with zero-terminator in contiguous buffer)
    column->NameOffset = -1;
    if (label != NULL && label[0] != 0)
    {
        column->NameOffset = (ImS16)table->ColumnsNames.size();
        table->ColumnsNames.append(label, label + strlen(label) + 1);
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
leaq 0x6f5f1(%rip), %rax     # 0xe3ce0
movq (%rax), %rax
movq 0x20a8(%rax), %r14
testq %r14, %r14
je 0x748af
cmpb $0x0, 0x248(%r14)
jne 0x748ce
movl %esi, %r13d
testl $0xf00000, %esi         # imm = 0xF00000
jne 0x7490c
movaps %xmm0, -0x40(%rbp)
movsbl 0x233(%r14), %esi
cmpl %esi, 0x6c(%r14)
jle 0x7492b
movl %edx, %r12d
movq %rdi, %rbx
leaq 0x10(%r14), %rdi
callq 0x4c4c6
incb 0x233(%r14)
movq %rax, %r15
xorps %xmm0, %xmm0
movaps -0x40(%rbp), %xmm1
ucomiss %xmm1, %xmm0
jae 0x74772
movl %r13d, %eax
andl $0x100000c, %eax        # imm = 0x100000C
jne 0x74772
cmpb $0x0, 0x254(%r14)
jne 0x748ed
testb $0xc, %r13b
jne 0x74797
ucomiss %xmm0, %xmm1
jbe 0x74797
movl $0xe000, %eax           # imm = 0xE000
andl 0x4(%r14), %eax
cmpw $0x4000, %ax            # imm = 0x4000
je 0x74793
cmpl $0x2000, %eax           # imm = 0x2000
jne 0x74797
orl $0x8, %r13d
movq %r14, %rdi
movq %r15, %rsi
movl %r13d, %edx
callq 0x7210c
movl %r12d, 0x30(%r15)
movl (%r15), %eax
movaps -0x40(%rbp), %xmm3
movss %xmm3, 0x1c(%r15)
cmpb $0x1, 0x24a(%r14)
jne 0x7484d
xorps %xmm0, %xmm0
ucomiss 0x10(%r15), %xmm0
jbe 0x74817
ucomiss 0x18(%r15), %xmm0
jbe 0x74817
ucomiss %xmm0, %xmm3
jbe 0x747e7
movl %eax, %ecx
andl $0x8, %ecx
je 0x747e7
movss %xmm3, 0x10(%r15)
testb $0x4, %al
je 0x7480a
cmpltss %xmm3, %xmm0
movaps %xmm0, %xmm1
andps %xmm3, %xmm1
movss 0x277f2(%rip), %xmm2    # 0x9bff0
andnps %xmm2, %xmm0
orps %xmm1, %xmm0
movss %xmm0, 0x18(%r15)
xorps %xmm0, %xmm0
ucomiss %xmm0, %xmm3
jbe 0x74817
movb $0x0, 0x62(%r15)
testb $0x1, %al
je 0x74828
testb $0x4, 0x60(%r14)
jne 0x74828
andw $0x0, 0x5a(%r15)
testb $0x2, %al
je 0x7484d
testb $0x8, 0x60(%r14)
jne 0x7484d
movb $0x0, 0x56(%r15)
movb 0x64(%r15), %cl
andb $-0x4, %cl
btl $0xd, %eax
adcb $-0x1, %cl
addb $0x2, %cl
movb %cl, 0x64(%r15)
orw $-0x1, 0x50(%r15)
testq %rbx, %rbx
je 0x748a0
cmpb $0x0, (%rbx)
je 0x748a0
movl 0x1d8(%r14), %eax
addq $0x1d8, %r14            # imm = 0x1D8
xorl %ecx, %ecx
subl $0x1, %eax
cmovbl %ecx, %eax
movw %ax, 0x50(%r15)
movq %rbx, %rdi
callq 0xc380
leaq (%rbx,%rax), %rdx
incq %rdx
movq %r14, %rdi
movq %rbx, %rsi
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x355a2
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x41dc0(%rip), %rdi     # 0xb6676
leaq 0x41849(%rip), %rsi     # 0xb6106
leaq 0x41dfb(%rip), %rcx     # 0xb66bf
movl $0x54b, %edx            # imm = 0x54B
callq 0xc140
leaq 0x41e3c(%rip), %rdi     # 0xb6711
leaq 0x4182a(%rip), %rsi     # 0xb6106
leaq 0x41ddc(%rip), %rcx     # 0xb66bf
movl $0x54c, %edx            # imm = 0x54C
callq 0xc140
leaq 0x41f45(%rip), %rdi     # 0xb6839
leaq 0x4180b(%rip), %rsi     # 0xb6106
leaq 0x41dbd(%rip), %rcx     # 0xb66bf
movl $0x55a, %edx            # imm = 0x55A
callq 0xc140
leaq 0x41e59(%rip), %rdi     # 0xb676c
leaq 0x417ec(%rip), %rsi     # 0xb6106
leaq 0x41d9e(%rip), %rcx     # 0xb66bf
movl $0x54d, %edx            # imm = 0x54D
callq 0xc140
leaq 0x41ea8(%rip), %rdi     # 0xb67da
leaq 0x417cd(%rip), %rsi     # 0xb6106
leaq 0x41d7f(%rip), %rcx     # 0xb66bf
movl $0x550, %edx            # imm = 0x550
callq 0xc140