// File: /workspace/github_cpp_makefile_star2_O1/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
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xb8, %rsp
movq %rdi, %rbx
callq 0x44587
movq %rax, %r13
movb 0x98b22(%rip), %al      # 0xfe120
testb %al, %al
movq %r13, -0x40(%rbp)
je 0x669e5
testq %rbx, %rbx
jne 0x6562c
testb $0x1, 0x98b12(%rip)     # 0xfe128
jne 0x6562c
leaq 0x986ed(%rip), %rdi     # 0xfdd0c
movl $0x414, %edx            # imm = 0x414
movq %r13, %rsi
callq 0xc080
testq %rbx, %rbx
movb $0x1, 0x98af2(%rip)     # 0xfe128
leaq 0x986cf(%rip), %r14     # 0xfdd0c
cmovneq %rbx, %r14
callq 0x553cd
mulss 0x519b6(%rip), %xmm0    # 0xb7004
callq 0x56dd7
leaq 0x5920e(%rip), %rdi     # 0xbe868
callq 0x7313a
testb %al, %al
je 0x65677
leaq 0x986a2(%rip), %rdi     # 0xfdd0c
movl $0x414, %edx            # imm = 0x414
movq %r13, %rsi
callq 0xc080
leaq 0x591fb(%rip), %rdi     # 0xbe879
callq 0x73194
leaq 0x40(%r13), %rsi
leaq 0x591fb(%rip), %rdi     # 0xbe889
leaq 0x5d9b1(%rip), %rdx     # 0xc3046
movss 0x52267(%rip), %xmm1    # 0xb7904
xorps %xmm0, %xmm0
movq %rsi, -0x48(%rbp)
xorl %ecx, %ecx
callq 0x99114
testb %al, %al
je 0x656bb
movss 0x40(%r13), %xmm0
movss %xmm0, 0x7c(%r13)
leaq 0x10(%r13), %r15
movss 0x10(%r13), %xmm0
ucomiss 0x52178(%rip), %xmm0    # 0xb7844
leaq -0x38(%rbp), %rsi
seta (%rsi)
leaq 0x591bd(%rip), %rdi     # 0xbe897
callq 0x9450c
testb %al, %al
je 0x656fb
cmpb $0x0, -0x38(%rbp)
jne 0x656ee
xorps %xmm0, %xmm0
jmp 0x656f6
movss 0x518ee(%rip), %xmm0    # 0xb6fe4
movss %xmm0, (%r15)
movss 0x518cd(%rip), %xmm1    # 0xb6fd0
xorps %xmm0, %xmm0
callq 0x569e1
leaq 0x44(%r13), %rbx
movss 0x44(%r13), %xmm0
ucomiss 0x52128(%rip), %xmm0    # 0xb7844
leaq -0x38(%rbp), %rsi
seta (%rsi)
leaq 0x5917a(%rip), %rdi     # 0xbe8a4
callq 0x9450c
testb %al, %al
je 0x6574a
cmpb $0x0, -0x38(%rbp)
jne 0x6573e
xorps %xmm0, %xmm0
jmp 0x65746
movss 0x5189e(%rip), %xmm0    # 0xb6fe4
movss %xmm0, (%rbx)
movss 0x5187e(%rip), %xmm1    # 0xb6fd0
xorps %xmm0, %xmm0
callq 0x569e1
movq %r13, %rax
addq $0x34, %r13
movss 0x34(%rax), %xmm0
ucomiss 0x520d7(%rip), %xmm0    # 0xb7844
leaq -0x38(%rbp), %rsi
seta (%rsi)
leaq 0x59135(%rip), %rdi     # 0xbe8b0
callq 0x9450c
testb %al, %al
je 0x6579d
cmpb $0x0, -0x38(%rbp)
jne 0x6578f
xorps %xmm0, %xmm0
jmp 0x65797
movss 0x5184d(%rip), %xmm0    # 0xb6fe4
movss %xmm0, (%r13)
leaq -0x38(%rbp), %rsi
movq $0x0, (%rsi)
leaq 0x5910d(%rip), %rdi     # 0xbe8bc
callq 0x93128
testb %al, %al
je 0x657f2
leaq 0x9854d(%rip), %rdi     # 0xfdd0c
movl $0x414, %edx            # imm = 0x414
movq %r13, %r12
movq %r15, %r13
movq %rbx, %r15
movq -0x40(%rbp), %rbx
movq %rbx, %rsi
callq 0xc080
movl $0x414, %edx            # imm = 0x414
movq %r14, %rdi
movq %rbx, %rsi
movq %r15, %rbx
movq %r13, %r15
movq %r12, %r13
callq 0xc130
movss 0x517d6(%rip), %xmm1    # 0xb6fd0
xorps %xmm0, %xmm0
callq 0x569e1
leaq -0x38(%rbp), %rsi
movq $0x0, (%rsi)
leaq 0x590b1(%rip), %rdi     # 0xbe8c5
callq 0x93128
testb %al, %al
je 0x6582e
movl $0x414, %edx            # imm = 0x414
movq -0x40(%rbp), %rdi
movq %r14, %rsi
callq 0xc080
movd 0x5179a(%rip), %xmm1    # 0xb6fd0
xorps %xmm0, %xmm0
callq 0x569e1
leaq 0x5908b(%rip), %rdi     # 0xbe8d0
callq 0x66e36
callq 0x9552a
leaq 0x590fe(%rip), %rdi     # 0xbe954
xorl %esi, %esi
callq 0xa54aa
testb %al, %al
je 0x669ce
leaq 0x590ef(%rip), %rdi     # 0xbe95b
xorl %esi, %esi
xorl %edx, %edx
callq 0xa6d87
testb %al, %al
je 0x65cfd
leaq 0x590dd(%rip), %rdi     # 0xbe961
xorl %eax, %eax
callq 0x92024
movq -0x40(%rbp), %r12
leaq 0x4(%r12), %rsi
leaq 0x590cb(%rip), %rdi     # 0xbe966
movq %rbx, -0x50(%rbp)
leaq 0x5d7a0(%rip), %rbx     # 0xc3046
movss 0x5205a(%rip), %xmm1    # 0xb7908
xorps %xmm0, %xmm0
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x99149
leaq 0x38(%r12), %rsi
leaq 0x590ad(%rip), %rdi     # 0xbe974
xorps %xmm0, %xmm0
movss 0x52036(%rip), %xmm1    # 0xb7908
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x99149
leaq 0x58(%r12), %rsi
leaq 0x59099(%rip), %rdi     # 0xbe981
xorps %xmm0, %xmm0
movss 0x52015(%rip), %xmm1    # 0xb7908
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x99149
leaq 0x48(%r12), %rsi
leaq 0x59084(%rip), %rdi     # 0xbe98d
xorps %xmm0, %xmm0
movss 0x51ff4(%rip), %xmm1    # 0xb7908
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x99149
leaq 0x50(%r12), %rsi
leaq 0x5906f(%rip), %rdi     # 0xbe999
xorps %xmm0, %xmm0
movss 0x51fd3(%rip), %xmm1    # 0xb7908
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x99149
leaq 0x60(%r12), %rsi
leaq 0x5905f(%rip), %rdi     # 0xbe9aa
movss 0x516b5(%rip), %xmm1    # 0xb7008
xorps %xmm0, %xmm0
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x99149
leaq 0x68(%r12), %rsi
leaq 0x59050(%rip), %rdi     # 0xbe9bc
movss 0x57590(%rip), %xmm1    # 0xbcf04
xorps %xmm0, %xmm0
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x99114
leaq 0x70(%r12), %rsi
leaq 0x5903d(%rip), %rdi     # 0xbe9ca
movss 0x5164f(%rip), %xmm0    # 0xb6fe4
movss 0x51f6b(%rip), %xmm1    # 0xb7908
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x99114
leaq 0x78(%r12), %rsi
leaq 0x59025(%rip), %rdi     # 0xbe9d8
movss 0x51629(%rip), %xmm0    # 0xb6fe4
movss 0x51f45(%rip), %xmm1    # 0xb7908
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x99114
leaq 0x5e33d(%rip), %rdi     # 0xc3d11
xorl %eax, %eax
callq 0x92024
leaq 0x59002(%rip), %rdi     # 0xbe9e4
xorps %xmm0, %xmm0
movq %r15, %rsi
movss 0x515f4(%rip), %xmm1    # 0xb6fe4
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x99114
leaq 0x2c(%r12), %rsi
leaq 0x58fef(%rip), %rdi     # 0xbe9f5
xorps %xmm0, %xmm0
movss 0x515d3(%rip), %xmm1    # 0xb6fe4
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x99114
leaq 0x58fe3(%rip), %rdi     # 0xbea05
xorps %xmm0, %xmm0
movq %r13, %rsi
movss 0x515b4(%rip), %xmm1    # 0xb6fe4
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x99114
leaq 0x58fd4(%rip), %rdi     # 0xbea15
xorps %xmm0, %xmm0
movq -0x50(%rbp), %rsi
movss 0x51594(%rip), %xmm1    # 0xb6fe4
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x99114
leaq 0x88(%r12), %rsi
leaq 0x58fbc(%rip), %rdi     # 0xbea25
xorps %xmm0, %xmm0
movss 0x51570(%rip), %xmm1    # 0xb6fe4
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x99114
leaq 0x5900d(%rip), %rdi     # 0xbea92
xorl %eax, %eax
callq 0x92024
leaq 0xc(%r12), %rsi
leaq 0x58f9b(%rip), %rdi     # 0xbea33
movss 0x51e64(%rip), %xmm1    # 0xb7904
xorps %xmm0, %xmm0
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x99114
leaq 0x28(%r12), %rsi
leaq 0x58f89(%rip), %rdi     # 0xbea42
xorps %xmm0, %xmm0
movss 0x51e40(%rip), %xmm1    # 0xb7904
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x99114
leaq 0x58db4(%rip), %rdi     # 0xbe889
xorps %xmm0, %xmm0
movq -0x48(%rbp), %rsi
movss 0x51e20(%rip), %xmm1    # 0xb7904
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x99114
leaq 0x30(%r12), %rsi
leaq 0x58f56(%rip), %rdi     # 0xbea50
xorps %xmm0, %xmm0
movss 0x51dff(%rip), %xmm1    # 0xb7904
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x99114
leaq 0x74(%r12), %rsi
leaq 0x58f43(%rip), %rdi     # 0xbea5e
xorps %xmm0, %xmm0
movss 0x51dde(%rip), %xmm1    # 0xb7904
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x99114
leaq 0x7c(%r12), %rsi
leaq 0x58f34(%rip), %rdi     # 0xbea70
xorps %xmm0, %xmm0
movss 0x51dbd(%rip), %xmm1    # 0xb7904
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x99114
leaq 0x80(%r12), %rsi
leaq 0x58f1d(%rip), %rdi     # 0xbea7d
xorps %xmm0, %xmm0
movss 0x51d99(%rip), %xmm1    # 0xb7904
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x99114
leaq 0x84(%r12), %rsi
leaq 0x58f0b(%rip), %rdi     # 0xbea8f
xorps %xmm0, %xmm0
movss 0x51d75(%rip), %xmm1    # 0xb7904
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x99114
leaq 0x5cfe0(%rip), %rdi     # 0xc2b80
xorl %eax, %eax
callq 0x92024
leaq 0x1c(%r12), %rsi
leaq 0x58ee8(%rip), %rdi     # 0xbea9b
leaq 0x58b39(%rip), %rdx     # 0xbe6f3
xorps %xmm0, %xmm0
movss 0x5141f(%rip), %xmm1    # 0xb6fe4
xorl %ecx, %ecx
callq 0x99149
movl 0x24(%r12), %eax
incl %eax
leaq -0x38(%rbp), %rsi
movl %eax, (%rsi)
leaq 0x58ecc(%rip), %rdi     # 0xbeaac
leaq 0x57549(%rip), %rdx     # 0xbd130
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
callq 0x967e7
testb %al, %al
je 0x65bff
movl -0x38(%rbp), %eax
decl %eax
movl %eax, 0x24(%r12)
leaq 0x90(%r12), %rsi
leaq 0x58eb7(%rip), %rdi     # 0xbeac5
leaq 0x5752c(%rip), %rdx     # 0xbd141
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
callq 0x967e7
leaq 0x94(%r12), %rsi
leaq 0x58eab(%rip), %rdi     # 0xbead9
leaq 0x58abe(%rip), %rbx     # 0xbe6f3
movss 0x513a7(%rip), %xmm1    # 0xb6fe4
xorps %xmm0, %xmm0
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x99149
movss 0x5137e(%rip), %xmm1    # 0xb6fd0
xorps %xmm0, %xmm0
callq 0x569e1
leaq 0x58e88(%rip), %rdi     # 0xbeae9
callq 0x66e36
leaq 0x9c(%r12), %rsi
leaq 0x58eb5(%rip), %rdi     # 0xbeb2a
xorps %xmm0, %xmm0
movss 0x51364(%rip), %xmm1    # 0xb6fe4
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x99149
xorps %xmm0, %xmm0
movss 0x5133b(%rip), %xmm1    # 0xb6fd0
callq 0x569e1
leaq 0x58e9d(%rip), %rdi     # 0xbeb3e
callq 0x66e36
leaq 0x58ed6(%rip), %rdi     # 0xbeb83
xorl %eax, %eax
callq 0x92024
xorps %xmm0, %xmm0
movss 0x51311(%rip), %xmm1    # 0xb6fd0
callq 0x569e1
leaq 0x58eca(%rip), %rdi     # 0xbeb95
callq 0x66e36
leaq 0xac(%r12), %rsi
leaq 0x58f1e(%rip), %rdi     # 0xbebfd
leaq 0x5d360(%rip), %rdx     # 0xc3046
movd 0x57216(%rip), %xmm1    # 0xbcf04
xorps %xmm0, %xmm0
xorl %ecx, %ecx
callq 0x99149
callq 0xa780e
leaq 0x58f9c(%rip), %rdi     # 0xbeca0
xorl %esi, %esi
xorl %edx, %edx
callq 0xa6d87
testb %al, %al
je 0x660a6
leaq -0x38(%rbp), %rsi
movq $0x0, (%rsi)
leaq 0x58eed(%rip), %rdi     # 0xbec14
callq 0x93128
testb %al, %al
je 0x65e08
cmpl $0x0, 0x983f1(%rip)     # 0xfe12c
je 0x65d49
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x5a0ea
jmp 0x65d53
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x5a1ab
movq -0x40(%rbp), %r12
leaq 0x58ebd(%rip), %rdi     # 0xbec1b
xorl %ebx, %ebx
xorl %eax, %eax
callq 0x59e5b
movl $0xc4, %r15d
addq %r15, %r12
addq %r14, %r15
movl %ebx, %edi
callq 0x44e52
movq %rax, %r13
cmpb $0x1, 0x937a0(%rip)     # 0xf9524
jne 0x65da0
movdqu (%r12), %xmm0
movdqu (%r15), %xmm1
pcmpeqb %xmm0, %xmm1
pmovmskb %xmm1, %eax
cmpl $0xffff, %eax           # imm = 0xFFFF
je 0x65dee
movq %r13, %rdi
callq 0xc350
movl $0x17, %edx
subl %eax, %edx
xorps %xmm0, %xmm0
cvtss2sd (%r12), %xmm0
xorps %xmm1, %xmm1
cvtss2sd 0x4(%r12), %xmm1
xorps %xmm2, %xmm2
cvtss2sd 0x8(%r12), %xmm2
xorps %xmm3, %xmm3
cvtss2sd 0xc(%r12), %xmm3
leaq 0x58e6a(%rip), %rdi     # 0xbec47
movq %r13, %rsi
leaq 0x51136(%rip), %rcx     # 0xb6f1d
movb $0x4, %al
callq 0x59e5b
incq %rbx
addq $0x10, %r15
addq $0x10, %r12
cmpq $0x35, %rbx
jne 0x65d73
callq 0x54763
movss 0x511c0(%rip), %xmm1    # 0xb6fd0
xorps %xmm0, %xmm0
callq 0x569e1
movss 0x51a50(%rip), %xmm0    # 0xb7870
callq 0x437f3
leaq 0x58e58(%rip), %rdi     # 0xbec84
leaq 0x982f9(%rip), %rsi     # 0xfe12c
leaq 0x57313(%rip), %rdx     # 0xbd14d
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
callq 0x967e7
xorps %xmm0, %xmm0
movss 0x51181(%rip), %xmm1    # 0xb6fd0
callq 0x569e1
leaq 0x58e37(%rip), %rdi     # 0xbec92
leaq 0x936c2(%rip), %rsi     # 0xf9524
callq 0x9450c
movb 0x983db(%rip), %al      # 0xfe248
testb %al, %al
je 0x66a1d
callq 0x55801
mulss 0x51a36(%rip), %xmm0    # 0xb78b8
leaq 0x982a7(%rip), %rdi     # 0xfe130
leaq 0x58e17(%rip), %rsi     # 0xbeca7
callq 0x4379a
xorl %esi, %esi
cmpl $0x0, 0x983b2(%rip)     # 0xfe250
sete %sil
leaq 0x58e0c(%rip), %rdi     # 0xbecb5
callq 0x948c0
testb %al, %al
je 0x65ebc
movl $0x0, 0x98394(%rip)     # 0xfe250
movss 0x5110c(%rip), %xmm1    # 0xb6fd0
xorps %xmm0, %xmm0
callq 0x569e1
xorl %esi, %esi
cmpl $0x20000, 0x98378(%rip) # imm = 0x20000
sete %sil
leaq 0x5af55(%rip), %rdi     # 0xc0e38
callq 0x948c0
testb %al, %al
movq -0x40(%rbp), %rbx
je 0x65efa
movl $0x20000, 0x98356(%rip) # imm = 0x20000
movss 0x510ce(%rip), %xmm1    # 0xb6fd0
xorps %xmm0, %xmm0
callq 0x569e1
xorl %esi, %esi
cmpl $0x40000, 0x9833a(%rip) # imm = 0x40000
sete %sil
leaq 0x58d9b(%rip), %rdi     # 0xbecbc
callq 0x948c0
testb %al, %al
je 0x65f34
movl $0x40000, 0x9831c(%rip) # imm = 0x40000
movd 0x51094(%rip), %xmm1    # 0xb6fd0
xorps %xmm0, %xmm0
callq 0x569e1
leaq 0x58d76(%rip), %rdi     # 0xbecc1
callq 0x66e36
leaq -0x38(%rbp), %rsi
movq $0x0, (%rsi)
leaq 0x58dca(%rip), %rdi     # 0xbed2c
movl $0x1, %edx
movl $0x80c000, %ecx         # imm = 0x80C000
callq 0x53078
movd 0x56f8f(%rip), %xmm0    # 0xbcf08
callq 0x56dd7
movl $0xc4, %eax
leaq (%rbx,%rax), %r15
addq %rax, %r14
xorl %r12d, %r12d
leaq 0x9819c(%rip), %r13     # 0xfe130
movl %r12d, %edi
callq 0x44e52
movq %rax, %rbx
movq %r13, %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x43a8c
testb %al, %al
je 0x66082
movl %r12d, %edi
callq 0x55f53
movl 0x9828e(%rip), %edx     # 0xfe250
movl $0x10000, %eax          # imm = 0x10000
orl %eax, %edx
leaq 0x58d65(%rip), %rdi     # 0xbed35
movq %r15, %rsi
callq 0x9e6b7
movdqu (%r15), %xmm0
movdqu (%r14), %xmm1
pcmpeqb %xmm0, %xmm1
pmovmskb %xmm1, %eax
cmpl $0xffff, %eax           # imm = 0xFFFF
je 0x66061
movq -0x40(%rbp), %rax
movss 0x50(%rax), %xmm1
pxor %xmm0, %xmm0
callq 0x569e1
movq $0x0, -0x38(%rbp)
leaq 0x58d2b(%rip), %rdi     # 0xbed3d
leaq -0x38(%rbp), %rsi
callq 0x93128
testb %al, %al
je 0x66029
movdqu (%r15), %xmm0
movdqu %xmm0, (%r14)
movq -0x40(%rbp), %rax
movd 0x50(%rax), %xmm1
pxor %xmm0, %xmm0
callq 0x569e1
movq $0x0, -0x38(%rbp)
leaq 0x58cf8(%rip), %rdi     # 0xbed42
leaq -0x38(%rbp), %rsi
callq 0x93128
testb %al, %al
je 0x66061
movdqu (%r14), %xmm0
movdqu %xmm0, (%r15)
movq -0x40(%rbp), %rax
movd 0x50(%rax), %xmm1
pxor %xmm0, %xmm0
callq 0x569e1
movq %rbx, %rdi
xorl %esi, %esi
callq 0x92015
callq 0x56188
incq %r12
addq $0x10, %r14
addq $0x10, %r15
cmpq $0x35, %r12
jne 0x65f94
callq 0x571b8
callq 0x53104
callq 0xa780e
leaq 0x58c9c(%rip), %rdi     # 0xbed49
xorl %esi, %esi
xorl %edx, %edx
callq 0xa6d87
testb %al, %al
je 0x66733
callq 0x47c7c
movq %rax, -0x98(%rbp)
movq 0xa0(%rax), %rbx
leaq 0x58c77(%rip), %rdi     # 0xbed4f
callq 0x66e36
movss 0x5178b(%rip), %xmm0    # 0xb7870
callq 0x56dd7
cmpl $0x0, 0x40(%rbx)
jle 0x6660a
leaq 0x6102d(%rip), %r12     # 0xc7128
xorl %ecx, %ecx
movq %rbx, -0xa0(%rbp)
movq 0x48(%rbx), %rax
movq %rcx, -0xa8(%rbp)
movq (%rax,%rcx,8), %r13
movq %r13, %rdi
callq 0x55e4b
callq 0x47c7c
movq %rax, %rbx
callq 0x44587
movq %rax, -0xb0(%rbp)
movq 0x48(%r13), %rax
leaq 0x56(%rax), %rdx
testq %rax, %rax
leaq 0x50ddc(%rip), %rax     # 0xb6f1d
cmoveq %rax, %rdx
xorps %xmm0, %xmm0
cvtss2sd 0x14(%r13), %xmm0
movl 0x28(%r13), %ecx
movswl 0x50(%r13), %r8d
movq %r13, %rdi
leaq 0x60d6b(%rip), %rsi     # 0xc6ecc
movb $0x1, %al
callq 0xa21c9
movl %eax, %r14d
xorps %xmm0, %xmm0
movss 0x50e5a(%rip), %xmm1    # 0xb6fd0
callq 0x569e1
leaq 0x60d74(%rip), %rdi     # 0xc6ef6
callq 0x93134
testb %al, %al
je 0x66192
movq %r13, 0xb0(%rbx)
testb %r14b, %r14b
je 0x665e7
movq %r13, %rdi
callq 0x54bcb
leaq 0x618d4(%rip), %rdi     # 0xc7a7e
xorl %eax, %eax
callq 0x92024
callq 0x54d2d
leaq 0x58(%r13), %rsi
leaq 0x60d44(%rip), %rdi     # 0xc6f05
movss 0x56d43(%rip), %xmm0    # 0xbcf0c
movss 0x5171b(%rip), %xmm1    # 0xb78ec
movss 0x5168f(%rip), %xmm2    # 0xb7868
leaq 0x5e7c9(%rip), %rdx     # 0xc49a9
xorl %ecx, %ecx
callq 0x98197
xorps %xmm0, %xmm0
movss 0x50dde(%rip), %xmm1    # 0xb6fd0
callq 0x569e1
leaq 0x60d12(%rip), %rdi     # 0xc6f10
callq 0x66e36
movss 0x5c(%r13), %xmm2
movss 0x60(%r13), %xmm3
xorps %xmm0, %xmm0
cvtss2sd %xmm2, %xmm0
xorps %xmm1, %xmm1
cvtss2sd %xmm3, %xmm1
subss %xmm3, %xmm2
cvtss2sd %xmm2, %xmm2
leaq 0x60e70(%rip), %rdi     # 0xc709c
movb $0x3, %al
callq 0x92024
movzwl 0x52(%r13), %edx
leaq 0x60e81(%rip), %rdi     # 0xc70c0
movl %edx, %esi
xorl %eax, %eax
callq 0x92024
movzwl 0x54(%r13), %edx
leaq 0x60e8e(%rip), %rdi     # 0xc70e2
movl %edx, %esi
xorl %eax, %eax
callq 0x92024
xorps %xmm0, %xmm0
cvtsi2ssl 0x64(%r13), %xmm0
ucomiss 0x515d7(%rip), %xmm0    # 0xb7844
jb 0x66275
sqrtss %xmm0, %xmm0
jmp 0x6627a
callq 0xc860
cvttss2si %xmm0, %ecx
movl 0x64(%r13), %esi
leaq 0x60e7b(%rip), %rdi     # 0xc7104
movl %ecx, %edx
xorl %eax, %eax
callq 0x92024
cmpw $0x0, 0x50(%r13)
jle 0x662f3
movl $0x56, %r14d
xorl %ebx, %ebx
movq 0x48(%r13), %rax
testq %rax, %rax
je 0x662df
leaq (%rax,%r14), %rdx
movl -0x3e(%rax,%r14), %ecx
movl -0x3a(%rax,%r14), %r8d
movzbl -0x36(%rax,%r14), %r9d
xorps %xmm0, %xmm0
cvtss2sd -0x2a(%rax,%r14), %xmm0
xorps %xmm1, %xmm1
cvtss2sd -0x26(%rax,%r14), %xmm1
movq %r12, %rdi
movl %ebx, %esi
movb $0x2, %al
callq 0x92645
incq %rbx
movswq 0x50(%r13), %rax
addq $0x88, %r14
cmpq %rax, %rbx
jl 0x662a2
movl 0x28(%r13), %edx
leaq 0x60e73(%rip), %rdi     # 0xc7171
leaq 0x60e73(%rip), %rsi     # 0xc7178
xorl %eax, %eax
callq 0xa20b9
testb %al, %al
je 0x665e2
xorl %ebx, %ebx
xorl %edi, %edi
movss 0x50cc4(%rip), %xmm0    # 0xb6fe4
callq 0x445bd
movl %eax, -0x54(%rbp)
testl $0xfff, %ebx            # imm = 0xFFF
jne 0x66351
movl %ebx, %edx
orl $0xfff, %edx            # imm = 0xFFF
movq %r13, %rdi
movl %ebx, %esi
callq 0x832aa
testb %al, %al
je 0x66351
orl $0xf00, %ebx            # imm = 0xF00
jmp 0x665cb
xorl %r14d, %r14d
xorl %r15d, %r15d
leal (%rbx,%r15), %eax
movzwl %ax, %esi
movq %r13, %rdi
callq 0x82b8c
cmpq $0x1, %rax
sbbl $-0x1, %r14d
incl %r15d
cmpl $0x100, %r15d           # imm = 0x100
jne 0x66357
testl %r14d, %r14d
je 0x665cb
movl %ebx, %edi
leal 0xff(%rbx), %ecx
cmpl $0x1, %r14d
leaq 0x60e05(%rip), %r9      # 0xc719b
leaq 0x60e05(%rip), %rax     # 0xc71a2
cmoveq %rax, %r9
leaq 0x60ddc(%rip), %rsi     # 0xc7184
movl %ebx, %edx
movl %r14d, %r8d
xorl %eax, %eax
callq 0xa21c9
testb %al, %al
je 0x665cb
movss 0x14(%r13), %xmm1
movq -0xb0(%rbp), %rax
movss 0x4c(%rax), %xmm0
movss %xmm1, -0x48(%rbp)
addss %xmm1, %xmm0
movss %xmm0, -0x70(%rbp)
callq 0x56ab2
movaps %xmm0, -0x90(%rbp)
callq 0x557cb
movq %rax, -0x50(%rbp)
movaps -0x90(%rbp), %xmm0
shufps $0x55, %xmm0, %xmm0     # xmm0 = xmm0[1,1,1,1]
movaps %xmm0, -0xc0(%rbp)
xorl %r12d, %r12d
movl %r12d, %eax
andl $0xf, %eax
xorps %xmm0, %xmm0
cvtsi2ss %eax, %xmm0
movl %r12d, %eax
shrl $0x4, %eax
xorps %xmm1, %xmm1
cvtsi2ss %eax, %xmm1
movss -0x70(%rbp), %xmm2
mulss %xmm2, %xmm0
addss -0x90(%rbp), %xmm0
mulss %xmm2, %xmm1
addss -0xc0(%rbp), %xmm1
movss %xmm0, -0x38(%rbp)
movss %xmm1, -0x34(%rbp)
movss -0x48(%rbp), %xmm2
addss %xmm2, %xmm0
addss %xmm2, %xmm1
movss %xmm0, -0x80(%rbp)
movss %xmm1, -0x7c(%rbp)
leal (%rbx,%r12), %r14d
movzwl %r14w, %esi
movq %r13, %rdi
callq 0x82b8c
movq %rax, %r15
testq %rax, %rax
movl $0x64ffffff, %ecx       # imm = 0x64FFFFFF
movl $0x32ffffff, %eax       # imm = 0x32FFFFFF
cmovel %eax, %ecx
xorps %xmm0, %xmm0
movq -0x50(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x80(%rbp), %rdx
movl $0xf, %r8d
movss 0x50b46(%rip), %xmm1    # 0xb6fe4
callq 0x79c80
testq %r15, %r15
je 0x6658f
movsd -0x38(%rbp), %xmm1
movzwl %r14w, %ecx
movq %r13, %rdi
movq -0x50(%rbp), %rsi
movss -0x48(%rbp), %xmm0
movl -0x54(%rbp), %edx
callq 0x837f2
leaq -0x38(%rbp), %rdi
leaq -0x80(%rbp), %rsi
movl $0x1, %edx
callq 0x46fad
testb %al, %al
je 0x6658f
callq 0x57b87
leaq 0x60cb9(%rip), %rdi     # 0xc71a8
movl %r14d, %esi
xorl %eax, %eax
callq 0x92024
callq 0x9552a
movl (%r15), %esi
shrl $0x1f, %esi
leaq 0x54a7f(%rip), %rdi     # 0xbaf8a
xorl %eax, %eax
callq 0x92024
xorps %xmm0, %xmm0
cvtss2sd 0x4(%r15), %xmm0
leaq 0x60c98(%rip), %rdi     # 0xc71ba
movb $0x1, %al
callq 0x92024
xorps %xmm0, %xmm0
cvtss2sd 0x8(%r15), %xmm0
xorps %xmm1, %xmm1
cvtss2sd 0xc(%r15), %xmm1
xorps %xmm2, %xmm2
cvtss2sd 0x10(%r15), %xmm2
cvtss2sd 0x14(%r15), %xmm3
leaq 0x60c78(%rip), %rdi     # 0xc71c9
movb $0x4, %al
callq 0x92024
xorps %xmm0, %xmm0
cvtss2sd 0x18(%r15), %xmm0
xorps %xmm1, %xmm1
cvtss2sd 0x1c(%r15), %xmm1
xorps %xmm2, %xmm2
cvtss2sd 0x20(%r15), %xmm2
xorps %xmm3, %xmm3
cvtss2sd 0x24(%r15), %xmm3
leaq 0x60c64(%rip), %rdi     # 0xc71e7
movb $0x4, %al
callq 0x92024
callq 0x57cdf
incl %r12d
cmpl $0x100, %r12d           # imm = 0x100
jne 0x66406
movss -0x70(%rbp), %xmm0
mulss 0x5130c(%rip), %xmm0    # 0xb78b8
movss %xmm0, -0x38(%rbp)
movss %xmm0, -0x34(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x950e0
callq 0xa2f4e
leaq 0x60b5d(%rip), %r12     # 0xc7128
addl $0x100, %ebx            # imm = 0x100
cmpl $0x10000, %ebx          # imm = 0x10000
jb 0x66328
callq 0xa2f4e
callq 0xa2f4e
callq 0x56188
movq -0xa8(%rbp), %rcx
incq %rcx
movq -0xa0(%rbp), %rbx
movslq 0x40(%rbx), %rax
cmpq %rax, %rcx
jl 0x66104
movl 0x28(%rbx), %edx
movl 0x2c(%rbx), %ecx
leaq 0x58770(%rip), %rdi     # 0xbed87
leaq 0x58777(%rip), %rsi     # 0xbed95
xorl %eax, %eax
callq 0xa20b9
testb %al, %al
je 0x66697
movaps 0x50940(%rip), %xmm0    # 0xb6f70
leaq -0x38(%rbp), %r8
movups %xmm0, (%r8)
movaps 0x56951(%rip), %xmm0    # 0xbcf90
leaq -0x80(%rbp), %r9
movups %xmm0, (%r9)
xorps %xmm0, %xmm0
cvtsi2ssl 0x28(%rbx), %xmm0
movq 0x8(%rbx), %rdi
xorps %xmm1, %xmm1
cvtsi2ssl 0x2c(%rbx), %xmm1
leaq -0xd8(%rbp), %rsi
movss %xmm0, (%rsi)
movss %xmm1, 0x4(%rsi)
leaq -0xd0(%rbp), %rdx
movq $0x0, (%rdx)
movabsq $0x3f8000003f800000, %rax # imm = 0x3F8000003F800000
leaq -0xc8(%rbp), %rcx
movq %rax, (%rcx)
callq 0x9404a
callq 0xa2f4e
leaq 0x58714(%rip), %rdi     # 0xbedb2
callq 0x66e36
leaq 0x58838(%rip), %rdi     # 0xbeee2
leaq 0x92e77(%rip), %rsi     # 0xf9528
leaq 0x5803b(%rip), %rdx     # 0xbe6f3
movss 0x5684c(%rip), %xmm0    # 0xbcf0c
movss 0x51224(%rip), %xmm1    # 0xb78ec
movss 0x51198(%rip), %xmm2    # 0xb7868
movl $0x10, %ecx
callq 0x98197
testb %al, %al
je 0x666eb
movss 0x92e42(%rip), %xmm0    # 0xf9528
callq 0x5582b
movq -0x98(%rbp), %rsi
addq $0xa8, %rsi
leaq 0x587ef(%rip), %rdi     # 0xbeeef
leaq 0x57fec(%rip), %rdx     # 0xbe6f3
movss 0x567fd(%rip), %xmm0    # 0xbcf0c
movd 0x511d5(%rip), %xmm1    # 0xb78ec
movss 0x51149(%rip), %xmm2    # 0xb7868
movl $0x10, %ecx
callq 0x98197
callq 0x571b8
callq 0xa780e
leaq 0x587c2(%rip), %rdi     # 0xbeefc
xorl %esi, %esi
xorl %edx, %edx
callq 0xa6d87
testb %al, %al
movq -0x40(%rbp), %r12
je 0x669c9
leaq 0xb8(%r12), %rsi
leaq 0x587a8(%rip), %rdi     # 0xbef06
callq 0x9450c
movss 0x50865(%rip), %xmm1    # 0xb6fd0
xorps %xmm0, %xmm0
callq 0x569e1
leaq 0x5879f(%rip), %rdi     # 0xbef19
callq 0x66e36
leaq 0xb9(%r12), %rsi
leaq 0x587ee(%rip), %rdi     # 0xbef7c
callq 0x9450c
xorps %xmm0, %xmm0
movss 0x50832(%rip), %xmm1    # 0xb6fd0
callq 0x569e1
leaq 0x587f1(%rip), %rdi     # 0xbef9b
callq 0x66e36
leaq 0xba(%r12), %rsi
leaq 0x5884f(%rip), %rdi     # 0xbf00d
callq 0x9450c
movss 0x510b9(%rip), %xmm0    # 0xb7884
callq 0x56dd7
leaq 0xbc(%r12), %rbx
leaq 0x58840(%rip), %rdi     # 0xbf01f
leaq 0x57f0d(%rip), %rdx     # 0xbe6f3
movss 0x56722(%rip), %xmm0    # 0xbcf10
movss 0x51092(%rip), %xmm1    # 0xb7888
movss 0x5080a(%rip), %xmm2    # 0xb7008
movq %rbx, %rsi
xorl %ecx, %ecx
callq 0x98197
movss 0x51078(%rip), %xmm0    # 0xb7888
ucomiss 0xbc(%r12), %xmm0
jbe 0x66821
movl $0x3dcccccd, (%rbx)     # imm = 0x3DCCCCCD
movq %r12, %rsi
addq $0xc0, %rsi
leaq 0x5880a(%rip), %rdi     # 0xbf03c
leaq 0x57eba(%rip), %rdx     # 0xbe6f3
movss 0x566d3(%rip), %xmm0    # 0xbcf14
movss 0x5103f(%rip), %xmm1    # 0xb7888
movss 0x507b7(%rip), %xmm2    # 0xb7008
xorl %r15d, %r15d
xorl %ecx, %ecx
callq 0x98197
callq 0x529d2
testb %al, %al
je 0x66973
callq 0x56ab2
leaq -0x38(%rbp), %rbx
movlps %xmm0, (%rbx)
leaq -0x80(%rbp), %rdx
movq $0x0, (%rdx)
movq %rbx, %rdi
xorl %esi, %esi
callq 0x5566a
callq 0x57b87
callq 0x56ab2
movaps %xmm0, -0x70(%rbp)
callq 0x557cb
movq %rax, %r14
movaps -0x70(%rbp), %xmm0
shufps $0x55, %xmm0, %xmm0     # xmm0 = xmm0[1,1,1,1]
addss 0x56669(%rip), %xmm0    # 0xbcf18
movaps %xmm0, -0x90(%rbp)
movss 0x5074a(%rip), %xmm0    # 0xb7008
movaps %xmm0, %xmm1
movss %xmm0, -0x50(%rbp)
xorps %xmm2, %xmm2
cvtsi2ss %r15d, %xmm2
mulss 0x56646(%rip), %xmm2    # 0xbcf1c
divss 0x5072e(%rip), %xmm2    # 0xb700c
movss 0x50722(%rip), %xmm0    # 0xb7008
addss %xmm0, %xmm2
movss %xmm2, -0x48(%rbp)
movaps -0x70(%rbp), %xmm0
addss %xmm1, %xmm0
addss %xmm2, %xmm0
movss %xmm0, -0x38(%rbp)
movaps -0x90(%rbp), %xmm0
movss %xmm0, -0x34(%rbp)
xorl %edi, %edi
movss 0x506ce(%rip), %xmm0    # 0xb6fe4
callq 0x445bd
movq %r14, %rdi
movq %rbx, %rsi
movss -0x48(%rbp), %xmm0
movl %eax, %edx
xorl %ecx, %ecx
movss 0x506b2(%rip), %xmm1    # 0xb6fe4
callq 0x7a922
movss -0x48(%rbp), %xmm0
addss %xmm0, %xmm0
addss 0x506c0(%rip), %xmm0    # 0xb7008
addss -0x50(%rbp), %xmm0
incl %r15d
cmpl $0x7, %r15d
jne 0x668be
leaq -0x38(%rbp), %rdi
movss %xmm0, (%rdi)
movl $0x43200000, 0x4(%rdi)  # imm = 0x43200000
callq 0x950e0
callq 0x57cdf
movss 0x50655(%rip), %xmm1    # 0xb6fd0
xorps %xmm0, %xmm0
callq 0x569e1
leaq 0x586cb(%rip), %rdi     # 0xbf055
callq 0x66e36
leaq 0x58725(%rip), %rdi     # 0xbf0bb
leaq 0x57d56(%rip), %rdx     # 0xbe6f3
movss 0x56567(%rip), %xmm0    # 0xbcf0c
movd 0x50653(%rip), %xmm1    # 0xb7000
movss 0x5062f(%rip), %xmm2    # 0xb6fe4
movq %r12, %rsi
xorl %ecx, %ecx
callq 0x98197
callq 0x571b8
callq 0xa780e
callq 0xa5873
callq 0x571b8
addq $0xb8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x97734(%rip), %r15     # 0xfe120
movq %r15, %rdi
callq 0xc2c0
testl %eax, %eax
je 0x6560a
leaq 0x97309(%rip), %rdi     # 0xfdd0c
callq 0x40b98
leaq 0x97711(%rip), %rdi     # 0xfe120
callq 0xc4c0
movq -0x40(%rbp), %r13
jmp 0x6560a
leaq 0x97824(%rip), %r15     # 0xfe248
movq %r15, %rdi
callq 0xc2c0
testl %eax, %eax
je 0x65e75
leaq 0x976f5(%rip), %rdi     # 0xfe130
leaq 0x504db(%rip), %rsi     # 0xb6f1d
callq 0x4355a
leaq 0xd030(%rip), %rdi      # 0x73a7e
leaq 0x976db(%rip), %rsi     # 0xfe130
leaq 0x92a9c(%rip), %rdx     # 0xf94f8
callq 0xc760
leaq 0x977e0(%rip), %rdi     # 0xfe248
callq 0xc4c0
jmp 0x65e75
jmp 0x66a74
movq %rax, %rbx
movq %r15, %rdi
callq 0xc3a0
movq %rbx, %rdi
callq 0xc560