// File: Ciaxur[P]yagb-emu/include/imgui/imgui_demo.cpp
// Function: ShowDemoWindowPopups()
static void ShowDemoWindowPopups()
{
    if (!ImGui::CollapsingHeader("Popups & Modal windows"))
        return;

    // The properties of popups windows are:
    // - They block normal mouse hovering detection outside them. (*)
    // - Unless modal, they can be closed by clicking anywhere outside them, or by pressing ESCAPE.
    // - Their visibility state (~bool) is held internally by Dear ImGui instead of being held by the programmer as
    //   we are used to with regular Begin() calls. User can manipulate the visibility state by calling OpenPopup().
    // (*) One can use IsItemHovered(ImGuiHoveredFlags_AllowWhenBlockedByPopup) to bypass it and detect hovering even
    //     when normally blocked by a popup.
    // Those three properties are connected. The library needs to hold their visibility state BECAUSE it can close
    // popups at any time.

    // Typical use for regular windows:
    //   bool my_tool_is_active = false; if (ImGui::Button("Open")) my_tool_is_active = true; [...] if (my_tool_is_active) Begin("My Tool", &my_tool_is_active) { [...] } End();
    // Typical use for popups:
    //   if (ImGui::Button("Open")) ImGui::OpenPopup("MyPopup"); if (ImGui::BeginPopup("MyPopup") { [...] EndPopup(); }

    // With popups we have to go through a library call (here OpenPopup) to manipulate the visibility state.
    // This may be a bit confusing at first but it should quickly make sense. Follow on the examples below.

    if (ImGui::TreeNode("Popups"))
    {
        ImGui::TextWrapped(
            "When a popup is active, it inhibits interacting with windows that are behind the popup. "
            "Clicking outside the popup closes it.");

        static int selected_fish = -1;
        const char* names[] = { "Bream", "Haddock", "Mackerel", "Pollock", "Tilefish" };
        static bool toggles[] = { true, false, false, false, false };

        // Simple selection popup (if you want to show the current selection inside the Button itself,
        // you may want to build a string using the "###" operator to preserve a constant ID with a variable label)
        if (ImGui::Button("Select.."))
            ImGui::OpenPopup("my_select_popup");
        ImGui::SameLine();
        ImGui::TextUnformatted(selected_fish == -1 ? "<None>" : names[selected_fish]);
        if (ImGui::BeginPopup("my_select_popup"))
        {
            ImGui::Text("Aquarium");
            ImGui::Separator();
            for (int i = 0; i < IM_ARRAYSIZE(names); i++)
                if (ImGui::Selectable(names[i]))
                    selected_fish = i;
            ImGui::EndPopup();
        }

        // Showing a menu with toggles
        if (ImGui::Button("Toggle.."))
            ImGui::OpenPopup("my_toggle_popup");
        if (ImGui::BeginPopup("my_toggle_popup"))
        {
            for (int i = 0; i < IM_ARRAYSIZE(names); i++)
                ImGui::MenuItem(names[i], "", &toggles[i]);
            if (ImGui::BeginMenu("Sub-menu"))
            {
                ImGui::MenuItem("Click me");
                ImGui::EndMenu();
            }

            ImGui::Separator();
            ImGui::Text("Tooltip here");
            if (ImGui::IsItemHovered())
                ImGui::SetTooltip("I am a tooltip over a popup");

            if (ImGui::Button("Stacked Popup"))
                ImGui::OpenPopup("another popup");
            if (ImGui::BeginPopup("another popup"))
            {
                for (int i = 0; i < IM_ARRAYSIZE(names); i++)
                    ImGui::MenuItem(names[i], "", &toggles[i]);
                if (ImGui::BeginMenu("Sub-menu"))
                {
                    ImGui::MenuItem("Click me");
                    if (ImGui::Button("Stacked Popup"))
                        ImGui::OpenPopup("another popup");
                    if (ImGui::BeginPopup("another popup"))
                    {
                        ImGui::Text("I am the last one here.");
                        ImGui::EndPopup();
                    }
                    ImGui::EndMenu();
                }
                ImGui::EndPopup();
            }
            ImGui::EndPopup();
        }

        // Call the more complete ShowExampleMenuFile which we use in various places of this demo
        if (ImGui::Button("File Menu.."))
            ImGui::OpenPopup("my_file_popup");
        if (ImGui::BeginPopup("my_file_popup"))
        {
            ShowExampleMenuFile();
            ImGui::EndPopup();
        }

        ImGui::TreePop();
    }

    if (ImGui::TreeNode("Context menus"))
    {
        // BeginPopupContextItem() is a helper to provide common/simple popup behavior of essentially doing:
        //    if (IsItemHovered() && IsMouseReleased(ImGuiMouseButton_Right))
        //       OpenPopup(id);
        //    return BeginPopup(id);
        // For more advanced uses you may want to replicate and customize this code.
        // See details in BeginPopupContextItem().
        static float value = 0.5f;
        ImGui::Text("Value = %.3f (<-- right-click here)", value);
        if (ImGui::BeginPopupContextItem("item context menu"))
        {
            if (ImGui::Selectable("Set to zero")) value = 0.0f;
            if (ImGui::Selectable("Set to PI")) value = 3.1415f;
            ImGui::SetNextItemWidth(-1);
            ImGui::DragFloat("##Value", &value, 0.1f, 0.0f, 0.0f);
            ImGui::EndPopup();
        }

        // We can also use OpenPopupOnItemClick() which is the same as BeginPopupContextItem() but without the
        // Begin() call. So here we will make it that clicking on the text field with the right mouse button (1)
        // will toggle the visibility of the popup above.
        ImGui::Text("(You can also right-click me to open the same popup as above.)");
        ImGui::OpenPopupOnItemClick("item context menu", 1);

        // When used after an item that has an ID (e.g.Button), we can skip providing an ID to BeginPopupContextItem().
        // BeginPopupContextItem() will use the last item ID as the popup ID.
        // In addition here, we want to include your editable label inside the button label.
        // We use the ### operator to override the ID (read FAQ about ID for details)
        static char name[32] = "Label1";
        char buf[64];
        sprintf(buf, "Button: %s###Button", name); // ### operator override ID ignoring the preceding label
        ImGui::Button(buf);
        if (ImGui::BeginPopupContextItem())
        {
            ImGui::Text("Edit name:");
            ImGui::InputText("##edit", name, IM_ARRAYSIZE(name));
            if (ImGui::Button("Close"))
                ImGui::CloseCurrentPopup();
            ImGui::EndPopup();
        }
        ImGui::SameLine(); ImGui::Text("(<-- right-click here)");

        ImGui::TreePop();
    }

    if (ImGui::TreeNode("Modals"))
    {
        ImGui::TextWrapped("Modal windows are like popups but the user cannot close them by clicking outside.");

        if (ImGui::Button("Delete.."))
            ImGui::OpenPopup("Delete?");

        // Always center this window when appearing
        ImVec2 center(ImGui::GetIO().DisplaySize.x * 0.5f, ImGui::GetIO().DisplaySize.y * 0.5f);
        ImGui::SetNextWindowPos(center, ImGuiCond_Appearing, ImVec2(0.5f, 0.5f));

        if (ImGui::BeginPopupModal("Delete?", NULL, ImGuiWindowFlags_AlwaysAutoResize))
        {
            ImGui::Text("All those beautiful files will be deleted.\nThis operation cannot be undone!\n\n");
            ImGui::Separator();

            //static int unused_i = 0;
            //ImGui::Combo("Combo", &unused_i, "Delete\0Delete harder\0");

            static bool dont_ask_me_next_time = false;
            ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(0, 0));
            ImGui::Checkbox("Don't ask me next time", &dont_ask_me_next_time);
            ImGui::PopStyleVar();

            if (ImGui::Button("OK", ImVec2(120, 0))) { ImGui::CloseCurrentPopup(); }
            ImGui::SetItemDefaultFocus();
            ImGui::SameLine();
            if (ImGui::Button("Cancel", ImVec2(120, 0))) { ImGui::CloseCurrentPopup(); }
            ImGui::EndPopup();
        }

        if (ImGui::Button("Stacked modals.."))
            ImGui::OpenPopup("Stacked 1");
        if (ImGui::BeginPopupModal("Stacked 1", NULL, ImGuiWindowFlags_MenuBar))
        {
            if (ImGui::BeginMenuBar())
            {
                if (ImGui::BeginMenu("File"))
                {
                    if (ImGui::MenuItem("Some menu item")) {}
                    ImGui::EndMenu();
                }
                ImGui::EndMenuBar();
            }
            ImGui::Text("Hello from Stacked The First\nUsing style.Colors[ImGuiCol_ModalWindowDimBg] behind it.");

            // Testing behavior of widgets stacking their own regular popups over the modal.
            static int item = 1;
            static float color[4] = { 0.4f, 0.7f, 0.0f, 0.5f };
            ImGui::Combo("Combo", &item, "aaaa\0bbbb\0cccc\0dddd\0eeee\0\0");
            ImGui::ColorEdit4("color", color);

            if (ImGui::Button("Add another modal.."))
                ImGui::OpenPopup("Stacked 2");

            // Also demonstrate passing a bool* to BeginPopupModal(), this will create a regular close button which
            // will close the popup. Note that the visibility state of popups is owned by imgui, so the input value
            // of the bool actually doesn't matter here.
            bool unused_open = true;
            if (ImGui::BeginPopupModal("Stacked 2", &unused_open))
            {
                ImGui::Text("Hello from Stacked The Second!");
                if (ImGui::Button("Close"))
                    ImGui::CloseCurrentPopup();
                ImGui::EndPopup();
            }

            if (ImGui::Button("Close"))
                ImGui::CloseCurrentPopup();
            ImGui::EndPopup();
        }

        ImGui::TreePop();
    }

    if (ImGui::TreeNode("Menus inside a regular window"))
    {
        ImGui::TextWrapped("Below we are testing adding menu items to a regular window. It's rather unusual but should work!");
        ImGui::Separator();

        // Note: As a quirk in this very specific example, we want to differentiate the parent of this menu from the
        // parent of the various popup menus above. To do so we are encloding the items in a PushID()/PopID() block
        // to make them two different menusets. If we don't, opening any popup above and hovering our menu here would
        // open it. This is because once a menu is active, we allow to switch to a sibling menu by just hovering on it,
        // which is the desired behavior for regular menus.
        ImGui::PushID("foo");
        ImGui::MenuItem("Menu item", "CTRL+M");
        if (ImGui::BeginMenu("Menu inside a regular window"))
        {
            ShowExampleMenuFile();
            ImGui::EndMenu();
        }
        ImGui::PopID();
        ImGui::Separator();
        ImGui::TreePop();
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x150, %rsp            # imm = 0x150
leaq 0x7ec34(%rip), %rdi     # 0x17ebc6
xorl %esi, %esi
callq 0x1525b0
testb $0x1, %al
jne 0xfffa2
jmp 0x100936
leaq 0x75d23(%rip), %rdi     # 0x175ccc
callq 0x1510b0
testb $0x1, %al
jne 0xfffb7
jmp 0x100343
leaq 0x7ec1f(%rip), %rdi     # 0x17ebdd
movb $0x0, %al
callq 0x139570
leaq -0x30(%rbp), %rdi
leaq 0x10d7a0(%rip), %rsi    # 0x20d770
movl $0x28, %edx
callq 0xd0a0
leaq -0x38(%rbp), %rdi
xorps %xmm1, %xmm1
movaps %xmm1, %xmm0
callq 0xbf4c0
leaq 0x7ec93(%rip), %rdi     # 0x17ec83
leaq -0x38(%rbp), %rsi
callq 0x13a930
testb $0x1, %al
jne 0xfffff
jmp 0x10000d
leaq 0x7ec86(%rip), %rdi     # 0x17ec8c
xorl %esi, %esi
callq 0xdde00
xorps %xmm0, %xmm0
movss 0x71f68(%rip), %xmm1    # 0x171f80
callq 0xdc1c0
cmpl $-0x1, 0x1129d8(%rip)   # 0x2129fc
jne 0x100036
leaq 0x765aa(%rip), %rax     # 0x1765d7
movq %rax, -0x130(%rbp)
jmp 0x100049
movslq 0x1129bf(%rip), %rax    # 0x2129fc
movq -0x30(%rbp,%rax,8), %rax
movq %rax, -0x130(%rbp)
movq -0x130(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x139130
leaq 0x7ec2c(%rip), %rdi     # 0x17ec8c
xorl %esi, %esi
callq 0xde5f0
testb $0x1, %al
jne 0x10006d
jmp 0x1000e1
leaq 0x7ec28(%rip), %rdi     # 0x17ec9c
movb $0x0, %al
callq 0x139160
callq 0x13dec0
movl $0x0, -0x3c(%rbp)
cmpl $0x5, -0x3c(%rbp)
jge 0x1000dc
movslq -0x3c(%rbp), %rax
movq -0x30(%rbp,%rax,8), %rax
movq %rax, -0x138(%rbp)
leaq -0x44(%rbp), %rdi
xorps %xmm1, %xmm1
movaps %xmm1, %xmm0
callq 0xbf4c0
movq -0x138(%rbp), %rdi
xorl %edx, %edx
leaq -0x44(%rbp), %rcx
movl %edx, %esi
callq 0x13f2b0
testb $0x1, %al
jne 0x1000c6
jmp 0x1000cf
movl -0x3c(%rbp), %eax
movl %eax, 0x11292d(%rip)    # 0x2129fc
jmp 0x1000d1
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x100087
callq 0xde4e0
leaq -0x4c(%rbp), %rdi
xorps %xmm1, %xmm1
movaps %xmm1, %xmm0
callq 0xbf4c0
leaq 0x7ebae(%rip), %rdi     # 0x17eca5
leaq -0x4c(%rbp), %rsi
callq 0x13a930
testb $0x1, %al
jne 0x100106
jmp 0x100114
leaq 0x7eba1(%rip), %rdi     # 0x17ecae
xorl %esi, %esi
callq 0xdde00
leaq 0x7eb93(%rip), %rdi     # 0x17ecae
xorl %esi, %esi
callq 0xde5f0
testb $0x1, %al
jne 0x10012b
jmp 0x1002ed
movl $0x0, -0x50(%rbp)
cmpl $0x5, -0x50(%rbp)
jge 0x10016b
movslq -0x50(%rbp), %rax
movq -0x30(%rbp,%rax,8), %rdi
movslq -0x50(%rbp), %rax
leaq 0x1128b4(%rip), %rdx    # 0x212a00
addq %rax, %rdx
leaq 0x71db3(%rip), %rsi     # 0x171f09
movl $0x1, %ecx
callq 0x155770
movl -0x50(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x50(%rbp)
jmp 0x100132
leaq 0x7eb4c(%rip), %rdi     # 0x17ecbe
movl $0x1, %esi
callq 0x154790
testb $0x1, %al
jne 0x100182
jmp 0x10019e
leaq 0x7eb3e(%rip), %rdi     # 0x17ecc7
xorl %eax, %eax
movl %eax, %esi
xorl %edx, %edx
movl $0x1, %ecx
callq 0x155360
callq 0x1552c0
callq 0x13dec0
leaq 0x7eb26(%rip), %rdi     # 0x17ecd0
movb $0x0, %al
callq 0x139160
xorl %edi, %edi
callq 0xca1c0
testb $0x1, %al
jne 0x1001be
jmp 0x1001cc
leaq 0x7eb18(%rip), %rdi     # 0x17ecdd
movb $0x0, %al
callq 0xd4170
leaq -0x58(%rbp), %rdi
xorps %xmm1, %xmm1
movaps %xmm1, %xmm0
callq 0xbf4c0
leaq 0x7eb17(%rip), %rdi     # 0x17ecf9
leaq -0x58(%rbp), %rsi
callq 0x13a930
testb $0x1, %al
jne 0x1001f1
jmp 0x1001ff
leaq 0x7eb0f(%rip), %rdi     # 0x17ed07
xorl %esi, %esi
callq 0xdde00
leaq 0x7eb01(%rip), %rdi     # 0x17ed07
xorl %esi, %esi
callq 0xde5f0
testb $0x1, %al
jne 0x100216
jmp 0x1002e8
movl $0x0, -0x5c(%rbp)
cmpl $0x5, -0x5c(%rbp)
jge 0x100256
movslq -0x5c(%rbp), %rax
movq -0x30(%rbp,%rax,8), %rdi
movslq -0x5c(%rbp), %rax
leaq 0x1127c9(%rip), %rdx    # 0x212a00
addq %rax, %rdx
leaq 0x71cc8(%rip), %rsi     # 0x171f09
movl $0x1, %ecx
callq 0x155770
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0x10021d
leaq 0x7ea61(%rip), %rdi     # 0x17ecbe
movl $0x1, %esi
callq 0x154790
testb $0x1, %al
jne 0x10026d
jmp 0x1002e3
leaq 0x7ea53(%rip), %rdi     # 0x17ecc7
xorl %eax, %eax
movl %eax, %esi
xorl %edx, %edx
movl $0x1, %ecx
callq 0x155360
leaq -0x64(%rbp), %rdi
xorps %xmm1, %xmm1
movaps %xmm1, %xmm0
callq 0xbf4c0
leaq 0x7ea5f(%rip), %rdi     # 0x17ecf9
leaq -0x64(%rbp), %rsi
callq 0x13a930
testb $0x1, %al
jne 0x1002a9
jmp 0x1002b7
leaq 0x7ea57(%rip), %rdi     # 0x17ed07
xorl %esi, %esi
callq 0xdde00
leaq 0x7ea49(%rip), %rdi     # 0x17ed07
xorl %esi, %esi
callq 0xde5f0
testb $0x1, %al
jne 0x1002cb
jmp 0x1002de
leaq 0x7ea43(%rip), %rdi     # 0x17ed15
movb $0x0, %al
callq 0x139160
callq 0xde4e0
callq 0x1552c0
callq 0xde4e0
callq 0xde4e0
leaq -0x6c(%rbp), %rdi
xorps %xmm1, %xmm1
movaps %xmm1, %xmm0
callq 0xbf4c0
leaq 0x7ea2a(%rip), %rdi     # 0x17ed2d
leaq -0x6c(%rbp), %rsi
callq 0x13a930
testb $0x1, %al
jne 0x100312
jmp 0x100320
leaq 0x7ea20(%rip), %rdi     # 0x17ed39
xorl %esi, %esi
callq 0xdde00
leaq 0x7ea12(%rip), %rdi     # 0x17ed39
xorl %esi, %esi
callq 0xde5f0
testb $0x1, %al
jne 0x100334
jmp 0x10033e
callq 0xf5e80
callq 0xde4e0
callq 0x1523d0
leaq 0x7e9fd(%rip), %rdi     # 0x17ed47
callq 0x1510b0
testb $0x1, %al
jne 0x100358
jmp 0x10053f
movss 0x1126a8(%rip), %xmm0   # 0x212a08
cvtss2sd %xmm0, %xmm0
leaq 0x7e9ea(%rip), %rdi     # 0x17ed55
movb $0x1, %al
callq 0x139160
leaq 0x7ea00(%rip), %rdi     # 0x17ed79
movl $0x1, %esi
callq 0xde8a0
testb $0x1, %al
jne 0x10038c
jmp 0x100435
leaq -0x74(%rbp), %rdi
xorps %xmm1, %xmm1
movaps %xmm1, %xmm0
callq 0xbf4c0
leaq 0x7e9e9(%rip), %rdi     # 0x17ed8b
xorl %edx, %edx
leaq -0x74(%rbp), %rcx
movl %edx, %esi
callq 0x13f2b0
testb $0x1, %al
jne 0x1003b5
jmp 0x1003c0
xorps %xmm0, %xmm0
movss %xmm0, 0x112648(%rip)   # 0x212a08
leaq -0x7c(%rbp), %rdi
xorps %xmm1, %xmm1
movaps %xmm1, %xmm0
callq 0xbf4c0
leaq 0x7e9c1(%rip), %rdi     # 0x17ed97
xorl %edx, %edx
leaq -0x7c(%rbp), %rcx
movl %edx, %esi
callq 0x13f2b0
testb $0x1, %al
jne 0x1003e9
jmp 0x1003f9
movss 0x7822f(%rip), %xmm0    # 0x178620
movss %xmm0, 0x11260f(%rip)   # 0x212a08
movss 0x71b7f(%rip), %xmm0    # 0x171f80
callq 0xc6860
leaq 0x7e994(%rip), %rdi     # 0x17eda1
leaq 0x1125f4(%rip), %rsi    # 0x212a08
movss 0x72360(%rip), %xmm0    # 0x17277c
xorps %xmm2, %xmm2
leaq 0x8f888(%rip), %rdx     # 0x18fcae
xorl %ecx, %ecx
movaps %xmm2, %xmm1
callq 0x142f00
callq 0xde4e0
leaq 0x7e96d(%rip), %rdi     # 0x17eda9
movb $0x0, %al
callq 0x139160
leaq 0x7e92f(%rip), %rdi     # 0x17ed79
movl $0x1, %esi
callq 0xde7f0
leaq -0xc0(%rbp), %rdi
leaq 0x7e986(%rip), %rsi     # 0x17ede8
leaq 0x1125a7(%rip), %rdx    # 0x212a10
movb $0x0, %al
callq 0xd990
leaq -0xc0(%rbp), %rax
movq %rax, -0x140(%rbp)
leaq -0xc8(%rbp), %rdi
xorps %xmm1, %xmm1
movaps %xmm1, %xmm0
callq 0xbf4c0
movq -0x140(%rbp), %rdi
leaq -0xc8(%rbp), %rsi
callq 0x13a930
xorl %eax, %eax
movl %eax, %edi
movl $0x1, %esi
callq 0xde8a0
testb $0x1, %al
jne 0x1004b7
jmp 0x10051c
leaq 0x7e93e(%rip), %rdi     # 0x17edfc
movb $0x0, %al
callq 0x139160
leaq 0x7e93b(%rip), %rdi     # 0x17ee07
leaq 0x11253d(%rip), %rsi    # 0x212a10
movl $0x20, %edx
xorl %ecx, %ecx
xorl %eax, %eax
movl %eax, %r9d
movq %r9, %r8
callq 0x149cd0
leaq -0xd0(%rbp), %rdi
xorps %xmm1, %xmm1
movaps %xmm1, %xmm0
callq 0xbf4c0
leaq 0x7d45d(%rip), %rdi     # 0x17d95d
leaq -0xd0(%rbp), %rsi
callq 0x13a930
testb $0x1, %al
jne 0x100512
jmp 0x100517
callq 0xde2d0
callq 0xde4e0
xorps %xmm0, %xmm0
movss 0x71a59(%rip), %xmm1    # 0x171f80
callq 0xdc1c0
leaq 0x7e82f(%rip), %rdi     # 0x17ed62
movb $0x0, %al
callq 0x139160
callq 0x1523d0
leaq 0x7e8c8(%rip), %rdi     # 0x17ee0e
callq 0x1510b0
testb $0x1, %al
jne 0x100554
jmp 0x1008bb
leaq 0x7e8ba(%rip), %rdi     # 0x17ee15
movb $0x0, %al
callq 0x139570
leaq -0xd8(%rbp), %rdi
xorps %xmm1, %xmm1
movaps %xmm1, %xmm0
callq 0xbf4c0
leaq 0x7e8ec(%rip), %rdi     # 0x17ee67
leaq -0xd8(%rbp), %rsi
callq 0x13a930
testb $0x1, %al
jne 0x10058d
jmp 0x10059b
leaq 0x7e8dc(%rip), %rdi     # 0x17ee70
xorl %esi, %esi
callq 0xdde00
callq 0xcb1a0
movss 0x71a30(%rip), %xmm0    # 0x171fd8
mulss 0x8(%rax), %xmm0
movss %xmm0, -0x144(%rbp)
callq 0xcb1a0
movss -0x144(%rbp), %xmm0
movss 0x71a0e(%rip), %xmm1    # 0x171fd8
mulss 0xc(%rax), %xmm1
leaq -0xe0(%rbp), %rdi
callq 0xbf4c0
leaq -0xe8(%rbp), %rdi
movss 0x719ee(%rip), %xmm1    # 0x171fd8
movaps %xmm1, %xmm0
callq 0xbf4c0
leaq -0xe0(%rbp), %rdi
movl $0x8, %esi
leaq -0xe8(%rbp), %rdx
callq 0xdab40
leaq 0x7e85f(%rip), %rdi     # 0x17ee70
xorl %eax, %eax
movl %eax, %esi
movl $0x40, %edx
callq 0xde680
testb $0x1, %al
jne 0x100628
jmp 0x1006ff
leaq 0x7e849(%rip), %rdi     # 0x17ee78
movb $0x0, %al
callq 0x139160
callq 0x13dec0
leaq -0xf0(%rbp), %rdi
xorps %xmm1, %xmm1
movaps %xmm1, %xmm0
callq 0xbf4c0
movl $0xa, %edi
leaq -0xf0(%rbp), %rsi
callq 0xc7b50
leaq 0x7e861(%rip), %rdi     # 0x17eec6
leaq 0x113704(%rip), %rsi    # 0x213d70
callq 0x13c7c0
movl $0x1, %edi
callq 0xc7c10
leaq -0xf8(%rbp), %rdi
movss 0x720ea(%rip), %xmm0    # 0x172774
xorps %xmm1, %xmm1
callq 0xbf4c0
leaq 0x7e844(%rip), %rdi     # 0x17eedd
leaq -0xf8(%rbp), %rsi
callq 0x13a930
testb $0x1, %al
jne 0x1006ab
jmp 0x1006b0
callq 0xde2d0
callq 0xdb110
xorps %xmm0, %xmm0
movss 0x718c0(%rip), %xmm1    # 0x171f80
callq 0xdc1c0
leaq -0x100(%rbp), %rdi
movss 0x720a0(%rip), %xmm0    # 0x172774
xorps %xmm1, %xmm1
callq 0xbf4c0
leaq 0x7e7fd(%rip), %rdi     # 0x17eee0
leaq -0x100(%rbp), %rsi
callq 0x13a930
testb $0x1, %al
jne 0x1006f5
jmp 0x1006fa
callq 0xde2d0
callq 0xde4e0
leaq -0x108(%rbp), %rdi
xorps %xmm1, %xmm1
movaps %xmm1, %xmm0
callq 0xbf4c0
leaq 0x7e7cf(%rip), %rdi     # 0x17eee7
leaq -0x108(%rbp), %rsi
callq 0x13a930
testb $0x1, %al
jne 0x10072a
jmp 0x100738
leaq 0x7e7c7(%rip), %rdi     # 0x17eef8
xorl %esi, %esi
callq 0xdde00
leaq 0x7e7b9(%rip), %rdi     # 0x17eef8
xorl %eax, %eax
movl %eax, %esi
movl $0x400, %edx            # imm = 0x400
callq 0xde680
testb $0x1, %al
jne 0x100756
jmp 0x1008b6
callq 0x1540f0
testb $0x1, %al
jne 0x100761
jmp 0x1007a1
leaq 0x75150(%rip), %rdi     # 0x1758b8
movl $0x1, %esi
callq 0x154790
testb $0x1, %al
jne 0x100778
jmp 0x10079c
leaq 0x7e783(%rip), %rdi     # 0x17ef02
xorl %eax, %eax
movl %eax, %esi
xorl %edx, %edx
movl $0x1, %ecx
callq 0x155360
testb $0x1, %al
jne 0x100795
jmp 0x100797
jmp 0x100797
callq 0x1552c0
callq 0x154310
leaq 0x7e769(%rip), %rdi     # 0x17ef11
movb $0x0, %al
callq 0x139160
leaq 0x7cca9(%rip), %rdi     # 0x17d45f
leaq 0x112273(%rip), %rsi    # 0x212a30
leaq 0x77f1e(%rip), %rdx     # 0x1786e2
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
callq 0x13fb50
leaq 0x80183(%rip), %rdi     # 0x180958
leaq 0x112264(%rip), %rsi    # 0x212a40
xorl %edx, %edx
callq 0x14bea0
leaq -0x110(%rbp), %rdi
xorps %xmm1, %xmm1
movaps %xmm1, %xmm0
callq 0xbf4c0
leaq 0x7e76b(%rip), %rdi     # 0x17ef67
leaq -0x110(%rbp), %rsi
callq 0x13a930
testb $0x1, %al
jne 0x10080e
jmp 0x10081c
leaq 0x7e766(%rip), %rdi     # 0x17ef7b
xorl %esi, %esi
callq 0xdde00
movb $0x1, -0x111(%rbp)
leaq 0x7e751(%rip), %rdi     # 0x17ef7b
leaq -0x111(%rbp), %rsi
xorl %edx, %edx
callq 0xde680
testb $0x1, %al
jne 0x10083e
jmp 0x100881
leaq 0x7e740(%rip), %rdi     # 0x17ef85
movb $0x0, %al
callq 0x139160
leaq -0x11c(%rbp), %rdi
xorps %xmm1, %xmm1
movaps %xmm1, %xmm0
callq 0xbf4c0
leaq 0x7d0f8(%rip), %rdi     # 0x17d95d
leaq -0x11c(%rbp), %rsi
callq 0x13a930
testb $0x1, %al
jne 0x100877
jmp 0x10087c
callq 0xde2d0
callq 0xde4e0
leaq -0x124(%rbp), %rdi
xorps %xmm1, %xmm1
movaps %xmm1, %xmm0
callq 0xbf4c0
leaq 0x7d0c3(%rip), %rdi     # 0x17d95d
leaq -0x124(%rbp), %rsi
callq 0x13a930
testb $0x1, %al
jne 0x1008ac
jmp 0x1008b1
callq 0xde2d0
callq 0xde4e0
callq 0x1523d0
leaq 0x7e6e2(%rip), %rdi     # 0x17efa4
callq 0x1510b0
testb $0x1, %al
jne 0x1008cd
jmp 0x100936
leaq 0x7e6ee(%rip), %rdi     # 0x17efc2
movb $0x0, %al
callq 0x139570
callq 0x13dec0
leaq 0x7e73c(%rip), %rdi     # 0x17f023
callq 0xdb440
leaq 0x7e734(%rip), %rdi     # 0x17f027
leaq 0x7e737(%rip), %rsi     # 0x17f031
xorl %edx, %edx
movl $0x1, %ecx
callq 0x155360
leaq 0x7e72b(%rip), %rdi     # 0x17f038
movl $0x1, %esi
callq 0x154790
testb $0x1, %al
jne 0x10091d
jmp 0x100927
callq 0xf5e80
callq 0x1552c0
callq 0xdb640
callq 0x13dec0
callq 0x1523d0
addq $0x150, %rsp            # imm = 0x150
popq %rbp
retq
nop