// File: /workspace/github_cpp_makefile_star2_O3/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 0x43b94
movq %rax, %r13
movb 0x97c4e(%rip), %al      # 0xfc120
testb %al, %al
movq %r13, -0x40(%rbp)
je 0x658bf
testq %rbx, %rbx
jne 0x64500
testb $0x1, 0x97c3e(%rip)     # 0xfc128
jne 0x64500
leaq 0x97819(%rip), %rdi     # 0xfbd0c
movl $0x414, %edx            # imm = 0x414
movq %r13, %rsi
callq 0xc080
testq %rbx, %rbx
movb $0x1, 0x97c1e(%rip)     # 0xfc128
leaq 0x977fb(%rip), %r14     # 0xfbd0c
cmovneq %rbx, %r14
callq 0x5431a
mulss 0x50ae2(%rip), %xmm0    # 0xb5004
callq 0x55d0a
leaq 0x5830a(%rip), %rdi     # 0xbc838
callq 0x72025
testb %al, %al
je 0x6454b
leaq 0x977ce(%rip), %rdi     # 0xfbd0c
movl $0x414, %edx            # imm = 0x414
movq %r13, %rsi
callq 0xc080
leaq 0x582f7(%rip), %rdi     # 0xbc849
callq 0x7207f
leaq 0x40(%r13), %rsi
leaq 0x582f7(%rip), %rdi     # 0xbc859
leaq 0x5caad(%rip), %rdx     # 0xc1016
movss 0x51393(%rip), %xmm1    # 0xb5904
xorps %xmm0, %xmm0
movq %rsi, -0x48(%rbp)
xorl %ecx, %ecx
callq 0x973a7
testb %al, %al
je 0x6458f
movss 0x40(%r13), %xmm0
movss %xmm0, 0x7c(%r13)
leaq 0x10(%r13), %r15
movss 0x10(%r13), %xmm0
ucomiss 0x512a4(%rip), %xmm0    # 0xb5844
leaq -0x38(%rbp), %rsi
seta (%rsi)
leaq 0x582b9(%rip), %rdi     # 0xbc867
callq 0x9286b
testb %al, %al
je 0x645cf
cmpb $0x0, -0x38(%rbp)
jne 0x645c2
xorps %xmm0, %xmm0
jmp 0x645ca
movss 0x50a1a(%rip), %xmm0    # 0xb4fe4
movss %xmm0, (%r15)
movss 0x509f9(%rip), %xmm1    # 0xb4fd0
xorps %xmm0, %xmm0
callq 0x5591d
leaq 0x44(%r13), %rbx
movss 0x44(%r13), %xmm0
ucomiss 0x51254(%rip), %xmm0    # 0xb5844
leaq -0x38(%rbp), %rsi
seta (%rsi)
leaq 0x58276(%rip), %rdi     # 0xbc874
callq 0x9286b
testb %al, %al
je 0x6461e
cmpb $0x0, -0x38(%rbp)
jne 0x64612
xorps %xmm0, %xmm0
jmp 0x6461a
movss 0x509ca(%rip), %xmm0    # 0xb4fe4
movss %xmm0, (%rbx)
movss 0x509aa(%rip), %xmm1    # 0xb4fd0
xorps %xmm0, %xmm0
callq 0x5591d
movq %r13, %rax
addq $0x34, %r13
movss 0x34(%rax), %xmm0
ucomiss 0x51203(%rip), %xmm0    # 0xb5844
leaq -0x38(%rbp), %rsi
seta (%rsi)
leaq 0x58231(%rip), %rdi     # 0xbc880
callq 0x9286b
testb %al, %al
je 0x64671
cmpb $0x0, -0x38(%rbp)
jne 0x64663
xorps %xmm0, %xmm0
jmp 0x6466b
movss 0x50979(%rip), %xmm0    # 0xb4fe4
movss %xmm0, (%r13)
leaq -0x38(%rbp), %rsi
movq $0x0, (%rsi)
leaq 0x58209(%rip), %rdi     # 0xbc88c
callq 0x9141e
testb %al, %al
je 0x646c6
leaq 0x97679(%rip), %rdi     # 0xfbd0c
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 0x50902(%rip), %xmm1    # 0xb4fd0
xorps %xmm0, %xmm0
callq 0x5591d
leaq -0x38(%rbp), %rsi
movq $0x0, (%rsi)
leaq 0x581ad(%rip), %rdi     # 0xbc895
callq 0x9141e
testb %al, %al
je 0x64702
movl $0x414, %edx            # imm = 0x414
movq -0x40(%rbp), %rdi
movq %r14, %rsi
callq 0xc080
movd 0x508c6(%rip), %xmm1    # 0xb4fd0
xorps %xmm0, %xmm0
callq 0x5591d
leaq 0x58187(%rip), %rdi     # 0xbc8a0
callq 0x65d18
callq 0x93890
leaq 0x581fa(%rip), %rdi     # 0xbc924
xorl %esi, %esi
callq 0xa3af2
testb %al, %al
je 0x658a8
leaq 0x581eb(%rip), %rdi     # 0xbc92b
xorl %esi, %esi
xorl %edx, %edx
callq 0xa52b9
testb %al, %al
je 0x64bd1
leaq 0x581d9(%rip), %rdi     # 0xbc931
xorl %eax, %eax
callq 0x90323
movq -0x40(%rbp), %r12
leaq 0x4(%r12), %rsi
leaq 0x581c7(%rip), %rdi     # 0xbc936
movq %rbx, -0x50(%rbp)
leaq 0x5c89c(%rip), %rbx     # 0xc1016
movss 0x51186(%rip), %xmm1    # 0xb5908
xorps %xmm0, %xmm0
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x973dc
leaq 0x38(%r12), %rsi
leaq 0x581a9(%rip), %rdi     # 0xbc944
xorps %xmm0, %xmm0
movss 0x51162(%rip), %xmm1    # 0xb5908
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x973dc
leaq 0x58(%r12), %rsi
leaq 0x58195(%rip), %rdi     # 0xbc951
xorps %xmm0, %xmm0
movss 0x51141(%rip), %xmm1    # 0xb5908
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x973dc
leaq 0x48(%r12), %rsi
leaq 0x58180(%rip), %rdi     # 0xbc95d
xorps %xmm0, %xmm0
movss 0x51120(%rip), %xmm1    # 0xb5908
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x973dc
leaq 0x50(%r12), %rsi
leaq 0x5816b(%rip), %rdi     # 0xbc969
xorps %xmm0, %xmm0
movss 0x510ff(%rip), %xmm1    # 0xb5908
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x973dc
leaq 0x60(%r12), %rsi
leaq 0x5815b(%rip), %rdi     # 0xbc97a
movss 0x507e1(%rip), %xmm1    # 0xb5008
xorps %xmm0, %xmm0
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x973dc
leaq 0x68(%r12), %rsi
leaq 0x5814c(%rip), %rdi     # 0xbc98c
movss 0x5668c(%rip), %xmm1    # 0xbaed4
xorps %xmm0, %xmm0
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x973a7
leaq 0x70(%r12), %rsi
leaq 0x58139(%rip), %rdi     # 0xbc99a
movss 0x5077b(%rip), %xmm0    # 0xb4fe4
movss 0x51097(%rip), %xmm1    # 0xb5908
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x973a7
leaq 0x78(%r12), %rsi
leaq 0x58121(%rip), %rdi     # 0xbc9a8
movss 0x50755(%rip), %xmm0    # 0xb4fe4
movss 0x51071(%rip), %xmm1    # 0xb5908
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x973a7
leaq 0x5d439(%rip), %rdi     # 0xc1ce1
xorl %eax, %eax
callq 0x90323
leaq 0x580fe(%rip), %rdi     # 0xbc9b4
xorps %xmm0, %xmm0
movq %r15, %rsi
movss 0x50720(%rip), %xmm1    # 0xb4fe4
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x973a7
leaq 0x2c(%r12), %rsi
leaq 0x580eb(%rip), %rdi     # 0xbc9c5
xorps %xmm0, %xmm0
movss 0x506ff(%rip), %xmm1    # 0xb4fe4
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x973a7
leaq 0x580df(%rip), %rdi     # 0xbc9d5
xorps %xmm0, %xmm0
movq %r13, %rsi
movss 0x506e0(%rip), %xmm1    # 0xb4fe4
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x973a7
leaq 0x580d0(%rip), %rdi     # 0xbc9e5
xorps %xmm0, %xmm0
movq -0x50(%rbp), %rsi
movss 0x506c0(%rip), %xmm1    # 0xb4fe4
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x973a7
leaq 0x88(%r12), %rsi
leaq 0x580b8(%rip), %rdi     # 0xbc9f5
xorps %xmm0, %xmm0
movss 0x5069c(%rip), %xmm1    # 0xb4fe4
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x973a7
leaq 0x58109(%rip), %rdi     # 0xbca62
xorl %eax, %eax
callq 0x90323
leaq 0xc(%r12), %rsi
leaq 0x58097(%rip), %rdi     # 0xbca03
movss 0x50f90(%rip), %xmm1    # 0xb5904
xorps %xmm0, %xmm0
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x973a7
leaq 0x28(%r12), %rsi
leaq 0x58085(%rip), %rdi     # 0xbca12
xorps %xmm0, %xmm0
movss 0x50f6c(%rip), %xmm1    # 0xb5904
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x973a7
leaq 0x57eb0(%rip), %rdi     # 0xbc859
xorps %xmm0, %xmm0
movq -0x48(%rbp), %rsi
movss 0x50f4c(%rip), %xmm1    # 0xb5904
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x973a7
leaq 0x30(%r12), %rsi
leaq 0x58052(%rip), %rdi     # 0xbca20
xorps %xmm0, %xmm0
movss 0x50f2b(%rip), %xmm1    # 0xb5904
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x973a7
leaq 0x74(%r12), %rsi
leaq 0x5803f(%rip), %rdi     # 0xbca2e
xorps %xmm0, %xmm0
movss 0x50f0a(%rip), %xmm1    # 0xb5904
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x973a7
leaq 0x7c(%r12), %rsi
leaq 0x58030(%rip), %rdi     # 0xbca40
xorps %xmm0, %xmm0
movss 0x50ee9(%rip), %xmm1    # 0xb5904
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x973a7
leaq 0x80(%r12), %rsi
leaq 0x58019(%rip), %rdi     # 0xbca4d
xorps %xmm0, %xmm0
movss 0x50ec5(%rip), %xmm1    # 0xb5904
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x973a7
leaq 0x84(%r12), %rsi
leaq 0x58007(%rip), %rdi     # 0xbca5f
xorps %xmm0, %xmm0
movss 0x50ea1(%rip), %xmm1    # 0xb5904
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x973a7
leaq 0x5c0dc(%rip), %rdi     # 0xc0b50
xorl %eax, %eax
callq 0x90323
leaq 0x1c(%r12), %rsi
leaq 0x57fe4(%rip), %rdi     # 0xbca6b
leaq 0x57c35(%rip), %rdx     # 0xbc6c3
xorps %xmm0, %xmm0
movss 0x5054b(%rip), %xmm1    # 0xb4fe4
xorl %ecx, %ecx
callq 0x973dc
movl 0x24(%r12), %eax
incl %eax
leaq -0x38(%rbp), %rsi
movl %eax, (%rsi)
leaq 0x57fc8(%rip), %rdi     # 0xbca7c
leaq 0x56645(%rip), %rdx     # 0xbb100
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
callq 0x94b84
testb %al, %al
je 0x64ad3
movl -0x38(%rbp), %eax
decl %eax
movl %eax, 0x24(%r12)
leaq 0x90(%r12), %rsi
leaq 0x57fb3(%rip), %rdi     # 0xbca95
leaq 0x56628(%rip), %rdx     # 0xbb111
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
callq 0x94b84
leaq 0x94(%r12), %rsi
leaq 0x57fa7(%rip), %rdi     # 0xbcaa9
leaq 0x57bba(%rip), %rbx     # 0xbc6c3
movss 0x504d3(%rip), %xmm1    # 0xb4fe4
xorps %xmm0, %xmm0
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x973dc
movss 0x504aa(%rip), %xmm1    # 0xb4fd0
xorps %xmm0, %xmm0
callq 0x5591d
leaq 0x57f84(%rip), %rdi     # 0xbcab9
callq 0x65d18
leaq 0x9c(%r12), %rsi
leaq 0x57fb1(%rip), %rdi     # 0xbcafa
xorps %xmm0, %xmm0
movss 0x50490(%rip), %xmm1    # 0xb4fe4
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x973dc
xorps %xmm0, %xmm0
movss 0x50467(%rip), %xmm1    # 0xb4fd0
callq 0x5591d
leaq 0x57f99(%rip), %rdi     # 0xbcb0e
callq 0x65d18
leaq 0x57fd2(%rip), %rdi     # 0xbcb53
xorl %eax, %eax
callq 0x90323
xorps %xmm0, %xmm0
movss 0x5043d(%rip), %xmm1    # 0xb4fd0
callq 0x5591d
leaq 0x57fc6(%rip), %rdi     # 0xbcb65
callq 0x65d18
leaq 0xac(%r12), %rsi
leaq 0x5801a(%rip), %rdi     # 0xbcbcd
leaq 0x5c45c(%rip), %rdx     # 0xc1016
movd 0x56312(%rip), %xmm1    # 0xbaed4
xorps %xmm0, %xmm0
xorl %ecx, %ecx
callq 0x973dc
callq 0xa5cd8
leaq 0x58098(%rip), %rdi     # 0xbcc70
xorl %esi, %esi
xorl %edx, %edx
callq 0xa52b9
testb %al, %al
je 0x64f7a
leaq -0x38(%rbp), %rsi
movq $0x0, (%rsi)
leaq 0x57fe9(%rip), %rdi     # 0xbcbe4
callq 0x9141e
testb %al, %al
je 0x64cdc
cmpl $0x0, 0x9751d(%rip)     # 0xfc12c
je 0x64c1d
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x58f47
jmp 0x64c27
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x59008
movq -0x40(%rbp), %r12
leaq 0x57fb9(%rip), %rdi     # 0xbcbeb
xorl %ebx, %ebx
xorl %eax, %eax
callq 0x58cc1
movl $0xc4, %r15d
addq %r15, %r12
addq %r14, %r15
movl %ebx, %edi
callq 0x44404
movq %rax, %r13
cmpb $0x1, 0x928cc(%rip)     # 0xf7524
jne 0x64c74
movdqu (%r12), %xmm0
movdqu (%r15), %xmm1
pcmpeqb %xmm0, %xmm1
pmovmskb %xmm1, %eax
cmpl $0xffff, %eax           # imm = 0xFFFF
je 0x64cc2
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 0x57f66(%rip), %rdi     # 0xbcc17
movq %r13, %rsi
leaq 0x50262(%rip), %rcx     # 0xb4f1d
movb $0x4, %al
callq 0x58cc1
incq %rbx
addq $0x10, %r15
addq $0x10, %r12
cmpq $0x35, %rbx
jne 0x64c47
callq 0x53716
movss 0x502ec(%rip), %xmm1    # 0xb4fd0
xorps %xmm0, %xmm0
callq 0x5591d
movss 0x50b7c(%rip), %xmm0    # 0xb5870
callq 0x42f61
leaq 0x57f54(%rip), %rdi     # 0xbcc54
leaq 0x97425(%rip), %rsi     # 0xfc12c
leaq 0x5640f(%rip), %rdx     # 0xbb11d
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
callq 0x94b84
xorps %xmm0, %xmm0
movss 0x502ad(%rip), %xmm1    # 0xb4fd0
callq 0x5591d
leaq 0x57f33(%rip), %rdi     # 0xbcc62
leaq 0x927ee(%rip), %rsi     # 0xf7524
callq 0x9286b
movb 0x97507(%rip), %al      # 0xfc248
testb %al, %al
je 0x658f4
callq 0x54766
mulss 0x50b62(%rip), %xmm0    # 0xb58b8
leaq 0x973d3(%rip), %rdi     # 0xfc130
leaq 0x57f13(%rip), %rsi     # 0xbcc77
callq 0x42f08
xorl %esi, %esi
cmpl $0x0, 0x974de(%rip)     # 0xfc250
sete %sil
leaq 0x57f08(%rip), %rdi     # 0xbcc85
callq 0x92c36
testb %al, %al
je 0x64d90
movl $0x0, 0x974c0(%rip)     # 0xfc250
movss 0x50238(%rip), %xmm1    # 0xb4fd0
xorps %xmm0, %xmm0
callq 0x5591d
xorl %esi, %esi
cmpl $0x20000, 0x974a4(%rip) # imm = 0x20000
sete %sil
leaq 0x5a051(%rip), %rdi     # 0xbee08
callq 0x92c36
testb %al, %al
movq -0x40(%rbp), %rbx
je 0x64dce
movl $0x20000, 0x97482(%rip) # imm = 0x20000
movss 0x501fa(%rip), %xmm1    # 0xb4fd0
xorps %xmm0, %xmm0
callq 0x5591d
xorl %esi, %esi
cmpl $0x40000, 0x97466(%rip) # imm = 0x40000
sete %sil
leaq 0x57e97(%rip), %rdi     # 0xbcc8c
callq 0x92c36
testb %al, %al
je 0x64e08
movl $0x40000, 0x97448(%rip) # imm = 0x40000
movd 0x501c0(%rip), %xmm1    # 0xb4fd0
xorps %xmm0, %xmm0
callq 0x5591d
leaq 0x57e72(%rip), %rdi     # 0xbcc91
callq 0x65d18
leaq -0x38(%rbp), %rsi
movq $0x0, (%rsi)
leaq 0x57ec6(%rip), %rdi     # 0xbccfc
movl $0x1, %edx
movl $0x80c000, %ecx         # imm = 0x80C000
callq 0x5207d
movd 0x5608b(%rip), %xmm0    # 0xbaed8
callq 0x55d0a
movl $0xc4, %eax
leaq (%rbx,%rax), %r15
addq %rax, %r14
xorl %r12d, %r12d
leaq 0x972c8(%rip), %r13     # 0xfc130
movl %r12d, %edi
callq 0x44404
movq %rax, %rbx
movq %r13, %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x431f8
testb %al, %al
je 0x64f56
movl %r12d, %edi
callq 0x54e5e
movl 0x973ba(%rip), %edx     # 0xfc250
movl $0x10000, %eax          # imm = 0x10000
orl %eax, %edx
leaq 0x57e61(%rip), %rdi     # 0xbcd05
movq %r15, %rsi
callq 0x9cc78
movdqu (%r15), %xmm0
movdqu (%r14), %xmm1
pcmpeqb %xmm0, %xmm1
pmovmskb %xmm1, %eax
cmpl $0xffff, %eax           # imm = 0xFFFF
je 0x64f35
movq -0x40(%rbp), %rax
movss 0x50(%rax), %xmm1
pxor %xmm0, %xmm0
callq 0x5591d
movq $0x0, -0x38(%rbp)
leaq 0x57e27(%rip), %rdi     # 0xbcd0d
leaq -0x38(%rbp), %rsi
callq 0x9141e
testb %al, %al
je 0x64efd
movdqu (%r15), %xmm0
movdqu %xmm0, (%r14)
movq -0x40(%rbp), %rax
movd 0x50(%rax), %xmm1
pxor %xmm0, %xmm0
callq 0x5591d
movq $0x0, -0x38(%rbp)
leaq 0x57df4(%rip), %rdi     # 0xbcd12
leaq -0x38(%rbp), %rsi
callq 0x9141e
testb %al, %al
je 0x64f35
movdqu (%r14), %xmm0
movdqu %xmm0, (%r15)
movq -0x40(%rbp), %rax
movd 0x50(%rax), %xmm1
pxor %xmm0, %xmm0
callq 0x5591d
movq %rbx, %rdi
xorl %esi, %esi
callq 0x90314
callq 0x55082
incq %r12
addq $0x10, %r14
addq $0x10, %r15
cmpq $0x35, %r12
jne 0x64e68
callq 0x560da
callq 0x52109
callq 0xa5cd8
leaq 0x57d98(%rip), %rdi     # 0xbcd19
xorl %esi, %esi
xorl %edx, %edx
callq 0xa52b9
testb %al, %al
je 0x6560d
callq 0x4714d
movq %rax, -0x98(%rbp)
movq 0xa0(%rax), %rbx
leaq 0x57d73(%rip), %rdi     # 0xbcd1f
callq 0x65d18
movss 0x508b7(%rip), %xmm0    # 0xb5870
callq 0x55d0a
cmpl $0x0, 0x40(%rbx)
jle 0x654e4
leaq 0x60129(%rip), %r12     # 0xc50f8
xorl %ecx, %ecx
movq %rbx, -0xa0(%rbp)
movq 0x48(%rbx), %rax
movq %rcx, -0xa8(%rbp)
movq (%rax,%rcx,8), %r13
movq %r13, %rdi
callq 0x54d60
callq 0x4714d
movq %rax, %rbx
callq 0x43b94
movq %rax, -0xb0(%rbp)
movq 0x48(%r13), %rax
leaq 0x56(%rax), %rdx
testq %rax, %rax
leaq 0x4ff08(%rip), %rax     # 0xb4f1d
cmoveq %rax, %rdx
xorps %xmm0, %xmm0
cvtss2sd 0x14(%r13), %xmm0
movl 0x28(%r13), %ecx
movswl 0x50(%r13), %r8d
movq %r13, %rdi
leaq 0x5fe67(%rip), %rsi     # 0xc4e9c
movb $0x1, %al
callq 0xa086e
movl %eax, %r14d
xorps %xmm0, %xmm0
movss 0x4ff86(%rip), %xmm1    # 0xb4fd0
callq 0x5591d
leaq 0x5fe70(%rip), %rdi     # 0xc4ec6
callq 0x9142a
testb %al, %al
je 0x65066
movq %r13, 0xb0(%rbx)
testb %r14b, %r14b
je 0x654c1
movq %r13, %rdi
callq 0x53b7f
leaq 0x6099f(%rip), %rdi     # 0xc5a1d
xorl %eax, %eax
callq 0x90323
callq 0x53cd9
leaq 0x58(%r13), %rsi
leaq 0x5fe40(%rip), %rdi     # 0xc4ed5
movss 0x55e3f(%rip), %xmm0    # 0xbaedc
movss 0x50847(%rip), %xmm1    # 0xb58ec
movss 0x507bb(%rip), %xmm2    # 0xb5868
leaq 0x5d8c5(%rip), %rdx     # 0xc2979
xorl %ecx, %ecx
callq 0x964af
xorps %xmm0, %xmm0
movss 0x4ff0a(%rip), %xmm1    # 0xb4fd0
callq 0x5591d
leaq 0x5fe0e(%rip), %rdi     # 0xc4ee0
callq 0x65d18
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 0x5ff6c(%rip), %rdi     # 0xc506c
movb $0x3, %al
callq 0x90323
movzwl 0x52(%r13), %edx
leaq 0x5ff7d(%rip), %rdi     # 0xc5090
movl %edx, %esi
xorl %eax, %eax
callq 0x90323
movzwl 0x54(%r13), %edx
leaq 0x5ff8a(%rip), %rdi     # 0xc50b2
movl %edx, %esi
xorl %eax, %eax
callq 0x90323
xorps %xmm0, %xmm0
cvtsi2ssl 0x64(%r13), %xmm0
ucomiss 0x50703(%rip), %xmm0    # 0xb5844
jb 0x65149
sqrtss %xmm0, %xmm0
jmp 0x6514e
callq 0xc860
cvttss2si %xmm0, %ecx
movl 0x64(%r13), %esi
leaq 0x5ff77(%rip), %rdi     # 0xc50d4
movl %ecx, %edx
xorl %eax, %eax
callq 0x90323
movzwl 0x50(%r13), %eax
testw %ax, %ax
jle 0x651cd
movl $0x56, %r14d
xorl %ebx, %ebx
movq 0x48(%r13), %rsi
testq %rsi, %rsi
je 0x651ba
leaq (%rsi,%r14), %rdx
movl -0x3e(%rsi,%r14), %ecx
movl -0x3a(%rsi,%r14), %r8d
movzbl -0x36(%rsi,%r14), %r9d
xorps %xmm0, %xmm0
cvtss2sd -0x2a(%rsi,%r14), %xmm0
xorps %xmm1, %xmm1
cvtss2sd -0x26(%rsi,%r14), %xmm1
movq %r12, %rdi
movl %ebx, %esi
movb $0x2, %al
callq 0x90944
movzwl 0x50(%r13), %eax
incq %rbx
movswq %ax, %rcx
addq $0x88, %r14
cmpq %rcx, %rbx
jl 0x65178
movl 0x28(%r13), %edx
leaq 0x5ff69(%rip), %rdi     # 0xc5141
leaq 0x5ff69(%rip), %rsi     # 0xc5148
xorl %eax, %eax
callq 0xa075e
testb %al, %al
je 0x654bc
xorl %ebx, %ebx
xorl %edi, %edi
movss 0x4fdea(%rip), %xmm0    # 0xb4fe4
callq 0x43bca
movl %eax, -0x54(%rbp)
testl $0xfff, %ebx            # imm = 0xFFF
jne 0x6522b
movl %ebx, %edx
orl $0xfff, %edx            # imm = 0xFFF
movq %r13, %rdi
movl %ebx, %esi
callq 0x81768
testb %al, %al
je 0x6522b
orl $0xf00, %ebx            # imm = 0xF00
jmp 0x654a5
xorl %r14d, %r14d
xorl %r15d, %r15d
leal (%rbx,%r15), %eax
movzwl %ax, %esi
movq %r13, %rdi
callq 0x810a4
cmpq $0x1, %rax
sbbl $-0x1, %r14d
incl %r15d
cmpl $0x100, %r15d           # imm = 0x100
jne 0x65231
testl %r14d, %r14d
je 0x654a5
movl %ebx, %edi
leal 0xff(%rbx), %ecx
cmpl $0x1, %r14d
leaq 0x5fefb(%rip), %r9      # 0xc516b
leaq 0x5fefb(%rip), %rax     # 0xc5172
cmoveq %rax, %r9
leaq 0x5fed2(%rip), %rsi     # 0xc5154
movl %ebx, %edx
movl %r14d, %r8d
xorl %eax, %eax
callq 0xa086e
testb %al, %al
je 0x654a5
movss 0x14(%r13), %xmm1
movq -0xb0(%rbp), %rax
movss 0x4c(%rax), %xmm0
movss %xmm1, -0x48(%rbp)
addss %xmm1, %xmm0
movss %xmm0, -0x70(%rbp)
callq 0x559ee
movaps %xmm0, -0x90(%rbp)
callq 0x54730
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 0x810a4
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 0x4fc6c(%rip), %xmm1    # 0xb4fe4
callq 0x7851c
testq %r15, %r15
je 0x65469
movsd -0x38(%rbp), %xmm1
movzwl %r14w, %ecx
movq %r13, %rdi
movq -0x50(%rbp), %rsi
movss -0x48(%rbp), %xmm0
movl -0x54(%rbp), %edx
callq 0x81ca2
leaq -0x38(%rbp), %rdi
leaq -0x80(%rbp), %rsi
movl $0x1, %edx
callq 0x4648c
testb %al, %al
je 0x65469
callq 0x56a72
leaq 0x5fdaf(%rip), %rdi     # 0xc5178
movl %r14d, %esi
xorl %eax, %eax
callq 0x90323
callq 0x93890
movl (%r15), %esi
shrl $0x1f, %esi
leaq 0x53ba5(%rip), %rdi     # 0xb8f8a
xorl %eax, %eax
callq 0x90323
xorps %xmm0, %xmm0
cvtss2sd 0x4(%r15), %xmm0
leaq 0x5fd8e(%rip), %rdi     # 0xc518a
movb $0x1, %al
callq 0x90323
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 0x5fd6e(%rip), %rdi     # 0xc5199
movb $0x4, %al
callq 0x90323
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 0x5fd5a(%rip), %rdi     # 0xc51b7
movb $0x4, %al
callq 0x90323
callq 0x56bca
incl %r12d
cmpl $0x100, %r12d           # imm = 0x100
jne 0x652e0
movss -0x70(%rbp), %xmm0
mulss 0x50432(%rip), %xmm0    # 0xb58b8
movss %xmm0, -0x38(%rbp)
movss %xmm0, -0x34(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x93437
callq 0xa1609
leaq 0x5fc53(%rip), %r12     # 0xc50f8
addl $0x100, %ebx            # imm = 0x100
cmpl $0x10000, %ebx          # imm = 0x10000
jb 0x65202
callq 0xa1609
callq 0xa1609
callq 0x55082
movq -0xa8(%rbp), %rcx
incq %rcx
movq -0xa0(%rbp), %rbx
movslq 0x40(%rbx), %rax
cmpq %rax, %rcx
jl 0x64fd8
movl 0x28(%rbx), %edx
movl 0x2c(%rbx), %ecx
leaq 0x57866(%rip), %rdi     # 0xbcd57
leaq 0x5786d(%rip), %rsi     # 0xbcd65
xorl %eax, %eax
callq 0xa075e
testb %al, %al
je 0x65571
movaps 0x4fa66(%rip), %xmm0    # 0xb4f70
leaq -0x38(%rbp), %r8
movups %xmm0, (%r8)
movaps 0x55a47(%rip), %xmm0    # 0xbaf60
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 0x9239a
callq 0xa1609
leaq 0x5780a(%rip), %rdi     # 0xbcd82
callq 0x65d18
leaq 0x5792e(%rip), %rdi     # 0xbceb2
leaq 0x91f9d(%rip), %rsi     # 0xf7528
leaq 0x57131(%rip), %rdx     # 0xbc6c3
movss 0x55942(%rip), %xmm0    # 0xbaedc
movss 0x5034a(%rip), %xmm1    # 0xb58ec
movss 0x502be(%rip), %xmm2    # 0xb5868
movl $0x10, %ecx
callq 0x964af
testb %al, %al
je 0x655c5
movss 0x91f68(%rip), %xmm0    # 0xf7528
callq 0x54790
movq -0x98(%rbp), %rsi
addq $0xa8, %rsi
leaq 0x578e5(%rip), %rdi     # 0xbcebf
leaq 0x570e2(%rip), %rdx     # 0xbc6c3
movss 0x558f3(%rip), %xmm0    # 0xbaedc
movd 0x502fb(%rip), %xmm1    # 0xb58ec
movss 0x5026f(%rip), %xmm2    # 0xb5868
movl $0x10, %ecx
callq 0x964af
callq 0x560da
callq 0xa5cd8
leaq 0x578b8(%rip), %rdi     # 0xbcecc
xorl %esi, %esi
xorl %edx, %edx
callq 0xa52b9
testb %al, %al
movq -0x40(%rbp), %r12
je 0x658a3
leaq 0xb8(%r12), %rsi
leaq 0x5789e(%rip), %rdi     # 0xbced6
callq 0x9286b
movss 0x4f98b(%rip), %xmm1    # 0xb4fd0
xorps %xmm0, %xmm0
callq 0x5591d
leaq 0x57895(%rip), %rdi     # 0xbcee9
callq 0x65d18
leaq 0xb9(%r12), %rsi
leaq 0x578e4(%rip), %rdi     # 0xbcf4c
callq 0x9286b
xorps %xmm0, %xmm0
movss 0x4f958(%rip), %xmm1    # 0xb4fd0
callq 0x5591d
leaq 0x578e7(%rip), %rdi     # 0xbcf6b
callq 0x65d18
leaq 0xba(%r12), %rsi
leaq 0x57945(%rip), %rdi     # 0xbcfdd
callq 0x9286b
movss 0x501df(%rip), %xmm0    # 0xb5884
callq 0x55d0a
leaq 0xbc(%r12), %rbx
leaq 0x57936(%rip), %rdi     # 0xbcfef
leaq 0x57003(%rip), %rdx     # 0xbc6c3
movss 0x55818(%rip), %xmm0    # 0xbaee0
movss 0x501b8(%rip), %xmm1    # 0xb5888
movss 0x4f930(%rip), %xmm2    # 0xb5008
movq %rbx, %rsi
xorl %ecx, %ecx
callq 0x964af
movss 0x5019e(%rip), %xmm0    # 0xb5888
ucomiss 0xbc(%r12), %xmm0
jbe 0x656fb
movl $0x3dcccccd, (%rbx)     # imm = 0x3DCCCCCD
movq %r12, %rsi
addq $0xc0, %rsi
leaq 0x57900(%rip), %rdi     # 0xbd00c
leaq 0x56fb0(%rip), %rdx     # 0xbc6c3
movss 0x557c9(%rip), %xmm0    # 0xbaee4
movss 0x50165(%rip), %xmm1    # 0xb5888
movss 0x4f8dd(%rip), %xmm2    # 0xb5008
xorl %r15d, %r15d
xorl %ecx, %ecx
callq 0x964af
callq 0x519e4
testb %al, %al
je 0x6584d
callq 0x559ee
leaq -0x38(%rbp), %rbx
movlps %xmm0, (%rbx)
leaq -0x80(%rbp), %rdx
movq $0x0, (%rdx)
movq %rbx, %rdi
xorl %esi, %esi
callq 0x545cf
callq 0x56a72
callq 0x559ee
movaps %xmm0, -0x70(%rbp)
callq 0x54730
movq %rax, %r14
movaps -0x70(%rbp), %xmm0
shufps $0x55, %xmm0, %xmm0     # xmm0 = xmm0[1,1,1,1]
addss 0x5575f(%rip), %xmm0    # 0xbaee8
movaps %xmm0, -0x90(%rbp)
movss 0x4f870(%rip), %xmm0    # 0xb5008
movaps %xmm0, %xmm1
movss %xmm0, -0x50(%rbp)
xorps %xmm2, %xmm2
cvtsi2ss %r15d, %xmm2
mulss 0x5573c(%rip), %xmm2    # 0xbaeec
divss 0x4f854(%rip), %xmm2    # 0xb500c
movss 0x4f848(%rip), %xmm0    # 0xb5008
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 0x4f7f4(%rip), %xmm0    # 0xb4fe4
callq 0x43bca
movq %r14, %rdi
movq %rbx, %rsi
movss -0x48(%rbp), %xmm0
movl %eax, %edx
xorl %ecx, %ecx
movss 0x4f7d8(%rip), %xmm1    # 0xb4fe4
callq 0x790dc
movss -0x48(%rbp), %xmm0
addss %xmm0, %xmm0
addss 0x4f7e6(%rip), %xmm0    # 0xb5008
addss -0x50(%rbp), %xmm0
incl %r15d
cmpl $0x7, %r15d
jne 0x65798
leaq -0x38(%rbp), %rdi
movss %xmm0, (%rdi)
movl $0x43200000, 0x4(%rdi)  # imm = 0x43200000
callq 0x93437
callq 0x56bca
movss 0x4f77b(%rip), %xmm1    # 0xb4fd0
xorps %xmm0, %xmm0
callq 0x5591d
leaq 0x577c1(%rip), %rdi     # 0xbd025
callq 0x65d18
leaq 0x5781b(%rip), %rdi     # 0xbd08b
leaq 0x56e4c(%rip), %rdx     # 0xbc6c3
movss 0x5565d(%rip), %xmm0    # 0xbaedc
movd 0x4f779(%rip), %xmm1    # 0xb5000
movss 0x4f755(%rip), %xmm2    # 0xb4fe4
movq %r12, %rsi
xorl %ecx, %ecx
callq 0x964af
callq 0x560da
callq 0xa5cd8
callq 0xa3eca
callq 0x560da
addq $0xb8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x9685a(%rip), %rdi     # 0xfc120
callq 0xc2c0
testl %eax, %eax
je 0x644de
leaq 0x96432(%rip), %rdi     # 0xfbd0c
callq 0x4036c
leaq 0x9683a(%rip), %rdi     # 0xfc120
callq 0xc4c0
movq -0x40(%rbp), %r13
jmp 0x644de
leaq 0x9694d(%rip), %rdi     # 0xfc248
callq 0xc2c0
testl %eax, %eax
je 0x64d49
leaq 0x96821(%rip), %rdi     # 0xfc130
leaq 0x4f607(%rip), %rsi     # 0xb4f1d
callq 0x42cea
leaq 0xcff0(%rip), %rdi      # 0x72912
leaq 0x96807(%rip), %rsi     # 0xfc130
leaq 0x91bc8(%rip), %rdx     # 0xf74f8
callq 0xc760
leaq 0x9690c(%rip), %rdi     # 0xfc248
callq 0xc4c0
jmp 0x64d49
movq %rax, %rbx
leaq 0x968f8(%rip), %rdi     # 0xfc248
jmp 0x6595c
movq %rax, %rbx
leaq 0x967c4(%rip), %rdi     # 0xfc120
callq 0xc3a0
movq %rbx, %rdi
callq 0xc560