// File: /workspace/github_cpp_makefile_star2_O1/donfreiday[P]gb/./imgui/imgui.cpp
// Function: ImGui::Shutdown()
void ImGui::Shutdown()
{
    ImGuiState& g = *GImGui;
    if (!g.Initialized)
        return;

    SaveSettings();

    for (int i = 0; i < g.Windows.Size; i++)
    {
        g.Windows[i]->~ImGuiWindow();
        ImGui::MemFree(g.Windows[i]);
    }
    g.Windows.clear();
    g.WindowsSortBuffer.clear();
    g.CurrentWindowStack.clear();
    g.FocusedWindow = NULL;
    g.HoveredWindow = NULL;
    g.HoveredRootWindow = NULL;
    for (int i = 0; i < g.Settings.Size; i++)
        ImGui::MemFree(g.Settings[i].Name);
    g.Settings.clear();
    g.ColorModifiers.clear();
    g.StyleModifiers.clear();
    g.FontStack.clear();
    g.OpenedPopupStack.clear();
    g.CurrentPopupStack.clear();
    for (int i = 0; i < IM_ARRAYSIZE(g.RenderDrawLists); i++)
        g.RenderDrawLists[i].clear();
    g.OverlayDrawList.ClearFreeMemory();
    g.ColorEditModeStorage.Clear();
    if (g.PrivateClipboard)
    {
        ImGui::MemFree(g.PrivateClipboard);
        g.PrivateClipboard = NULL;
    }
    g.InputTextState.Text.clear();
    g.InputTextState.InitialText.clear();
    g.InputTextState.TempTextBuffer.clear();

    if (g.LogFile && g.LogFile != stdout)
    {
        fclose(g.LogFile);
        g.LogFile = NULL;
    }
    if (g.LogClipboard)
    {
        g.LogClipboard->~ImGuiTextBuffer();
        ImGui::MemFree(g.LogClipboard);
    }

    if (g.IO.Fonts) // Testing for NULL to allow user to NULLify in case of running Shutdown() on multiple contexts. Bit hacky.
        g.IO.Fonts->Clear();

    g.Initialized = false;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq 0x48ebc(%rip), %rbx     # 0x55490
cmpb $0x1, (%rbx)
jne 0xc9fc
callq 0xc246
cmpl $0x0, 0x1738(%rbx)
jle 0xc647
xorl %r14d, %r14d
movq 0x1740(%rbx), %rax
movq (%rax,%r14,8), %rdi
callq 0xa8dc
movslq 0x1738(%rbx), %rax
cmpq %rax, %r14
jge 0xca07
movq 0x1740(%rbx), %rax
movq (%rax,%r14,8), %rdi
testq %rdi, %rdi
je 0xc62b
movq 0x48e6b(%rip), %rax     # 0x55490
decl 0x334(%rax)
movq 0x48e5e(%rip), %rax     # 0x55490
callq *0xd8(%rax)
incq %r14
movslq 0x1738(%rbx), %rax
cmpq %rax, %r14
jl 0xc5ee
movq 0x1740(%rbx), %rdi
testq %rdi, %rdi
je 0xc677
xorl %r14d, %r14d
movq %r14, 0x1738(%rbx)
movq 0x48e2c(%rip), %rax     # 0x55490
decl 0x334(%rax)
callq *0xd8(%rax)
movq %r14, 0x1740(%rbx)
movq 0x1750(%rbx), %rdi
testq %rdi, %rdi
je 0xc6a7
xorl %r14d, %r14d
movq %r14, 0x1748(%rbx)
movq 0x48dfc(%rip), %rax     # 0x55490
decl 0x334(%rax)
callq *0xd8(%rax)
movq %r14, 0x1750(%rbx)
movq 0x1768(%rbx), %rdi
testq %rdi, %rdi
je 0xc6d7
xorl %r14d, %r14d
movq %r14, 0x1760(%rbx)
movq 0x48dcc(%rip), %rax     # 0x55490
decl 0x334(%rax)
callq *0xd8(%rax)
movq %r14, 0x1768(%rbx)
xorps %xmm0, %xmm0
movups %xmm0, 0x1770(%rbx)
movq $0x0, 0x1780(%rbx)
cmpl $0x0, 0x17b0(%rbx)
jle 0xc738
xorl %r14d, %r14d
xorl %r15d, %r15d
movq 0x17b8(%rbx), %rax
movq (%rax,%r14), %rdi
testq %rdi, %rdi
je 0xc718
movq 0x48d7e(%rip), %rax     # 0x55490
decl 0x334(%rax)
movq 0x48d71(%rip), %rax     # 0x55490
callq *0xd8(%rax)
incq %r15
movslq 0x17b0(%rbx), %rax
addq $0x20, %r14
cmpq %rax, %r15
jl 0xc6fb
movq 0x17b8(%rbx), %rdi
testq %rdi, %rdi
je 0xc768
xorl %r14d, %r14d
movq %r14, 0x17b0(%rbx)
movq 0x48d3b(%rip), %rax     # 0x55490
decl 0x334(%rax)
callq *0xd8(%rax)
movq %r14, 0x17b8(%rbx)
movq 0x17d0(%rbx), %rdi
testq %rdi, %rdi
je 0xc798
xorl %r14d, %r14d
movq %r14, 0x17c8(%rbx)
movq 0x48d0b(%rip), %rax     # 0x55490
decl 0x334(%rax)
callq *0xd8(%rax)
movq %r14, 0x17d0(%rbx)
movq 0x17e0(%rbx), %rdi
testq %rdi, %rdi
je 0xc7c8
xorl %r14d, %r14d
movq %r14, 0x17d8(%rbx)
movq 0x48cdb(%rip), %rax     # 0x55490
decl 0x334(%rax)
callq *0xd8(%rax)
movq %r14, 0x17e0(%rbx)
movq 0x17f0(%rbx), %rdi
testq %rdi, %rdi
je 0xc7f8
xorl %r14d, %r14d
movq %r14, 0x17e8(%rbx)
movq 0x48cab(%rip), %rax     # 0x55490
decl 0x334(%rax)
callq *0xd8(%rax)
movq %r14, 0x17f0(%rbx)
movq 0x1800(%rbx), %rdi
testq %rdi, %rdi
je 0xc828
xorl %r14d, %r14d
movq %r14, 0x17f8(%rbx)
movq 0x48c7b(%rip), %rax     # 0x55490
decl 0x334(%rax)
callq *0xd8(%rax)
movq %r14, 0x1800(%rbx)
movq 0x1810(%rbx), %rdi
testq %rdi, %rdi
je 0xc858
xorl %r14d, %r14d
movq %r14, 0x1808(%rbx)
movq 0x48c4b(%rip), %rax     # 0x55490
decl 0x334(%rax)
callq *0xd8(%rax)
movq %r14, 0x1810(%rbx)
movl $0x1878, %r14d          # imm = 0x1878
xorl %r15d, %r15d
movq (%rbx,%r14), %rdi
testq %rdi, %rdi
je 0xc886
movq %r15, -0x8(%rbx,%r14)
movq 0x48c1a(%rip), %rax     # 0x55490
decl 0x334(%rax)
callq *0xd8(%rax)
movq %r15, (%rbx,%r14)
addq $0x10, %r14
cmpq $0x18a8, %r14           # imm = 0x18A8
jne 0xc861
leaq 0x18a8(%rbx), %rdi
callq 0x2cf46
movq 0x27b0(%rbx), %rdi
testq %rdi, %rdi
je 0xc8cf
xorl %r14d, %r14d
movq %r14, 0x27a8(%rbx)
movq 0x48bd4(%rip), %rax     # 0x55490
decl 0x334(%rax)
callq *0xd8(%rax)
movq %r14, 0x27b0(%rbx)
movq 0x2be0(%rbx), %rdi
testq %rdi, %rdi
je 0xc8f9
movq 0x48bae(%rip), %rax     # 0x55490
decl 0x334(%rax)
callq *0xd8(%rax)
movq $0x0, 0x2be0(%rbx)
movq 0x1ac0(%rbx), %rdi
testq %rdi, %rdi
je 0xc929
xorl %r14d, %r14d
movq %r14, 0x1ab8(%rbx)
movq 0x48b7a(%rip), %rax     # 0x55490
decl 0x334(%rax)
callq *0xd8(%rax)
movq %r14, 0x1ac0(%rbx)
movq 0x1ad0(%rbx), %rdi
testq %rdi, %rdi
je 0xc959
xorl %r14d, %r14d
movq %r14, 0x1ac8(%rbx)
movq 0x48b4a(%rip), %rax     # 0x55490
decl 0x334(%rax)
callq *0xd8(%rax)
movq %r14, 0x1ad0(%rbx)
movq 0x1ae0(%rbx), %rdi
testq %rdi, %rdi
je 0xc989
xorl %r14d, %r14d
movq %r14, 0x1ad8(%rbx)
movq 0x48b1a(%rip), %rax     # 0x55490
decl 0x334(%rax)
callq *0xd8(%rax)
movq %r14, 0x1ae0(%rbx)
movq 0x2bf0(%rbx), %rdi
testq %rdi, %rdi
je 0xc9b1
movq 0x48634(%rip), %rax     # 0x54fd0
cmpq (%rax), %rdi
je 0xc9b1
callq 0x7340
movq $0x0, 0x2bf0(%rbx)
movq 0x2bf8(%rbx), %rdi
testq %rdi, %rdi
je 0xc9e8
callq 0x24cec
movq 0x2bf8(%rbx), %rdi
testq %rdi, %rdi
je 0xc9db
movq 0x48abb(%rip), %rax     # 0x55490
decl 0x334(%rax)
movq 0x48aae(%rip), %rax     # 0x55490
callq *0xd8(%rax)
movq 0x90(%rbx), %rdi
testq %rdi, %rdi
je 0xc9f9
callq 0x315cc
movb $0x0, (%rbx)
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
leaq 0x323a2(%rip), %rdi     # 0x3edb0
leaq 0x3207e(%rip), %rsi     # 0x3ea93
leaq 0x327f4(%rip), %rcx     # 0x3f210
movl $0x31c, %edx            # imm = 0x31C
callq 0x7140