LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: donfreiday[P]gb/./imgui/imgui.cpp
// Function: ImGui::LogButtons()
void ImGui::LogButtons()
{
    ImGuiState& g = *GImGui;

    ImGui::PushID("LogButtons");
    const bool log_to_tty = ImGui::Button("Log To TTY");
    ImGui::SameLine();
    const bool log_to_file = ImGui::Button("Log To File");
    ImGui::SameLine();
    const bool log_to_clipboard = ImGui::Button("Log To Clipboard");
    ImGui::SameLine();

    ImGui::PushItemWidth(80.0f);
    ImGui::PushAllowKeyboardFocus(false);
    ImGui::SliderInt("Depth", &g.LogAutoExpandMaxDepth, 0, 9, NULL);
    ImGui::PopAllowKeyboardFocus();
    ImGui::PopItemWidth();
    ImGui::PopID();

    // Start logging at the end of the function so that the buttons don't appear in the log
    if (log_to_tty)
        LogToTTY(g.LogAutoExpandMaxDepth);
    if (log_to_file)
        LogToFile(g.LogAutoExpandMaxDepth, g.IO.LogFilename);
    if (log_to_clipboard)
        LogToClipboard(g.LogAutoExpandMaxDepth);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq 0x5dd41(%rip), %rax     # 0x794c0
movq %rax, -0x8(%rbp)
leaq 0x40686(%rip), %rdi     # 0x5be10
callq 0x1b8c0
leaq -0x14(%rbp), %rdi
xorps %xmm1, %xmm1
movaps %xmm1, %xmm0
callq 0x2d280
leaq 0x40676(%rip), %rdi     # 0x5be1b
leaq -0x14(%rbp), %rsi
callq 0x1ad10
andb $0x1, %al
movb %al, -0x9(%rbp)
xorps %xmm0, %xmm0
movss 0x3f8be(%rip), %xmm1    # 0x5b07c
callq 0x1a5e0
leaq -0x20(%rbp), %rdi
xorps %xmm1, %xmm1
movaps %xmm1, %xmm0
callq 0x2d280
leaq 0x4064d(%rip), %rdi     # 0x5be26
leaq -0x20(%rbp), %rsi
callq 0x1ad10
andb $0x1, %al
movb %al, -0x15(%rbp)
xorps %xmm0, %xmm0
movss 0x3f88a(%rip), %xmm1    # 0x5b07c
callq 0x1a5e0
leaq -0x2c(%rbp), %rdi
xorps %xmm1, %xmm1
movaps %xmm1, %xmm0
callq 0x2d280
leaq 0x40625(%rip), %rdi     # 0x5be32
leaq -0x2c(%rbp), %rsi
callq 0x1ad10
andb $0x1, %al
movb %al, -0x21(%rbp)
xorps %xmm0, %xmm0
movss 0x3f856(%rip), %xmm1    # 0x5b07c
callq 0x1a5e0
movss 0x3f8cd(%rip), %xmm0    # 0x5b100
callq 0xafc0
xorl %edi, %edi
callq 0x187a0
movq -0x8(%rbp), %rsi
addq $0x2c04, %rsi           # imm = 0x2C04
leaq 0x405f2(%rip), %rdi     # 0x5be43
xorl %edx, %edx
movl $0x9, %ecx
xorl %eax, %eax
movl %eax, %r8d
callq 0x1b910
callq 0x187f0
callq 0xb0f0
callq 0x1b550
testb $0x1, -0x9(%rbp)
je 0x1b886
movq -0x8(%rbp), %rax
movl 0x2c04(%rax), %edi
callq 0x1b580
testb $0x1, -0x15(%rbp)
je 0x1b8a3
movq -0x8(%rbp), %rax
movl 0x2c04(%rax), %edi
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rsi
callq 0x1b600
testb $0x1, -0x21(%rbp)
je 0x1b8b8
movq -0x8(%rbp), %rax
movl 0x2c04(%rax), %edi
callq 0x1b6f0
addq $0x30, %rsp
popq %rbp
retq
nop
// File: donfreiday[P]gb/./imgui/imgui.cpp
// Function: ImGui::SliderInt(char const*, int*, int, int, char const*)
bool ImGui::SliderInt(const char* label, int* v, int v_min, int v_max, const char* display_format)
{
    if (!display_format)
        display_format = "%.0f";
    float v_f = (float)*v;
    bool value_changed = ImGui::SliderFloat(label, &v_f, (float)v_min, (float)v_max, display_format, 1.0f);
    *v = (int)v_f;
    return value_changed;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movl %ecx, -0x18(%rbp)
movq %r8, -0x20(%rbp)
cmpq $0x0, -0x20(%rbp)
jne 0x1b93c
leaq 0x43358(%rip), %rax     # 0x5ec90
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rax
cvtsi2ssl (%rax), %xmm0
movss %xmm0, -0x24(%rbp)
movq -0x8(%rbp), %rdi
cvtsi2ssl -0x14(%rbp), %xmm0
cvtsi2ssl -0x18(%rbp), %xmm1
movq -0x20(%rbp), %rdx
leaq -0x24(%rbp), %rsi
movss 0x3f6b1(%rip), %xmm2    # 0x5b018
callq 0x20790
andb $0x1, %al
movb %al, -0x25(%rbp)
cvttss2si -0x24(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, (%rax)
movb -0x25(%rbp), %al
andb $0x1, %al
addq $0x30, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: donfreiday[P]gb/./imgui/imgui.cpp
// Function: ImGui::Bullet()
void ImGui::Bullet()
{
    ImGuiWindow* window = GetCurrentWindow();
    if (window->SkipItems)
        return;

    ImGuiState& g = *GImGui;
    const ImGuiStyle& style = g.Style;
    const float line_height = g.FontSize;
    const ImRect bb(window->DC.CursorPos, window->DC.CursorPos + ImVec2(line_height, line_height));
    ItemSize(bb);
    if (!ItemAdd(bb, NULL))
    {
        ImGui::SameLine(0, -1);
        return;
    }

    // Render
    const float bullet_size = line_height*0.15f;
    window->DrawList->AddCircleFilled(bb.Min + ImVec2(style.FramePadding.x + line_height*0.5f, line_height*0.5f), bullet_size, window->Color(ImGuiCol_Text));

    // Stay on same line
    ImGui::SameLine(0, -1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x80, %rsp
callq 0x2e220
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
testb $0x1, 0x74(%rax)
je 0x1c333
jmp 0x1c480
movq 0x5d186(%rip), %rax     # 0x794c0
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
addq $0x13e8, %rax           # imm = 0x13E8
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rax
movss 0x1718(%rax), %xmm0
movss %xmm0, -0x1c(%rbp)
movq -0x8(%rbp), %rax
addq $0xa8, %rax
movq %rax, -0x58(%rbp)
movss -0x1c(%rbp), %xmm1
leaq -0x3c(%rbp), %rdi
movq %rdi, -0x60(%rbp)
movaps %xmm1, %xmm0
callq 0x2d280
movq -0x60(%rbp), %rsi
movq -0x58(%rbp), %rdi
callq 0xc7e0
movq -0x58(%rbp), %rsi
movlpd %xmm0, -0x34(%rbp)
leaq -0x2c(%rbp), %rdi
leaq -0x34(%rbp), %rdx
callq 0x2eb40
leaq -0x2c(%rbp), %rdi
xorps %xmm0, %xmm0
callq 0xc060
leaq -0x2c(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xc0a0
testb $0x1, %al
jne 0x1c3d5
xorps %xmm0, %xmm0
movss 0x3ecb1(%rip), %xmm1    # 0x5b07c
callq 0x1a5e0
jmp 0x1c480
movss -0x1c(%rbp), %xmm0
movss 0x3ec66(%rip), %xmm1    # 0x5b048
mulss %xmm1, %xmm0
movss %xmm0, -0x40(%rbp)
movq -0x8(%rbp), %rax
movq 0x270(%rax), %rax
movq %rax, -0x70(%rbp)
movq -0x18(%rbp), %rax
movss 0x20(%rax), %xmm2
movss -0x1c(%rbp), %xmm1
movss 0x3ec14(%rip), %xmm0    # 0x5b024
mulss %xmm0, %xmm1
movaps %xmm1, %xmm0
addss %xmm2, %xmm0
leaq -0x50(%rbp), %rdi
movq %rdi, -0x78(%rbp)
callq 0x2d280
movq -0x78(%rbp), %rsi
leaq -0x2c(%rbp), %rdi
callq 0xc7e0
movlpd %xmm0, -0x48(%rbp)
movss -0x40(%rbp), %xmm0
movss %xmm0, -0x64(%rbp)
movq -0x8(%rbp), %rdi
xorl %esi, %esi
movss 0x3ebc6(%rip), %xmm0    # 0x5b018
callq 0x2ea40
movq -0x70(%rbp), %rdi
movss -0x64(%rbp), %xmm0
movl %eax, %edx
leaq -0x48(%rbp), %rsi
movl $0xc, %ecx
callq 0x40980
xorps %xmm0, %xmm0
movss 0x3ec01(%rip), %xmm1    # 0x5b07c
callq 0x1a5e0
addq $0x80, %rsp
popq %rbp
retq
nopl (%rax)
// File: donfreiday[P]gb/./imgui/imgui.cpp
// Function: ImGui::TreeNodeV(char const*, char const*, __va_list_tag*)
bool ImGui::TreeNodeV(const char* str_id, const char* fmt, va_list args)
{
    ImGuiWindow* window = GetCurrentWindow();
    if (window->SkipItems)
        return false;

    ImGuiState& g = *GImGui;
    ImFormatStringV(g.TempBuffer, IM_ARRAYSIZE(g.TempBuffer), fmt, args);
    if (!str_id || !str_id[0])
        str_id = fmt;

    ImGui::PushID(str_id);
    const bool opened = ImGui::CollapsingHeader(g.TempBuffer, "", false);
    ImGui::PopID();

    if (opened)
        ImGui::TreePush(str_id);

    return opened;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
callq 0x2e220
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rax
testb $0x1, 0x74(%rax)
je 0x1c830
movb $0x0, -0x1(%rbp)
jmp 0x1c8b5
movq 0x5cc89(%rip), %rax     # 0x794c0
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rdi
addq $0x2df2, %rdi           # imm = 0x2DF2
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
movl $0xc01, %esi            # imm = 0xC01
callq 0x9680
cmpq $0x0, -0x10(%rbp)
je 0x1c868
movq -0x10(%rbp), %rax
cmpb $0x0, (%rax)
jne 0x1c870
movq -0x18(%rbp), %rax
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0x1b8c0
movq -0x30(%rbp), %rdi
addq $0x2df2, %rdi           # imm = 0x2DF2
leaq 0x429c3(%rip), %rsi     # 0x5f24e
xorl %ecx, %ecx
movl %ecx, %edx
callq 0x1bae0
andb $0x1, %al
movb %al, -0x31(%rbp)
callq 0x1b550
testb $0x1, -0x31(%rbp)
je 0x1c8ad
movq -0x10(%rbp), %rdi
callq 0x1c8c0
movb -0x31(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x40, %rsp
popq %rbp
retq
// File: donfreiday[P]gb/./imgui/imgui.cpp
// Function: ImGui::TreePush(char const*)
void ImGui::TreePush(const char* str_id)
{
    ImGuiWindow* window = GetCurrentWindow();
    ImGui::Indent();
    window->DC.TreeDepth++;
    PushID(str_id ? str_id : "#TreePush");
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
callq 0x2e220
movq %rax, -0x10(%rbp)
callq 0x2a350
movq -0x10(%rbp), %rax
movl 0xdc(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0xdc(%rax)
cmpq $0x0, -0x8(%rbp)
je 0x1c8fe
movq -0x8(%rbp), %rax
movq %rax, -0x18(%rbp)
jmp 0x1c90b
leaq 0x3fbad(%rip), %rax     # 0x5c4b2
movq %rax, -0x18(%rbp)
jmp 0x1c90b
movq -0x18(%rbp), %rdi
callq 0x1b8c0
addq $0x20, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: donfreiday[P]gb/./imgui/imgui.cpp
// Function: ImGui::TreeNodeV(void const*, char const*, __va_list_tag*)
bool ImGui::TreeNodeV(const void* ptr_id, const char* fmt, va_list args)
{
    ImGuiWindow* window = GetCurrentWindow();
    if (window->SkipItems)
        return false;

    ImGuiState& g = *GImGui;
    ImFormatStringV(g.TempBuffer, IM_ARRAYSIZE(g.TempBuffer), fmt, args);

    if (!ptr_id)
        ptr_id = fmt;

    ImGui::PushID(ptr_id);
    const bool opened = ImGui::CollapsingHeader(g.TempBuffer, "", false);
    ImGui::PopID();

    if (opened)
        ImGui::TreePush(ptr_id);

    return opened;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
callq 0x2e220
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rax
testb $0x1, 0x74(%rax)
je 0x1c9fd
movb $0x0, -0x1(%rbp)
jmp 0x1ca79
movq 0x5cabc(%rip), %rax     # 0x794c0
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rdi
addq $0x2df2, %rdi           # imm = 0x2DF2
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
movl $0xc01, %esi            # imm = 0xC01
callq 0x9680
cmpq $0x0, -0x10(%rbp)
jne 0x1ca34
movq -0x18(%rbp), %rax
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0x1b500
movq -0x30(%rbp), %rdi
addq $0x2df2, %rdi           # imm = 0x2DF2
leaq 0x427ff(%rip), %rsi     # 0x5f24e
xorl %ecx, %ecx
movl %ecx, %edx
callq 0x1bae0
andb $0x1, %al
movb %al, -0x31(%rbp)
callq 0x1b550
testb $0x1, -0x31(%rbp)
je 0x1ca71
movq -0x10(%rbp), %rdi
callq 0x1ca90
movb -0x31(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x40, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: donfreiday[P]gb/./imgui/imgui.cpp
// Function: ImGui::TreePush(void const*)
void ImGui::TreePush(const void* ptr_id)
{
    ImGuiWindow* window = GetCurrentWindow();
    ImGui::Indent();
    window->DC.TreeDepth++;
    PushID(ptr_id ? ptr_id : (const void*)"#TreePush");
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
callq 0x2e220
movq %rax, -0x10(%rbp)
callq 0x2a350
movq -0x10(%rbp), %rax
movl 0xdc(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0xdc(%rax)
cmpq $0x0, -0x8(%rbp)
je 0x1cace
movq -0x8(%rbp), %rax
movq %rax, -0x18(%rbp)
jmp 0x1cadb
leaq 0x3f9dd(%rip), %rax     # 0x5c4b2
movq %rax, -0x18(%rbp)
jmp 0x1cadb
movq -0x18(%rbp), %rdi
callq 0x1b500
addq $0x20, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: donfreiday[P]gb/./imgui/imgui.cpp
// Function: DataTypeFormatString(ImGuiDataType, void*, int, char*, int)
static inline void DataTypeFormatString(ImGuiDataType data_type, void* data_ptr, int decimal_precision, char* buf, int buf_size)
{
    if (data_type == ImGuiDataType_Int)
    {
        if (decimal_precision < 0)
            ImFormatString(buf, buf_size, "%d", *(int*)data_ptr);
        else
            ImFormatString(buf, buf_size, "%.*d", decimal_precision, *(int*)data_ptr);
    }
    else if (data_type == ImGuiDataType_Float)
    {
        if (decimal_precision < 0)
            ImFormatString(buf, buf_size, "%f", *(float*)data_ptr);     // Ideally we'd have a minimum decimal precision of 1 to visually denote that it is a float, while hiding non-significant digits?
        else
            ImFormatString(buf, buf_size, "%.*f", decimal_precision, *(float*)data_ptr);
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movl %edi, -0x4(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movq %rcx, -0x20(%rbp)
movl %r8d, -0x24(%rbp)
cmpl $0x0, -0x4(%rbp)
jne 0x1cfb4
cmpl $0x0, -0x14(%rbp)
jge 0x1cf93
movq -0x20(%rbp), %rdi
movl -0x24(%rbp), %esi
movq -0x10(%rbp), %rax
movl (%rax), %ecx
leaq 0x3f541(%rip), %rdx     # 0x5c4cb
movb $0x0, %al
callq 0x95a0
jmp 0x1cfb2
movq -0x20(%rbp), %rdi
movl -0x24(%rbp), %esi
movl -0x14(%rbp), %ecx
movq -0x10(%rbp), %rax
movl (%rax), %r8d
leaq 0x3fb2b(%rip), %rdx     # 0x5cad6
movb $0x0, %al
callq 0x95a0
jmp 0x1d00b
cmpl $0x1, -0x4(%rbp)
jne 0x1d009
cmpl $0x0, -0x14(%rbp)
jge 0x1cfe3
movq -0x20(%rbp), %rdi
movl -0x24(%rbp), %esi
movq -0x10(%rbp), %rax
movss (%rax), %xmm0
cvtss2sd %xmm0, %xmm0
leaq 0x40b42(%rip), %rdx     # 0x5db1c
movb $0x1, %al
callq 0x95a0
jmp 0x1d007
movq -0x20(%rbp), %rdi
movl -0x24(%rbp), %esi
movl -0x14(%rbp), %ecx
movq -0x10(%rbp), %rax
movss (%rax), %xmm0
cvtss2sd %xmm0, %xmm0
leaq 0x3fadb(%rip), %rdx     # 0x5cadb
movb $0x1, %al
callq 0x95a0
jmp 0x1d009
jmp 0x1d00b
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: donfreiday[P]gb/./imgui/imgui.cpp
// Function: ImGui::ParseFormatPrecision(char const*, int)
int ImGui::ParseFormatPrecision(const char* fmt, int default_precision)
{
    int precision = default_precision;
    while ((fmt = strchr(fmt, '%')) != NULL)
    {
        fmt++;
        if (fmt[0] == '%') { fmt++; continue; } // Ignore "%%"
        while (*fmt >= '0' && *fmt <= '9')
            fmt++;
        if (*fmt == '.')
        {
            precision = atoi(fmt + 1);
            if (precision < 0 || precision > 10)
                precision = default_precision;
        }
        break;
    }
    return precision;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl -0xc(%rbp), %eax
movl %eax, -0x10(%rbp)
movq -0x8(%rbp), %rdi
movl $0x25, %esi
callq 0x7430
movq %rax, -0x8(%rbp)
cmpq $0x0, %rax
je 0x1fcb3
movq -0x8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x25, %eax
jne 0x1fc47
movq -0x8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x8(%rbp)
jmp 0x1fc05
jmp 0x1fc49
movq -0x8(%rbp), %rax
movsbl (%rax), %ecx
xorl %eax, %eax
cmpl $0x30, %ecx
movb %al, -0x11(%rbp)
jl 0x1fc6a
movq -0x8(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x39, %eax
setle %al
movb %al, -0x11(%rbp)
movb -0x11(%rbp), %al
testb $0x1, %al
jne 0x1fc73
jmp 0x1fc81
movq -0x8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x8(%rbp)
jmp 0x1fc49
movq -0x8(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2e, %eax
jne 0x1fcb1
movq -0x8(%rbp), %rdi
addq $0x1, %rdi
callq 0x7270
movl %eax, -0x10(%rbp)
cmpl $0x0, -0x10(%rbp)
jl 0x1fca9
cmpl $0xa, -0x10(%rbp)
jle 0x1fcaf
movl -0xc(%rbp), %eax
movl %eax, -0x10(%rbp)
jmp 0x1fcb1
jmp 0x1fcb3
movl -0x10(%rbp), %eax
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)
// File: donfreiday[P]gb/./imgui/imgui.cpp
// Function: ImGui::RoundScalar(float, int)
float ImGui::RoundScalar(float value, int decimal_precision)
{
    // Round past decimal precision
    // So when our value is 1.99999 with a precision of 0.001 we'll end up rounding to 2.0
    // FIXME: Investigate better rounding methods
    static const float min_steps[10] = { 1.0f, 0.1f, 0.01f, 0.001f, 0.0001f, 0.00001f, 0.000001f, 0.0000001f, 0.00000001f, 0.000000001f };
    float min_step = (decimal_precision >= 0 && decimal_precision < 10) ? min_steps[decimal_precision] : powf(10.0f, (float)-decimal_precision);
    bool negative = value < 0.0f;
    value = fabsf(value);
    float remainder = fmodf(value, min_step);
    if (remainder <= min_step*0.5f)
        value -= remainder;
    else
        value += (min_step - remainder);
    return negative ? -value : value;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movss %xmm0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
cmpl $0x0, -0x8(%rbp)
jl 0x1fcf3
cmpl $0xa, -0x8(%rbp)
jge 0x1fcf3
movslq -0x8(%rbp), %rcx
leaq 0x3b589(%rip), %rax     # 0x5b270
movss (%rax,%rcx,4), %xmm0
movss %xmm0, -0x18(%rbp)
jmp 0x1fd0e
xorl %eax, %eax
subl -0x8(%rbp), %eax
cvtsi2ss %eax, %xmm1
movss 0x3b35c(%rip), %xmm0    # 0x5b060
callq 0x7680
movss %xmm0, -0x18(%rbp)
movss -0x18(%rbp), %xmm0
movss %xmm0, -0xc(%rbp)
xorps %xmm0, %xmm0
ucomiss -0x4(%rbp), %xmm0
seta %al
andb $0x1, %al
movb %al, -0xd(%rbp)
movss -0x4(%rbp), %xmm0
movaps 0x3b40d(%rip), %xmm1    # 0x5b140
pand %xmm1, %xmm0
movss %xmm0, -0x4(%rbp)
movss -0x4(%rbp), %xmm0
movss -0xc(%rbp), %xmm1
callq 0x7930
movss %xmm0, -0x14(%rbp)
movss -0x14(%rbp), %xmm1
movss 0x3b2c7(%rip), %xmm0    # 0x5b024
mulss -0xc(%rbp), %xmm0
ucomiss %xmm1, %xmm0
jb 0x1fd7c
movss -0x14(%rbp), %xmm1
movss -0x4(%rbp), %xmm0
subss %xmm1, %xmm0
movss %xmm0, -0x4(%rbp)
jmp 0x1fd90
movss -0xc(%rbp), %xmm0
subss -0x14(%rbp), %xmm0
addss -0x4(%rbp), %xmm0
movss %xmm0, -0x4(%rbp)
testb $0x1, -0xd(%rbp)
je 0x1fdaf
movss -0x4(%rbp), %xmm0
movd %xmm0, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm0
movss %xmm0, -0x1c(%rbp)
jmp 0x1fdb9
movss -0x4(%rbp), %xmm0
movss %xmm0, -0x1c(%rbp)
movss -0x1c(%rbp), %xmm0
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: donfreiday[P]gb/./imgui/imgui.cpp
// Function: ImGui::SliderAngle(char const*, float*, float, float)
bool ImGui::SliderAngle(const char* label, float* v_rad, float v_degrees_min, float v_degrees_max)
{
    float v_deg = (*v_rad) * 360.0f / (2*IM_PI);
    bool value_changed = ImGui::SliderFloat(label, &v_deg, v_degrees_min, v_degrees_max, "%.0f deg", 1.0f);
    *v_rad = v_deg * (2*IM_PI) / 360.0f;
    return value_changed;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movss %xmm0, -0x14(%rbp)
movss %xmm1, -0x18(%rbp)
movq -0x10(%rbp), %rax
movss 0x3a18a(%rip), %xmm0    # 0x5b110
mulss (%rax), %xmm0
movss 0x3a182(%rip), %xmm1    # 0x5b114
divss %xmm1, %xmm0
movss %xmm0, -0x1c(%rbp)
movq -0x8(%rbp), %rdi
movss -0x14(%rbp), %xmm0
movss -0x18(%rbp), %xmm1
leaq -0x1c(%rbp), %rsi
leaq 0x3af81(%rip), %rdx     # 0x5bf35
movss 0x3a05c(%rip), %xmm2    # 0x5b018
callq 0x20790
andb $0x1, %al
movb %al, -0x1d(%rbp)
movss 0x3a146(%rip), %xmm0    # 0x5b114
mulss -0x1c(%rbp), %xmm0
movss 0x3a135(%rip), %xmm1    # 0x5b110
divss %xmm1, %xmm0
movq -0x10(%rbp), %rax
movss %xmm0, (%rax)
movb -0x1d(%rbp), %al
andb $0x1, %al
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: donfreiday[P]gb/./imgui/imgui.cpp
// Function: ImGui::VSliderInt(char const*, ImVec2 const&, int*, int, int, char const*)
bool ImGui::VSliderInt(const char* label, const ImVec2& size, int* v, int v_min, int v_max, const char* display_format)
{
    if (!display_format)
        display_format = "%.0f";
    float v_f = (float)*v;
    bool value_changed = ImGui::VSliderFloat(label, size, &v_f, (float)v_min, (float)v_max, display_format, 1.0f);
    *v = (int)v_f;
    return value_changed;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movl %ecx, -0x1c(%rbp)
movl %r8d, -0x20(%rbp)
movq %r9, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x21031
leaq 0x3dc63(%rip), %rax     # 0x5ec90
movq %rax, -0x28(%rbp)
movq -0x18(%rbp), %rax
cvtsi2ssl (%rax), %xmm0
movss %xmm0, -0x2c(%rbp)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
cvtsi2ssl -0x1c(%rbp), %xmm0
cvtsi2ssl -0x20(%rbp), %xmm1
movq -0x28(%rbp), %rcx
leaq -0x2c(%rbp), %rdx
movss 0x39fb8(%rip), %xmm2    # 0x5b018
callq 0x20c00
andb $0x1, %al
movb %al, -0x2d(%rbp)
cvttss2si -0x2c(%rbp), %ecx
movq -0x18(%rbp), %rax
movl %ecx, (%rax)
movb -0x2d(%rbp), %al
andb $0x1, %al
addq $0x30, %rsp
popq %rbp
retq
// File: donfreiday[P]gb/./imgui/imgui.cpp
// Function: ImGui::SliderFloatN(char const*, float*, int, float, float, char const*, float)
bool ImGui::SliderFloatN(const char* label, float* v, int components, float v_min, float v_max, const char* display_format, float power)
{
    ImGuiWindow* window = GetCurrentWindow();
    if (window->SkipItems)
        return false;

    ImGuiState& g = *GImGui;
    bool value_changed = false;
    ImGui::BeginGroup();
    ImGui::PushID(label);
    PushMultiItemsWidths(components);
    for (int i = 0; i < components; i++)
    {
        ImGui::PushID(i);
        value_changed |= ImGui::SliderFloat("##v", &v[i], v_min, v_max, display_format, power);
        ImGui::SameLine(0, g.Style.ItemInnerSpacing.x);
        ImGui::PopID();
        ImGui::PopItemWidth();
    }
    ImGui::PopID();

    ImGui::TextUnformatted(label, FindTextDisplayEnd(label));
    ImGui::EndGroup();

    return value_changed;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movl %edx, -0x1c(%rbp)
movss %xmm0, -0x20(%rbp)
movss %xmm1, -0x24(%rbp)
movq %rcx, -0x30(%rbp)
movss %xmm2, -0x34(%rbp)
callq 0x2e220
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rax
testb $0x1, 0x74(%rax)
je 0x210c2
movb $0x0, -0x1(%rbp)
jmp 0x211a8
movq 0x583f7(%rip), %rax     # 0x794c0
movq %rax, -0x48(%rbp)
movb $0x0, -0x49(%rbp)
callq 0x211c0
movq -0x10(%rbp), %rdi
callq 0x1b8c0
movl -0x1c(%rbp), %edi
xorps %xmm0, %xmm0
callq 0x21310
movl $0x0, -0x50(%rbp)
movl -0x50(%rbp), %eax
cmpl -0x1c(%rbp), %eax
jge 0x21175
movl -0x50(%rbp), %edi
callq 0x1cc80
movq -0x18(%rbp), %rsi
movslq -0x50(%rbp), %rax
shlq $0x2, %rax
addq %rax, %rsi
movss -0x20(%rbp), %xmm0
movss -0x24(%rbp), %xmm1
movq -0x30(%rbp), %rdx
movss -0x34(%rbp), %xmm2
leaq 0x3ae14(%rip), %rdi     # 0x5bf3e
callq 0x20790
andb $0x1, %al
movzbl %al, %ecx
movb -0x49(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
orl %ecx, %eax
cmpl $0x0, %eax
setne %al
andb $0x1, %al
movb %al, -0x49(%rbp)
movq -0x48(%rbp), %rax
movss 0x141c(%rax), %xmm1
xorps %xmm0, %xmm0
callq 0x1a5e0
callq 0x1b550
callq 0xb0f0
movl -0x50(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x50(%rbp)
jmp 0x210f1
callq 0x1b550
movq -0x10(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x10230
movq -0x58(%rbp), %rdi
movq %rax, %rsi
callq 0xf8c0
callq 0x21490
movb -0x49(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x60, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: donfreiday[P]gb/./imgui/imgui.cpp
// Function: ImGui::BeginGroup()
void ImGui::BeginGroup()
{
    ImGuiWindow* window = GetCurrentWindow();

    window->DC.GroupStack.resize(window->DC.GroupStack.Size + 1);
    ImGuiGroupData& group_data = window->DC.GroupStack.back();
    group_data.BackupCursorPos = window->DC.CursorPos;
    group_data.BackupCursorMaxPos = window->DC.CursorMaxPos;
    group_data.BackupColumnsStartX = window->DC.ColumnsStartX;
    group_data.BackupCurrentLineHeight = window->DC.CurrentLineHeight;
    group_data.BackupCurrentLineTextBaseOffset = window->DC.CurrentLineTextBaseOffset;
    group_data.BackupLogLinePosY = window->DC.LogLinePosY;
    group_data.AdvanceCursor = true;

    window->DC.ColumnsStartX = window->DC.CursorPos.x - window->Pos.x;
    window->DC.CursorMaxPos = window->DC.CursorPos;
    window->DC.CurrentLineHeight = 0.0f;
    window->DC.LogLinePosY = window->DC.CursorPos.y - 9999.0f;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
callq 0x2e220
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rdi
addq $0xa8, %rdi
addq $0xc0, %rdi
movq -0x8(%rbp), %rax
movl 0x168(%rax), %esi
addl $0x1, %esi
callq 0x2f4d0
movq -0x8(%rbp), %rdi
addq $0xa8, %rdi
addq $0xc0, %rdi
callq 0x30190
movq %rax, -0x10(%rbp)
movq -0x8(%rbp), %rcx
movq -0x10(%rbp), %rax
movq 0xa8(%rcx), %rcx
movq %rcx, (%rax)
movq -0x8(%rbp), %rcx
movq -0x10(%rbp), %rax
movq 0xc0(%rcx), %rcx
movq %rcx, 0x8(%rax)
movq -0x8(%rbp), %rax
movss 0x194(%rax), %xmm0
movq -0x10(%rbp), %rax
movss %xmm0, 0x10(%rax)
movq -0x8(%rbp), %rax
movss 0xc8(%rax), %xmm0
movq -0x10(%rbp), %rax
movss %xmm0, 0x14(%rax)
movq -0x8(%rbp), %rax
movss 0xcc(%rax), %xmm0
movq -0x10(%rbp), %rax
movss %xmm0, 0x18(%rax)
movq -0x8(%rbp), %rax
movss 0xd8(%rax), %xmm0
movq -0x10(%rbp), %rax
movss %xmm0, 0x1c(%rax)
movq -0x10(%rbp), %rax
movb $0x1, 0x20(%rax)
movq -0x8(%rbp), %rax
movss 0xa8(%rax), %xmm0
movq -0x8(%rbp), %rax
subss 0x18(%rax), %xmm0
movq -0x8(%rbp), %rax
movss %xmm0, 0x194(%rax)
movq -0x8(%rbp), %rcx
movq -0x8(%rbp), %rax
movq 0xa8(%rcx), %rcx
movq %rcx, 0xc0(%rax)
movq -0x8(%rbp), %rax
xorps %xmm0, %xmm0
movss %xmm0, 0xc8(%rax)
movq -0x8(%rbp), %rax
movss 0xac(%rax), %xmm0
movss 0x39dfd(%rip), %xmm1    # 0x5b0e8
subss %xmm1, %xmm0
movq -0x8(%rbp), %rax
movss %xmm0, 0xd8(%rax)
addq $0x10, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: donfreiday[P]gb/./imgui/imgui.cpp
// Function: PushMultiItemsWidths(int, float)
static void PushMultiItemsWidths(int components, float w_full)
{
    ImGuiWindow* window = ImGui::GetCurrentWindow();
    const ImGuiStyle& style = GImGui->Style;
    if (w_full <= 0.0f)
        w_full = ImGui::CalcItemWidth();
    const float w_item_one  = ImMax(1.0f, (float)(int)((w_full - (style.FramePadding.x*2.0f + style.ItemInnerSpacing.x) * (components-1)) / (float)components));
    const float w_item_last = ImMax(1.0f, (float)(int)(w_full - (w_item_one + style.FramePadding.x*2.0f + style.ItemInnerSpacing.x) * (components-1)));
    window->DC.ItemWidthStack.push_back(w_item_last);
    for (int i = 0; i < components-1; i++)
        window->DC.ItemWidthStack.push_back(w_item_one);
    window->DC.ItemWidth = window->DC.ItemWidthStack.back();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movl %edi, -0x4(%rbp)
movss %xmm0, -0x8(%rbp)
callq 0x2e220
movq %rax, -0x10(%rbp)
movq 0x58190(%rip), %rax     # 0x794c0
addq $0x13e8, %rax           # imm = 0x13E8
movq %rax, -0x18(%rbp)
xorps %xmm0, %xmm0
ucomiss -0x8(%rbp), %xmm0
jb 0x2134d
callq 0x185e0
movss %xmm0, -0x8(%rbp)
movss -0x8(%rbp), %xmm1
movq -0x18(%rbp), %rax
movss 0x20(%rax), %xmm0
movq -0x18(%rbp), %rax
movss 0x34(%rax), %xmm2
addss %xmm0, %xmm0
addss %xmm2, %xmm0
movl -0x4(%rbp), %eax
subl $0x1, %eax
cvtsi2ss %eax, %xmm2
movd %xmm0, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm0
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
cvtsi2ssl -0x4(%rbp), %xmm1
divss %xmm1, %xmm0
cvttss2si %xmm0, %eax
cvtsi2ss %eax, %xmm1
movss 0x39c74(%rip), %xmm0    # 0x5b018
callq 0xb7c0
movss %xmm0, -0x1c(%rbp)
movss -0x8(%rbp), %xmm1
movss -0x1c(%rbp), %xmm2
movq -0x18(%rbp), %rax
movss 0x20(%rax), %xmm0
addss %xmm0, %xmm0
addss %xmm2, %xmm0
movq -0x18(%rbp), %rax
addss 0x34(%rax), %xmm0
movl -0x4(%rbp), %eax
subl $0x1, %eax
cvtsi2ss %eax, %xmm2
movd %xmm0, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm0
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
cvttss2si %xmm0, %eax
cvtsi2ss %eax, %xmm1
movss 0x39c17(%rip), %xmm0    # 0x5b018
callq 0xb7c0
movss %xmm0, -0x20(%rbp)
movq -0x10(%rbp), %rdi
addq $0xa8, %rdi
addq $0x80, %rdi
leaq -0x20(%rbp), %rsi
callq 0x2f700
movl $0x0, -0x24(%rbp)
movl -0x24(%rbp), %eax
movl -0x4(%rbp), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jge 0x21460
movq -0x10(%rbp), %rdi
addq $0xa8, %rdi
addq $0x80, %rdi
leaq -0x1c(%rbp), %rsi
callq 0x2f700
movl -0x24(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
jmp 0x2142d
movq -0x10(%rbp), %rdi
addq $0xa8, %rdi
addq $0x80, %rdi
callq 0x2f7d0
movss (%rax), %xmm0
movq -0x10(%rbp), %rax
movss %xmm0, 0x11c(%rax)
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)
// File: donfreiday[P]gb/./imgui/imgui.cpp
// Function: ImGui::SliderIntN(char const*, int*, int, int, int, char const*)
bool ImGui::SliderIntN(const char* label, int* v, int components, int v_min, int v_max, const char* display_format)
{
    ImGuiWindow* window = GetCurrentWindow();
    if (window->SkipItems)
        return false;

    ImGuiState& g = *GImGui;
    bool value_changed = false;
    ImGui::BeginGroup();
    ImGui::PushID(label);
    PushMultiItemsWidths(components);
    for (int i = 0; i < components; i++)
    {
        ImGui::PushID(i);
        value_changed |= ImGui::SliderInt("##v", &v[i], v_min, v_max, display_format);
        ImGui::SameLine(0, g.Style.ItemInnerSpacing.x);
        ImGui::PopID();
        ImGui::PopItemWidth();
    }
    ImGui::PopID();

    ImGui::TextUnformatted(label, FindTextDisplayEnd(label));
    ImGui::EndGroup();

    return value_changed;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movl %edx, -0x1c(%rbp)
movl %ecx, -0x20(%rbp)
movl %r8d, -0x24(%rbp)
movq %r9, -0x30(%rbp)
callq 0x2e220
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rax
testb $0x1, 0x74(%rax)
je 0x2179a
movb $0x0, -0x1(%rbp)
jmp 0x21874
movq 0x57d1f(%rip), %rax     # 0x794c0
movq %rax, -0x40(%rbp)
movb $0x0, -0x41(%rbp)
callq 0x211c0
movq -0x10(%rbp), %rdi
callq 0x1b8c0
movl -0x1c(%rbp), %edi
xorps %xmm0, %xmm0
callq 0x21310
movl $0x0, -0x48(%rbp)
movl -0x48(%rbp), %eax
cmpl -0x1c(%rbp), %eax
jge 0x21841
movl -0x48(%rbp), %edi
callq 0x1cc80
movq -0x18(%rbp), %rsi
movslq -0x48(%rbp), %rax
shlq $0x2, %rax
addq %rax, %rsi
movl -0x20(%rbp), %edx
movl -0x24(%rbp), %ecx
movq -0x30(%rbp), %r8
leaq 0x3a745(%rip), %rdi     # 0x5bf3e
callq 0x1b910
andb $0x1, %al
movzbl %al, %ecx
movb -0x41(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
orl %ecx, %eax
cmpl $0x0, %eax
setne %al
andb $0x1, %al
movb %al, -0x41(%rbp)
movq -0x40(%rbp), %rax
movss 0x141c(%rax), %xmm1
xorps %xmm0, %xmm0
callq 0x1a5e0
callq 0x1b550
callq 0xb0f0
movl -0x48(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x48(%rbp)
jmp 0x217c9
callq 0x1b550
movq -0x10(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x10230
movq -0x50(%rbp), %rdi
movq %rax, %rsi
callq 0xf8c0
callq 0x21490
movb -0x41(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x50, %rsp
popq %rbp
retq
nop
// File: donfreiday[P]gb/./imgui/imgui.cpp
// Function: ImGui::DragFloatN(char const*, float*, int, float, float, float, char const*, float)
bool ImGui::DragFloatN(const char* label, float* v, int components, float v_speed, float v_min, float v_max, const char* display_format, float power)
{
    ImGuiWindow* window = GetCurrentWindow();
    if (window->SkipItems)
        return false;

    ImGuiState& g = *GImGui;
    bool value_changed = false;
    ImGui::BeginGroup();
    ImGui::PushID(label);
    PushMultiItemsWidths(components);
    for (int i = 0; i < components; i++)
    {
        ImGui::PushID(i);
        value_changed |= ImGui::DragFloat("##v", &v[i], v_speed, v_min, v_max, display_format, power);
        ImGui::SameLine(0, g.Style.ItemInnerSpacing.x);
        ImGui::PopID();
        ImGui::PopItemWidth();
    }
    ImGui::PopID();

    ImGui::TextUnformatted(label, FindTextDisplayEnd(label));
    ImGui::EndGroup();

    return value_changed;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movl %edx, -0x1c(%rbp)
movss %xmm0, -0x20(%rbp)
movss %xmm1, -0x24(%rbp)
movss %xmm2, -0x28(%rbp)
movq %rcx, -0x30(%rbp)
movss %xmm3, -0x34(%rbp)
callq 0x2e220
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rax
testb $0x1, 0x74(%rax)
je 0x22347
movb $0x0, -0x1(%rbp)
jmp 0x22436
movq 0x57172(%rip), %rax     # 0x794c0
movq %rax, -0x48(%rbp)
movb $0x0, -0x49(%rbp)
callq 0x211c0
movq -0x10(%rbp), %rdi
callq 0x1b8c0
movl -0x1c(%rbp), %edi
xorps %xmm0, %xmm0
callq 0x21310
movl $0x0, -0x50(%rbp)
movl -0x50(%rbp), %eax
cmpl -0x1c(%rbp), %eax
jge 0x22403
movl -0x50(%rbp), %edi
callq 0x1cc80
movq -0x18(%rbp), %rsi
movslq -0x50(%rbp), %rax
shlq $0x2, %rax
addq %rax, %rsi
movss -0x20(%rbp), %xmm0
movss -0x24(%rbp), %xmm1
movss -0x28(%rbp), %xmm2
movq -0x30(%rbp), %rdx
movss -0x34(%rbp), %xmm3
leaq 0x39b86(%rip), %rdi     # 0x5bf3e
callq 0x21e10
andb $0x1, %al
movzbl %al, %ecx
movb -0x49(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
orl %ecx, %eax
cmpl $0x0, %eax
setne %al
andb $0x1, %al
movb %al, -0x49(%rbp)
movq -0x48(%rbp), %rax
movss 0x141c(%rax), %xmm1
xorps %xmm0, %xmm0
callq 0x1a5e0
callq 0x1b550
callq 0xb0f0
movl -0x50(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x50(%rbp)
jmp 0x22376
callq 0x1b550
movq -0x10(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x10230
movq -0x58(%rbp), %rdi
movq %rax, %rsi
callq 0xf8c0
callq 0x21490
movb -0x49(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x60, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: donfreiday[P]gb/./imgui/imgui.cpp
// Function: ImGui::DragInt(char const*, int*, float, int, int, char const*)
bool ImGui::DragInt(const char* label, int* v, float v_speed, int v_min, int v_max, const char* display_format)
{
    if (!display_format)
        display_format = "%.0f";
    float v_f = (float)*v;
    bool value_changed = ImGui::DragFloat(label, &v_f, v_speed, (float)v_min, (float)v_max, display_format);
    *v = (int)v_f;
    return value_changed;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movss %xmm0, -0x14(%rbp)
movl %edx, -0x18(%rbp)
movl %ecx, -0x1c(%rbp)
movq %r8, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x22831
leaq 0x3c463(%rip), %rax     # 0x5ec90
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rax
cvtsi2ssl (%rax), %xmm0
movss %xmm0, -0x2c(%rbp)
movq -0x8(%rbp), %rdi
movss -0x14(%rbp), %xmm0
cvtsi2ssl -0x18(%rbp), %xmm1
cvtsi2ssl -0x1c(%rbp), %xmm2
movq -0x28(%rbp), %rdx
leaq -0x2c(%rbp), %rsi
movss 0x387b7(%rip), %xmm3    # 0x5b018
callq 0x21e10
andb $0x1, %al
movb %al, -0x2d(%rbp)
cvttss2si -0x2c(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, (%rax)
movb -0x2d(%rbp), %al
andb $0x1, %al
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: donfreiday[P]gb/./imgui/imgui.cpp
// Function: ImGui::DragIntN(char const*, int*, int, float, int, int, char const*)
bool ImGui::DragIntN(const char* label, int* v, int components, float v_speed, int v_min, int v_max, const char* display_format)
{
    ImGuiWindow* window = GetCurrentWindow();
    if (window->SkipItems)
        return false;

    ImGuiState& g = *GImGui;
    bool value_changed = false;
    ImGui::BeginGroup();
    ImGui::PushID(label);
    PushMultiItemsWidths(components);
    for (int i = 0; i < components; i++)
    {
        ImGui::PushID(i);
        value_changed |= ImGui::DragInt("##v", &v[i], v_speed, v_min, v_max, display_format);
        ImGui::SameLine(0, g.Style.ItemInnerSpacing.x);
        ImGui::PopID();
        ImGui::PopItemWidth();
    }
    ImGui::PopID();

    ImGui::TextUnformatted(label, FindTextDisplayEnd(label));
    ImGui::EndGroup();

    return value_changed;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movl %edx, -0x1c(%rbp)
movss %xmm0, -0x20(%rbp)
movl %ecx, -0x24(%rbp)
movl %r8d, -0x28(%rbp)
movq %r9, -0x30(%rbp)
callq 0x2e220
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rax
testb $0x1, 0x74(%rax)
je 0x228cf
movb $0x0, -0x1(%rbp)
jmp 0x229ae
movq 0x56bea(%rip), %rax     # 0x794c0
movq %rax, -0x40(%rbp)
movb $0x0, -0x41(%rbp)
callq 0x211c0
movq -0x10(%rbp), %rdi
callq 0x1b8c0
movl -0x1c(%rbp), %edi
xorps %xmm0, %xmm0
callq 0x21310
movl $0x0, -0x48(%rbp)
movl -0x48(%rbp), %eax
cmpl -0x1c(%rbp), %eax
jge 0x2297b
movl -0x48(%rbp), %edi
callq 0x1cc80
movq -0x18(%rbp), %rsi
movslq -0x48(%rbp), %rax
shlq $0x2, %rax
addq %rax, %rsi
movss -0x20(%rbp), %xmm0
movl -0x24(%rbp), %edx
movl -0x28(%rbp), %ecx
movq -0x30(%rbp), %r8
leaq 0x3960b(%rip), %rdi     # 0x5bf3e
callq 0x22800
andb $0x1, %al
movzbl %al, %ecx
movb -0x41(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
orl %ecx, %eax
cmpl $0x0, %eax
setne %al
andb $0x1, %al
movb %al, -0x41(%rbp)
movq -0x40(%rbp), %rax
movss 0x141c(%rax), %xmm1
xorps %xmm0, %xmm0
callq 0x1a5e0
callq 0x1b550
callq 0xb0f0
movl -0x48(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x48(%rbp)
jmp 0x228fe
callq 0x1b550
movq -0x10(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x10230
movq -0x50(%rbp), %rdi
movq %rax, %rsi
callq 0xf8c0
callq 0x21490
movb -0x41(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x50, %rsp
popq %rbp
retq
nopl (%rax)
// File: donfreiday[P]gb/./imgui/imgui.cpp
// Function: ImGui::CheckboxFlags(char const*, unsigned int*, unsigned int)
bool ImGui::CheckboxFlags(const char* label, unsigned int* flags, unsigned int flags_value)
{
    bool v = (*flags & flags_value) ? true : false;
    bool pressed = ImGui::Checkbox(label, &v);
    if (v)
        *flags |= flags_value;
    else
        *flags &= ~flags_value;
    return pressed;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movq -0x10(%rbp), %rax
movl (%rax), %ecx
movl -0x14(%rbp), %eax
andl %eax, %ecx
xorl %eax, %eax
negl %ecx
sbbl %eax, %eax
andb $0x1, %al
movb %al, -0x15(%rbp)
movq -0x8(%rbp), %rdi
leaq -0x15(%rbp), %rsi
callq 0x23a60
andb $0x1, %al
movb %al, -0x16(%rbp)
testb $0x1, -0x15(%rbp)
je 0x2406e
movl -0x14(%rbp), %ecx
movq -0x10(%rbp), %rax
orl (%rax), %ecx
movl %ecx, (%rax)
jmp 0x2407c
movl -0x14(%rbp), %ecx
xorl $-0x1, %ecx
movq -0x10(%rbp), %rax
andl (%rax), %ecx
movl %ecx, (%rax)
movb -0x16(%rbp), %al
andb $0x1, %al
addq $0x20, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: donfreiday[P]gb/./imgui/imgui.cpp
// Function: ImGui::RadioButton(char const*, int*, int)
bool ImGui::RadioButton(const char* label, int* v, int v_button)
{
    const bool pressed = ImGui::RadioButton(label, *v == v_button);
    if (pressed)
    {
        *v = v_button;
    }
    return pressed;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movl (%rax), %eax
cmpl -0x14(%rbp), %eax
sete %al
movzbl %al, %esi
andl $0x1, %esi
callq 0x24090
andb $0x1, %al
movb %al, -0x15(%rbp)
testb $0x1, -0x15(%rbp)
je 0x24722
movl -0x14(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, (%rax)
movb -0x15(%rbp), %al
andb $0x1, %al
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)
// File: donfreiday[P]gb/./imgui/imgui.cpp
// Function: ImGuiTextEditCallbackData::DeleteChars(int, int)
void ImGuiTextEditCallbackData::DeleteChars(int pos, int bytes_count)
{
    char* dst = Buf + pos;
    const char* src = Buf + pos + bytes_count;
    while (char c = *src++)
        *dst++ = c;
    *dst = '\0';

    BufDirty = true;
    if (CursorPos + bytes_count >= pos)
        CursorPos -= bytes_count;
    else if (CursorPos >= pos)
        CursorPos = pos;
    SelectionStart = SelectionEnd = CursorPos;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl %edx, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x30(%rbp)
movq 0x18(%rax), %rcx
movslq -0xc(%rbp), %rdx
addq %rdx, %rcx
movq %rcx, -0x18(%rbp)
movq 0x18(%rax), %rax
movslq -0xc(%rbp), %rcx
addq %rcx, %rax
movslq -0x10(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x20(%rbp)
movb (%rax), %al
movb %al, -0x21(%rbp)
cmpb $0x0, -0x21(%rbp)
je 0x2543b
movb -0x21(%rbp), %cl
movq -0x18(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x18(%rbp)
movb %cl, (%rax)
jmp 0x2540b
movq -0x30(%rbp), %rax
movq -0x18(%rbp), %rcx
movb $0x0, (%rcx)
movb $0x1, 0x24(%rax)
movl 0x28(%rax), %eax
addl -0x10(%rbp), %eax
cmpl -0xc(%rbp), %eax
jl 0x25466
movq -0x30(%rbp), %rax
movl -0x10(%rbp), %edx
movl 0x28(%rax), %ecx
subl %edx, %ecx
movl %ecx, 0x28(%rax)
jmp 0x2547e
movq -0x30(%rbp), %rax
movl 0x28(%rax), %eax
cmpl -0xc(%rbp), %eax
jl 0x2547c
movq -0x30(%rbp), %rax
movl -0xc(%rbp), %ecx
movl %ecx, 0x28(%rax)
jmp 0x2547e
movq -0x30(%rbp), %rax
movl 0x28(%rax), %ecx
movl %ecx, 0x30(%rax)
movl %ecx, 0x2c(%rax)
popq %rbp
retq
nopl (%rax)
// File: donfreiday[P]gb/./imgui/imgui.cpp
// Function: ImGuiTextEditCallbackData::InsertChars(int, char const*, char const*)
void ImGuiTextEditCallbackData::InsertChars(int pos, const char* new_text, const char* new_text_end)
{
    const int text_len = (int)strlen(Buf);
    if (!new_text_end)
        new_text_end = new_text + strlen(new_text);
    const int new_text_len = (int)(new_text_end - new_text);

    if (new_text_len + text_len + 1 >= BufSize)
        return;

    if (text_len != pos)
        memmove(Buf + pos + new_text_len, Buf + pos, (size_t)(text_len - pos));
    memcpy(Buf + pos, new_text, (size_t)new_text_len * sizeof(char));
    Buf[text_len + new_text_len] = '\0';

    BufDirty = true;
    if (CursorPos >= pos)
        CursorPos += new_text_len;
    SelectionStart = SelectionEnd = CursorPos;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x30(%rbp)
movq 0x18(%rax), %rdi
callq 0x7330
movl %eax, -0x24(%rbp)
cmpq $0x0, -0x20(%rbp)
jne 0x254e1
movq -0x18(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x18(%rbp), %rdi
callq 0x7330
movq %rax, %rcx
movq -0x38(%rbp), %rax
addq %rcx, %rax
movq %rax, -0x20(%rbp)
movq -0x30(%rbp), %rcx
movq -0x20(%rbp), %rax
movq -0x18(%rbp), %rdx
subq %rdx, %rax
movl %eax, -0x28(%rbp)
movl -0x28(%rbp), %eax
addl -0x24(%rbp), %eax
addl $0x1, %eax
cmpl 0x20(%rcx), %eax
jl 0x25506
jmp 0x25598
movl -0x24(%rbp), %eax
cmpl -0xc(%rbp), %eax
je 0x2553d
movq -0x30(%rbp), %rax
movq 0x18(%rax), %rdi
movslq -0xc(%rbp), %rcx
addq %rcx, %rdi
movslq -0x28(%rbp), %rcx
addq %rcx, %rdi
movq 0x18(%rax), %rsi
movslq -0xc(%rbp), %rax
addq %rax, %rsi
movl -0x24(%rbp), %eax
subl -0xc(%rbp), %eax
movslq %eax, %rdx
callq 0x7150
movq -0x30(%rbp), %rax
movq 0x18(%rax), %rdi
movslq -0xc(%rbp), %rax
addq %rax, %rdi
movq -0x18(%rbp), %rsi
movslq -0x28(%rbp), %rdx
shlq $0x0, %rdx
callq 0x7080
movq -0x30(%rbp), %rax
movq 0x18(%rax), %rcx
movl -0x24(%rbp), %edx
addl -0x28(%rbp), %edx
movslq %edx, %rdx
movb $0x0, (%rcx,%rdx)
movb $0x1, 0x24(%rax)
movl 0x28(%rax), %eax
cmpl -0xc(%rbp), %eax
jl 0x2558b
movq -0x30(%rbp), %rax
movl -0x28(%rbp), %ecx
addl 0x28(%rax), %ecx
movl %ecx, 0x28(%rax)
movq -0x30(%rbp), %rax
movl 0x28(%rax), %ecx
movl %ecx, 0x30(%rax)
movl %ecx, 0x2c(%rax)
addq $0x40, %rsp
popq %rbp
retq
nop
// File: donfreiday[P]gb/./imgui/stb_textedit.h
// Function: ImGuiStb::stb_textedit_click(ImGuiTextEditState*, ImGuiStb::STB_TexteditState*, float, float)
static void stb_textedit_click(STB_TEXTEDIT_STRING *str, STB_TexteditState *state, float x, float y)
{
   state->cursor = stb_text_locate_coord(str, x, y);
   state->select_start = state->cursor;
   state->select_end = state->cursor;
   state->has_preferred_x = 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movss %xmm0, -0x14(%rbp)
movss %xmm1, -0x18(%rbp)
movq -0x8(%rbp), %rdi
movss -0x14(%rbp), %xmm0
movss -0x18(%rbp), %xmm1
callq 0x2c6d0
movl %eax, %ecx
movq -0x10(%rbp), %rax
movl %ecx, (%rax)
movq -0x10(%rbp), %rax
movl (%rax), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x4(%rax)
movq -0x10(%rbp), %rax
movl (%rax), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x8(%rax)
movq -0x10(%rbp), %rax
movb $0x0, 0xf(%rax)
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)
// File: donfreiday[P]gb/./imgui/stb_textedit.h
// Function: ImGuiStb::stb_textedit_cut(ImGuiTextEditState*, ImGuiStb::STB_TexteditState*)
static int stb_textedit_cut(STB_TEXTEDIT_STRING *str, STB_TexteditState *state)
{
   if (STB_TEXT_HAS_SELECTION(state)) {
      stb_textedit_delete_selection(str,state); // implicity clamps
      state->has_preferred_x = 0;
      return 1;
   }
   return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x18(%rbp), %rax
movl 0x4(%rax), %eax
movq -0x18(%rbp), %rcx
cmpl 0x8(%rcx), %eax
je 0x258fe
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x2b400
movq -0x18(%rbp), %rax
movb $0x0, 0xf(%rax)
movl $0x1, -0x4(%rbp)
jmp 0x25905
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x20, %rsp
popq %rbp
retq
nop
// File: donfreiday[P]gb/./imgui/stb_textedit.h
// Function: ImGuiStb::stb_textedit_paste(ImGuiTextEditState*, ImGuiStb::STB_TexteditState*, unsigned short const*, int)
static int stb_textedit_paste(STB_TEXTEDIT_STRING *str, STB_TexteditState *state, STB_TEXTEDIT_CHARTYPE const *ctext, int len)
{
   STB_TEXTEDIT_CHARTYPE *text = (STB_TEXTEDIT_CHARTYPE *) ctext;
   // if there's a selection, the paste should delete it
   stb_textedit_clamp(str, state);
   stb_textedit_delete_selection(str,state);
   // try to insert the characters
   if (STB_TEXTEDIT_INSERTCHARS(str, state->cursor, text, len)) {
      stb_text_makeundo_insert(state, state->cursor, len);
      state->cursor += len;
      state->has_preferred_x = 0;
      return 1;
   }
   // remove the undo since we didn't actually insert the characters
   if (state->undostate.undo_point)
      --state->undostate.undo_point;
   return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movl %ecx, -0x24(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x2b9f0
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x2b400
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rax
movl (%rax), %esi
movq -0x30(%rbp), %rdx
movl -0x24(%rbp), %ecx
callq 0x2b2e0
testb $0x1, %al
jne 0x25965
jmp 0x25993
movq -0x18(%rbp), %rdi
movq -0x18(%rbp), %rax
movl (%rax), %esi
movl -0x24(%rbp), %edx
callq 0x2b4c0
movl -0x24(%rbp), %ecx
movq -0x18(%rbp), %rax
addl (%rax), %ecx
movl %ecx, (%rax)
movq -0x18(%rbp), %rax
movb $0x0, 0xf(%rax)
movl $0x1, -0x4(%rbp)
jmp 0x259be
movq -0x18(%rbp), %rax
cmpw $0x0, 0xc8a(%rax)
je 0x259b7
movq -0x18(%rbp), %rax
movw 0xc8a(%rax), %cx
addw $-0x1, %cx
movw %cx, 0xc8a(%rax)
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: donfreiday[P]gb/./imgui/imgui.cpp
// Function: ImGui::Dummy(ImVec2 const&)
void ImGui::Dummy(const ImVec2& size)
{
    ImGuiWindow* window = GetCurrentWindow();
    if (window->SkipItems)
        return;
    ItemSize(size);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
callq 0x2e220
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
testb $0x1, 0x74(%rax)
je 0x25c21
jmp 0x25c2d
movq -0x8(%rbp), %rdi
xorps %xmm0, %xmm0
callq 0xbeb0
addq $0x10, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: donfreiday[P]gb/./imgui/imgui.cpp
// Function: DataTypeFormatString(ImGuiDataType, void*, char const*, char*, int)
static inline void DataTypeFormatString(ImGuiDataType data_type, void* data_ptr, const char* display_format, char* buf, int buf_size)
{
    if (data_type == ImGuiDataType_Int)
        ImFormatString(buf, buf_size, display_format, *(int*)data_ptr);
    else if (data_type == ImGuiDataType_Float)
        ImFormatString(buf, buf_size, display_format, *(float*)data_ptr);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movl %edi, -0x4(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movl %r8d, -0x24(%rbp)
cmpl $0x0, -0x4(%rbp)
jne 0x2613b
movq -0x20(%rbp), %rdi
movl -0x24(%rbp), %esi
movq -0x18(%rbp), %rdx
movq -0x10(%rbp), %rax
movl (%rax), %ecx
movb $0x0, %al
callq 0x95a0
jmp 0x26161
cmpl $0x1, -0x4(%rbp)
jne 0x2615f
movq -0x20(%rbp), %rdi
movl -0x24(%rbp), %esi
movq -0x18(%rbp), %rdx
movq -0x10(%rbp), %rax
movss (%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movb $0x1, %al
callq 0x95a0
jmp 0x26161
addq $0x30, %rsp
popq %rbp
retq
nopw (%rax,%rax)