// File: /workspace/github_cpp_makefile_star2_O2/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 0x42f5a
xorps %xmm0, %xmm0
xorl %edi, %edi
callq 0x74d33
xorl %edi, %edi
callq 0x75033
callq 0x7c785
leaq 0x4d8ae(%rip), %rdi     # 0xacca5
leaq 0x4d8ae(%rip), %rsi     # 0xaccac
movq %r14, %rdx
movl %ebx, %ecx
xorl %eax, %eax
callq 0x88825
movl %eax, %ebx
pushq $0x1
popq %rdi
callq 0x75033
leaq 0x4d897(%rip), %rdi     # 0xaccb2
xorl %eax, %eax
callq 0x795ac
testb %bl, %bl
je 0x5f515
leaq 0x846cf(%rip), %rbx     # 0xe3b00
pushq $0x1
popq %r13
leaq 0x4d897(%rip), %r14     # 0xaccd3
leaq 0x5a62d(%rip), %r15     # 0xb9a70
xorl %r12d, %r12d
cmpq $0x8, %r12
je 0x5f510
movl %r12d, %edi
callq 0x42f5a
cmpq $0x1, %r12
ja 0x5f474
leaq 0x490de(%rip), %rdi     # 0xa8543
movl $0x67932, %esi          # imm = 0x67932
callq 0x5f3c0
jmp 0x5f4ff
xorps %xmm0, %xmm0
xorl %edi, %edi
callq 0x74d33
xorl %edi, %edi
callq 0x75033
callq 0x7c785
leaq 0x4d833(%rip), %rdi     # 0xaccc4
movl $0x308, %esi            # imm = 0x308
leaq 0x4d82d(%rip), %rdx     # 0xaccca
movl %r12d, %ecx
xorl %eax, %eax
callq 0x89398
movl %r13d, %edi
callq 0x75033
movss 0x42db5(%rip), %xmm0    # 0xa226c
callq 0x35469
xorps %xmm1, %xmm1
cmpq $0x5, %r12
jb 0x5f4df
movq %r14, %rdi
movq %rbx, %rsi
movss 0x3cb25(%rip), %xmm0    # 0x9bff8
movq %r15, %rdx
xorl %ecx, %ecx
callq 0x83dc1
jmp 0x5f4fa
xorps %xmm2, %xmm2
movq %r14, %rdi
movq %rbx, %rsi
movss 0x42d34(%rip), %xmm0    # 0xa2224
movq %r15, %rdx
xorl %ecx, %ecx
callq 0x7f52a
callq 0x77f02
callq 0x42fea
incq %r12
addq $0x4, %rbx
jmp 0x5f446
callq 0x89637
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x42fea