// File: /workspace/github_cpp_makefile_star2_O1/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 %r12
pushq %rbx
subq $0x10, %rsp
leaq 0x70ebb(%rip), %rax     # 0xfdcd0
movq (%rax), %rax
movq 0x20a8(%rax), %r14
testq %r14, %r14
je 0x8cfdb
cmpb $0x0, 0x248(%r14)
jne 0x8cffa
movl %edx, %r12d
movl %esi, %edx
testl $0xf00000, %esi         # imm = 0xF00000
jne 0x8d019
movsbl 0x233(%r14), %eax
cmpl %eax, 0x6c(%r14)
jle 0x8d057
cltq
testb %al, %al
js 0x8d076
imulq $0x68, %rax, %r15
addq 0x10(%r14), %r15
cmpq 0x18(%r14), %r15
jae 0x8d076
movq %rdi, %rbx
incb %al
movb %al, 0x233(%r14)
xorps %xmm1, %xmm1
ucomiss %xmm0, %xmm1
jae 0x8cea0
movl %edx, %eax
andl $0x100000c, %eax        # imm = 0x100000C
jne 0x8cea0
cmpb $0x0, 0x254(%r14)
jne 0x8d038
testb $0xc, %dl
movaps %xmm0, -0x30(%rbp)
jne 0x8cec8
ucomiss %xmm1, %xmm0
jbe 0x8cec8
movl $0xe000, %eax           # imm = 0xE000
andl 0x4(%r14), %eax
cmpl $0x4000, %eax           # imm = 0x4000
je 0x8cec5
cmpl $0x2000, %eax           # imm = 0x2000
jne 0x8cec8
orl $0x8, %edx
movq %r14, %rdi
movq %r15, %rsi
callq 0x8a1c2
movl %r12d, 0x30(%r15)
movl (%r15), %eax
movaps -0x30(%rbp), %xmm3
movss %xmm3, 0x1c(%r15)
cmpb $0x1, 0x24a(%r14)
jne 0x8cf7c
xorps %xmm0, %xmm0
ucomiss 0x10(%r15), %xmm0
jbe 0x8cf45
ucomiss 0x18(%r15), %xmm0
jbe 0x8cf45
ucomiss %xmm0, %xmm3
jbe 0x8cf15
movl %eax, %ecx
andl $0x8, %ecx
je 0x8cf15
movss %xmm3, 0x10(%r15)
testb $0x4, %al
je 0x8cf38
cmpltss %xmm3, %xmm0
movaps %xmm0, %xmm1
andps %xmm3, %xmm1
movss 0x2a0a4(%rip), %xmm2    # 0xb6fd0
andnps %xmm2, %xmm0
orps %xmm1, %xmm0
movss %xmm0, 0x18(%r15)
xorps %xmm0, %xmm0
ucomiss %xmm0, %xmm3
jbe 0x8cf45
movb $0x0, 0x62(%r15)
testb $0x1, %al
je 0x8cf57
testb $0x4, 0x60(%r14)
jne 0x8cf57
movw $0x0, 0x5a(%r15)
testb $0x2, %al
je 0x8cf7c
testb $0x8, 0x60(%r14)
jne 0x8cf7c
movb $0x0, 0x56(%r15)
movb 0x64(%r15), %cl
andb $-0x4, %cl
btl $0xd, %eax
adcb $-0x1, %cl
addb $0x2, %cl
movb %cl, 0x64(%r15)
movw $0xffff, 0x50(%r15)     # imm = 0xFFFF
testq %rbx, %rbx
je 0x8cfce
cmpb $0x0, (%rbx)
je 0x8cfce
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 0xc350
leaq (%rbx,%rax), %rdx
incq %rdx
movq %r14, %rdi
movq %rbx, %rsi
addq $0x10, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x43bae
addq $0x10, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x44448(%rip), %rdi     # 0xd142a
leaq 0x43ed1(%rip), %rsi     # 0xd0eba
leaq 0x44483(%rip), %rcx     # 0xd1473
movl $0x54b, %edx            # imm = 0x54B
callq 0xc140
leaq 0x444c4(%rip), %rdi     # 0xd14c5
leaq 0x43eb2(%rip), %rsi     # 0xd0eba
leaq 0x44464(%rip), %rcx     # 0xd1473
movl $0x54c, %edx            # imm = 0x54C
callq 0xc140
leaq 0x44500(%rip), %rdi     # 0xd1520
leaq 0x43e93(%rip), %rsi     # 0xd0eba
leaq 0x44445(%rip), %rcx     # 0xd1473
movl $0x54d, %edx            # imm = 0x54D
callq 0xc140
leaq 0x445ae(%rip), %rdi     # 0xd15ed
leaq 0x43e74(%rip), %rsi     # 0xd0eba
leaq 0x44426(%rip), %rcx     # 0xd1473
movl $0x55a, %edx            # imm = 0x55A
callq 0xc140
leaq 0x44530(%rip), %rdi     # 0xd158e
leaq 0x43e55(%rip), %rsi     # 0xd0eba
leaq 0x44407(%rip), %rcx     # 0xd1473
movl $0x550, %edx            # imm = 0x550
callq 0xc140
leaq 0x2f63b(%rip), %rdi     # 0xbc6b8
leaq 0x2e5bb(%rip), %rsi     # 0xbb63f
leaq 0x2f646(%rip), %rcx     # 0xbc6d1
movl $0x20e, %edx            # imm = 0x20E
callq 0xc140