// File: /workspace/github_cpp_makefile_star2_O1/donfreiday[P]gb/./imgui/imgui_demo.cpp
// Function: ImGui::ShowStyleEditor(ImGuiStyle*)
void ImGui::ShowStyleEditor(ImGuiStyle* ref)
{
    ImGuiStyle& style = ImGui::GetStyle();

    const ImGuiStyle def; // Default style
    if (ImGui::Button("Revert Style"))
        style = ref ? *ref : def;
    if (ref)
    {
        ImGui::SameLine();
        if (ImGui::Button("Save Style"))
            *ref = style;
    }

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

    if (ImGui::TreeNode("Rendering"))
    {
        ImGui::Checkbox("Anti-aliased lines", &style.AntiAliasedLines);
        ImGui::Checkbox("Anti-aliased shapes", &style.AntiAliasedShapes);
        ImGui::PushItemWidth(100);
        ImGui::DragFloat("Curve Tessellation Tolerance", &style.CurveTessellationTol, 0.02f, 0.10f, FLT_MAX, NULL, 2.0f);
        if (style.CurveTessellationTol < 0.0f) style.CurveTessellationTol = 0.10f;
        ImGui::PopItemWidth();
        ImGui::TreePop();
    }

    if (ImGui::TreeNode("Sizes"))
    {
        ImGui::SliderFloat("Alpha", &style.Alpha, 0.20f, 1.0f, "%.2f");                 // Not exposing zero here so user doesn't "lose" the UI. But application code could have a toggle to switch between zero and non-zero.
        ImGui::SliderFloat2("WindowPadding", (float*)&style.WindowPadding, 0.0f, 20.0f, "%.0f");
        ImGui::SliderFloat("WindowRounding", &style.WindowRounding, 0.0f, 16.0f, "%.0f");
        ImGui::SliderFloat("ChildWindowRounding", &style.ChildWindowRounding, 0.0f, 16.0f, "%.0f");
        ImGui::SliderFloat2("FramePadding", (float*)&style.FramePadding, 0.0f, 20.0f, "%.0f");
        ImGui::SliderFloat("FrameRounding", &style.FrameRounding, 0.0f, 16.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("ScrollbarWidth", &style.ScrollbarSize, 1.0f, 20.0f, "%.0f");
        ImGui::SliderFloat("ScrollbarRounding", &style.ScrollbarRounding, 0.0f, 16.0f, "%.0f");
        ImGui::SliderFloat("GrabMinSize", &style.GrabMinSize, 1.0f, 20.0f, "%.0f");
        ImGui::SliderFloat("GrabRounding", &style.GrabRounding, 0.0f, 16.0f, "%.0f");
        ImGui::TreePop();
    }

    if (ImGui::TreeNode("Colors"))
    {
        static int output_dest = 0;
        static bool output_only_modified = false;
        if (ImGui::Button("Output Colors"))
        {
            if (output_dest == 0)
                ImGui::LogToClipboard();
            else
                ImGui::LogToTTY();
            ImGui::LogText("ImGuiStyle& style = ImGui::GetStyle();" IM_NEWLINE);
            for (int i = 0; i < ImGuiCol_COUNT; i++)
            {
                const ImVec4& col = style.Colors[i];
                const char* name = ImGui::GetStyleColName(i);
                if (!output_only_modified || memcmp(&col, (ref ? &ref->Colors[i] : &def.Colors[i]), sizeof(ImVec4)) != 0)
                    ImGui::LogText("style.Colors[ImGuiCol_%s]%*s= ImVec4(%.2ff, %.2ff, %.2ff, %.2ff);" IM_NEWLINE, name, 22 - (int)strlen(name), "", col.x, col.y, col.z, col.w);
            }
            ImGui::LogFinish();
        }
        ImGui::SameLine(); ImGui::PushItemWidth(120); ImGui::Combo("##output_type", &output_dest, "To Clipboard\0To TTY"); ImGui::PopItemWidth();
        ImGui::SameLine(); ImGui::Checkbox("Only Modified Fields", &output_only_modified);

        static ImGuiColorEditMode edit_mode = ImGuiColorEditMode_RGB;
        ImGui::RadioButton("RGB", &edit_mode, ImGuiColorEditMode_RGB);
        ImGui::SameLine();
        ImGui::RadioButton("HSV", &edit_mode, ImGuiColorEditMode_HSV);
        ImGui::SameLine();
        ImGui::RadioButton("HEX", &edit_mode, ImGuiColorEditMode_HEX);
        //ImGui::Text("Tip: Click on colored square to change edit mode.");

        static ImGuiTextFilter filter;
        filter.Draw("Filter colors", 200);

        ImGui::BeginChild("#colors", ImVec2(0, 300), true);
        ImGui::PushItemWidth(-160);
        ImGui::ColorEditMode(edit_mode);
        for (int i = 0; i < ImGuiCol_COUNT; i++)
        {
            const char* name = ImGui::GetStyleColName(i);
            if (!filter.PassFilter(name))
                continue;
            ImGui::PushID(i);
            ImGui::ColorEdit4(name, (float*)&style.Colors[i], true);
            if (memcmp(&style.Colors[i], (ref ? &ref->Colors[i] : &def.Colors[i]), sizeof(ImVec4)) != 0)
            {
                ImGui::SameLine(); if (ImGui::Button("Revert")) style.Colors[i] = ref ? ref->Colors[i] : def.Colors[i];
                if (ref) { ImGui::SameLine(); if (ImGui::Button("Save")) ref->Colors[i] = style.Colors[i]; }
            }
            ImGui::PopID();
        }
        ImGui::PopItemWidth();
        ImGui::EndChild();

        ImGui::TreePop();
    }

    ImGui::PopItemWidth();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x338, %rsp            # imm = 0x338
movq %rdi, %r13
callq 0xb1f2
movq %rax, %r14
leaq -0x360(%rbp), %r15
movq %r15, %rdi
callq 0x7d8c
leaq -0x30(%rbp), %rsi
movq $0x0, (%rsi)
leaq 0x16b8d(%rip), %rdi     # 0x41bb1
callq 0x168d6
testb %al, %al
je 0x2b044
testq %r13, %r13
movq %r13, %rsi
cmoveq %r15, %rsi
movl $0x328, %edx            # imm = 0x328
movq %r14, %rdi
callq 0x7080
testq %r13, %r13
je 0x2b084
movd 0x1233b(%rip), %xmm1    # 0x3d38c
xorps %xmm0, %xmm0
callq 0x163f1
leaq -0x30(%rbp), %rsi
movq $0x0, (%rsi)
leaq 0x16b53(%rip), %rdi     # 0x41bbe
callq 0x168d6
testb %al, %al
je 0x2b084
movl $0x328, %edx            # imm = 0x328
movq %r13, %rdi
movq %r14, %rsi
callq 0x7080
callq 0x155cf
mulss 0x1472b(%rip), %xmm0    # 0x3f7bc
callq 0x9d0e
leaq 0x16b2c(%rip), %rdi     # 0x41bc9
callq 0x1822a
testb %al, %al
je 0x2b122
leaq 0x70(%r14), %rsi
leaq 0x16b22(%rip), %rdi     # 0x41bd3
callq 0x1da36
leaq 0x71(%r14), %rsi
leaq 0x16b25(%rip), %rdi     # 0x41be6
callq 0x1da36
movss 0x1239a(%rip), %xmm0    # 0x3d468
callq 0x9d0e
leaq 0x74(%r14), %rbx
leaq 0x16b1c(%rip), %rdi     # 0x41bfa
movss 0x146da(%rip), %xmm0    # 0x3f7c0
movd 0x122c6(%rip), %xmm1    # 0x3d3b4
movss 0x122ca(%rip), %xmm2    # 0x3d3c0
movss 0x122c6(%rip), %xmm3    # 0x3d3c4
movq %rbx, %rsi
xorl %edx, %edx
callq 0x1c4a4
xorps %xmm0, %xmm0
ucomiss 0x74(%r14), %xmm0
jbe 0x2b118
movl $0x3dcccccd, (%rbx)     # imm = 0x3DCCCCCD
callq 0x9e68
callq 0x22b95
leaq 0x16aee(%rip), %rdi     # 0x41c17
callq 0x1822a
testb %al, %al
je 0x2b359
leaq 0x16ae0(%rip), %rdi     # 0x41c1d
leaq 0x158bd(%rip), %rdx     # 0x40a01
movss 0x122b0(%rip), %xmm0    # 0x3d3fc
movss 0x1222c(%rip), %xmm1    # 0x3d380
movq %r14, %rsi
movaps %xmm1, %xmm2
callq 0x1b0db
leaq 0x4(%r14), %rsi
leaq 0x16ab9(%rip), %rdi     # 0x41c23
leaq 0x15d8a(%rip), %r12     # 0x40efb
movss 0x145e7(%rip), %xmm1    # 0x3f760
xorps %xmm0, %xmm0
movq %r12, %rdx
movss 0x121f9(%rip), %xmm2    # 0x3d380
callq 0x1bf6a
leaq 0x14(%r14), %rsi
leaq 0x16a9f(%rip), %rdi     # 0x41c36
movss 0x12251(%rip), %xmm1    # 0x3d3f0
xorps %xmm0, %xmm0
movq %r12, %rdx
movss 0x121d3(%rip), %xmm2    # 0x3d380
callq 0x1b0db
leaq 0x1c(%r14), %rsi
leaq 0x16a74(%rip), %rdi     # 0x41c31
xorps %xmm0, %xmm0
movss 0x12228(%rip), %xmm1    # 0x3d3f0
movq %r12, %rdx
movss 0x121ad(%rip), %xmm2    # 0x3d380
callq 0x1b0db
leaq 0x20(%r14), %rsi
leaq 0x16a62(%rip), %rdi     # 0x41c45
xorps %xmm0, %xmm0
movss 0x14572(%rip), %xmm1    # 0x3f760
movq %r12, %rdx
movss 0x12187(%rip), %xmm2    # 0x3d380
callq 0x1bf6a
leaq 0x28(%r14), %rsi
leaq 0x16a49(%rip), %rdi     # 0x41c52
xorps %xmm0, %xmm0
movss 0x121dc(%rip), %xmm1    # 0x3d3f0
movq %r12, %rdx
movss 0x12161(%rip), %xmm2    # 0x3d380
callq 0x1b0db
leaq 0x2c(%r14), %rsi
leaq 0x16a31(%rip), %rdi     # 0x41c60
xorps %xmm0, %xmm0
movss 0x14526(%rip), %xmm1    # 0x3f760
movq %r12, %rdx
movss 0x1213b(%rip), %xmm2    # 0x3d380
callq 0x1bf6a
leaq 0x34(%r14), %rsi
leaq 0x16a17(%rip), %rdi     # 0x41c6c
xorps %xmm0, %xmm0
movss 0x14500(%rip), %xmm1    # 0x3f760
movq %r12, %rdx
movss 0x12115(%rip), %xmm2    # 0x3d380
callq 0x1bf6a
leaq 0x3c(%r14), %rsi
leaq 0x16a02(%rip), %rdi     # 0x41c7d
movss 0x121bd(%rip), %xmm1    # 0x3d440
xorps %xmm0, %xmm0
movq %r12, %rdx
movss 0x120ef(%rip), %xmm2    # 0x3d380
callq 0x1bf6a
leaq 0x48(%r14), %rsi
leaq 0x169ee(%rip), %rdi     # 0x41c8f
movss 0x121b3(%rip), %xmm1    # 0x3d45c
xorps %xmm0, %xmm0
movq %r12, %rdx
movss 0x120c9(%rip), %xmm2    # 0x3d380
callq 0x1b0db
leaq 0x50(%r14), %rsi
leaq 0x169d6(%rip), %rdi     # 0x41c9d
movss 0x120b1(%rip), %xmm0    # 0x3d380
movss 0x14489(%rip), %xmm1    # 0x3f760
movq %r12, %rdx
movaps %xmm0, %xmm2
callq 0x1b0db
leaq 0x54(%r14), %rsi
leaq 0x169bf(%rip), %rdi     # 0x41cac
xorps %xmm0, %xmm0
movss 0x120f8(%rip), %xmm1    # 0x3d3f0
movq %r12, %rdx
movss 0x1207d(%rip), %xmm2    # 0x3d380
callq 0x1b0db
leaq 0x58(%r14), %rsi
leaq 0x169ab(%rip), %rdi     # 0x41cbe
movss 0x12065(%rip), %xmm0    # 0x3d380
movss 0x1443d(%rip), %xmm1    # 0x3f760
movq %r12, %rdx
movaps %xmm0, %xmm2
callq 0x1b0db
leaq 0x5c(%r14), %rsi
leaq 0x16991(%rip), %rdi     # 0x41cca
xorps %xmm0, %xmm0
movd 0x120ac(%rip), %xmm1    # 0x3d3f0
movq %r12, %rdx
movss 0x12031(%rip), %xmm2    # 0x3d380
callq 0x1b0db
callq 0x22b95
leaq 0x1697e(%rip), %rdi     # 0x41cde
callq 0x1822a
testb %al, %al
je 0x2b69e
leaq -0x30(%rbp), %rsi
movq $0x0, (%rsi)
leaq 0x16958(%rip), %rdi     # 0x41cd7
callq 0x168d6
testb %al, %al
movq %r13, -0x38(%rbp)
je 0x2b460
cmpl $0x0, 0x34451(%rip)     # 0x5f7e8
je 0x2b3a5
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x17008
jmp 0x2b3af
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x170ee
leaq 0x1692f(%rip), %rdi     # 0x41ce5
xorl %ebx, %ebx
xorl %eax, %eax
callq 0xe031
testq %r13, %r13
cmovneq %r13, %r15
leaq 0x78(%r14), %r13
addq $0x78, %r15
movl %ebx, %edi
callq 0x154c7
movq %rax, %r12
cmpb $0x1, 0x3440d(%rip)     # 0x5f7ec
jne 0x2b3fb
movdqu (%r13), %xmm0
movdqu (%r15), %xmm1
pcmpeqb %xmm0, %xmm1
pmovmskb %xmm1, %eax
cmpl $0xffff, %eax           # imm = 0xFFFF
je 0x2b446
movq %r12, %rdi
callq 0x72f0
movl $0x16, %edx
subl %eax, %edx
xorps %xmm0, %xmm0
cvtss2sd (%r13), %xmm0
xorps %xmm1, %xmm1
cvtss2sd 0x4(%r13), %xmm1
xorps %xmm2, %xmm2
cvtss2sd 0x8(%r13), %xmm2
xorps %xmm3, %xmm3
cvtss2sd 0xc(%r13), %xmm3
leaq 0x168d8(%rip), %rdi     # 0x41d0d
movq %r12, %rsi
leaq 0x1607a(%rip), %rcx     # 0x414b9
movb $0x4, %al
callq 0xe031
incq %rbx
addq $0x10, %r13
addq $0x10, %r15
cmpq $0x2b, %rbx
jne 0x2b3ce
callq 0x14b49
movss 0x11f24(%rip), %xmm1    # 0x3d38c
xorps %xmm0, %xmm0
callq 0x163f1
movss 0x11f38(%rip), %xmm0    # 0x3d3b0
callq 0x9d0e
leaq 0x168cc(%rip), %rdi     # 0x41d50
leaq 0x3435d(%rip), %rsi     # 0x5f7e8
leaq 0x172ea(%rip), %rdx     # 0x4277c
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
callq 0x20380
callq 0x9e68
xorps %xmm0, %xmm0
movss 0x11ee0(%rip), %xmm1    # 0x3d38c
callq 0x163f1
leaq 0x168a6(%rip), %rdi     # 0x41d5e
leaq 0x3432d(%rip), %rsi     # 0x5f7ec
callq 0x1da36
leaq 0x132c6(%rip), %rdi     # 0x3e791
leaq 0x3431e(%rip), %rbx     # 0x5f7f0
movq %rbx, %rsi
xorl %edx, %edx
callq 0x1e416
xorps %xmm0, %xmm0
movss 0x11ea5(%rip), %xmm1    # 0x3d38c
callq 0x163f1
leaq 0x132a2(%rip), %rdi     # 0x3e795
movq %rbx, %rsi
movl $0x1, %edx
callq 0x1e416
xorps %xmm0, %xmm0
movd 0x11e81(%rip), %xmm1    # 0x3d38c
callq 0x163f1
leaq 0x13282(%rip), %rdi     # 0x3e799
movq %rbx, %rsi
movl $0x2, %edx
callq 0x1e416
movb 0x343e6(%rip), %al      # 0x5f910
testb %al, %al
je 0x2b6b5
leaq 0x342bf(%rip), %rdi     # 0x5f7f8
leaq 0x16833(%rip), %rsi     # 0x41d73
movss 0x1426c(%rip), %xmm0    # 0x3f7b4
callq 0x9c90
movabsq $0x4396000000000000, %rax # imm = 0x4396000000000000
leaq -0x30(%rbp), %rsi
movq %rax, (%rsi)
leaq 0x1681c(%rip), %rdi     # 0x41d81
xorl %r13d, %r13d
movl $0x1, %edx
xorl %ecx, %ecx
callq 0x132b9
movd 0x14248(%rip), %xmm0    # 0x3f7c4
callq 0x9d0e
movl 0x34269(%rip), %edi     # 0x5f7f0
callq 0x22581
addq $0x78, %r14
movq -0x38(%rbp), %rax
leaq 0x78(%rax), %r12
testq %rax, %rax
leaq -0x2e8(%rbp), %r15
cmovneq %r12, %r15
movl %r13d, %edi
callq 0x154c7
movq %rax, %rbx
leaq 0x34240(%rip), %rdi     # 0x5f7f8
movq %rax, %rsi
xorl %edx, %edx
callq 0xa13c
testb %al, %al
je 0x2b676
movl %r13d, %edi
callq 0x18358
movq %rbx, %rdi
movq %r14, %rsi
movl $0x1, %edx
callq 0x21d54
movdqu (%r14), %xmm0
movdqu (%r15), %xmm1
pcmpeqb %xmm0, %xmm1
pmovmskb %xmm1, %eax
cmpl $0xffff, %eax           # imm = 0xFFFF
je 0x2b671
pxor %xmm0, %xmm0
movd 0x11d85(%rip), %xmm1    # 0x3d38c
callq 0x163f1
movq $0x0, -0x30(%rbp)
leaq 0x1676e(%rip), %rdi     # 0x41d89
leaq -0x30(%rbp), %rsi
callq 0x168d6
testb %al, %al
je 0x2b632
movdqu (%r15), %xmm0
movdqu %xmm0, (%r14)
cmpq $0x0, -0x38(%rbp)
je 0x2b671
pxor %xmm0, %xmm0
movd 0x11d47(%rip), %xmm1    # 0x3d38c
callq 0x163f1
movq $0x0, -0x30(%rbp)
leaq 0x16737(%rip), %rdi     # 0x41d90
leaq -0x30(%rbp), %rsi
callq 0x168d6
testb %al, %al
je 0x2b671
movdqu (%r14), %xmm0
movdqu %xmm0, (%r12)
callq 0x16fc0
incq %r13
addq $0x10, %r12
addq $0x10, %r14
addq $0x10, %r15
cmpq $0x2b, %r13
jne 0x2b5a6
callq 0x9e68
callq 0x134d7
callq 0x22b95
callq 0x9e68
addq $0x338, %rsp            # imm = 0x338
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x34254(%rip), %rdi     # 0x5f910
callq 0x72a0
testl %eax, %eax
je 0x2b532
leaq 0x34128(%rip), %rdi     # 0x5f7f8
leaq 0x15de2(%rip), %rsi     # 0x414b9
callq 0x9ac8
leaq 0xa7(%rip), %rdi        # 0x2b78a
leaq 0x3410e(%rip), %rsi     # 0x5f7f8
leaq 0x29d97(%rip), %rdx     # 0x55488
callq 0x7680
leaq 0x34213(%rip), %rdi     # 0x5f910
callq 0x7440
jmp 0x2b532
movq %rax, %rbx
leaq 0x341ff(%rip), %rdi     # 0x5f910
callq 0x7330
movq %rbx, %rdi
callq 0x74d0