// File: /workspace/github_cpp_makefile_star2_O1/Ciaxur[P]yagb-emu/include/imgui/imgui.cpp
// Function: ImGui::EndChild()
void ImGui::EndChild()
{
    ImGuiContext& g = *GImGui;
    ImGuiWindow* window = g.CurrentWindow;

    IM_ASSERT(g.WithinEndChild == false);
    IM_ASSERT(window->Flags & ImGuiWindowFlags_ChildWindow);   // Mismatched BeginChild()/EndChild() calls

    g.WithinEndChild = true;
    if (window->BeginCount > 1)
    {
        End();
    }
    else
    {
        ImVec2 sz = window->Size;
        if (window->AutoFitChildAxises & (1 << ImGuiAxis_X)) // Arbitrary minimum zero-ish child size of 4.0f causes less trouble than a 0.0f
            sz.x = ImMax(4.0f, sz.x);
        if (window->AutoFitChildAxises & (1 << ImGuiAxis_Y))
            sz.y = ImMax(4.0f, sz.y);
        End();

        ImGuiWindow* parent_window = g.CurrentWindow;
        ImRect bb(parent_window->DC.CursorPos, parent_window->DC.CursorPos + sz);
        ItemSize(sz);
        if ((window->DC.NavLayerActiveMask != 0 || window->DC.NavHasScroll) && !(window->Flags & ImGuiWindowFlags_NavFlattened))
        {
            ItemAdd(bb, window->ChildId);
            RenderNavHighlight(bb, window->ChildId);

            // When browsing a window that has no activable items (scroll only) we keep a highlight on the child
            if (window->DC.NavLayerActiveMask == 0 && window == g.NavWindow)
                RenderNavHighlight(ImRect(bb.Min - ImVec2(2, 2), bb.Max + ImVec2(2, 2)), g.NavId, ImGuiNavHighlightFlags_TypeThin);
        }
        else
        {
            // Not navigable into
            ItemAdd(bb, 0);
        }
    }
    g.WithinEndChild = false;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x28, %rsp
movq 0xaabb8(%rip), %r14     # 0xfdcd0
cmpb $0x0, 0x1a76(%r14)
jne 0x532a0
movq 0x1ae0(%r14), %r15
testb $0x1, 0xf(%r15)
je 0x532bf
movb $0x1, 0x1a76(%r14)
cmpw $0x2, 0x9a(%r15)
jl 0x53155
callq 0x51ace
jmp 0x5328d
movq 0x18(%r15), %rax
movq %rax, -0x20(%rbp)
movb 0xa6(%r15), %al
testb $0x1, %al
je 0x5317a
movss 0x646f4(%rip), %xmm0    # 0xb7864
maxss -0x20(%rbp), %xmm0
movss %xmm0, -0x20(%rbp)
testb $0x2, %al
je 0x53190
movss 0x646de(%rip), %xmm0    # 0xb7864
maxss -0x1c(%rbp), %xmm0
movss %xmm0, -0x1c(%rbp)
callq 0x51ace
movq 0x1ae0(%r14), %rax
movss 0xd8(%rax), %xmm0
movss 0xdc(%rax), %xmm1
leaq -0x20(%rbp), %rdi
addss (%rdi), %xmm0
addss 0x4(%rdi), %xmm1
unpcklps %xmm1, %xmm0            # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movq 0xd8(%rax), %rax
movq %rax, -0x30(%rbp)
movlps %xmm0, -0x28(%rbp)
movss 0x63dfd(%rip), %xmm0    # 0xb6fd0
callq 0x532de
cmpl $0x0, 0x150(%r15)
jne 0x531f0
cmpb $0x1, 0x15d(%r15)
jne 0x53280
testb $-0x80, 0xe(%r15)
jne 0x53280
movl 0x58(%r15), %esi
leaq -0x30(%rbp), %rbx
movq %rbx, %rdi
xorl %edx, %edx
callq 0x5346f
movl 0x58(%r15), %esi
movq %rbx, %rdi
movl $0x1, %edx
callq 0x45ca4
cmpl $0x0, 0x150(%r15)
jne 0x5328d
cmpq 0x1c90(%r14), %r15
jne 0x5328d
movss 0x64653(%rip), %xmm0    # 0xb788c
movss -0x30(%rbp), %xmm1
addss %xmm0, %xmm1
addss -0x2c(%rbp), %xmm0
unpcklps %xmm0, %xmm1            # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
movss 0x64616(%rip), %xmm0    # 0xb7868
movss -0x28(%rbp), %xmm2
addss %xmm0, %xmm2
addss -0x24(%rbp), %xmm0
unpcklps %xmm0, %xmm2            # xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1]
movlhps %xmm2, %xmm1            # xmm1 = xmm1[0],xmm2[0]
leaq -0x40(%rbp), %rdi
movups %xmm1, (%rdi)
movl 0x1c98(%r14), %esi
movl $0x2, %edx
callq 0x45ca4
jmp 0x5328d
leaq -0x30(%rbp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x5346f
movb $0x0, 0x1a76(%r14)
addq $0x28, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
leaq 0x65d27(%rip), %rdi     # 0xb8fce
leaq 0x64eb7(%rip), %rsi     # 0xb8165
leaq 0x65d33(%rip), %rcx     # 0xb8fe8
movl $0x1316, %edx           # imm = 0x1316
callq 0xc140
leaq 0x65d39(%rip), %rdi     # 0xb8fff
leaq 0x64e98(%rip), %rsi     # 0xb8165
leaq 0x65d14(%rip), %rcx     # 0xb8fe8
movl $0x1317, %edx           # imm = 0x1317
callq 0xc140