// File: /workspace/github_cpp_makefile_star2_O1/Ciaxur[P]yagb-emu/include/imgui/imgui_demo.cpp
// Function: ShowPlaceholderObject(char const*, int)
static void ShowPlaceholderObject(const char* prefix, int uid)
{
    // Use object uid as identifier. Most commonly you could also use the object pointer as a base ID.
    ImGui::PushID(uid);

    // Text and Tree nodes are less high than framed widgets, using AlignTextToFramePadding() we add vertical spacing to make the tree lines equal high.
    ImGui::TableNextRow();
    ImGui::TableSetColumnIndex(0);
    ImGui::AlignTextToFramePadding();
    bool node_open = ImGui::TreeNode("Object", "%s_%u", prefix, uid);
    ImGui::TableSetColumnIndex(1);
    ImGui::Text("my sailor is rich");

    if (node_open)
    {
        static float placeholder_members[8] = { 0.0f, 0.0f, 1.0f, 3.1416f, 100.0f, 999.0f };
        for (int i = 0; i < 8; i++)
        {
            ImGui::PushID(i); // Use field index as identifier.
            if (i < 2)
            {
                ShowPlaceholderObject("Child", 424242);
            }
            else
            {
                // Here we use a TreeNode to highlight on hover (we could use e.g. Selectable as well)
                ImGui::TableNextRow();
                ImGui::TableSetColumnIndex(0);
                ImGui::AlignTextToFramePadding();
                ImGuiTreeNodeFlags flags = ImGuiTreeNodeFlags_Leaf | ImGuiTreeNodeFlags_NoTreePushOnOpen | ImGuiTreeNodeFlags_Bullet;
                ImGui::TreeNodeEx("Field", flags, "Field_%d", i);

                ImGui::TableSetColumnIndex(1);
                ImGui::SetNextItemWidth(-FLT_MIN);
                if (i >= 5)
                    ImGui::InputFloat("##value", &placeholder_members[i], 1.0f);
                else
                    ImGui::DragFloat("##value", &placeholder_members[i], 0.01f);
                ImGui::NextColumn();
            }
            ImGui::PopID();
        }
        ImGui::TreePop();
    }
    ImGui::PopID();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movl %esi, %ebx
movq %rdi, %r14
movl %esi, %edi
callq 0x55f53
xorps %xmm0, %xmm0
xorl %edi, %edi
callq 0x8d51e
xorl %edi, %edi
callq 0x8d861
callq 0x951e6
leaq 0x540bf(%rip), %rdi     # 0xc7995
leaq 0x540bf(%rip), %rsi     # 0xc799c
movq %r14, %rdx
movl %ebx, %ecx
xorl %eax, %eax
callq 0xa20b9
movl %eax, %ebx
movl $0x1, %edi
callq 0x8d861
leaq 0x540a6(%rip), %rdi     # 0xc79a2
xorl %eax, %eax
callq 0x92024
testb %bl, %bl
je 0x739f2
leaq 0x8a1de(%rip), %rbx     # 0xfdaf0
leaq 0x540a1(%rip), %r12     # 0xc79ba
leaq 0x540a3(%rip), %r13     # 0xc79c3
leaq 0x60f2c(%rip), %r14     # 0xd4853
xorl %r15d, %r15d
movl %r15d, %edi
callq 0x55f53
cmpq $0x1, %r15
ja 0x7394e
leaq 0x4f904(%rip), %rdi     # 0xc3243
movl $0x67932, %esi          # imm = 0x67932
callq 0x7389f
jmp 0x739d7
xorps %xmm0, %xmm0
xorl %edi, %edi
callq 0x8d51e
xorl %edi, %edi
callq 0x8d861
callq 0x951e6
leaq 0x54049(%rip), %rdi     # 0xc79b4
movl $0x308, %esi            # imm = 0x308
movq %r12, %rdx
movl %r15d, %ecx
xorl %eax, %eax
callq 0xa2c29
movl $0x1, %edi
callq 0x8d861
movss 0x495cd(%rip), %xmm0    # 0xbcf5c
callq 0x437f3
xorps %xmm1, %xmm1
cmpq $0x5, %r15
jb 0x739b7
movq %r13, %rdi
movq %rbx, %rsi
movss 0x43639(%rip), %xmm0    # 0xb6fe4
movq %r14, %rdx
xorl %ecx, %ecx
callq 0x9cf74
jmp 0x739d2
xorps %xmm2, %xmm2
movq %r13, %rdi
movq %rbx, %rsi
movss 0x4954c(%rip), %xmm0    # 0xbcf14
movq %r14, %rdx
xorl %ecx, %ecx
callq 0x98197
callq 0x90eee
callq 0x56188
incq %r15
addq $0x4, %rbx
cmpq $0x8, %r15
jne 0x7392a
callq 0xa2f4e
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x56188
nop