// File: Ciaxur[P]yagb-emu/include/imgui/imgui_demo.cpp
// Function: ImGui::ShowDemoWindow(bool*)
void ImGui::ShowDemoWindow(bool* p_open)
{
    // Exceptionally add an extra assert here for people confused about initial Dear ImGui setup
    // Most ImGui functions would normally just crash if the context is missing.
    IM_ASSERT(ImGui::GetCurrentContext() != NULL && "Missing dear imgui context. Refer to examples app!");

    // Examples Apps (accessible from the "Examples" menu)
    static bool show_app_main_menu_bar = false;
    static bool show_app_documents = false;
    static bool show_app_console = false;
    static bool show_app_log = false;
    static bool show_app_layout = false;
    static bool show_app_property_editor = false;
    static bool show_app_long_text = false;
    static bool show_app_auto_resize = false;
    static bool show_app_constrained_resize = false;
    static bool show_app_simple_overlay = false;
    static bool show_app_window_titles = false;
    static bool show_app_custom_rendering = false;

    if (show_app_main_menu_bar)       ShowExampleAppMainMenuBar();
    if (show_app_documents)           ShowExampleAppDocuments(&show_app_documents);

    if (show_app_console)             ShowExampleAppConsole(&show_app_console);
    if (show_app_log)                 ShowExampleAppLog(&show_app_log);
    if (show_app_layout)              ShowExampleAppLayout(&show_app_layout);
    if (show_app_property_editor)     ShowExampleAppPropertyEditor(&show_app_property_editor);
    if (show_app_long_text)           ShowExampleAppLongText(&show_app_long_text);
    if (show_app_auto_resize)         ShowExampleAppAutoResize(&show_app_auto_resize);
    if (show_app_constrained_resize)  ShowExampleAppConstrainedResize(&show_app_constrained_resize);
    if (show_app_simple_overlay)      ShowExampleAppSimpleOverlay(&show_app_simple_overlay);
    if (show_app_window_titles)       ShowExampleAppWindowTitles(&show_app_window_titles);
    if (show_app_custom_rendering)    ShowExampleAppCustomRendering(&show_app_custom_rendering);

    // Dear ImGui Apps (accessible from the "Tools" menu)
    static bool show_app_metrics = false;
    static bool show_app_style_editor = false;
    static bool show_app_about = false;

    if (show_app_metrics)       { ImGui::ShowMetricsWindow(&show_app_metrics); }
    if (show_app_about)         { ImGui::ShowAboutWindow(&show_app_about); }
    if (show_app_style_editor)
    {
        ImGui::Begin("Dear ImGui Style Editor", &show_app_style_editor);
        ImGui::ShowStyleEditor();
        ImGui::End();
    }

    // Demonstrate the various window flags. Typically you would just use the default!
    static bool no_titlebar = false;
    static bool no_scrollbar = false;
    static bool no_menu = false;
    static bool no_move = false;
    static bool no_resize = false;
    static bool no_collapse = false;
    static bool no_close = false;
    static bool no_nav = false;
    static bool no_background = false;
    static bool no_bring_to_front = false;

    ImGuiWindowFlags window_flags = 0;
    if (no_titlebar)        window_flags |= ImGuiWindowFlags_NoTitleBar;
    if (no_scrollbar)       window_flags |= ImGuiWindowFlags_NoScrollbar;
    if (!no_menu)           window_flags |= ImGuiWindowFlags_MenuBar;
    if (no_move)            window_flags |= ImGuiWindowFlags_NoMove;
    if (no_resize)          window_flags |= ImGuiWindowFlags_NoResize;
    if (no_collapse)        window_flags |= ImGuiWindowFlags_NoCollapse;
    if (no_nav)             window_flags |= ImGuiWindowFlags_NoNav;
    if (no_background)      window_flags |= ImGuiWindowFlags_NoBackground;
    if (no_bring_to_front)  window_flags |= ImGuiWindowFlags_NoBringToFrontOnFocus;
    if (no_close)           p_open = NULL; // Don't pass our bool* to Begin

    // We specify a default position/size in case there's no data in the .ini file.
    // We only do it to make the demo applications a little more welcoming, but typically this isn't required.
    ImGui::SetNextWindowPos(ImVec2(650, 20), ImGuiCond_FirstUseEver);
    ImGui::SetNextWindowSize(ImVec2(550, 680), ImGuiCond_FirstUseEver);

    // Main body of the Demo window starts here.
    if (!ImGui::Begin("Dear ImGui Demo", p_open, window_flags))
    {
        // Early out if the window is collapsed, as an optimization.
        ImGui::End();
        return;
    }

    // Most "big" widgets share a common width settings by default. See 'Demo->Layout->Widgets Width' for details.

    // e.g. Use 2/3 of the space for widgets and 1/3 for labels (right align)
    //ImGui::PushItemWidth(-ImGui::GetWindowWidth() * 0.35f);

    // e.g. Leave a fixed amount of width for labels (by passing a negative value), the rest goes to widgets.
    ImGui::PushItemWidth(ImGui::GetFontSize() * -12);

    // Menu Bar
    if (ImGui::BeginMenuBar())
    {
        if (ImGui::BeginMenu("Menu"))
        {
            ShowExampleMenuFile();
            ImGui::EndMenu();
        }
        if (ImGui::BeginMenu("Examples"))
        {
            ImGui::MenuItem("Main menu bar", NULL, &show_app_main_menu_bar);
            ImGui::MenuItem("Console", NULL, &show_app_console);
            ImGui::MenuItem("Log", NULL, &show_app_log);
            ImGui::MenuItem("Simple layout", NULL, &show_app_layout);
            ImGui::MenuItem("Property editor", NULL, &show_app_property_editor);
            ImGui::MenuItem("Long text display", NULL, &show_app_long_text);
            ImGui::MenuItem("Auto-resizing window", NULL, &show_app_auto_resize);
            ImGui::MenuItem("Constrained-resizing window", NULL, &show_app_constrained_resize);
            ImGui::MenuItem("Simple overlay", NULL, &show_app_simple_overlay);
            ImGui::MenuItem("Manipulating window titles", NULL, &show_app_window_titles);
            ImGui::MenuItem("Custom rendering", NULL, &show_app_custom_rendering);
            ImGui::MenuItem("Documents", NULL, &show_app_documents);
            ImGui::EndMenu();
        }
        if (ImGui::BeginMenu("Tools"))
        {
            ImGui::MenuItem("Metrics/Debugger", NULL, &show_app_metrics);
            ImGui::MenuItem("Style Editor", NULL, &show_app_style_editor);
            ImGui::MenuItem("About Dear ImGui", NULL, &show_app_about);
            ImGui::EndMenu();
        }
        ImGui::EndMenuBar();
    }

    ImGui::Text("dear imgui says hello. (%s)", IMGUI_VERSION);
    ImGui::Spacing();

    if (ImGui::CollapsingHeader("Help"))
    {
        ImGui::Text("ABOUT THIS DEMO:");
        ImGui::BulletText("Sections below are demonstrating many aspects of the library.");
        ImGui::BulletText("The \"Examples\" menu above leads to more demo contents.");
        ImGui::BulletText("The \"Tools\" menu above gives access to: About Box, Style Editor,\n"
                          "and Metrics/Debugger (general purpose Dear ImGui debugging tool).");
        ImGui::Separator();

        ImGui::Text("PROGRAMMER GUIDE:");
        ImGui::BulletText("See the ShowDemoWindow() code in imgui_demo.cpp. <- you are here!");
        ImGui::BulletText("See comments in imgui.cpp.");
        ImGui::BulletText("See example applications in the examples/ folder.");
        ImGui::BulletText("Read the FAQ at http://www.dearimgui.org/faq/");
        ImGui::BulletText("Set 'io.ConfigFlags |= NavEnableKeyboard' for keyboard controls.");
        ImGui::BulletText("Set 'io.ConfigFlags |= NavEnableGamepad' for gamepad controls.");
        ImGui::Separator();

        ImGui::Text("USER GUIDE:");
        ImGui::ShowUserGuide();
    }

    if (ImGui::CollapsingHeader("Configuration"))
    {
        ImGuiIO& io = ImGui::GetIO();

        if (ImGui::TreeNode("Configuration##2"))
        {
            ImGui::CheckboxFlags("io.ConfigFlags: NavEnableKeyboard",    &io.ConfigFlags, ImGuiConfigFlags_NavEnableKeyboard);
            ImGui::SameLine(); HelpMarker("Enable keyboard controls.");
            ImGui::CheckboxFlags("io.ConfigFlags: NavEnableGamepad",     &io.ConfigFlags, ImGuiConfigFlags_NavEnableGamepad);
            ImGui::SameLine(); HelpMarker("Enable gamepad controls. Require backend to set io.BackendFlags |= ImGuiBackendFlags_HasGamepad.\n\nRead instructions in imgui.cpp for details.");
            ImGui::CheckboxFlags("io.ConfigFlags: NavEnableSetMousePos", &io.ConfigFlags, ImGuiConfigFlags_NavEnableSetMousePos);
            ImGui::SameLine(); HelpMarker("Instruct navigation to move the mouse cursor. See comment for ImGuiConfigFlags_NavEnableSetMousePos.");
            ImGui::CheckboxFlags("io.ConfigFlags: NoMouse",              &io.ConfigFlags, ImGuiConfigFlags_NoMouse);
            if (io.ConfigFlags & ImGuiConfigFlags_NoMouse)
            {
                // The "NoMouse" option can get us stuck with a disabled mouse! Let's provide an alternative way to fix it:
                if (fmodf((float)ImGui::GetTime(), 0.40f) < 0.20f)
                {
                    ImGui::SameLine();
                    ImGui::Text("<<PRESS SPACE TO DISABLE>>");
                }
                if (ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_Space)))
                    io.ConfigFlags &= ~ImGuiConfigFlags_NoMouse;
            }
            ImGui::CheckboxFlags("io.ConfigFlags: NoMouseCursorChange", &io.ConfigFlags, ImGuiConfigFlags_NoMouseCursorChange);
            ImGui::SameLine(); HelpMarker("Instruct backend to not alter mouse cursor shape and visibility.");
            ImGui::Checkbox("io.ConfigInputTextCursorBlink", &io.ConfigInputTextCursorBlink);
            ImGui::SameLine(); HelpMarker("Enable blinking cursor (optional as some users consider it to be distracting)");
            ImGui::Checkbox("io.ConfigDragClickToInputText", &io.ConfigDragClickToInputText);
            ImGui::SameLine(); HelpMarker("Enable turning DragXXX widgets into text input with a simple mouse click-release (without moving).");
            ImGui::Checkbox("io.ConfigWindowsResizeFromEdges", &io.ConfigWindowsResizeFromEdges);
            ImGui::SameLine(); HelpMarker("Enable resizing of windows from their edges and from the lower-left corner.\nThis requires (io.BackendFlags & ImGuiBackendFlags_HasMouseCursors) because it needs mouse cursor feedback.");
            ImGui::Checkbox("io.ConfigWindowsMoveFromTitleBarOnly", &io.ConfigWindowsMoveFromTitleBarOnly);
            ImGui::Checkbox("io.MouseDrawCursor", &io.MouseDrawCursor);
            ImGui::SameLine(); HelpMarker("Instruct Dear ImGui to render a mouse cursor itself. Note that a mouse cursor rendered via your application GPU rendering path will feel more laggy than hardware cursor, but will be more in sync with your other visuals.\n\nSome desktop applications may use both kinds of cursors (e.g. enable software cursor only when resizing/dragging something).");
            ImGui::Text("Also see Style->Rendering for rendering options.");
            ImGui::TreePop();
            ImGui::Separator();
        }

        if (ImGui::TreeNode("Backend Flags"))
        {
            HelpMarker(
                "Those flags are set by the backends (imgui_impl_xxx files) to specify their capabilities.\n"
                "Here we expose then as read-only fields to avoid breaking interactions with your backend.");

            // Make a local copy to avoid modifying actual backend flags.
            ImGuiBackendFlags backend_flags = io.BackendFlags;
            ImGui::CheckboxFlags("io.BackendFlags: HasGamepad",           &backend_flags, ImGuiBackendFlags_HasGamepad);
            ImGui::CheckboxFlags("io.BackendFlags: HasMouseCursors",      &backend_flags, ImGuiBackendFlags_HasMouseCursors);
            ImGui::CheckboxFlags("io.BackendFlags: HasSetMousePos",       &backend_flags, ImGuiBackendFlags_HasSetMousePos);
            ImGui::CheckboxFlags("io.BackendFlags: RendererHasVtxOffset", &backend_flags, ImGuiBackendFlags_RendererHasVtxOffset);
            ImGui::TreePop();
            ImGui::Separator();
        }

        if (ImGui::TreeNode("Style"))
        {
            HelpMarker("The same contents can be accessed in 'Tools->Style Editor' or by calling the ShowStyleEditor() function.");
            ImGui::ShowStyleEditor();
            ImGui::TreePop();
            ImGui::Separator();
        }

        if (ImGui::TreeNode("Capture/Logging"))
        {
            HelpMarker(
                "The logging API redirects all text output so you can easily capture the content of "
                "a window or a block. Tree nodes can be automatically expanded.\n"
                "Try opening any of the contents below in this window and then click one of the \"Log To\" button.");
            ImGui::LogButtons();

            HelpMarker("You can also call ImGui::LogText() to output directly to the log without a visual output.");
            if (ImGui::Button("Copy \"Hello, world!\" to clipboard"))
            {
                ImGui::LogToClipboard();
                ImGui::LogText("Hello, world!");
                ImGui::LogFinish();
            }
            ImGui::TreePop();
        }
    }

    if (ImGui::CollapsingHeader("Window options"))
    {
        if (ImGui::BeginTable("split", 3))
        {
            ImGui::TableNextColumn(); ImGui::Checkbox("No titlebar", &no_titlebar);
            ImGui::TableNextColumn(); ImGui::Checkbox("No scrollbar", &no_scrollbar);
            ImGui::TableNextColumn(); ImGui::Checkbox("No menu", &no_menu);
            ImGui::TableNextColumn(); ImGui::Checkbox("No move", &no_move);
            ImGui::TableNextColumn(); ImGui::Checkbox("No resize", &no_resize);
            ImGui::TableNextColumn(); ImGui::Checkbox("No collapse", &no_collapse);
            ImGui::TableNextColumn(); ImGui::Checkbox("No close", &no_close);
            ImGui::TableNextColumn(); ImGui::Checkbox("No nav", &no_nav);
            ImGui::TableNextColumn(); ImGui::Checkbox("No background", &no_background);
            ImGui::TableNextColumn(); ImGui::Checkbox("No bring to front", &no_bring_to_front);
            ImGui::EndTable();
        }
    }

    // All demo contents
    ShowDemoWindowWidgets();
    ShowDemoWindowLayout();
    ShowDemoWindowPopups();
    ShowDemoWindowTables();
    ShowDemoWindowMisc();

    // End of ShowDemoWindow()
    ImGui::PopItemWidth();
    ImGui::End();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
callq 0xcab00
movq %rax, %rcx
xorl %eax, %eax
cmpq $0x0, %rcx
movb %al, -0x45(%rbp)
je 0xefe96
movb $0x1, %al
movb %al, -0x45(%rbp)
jmp 0xefe96
movb -0x45(%rbp), %al
testb $0x1, %al
jne 0xefe9f
jmp 0xefea1
jmp 0xefec0
leaq 0x88cf7(%rip), %rdi     # 0x178b9f
leaq 0x88d4d(%rip), %rsi     # 0x178bfc
movl $0xf9, %edx
leaq 0x88d5e(%rip), %rcx     # 0x178c19
callq 0xd180
testb $0x1, 0x123169(%rip)    # 0x213030
je 0xefece
callq 0xf0980
testb $0x1, 0x12315c(%rip)    # 0x213031
je 0xefee3
leaq 0x123153(%rip), %rdi    # 0x213031
callq 0xf0a90
testb $0x1, 0x123148(%rip)    # 0x213032
je 0xefef8
leaq 0x12313f(%rip), %rdi    # 0x213032
callq 0xf1260
testb $0x1, 0x123134(%rip)    # 0x213033
je 0xeff0d
leaq 0x12312b(%rip), %rdi    # 0x213033
callq 0xf1300
testb $0x1, 0x123120(%rip)    # 0x213034
je 0xeff22
leaq 0x123117(%rip), %rdi    # 0x213034
callq 0xf14f0
testb $0x1, 0x12310c(%rip)    # 0x213035
je 0xeff37
leaq 0x123103(%rip), %rdi    # 0x213035
callq 0xf17c0
testb $0x1, 0x1230f8(%rip)    # 0x213036
je 0xeff4c
leaq 0x1230ef(%rip), %rdi    # 0x213036
callq 0xf18c0
testb $0x1, 0x1230e4(%rip)    # 0x213037
je 0xeff61
leaq 0x1230db(%rip), %rdi    # 0x213037
callq 0xf1c60
testb $0x1, 0x1230d0(%rip)    # 0x213038
je 0xeff76
leaq 0x1230c7(%rip), %rdi    # 0x213038
callq 0xf1d10
testb $0x1, 0x1230bc(%rip)    # 0x213039
je 0xeff8b
leaq 0x1230b3(%rip), %rdi    # 0x213039
callq 0xf2180
testb $0x1, 0x1230a8(%rip)    # 0x21303a
je 0xeffa0
leaq 0x12309f(%rip), %rdi    # 0x21303a
callq 0xf24d0
testb $0x1, 0x123094(%rip)    # 0x21303b
je 0xeffb5
leaq 0x12308b(%rip), %rdi    # 0x21303b
callq 0xf2670
testb $0x1, 0x123080(%rip)    # 0x21303c
je 0xeffca
leaq 0x123077(%rip), %rdi    # 0x21303c
callq 0xe1830
testb $0x1, 0x12306d(%rip)    # 0x21303e
je 0xeffdf
leaq 0x123064(%rip), %rdi    # 0x21303e
callq 0xf44a0
testb $0x1, 0x123057(%rip)    # 0x21303d
je 0xf000b
leaq 0x88c4d(%rip), %rdi     # 0x178c3c
leaq 0x123047(%rip), %rsi    # 0x21303d
xorl %edx, %edx
callq 0xd0170
xorl %eax, %eax
movl %eax, %edi
callq 0xf4a80
callq 0xd3b60
movl $0x0, -0xc(%rbp)
testb $0x1, 0x123026(%rip)    # 0x21303f
je 0xf0024
movl -0xc(%rbp), %eax
orl $0x1, %eax
movl %eax, -0xc(%rbp)
testb $0x1, 0x123015(%rip)    # 0x213040
je 0xf0036
movl -0xc(%rbp), %eax
orl $0x8, %eax
movl %eax, -0xc(%rbp)
testb $0x1, 0x123004(%rip)    # 0x213041
jne 0xf004a
movl -0xc(%rbp), %eax
orl $0x400, %eax            # imm = 0x400
movl %eax, -0xc(%rbp)
testb $0x1, 0x122ff1(%rip)    # 0x213042
je 0xf005c
movl -0xc(%rbp), %eax
orl $0x4, %eax
movl %eax, -0xc(%rbp)
testb $0x1, 0x122fe0(%rip)    # 0x213043
je 0xf006e
movl -0xc(%rbp), %eax
orl $0x2, %eax
movl %eax, -0xc(%rbp)
testb $0x1, 0x122fcf(%rip)    # 0x213044
je 0xf0080
movl -0xc(%rbp), %eax
orl $0x20, %eax
movl %eax, -0xc(%rbp)
testb $0x1, 0x122fbf(%rip)    # 0x213046
je 0xf0094
movl -0xc(%rbp), %eax
orl $0xc0000, %eax          # imm = 0xC0000
movl %eax, -0xc(%rbp)
testb $0x1, 0x122fac(%rip)    # 0x213047
je 0xf00a8
movl -0xc(%rbp), %eax
orl $0x80, %eax
movl %eax, -0xc(%rbp)
testb $0x1, 0x122f99(%rip)    # 0x213048
je 0xf00bc
movl -0xc(%rbp), %eax
orl $0x2000, %eax           # imm = 0x2000
movl %eax, -0xc(%rbp)
testb $0x1, 0x122f82(%rip)    # 0x213045
je 0xf00cd
movq $0x0, -0x8(%rbp)
leaq -0x14(%rbp), %rdi
movss 0x8848f(%rip), %xmm0    # 0x178568
movss 0x826fb(%rip), %xmm1    # 0x1727dc
callq 0xbf4c0
leaq -0x1c(%rbp), %rdi
xorps %xmm1, %xmm1
movaps %xmm1, %xmm0
callq 0xbf4c0
leaq -0x14(%rbp), %rdi
movl $0x4, %esi
leaq -0x1c(%rbp), %rdx
callq 0xdab40
leaq -0x24(%rbp), %rdi
movss 0x8844d(%rip), %xmm0    # 0x178560
movss 0x88449(%rip), %xmm1    # 0x178564
callq 0xbf4c0
leaq -0x24(%rbp), %rdi
movl $0x4, %esi
callq 0xd00c0
movq -0x8(%rbp), %rsi
movl -0xc(%rbp), %edx
leaq 0x88b18(%rip), %rdi     # 0x178c54
callq 0xd0170
testb $0x1, %al
jne 0xf014f
callq 0xd3b60
jmp 0xf0976
callq 0xdae90
movss 0x88410(%rip), %xmm1    # 0x17856c
mulss %xmm1, %xmm0
callq 0xdcb10
callq 0x1540f0
testb $0x1, %al
jne 0xf0173
jmp 0xf0378
leaq 0x8dada(%rip), %rdi     # 0x17dc54
movl $0x1, %esi
callq 0x154790
testb $0x1, %al
jne 0xf018a
jmp 0xf0194
callq 0xf5e80
callq 0x1552c0
leaq 0x88ac9(%rip), %rdi     # 0x178c64
movl $0x1, %esi
callq 0x154790
testb $0x1, %al
jne 0xf01ae
jmp 0xf0303
leaq 0x88ab8(%rip), %rdi     # 0x178c6d
xorl %eax, %eax
movl %eax, %esi
leaq 0x122e70(%rip), %rdx    # 0x213030
movl $0x1, %ecx
callq 0x155770
leaq 0x9276e(%rip), %rdi     # 0x18293f
xorl %eax, %eax
movl %eax, %esi
leaq 0x122e56(%rip), %rdx    # 0x213032
movl $0x1, %ecx
callq 0x155770
leaq 0x92a85(%rip), %rdi     # 0x182c72
xorl %eax, %eax
movl %eax, %esi
leaq 0x122e3b(%rip), %rdx    # 0x213033
movl $0x1, %ecx
callq 0x155770
leaq 0x92ba7(%rip), %rdi     # 0x182db0
xorl %eax, %eax
movl %eax, %esi
leaq 0x122e20(%rip), %rdx    # 0x213034
movl $0x1, %ecx
callq 0x155770
leaq 0x92c6a(%rip), %rdi     # 0x182e8f
xorl %eax, %eax
movl %eax, %esi
leaq 0x122e05(%rip), %rdx    # 0x213035
movl $0x1, %ecx
callq 0x155770
leaq 0x92da3(%rip), %rdi     # 0x182fe4
xorl %eax, %eax
movl %eax, %esi
leaq 0x122dea(%rip), %rdx    # 0x213036
movl $0x1, %ecx
callq 0x155770
leaq 0x92e66(%rip), %rdi     # 0x1830c3
xorl %eax, %eax
movl %eax, %esi
leaq 0x122dcf(%rip), %rdx    # 0x213037
movl $0x1, %ecx
callq 0x155770
leaq 0x88a02(%rip), %rdi     # 0x178c7b
xorl %eax, %eax
movl %eax, %esi
leaq 0x122db4(%rip), %rdx    # 0x213038
movl $0x1, %ecx
callq 0x155770
leaq 0x93045(%rip), %rdi     # 0x1832da
xorl %eax, %eax
movl %eax, %esi
leaq 0x122d99(%rip), %rdx    # 0x213039
movl $0x1, %ecx
callq 0x155770
leaq 0x889e6(%rip), %rdi     # 0x178c97
xorl %eax, %eax
movl %eax, %esi
leaq 0x122d7e(%rip), %rdx    # 0x21303a
movl $0x1, %ecx
callq 0x155770
leaq 0x93209(%rip), %rdi     # 0x1834d6
xorl %eax, %eax
movl %eax, %esi
leaq 0x122d63(%rip), %rdx    # 0x21303b
movl $0x1, %ecx
callq 0x155770
leaq 0x9349b(%rip), %rdi     # 0x183784
xorl %eax, %eax
movl %eax, %esi
leaq 0x122d3d(%rip), %rdx    # 0x213031
movl $0x1, %ecx
callq 0x155770
callq 0x1552c0
leaq 0x857a5(%rip), %rdi     # 0x175aaf
movl $0x1, %esi
callq 0x154790
testb $0x1, %al
jne 0xf031a
jmp 0xf0373
leaq 0x8560c(%rip), %rdi     # 0x17592d
xorl %eax, %eax
movl %eax, %esi
leaq 0x122d10(%rip), %rdx    # 0x21303c
movl $0x1, %ecx
callq 0x155770
leaq 0x8890a(%rip), %rdi     # 0x178c47
xorl %eax, %eax
movl %eax, %esi
leaq 0x122cf5(%rip), %rdx    # 0x21303d
movl $0x1, %ecx
callq 0x155770
leaq 0x88959(%rip), %rdi     # 0x178cb2
xorl %eax, %eax
movl %eax, %esi
leaq 0x122cda(%rip), %rdx    # 0x21303e
movl $0x1, %ecx
callq 0x155770
callq 0x1552c0
callq 0x154310
leaq 0x88944(%rip), %rdi     # 0x178cc3
leaq 0x81d41(%rip), %rsi     # 0x1720c7
movb $0x0, %al
callq 0x139160
callq 0x13d880
leaq 0x88946(%rip), %rdi     # 0x178cdf
xorl %esi, %esi
callq 0x1525b0
testb $0x1, %al
jne 0xf03a9
jmp 0xf0460
leaq 0x88934(%rip), %rdi     # 0x178ce4
movb $0x0, %al
callq 0x139160
leaq 0x88937(%rip), %rdi     # 0x178cf5
movb $0x0, %al
callq 0x139ab0
leaq 0x88967(%rip), %rdi     # 0x178d33
movb $0x0, %al
callq 0x139ab0
leaq 0x88990(%rip), %rdi     # 0x178d6a
movb $0x0, %al
callq 0x139ab0
callq 0x13dec0
leaq 0x88a00(%rip), %rdi     # 0x178ded
movb $0x0, %al
callq 0x139160
leaq 0x88a04(%rip), %rdi     # 0x178dff
movb $0x0, %al
callq 0x139ab0
leaq 0x88a38(%rip), %rdi     # 0x178e41
movb $0x0, %al
callq 0x139ab0
leaq 0x88a45(%rip), %rdi     # 0x178e5c
movb $0x0, %al
callq 0x139ab0
leaq 0x88a69(%rip), %rdi     # 0x178e8e
movb $0x0, %al
callq 0x139ab0
leaq 0x88a89(%rip), %rdi     # 0x178ebc
movb $0x0, %al
callq 0x139ab0
leaq 0x88abc(%rip), %rdi     # 0x178efd
movb $0x0, %al
callq 0x139ab0
callq 0x13dec0
leaq 0x88ae8(%rip), %rdi     # 0x178f3c
movb $0x0, %al
callq 0x139160
callq 0xefd20
leaq 0x88ae1(%rip), %rdi     # 0x178f48
xorl %esi, %esi
callq 0x1525b0
testb $0x1, %al
jne 0xf0477
jmp 0xf0813
callq 0xcb1a0
movq %rax, -0x30(%rbp)
leaq 0x88acf(%rip), %rdi     # 0x178f56
callq 0x1510b0
testb $0x1, %al
jne 0xf0495
jmp 0xf06e4
movq -0x30(%rbp), %rsi
leaq 0x88ac7(%rip), %rdi     # 0x178f67
movl $0x1, %edx
callq 0x13cd30
xorps %xmm0, %xmm0
movss 0x81acb(%rip), %xmm1    # 0x171f80
callq 0xdc1c0
leaq 0x88ac8(%rip), %rdi     # 0x178f89
callq 0xf6290
movq -0x30(%rbp), %rsi
leaq 0x88ad2(%rip), %rdi     # 0x178fa3
movl $0x2, %edx
callq 0x13cd30
xorps %xmm0, %xmm0
movss 0x81a9a(%rip), %xmm1    # 0x171f80
callq 0xdc1c0
leaq 0x88ad2(%rip), %rdi     # 0x178fc4
callq 0xf6290
movq -0x30(%rbp), %rsi
leaq 0x88b50(%rip), %rdi     # 0x179052
movl $0x4, %edx
callq 0x13cd30
xorps %xmm0, %xmm0
movss 0x81a69(%rip), %xmm1    # 0x171f80
callq 0xdc1c0
leaq 0x88b54(%rip), %rdi     # 0x179077
callq 0xf6290
movq -0x30(%rbp), %rsi
leaq 0x88ba9(%rip), %rdi     # 0x1790dc
movl $0x10, %edx
callq 0x13cd30
movq -0x30(%rbp), %rax
movl (%rax), %eax
andl $0x10, %eax
cmpl $0x0, %eax
je 0xf05b8
callq 0xcb240
cvtsd2ss %xmm0, %xmm0
movss 0x82288(%rip), %xmm1    # 0x1727e4
callq 0xdb30
movaps %xmm0, %xmm1
movss 0x81a64(%rip), %xmm0    # 0x171fd0
ucomiss %xmm1, %xmm0
jbe 0xf058f
xorps %xmm0, %xmm0
movss 0x81a04(%rip), %xmm1    # 0x171f80
callq 0xdc1c0
leaq 0x88b6c(%rip), %rdi     # 0x1790f4
movb $0x0, %al
callq 0x139160
movl $0xc, %edi
callq 0xd48f0
movl %eax, %edi
movl $0x1, %esi
callq 0xd4bc0
testb $0x1, %al
jne 0xf05ab
jmp 0xf05b6
movq -0x30(%rbp), %rax
movl (%rax), %ecx
andl $-0x11, %ecx
movl %ecx, (%rax)
jmp 0xf05b8
movq -0x30(%rbp), %rsi
leaq 0x88b4c(%rip), %rdi     # 0x17910f
movl $0x20, %edx
callq 0x13cd30
xorps %xmm0, %xmm0
movss 0x819a8(%rip), %xmm1    # 0x171f80
callq 0xdc1c0
leaq 0x88b4f(%rip), %rdi     # 0x179133
callq 0xf6290
movq -0x30(%rbp), %rsi
addq $0xc2, %rsi
leaq 0x88b79(%rip), %rdi     # 0x179174
callq 0x13c7c0
xorps %xmm0, %xmm0
movss 0x81975(%rip), %xmm1    # 0x171f80
callq 0xdc1c0
leaq 0x88b7b(%rip), %rdi     # 0x179192
callq 0xf6290
movq -0x30(%rbp), %rsi
addq $0xc3, %rsi
leaq 0x88bb2(%rip), %rdi     # 0x1791e0
callq 0x13c7c0
xorps %xmm0, %xmm0
movss 0x81942(%rip), %xmm1    # 0x171f80
callq 0xdc1c0
leaq 0x88bb4(%rip), %rdi     # 0x1791fe
callq 0xf6290
movq -0x30(%rbp), %rsi
addq $0xc4, %rsi
leaq 0x88c00(%rip), %rdi     # 0x179261
callq 0x13c7c0
xorps %xmm0, %xmm0
movss 0x8190f(%rip), %xmm1    # 0x171f80
callq 0xdc1c0
leaq 0x88c04(%rip), %rdi     # 0x179281
callq 0xf6290
movq -0x30(%rbp), %rsi
addq $0xc5, %rsi
leaq 0x88ca5(%rip), %rdi     # 0x179339
callq 0x13c7c0
movq -0x30(%rbp), %rsi
addq $0xc0, %rsi
leaq 0x88cb3(%rip), %rdi     # 0x17935e
callq 0x13c7c0
xorps %xmm0, %xmm0
movss 0x818c5(%rip), %xmm1    # 0x171f80
callq 0xdc1c0
leaq 0x88caa(%rip), %rdi     # 0x179371
callq 0xf6290
leaq 0x88df8(%rip), %rdi     # 0x1794cb
movb $0x0, %al
callq 0x139160
callq 0x1523d0
callq 0x13dec0
leaq 0x88e11(%rip), %rdi     # 0x1794fc
callq 0x1510b0
testb $0x1, %al
jne 0xf06f6
jmp 0xf076a
leaq 0x88e0d(%rip), %rdi     # 0x17950a
callq 0xf6290
movq -0x30(%rbp), %rax
movl 0x4(%rax), %eax
movl %eax, -0x34(%rbp)
leaq 0x88eab(%rip), %rdi     # 0x1795be
leaq -0x34(%rbp), %rsi
movl $0x1, %edx
callq 0x13cd30
leaq 0x88eb2(%rip), %rdi     # 0x1795da
leaq -0x34(%rbp), %rsi
movl $0x2, %edx
callq 0x13cd30
leaq 0x88ebe(%rip), %rdi     # 0x1795fb
leaq -0x34(%rbp), %rsi
movl $0x4, %edx
callq 0x13cd30
leaq 0x88ec9(%rip), %rdi     # 0x17961b
leaq -0x34(%rbp), %rsi
movl $0x8, %edx
callq 0x13cd30
callq 0x1523d0
callq 0x13dec0
leaq 0x88ed0(%rip), %rdi     # 0x179641
callq 0x1510b0
testb $0x1, %al
jne 0xf077c
jmp 0xf079b
leaq 0x88ec4(%rip), %rdi     # 0x179647
callq 0xf6290
xorl %eax, %eax
movl %eax, %edi
callq 0xf4a80
callq 0x1523d0
callq 0x13dec0
leaq 0x88f0e(%rip), %rdi     # 0x1796b0
callq 0x1510b0
testb $0x1, %al
jne 0xf07ad
jmp 0xf0811
leaq 0x88f0c(%rip), %rdi     # 0x1796c0
callq 0xf6290
callq 0xe0e40
leaq 0x88fed(%rip), %rdi     # 0x1797b2
callq 0xf6290
leaq -0x3c(%rbp), %rdi
xorps %xmm1, %xmm1
movaps %xmm1, %xmm0
callq 0xbf4c0
leaq 0x8902c(%rip), %rdi     # 0x17980c
leaq -0x3c(%rbp), %rsi
callq 0x13a930
testb $0x1, %al
jne 0xf07ef
jmp 0xf080c
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0xe0dc0
leaq 0x8902e(%rip), %rdi     # 0x17982e
movb $0x0, %al
callq 0xe0a30
callq 0xd98d0
callq 0x1523d0
jmp 0xf0813
leaq 0x89022(%rip), %rdi     # 0x17983c
xorl %esi, %esi
callq 0x1525b0
testb $0x1, %al
jne 0xf082a
jmp 0xf0953
leaq -0x44(%rbp), %rdi
xorps %xmm1, %xmm1
movaps %xmm1, %xmm0
callq 0xbf4c0
leaq 0x8900b(%rip), %rdi     # 0x17984b
movl $0x3, %esi
xorl %edx, %edx
leaq -0x44(%rbp), %rcx
xorps %xmm0, %xmm0
callq 0x129500
testb $0x1, %al
jne 0xf085c
jmp 0xf0951
callq 0x131d40
leaq 0x88fe9(%rip), %rdi     # 0x179851
leaq 0x1227d0(%rip), %rsi    # 0x21303f
callq 0x13c7c0
callq 0x131d40
leaq 0x88fdd(%rip), %rdi     # 0x17985d
leaq 0x1227b9(%rip), %rsi    # 0x213040
callq 0x13c7c0
callq 0x131d40
leaq 0x88fd2(%rip), %rdi     # 0x17986a
leaq 0x1227a2(%rip), %rsi    # 0x213041
callq 0x13c7c0
callq 0x131d40
leaq 0x88fc2(%rip), %rdi     # 0x179872
leaq 0x12278b(%rip), %rsi    # 0x213042
callq 0x13c7c0
callq 0x131d40
leaq 0x88fb2(%rip), %rdi     # 0x17987a
leaq 0x122774(%rip), %rsi    # 0x213043
callq 0x13c7c0
callq 0x131d40
leaq 0x88fa4(%rip), %rdi     # 0x179884
leaq 0x12275d(%rip), %rsi    # 0x213044
callq 0x13c7c0
callq 0x131d40
leaq 0x88f98(%rip), %rdi     # 0x179890
leaq 0x122746(%rip), %rsi    # 0x213045
callq 0x13c7c0
callq 0x131d40
leaq 0x88f89(%rip), %rdi     # 0x179899
leaq 0x12272f(%rip), %rsi    # 0x213046
callq 0x13c7c0
callq 0x131d40
leaq 0x88f78(%rip), %rdi     # 0x1798a0
leaq 0x122718(%rip), %rsi    # 0x213047
callq 0x13c7c0
callq 0x131d40
leaq 0x88f6e(%rip), %rdi     # 0x1798ae
leaq 0x122701(%rip), %rsi    # 0x213048
callq 0x13c7c0
callq 0x12dc40
jmp 0xf0953
callq 0xf62f0
callq 0xfd150
callq 0xfff80
callq 0x100940
callq 0x105c80
callq 0xdcd30
callq 0xd3b60
addq $0x50, %rsp
popq %rbp
retq
nopl (%rax)