LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_cpp_makefile_star2_O2/eiskalteschatten[P]developersnotebook/src/views/AbstractView.cpp
// Function: AbstractView::sort_by_date(_GtkTreeModel*, _GtkTreeIter*, _GtkTreeIter*, void*)
gint AbstractView::sort_by_date(GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, gpointer user_data) {
    gchar *string_char1;
    gchar *string_char2;
    gint sortcol = GPOINTER_TO_INT(user_data);

    gtk_tree_model_get(model, a, sortcol, &string_char1, -1);
    gtk_tree_model_get(model, b, sortcol, &string_char2, -1);

    std::string string1 = std::string(string_char1);
    std::string string2 = std::string(string_char2);

    g_free(string_char1);
    g_free(string_char2);

    std::tm tm1 = get_date_from_string(&string1);
    std::tm tm2 = get_date_from_string(&string2);

    return difftime(mktime(&tm1), mktime(&tm2)) < 0 ? -1 : 1;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xc8, %rsp
movq %rcx, %rbx
movq %rdx, %r14
movq %rdi, %r15
leaq 0x10(%rsp), %r12
pushq $-0x1
popq %rbp
movl %ebx, %edx
movq %r12, %rcx
movl %ebp, %r8d
xorl %eax, %eax
callq 0x8890
leaq 0x8(%rsp), %r13
movq %r15, %rdi
movq %r14, %rsi
movl %ebx, %edx
movq %r13, %rcx
movl %ebp, %r8d
xorl %eax, %eax
callq 0x8890
movq (%r12), %rsi
leaq 0x38(%rsp), %rdi
leaq 0x58(%rsp), %rdx
callq 0xb078
movq (%r13), %rsi
leaq 0x18(%rsp), %rdi
leaq 0x58(%rsp), %rdx
callq 0xb078
movq 0x10(%rsp), %rdi
callq 0x9118
movq 0x8(%rsp), %rdi
callq 0x9118
leaq 0x58(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0xeb0e
leaq 0x90(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0xeb0e
leaq 0x58(%rsp), %rdi
callq 0x8510
movq %rax, %rbx
leaq 0x90(%rsp), %rdi
callq 0x8510
movq %rbx, %rdi
movq %rax, %rsi
callq 0x8410
xorpd %xmm1, %xmm1
xorl %eax, %eax
ucomisd %xmm0, %xmm1
setbe %al
leal -0x1(,%rax,2), %ebx
leaq 0x18(%rsp), %rdi
callq 0x9120
leaq 0x38(%rsp), %rdi
callq 0x9120
movl %ebx, %eax
addq $0xc8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0xeaee
jmp 0xeaee
movq %rax, %rbx
jmp 0xeafb
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
callq 0x9120
leaq 0x38(%rsp), %rdi
callq 0x9120
movq %rbx, %rdi
callq 0x87f0
nop
// File: /workspace/github_cpp_makefile_star2_O2/eiskalteschatten[P]developersnotebook/src/views/AbstractView.cpp
// Function: AbstractView::get_date_from_string(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*)
std::tm AbstractView::get_date_from_string(std::string *date_str) {
    std::tm date_tm = {};
    std::stringstream ss(*date_str);
    ss >> std::get_time(&date_tm, Constants::default_date_format.c_str());
    return date_tm;
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x188, %rsp            # imm = 0x188
movq %rdi, %rbx
xorps %xmm0, %xmm0
movups %xmm0, 0x20(%rdi)
movups %xmm0, 0x10(%rdi)
movups %xmm0, (%rdi)
andq $0x0, 0x30(%rdi)
movq %rsp, %r14
pushq $0x18
popq %rdx
movq %r14, %rdi
callq 0x90f0
movq 0x2474d(%rip), %rdx     # 0x33290
movq %r14, %rdi
movq %rbx, %rsi
callq 0xee7d
movq %rsp, %rdi
callq 0x84d0
movq %rbx, %rax
addq $0x188, %rsp            # imm = 0x188
popq %rbx
popq %r14
retq
movq %rax, %rbx
movq %rsp, %rdi
callq 0x84d0
movq %rbx, %rdi
callq 0x87f0
nop
// File: /workspace/github_cpp_makefile_star2_O2/eiskalteschatten[P]developersnotebook/src/views/AbstractView.cpp
// Function: AbstractView::format_date[abi:cxx11](unsigned int const*, unsigned int const*, unsigned int const*)
std::string AbstractView::format_date(const guint *year, const guint *month, const guint *day) {
    std::tm date_tm = {};

    date_tm.tm_year = *year - 1900;
    date_tm.tm_mon  = *month;
    date_tm.tm_mday = *day;

    std::time_t time_temp   = std::mktime(&date_tm);
    const std::tm *time_out = std::localtime(&time_temp);

    return format_date(time_out);
}

// Assembly:
pushq %rbx
subq $0x50, %rsp
movq %rdi, %rbx
xorps %xmm0, %xmm0
leaq 0x10(%rsp), %rdi
movaps %xmm0, 0x20(%rdi)
movaps %xmm0, 0x10(%rdi)
movaps %xmm0, (%rdi)
andq $0x0, 0x30(%rdi)
movl $0xfffff894, %eax       # imm = 0xFFFFF894
addl (%rsi), %eax
movl %eax, 0x14(%rdi)
movl (%rdx), %eax
movl %eax, 0x10(%rdi)
movl (%rcx), %eax
movl %eax, 0xc(%rdi)
callq 0x8510
leaq 0x8(%rsp), %rdi
movq %rax, (%rdi)
callq 0x8820
movq %rbx, %rdi
movq %rax, %rsi
callq 0xebd2
movq %rbx, %rax
addq $0x50, %rsp
popq %rbx
retq
// File: /workspace/github_cpp_makefile_star2_O2/eiskalteschatten[P]developersnotebook/src/views/AbstractView.cpp
// Function: AbstractView::reset_calender(_GtkWidget*)
void AbstractView::reset_calender(GtkWidget *calendar) {
    auto now               = std::time(nullptr);
    struct std::tm *now_tm = std::localtime(&now);
    guint year             = now_tm->tm_year + 1900;

    gtk_calendar_select_month(GTK_CALENDAR(calendar), now_tm->tm_mon, year);
    gtk_calendar_select_day(GTK_CALENDAR(calendar), now_tm->tm_mday);

    gtk_calendar_select_day(GTK_CALENDAR(calendar), 0);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rsi, %rbx
xorl %edi, %edi
callq 0x8950
movq %rsp, %rdi
movq %rax, (%rdi)
callq 0x8820
movq %rax, %r14
movl $0x76c, %ebp            # imm = 0x76C
addl 0x14(%rax), %ebp
callq 0x8570
movq %rax, %r15
movq %rbx, %rdi
movq %rax, %rsi
callq 0x8150
movl 0x10(%r14), %esi
movq %rax, %rdi
movl %ebp, %edx
callq 0x9070
movq %rbx, %rdi
movq %r15, %rsi
callq 0x8150
movl 0xc(%r14), %esi
movq %rax, %rdi
callq 0x8ce0
movq %rbx, %rdi
movq %r15, %rsi
callq 0x8150
movq %rax, %rdi
xorl %esi, %esi
callq 0x8ce0
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_cpp_makefile_star2_O2/eiskalteschatten[P]developersnotebook/src/views/DashboardView.cpp
// Function: projects_ending_soon_row_activated(_GtkTreeView*, _GtkTreePath*, _GtkTreeViewColumn*, DashboardView*)
void projects_ending_soon_row_activated(GtkTreeView *tree_view, GtkTreePath *path, GtkTreeViewColumn *col, DashboardView *dv) {
    GtkTreeModel *model = gtk_tree_view_get_model(tree_view);
    GtkTreeIter tree_iter;
    MainWindow *mw = static_cast<MainWindow*>(dv->main_window_obj);

    if (gtk_tree_model_get_iter(model, &tree_iter, path)) {
        GtkWidget *stack = mw->get_stack();
        gchar *id;
        gtk_tree_model_get(model, &tree_iter, ID_COLUMN, &id, -1);

        GtkWidget *stack_child_widget = gtk_stack_get_child_by_name(GTK_STACK(stack), "projects");
        gtk_stack_set_visible_child(GTK_STACK(stack), stack_child_widget);

        mw->get_projects_view()->select_row_in_list_view(id);

        g_free(id);
    }
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x30, %rsp
movq %rcx, %rbx
movq %rsi, %r14
callq 0x84c0
movq %rax, %r15
movq 0x28(%rbx), %r13
leaq 0x10(%rsp), %rsi
movq %rax, %rdi
movq %r14, %rdx
callq 0x8d90
testl %eax, %eax
je 0xf063
movq 0x30(%r13), %r14
leaq 0x10(%rsp), %rsi
leaq 0x8(%rsp), %rbx
pushq $-0x1
popq %r8
movq %r15, %rdi
xorl %edx, %edx
movq %rbx, %rcx
xorl %eax, %eax
callq 0x8890
callq 0x8a00
movq %rax, %r15
movq %r14, %rdi
movq %rax, %rsi
callq 0x8150
leaq 0x133dc(%rip), %rsi     # 0x2240a
movq %rax, %rdi
callq 0x8e90
movq %rax, %r12
movq %r14, %rdi
movq %r15, %rsi
callq 0x8150
movq %rax, %rdi
movq %r12, %rsi
callq 0x8970
movq 0x48(%r13), %rdi
movq (%rbx), %rsi
callq 0xe15c
movq (%rbx), %rdi
callq 0x9118
addq $0x30, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
nop
// File: /workspace/github_cpp_makefile_star2_O2/eiskalteschatten[P]developersnotebook/src/views/DashboardView.cpp
// Function: DashboardView::fill_projects_ending_soon()
void DashboardView::fill_projects_ending_soon() {
    GtkTreeIter tree_iter;
    ProjectsModel projects;

    gtk_list_store_clear(projects_ending_soon_list_store);

    projects.get_projects_ending_soon();
    const tableVector &contents = projects.get_full_table();

    for (auto const &row_map : contents) {
        ProjectsModel *row       = new ProjectsModel(row_map);
        const std::string id_str = std::to_string(row->get_id());

        gtk_list_store_append(GTK_LIST_STORE(projects_ending_soon_list_store), &tree_iter);

        gtk_list_store_set(GTK_LIST_STORE(projects_ending_soon_list_store), &tree_iter, ID_COLUMN, id_str.c_str(),
                                                                                        NAME_COLUMN, row->get_name().c_str(),
                                                                                        END_DATE_COLUMN, row->get_end_date().c_str(),
                                                                                        -1);

        delete row;
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1d8, %rsp            # imm = 0x1D8
movq %rdi, %rbx
leaq 0x90(%rsp), %rdi
callq 0x1f880
movq 0x20(%rbx), %rdi
callq 0x8440
leaq 0x90(%rsp), %rdi
callq 0x206da
movq 0xd0(%rsp), %r14
movq 0xd8(%rsp), %rax
movq %rax, 0x8(%rsp)
cmpq 0x8(%rsp), %r14
je 0xf7e7
movl $0x148, %edi            # imm = 0x148
callq 0x81c0
movq %rax, %r15
movq %rax, %rdi
movq %r14, %rsi
callq 0x1fa40
movl 0x58(%r15), %esi
leaq 0x50(%rsp), %rdi
callq 0xe22b
movq 0x20(%rbx), %r13
callq 0x86c0
movq %rax, %r12
movq %r13, %rdi
movq %rax, %rsi
callq 0x8150
movq %rax, %rdi
leaq 0x70(%rsp), %rsi
callq 0x8a50
movq 0x20(%rbx), %rdi
movq %r12, %rsi
callq 0x8150
movq %rax, %r12
movq 0x50(%rsp), %r13
leaq 0x60(%r15), %rsi
leaq 0x30(%rsp), %rdi
callq 0x86e0
movq 0x30(%rsp), %rbp
movq %r15, %rsi
addq $0xa0, %rsi
leaq 0x10(%rsp), %rdi
callq 0x86e0
subq $0x8, %rsp
movq %r12, %rdi
leaq 0x78(%rsp), %rsi
xorl %edx, %edx
movq %r13, %rcx
pushq $0x1
popq %r8
movq %rbp, %r9
xorl %eax, %eax
pushq $-0x1
pushq 0x20(%rsp)
pushq $0x2
callq 0x8d10
addq $0x20, %rsp
leaq 0x10(%rsp), %rdi
callq 0x9120
leaq 0x30(%rsp), %rdi
callq 0x9120
movq (%r15), %rax
movq %r15, %rdi
callq *0x10(%rax)
leaq 0x50(%rsp), %rdi
callq 0x9120
addq $0x30, %r14
jmp 0xf6fc
leaq 0x90(%rsp), %rdi
callq 0x1fd0a
addq $0x1d8, %rsp            # imm = 0x1D8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0xf83c
jmp 0xf841
movq %rax, %rbx
jmp 0xf81c
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x9120
leaq 0x30(%rsp), %rdi
callq 0x9120
jmp 0xf844
jmp 0xf83c
movq %rax, %rbx
movl $0x148, %esi            # imm = 0x148
movq %r15, %rdi
callq 0x8190
jmp 0xf84e
movq %rax, %rbx
jmp 0xf84e
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x9120
leaq 0x90(%rsp), %rdi
callq 0x1fd0a
movq %rbx, %rdi
callq 0x87f0
nop
// File: /workspace/github_cpp_makefile_star2_O2/eiskalteschatten[P]developersnotebook/src/db/SqliteConnectionManager.cpp
// Function: SqliteConnectionManager::SqliteConnectionManager()
SqliteConnectionManager::SqliteConnectionManager() {
    int connection = sqlite3_open(Constants::path_to_db.c_str(), &db);

    if (connection) {
        fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
        return;
    }
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
andq $0x0, (%rdi)
movq 0x23c52(%rip), %rdi     # 0x334d0
movq %rbx, %rsi
callq 0x8460
testl %eax, %eax
jne 0xf892
addq $0x8, %rsp
popq %rbx
popq %r14
retq
movq 0x226f7(%rip), %rax     # 0x31f90
movq (%rax), %r14
movq (%rbx), %rdi
callq 0x8ff0
leaq 0x12c2d(%rip), %rsi     # 0x224d8
movq %r14, %rdi
movq %rax, %rdx
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x8250
nop
// File: /workspace/github_cpp_makefile_star2_O2/eiskalteschatten[P]developersnotebook/src/windows/MainWindow.cpp
// Function: MainWindow::setup_css()
void MainWindow::setup_css() {
    Css css("dark", path_to_exec);

    css_provider = gtk_css_provider_new();

    gtk_css_provider_load_from_path(css_provider, css.get_path().c_str(), NULL);
    gtk_style_context_add_provider_for_screen(gdk_screen_get_default(), GTK_STYLE_PROVIDER(css_provider), GTK_STYLE_PROVIDER_PRIORITY_USER);
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x108, %rsp            # imm = 0x108
movq %rdi, %rbx
leaq 0x11cf3(%rip), %rsi     # 0x22657
leaq 0x48(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0xb078
leaq 0x28(%rsp), %rdi
movq %rbx, %rsi
callq 0x86e0
leaq 0x68(%rsp), %rdi
leaq 0x48(%rsp), %rsi
leaq 0x28(%rsp), %rdx
callq 0xbadc
leaq 0x28(%rsp), %rdi
callq 0x9120
leaq 0x48(%rsp), %rdi
callq 0x9120
callq 0x86d0
movq %rax, %r14
movq %rax, 0x38(%rbx)
leaq 0xc8(%rsp), %rsi
leaq 0x8(%rsp), %rdi
callq 0x86e0
movq 0x8(%rsp), %rsi
movq %r14, %rdi
xorl %edx, %edx
callq 0x8b30
leaq 0x8(%rsp), %rdi
callq 0x9120
callq 0x8e60
movq %rax, %r14
movq 0x38(%rbx), %rbx
callq 0x85f0
movq %rbx, %rdi
movq %rax, %rsi
callq 0x8150
movq %r14, %rdi
movq %rax, %rsi
movl $0x320, %edx            # imm = 0x320
callq 0x8480
leaq 0x68(%rsp), %rdi
callq 0xbbc0
addq $0x108, %rsp            # imm = 0x108
popq %rbx
popq %r14
retq
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x9120
jmp 0x10a57
jmp 0x10a54
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x9120
jmp 0x10a43
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
callq 0x9120
jmp 0x10a61
movq %rax, %rbx
jmp 0x10a61
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0xbbc0
movq %rbx, %rdi
callq 0x87f0
nop
// File: /workspace/github_cpp_makefile_star2_O2/eiskalteschatten[P]developersnotebook/src/windows/MainWindow.cpp
// Function: MainWindow::setup_grid()
void MainWindow::setup_grid() {
    grid = gtk_grid_new();

    gtk_grid_insert_row(GTK_GRID(grid), 0);
    gtk_grid_insert_row(GTK_GRID(grid), 1);
    gtk_grid_insert_column(GTK_GRID(grid), 0);
    gtk_grid_insert_column(GTK_GRID(grid), 1);

    gtk_widget_set_valign(grid, GTK_ALIGN_FILL);

    gtk_widget_set_name(grid, "main-grid");

    gtk_container_add(GTK_CONTAINER(window), grid);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
callq 0x8c60
movq %rax, %r15
movq %rax, 0x28(%rbx)
callq 0x89f0
movq %rax, %r14
movq %r15, %rdi
movq %rax, %rsi
callq 0x8150
movq %rax, %rdi
xorl %esi, %esi
callq 0x82f0
movq 0x28(%rbx), %rdi
movq %r14, %rsi
callq 0x8150
pushq $0x1
popq %rbp
movq %rax, %rdi
movl %ebp, %esi
callq 0x82f0
movq 0x28(%rbx), %rdi
movq %r14, %rsi
callq 0x8150
movq %rax, %rdi
xorl %esi, %esi
callq 0x8750
movq 0x28(%rbx), %rdi
movq %r14, %rsi
callq 0x8150
movq %rax, %rdi
movl %ebp, %esi
callq 0x8750
movq 0x28(%rbx), %rdi
xorl %esi, %esi
callq 0x8ec0
movq 0x28(%rbx), %rdi
leaq 0x11b64(%rip), %rsi     # 0x2265c
callq 0x8230
movq 0x20(%rbx), %r14
callq 0x89e0
movq %r14, %rdi
movq %rax, %rsi
callq 0x8150
movq 0x28(%rbx), %rsi
movq %rax, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x8f20
nop
// File: /workspace/github_cpp_makefile_star2_O2/eiskalteschatten[P]developersnotebook/src/windows/MainWindow.cpp
// Function: MainWindow::save_and_close_window(_GtkWidget*)
void MainWindow::save_and_close_window(GtkWidget *window) {
    int width;
    int height;
    PreferencesModel *preferences_model = new PreferencesModel();

    if (gtk_window_is_maximized(GTK_WINDOW(window))) {
        preferences_model->set_window_maximized(true, false);
    }
    else {
        gtk_window_get_size(GTK_WINDOW(window), &width, &height);

        preferences_model->set_window_width(width, false);
        preferences_model->set_window_height(height, false);
        preferences_model->set_window_maximized(false, false);
    }

    preferences_model->save_all();

    gtk_widget_destroy(window);
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
pushq $0x68
popq %rdi
callq 0x81c0
movq %rax, %r14
movq %rax, %rdi
callq 0x20ab8
callq 0x8f80
movq %rax, %r15
movq %rbx, %rdi
movq %rax, %rsi
callq 0x8150
movq %rax, %rdi
callq 0x8f90
testl %eax, %eax
je 0x10d57
pushq $0x1
popq %rsi
movq %r14, %rdi
jmp 0x10d97
movq %rbx, %rdi
movq %r15, %rsi
callq 0x8150
leaq 0x4(%rsp), %r15
movq %rsp, %r12
movq %rax, %rdi
movq %r15, %rsi
movq %r12, %rdx
callq 0x85d0
movq %r14, %rdi
movq %r15, %rsi
xorl %edx, %edx
callq 0x20b9a
movq %r14, %rdi
movq %r12, %rsi
xorl %edx, %edx
callq 0x20c04
movq %r14, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x20c6e
movq (%r14), %rax
movq %r14, %rdi
callq *0x18(%rax)
movq %rbx, %rdi
callq 0x81a0
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movq %rax, %rbx
pushq $0x68
popq %rsi
movq %r14, %rdi
callq 0x8190
movq %rbx, %rdi
callq 0x87f0
// File: /workspace/github_cpp_makefile_star2_O2/eiskalteschatten[P]developersnotebook/src/windows/ReleaseNotesWindow.cpp
// Function: ReleaseNotesWindow::fill_release_notes(_GtkTextBuffer*)
void ReleaseNotesWindow::fill_release_notes(GtkTextBuffer *buffer) {
    Resource release_notes_resource("release-notes", "html", path_to_exec_str);
    std::string path_to_release_notes = release_notes_resource.get_path();

    std::ifstream ifs(path_to_release_notes.c_str());
    std::string release_notes_str((std::istreambuf_iterator<char>(ifs)), (std::istreambuf_iterator<char>()));

    const gchar *release_notes = release_notes_str.c_str();

    GtkTextIter start;

    gtk_text_buffer_get_start_iter(buffer, &start);
    gtk_text_buffer_insert_markup(buffer, &start, release_notes, -1);
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x398, %rsp            # imm = 0x398
movq %rsi, %rbx
movq %rdi, %r14
leaq 0x11565(%rip), %rsi     # 0x226aa
leaq 0x80(%rsp), %rdi
leaq 0x190(%rsp), %rdx
callq 0xb078
leaq 0x11557(%rip), %rsi     # 0x226b8
leaq 0x60(%rsp), %rdi
leaq 0xa0(%rsp), %rdx
callq 0xb078
leaq 0x40(%rsp), %rdi
movq %r14, %rsi
callq 0x86e0
leaq 0xf0(%rsp), %rdi
leaq 0x80(%rsp), %rsi
leaq 0x60(%rsp), %rdx
leaq 0x40(%rsp), %rcx
callq 0xb6c4
leaq 0x40(%rsp), %rdi
callq 0x9120
leaq 0x60(%rsp), %rdi
callq 0x9120
leaq 0x80(%rsp), %rdi
callq 0x9120
leaq 0x150(%rsp), %rsi
leaq 0x20(%rsp), %rdi
callq 0x86e0
movq 0x20(%rsp), %rsi
leaq 0x190(%rsp), %rdi
pushq $0x8
popq %rdx
callq 0x8060
movq 0x190(%rsp), %rax
movq -0x18(%rax), %rax
movq 0x278(%rsp,%rax), %rsi
leaq 0x10(%rsp), %rax
movq %rax, -0x10(%rax)
movq %rsp, %rdi
pushq $-0x1
popq %rdx
xorl %ecx, %ecx
movl %edx, %r8d
callq 0xb512
movq (%rsp), %r14
leaq 0xa0(%rsp), %rsi
movq %rbx, %rdi
callq 0x80d0
leaq 0xa0(%rsp), %rsi
pushq $-0x1
popq %rcx
movq %rbx, %rdi
movq %r14, %rdx
callq 0x8990
movq %rsp, %rdi
callq 0x9120
leaq 0x190(%rsp), %rdi
callq 0x8050
leaq 0x20(%rsp), %rdi
callq 0x9120
leaq 0xf0(%rsp), %rdi
callq 0xb9da
addq $0x398, %rsp            # imm = 0x398
popq %rbx
popq %r14
retq
movq %rax, %rbx
jmp 0x112c4
movq %rax, %rbx
jmp 0x112d1
movq %rax, %rbx
jmp 0x112db
movq %rax, %rbx
leaq 0x40(%rsp), %rdi
callq 0x9120
jmp 0x11296
movq %rax, %rbx
leaq 0x60(%rsp), %rdi
callq 0x9120
jmp 0x112a5
movq %rax, %rbx
leaq 0x80(%rsp), %rdi
callq 0x9120
jmp 0x112e8
movq %rax, %rbx
jmp 0x112e8
movq %rax, %rbx
movq %rsp, %rdi
callq 0x9120
leaq 0x190(%rsp), %rdi
callq 0x8050
leaq 0x20(%rsp), %rdi
callq 0x9120
leaq 0xf0(%rsp), %rdi
callq 0xb9da
movq %rbx, %rdi
callq 0x87f0
// File: /workspace/github_cpp_makefile_star2_O2/eiskalteschatten[P]developersnotebook/src/windows/MenuBar.cpp
// Function: MenuBar::MenuBar(MainWindow*)
MenuBar::MenuBar(MainWindow *new_main_window_obj) {
    main_window_obj  = new_main_window_obj;
    main_window      = main_window_obj->get_window();
    primary_mask_key = GDK_CONTROL_MASK;

    // Override the primary modifier key for macOS
    #ifdef __APPLE__
        primary_mask_key = GDK_META_MASK;
    #endif

    menubar = gtk_menu_bar_new();

    // Accelerators
    accel_group = gtk_accel_group_new();
    gtk_window_add_accel_group(GTK_WINDOW(main_window), accel_group);

    setup_file_menu();
    #ifdef __APPLE__
        setup_edit_menu();
    #endif
    setup_view_menu();
    setup_help_menu();
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
movq %rsi, (%rdi)
movq 0x20(%rsi), %rax
movq %rax, 0x8(%rdi)
movl $0x4, 0x10(%rdi)
callq 0x9020
movq %rax, 0x20(%rbx)
callq 0x8b90
movq %rax, 0x18(%rbx)
movq 0x8(%rbx), %r14
callq 0x8f80
movq %r14, %rdi
movq %rax, %rsi
callq 0x8150
movq 0x18(%rbx), %rsi
movq %rax, %rdi
callq 0x8350
movq %rbx, %rdi
callq 0x113f0
movq %rbx, %rdi
callq 0x11624
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x11774
// File: /workspace/github_cpp_makefile_star2_O2/eiskalteschatten[P]developersnotebook/src/windows/MenuBar.cpp
// Function: MenuBar::setup_view_menu()
void MenuBar::setup_view_menu() {
    GtkWidget *view_menu = gtk_menu_new();
    GtkWidget *view_mi   = gtk_menu_item_new_with_label("View");

    dashboard_mi = gtk_menu_item_new_with_label("Dashboard");
    projects_mi  = gtk_menu_item_new_with_label("Projects");

    // Setup submenu
    gtk_menu_item_set_submenu(GTK_MENU_ITEM(view_mi), view_menu);

    // Setup menu items

    // Dashboard
    {
        gtk_menu_shell_append(GTK_MENU_SHELL(view_menu), dashboard_mi);
        gtk_widget_add_accelerator(dashboard_mi, "activate", accel_group, GDK_KEY_1, primary_mask_key, GTK_ACCEL_VISIBLE);
        g_signal_connect(G_OBJECT(dashboard_mi), "activate", G_CALLBACK(switch_stack_dashboard), this);
    }

    // Projects
    {
        gtk_menu_shell_append(GTK_MENU_SHELL(view_menu), projects_mi);
        gtk_widget_add_accelerator(projects_mi, "activate", accel_group, GDK_KEY_2, primary_mask_key, GTK_ACCEL_VISIBLE);
        g_signal_connect(G_OBJECT(projects_mi), "activate", G_CALLBACK(switch_stack_projects), this);
    }

    #ifdef __APPLE__
        GtkWidget *separator_mi_1 = gtk_separator_menu_item_new();
        gtk_menu_shell_append(GTK_MENU_SHELL(view_menu), separator_mi_1);
    #endif

    // Add the menu to the menu shell
    gtk_menu_shell_append(GTK_MENU_SHELL(menubar), view_mi);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
callq 0x87e0
movq %rax, %r12
leaq 0x11095(%rip), %rdi     # 0x226d6
callq 0x8de0
movq %rax, %r14
movq %rax, (%rsp)
leaq 0x1101f(%rip), %rdi     # 0x22673
callq 0x8de0
movq %rax, 0x40(%rbx)
leaq 0x11019(%rip), %rdi     # 0x2267d
callq 0x8de0
movq %rax, 0x48(%rbx)
callq 0x8360
movq %r14, %rdi
movq %rax, %rsi
callq 0x8150
movq %rax, %rdi
movq %r12, %rsi
callq 0x8ab0
callq 0x8280
movq %rax, %r15
movq %r12, %rdi
movq %rax, %rsi
callq 0x8150
movq 0x40(%rbx), %rsi
movq %rax, %rdi
callq 0x8870
movq 0x40(%rbx), %rdi
movq 0x18(%rbx), %rdx
movl 0x10(%rbx), %r8d
leaq 0x10a34(%rip), %r13     # 0x220ee
pushq $0x31
popq %rcx
pushq $0x1
popq %rbp
movq %r13, %rsi
movl %ebp, %r9d
callq 0x89b0
movq 0x40(%rbx), %rdi
pushq $0x50
popq %r14
movq %r14, %rsi
callq 0x8150
leaq -0x37b(%rip), %rdx      # 0x11367
movq %rax, %rdi
movq %r13, %rsi
movq %rbx, %rcx
xorl %r8d, %r8d
xorl %r9d, %r9d
callq 0x82b0
movq %r12, %rdi
movq %r15, %rsi
callq 0x8150
movq 0x48(%rbx), %rsi
movq %rax, %rdi
callq 0x8870
movq 0x48(%rbx), %rdi
movq 0x18(%rbx), %rdx
movl 0x10(%rbx), %r8d
pushq $0x32
popq %rcx
movq %r13, %rsi
movl %ebp, %r9d
callq 0x89b0
movq 0x48(%rbx), %rdi
movq %r14, %rsi
callq 0x8150
leaq -0x3c4(%rip), %rdx      # 0x11376
movq %rax, %rdi
movq %r13, %rsi
movq %rbx, %rcx
xorl %r8d, %r8d
xorl %r9d, %r9d
callq 0x82b0
movq 0x20(%rbx), %rdi
movq %r15, %rsi
callq 0x8150
movq %rax, %rdi
movq (%rsp), %rsi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x8870
// File: /workspace/github_cpp_makefile_star2_O2/eiskalteschatten[P]developersnotebook/src/windows/MenuBar.cpp
// Function: MenuBar::setup_help_menu()
void MenuBar::setup_help_menu() {
    GtkWidget *help_menu            = gtk_menu_new();
    about_mi                        = gtk_menu_item_new_with_label("About");
    GtkWidget *release_notes_mi     = gtk_menu_item_new_with_label("Release Notes");
    // GtkWidget *check_for_updates_mi = gtk_menu_item_new_with_label("Check for Updates");
    help_mi                         = gtk_menu_item_new_with_label("Help");

    // Setup submenu
    gtk_menu_item_set_submenu(GTK_MENU_ITEM(help_mi), help_menu);

    // Setup menu items

    // Check for updates
    // {
    //     gtk_menu_shell_append(GTK_MENU_SHELL(help_menu), check_for_updates_mi);
    // }

    // Release Notes
    {
        gtk_menu_shell_append(GTK_MENU_SHELL(help_menu), release_notes_mi);
        g_signal_connect(G_OBJECT(release_notes_mi), "activate", G_CALLBACK(ReleaseNotesWindow::activate), main_window_obj);
    }

    // About
    {
        gtk_menu_shell_append(GTK_MENU_SHELL(help_menu), about_mi);
        g_signal_connect(G_OBJECT(about_mi), "activate", G_CALLBACK(AboutDialog::activate), main_window_obj);
    }

    // Add the menu to the menu shell
    gtk_menu_shell_append(GTK_MENU_SHELL(menubar), help_mi);
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
movq %rdi, %rbx
callq 0x87e0
movq %rax, %r14
leaq 0x10f4c(%rip), %rdi     # 0x226db
callq 0x8de0
movq %rax, 0x30(%rbx)
leaq 0x10efd(%rip), %rdi     # 0x2269c
callq 0x8de0
movq %rax, %r12
leaq 0x10f33(%rip), %rdi     # 0x226e1
callq 0x8de0
movq %rax, %r15
movq %rax, 0x38(%rbx)
callq 0x8360
movq %r15, %rdi
movq %rax, %rsi
callq 0x8150
movq %rax, %rdi
movq %r14, %rsi
callq 0x8ab0
callq 0x8280
movq %rax, %r15
movq %r14, %rdi
movq %rax, %rsi
callq 0x8150
movq %rax, %rdi
movq %r12, %rsi
callq 0x8870
pushq $0x50
popq %r13
movq %r12, %rdi
movq %r13, %rsi
callq 0x8150
movq (%rbx), %rcx
leaq 0x108e2(%rip), %r12     # 0x220ee
leaq -0x9bb(%rip), %rdx      # 0x10e58
movq %rax, %rdi
movq %r12, %rsi
xorl %r8d, %r8d
xorl %r9d, %r9d
callq 0x82b0
movq %r14, %rdi
movq %r15, %rsi
callq 0x8150
movq 0x30(%rbx), %rsi
movq %rax, %rdi
callq 0x8870
movq 0x30(%rbx), %rdi
movq %r13, %rsi
callq 0x8150
movq (%rbx), %rcx
leaq -0x147d(%rip), %rdx     # 0x103d4
movq %rax, %rdi
movq %r12, %rsi
xorl %r8d, %r8d
xorl %r9d, %r9d
callq 0x82b0
movq 0x20(%rbx), %rdi
movq %r15, %rsi
callq 0x8150
movq 0x38(%rbx), %rsi
movq %rax, %rdi
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
jmp 0x8870
nop
// File: /workspace/github_cpp_makefile_star2_O2/eiskalteschatten[P]developersnotebook/src/windows/MenuBar.cpp
// Function: MenuBar::setup_edit_menu()
void MenuBar::setup_edit_menu() {
    GtkWidget *edit_menu = gtk_menu_new();
    // preferences_mi       = gtk_menu_item_new_with_label("Preferences");
    GtkWidget *edit_mi   = gtk_menu_item_new_with_label("Edit");

    // Setup submenu
    gtk_menu_item_set_submenu(GTK_MENU_ITEM(edit_mi), edit_menu);

    // Setup menu items
    // gtk_menu_shell_append(GTK_MENU_SHELL(edit_menu), preferences_mi);
    // gtk_widget_add_accelerator(preferences_mi, "activate", accel_group, GDK_KEY_comma, primary_mask_key, GTK_ACCEL_VISIBLE);

    // Add the menu to the menu shell
    gtk_menu_shell_append(GTK_MENU_SHELL(menubar), edit_mi);
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rdi, %rbx
callq 0x87e0
movq %rax, %r14
leaq 0x10e34(%rip), %rdi     # 0x226d1
callq 0x8de0
movq %rax, %r15
callq 0x8360
movq %r15, %rdi
movq %rax, %rsi
callq 0x8150
movq %rax, %rdi
movq %r14, %rsi
callq 0x8ab0
movq 0x20(%rbx), %rbx
callq 0x8280
movq %rbx, %rdi
movq %rax, %rsi
callq 0x8150
movq %rax, %rdi
movq %r15, %rsi
popq %rbx
popq %r14
popq %r15
jmp 0x8870
// File: /workspace/github_cpp_makefile_star2_O2/eiskalteschatten[P]developersnotebook/src/models/AbstractSqliteModel.cpp
// Function: AbstractSqliteModel::delete_single()
void AbstractSqliteModel::delete_single() {
    try {
        if (!id) {
            fprintf(stderr, "Could not delete the entry because there was no id!");
            return;
        }

        SqliteConnectionManager connection_manager;

        char *error_message = 0;
        int connection;
        std::string sql = "DELETE FROM " + table_schema->table_name +
                          " WHERE id=" + std::to_string(id) + ";";

        connection = sqlite3_exec(connection_manager.get_db(), sql.c_str(), NULL, 0, &error_message);

        if(connection != SQLITE_OK) {
            fprintf(stderr, "SQL error: %s\n", error_message);
            sqlite3_free(error_message);
        }
    }
    catch(const std::exception& e) {
        fprintf(stderr, "An exception occured while trying to delete from the database: %s\n", e.what());
    }
}

// Assembly:
pushq %r14
pushq %rbx
subq $0xb8, %rsp
cmpl $0x0, 0x58(%rdi)
je 0x12397
movq %rdi, %rbx
leaq 0x10(%rsp), %rdi
callq 0xf86c
andq $0x0, 0x8(%rsp)
movq 0x8(%rbx), %rdx
leaq 0x105a2(%rip), %rsi     # 0x22876
leaq 0x38(%rsp), %rdi
callq 0xb117
leaq 0x10552(%rip), %rdx     # 0x22837
leaq 0x58(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0xb059
movl 0x58(%rbx), %esi
leaq 0x18(%rsp), %rdi
callq 0xe22b
leaq 0x78(%rsp), %rdi
leaq 0x58(%rsp), %rsi
leaq 0x18(%rsp), %rdx
callq 0x12de5
leaq 0x10268(%rip), %rdx     # 0x22584
leaq 0x98(%rsp), %rdi
leaq 0x78(%rsp), %rsi
callq 0xb059
leaq 0x78(%rsp), %rdi
callq 0x9120
leaq 0x18(%rsp), %rdi
callq 0x9120
leaq 0x58(%rsp), %rdi
callq 0x9120
leaq 0x38(%rsp), %rdi
callq 0x9120
movq 0x10(%rsp), %rdi
movq 0x98(%rsp), %rsi
leaq 0x8(%rsp), %r8
xorl %edx, %edx
xorl %ecx, %ecx
callq 0x80c0
testl %eax, %eax
jne 0x123bd
leaq 0x98(%rsp), %rdi
callq 0x9120
leaq 0x10(%rsp), %rdi
callq 0xf8c0
addq $0xb8, %rsp
popq %rbx
popq %r14
retq
movq 0x1fbf2(%rip), %rax     # 0x31f90
movq (%rax), %rcx
leaq 0x1049a(%rip), %rdi     # 0x22842
pushq $0x33
popq %rsi
pushq $0x1
popq %rdx
addq $0xb8, %rsp
popq %rbx
popq %r14
jmp 0x8e70
movq 0x1fbcc(%rip), %rax     # 0x31f90
movq (%rax), %rdi
movq 0x8(%rsp), %rdx
leaq 0x101b3(%rip), %rsi     # 0x22586
xorl %eax, %eax
callq 0x8250
movq 0x8(%rsp), %rdi
callq 0x9060
jmp 0x12375
movq %rdx, %r14
movq %rax, %rbx
leaq 0x78(%rsp), %rdi
callq 0x9120
jmp 0x123fe
movq %rdx, %r14
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
callq 0x9120
jmp 0x12410
movq %rdx, %r14
movq %rax, %rbx
leaq 0x58(%rsp), %rdi
callq 0x9120
jmp 0x12422
movq %rdx, %r14
movq %rax, %rbx
leaq 0x38(%rsp), %rdi
jmp 0x12447
movq %rdx, %r14
movq %rax, %rbx
jmp 0x1244c
movq %rdx, %r14
movq %rax, %rbx
jmp 0x12456
movq %rdx, %r14
movq %rax, %rbx
leaq 0x98(%rsp), %rdi
callq 0x9120
leaq 0x10(%rsp), %rdi
callq 0xf8c0
movq %rbx, %rdi
cmpl $0x1, %r14d
jne 0x12495
callq 0x8090
movq 0x1fb25(%rip), %rcx     # 0x31f90
movq (%rcx), %rbx
movq (%rax), %rcx
movq %rax, %rdi
callq *0x10(%rcx)
leaq 0x10405(%rip), %rsi     # 0x22883
movq %rbx, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x8250
callq 0x89d0
jmp 0x1238c
callq 0x87f0
// File: /workspace/github_cpp_makefile_star2_O2/eiskalteschatten[P]developersnotebook/src/models/ProjectsModel.cpp
// Function: ProjectsModel::set_is_complete(bool, bool)
void ProjectsModel::set_is_complete(const bool new_is_complete, bool update_db) {
    int int_value = new_is_complete ? 1 : 0;
    is_complete   = new_is_complete;

    if (update_db) {
        update_single_int("is_complete", int_value);
    }
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x28, %rsp
movl %esi, 0x4(%rsp)
movb %sil, 0x100(%rdi)
testl %edx, %edx
je 0x20016
movq %rdi, %rbx
leaq 0x230f(%rip), %rsi      # 0x222f9
leaq 0x8(%rsp), %r14
leaq 0x3(%rsp), %rdx
movq %r14, %rdi
callq 0xb078
leaq 0x4(%rsp), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1222c
leaq 0x8(%rsp), %rdi
callq 0x9120
addq $0x28, %rsp
popq %rbx
popq %r14
retq
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x9120
movq %rbx, %rdi
callq 0x87f0
nop
// File: /workspace/github_cpp_makefile_star2_O2/eiskalteschatten[P]developersnotebook/src/models/ProjectsModel.cpp
// Function: ProjectsModel::fill_model()
void ProjectsModel::fill_model() {
    name           = contents["name"];
    start_date     = contents["start_date"];
    end_date       = contents["end_date"];
    url            = contents["url"];
    notes          = contents["notes"];
    is_complete    = contents["is_complete"] == "1" ? true : false;
    date_completed = contents["date_completed"];
    date_created   = contents["date_created"];
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x28, %rsp
movq %rdi, %rbx
leaq 0x21af(%rip), %rsi      # 0x222dc
leaq 0x8(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0xb078
leaq 0x10(%rbx), %r14
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
callq 0xe284
leaq 0x60(%rbx), %rdi
movq %rax, %rsi
callq 0x8f00
leaq 0x8(%rsp), %rdi
callq 0x9120
leaq 0x2177(%rip), %rsi      # 0x222e1
leaq 0x8(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0xb078
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
callq 0xe284
leaq 0x80(%rbx), %rdi
movq %rax, %rsi
callq 0x8f00
leaq 0x8(%rsp), %rdi
callq 0x9120
leaq 0x2146(%rip), %rsi      # 0x222ec
leaq 0x8(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0xb078
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
callq 0xe284
leaq 0xa0(%rbx), %rdi
movq %rax, %rsi
callq 0x8f00
leaq 0x8(%rsp), %rdi
callq 0x9120
leaq 0x2113(%rip), %rsi      # 0x222f5
leaq 0x8(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0xb078
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
callq 0xe284
leaq 0xc0(%rbx), %rdi
movq %rax, %rsi
callq 0x8f00
leaq 0x8(%rsp), %rdi
callq 0x9120
leaq 0x2494(%rip), %rsi      # 0x226b2
leaq 0x8(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0xb078
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
callq 0xe284
leaq 0xe0(%rbx), %rdi
movq %rax, %rsi
callq 0x8f00
leaq 0x8(%rsp), %rdi
callq 0x9120
leaq 0x209f(%rip), %rsi      # 0x222f9
leaq 0x8(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0xb078
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
callq 0xe284
leaq 0x2292(%rip), %rsi      # 0x2250f
movq %rax, %rdi
callq 0xb504
movb %al, 0x100(%rbx)
leaq 0x8(%rsp), %rdi
callq 0x9120
leaq 0x2069(%rip), %rsi      # 0x22305
leaq 0x8(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0xb078
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
callq 0xe284
leaq 0x108(%rbx), %rdi
movq %rax, %rsi
callq 0x8f00
leaq 0x8(%rsp), %rdi
callq 0x9120
leaq 0x203c(%rip), %rsi      # 0x22314
leaq 0x8(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0xb078
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
callq 0xe284
addq $0x128, %rbx            # imm = 0x128
movq %rbx, %rdi
movq %rax, %rsi
callq 0x8f00
leaq 0x8(%rsp), %rdi
callq 0x9120
addq $0x28, %rsp
popq %rbx
popq %r14
retq
jmp 0x20328
jmp 0x20328
jmp 0x20339
jmp 0x20328
jmp 0x20328
jmp 0x20328
jmp 0x20328
jmp 0x20328
movq %rax, %rbx
jmp 0x20346
jmp 0x20339
jmp 0x20339
jmp 0x20339
jmp 0x20339
jmp 0x20339
jmp 0x20339
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x9120
movq %rbx, %rdi
callq 0x87f0
// File: /workspace/github_cpp_makefile_star2_O2/eiskalteschatten[P]developersnotebook/src/models/ProjectsModel.cpp
// Function: ProjectsModel::save_all()
void ProjectsModel::save_all() {
    contents["name"]           = name;
    contents["start_date"]     = start_date;
    contents["end_date"]       = end_date;
    contents["url"]            = url;
    contents["notes"]          = notes;
    contents["is_complete"]    = is_complete ? "1" : "0";
    contents["date_completed"] = date_completed;
    contents["date_created"]   = date_created;

    abstract_save_all();
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x30, %rsp
movq %rdi, %rbx
leaq 0x1f7b(%rip), %rsi      # 0x222dc
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0xb078
leaq 0x10(%rbx), %r14
leaq 0x10(%rsp), %rsi
movq %r14, %rdi
callq 0xe284
leaq 0x60(%rbx), %rsi
movq %rax, %rdi
callq 0x8f00
leaq 0x10(%rsp), %rdi
callq 0x9120
leaq 0x1f43(%rip), %rsi      # 0x222e1
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0xb078
leaq 0x10(%rsp), %rsi
movq %r14, %rdi
callq 0xe284
leaq 0x80(%rbx), %rsi
movq %rax, %rdi
callq 0x8f00
leaq 0x10(%rsp), %rdi
callq 0x9120
leaq 0x1f12(%rip), %rsi      # 0x222ec
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0xb078
leaq 0x10(%rsp), %rsi
movq %r14, %rdi
callq 0xe284
leaq 0xa0(%rbx), %rsi
movq %rax, %rdi
callq 0x8f00
leaq 0x10(%rsp), %rdi
callq 0x9120
leaq 0x1edf(%rip), %rsi      # 0x222f5
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0xb078
leaq 0x10(%rsp), %rsi
movq %r14, %rdi
callq 0xe284
leaq 0xc0(%rbx), %rsi
movq %rax, %rdi
callq 0x8f00
leaq 0x10(%rsp), %rdi
callq 0x9120
leaq 0x2260(%rip), %rsi      # 0x226b2
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0xb078
leaq 0x10(%rsp), %rsi
movq %r14, %rdi
callq 0xe284
leaq 0xe0(%rbx), %rsi
movq %rax, %rdi
callq 0x8f00
leaq 0x10(%rsp), %rdi
callq 0x9120
leaq 0x2081(%rip), %rax      # 0x2250f
leaq 0x209b(%rip), %r15      # 0x22530
cmpb $0x0, 0x100(%rbx)
cmovneq %rax, %r15
leaq 0x1e52(%rip), %rsi      # 0x222f9
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0xb078
leaq 0x10(%rsp), %rsi
movq %r14, %rdi
callq 0xe284
movq %rax, %rdi
movq %r15, %rsi
callq 0x8fd0
leaq 0x10(%rsp), %rdi
callq 0x9120
leaq 0x1e26(%rip), %rsi      # 0x22305
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0xb078
leaq 0x10(%rsp), %rsi
movq %r14, %rdi
callq 0xe284
leaq 0x108(%rbx), %rsi
movq %rax, %rdi
callq 0x8f00
leaq 0x10(%rsp), %rdi
callq 0x9120
leaq 0x1df9(%rip), %rsi      # 0x22314
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0xb078
leaq 0x10(%rsp), %rsi
movq %r14, %rdi
callq 0xe284
leaq 0x128(%rbx), %rsi
movq %rax, %rdi
callq 0x8f00
leaq 0x10(%rsp), %rdi
callq 0x9120
movq %rbx, %rdi
callq 0x129f4
addq $0x30, %rsp
popq %rbx
popq %r14
popq %r15
retq
jmp 0x20570
jmp 0x20570
jmp 0x20570
jmp 0x20570
jmp 0x20570
jmp 0x20570
jmp 0x20570
movq %rax, %rbx
jmp 0x20590
jmp 0x20583
jmp 0x20583
jmp 0x20583
jmp 0x20583
jmp 0x20583
jmp 0x20583
jmp 0x20583
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x9120
movq %rbx, %rdi
callq 0x87f0
// File: /workspace/github_cpp_makefile_star2_O2/eiskalteschatten[P]developersnotebook/src/models/ProjectsModel.cpp
// Function: ProjectsModel::truncate_notes()
void ProjectsModel::truncate_notes() {
    notes = std::regex_replace(notes, std::regex("\\n"), " ");
    notes = std::regex_replace(notes, std::regex("\\r"), "");

    if (notes != "" && notes.length() >= 50) {
        notes = notes.substr(0, 47) + "...";
    }
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x40, %rsp
movq %rdi, %r14
leaq 0xe0(%rdi), %rbx
leaq 0x3136(%rip), %rsi      # 0x236e8
movq %rsp, %r15
pushq $0x10
popq %rdx
movq %r15, %rdi
callq 0x12f2e
leaq 0x1fba(%rip), %rcx      # 0x22581
leaq 0x20(%rsp), %rdi
movq %rbx, %rsi
movq %r15, %rdx
xorl %r8d, %r8d
callq 0x12ede
leaq 0x20(%rsp), %r15
movq %rbx, %rdi
movq %r15, %rsi
callq 0x8660
movq %r15, %rdi
callq 0x9120
movq %rsp, %rdi
callq 0x12f94
leaq 0x30ea(%rip), %rsi      # 0x236eb
movq %rsp, %r15
pushq $0x10
popq %rdx
movq %r15, %rdi
callq 0x12f2e
leaq 0x234f(%rip), %rcx      # 0x22965
leaq 0x20(%rsp), %rdi
movq %rbx, %rsi
movq %r15, %rdx
xorl %r8d, %r8d
callq 0x12ede
leaq 0x20(%rsp), %r15
movq %rbx, %rdi
movq %r15, %rsi
callq 0x8660
movq %r15, %rdi
callq 0x9120
movq %rsp, %rdi
callq 0x12f94
leaq 0x2315(%rip), %rsi      # 0x22965
movq %rbx, %rdi
callq 0xe2ea
testb %al, %al
je 0x206ad
cmpq $0x32, 0xe8(%r14)
jb 0x206ad
movq %rsp, %r14
pushq $0x2f
popq %rcx
movq %r14, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x8d30
leaq 0x306e(%rip), %rdx      # 0x236ee
leaq 0x20(%rsp), %rdi
movq %r14, %rsi
callq 0xb059
leaq 0x20(%rsp), %r14
movq %rbx, %rdi
movq %r14, %rsi
callq 0x8660
movq %r14, %rdi
callq 0x9120
movq %rsp, %rdi
callq 0x9120
addq $0x40, %rsp
popq %rbx
popq %r14
popq %r15
retq
movq %rax, %rbx
movq %rsp, %rdi
callq 0x9120
jmp 0x206d1
jmp 0x206c6
movq %rax, %rbx
movq %rsp, %rdi
callq 0x12f94
movq %rbx, %rdi
callq 0x87f0
nop
// File: /workspace/github_cpp_makefile_star2_O2/eiskalteschatten[P]developersnotebook/src/models/ProjectsModel.cpp
// Function: ProjectsModel::get_projects_ending_soon()
void ProjectsModel::get_projects_ending_soon() {
    std::string sql = "SELECT * FROM " + table_schema->table_name +
                        " WHERE end_date IS NOT NULL" +
                        " AND end_date != \"\"" +
                        " AND is_complete = 0;";
    select_query(sql);
}

// Assembly:
pushq %r14
pushq %rbx
subq $0xa8, %rsp
movq %rdi, %rbx
movq 0x8(%rdi), %rdx
leaq 0x21d4(%rip), %rsi      # 0x228c6
leaq 0x88(%rsp), %r14
movq %r14, %rdi
callq 0xb117
leaq 0x2fe9(%rip), %rdx      # 0x236f2
leaq 0x28(%rsp), %rdi
movq %r14, %rsi
callq 0xb059
leaq 0x2ff1(%rip), %rdx      # 0x2370e
leaq 0x48(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0xb059
leaq 0x2fef(%rip), %rdx      # 0x23722
leaq 0x68(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0xb059
leaq 0x48(%rsp), %rdi
callq 0x9120
leaq 0x28(%rsp), %rdi
callq 0x9120
leaq 0x88(%rsp), %rdi
callq 0x9120
leaq 0x8(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x86e0
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x1249a
leaq 0x8(%rsp), %rdi
callq 0x9120
leaq 0x68(%rsp), %rdi
callq 0x9120
addq $0xa8, %rsp
popq %rbx
popq %r14
retq
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x9120
jmp 0x207b0
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
jmp 0x207e0
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
callq 0x9120
jmp 0x207c9
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x9120
jmp 0x207d8
movq %rax, %rbx
leaq 0x88(%rsp), %rdi
callq 0x9120
movq %rbx, %rdi
callq 0x87f0
nop
// File: /workspace/github_cpp_makefile_star2_O2/eiskalteschatten[P]developersnotebook/src/models/PreferencesModel.cpp
// Function: PreferencesModel::setup()
void PreferencesModel::setup() {
	table_schema = &SqliteSchema::preferences_table;

    select_one();

	if (get_window_width() == -1) {
		set_window_width(default_window_width, true);
	}

	if (get_window_height() == -1) {
		set_window_height(default_window_height, true);
	}
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
leaq 0x12ac9(%rip), %rax     # 0x335d0
movq %rax, 0x8(%rdi)
callq 0x126aa
cmpl $-0x1, 0x5c(%rbx)
jne 0x20b28
leaq 0x2c2b(%rip), %rsi      # 0x23748
pushq $0x1
popq %rdx
movq %rbx, %rdi
callq 0x20b9a
cmpl $-0x1, 0x60(%rbx)
je 0x20b30
popq %rbx
retq
leaq 0x2c15(%rip), %rsi      # 0x2374c
pushq $0x1
popq %rdx
movq %rbx, %rdi
popq %rbx
jmp 0x20c04
nop
// File: /workspace/github_cpp_makefile_star2_O2/eiskalteschatten[P]developersnotebook/src/models/PreferencesModel.cpp
// Function: PreferencesModel::set_window_maximized(bool, bool)
void PreferencesModel::set_window_maximized(const bool new_maximized, bool update_db) {
    int int_value    = new_maximized ? 1 : 0;
    window_maximized = new_maximized;

    if (update_db) {
        update_single_int("window_maximized", int_value);
    }
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x28, %rsp
movl %esi, 0x4(%rsp)
movb %sil, 0x64(%rdi)
testl %edx, %edx
je 0x20cb7
movq %rdi, %rbx
leaq 0x1894(%rip), %rsi      # 0x2251f
leaq 0x8(%rsp), %r14
leaq 0x3(%rsp), %rdx
movq %r14, %rdi
callq 0xb078
leaq 0x4(%rsp), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1222c
leaq 0x8(%rsp), %rdi
callq 0x9120
addq $0x28, %rsp
popq %rbx
popq %r14
retq
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x9120
movq %rbx, %rdi
callq 0x87f0
// File: /workspace/github_cpp_makefile_star2_O2/eiskalteschatten[P]developersnotebook/src/models/PreferencesModel.cpp
// Function: PreferencesModel::save_all()
void PreferencesModel::save_all() {
    contents["window_width"]     = std::to_string(window_width);
    contents["window_height"]    = std::to_string(window_height);
    contents["window_maximized"] = window_maximized ? "1" : "0";

    abstract_save_all();
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x50, %rsp
movq %rdi, %rbx
movl 0x5c(%rdi), %esi
leaq 0x10(%rsp), %rdi
callq 0xe22b
leaq 0x1717(%rip), %rsi      # 0x224fd
leaq 0x30(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0xb078
leaq 0x10(%rbx), %r14
leaq 0x30(%rsp), %rsi
movq %r14, %rdi
callq 0xe284
leaq 0x10(%rsp), %r15
movq %rax, %rdi
movq %r15, %rsi
callq 0x8660
leaq 0x30(%rsp), %rdi
callq 0x9120
movq %r15, %rdi
callq 0x9120
movl 0x60(%rbx), %esi
leaq 0x10(%rsp), %rdi
callq 0xe22b
leaq 0x16d5(%rip), %rsi      # 0x22511
leaq 0x30(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0xb078
leaq 0x30(%rsp), %rsi
movq %r14, %rdi
callq 0xe284
leaq 0x10(%rsp), %r15
movq %rax, %rdi
movq %r15, %rsi
callq 0x8660
leaq 0x30(%rsp), %rdi
callq 0x9120
movq %r15, %rdi
callq 0x9120
leaq 0x168e(%rip), %rax      # 0x2250f
leaq 0x16a8(%rip), %r15      # 0x22530
cmpb $0x0, 0x64(%rbx)
cmovneq %rax, %r15
leaq 0x1688(%rip), %rsi      # 0x2251f
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0xb078
leaq 0x10(%rsp), %rsi
movq %r14, %rdi
callq 0xe284
movq %rax, %rdi
movq %r15, %rsi
callq 0x8fd0
leaq 0x10(%rsp), %rdi
callq 0x9120
movq %rbx, %rdi
callq 0x129f4
addq $0x50, %rsp
popq %rbx
popq %r14
popq %r15
retq
movq %rax, %rbx
jmp 0x20f01
jmp 0x20ee3
jmp 0x20ef4
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x9120
jmp 0x20ef7
jmp 0x20ef4
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x9120
movq %rbx, %rdi
callq 0x87f0
nopl (%rax)
// File: /workspace/github_cpp_makefile_star2_O2/eiskalteschatten[P]developersnotebook/src/components/Modal.cpp
// Function: Modal::show_error_modal()
void Modal::show_error_modal() {
    #ifdef __APPLE__
        mac_show_error_modal(message, sub_message);
    #else
        GtkWidget *image = gtk_image_new_from_icon_name("dialog-error", GTK_ICON_SIZE_DIALOG);
        gtk_grid_attach(GTK_GRID(main_grid), image, 0, 0, 1, 2);

        GtkDialogFlags flags = GTK_DIALOG_DESTROY_WITH_PARENT;
        GtkWidget *dialog    = gtk_dialog_new_with_buttons("",
                                                           GTK_WINDOW(parent_window),
                                                           flags,
                                                           "OK",
                                                           GTK_RESPONSE_OK,
                                                           NULL);

        gtk_container_set_border_width(GTK_CONTAINER(dialog), 10);

        GtkWidget *content_area = gtk_dialog_get_content_area(GTK_DIALOG(dialog));
        gtk_box_pack_start(GTK_BOX(content_area), main_grid, TRUE, FALSE, 0);
        gtk_widget_show_all(dialog);

        gtk_dialog_run(GTK_DIALOG(dialog));
        gtk_widget_destroy(dialog);
    #endif
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rdi, %rbx
leaq 0x265b(%rip), %rdi      # 0x23787
pushq $0x6
popq %rsi
callq 0x8a40
movq %rax, %r14
movq 0x8(%rbx), %r15
callq 0x89f0
movq %r15, %rdi
movq %rax, %rsi
callq 0x8150
pushq $0x1
popq %rbp
pushq $0x2
popq %r15
movq %rax, %rdi
movq %r14, %rsi
xorl %edx, %edx
xorl %ecx, %ecx
movl %ebp, %r8d
movl %r15d, %r9d
callq 0x8b00
movq (%rbx), %r14
callq 0x8f80
movq %r14, %rdi
movq %rax, %rsi
callq 0x8150
leaq 0x17e4(%rip), %rdi      # 0x22965
leaq 0x260c(%rip), %rcx      # 0x23794
pushq $-0x5
popq %r8
movq %rax, %rsi
movl %r15d, %edx
xorl %r9d, %r9d
xorl %eax, %eax
callq 0x8800
movq %rax, %r14
callq 0x89e0
movq %r14, %rdi
movq %rax, %rsi
callq 0x8150
pushq $0xa
popq %rsi
movq %rax, %rdi
callq 0x9050
callq 0x88a0
movq %rax, %r15
movq %r14, %rdi
movq %rax, %rsi
callq 0x8150
movq %rax, %rdi
callq 0x8040
movq %rax, %r12
callq 0x8930
movq %r12, %rdi
movq %rax, %rsi
callq 0x8150
movq 0x8(%rbx), %rsi
movq %rax, %rdi
movl %ebp, %edx
xorl %ecx, %ecx
xorl %r8d, %r8d
callq 0x8270
movq %r14, %rdi
callq 0x8cc0
movq %r14, %rdi
movq %r15, %rsi
callq 0x8150
movq %rax, %rdi
callq 0x8340
movq %r14, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x81a0
// File: /workspace/github_cpp_makefile_star2_O2/martinda3[P]Compiler/src/ASreturnState.cpp
// Function: toyc::ASreturnState::toString[abi:cxx11]()
std::string ASreturnState::toString()
	{
		if (hasop)
		{
			s = (spaces() + "returnStatement(\n");
			indent();
			s += (op->toString() + "\n");
			outdent();
			s += (spaces() +  ")\n");
			return s;
		}
		else
		{
			return (spaces() + "returnStatement()\n");
		}
	}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq %rdi, %rbx
cmpb $0x1, 0x38(%rsi)
jne 0x9ff9
movq %rsi, %r15
leaq 0x28(%rsp), %r14
movq %r14, %rdi
callq 0x11921
leaq 0x130dd(%rip), %rdx     # 0x1d004
leaq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0xa06b
leaq 0x18(%r15), %r14
leaq 0x8(%rsp), %r12
movq %r14, %rdi
movq %r12, %rsi
callq 0x82d0
movq %r12, %rdi
callq 0x8478
leaq 0x28(%rsp), %rdi
callq 0x8478
callq 0x11935
movq 0x10(%r15), %rsi
movq (%rsi), %rax
leaq 0x28(%rsp), %r15
movq %r15, %rdi
callq *(%rax)
leaq 0x13ef0(%rip), %rdx     # 0x1de67
leaq 0x8(%rsp), %rdi
movq %r15, %rsi
callq 0xa06b
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
callq 0x8450
leaq 0x8(%rsp), %rdi
callq 0x8478
leaq 0x28(%rsp), %rdi
callq 0x8478
callq 0x11942
leaq 0x28(%rsp), %r15
movq %r15, %rdi
callq 0x11921
leaq 0x13068(%rip), %rdx     # 0x1d026
leaq 0x8(%rsp), %rdi
movq %r15, %rsi
callq 0xa06b
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
callq 0x8450
leaq 0x8(%rsp), %rdi
callq 0x8478
leaq 0x28(%rsp), %rdi
callq 0x8478
movq %rbx, %rdi
movq %r14, %rsi
callq 0x82f0
jmp 0xa022
leaq 0x8(%rsp), %r14
movq %r14, %rdi
callq 0x11921
leaq 0x13009(%rip), %rdx     # 0x1d016
movq %rbx, %rdi
movq %r14, %rsi
callq 0xa06b
leaq 0x8(%rsp), %rdi
callq 0x8478
movq %rbx, %rax
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
jmp 0xa035
jmp 0xa050
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x8478
jmp 0xa053
jmp 0xa050
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
jmp 0xa058
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x8478
movq %rbx, %rdi
callq 0x8400
nop