// File: Ciaxur[P]yagb-emu/include/imgui/imgui_demo.cpp
// Function: ImGui::ShowStyleEditor(ImGuiStyle*)
void ImGui::ShowStyleEditor(ImGuiStyle* ref)
{
    // You can pass in a reference ImGuiStyle structure to compare to, revert to and save to
    // (without a reference style pointer, we will use one compared locally as a reference)
    ImGuiStyle& style = ImGui::GetStyle();
    static ImGuiStyle ref_saved_style;

    // Default to using internal storage as reference
    static bool init = true;
    if (init && ref == NULL)
        ref_saved_style = style;
    init = false;
    if (ref == NULL)
        ref = &ref_saved_style;

    ImGui::PushItemWidth(ImGui::GetWindowWidth() * 0.50f);

    if (ImGui::ShowStyleSelector("Colors##Selector"))
        ref_saved_style = style;
    ImGui::ShowFontSelector("Fonts##Selector");

    // Simplified Settings (expose floating-pointer border sizes as boolean representing 0.0f or 1.0f)
    if (ImGui::SliderFloat("FrameRounding", &style.FrameRounding, 0.0f, 12.0f, "%.0f"))
        style.GrabRounding = style.FrameRounding; // Make GrabRounding always the same value as FrameRounding
    { bool border = (style.WindowBorderSize > 0.0f); if (ImGui::Checkbox("WindowBorder", &border)) { style.WindowBorderSize = border ? 1.0f : 0.0f; } }
    ImGui::SameLine();
    { bool border = (style.FrameBorderSize > 0.0f);  if (ImGui::Checkbox("FrameBorder",  &border)) { style.FrameBorderSize  = border ? 1.0f : 0.0f; } }
    ImGui::SameLine();
    { bool border = (style.PopupBorderSize > 0.0f);  if (ImGui::Checkbox("PopupBorder",  &border)) { style.PopupBorderSize  = border ? 1.0f : 0.0f; } }

    // Save/Revert button
    if (ImGui::Button("Save Ref"))
        *ref = ref_saved_style = style;
    ImGui::SameLine();
    if (ImGui::Button("Revert Ref"))
        style = *ref;
    ImGui::SameLine();
    HelpMarker(
        "Save/Revert in local non-persistent storage. Default Colors definition are not affected. "
        "Use \"Export\" below to save them somewhere.");

    ImGui::Separator();

    if (ImGui::BeginTabBar("##tabs", ImGuiTabBarFlags_None))
    {
        if (ImGui::BeginTabItem("Sizes"))
        {
            ImGui::Text("Main");
            ImGui::SliderFloat2("WindowPadding", (float*)&style.WindowPadding, 0.0f, 20.0f, "%.0f");
            ImGui::SliderFloat2("FramePadding", (float*)&style.FramePadding, 0.0f, 20.0f, "%.0f");
            ImGui::SliderFloat2("CellPadding", (float*)&style.CellPadding, 0.0f, 20.0f, "%.0f");
            ImGui::SliderFloat2("ItemSpacing", (float*)&style.ItemSpacing, 0.0f, 20.0f, "%.0f");
            ImGui::SliderFloat2("ItemInnerSpacing", (float*)&style.ItemInnerSpacing, 0.0f, 20.0f, "%.0f");
            ImGui::SliderFloat2("TouchExtraPadding", (float*)&style.TouchExtraPadding, 0.0f, 10.0f, "%.0f");
            ImGui::SliderFloat("IndentSpacing", &style.IndentSpacing, 0.0f, 30.0f, "%.0f");
            ImGui::SliderFloat("ScrollbarSize", &style.ScrollbarSize, 1.0f, 20.0f, "%.0f");
            ImGui::SliderFloat("GrabMinSize", &style.GrabMinSize, 1.0f, 20.0f, "%.0f");
            ImGui::Text("Borders");
            ImGui::SliderFloat("WindowBorderSize", &style.WindowBorderSize, 0.0f, 1.0f, "%.0f");
            ImGui::SliderFloat("ChildBorderSize", &style.ChildBorderSize, 0.0f, 1.0f, "%.0f");
            ImGui::SliderFloat("PopupBorderSize", &style.PopupBorderSize, 0.0f, 1.0f, "%.0f");
            ImGui::SliderFloat("FrameBorderSize", &style.FrameBorderSize, 0.0f, 1.0f, "%.0f");
            ImGui::SliderFloat("TabBorderSize", &style.TabBorderSize, 0.0f, 1.0f, "%.0f");
            ImGui::Text("Rounding");
            ImGui::SliderFloat("WindowRounding", &style.WindowRounding, 0.0f, 12.0f, "%.0f");
            ImGui::SliderFloat("ChildRounding", &style.ChildRounding, 0.0f, 12.0f, "%.0f");
            ImGui::SliderFloat("FrameRounding", &style.FrameRounding, 0.0f, 12.0f, "%.0f");
            ImGui::SliderFloat("PopupRounding", &style.PopupRounding, 0.0f, 12.0f, "%.0f");
            ImGui::SliderFloat("ScrollbarRounding", &style.ScrollbarRounding, 0.0f, 12.0f, "%.0f");
            ImGui::SliderFloat("GrabRounding", &style.GrabRounding, 0.0f, 12.0f, "%.0f");
            ImGui::SliderFloat("LogSliderDeadzone", &style.LogSliderDeadzone, 0.0f, 12.0f, "%.0f");
            ImGui::SliderFloat("TabRounding", &style.TabRounding, 0.0f, 12.0f, "%.0f");
            ImGui::Text("Alignment");
            ImGui::SliderFloat2("WindowTitleAlign", (float*)&style.WindowTitleAlign, 0.0f, 1.0f, "%.2f");
            int window_menu_button_position = style.WindowMenuButtonPosition + 1;
            if (ImGui::Combo("WindowMenuButtonPosition", (int*)&window_menu_button_position, "None\0Left\0Right\0"))
                style.WindowMenuButtonPosition = window_menu_button_position - 1;
            ImGui::Combo("ColorButtonPosition", (int*)&style.ColorButtonPosition, "Left\0Right\0");
            ImGui::SliderFloat2("ButtonTextAlign", (float*)&style.ButtonTextAlign, 0.0f, 1.0f, "%.2f");
            ImGui::SameLine(); HelpMarker("Alignment applies when a button is larger than its text content.");
            ImGui::SliderFloat2("SelectableTextAlign", (float*)&style.SelectableTextAlign, 0.0f, 1.0f, "%.2f");
            ImGui::SameLine(); HelpMarker("Alignment applies when a selectable is larger than its text content.");
            ImGui::Text("Safe Area Padding");
            ImGui::SameLine(); HelpMarker("Adjust if you cannot see the edges of your screen (e.g. on a TV where scaling has not been configured).");
            ImGui::SliderFloat2("DisplaySafeAreaPadding", (float*)&style.DisplaySafeAreaPadding, 0.0f, 30.0f, "%.0f");
            ImGui::EndTabItem();
        }

        if (ImGui::BeginTabItem("Colors"))
        {
            static int output_dest = 0;
            static bool output_only_modified = true;
            if (ImGui::Button("Export"))
            {
                if (output_dest == 0)
                    ImGui::LogToClipboard();
                else
                    ImGui::LogToTTY();
                ImGui::LogText("ImVec4* colors = ImGui::GetStyle().Colors;" IM_NEWLINE);
                for (int i = 0; i < ImGuiCol_COUNT; i++)
                {
                    const ImVec4& col = style.Colors[i];
                    const char* name = ImGui::GetStyleColorName(i);
                    if (!output_only_modified || memcmp(&col, &ref->Colors[i], sizeof(ImVec4)) != 0)
                        ImGui::LogText("colors[ImGuiCol_%s]%*s= ImVec4(%.2ff, %.2ff, %.2ff, %.2ff);" IM_NEWLINE,
                            name, 23 - (int)strlen(name), "", col.x, col.y, col.z, col.w);
                }
                ImGui::LogFinish();
            }
            ImGui::SameLine(); ImGui::SetNextItemWidth(120); ImGui::Combo("##output_type", &output_dest, "To Clipboard\0To TTY\0");
            ImGui::SameLine(); ImGui::Checkbox("Only Modified Colors", &output_only_modified);

            static ImGuiTextFilter filter;
            filter.Draw("Filter colors", ImGui::GetFontSize() * 16);

            static ImGuiColorEditFlags alpha_flags = 0;
            if (ImGui::RadioButton("Opaque", alpha_flags == ImGuiColorEditFlags_None))             { alpha_flags = ImGuiColorEditFlags_None; } ImGui::SameLine();
            if (ImGui::RadioButton("Alpha",  alpha_flags == ImGuiColorEditFlags_AlphaPreview))     { alpha_flags = ImGuiColorEditFlags_AlphaPreview; } ImGui::SameLine();
            if (ImGui::RadioButton("Both",   alpha_flags == ImGuiColorEditFlags_AlphaPreviewHalf)) { alpha_flags = ImGuiColorEditFlags_AlphaPreviewHalf; } ImGui::SameLine();
            HelpMarker(
                "In the color list:\n"
                "Left-click on color square to open color picker,\n"
                "Right-click to open edit options menu.");

            ImGui::BeginChild("##colors", ImVec2(0, 0), true, ImGuiWindowFlags_AlwaysVerticalScrollbar | ImGuiWindowFlags_AlwaysHorizontalScrollbar | ImGuiWindowFlags_NavFlattened);
            ImGui::PushItemWidth(-160);
            for (int i = 0; i < ImGuiCol_COUNT; i++)
            {
                const char* name = ImGui::GetStyleColorName(i);
                if (!filter.PassFilter(name))
                    continue;
                ImGui::PushID(i);
                ImGui::ColorEdit4("##color", (float*)&style.Colors[i], ImGuiColorEditFlags_AlphaBar | alpha_flags);
                if (memcmp(&style.Colors[i], &ref->Colors[i], sizeof(ImVec4)) != 0)
                {
                    // Tips: in a real user application, you may want to merge and use an icon font into the main font,
                    // so instead of "Save"/"Revert" you'd use icons!
                    // Read the FAQ and docs/FONTS.md about using icon fonts. It's really easy and super convenient!
                    ImGui::SameLine(0.0f, style.ItemInnerSpacing.x); if (ImGui::Button("Save")) { ref->Colors[i] = style.Colors[i]; }
                    ImGui::SameLine(0.0f, style.ItemInnerSpacing.x); if (ImGui::Button("Revert")) { style.Colors[i] = ref->Colors[i]; }
                }
                ImGui::SameLine(0.0f, style.ItemInnerSpacing.x);
                ImGui::TextUnformatted(name);
                ImGui::PopID();
            }
            ImGui::PopItemWidth();
            ImGui::EndChild();

            ImGui::EndTabItem();
        }

        if (ImGui::BeginTabItem("Fonts"))
        {
            ImGuiIO& io = ImGui::GetIO();
            ImFontAtlas* atlas = io.Fonts;
            HelpMarker("Read FAQ and docs/FONTS.md for details on font loading.");
            ImGui::PushItemWidth(120);
            for (int i = 0; i < atlas->Fonts.Size; i++)
            {
                ImFont* font = atlas->Fonts[i];
                ImGui::PushID(font);
                NodeFont(font);
                ImGui::PopID();
            }
            if (ImGui::TreeNode("Atlas texture", "Atlas texture (%dx%d pixels)", atlas->TexWidth, atlas->TexHeight))
            {
                ImVec4 tint_col = ImVec4(1.0f, 1.0f, 1.0f, 1.0f);
                ImVec4 border_col = ImVec4(1.0f, 1.0f, 1.0f, 0.5f);
                ImGui::Image(atlas->TexID, ImVec2((float)atlas->TexWidth, (float)atlas->TexHeight), ImVec2(0, 0), ImVec2(1, 1), tint_col, border_col);
                ImGui::TreePop();
            }

            // Post-baking font scaling. Note that this is NOT the nice way of scaling fonts, read below.
            // (we enforce hard clamping manually as by default DragFloat/SliderFloat allows CTRL+Click text to get out of bounds).
            const float MIN_SCALE = 0.3f;
            const float MAX_SCALE = 2.0f;
            HelpMarker(
                "Those are old settings provided for convenience.\n"
                "However, the _correct_ way of scaling your UI is currently to reload your font at the designed size, "
                "rebuild the font atlas, and call style.ScaleAllSizes() on a reference ImGuiStyle structure.\n"
                "Using those settings here will give you poor quality results.");
            static float window_scale = 1.0f;
            if (ImGui::DragFloat("window scale", &window_scale, 0.005f, MIN_SCALE, MAX_SCALE, "%.2f", ImGuiSliderFlags_AlwaysClamp)) // Scale only this window
                ImGui::SetWindowFontScale(window_scale);
            ImGui::DragFloat("global scale", &io.FontGlobalScale, 0.005f, MIN_SCALE, MAX_SCALE, "%.2f", ImGuiSliderFlags_AlwaysClamp); // Scale everything
            ImGui::PopItemWidth();

            ImGui::EndTabItem();
        }

        if (ImGui::BeginTabItem("Rendering"))
        {
            ImGui::Checkbox("Anti-aliased lines", &style.AntiAliasedLines);
            ImGui::SameLine();
            HelpMarker("When disabling anti-aliasing lines, you'll probably want to disable borders in your style as well.");

            ImGui::Checkbox("Anti-aliased lines use texture", &style.AntiAliasedLinesUseTex);
            ImGui::SameLine();
            HelpMarker("Faster lines using texture data. Require backend to render with bilinear filtering (not point/nearest filtering).");

            ImGui::Checkbox("Anti-aliased fill", &style.AntiAliasedFill);
            ImGui::PushItemWidth(100);
            ImGui::DragFloat("Curve Tessellation Tolerance", &style.CurveTessellationTol, 0.02f, 0.10f, 10.0f, "%.2f");
            if (style.CurveTessellationTol < 0.10f) style.CurveTessellationTol = 0.10f;

            // When editing the "Circle Segment Max Error" value, draw a preview of its effect on auto-tessellated circles.
            ImGui::DragFloat("Circle Segment Max Error", &style.CircleSegmentMaxError, 0.01f, 0.10f, 10.0f, "%.2f");
            if (ImGui::IsItemActive())
            {
                ImGui::SetNextWindowPos(ImGui::GetCursorScreenPos());
                ImGui::BeginTooltip();
                ImVec2 p = ImGui::GetCursorScreenPos();
                ImDrawList* draw_list = ImGui::GetWindowDrawList();
                float RAD_MIN = 10.0f, RAD_MAX = 80.0f;
                float off_x = 10.0f;
                for (int n = 0; n < 7; n++)
                {
                    const float rad = RAD_MIN + (RAD_MAX - RAD_MIN) * (float)n / (7.0f - 1.0f);
                    draw_list->AddCircle(ImVec2(p.x + off_x + rad, p.y + RAD_MAX), rad, ImGui::GetColorU32(ImGuiCol_Text), 0);
                    off_x += 10.0f + rad * 2.0f;
                }
                ImGui::Dummy(ImVec2(off_x, RAD_MAX * 2.0f));
                ImGui::EndTooltip();
            }
            ImGui::SameLine();
            HelpMarker("When drawing circle primitives with \"num_segments == 0\" tesselation will be calculated automatically.");

            ImGui::DragFloat("Global Alpha", &style.Alpha, 0.005f, 0.20f, 1.0f, "%.2f"); // Not exposing zero here so user doesn't "lose" the UI (zero alpha clips all widgets). But application code could have a toggle to switch between zero and non-zero.
            ImGui::PopItemWidth();

            ImGui::EndTabItem();
        }

        ImGui::EndTabBar();
    }

    ImGui::PopItemWidth();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x160, %rsp            # imm = 0x160
movq %rdi, -0x8(%rbp)
callq 0xc7680
movq %rax, -0x10(%rbp)
cmpb $0x0, 0x11e9c1(%rip)    # 0x213460
jne 0xf4acc
leaq 0x11e9b8(%rip), %rdi    # 0x213460
callq 0xd380
cmpl $0x0, %eax
je 0xf4acc
leaq 0x11e593(%rip), %rdi    # 0x21304c
callq 0xc2740
jmp 0xf4ac0
leaq 0x11e999(%rip), %rdi    # 0x213460
callq 0xd580
testb $0x1, 0x119b11(%rip)    # 0x20e5e4
je 0xf4b10
cmpq $0x0, -0x8(%rbp)
jne 0xf4b10
movq -0x10(%rbp), %rsi
leaq 0x11e565(%rip), %rdi    # 0x21304c
movl $0x414, %edx            # imm = 0x414
callq 0xd0a0
jmp 0xf4b10
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq 0x11e95a(%rip), %rdi    # 0x213460
callq 0xd460
jmp 0xf5e6e
movb $0x0, 0x119acd(%rip)    # 0x20e5e4
cmpq $0x0, -0x8(%rbp)
jne 0xf4b29
leaq 0x11e527(%rip), %rax    # 0x21304c
movq %rax, -0x8(%rbp)
callq 0xda720
movss 0x7d4a2(%rip), %xmm1    # 0x171fd8
mulss %xmm1, %xmm0
callq 0xdcb10
leaq 0x85267(%rip), %rdi     # 0x179dad
callq 0x106c60
testb $0x1, %al
jne 0xf4b51
jmp 0xf4b66
movq -0x10(%rbp), %rsi
leaq 0x11e4f0(%rip), %rdi    # 0x21304c
movl $0x414, %edx            # imm = 0x414
callq 0xd0a0
leaq 0x85251(%rip), %rdi     # 0x179dbe
callq 0x106cf0
movq -0x10(%rbp), %rsi
addq $0x40, %rsi
leaq 0x8524d(%rip), %rdi     # 0x179dce
xorps %xmm0, %xmm0
movss 0x7dc48(%rip), %xmm1    # 0x1727d4
leaq 0x89ab0(%rip), %rdx     # 0x17e643
xorl %ecx, %ecx
callq 0x144910
testb $0x1, %al
jne 0xf4ba0
jmp 0xf4bb2
movq -0x10(%rbp), %rax
movss 0x40(%rax), %xmm0
movq -0x10(%rbp), %rax
movss %xmm0, 0x7c(%rax)
movq -0x10(%rbp), %rax
movss 0x10(%rax), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
seta %al
andb $0x1, %al
movb %al, -0x1d(%rbp)
leaq 0x8520c(%rip), %rdi     # 0x179ddc
leaq -0x1d(%rbp), %rsi
callq 0x13c7c0
testb $0x1, %al
jne 0xf4bdf
jmp 0xf4c22
movb -0x1d(%rbp), %al
movss 0x7c052(%rip), %xmm0    # 0x170c3c
xorps %xmm1, %xmm1
movss %xmm1, -0x124(%rbp)
testb $0x1, %al
movss %xmm0, -0x120(%rbp)
jne 0xf4c11
movss -0x124(%rbp), %xmm0
movss %xmm0, -0x120(%rbp)
movss -0x120(%rbp), %xmm0
movq -0x10(%rbp), %rax
movss %xmm0, 0x10(%rax)
xorps %xmm0, %xmm0
movss 0x7d353(%rip), %xmm1    # 0x171f80
callq 0xdc1c0
movq -0x10(%rbp), %rax
movss 0x44(%rax), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
seta %al
andb $0x1, %al
movb %al, -0x1e(%rbp)
leaq 0x85199(%rip), %rdi     # 0x179de9
leaq -0x1e(%rbp), %rsi
callq 0x13c7c0
testb $0x1, %al
jne 0xf4c5f
jmp 0xf4ca2
movb -0x1e(%rbp), %al
movss 0x7bfd2(%rip), %xmm0    # 0x170c3c
xorps %xmm1, %xmm1
movss %xmm1, -0x12c(%rbp)
testb $0x1, %al
movss %xmm0, -0x128(%rbp)
jne 0xf4c91
movss -0x12c(%rbp), %xmm0
movss %xmm0, -0x128(%rbp)
movss -0x128(%rbp), %xmm0
movq -0x10(%rbp), %rax
movss %xmm0, 0x44(%rax)
xorps %xmm0, %xmm0
movss 0x7d2d3(%rip), %xmm1    # 0x171f80
callq 0xdc1c0
movq -0x10(%rbp), %rax
movss 0x34(%rax), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
seta %al
andb $0x1, %al
movb %al, -0x1f(%rbp)
leaq 0x85125(%rip), %rdi     # 0x179df5
leaq -0x1f(%rbp), %rsi
callq 0x13c7c0
testb $0x1, %al
jne 0xf4cdf
jmp 0xf4d22
movb -0x1f(%rbp), %al
movss 0x7bf52(%rip), %xmm0    # 0x170c3c
xorps %xmm1, %xmm1
movss %xmm1, -0x134(%rbp)
testb $0x1, %al
movss %xmm0, -0x130(%rbp)
jne 0xf4d11
movss -0x134(%rbp), %xmm0
movss %xmm0, -0x130(%rbp)
movss -0x130(%rbp), %xmm0
movq -0x10(%rbp), %rax
movss %xmm0, 0x34(%rax)
leaq -0x28(%rbp), %rdi
xorps %xmm1, %xmm1
movaps %xmm1, %xmm0
callq 0xbf4c0
leaq 0x850c9(%rip), %rdi     # 0x179e01
leaq -0x28(%rbp), %rsi
callq 0x13a930
testb $0x1, %al
jne 0xf4d47
jmp 0xf4d71
movq -0x10(%rbp), %rsi
leaq 0x11e2fa(%rip), %rdi    # 0x21304c
movl $0x414, %edx            # imm = 0x414
callq 0xd0a0
movq -0x8(%rbp), %rdi
leaq 0x11e2e5(%rip), %rsi    # 0x21304c
movl $0x414, %edx            # imm = 0x414
callq 0xd0a0
xorps %xmm0, %xmm0
movss 0x7d204(%rip), %xmm1    # 0x171f80
callq 0xdc1c0
leaq -0x30(%rbp), %rdi
xorps %xmm1, %xmm1
movaps %xmm1, %xmm0
callq 0xbf4c0
leaq 0x85073(%rip), %rdi     # 0x179e0a
leaq -0x30(%rbp), %rsi
callq 0x13a930
testb $0x1, %al
jne 0xf4da6
jmp 0xf4db8
movq -0x8(%rbp), %rsi
movq -0x10(%rbp), %rdi
movl $0x414, %edx            # imm = 0x414
callq 0xd0a0
xorps %xmm0, %xmm0
movss 0x7d1bd(%rip), %xmm1    # 0x171f80
callq 0xdc1c0
leaq 0x85046(%rip), %rdi     # 0x179e15
callq 0xf6290
callq 0x13dec0
leaq 0x850b9(%rip), %rdi     # 0x179e99
xorl %esi, %esi
callq 0x1558c0
testb $0x1, %al
jne 0xf4df0
jmp 0xf5e60
leaq 0x850a9(%rip), %rdi     # 0x179ea0
xorl %eax, %eax
movl %eax, %esi
xorl %edx, %edx
callq 0x1573a0
testb $0x1, %al
jne 0xf4e0b
jmp 0xf5335
leaq 0x85094(%rip), %rdi     # 0x179ea6
movb $0x0, %al
callq 0x139160
movq -0x10(%rbp), %rsi
addq $0x4, %rsi
leaq 0x85083(%rip), %rdi     # 0x179eab
xorps %xmm0, %xmm0
movss 0x7d9a9(%rip), %xmm1    # 0x1727dc
leaq 0x89809(%rip), %rdx     # 0x17e643
xorl %ecx, %ecx
callq 0x144960
movq -0x10(%rbp), %rsi
addq $0x38, %rsi
leaq 0x85069(%rip), %rdi     # 0x179eb9
xorps %xmm0, %xmm0
movss 0x7d981(%rip), %xmm1    # 0x1727dc
leaq 0x897e1(%rip), %rdx     # 0x17e643
xorl %ecx, %ecx
callq 0x144960
movq -0x10(%rbp), %rsi
addq $0x58, %rsi
leaq 0x8504e(%rip), %rdi     # 0x179ec6
xorps %xmm0, %xmm0
movss 0x7d959(%rip), %xmm1    # 0x1727dc
leaq 0x897b9(%rip), %rdx     # 0x17e643
xorl %ecx, %ecx
callq 0x144960
movq -0x10(%rbp), %rsi
addq $0x48, %rsi
leaq 0x85032(%rip), %rdi     # 0x179ed2
xorps %xmm0, %xmm0
movss 0x7d931(%rip), %xmm1    # 0x1727dc
leaq 0x89791(%rip), %rdx     # 0x17e643
xorl %ecx, %ecx
callq 0x144960
movq -0x10(%rbp), %rsi
addq $0x50, %rsi
leaq 0x85016(%rip), %rdi     # 0x179ede
xorps %xmm0, %xmm0
movss 0x7d909(%rip), %xmm1    # 0x1727dc
leaq 0x89769(%rip), %rdx     # 0x17e643
xorl %ecx, %ecx
callq 0x144960
movq -0x10(%rbp), %rsi
addq $0x60, %rsi
leaq 0x84fff(%rip), %rdi     # 0x179eef
xorps %xmm0, %xmm0
movss 0x7d0e1(%rip), %xmm1    # 0x171fdc
leaq 0x89741(%rip), %rdx     # 0x17e643
xorl %ecx, %ecx
callq 0x144960
movq -0x10(%rbp), %rsi
addq $0x68, %rsi
leaq 0x84fe9(%rip), %rdi     # 0x179f01
xorps %xmm0, %xmm0
movss 0x8368d(%rip), %xmm1    # 0x1785b0
leaq 0x89719(%rip), %rdx     # 0x17e643
xorl %ecx, %ecx
callq 0x144910
movq -0x10(%rbp), %rsi
addq $0x70, %rsi
leaq 0x84fcf(%rip), %rdi     # 0x179f0f
movss 0x7bcf4(%rip), %xmm0    # 0x170c3c
movss 0x7d88c(%rip), %xmm1    # 0x1727dc
leaq 0x896ec(%rip), %rdx     # 0x17e643
xorl %ecx, %ecx
callq 0x144910
movq -0x10(%rbp), %rsi
addq $0x78, %rsi
leaq 0x84fb0(%rip), %rdi     # 0x179f1d
movss 0x7bcc7(%rip), %xmm0    # 0x170c3c
movss 0x7d85f(%rip), %xmm1    # 0x1727dc
leaq 0x896bf(%rip), %rdx     # 0x17e643
xorl %ecx, %ecx
callq 0x144910
leaq 0x8a37c(%rip), %rdi     # 0x17f30e
movb $0x0, %al
callq 0x139160
movq -0x10(%rbp), %rsi
addq $0x10, %rsi
leaq 0x84f81(%rip), %rdi     # 0x179f29
xorps %xmm0, %xmm0
movss 0x7bc89(%rip), %xmm1    # 0x170c3c
leaq 0x89689(%rip), %rdx     # 0x17e643
xorl %ecx, %ecx
callq 0x144910
movq -0x10(%rbp), %rsi
addq $0x2c, %rsi
leaq 0x84f6a(%rip), %rdi     # 0x179f3a
xorps %xmm0, %xmm0
movss 0x7bc61(%rip), %xmm1    # 0x170c3c
leaq 0x89661(%rip), %rdx     # 0x17e643
xorl %ecx, %ecx
callq 0x144910
movq -0x10(%rbp), %rsi
addq $0x34, %rsi
leaq 0x84f52(%rip), %rdi     # 0x179f4a
xorps %xmm0, %xmm0
movss 0x7bc39(%rip), %xmm1    # 0x170c3c
leaq 0x89639(%rip), %rdx     # 0x17e643
xorl %ecx, %ecx
callq 0x144910
movq -0x10(%rbp), %rsi
addq $0x44, %rsi
leaq 0x84f3a(%rip), %rdi     # 0x179f5a
xorps %xmm0, %xmm0
movss 0x7bc11(%rip), %xmm1    # 0x170c3c
leaq 0x89611(%rip), %rdx     # 0x17e643
xorl %ecx, %ecx
callq 0x144910
movq -0x10(%rbp), %rsi
addq $0x88, %rsi
leaq 0x84f1f(%rip), %rdi     # 0x179f6a
xorps %xmm0, %xmm0
movss 0x7bbe6(%rip), %xmm1    # 0x170c3c
leaq 0x895e6(%rip), %rdx     # 0x17e643
xorl %ecx, %ecx
callq 0x144910
leaq 0x84f6c(%rip), %rdi     # 0x179fd7
movb $0x0, %al
callq 0x139160
movq -0x10(%rbp), %rsi
addq $0xc, %rsi
leaq 0x84ef7(%rip), %rdi     # 0x179f78
xorps %xmm0, %xmm0
movss 0x7d748(%rip), %xmm1    # 0x1727d4
leaq 0x895b0(%rip), %rdx     # 0x17e643
xorl %ecx, %ecx
callq 0x144910
movq -0x10(%rbp), %rsi
addq $0x28, %rsi
leaq 0x84ede(%rip), %rdi     # 0x179f87
xorps %xmm0, %xmm0
movss 0x7d720(%rip), %xmm1    # 0x1727d4
leaq 0x89588(%rip), %rdx     # 0x17e643
xorl %ecx, %ecx
callq 0x144910
movq -0x10(%rbp), %rsi
addq $0x40, %rsi
leaq 0x84cfd(%rip), %rdi     # 0x179dce
xorps %xmm0, %xmm0
movss 0x7d6f8(%rip), %xmm1    # 0x1727d4
leaq 0x89560(%rip), %rdx     # 0x17e643
xorl %ecx, %ecx
callq 0x144910
movq -0x10(%rbp), %rsi
addq $0x30, %rsi
leaq 0x84e9c(%rip), %rdi     # 0x179f95
xorps %xmm0, %xmm0
movss 0x7d6d0(%rip), %xmm1    # 0x1727d4
leaq 0x89538(%rip), %rdx     # 0x17e643
xorl %ecx, %ecx
callq 0x144910
movq -0x10(%rbp), %rsi
addq $0x74, %rsi
leaq 0x84e82(%rip), %rdi     # 0x179fa3
xorps %xmm0, %xmm0
movss 0x7d6a8(%rip), %xmm1    # 0x1727d4
leaq 0x89510(%rip), %rdx     # 0x17e643
xorl %ecx, %ecx
callq 0x144910
movq -0x10(%rbp), %rsi
addq $0x7c, %rsi
leaq 0x84e6c(%rip), %rdi     # 0x179fb5
xorps %xmm0, %xmm0
movss 0x7d680(%rip), %xmm1    # 0x1727d4
leaq 0x894e8(%rip), %rdx     # 0x17e643
xorl %ecx, %ecx
callq 0x144910
movq -0x10(%rbp), %rsi
addq $0x80, %rsi
leaq 0x84e4e(%rip), %rdi     # 0x179fc2
xorps %xmm0, %xmm0
movss 0x7d655(%rip), %xmm1    # 0x1727d4
leaq 0x894bd(%rip), %rdx     # 0x17e643
xorl %ecx, %ecx
callq 0x144910
movq -0x10(%rbp), %rsi
addq $0x84, %rsi
leaq 0x84e35(%rip), %rdi     # 0x179fd4
xorps %xmm0, %xmm0
movss 0x7d62a(%rip), %xmm1    # 0x1727d4
leaq 0x89492(%rip), %rdx     # 0x17e643
xorl %ecx, %ecx
callq 0x144910
leaq 0x88fbe(%rip), %rdi     # 0x17e17d
movb $0x0, %al
callq 0x139160
movq -0x10(%rbp), %rsi
addq $0x1c, %rsi
leaq 0x84e0b(%rip), %rdi     # 0x179fe0
xorps %xmm0, %xmm0
movss 0x7ba5c(%rip), %xmm1    # 0x170c3c
leaq 0x84a51(%rip), %rdx     # 0x179c38
xorl %ecx, %ecx
callq 0x144960
movq -0x10(%rbp), %rax
movl 0x24(%rax), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
leaq 0x84def(%rip), %rdi     # 0x179ff1
leaq -0x34(%rbp), %rsi
leaq 0x834a3(%rip), %rdx     # 0x1786b0
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
callq 0x13fb50
testb $0x1, %al
jne 0xf521d
jmp 0xf522a
movl -0x34(%rbp), %ecx
subl $0x1, %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x24(%rax)
movq -0x10(%rbp), %rsi
addq $0x90, %rsi
leaq 0x84dce(%rip), %rdi     # 0x17a00a
leaq 0x8347e(%rip), %rdx     # 0x1786c1
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
callq 0x13fb50
movq -0x10(%rbp), %rsi
addq $0x94, %rsi
leaq 0x84dbf(%rip), %rdi     # 0x17a01e
xorps %xmm0, %xmm0
movss 0x7b9d2(%rip), %xmm1    # 0x170c3c
leaq 0x849c7(%rip), %rdx     # 0x179c38
xorl %ecx, %ecx
callq 0x144960
xorps %xmm0, %xmm0
movss 0x7ccfd(%rip), %xmm1    # 0x171f80
callq 0xdc1c0
leaq 0x84d9f(%rip), %rdi     # 0x17a02e
callq 0xf6290
movq -0x10(%rbp), %rsi
addq $0x9c, %rsi
leaq 0x84dc9(%rip), %rdi     # 0x17a06f
xorps %xmm0, %xmm0
movss 0x7b98b(%rip), %xmm1    # 0x170c3c
leaq 0x84980(%rip), %rdx     # 0x179c38
xorl %ecx, %ecx
callq 0x144960
xorps %xmm0, %xmm0
movss 0x7ccb6(%rip), %xmm1    # 0x171f80
callq 0xdc1c0
leaq 0x84dad(%rip), %rdi     # 0x17a083
callq 0xf6290
leaq 0x84de6(%rip), %rdi     # 0x17a0c8
movb $0x0, %al
callq 0x139160
xorps %xmm0, %xmm0
movss 0x7cc8c(%rip), %xmm1    # 0x171f80
callq 0xdc1c0
leaq 0x84dda(%rip), %rdi     # 0x17a0da
callq 0xf6290
movq -0x10(%rbp), %rsi
addq $0xac, %rsi
leaq 0x84e2b(%rip), %rdi     # 0x17a142
xorps %xmm0, %xmm0
movss 0x8328e(%rip), %xmm1    # 0x1785b0
leaq 0x8931a(%rip), %rdx     # 0x17e643
xorl %ecx, %ecx
callq 0x144960
callq 0x158140
leaq 0x84ea9(%rip), %rdi     # 0x17a1e5
xorl %eax, %eax
movl %eax, %esi
xorl %edx, %edx
callq 0x1573a0
testb $0x1, %al
jne 0xf5350
jmp 0xf586b
leaq -0x3c(%rbp), %rdi
xorps %xmm1, %xmm1
movaps %xmm1, %xmm0
callq 0xbf4c0
leaq 0x84df3(%rip), %rdi     # 0x17a159
leaq -0x3c(%rbp), %rsi
callq 0x13a930
testb $0x1, %al
jne 0xf5378
jmp 0xf549b
cmpl $0x0, 0x11e0e9(%rip)    # 0x213468
jne 0xf538d
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0xe0dc0
jmp 0xf5397
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0xe0cc0
leaq 0x84dc2(%rip), %rdi     # 0x17a160
movb $0x0, %al
callq 0xe0a30
movl $0x0, -0x40(%rbp)
cmpl $0x35, -0x40(%rbp)
jge 0xf5496
movq -0x10(%rbp), %rax
addq $0xc4, %rax
movslq -0x40(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq %rax, -0x48(%rbp)
movl -0x40(%rbp), %edi
callq 0xc7cf0
movq %rax, -0x50(%rbp)
testb $0x1, 0x119203(%rip)    # 0x20e5e5
je 0xf541c
movq -0x48(%rbp), %rax
movq -0x8(%rbp), %rcx
addq $0xc4, %rcx
movslq -0x40(%rbp), %rdx
shlq $0x4, %rdx
addq %rdx, %rcx
movups (%rcx), %xmm1
movups (%rax), %xmm0
pcmpeqb %xmm1, %xmm0
pmovmskb %xmm0, %eax
subl $0xffff, %eax           # imm = 0xFFFF
setne %al
movzbl %al, %eax
cmpl $0x0, %eax
je 0xf5486
movq -0x50(%rbp), %rax
movq %rax, -0x140(%rbp)
movq -0x50(%rbp), %rdi
callq 0xd410
movq -0x140(%rbp), %rsi
movl $0x17, %edx
subl %eax, %edx
movq -0x48(%rbp), %rax
movss (%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movq -0x48(%rbp), %rax
movss 0x4(%rax), %xmm1
cvtss2sd %xmm1, %xmm1
movq -0x48(%rbp), %rax
movss 0x8(%rax), %xmm2
cvtss2sd %xmm2, %xmm2
movq -0x48(%rbp), %rax
movss 0xc(%rax), %xmm3
cvtss2sd %xmm3, %xmm3
leaq 0x84d14(%rip), %rdi     # 0x17a18c
leaq 0x7ca8a(%rip), %rcx     # 0x171f09
movb $0x4, %al
callq 0xe0a30
jmp 0xf5488
movl -0x40(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x40(%rbp)
jmp 0xf53ac
callq 0xd98d0
xorps %xmm0, %xmm0
movss 0x7cada(%rip), %xmm1    # 0x171f80
callq 0xdc1c0
movss 0x7d2c1(%rip), %xmm0    # 0x172774
callq 0xc6860
leaq 0x84d0a(%rip), %rdi     # 0x17a1c9
leaq 0x11dfa2(%rip), %rsi    # 0x213468
leaq 0x83200(%rip), %rdx     # 0x1786cd
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
callq 0x13fb50
xorps %xmm0, %xmm0
movss 0x7ca9e(%rip), %xmm1    # 0x171f80
callq 0xdc1c0
leaq 0x84ce9(%rip), %rdi     # 0x17a1d7
leaq 0x1190f0(%rip), %rsi    # 0x20e5e5
callq 0x13c7c0
cmpb $0x0, 0x11e087(%rip)    # 0x213588
jne 0xf554f
leaq 0x11e07e(%rip), %rdi    # 0x213588
callq 0xd380
cmpl $0x0, %eax
je 0xf554f
leaq 0x11df55(%rip), %rdi    # 0x213470
leaq 0x7c9e7(%rip), %rsi     # 0x171f09
callq 0xc65d0
jmp 0xf5529
leaq 0x13a90(%rip), %rdi     # 0x108fc0
leaq 0x11df39(%rip), %rsi    # 0x213470
leaq 0x11907a(%rip), %rdx    # 0x20e5b8
callq 0xd820
leaq 0x11e03e(%rip), %rdi    # 0x213588
callq 0xd580
callq 0xdae90
movss 0x7d234(%rip), %xmm1    # 0x172790
mulss %xmm1, %xmm0
leaq 0x11df09(%rip), %rdi    # 0x213470
leaq 0x84c7e(%rip), %rsi     # 0x17a1ec
callq 0xc67e0
cmpl $0x0, 0x11e016(%rip)    # 0x213590
sete %al
movzbl %al, %esi
andl $0x1, %esi
leaq 0x84c70(%rip), %rdi     # 0x17a1fa
callq 0x13cdf0
testb $0x1, %al
jne 0xf5595
jmp 0xf55be
movl $0x0, 0x11dff1(%rip)    # 0x213590
jmp 0xf55be
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq 0x11dfd4(%rip), %rdi    # 0x213588
callq 0xd460
jmp 0xf5e6e
xorps %xmm0, %xmm0
movss 0x7c9b7(%rip), %xmm1    # 0x171f80
callq 0xdc1c0
cmpl $0x20000, 0x11dfb8(%rip) # imm = 0x20000
sete %al
movzbl %al, %esi
andl $0x1, %esi
leaq 0x86d95(%rip), %rdi     # 0x17c37d
callq 0x13cdf0
testb $0x1, %al
jne 0xf55f3
jmp 0xf55fd
movl $0x20000, 0x11df93(%rip) # imm = 0x20000
xorps %xmm0, %xmm0
movss 0x7c978(%rip), %xmm1    # 0x171f80
callq 0xdc1c0
cmpl $0x40000, 0x11df79(%rip) # imm = 0x40000
sete %al
movzbl %al, %esi
andl $0x1, %esi
leaq 0x84bda(%rip), %rdi     # 0x17a201
callq 0x13cdf0
testb $0x1, %al
jne 0xf5632
jmp 0xf563c
movl $0x40000, 0x11df54(%rip) # imm = 0x40000
xorps %xmm0, %xmm0
movss 0x7c939(%rip), %xmm1    # 0x171f80
callq 0xdc1c0
leaq 0x84bb3(%rip), %rdi     # 0x17a206
callq 0xf6290
leaq -0x58(%rbp), %rdi
xorps %xmm1, %xmm1
movaps %xmm1, %xmm0
callq 0xbf4c0
leaq 0x84c03(%rip), %rdi     # 0x17a271
leaq -0x58(%rbp), %rsi
movl $0x1, %edx
movl $0x80c000, %ecx         # imm = 0x80C000
callq 0xd5cc0
movss 0x82f2b(%rip), %xmm0    # 0x1785b4
callq 0xdcb10
movl $0x0, -0x5c(%rbp)
cmpl $0x35, -0x5c(%rbp)
jge 0xf585c
movl -0x5c(%rbp), %edi
callq 0xc7cf0
movq %rax, -0x68(%rbp)
movq -0x68(%rbp), %rsi
leaq 0x11ddba(%rip), %rdi    # 0x213470
xorl %eax, %eax
movl %eax, %edx
callq 0xc69a0
testb $0x1, %al
jne 0xf56c8
jmp 0xf584e
movl -0x5c(%rbp), %edi
callq 0xdb550
movq -0x10(%rbp), %rsi
addq $0xc4, %rsi
movslq -0x5c(%rbp), %rax
shlq $0x4, %rax
addq %rax, %rsi
movl 0x11dea4(%rip), %edx    # 0x213590
orl $0x10000, %edx          # imm = 0x10000
leaq 0x84b81(%rip), %rdi     # 0x17a27a
callq 0x14bea0
movq -0x10(%rbp), %rax
addq $0xc4, %rax
movslq -0x5c(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq -0x8(%rbp), %rcx
addq $0xc4, %rcx
movslq -0x5c(%rbp), %rdx
shlq $0x4, %rdx
addq %rdx, %rcx
movups (%rcx), %xmm1
movups (%rax), %xmm0
pcmpeqb %xmm1, %xmm0
pmovmskb %xmm0, %eax
subl $0xffff, %eax           # imm = 0xFFFF
setne %al
movzbl %al, %eax
cmpl $0x0, %eax
je 0xf582b
movq -0x10(%rbp), %rax
movss 0x50(%rax), %xmm1
xorps %xmm0, %xmm0
callq 0xdc1c0
leaq -0x70(%rbp), %rdi
xorps %xmm1, %xmm1
movaps %xmm1, %xmm0
callq 0xbf4c0
leaq 0x84b10(%rip), %rdi     # 0x17a282
leaq -0x70(%rbp), %rsi
callq 0x13a930
testb $0x1, %al
jne 0xf5781
jmp 0xf57ba
movq -0x10(%rbp), %rcx
addq $0xc4, %rcx
movslq -0x5c(%rbp), %rax
shlq $0x4, %rax
addq %rax, %rcx
movq -0x8(%rbp), %rax
addq $0xc4, %rax
movslq -0x5c(%rbp), %rdx
shlq $0x4, %rdx
addq %rdx, %rax
movq (%rcx), %rdx
movq %rdx, (%rax)
movq 0x8(%rcx), %rcx
movq %rcx, 0x8(%rax)
movq -0x10(%rbp), %rax
movss 0x50(%rax), %xmm1
xorps %xmm0, %xmm0
callq 0xdc1c0
leaq -0x78(%rbp), %rdi
xorps %xmm1, %xmm1
movaps %xmm1, %xmm0
callq 0xbf4c0
leaq 0x84aa6(%rip), %rdi     # 0x17a287
leaq -0x78(%rbp), %rsi
callq 0x13a930
testb $0x1, %al
jne 0xf57f0
jmp 0xf5829
movq -0x8(%rbp), %rcx
addq $0xc4, %rcx
movslq -0x5c(%rbp), %rax
shlq $0x4, %rax
addq %rax, %rcx
movq -0x10(%rbp), %rax
addq $0xc4, %rax
movslq -0x5c(%rbp), %rdx
shlq $0x4, %rdx
addq %rdx, %rax
movq (%rcx), %rdx
movq %rdx, (%rax)
movq 0x8(%rcx), %rcx
movq %rcx, 0x8(%rax)
jmp 0xf582b
movq -0x10(%rbp), %rax
movss 0x50(%rax), %xmm1
xorps %xmm0, %xmm0
callq 0xdc1c0
movq -0x68(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x139130
callq 0xdb640
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0xf5695
callq 0xdcd30
callq 0xd5d90
callq 0x158140
leaq 0x84a1c(%rip), %rdi     # 0x17a28e
xorl %eax, %eax
movl %eax, %esi
xorl %edx, %edx
callq 0x1573a0
testb $0x1, %al
jne 0xf5886
jmp 0xf5ae3
callq 0xcb1a0
movq %rax, -0x80(%rbp)
movq -0x80(%rbp), %rax
movq 0xa0(%rax), %rax
movq %rax, -0x88(%rbp)
leaq 0x849ec(%rip), %rdi     # 0x17a294
callq 0xf6290
movss 0x7cebf(%rip), %xmm0    # 0x172774
callq 0xdcb10
movl $0x0, -0x8c(%rbp)
movl -0x8c(%rbp), %eax
movq -0x88(%rbp), %rcx
cmpl 0x40(%rcx), %eax
jge 0xf5924
movq -0x88(%rbp), %rdi
addq $0x40, %rdi
movl -0x8c(%rbp), %esi
callq 0xede60
movq (%rax), %rax
movq %rax, -0x98(%rbp)
movq -0x98(%rbp), %rdi
callq 0xdb500
movq -0x98(%rbp), %rdi
callq 0x106e10
callq 0xdb640
movl -0x8c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x8c(%rbp)
jmp 0xf58c4
movq -0x88(%rbp), %rax
movl 0x28(%rax), %edx
movq -0x88(%rbp), %rax
movl 0x2c(%rax), %ecx
leaq 0x8498d(%rip), %rdi     # 0x17a2cc
leaq 0x84994(%rip), %rsi     # 0x17a2da
movb $0x0, %al
callq 0x150dd0
testb $0x1, %al
jne 0xf5956
jmp 0xf5a28
leaq -0xa8(%rbp), %rdi
movss 0x7b2d7(%rip), %xmm3    # 0x170c3c
movaps %xmm3, %xmm0
movaps %xmm3, %xmm1
movaps %xmm3, %xmm2
callq 0xbf4f0
leaq -0xb8(%rbp), %rdi
movss 0x7b2ba(%rip), %xmm2    # 0x170c3c
movss 0x7c64e(%rip), %xmm3    # 0x171fd8
movaps %xmm2, %xmm0
movaps %xmm2, %xmm1
callq 0xbf4f0
movq -0x88(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x148(%rbp)
movq -0x88(%rbp), %rax
cvtsi2ssl 0x28(%rax), %xmm0
movq -0x88(%rbp), %rax
cvtsi2ssl 0x2c(%rax), %xmm1
leaq -0xc0(%rbp), %rdi
callq 0xbf4c0
leaq -0xc8(%rbp), %rdi
xorps %xmm1, %xmm1
movaps %xmm1, %xmm0
callq 0xbf4c0
leaq -0xd0(%rbp), %rdi
movss 0x7b250(%rip), %xmm1    # 0x170c3c
movaps %xmm1, %xmm0
callq 0xbf4c0
movq -0x148(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
leaq -0xc8(%rbp), %rdx
leaq -0xd0(%rbp), %rcx
leaq -0xa8(%rbp), %r8
leaq -0xb8(%rbp), %r9
callq 0x13c0c0
callq 0x1523d0
movss 0x7cd1c(%rip), %xmm0    # 0x17274c
movss %xmm0, -0xd4(%rbp)
movss 0x7c58c(%rip), %xmm0    # 0x171fcc
movss %xmm0, -0xd8(%rbp)
leaq 0x848a8(%rip), %rdi     # 0x17a2f7
callq 0xf6290
leaq 0x849cc(%rip), %rdi     # 0x17a427
leaq 0x118b86(%rip), %rsi    # 0x20e5e8
movss 0x82b4e(%rip), %xmm0    # 0x1785b8
movss 0x7ccda(%rip), %xmm1    # 0x17274c
movss 0x7c552(%rip), %xmm2    # 0x171fcc
leaq 0x841b7(%rip), %rdx     # 0x179c38
movl $0x10, %ecx
callq 0x142f00
testb $0x1, %al
jne 0xf5a91
jmp 0xf5a9e
movss 0x118b4f(%rip), %xmm0   # 0x20e5e8
callq 0xdaed0
movq -0x80(%rbp), %rsi
addq $0xa8, %rsi
leaq 0x84984(%rip), %rdi     # 0x17a434
movss 0x82b00(%rip), %xmm0    # 0x1785b8
movss 0x7cc8c(%rip), %xmm1    # 0x17274c
movss 0x7c504(%rip), %xmm2    # 0x171fcc
leaq 0x84169(%rip), %rdx     # 0x179c38
movl $0x10, %ecx
callq 0x142f00
callq 0xdcd30
callq 0x158140
leaq 0x84957(%rip), %rdi     # 0x17a441
xorl %eax, %eax
movl %eax, %esi
xorl %edx, %edx
callq 0x1573a0
testb $0x1, %al
jne 0xf5afe
jmp 0xf5e5b
movq -0x10(%rbp), %rsi
addq $0xb8, %rsi
leaq 0x8493b(%rip), %rdi     # 0x17a44b
callq 0x13c7c0
xorps %xmm0, %xmm0
movss 0x7c460(%rip), %xmm1    # 0x171f80
callq 0xdc1c0
leaq 0x84932(%rip), %rdi     # 0x17a45e
callq 0xf6290
movq -0x10(%rbp), %rsi
addq $0xb9, %rsi
leaq 0x8497e(%rip), %rdi     # 0x17a4c1
callq 0x13c7c0
xorps %xmm0, %xmm0
movss 0x7c42d(%rip), %xmm1    # 0x171f80
callq 0xdc1c0
leaq 0x84981(%rip), %rdi     # 0x17a4e0
callq 0xf6290
movq -0x10(%rbp), %rsi
addq $0xba, %rsi
leaq 0x849dc(%rip), %rdi     # 0x17a552
callq 0x13c7c0
movss 0x7cbf5(%rip), %xmm0    # 0x172778
callq 0xdcb10
movq -0x10(%rbp), %rsi
addq $0xbc, %rsi
leaq 0x849ca(%rip), %rdi     # 0x17a564
movss 0x82a1a(%rip), %xmm0    # 0x1785bc
movss 0x7cbd2(%rip), %xmm1    # 0x17277c
movss 0x7c42a(%rip), %xmm2    # 0x171fdc
leaq 0x8407f(%rip), %rdx     # 0x179c38
xorl %ecx, %ecx
callq 0x142f00
movq -0x10(%rbp), %rax
movss 0x7cbb0(%rip), %xmm0    # 0x17277c
ucomiss 0xbc(%rax), %xmm0
jbe 0xf5be9
movq -0x10(%rbp), %rax
movss 0x7cb9b(%rip), %xmm0    # 0x17277c
movss %xmm0, 0xbc(%rax)
movq -0x10(%rbp), %rsi
addq $0xc0, %rsi
leaq 0x84986(%rip), %rdi     # 0x17a581
movss 0x829bd(%rip), %xmm0    # 0x1785c0
movss 0x7cb71(%rip), %xmm1    # 0x17277c
movss 0x7c3c9(%rip), %xmm2    # 0x171fdc
leaq 0x8401e(%rip), %rdx     # 0x179c38
xorl %ecx, %ecx
callq 0x142f00
callq 0xd53c0
testb $0x1, %al
jne 0xf5c2f
jmp 0xf5e04
callq 0xdc6c0
movlpd %xmm0, -0xe0(%rbp)
leaq -0xe8(%rbp), %rdi
movq %rdi, -0x150(%rbp)
xorps %xmm1, %xmm1
movaps %xmm1, %xmm0
callq 0xbf4c0
movq -0x150(%rbp), %rdx
leaq -0xe0(%rbp), %rdi
xorl %esi, %esi
callq 0xdab40
callq 0xddb50
callq 0xdc6c0
movlpd %xmm0, -0xf0(%rbp)
callq 0xdae40
movq %rax, -0xf8(%rbp)
movss 0x7c34c(%rip), %xmm0    # 0x171fdc
movss %xmm0, -0xfc(%rbp)
movss 0x7cb30(%rip), %xmm0    # 0x1727d0
movss %xmm0, -0x100(%rbp)
movss 0x7c32c(%rip), %xmm0    # 0x171fdc
movss %xmm0, -0x104(%rbp)
movl $0x0, -0x108(%rbp)
cmpl $0x7, -0x108(%rbp)
jge 0xf5dcf
movss -0xfc(%rbp), %xmm0
movss -0x100(%rbp), %xmm1
subss -0xfc(%rbp), %xmm1
cvtsi2ssl -0x108(%rbp), %xmm2
mulss %xmm2, %xmm1
movss 0x7c2e5(%rip), %xmm2    # 0x171fe0
divss %xmm2, %xmm1
addss %xmm1, %xmm0
movss %xmm0, -0x10c(%rbp)
movq -0xf8(%rbp), %rax
movq %rax, -0x160(%rbp)
movss -0xf0(%rbp), %xmm0
addss -0x104(%rbp), %xmm0
addss -0x10c(%rbp), %xmm0
movss -0xec(%rbp), %xmm1
addss -0x100(%rbp), %xmm1
leaq -0x114(%rbp), %rdi
callq 0xbf4c0
movss -0x10c(%rbp), %xmm0
movss %xmm0, -0x154(%rbp)
xorl %edi, %edi
movss 0x7aed5(%rip), %xmm0    # 0x170c3c
callq 0xc76e0
movq -0x160(%rbp), %rdi
movss -0x154(%rbp), %xmm0
movl %eax, %edx
leaq -0x114(%rbp), %rsi
xorl %ecx, %ecx
movss 0x7aeae(%rip), %xmm1    # 0x170c3c
callq 0x113490
movss -0x10c(%rbp), %xmm0
addss %xmm0, %xmm0
movss 0x7c235(%rip), %xmm1    # 0x171fdc
addss %xmm1, %xmm0
addss -0x104(%rbp), %xmm0
movss %xmm0, -0x104(%rbp)
movl -0x108(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x108(%rbp)
jmp 0xf5cc2
movss -0x104(%rbp), %xmm0
movss 0x7c1ed(%rip), %xmm1    # 0x171fcc
mulss -0x100(%rbp), %xmm1
leaq -0x11c(%rbp), %rdi
callq 0xbf4c0
leaq -0x11c(%rbp), %rdi
callq 0x13d8d0
callq 0xddce0
xorps %xmm0, %xmm0
movss 0x7c171(%rip), %xmm1    # 0x171f80
callq 0xdc1c0
leaq 0x8477f(%rip), %rdi     # 0x17a59a
callq 0xf6290
movq -0x10(%rbp), %rsi
leaq 0x847d5(%rip), %rdi     # 0x17a600
movss 0x82785(%rip), %xmm0    # 0x1785b8
movss 0x7c195(%rip), %xmm1    # 0x171fd0
movss 0x7adf9(%rip), %xmm2    # 0x170c3c
leaq 0x83dee(%rip), %rdx     # 0x179c38
xorl %ecx, %ecx
callq 0x142f00
callq 0xdcd30
callq 0x158140
callq 0x155dd0
callq 0xdcd30
addq $0x160, %rsp            # imm = 0x160
popq %rbp
retq
movq -0x18(%rbp), %rdi
callq 0xd620
nopw (%rax,%rax)