LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: eiskalteschatten[P]developersnotebook/src/resources/Resource.cpp
// Function: Resource::get_resource_path[abi:cxx11]()
std::string Resource::get_resource_path() {
    fs::path path_to_exec = path_to_exec_str;
    path_to_exec.remove_filename();
    path_to_exec /= Constants::path_to_resources;

    if (!fs::is_directory(path_to_exec)) {
        path_to_exec.remove_leaf();
        path_to_exec.remove_leaf();
        path_to_exec /= Constants::path_to_resources;
    }

    path_to_exec /= sub_folders;
    path_to_exec /= name + "." + extension;

    return path_to_exec.string();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xb0, %rsp
movq %rdi, -0xa0(%rbp)
movq %rdi, %rax
movq %rax, -0x98(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rsi
movq %rsi, -0x90(%rbp)
leaq -0x30(%rbp), %rdi
movq %rdi, -0x88(%rbp)
callq 0x14940
movq -0x88(%rbp), %rdi
callq 0xa430
jmp 0x146bd
leaq 0x61b3c(%rip), %rsi     # 0x76200
leaq -0x30(%rbp), %rdi
callq 0x14970
jmp 0x146cf
leaq -0x30(%rbp), %rdi
callq 0x11060
movb %al, -0xa1(%rbp)
jmp 0x146e0
movb -0xa1(%rbp), %al
testb $0x1, %al
jne 0x14727
jmp 0x146ec
leaq -0x30(%rbp), %rdi
callq 0x149e0
jmp 0x146f7
leaq -0x30(%rbp), %rdi
callq 0x149e0
jmp 0x14702
leaq 0x61af7(%rip), %rsi     # 0x76200
leaq -0x30(%rbp), %rdi
callq 0x14970
jmp 0x14714
jmp 0x14727
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x14801
movq -0x90(%rbp), %rsi
subq $-0x80, %rsi
leaq -0x30(%rbp), %rdi
callq 0x14a00
jmp 0x1473d
movq -0x90(%rbp), %rsi
addq $0x20, %rsi
leaq 0x40261(%rip), %rdx     # 0x549b0
leaq -0x80(%rbp), %rdi
callq 0x10fb0
jmp 0x1475a
movq -0x90(%rbp), %rdx
addq $0x40, %rdx
leaq -0x60(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x14a70
jmp 0x14774
leaq -0x30(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x14970
jmp 0x14783
leaq -0x60(%rbp), %rdi
callq 0xb430
leaq -0x80(%rbp), %rdi
callq 0xb430
leaq -0x30(%rbp), %rdi
callq 0x111d0
movq %rax, -0xb0(%rbp)
jmp 0x147a7
movq -0xb0(%rbp), %rsi
movq -0xa0(%rbp), %rdi
callq 0xa230
jmp 0x147bc
leaq -0x30(%rbp), %rdi
callq 0x111e0
movq -0x98(%rbp), %rax
addq $0xb0, %rsp
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x147f8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x60(%rbp), %rdi
callq 0xb430
leaq -0x80(%rbp), %rdi
callq 0xb430
leaq -0x30(%rbp), %rdi
callq 0x111e0
movq -0x38(%rbp), %rdi
callq 0xaa00
nopw %cs:(%rax,%rax)
// File: eiskalteschatten[P]developersnotebook/src/views/ProjectsView.cpp
// Function: list_selection_changed(_GtkTreeSelection*, ProjectsView*)
void list_selection_changed(GtkTreeSelection *selection, ProjectsView *pv) {
    GtkTreeIter tree_iter;
    GtkTreeModel *model   = nullptr;
    gchar *id             = nullptr;

    if (gtk_tree_selection_get_selected(selection, &model, &tree_iter)) {
        gtk_tree_model_get(model, &tree_iter, ID_COLUMN, &id, -1);

        ProjectsModel *projects_model = new ProjectsModel(std::stoi(id));
        projects_model->select_one();

        pv->fill_in_sidebar(projects_model);

        g_free(id);
        delete projects_model;

        gtk_widget_set_sensitive(pv->delete_toolbar_button, TRUE);
    }
    else {
        pv->empty_sidebar();
        gtk_widget_set_sensitive(pv->delete_toolbar_button, FALSE);
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xb0, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq $0x0, -0x38(%rbp)
movq $0x0, -0x40(%rbp)
movq -0x8(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x30(%rbp), %rdx
callq 0xb080
cmpl $0x0, %eax
je 0x1661e
movq -0x38(%rbp), %rdi
xorl %edx, %edx
movb %dl, %al
leaq -0x30(%rbp), %rsi
leaq -0x40(%rbp), %rcx
movl $0xffffffff, %r8d       # imm = 0xFFFFFFFF
callq 0xaab0
movl $0x148, %edi            # imm = 0x148
callq 0xa280
movq %rax, -0xa0(%rbp)
movb $0x1, -0x85(%rbp)
movq -0x40(%rbp), %rax
movq %rax, -0x98(%rbp)
leaq -0x71(%rbp), %rdi
movq %rdi, -0x90(%rbp)
callq 0xaf80
movq -0x98(%rbp), %rsi
movq -0x90(%rbp), %rdx
leaq -0x70(%rbp), %rdi
callq 0x10f00
jmp 0x16524
xorl %eax, %eax
movl %eax, %esi
leaq -0x70(%rbp), %rdi
movl $0xa, %edx
callq 0x18f10
movl %eax, -0xa4(%rbp)
jmp 0x1653e
movq -0xa0(%rbp), %rdi
movl -0xa4(%rbp), %eax
movl %eax, -0x4c(%rbp)
leaq -0x4c(%rbp), %rsi
callq 0x4f250
jmp 0x16559
movb $0x0, -0x85(%rbp)
leaq -0x70(%rbp), %rdi
callq 0xb430
leaq -0x71(%rbp), %rdi
callq 0xb410
movq -0xa0(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rdi
callq 0x227b0
movq -0x10(%rbp), %rdi
movq -0x48(%rbp), %rsi
callq 0x16650
movq -0x40(%rbp), %rdi
callq 0xb428
movq -0x48(%rbp), %rax
movq %rax, -0xb0(%rbp)
cmpq $0x0, %rax
je 0x165ba
movq -0xb0(%rbp), %rdi
movq (%rdi), %rax
callq *0x10(%rax)
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rdi
movl $0x1, %esi
callq 0xb300
jmp 0x16636
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0x165f7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
leaq -0x70(%rbp), %rdi
callq 0xb430
leaq -0x71(%rbp), %rdi
callq 0xb410
testb $0x1, -0x85(%rbp)
jne 0x1660b
jmp 0x1661c
movq -0xa0(%rbp), %rdi
movl $0x148, %esi            # imm = 0x148
callq 0xa200
jmp 0x1663f
movq -0x10(%rbp), %rdi
callq 0x16ca0
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rdi
xorl %esi, %esi
callq 0xb300
addq $0xb0, %rsp
popq %rbp
retq
movq -0x80(%rbp), %rdi
callq 0xaa00
nopl (%rax,%rax)
// File: eiskalteschatten[P]developersnotebook/src/views/ProjectsView.cpp
// Function: ProjectsView::ProjectsView(_GtkWidget*)
ProjectsView::ProjectsView(GtkWidget *window) : AbstractView(window) {
    main_widget = gtk_paned_new(GTK_ORIENTATION_HORIZONTAL);
    gtk_widget_set_halign(main_widget, GTK_ALIGN_FILL);
    gtk_widget_set_valign(main_widget, GTK_ALIGN_FILL);

    setup_list_view();
    setup_list_view_toolbar();
    setup_form_sidebar();

    // Attach everything to the panes
    gtk_paned_pack1(GTK_PANED(main_widget), list_view_grid, TRUE, FALSE);
    gtk_paned_pack2(GTK_PANED(main_widget), form_scrolled_window, FALSE, FALSE);

    empty_sidebar();

    select = gtk_tree_view_get_selection(GTK_TREE_VIEW(list_view));
    gtk_tree_selection_set_mode(select, GTK_SELECTION_SINGLE);
    g_signal_connect(G_OBJECT(select), "changed", G_CALLBACK(list_selection_changed), this);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x30(%rbp)
movq -0x10(%rbp), %rsi
callq 0x1ac70
xorl %edi, %edi
callq 0xa660
movq %rax, -0x28(%rbp)
jmp 0x173ae
movq -0x30(%rbp), %rax
movq -0x28(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq 0x8(%rax), %rdi
xorl %esi, %esi
callq 0xaff0
jmp 0x173c7
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
xorl %esi, %esi
callq 0xb190
jmp 0x173d8
movq -0x30(%rbp), %rdi
callq 0x17530
jmp 0x173e3
movq -0x30(%rbp), %rdi
callq 0x17b50
jmp 0x173ee
movq -0x30(%rbp), %rdi
callq 0x17e60
jmp 0x173f9
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x40(%rbp)
callq 0xad60
movq -0x40(%rbp), %rdi
movq %rax, %rsi
callq 0xa190
movq %rax, -0x38(%rbp)
jmp 0x1741c
movq -0x38(%rbp), %rdi
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rsi
movl $0x1, %edx
xorl %ecx, %ecx
callq 0xabc0
jmp 0x17436
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x50(%rbp)
callq 0xad60
movq -0x50(%rbp), %rdi
movq %rax, %rsi
callq 0xa190
movq %rax, -0x48(%rbp)
jmp 0x17459
movq -0x48(%rbp), %rdi
movq -0x30(%rbp), %rax
movq 0x30(%rax), %rsi
xorl %ecx, %ecx
movl %ecx, %edx
callq 0xa030
jmp 0x17470
movq -0x30(%rbp), %rdi
callq 0x16ca0
jmp 0x1747b
movq -0x30(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x60(%rbp)
callq 0xb0e0
movq -0x60(%rbp), %rdi
movq %rax, %rsi
callq 0xa190
movq %rax, -0x58(%rbp)
jmp 0x1749e
movq -0x58(%rbp), %rdi
callq 0xb1a0
movq %rax, -0x68(%rbp)
jmp 0x174ad
movq -0x30(%rbp), %rax
movq -0x68(%rbp), %rcx
movq %rcx, 0x40(%rax)
movq 0x40(%rax), %rdi
movl $0x1, %esi
callq 0xac90
jmp 0x174c9
movq -0x30(%rbp), %rax
movq 0x40(%rax), %rdi
movl $0x50, %esi
callq 0xa190
movq %rax, -0x70(%rbp)
jmp 0x174e1
movq -0x30(%rbp), %rcx
movq -0x70(%rbp), %rdi
leaq 0x3bf61(%rip), %rsi     # 0x53451
leaq -0x1077(%rip), %rdx     # 0x16480
xorl %r9d, %r9d
movl %r9d, %r8d
callq 0xa380
jmp 0x17504
addq $0x70, %rsp
popq %rbp
retq
movq -0x30(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
callq 0x1ac90
movq -0x18(%rbp), %rdi
callq 0xaa00
nopl (%rax,%rax)
// File: eiskalteschatten[P]developersnotebook/src/views/ProjectsView.cpp
// Function: ProjectsView::setup_list_store()
void ProjectsView::setup_list_store() {
    GtkTreeIter tree_iter;
    ProjectsModel all_projects;

    list_store = gtk_list_store_new(N_COLUMNS,
                                    G_TYPE_STRING,
                                    G_TYPE_STRING,
                                    G_TYPE_STRING,
                                    G_TYPE_STRING,
                                    G_TYPE_STRING,
                                    G_TYPE_STRING,
                                    G_TYPE_BOOLEAN,
                                    G_TYPE_STRING,
                                    G_TYPE_STRING);


    all_projects.select_all();
    const tableVector &contents = all_projects.get_full_table();

    for (auto const &row_map : contents) {
        ProjectsModel *row = new ProjectsModel(row_map);
        row->truncate_notes();
        append_to_list_store(&tree_iter);
        set_list_store(row, &tree_iter);
        delete row;
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x200, %rsp            # imm = 0x200
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x1c0(%rbp)
leaq -0x170(%rbp), %rdi
callq 0x4f110
movq %rsp, %rax
movq $0x40, 0x18(%rax)
movq $0x40, 0x10(%rax)
movq $0x14, 0x8(%rax)
movq $0x40, (%rax)
xorl %eax, %eax
movl $0x9, %edi
movl $0x40, %r9d
movq %r9, %rsi
movq %r9, %rdx
movq %r9, %rcx
movq %r9, %r8
callq 0xab40
movq %rax, -0x1b8(%rbp)
jmp 0x18c2f
movq -0x1c0(%rbp), %rax
movq -0x1b8(%rbp), %rcx
movq %rcx, 0x38(%rax)
leaq -0x170(%rbp), %rdi
callq 0x22c60
jmp 0x18c4f
leaq -0x170(%rbp), %rdi
callq 0x18f50
movq %rax, -0x1c8(%rbp)
jmp 0x18c64
movq -0x1c8(%rbp), %rax
movq %rax, -0x188(%rbp)
movq -0x188(%rbp), %rax
movq %rax, -0x190(%rbp)
movq -0x190(%rbp), %rdi
callq 0x18f70
movq %rax, -0x198(%rbp)
movq -0x190(%rbp), %rdi
callq 0x18fa0
movq %rax, -0x1a0(%rbp)
leaq -0x198(%rbp), %rdi
leaq -0x1a0(%rbp), %rsi
callq 0x18fd0
testb $0x1, %al
jne 0x18cc2
jmp 0x18db1
leaq -0x198(%rbp), %rdi
callq 0x19010
movq %rax, -0x1a8(%rbp)
movl $0x148, %edi            # imm = 0x148
callq 0xa280
movq %rax, -0x1d0(%rbp)
jmp 0x18ce8
movq -0x1d0(%rbp), %rdi
movq -0x1a8(%rbp), %rsi
callq 0x4f370
jmp 0x18cfd
movq -0x1d0(%rbp), %rax
movq %rax, -0x1b0(%rbp)
movq -0x1b0(%rbp), %rdi
callq 0x50c90
jmp 0x18d19
movq -0x1c0(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x18de0
jmp 0x18d2b
movq -0x1c0(%rbp), %rdi
movq -0x1b0(%rbp), %rsi
leaq -0x28(%rbp), %rdx
callq 0x15a10
jmp 0x18d44
movq -0x1b0(%rbp), %rax
movq %rax, -0x1d8(%rbp)
cmpq $0x0, %rax
je 0x18d65
movq -0x1d8(%rbp), %rdi
movq (%rdi), %rax
callq *0x10(%rax)
jmp 0x18d67
leaq -0x198(%rbp), %rdi
callq 0x19030
jmp 0x18ca6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x178(%rbp)
movl %eax, -0x17c(%rbp)
jmp 0x18dc6
movq -0x1d0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x178(%rbp)
movl %eax, -0x17c(%rbp)
movl $0x148, %esi            # imm = 0x148
callq 0xa200
jmp 0x18dc6
leaq -0x170(%rbp), %rdi
callq 0x4f8a0
addq $0x200, %rsp            # imm = 0x200
popq %rbp
retq
leaq -0x170(%rbp), %rdi
callq 0x4f8a0
movq -0x178(%rbp), %rdi
callq 0xaa00
nop
// File: eiskalteschatten[P]developersnotebook/src/views/ProjectsView.cpp
// Function: ProjectsView::select_row_in_list_view(char const*)
void ProjectsView::select_row_in_list_view(const gchar *id) {
    GtkTreeIter tree_iter;
    gboolean has_next = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(list_store), &tree_iter);

    while (has_next) {
        gchar *id_col;

        gtk_tree_model_get(GTK_TREE_MODEL(list_store), &tree_iter,
                           ID_COLUMN, &id_col,
                           -1);

        if (strcmp(id_col, id) == 0) {
            select_row_in_list_view(&tree_iter);
            break;
        }

        g_free(id_col);

        has_next = gtk_tree_model_iter_next(GTK_TREE_MODEL(list_store), &tree_iter);
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x50(%rbp)
movq 0x38(%rax), %rax
movq %rax, -0x48(%rbp)
callq 0xa6d0
movq -0x48(%rbp), %rdi
movq %rax, %rsi
callq 0xa190
movq %rax, %rdi
leaq -0x30(%rbp), %rsi
callq 0xa1a0
movl %eax, -0x34(%rbp)
cmpl $0x0, -0x34(%rbp)
je 0x18efc
movq -0x50(%rbp), %rax
movq 0x38(%rax), %rax
movq %rax, -0x58(%rbp)
callq 0xa6d0
movq -0x58(%rbp), %rdi
movq %rax, %rsi
callq 0xa190
movq %rax, %rdi
leaq -0x30(%rbp), %rsi
xorl %edx, %edx
leaq -0x40(%rbp), %rcx
movl $0xffffffff, %r8d       # imm = 0xFFFFFFFF
movb $0x0, %al
callq 0xaab0
movq -0x40(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0xad80
cmpl $0x0, %eax
jne 0x18ec2
movq -0x50(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x15db0
jmp 0x18efc
movq -0x40(%rbp), %rdi
callq 0xb428
movq -0x50(%rbp), %rax
movq 0x38(%rax), %rax
movq %rax, -0x60(%rbp)
callq 0xa6d0
movq -0x60(%rbp), %rdi
movq %rax, %rsi
callq 0xa190
movq %rax, %rdi
leaq -0x30(%rbp), %rsi
callq 0xa940
movl %eax, -0x34(%rbp)
jmp 0x18e60
addq $0x60, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
nopl (%rax)
// File: eiskalteschatten[P]developersnotebook/src/views/AbstractView.cpp
// Function: AbstractView::sort_by_string(_GtkTreeModel*, _GtkTreeIter*, _GtkTreeIter*, void*)
gint AbstractView::sort_by_string(GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, gpointer user_data) {
    gint ret = 0;
    gchar *string1;
    gchar *string2;
    gint sortcol = GPOINTER_TO_INT(user_data);

    gtk_tree_model_get(model, a, sortcol, &string1, -1);
    gtk_tree_model_get(model, b, sortcol, &string2, -1);

    if (
        (string1 == NULL || string2 == NULL) &&
        !(string1 == NULL && string2 == NULL)
    ) {
        ret = (string1 == NULL) ? -1 : 1;
    }
    else if (!(string1 == NULL && string2 == NULL)) {
        ret = g_utf8_collate(string1, string2);
    }

    g_free(string1);
    g_free(string2);

    return ret;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movl $0x0, -0x24(%rbp)
movq -0x20(%rbp), %rax
movl %eax, -0x3c(%rbp)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movl -0x3c(%rbp), %edx
leaq -0x30(%rbp), %rcx
movl $0xffffffff, %r8d       # imm = 0xFFFFFFFF
movb $0x0, %al
callq 0xaab0
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movl -0x3c(%rbp), %edx
leaq -0x38(%rbp), %rcx
movl $0xffffffff, %r8d       # imm = 0xFFFFFFFF
movb $0x0, %al
callq 0xaab0
cmpq $0x0, -0x30(%rbp)
je 0x1ad3c
cmpq $0x0, -0x38(%rbp)
jne 0x1ad64
cmpq $0x0, -0x30(%rbp)
jne 0x1ad4a
cmpq $0x0, -0x38(%rbp)
je 0x1ad64
movq -0x30(%rbp), %rdx
movl $0x1, %eax
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
cmpq $0x0, %rdx
cmovel %ecx, %eax
movl %eax, -0x24(%rbp)
jmp 0x1ad84
cmpq $0x0, -0x30(%rbp)
jne 0x1ad72
cmpq $0x0, -0x38(%rbp)
je 0x1ad82
movq -0x30(%rbp), %rdi
movq -0x38(%rbp), %rsi
callq 0xb390
movl %eax, -0x24(%rbp)
jmp 0x1ad84
movq -0x30(%rbp), %rdi
callq 0xb428
movq -0x38(%rbp), %rdi
callq 0xb428
movl -0x24(%rbp), %eax
addq $0x40, %rsp
popq %rbp
retq
nop
// File: eiskalteschatten[P]developersnotebook/src/views/AbstractView.cpp
// Function: AbstractView::sort_by_boolean(_GtkTreeModel*, _GtkTreeIter*, _GtkTreeIter*, void*)
gint AbstractView::sort_by_boolean(GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, gpointer user_data) {
    gboolean bool1;
    gboolean bool2;
    gint sortcol = GPOINTER_TO_INT(user_data);

    gtk_tree_model_get(model, a, sortcol, &bool1, -1);
    gtk_tree_model_get(model, b, sortcol, &bool2, -1);

    if (!bool1 && bool2) {
        return -1;
    }
    else if (bool1 && !bool2) {
        return 1;
    }

    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movq -0x28(%rbp), %rax
movl %eax, -0x34(%rbp)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movl -0x34(%rbp), %edx
leaq -0x2c(%rbp), %rcx
movl $0xffffffff, %r8d       # imm = 0xFFFFFFFF
movb $0x0, %al
callq 0xaab0
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rsi
movl -0x34(%rbp), %edx
leaq -0x30(%rbp), %rcx
movl $0xffffffff, %r8d       # imm = 0xFFFFFFFF
movb $0x0, %al
callq 0xaab0
cmpl $0x0, -0x2c(%rbp)
jne 0x1ae0c
cmpl $0x0, -0x30(%rbp)
je 0x1ae0c
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x1ae2a
cmpl $0x0, -0x2c(%rbp)
je 0x1ae21
cmpl $0x0, -0x30(%rbp)
jne 0x1ae21
movl $0x1, -0x4(%rbp)
jmp 0x1ae2a
jmp 0x1ae23
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x40, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: 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
movq %rsp, %rbp
subq $0x140, %rsp            # imm = 0x140
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movl -0x20(%rbp), %eax
movl %eax, -0x34(%rbp)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movl -0x34(%rbp), %edx
xorl %eax, %eax
movb %al, -0x119(%rbp)
leaq -0x28(%rbp), %rcx
movl $0xffffffff, %r8d       # imm = 0xFFFFFFFF
movl %r8d, -0x120(%rbp)
callq 0xaab0
movl -0x120(%rbp), %r8d
movb -0x119(%rbp), %al
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
movl -0x34(%rbp), %edx
leaq -0x30(%rbp), %rcx
callq 0xaab0
movq -0x28(%rbp), %rax
movq %rax, -0x118(%rbp)
leaq -0x59(%rbp), %rdi
movq %rdi, -0x110(%rbp)
callq 0xaf80
movq -0x118(%rbp), %rsi
movq -0x110(%rbp), %rdx
leaq -0x58(%rbp), %rdi
callq 0x10f00
jmp 0x1aedf
leaq -0x59(%rbp), %rdi
callq 0xb410
movq -0x30(%rbp), %rax
movq %rax, -0x130(%rbp)
leaq -0x91(%rbp), %rdi
movq %rdi, -0x128(%rbp)
callq 0xaf80
movq -0x130(%rbp), %rsi
movq -0x128(%rbp), %rdx
leaq -0x90(%rbp), %rdi
callq 0x10f00
jmp 0x1af22
leaq -0x91(%rbp), %rdi
callq 0xb410
movq -0x28(%rbp), %rdi
callq 0xb428
jmp 0x1af39
movq -0x30(%rbp), %rdi
callq 0xb428
jmp 0x1af44
leaq -0xd0(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x1b040
jmp 0x1af56
leaq -0x108(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x1b040
jmp 0x1af6b
leaq -0xd0(%rbp), %rdi
callq 0xa690
movq %rax, -0x140(%rbp)
leaq -0x108(%rbp), %rdi
callq 0xa690
movq -0x140(%rbp), %rdi
movq %rax, %rsi
callq 0xa580
movaps %xmm0, %xmm1
xorps %xmm0, %xmm0
movl $0x1, %eax
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
ucomisd %xmm1, %xmm0
cmoval %ecx, %eax
movl %eax, -0x134(%rbp)
leaq -0x90(%rbp), %rdi
callq 0xb430
leaq -0x58(%rbp), %rdi
callq 0xb430
movl -0x134(%rbp), %eax
addq $0x140, %rsp            # imm = 0x140
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x59(%rbp), %rdi
callq 0xb410
jmp 0x1b02c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x91(%rbp), %rdi
callq 0xb410
jmp 0x1b023
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x90(%rbp), %rdi
callq 0xb430
leaq -0x58(%rbp), %rdi
callq 0xb430
movq -0x68(%rbp), %rdi
callq 0xaa00
nopw %cs:(%rax,%rax)
// File: 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 %rbp
movq %rsp, %rbp
subq $0x1e0, %rsp            # imm = 0x1E0
movq %rdi, -0x1c8(%rbp)
movq %rdi, %rax
movq %rax, -0x1d8(%rbp)
movq %rsi, -0x8(%rbp)
xorps %xmm0, %xmm0
movups %xmm0, 0x20(%rdi)
movups %xmm0, 0x10(%rdi)
movups %xmm0, (%rdi)
movq $0x0, 0x30(%rdi)
movq -0x8(%rbp), %rax
movq %rax, -0x1d0(%rbp)
movl $0x10, %edi
movl $0x8, %esi
callq 0x1b7d0
movq -0x1d0(%rbp), %rsi
movl %eax, %edx
leaq -0x190(%rbp), %rdi
callq 0xb3f0
leaq 0x5b3f4(%rip), %rdi     # 0x764a0
callq 0xa1d0
movq -0x1c8(%rbp), %rdi
movq %rax, %rsi
callq 0x1ba50
movq %rdx, -0x1c0(%rbp)
movq %rax, -0x1b8(%rbp)
jmp 0x1b0d0
movq -0x1c0(%rbp), %rax
movq -0x1b8(%rbp), %rcx
movq %rcx, -0x1a0(%rbp)
movq %rax, -0x198(%rbp)
movq -0x1a0(%rbp), %rsi
movq -0x198(%rbp), %rdx
leaq -0x190(%rbp), %rdi
callq 0x1b7f0
jmp 0x1b108
leaq -0x190(%rbp), %rdi
callq 0xa650
movq -0x1d8(%rbp), %rax
addq $0x1e0, %rsp            # imm = 0x1E0
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1a8(%rbp)
movl %eax, -0x1ac(%rbp)
leaq -0x190(%rbp), %rdi
callq 0xa650
movq -0x1a8(%rbp), %rdi
callq 0xaa00
nop
// File: 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 %rbp
movq %rsp, %rbp
subq $0x80, %rsp
movq %rdi, -0x78(%rbp)
movq %rdi, %rax
movq %rax, -0x70(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
leaq -0x58(%rbp), %rdi
xorl %esi, %esi
movl $0x38, %edx
callq 0xa560
movq -0x10(%rbp), %rax
movl (%rax), %eax
subl $0x76c, %eax            # imm = 0x76C
movl %eax, -0x44(%rbp)
movq -0x18(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x48(%rbp)
movq -0x20(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x4c(%rbp)
leaq -0x58(%rbp), %rdi
callq 0xa690
movq %rax, -0x60(%rbp)
leaq -0x60(%rbp), %rdi
callq 0xaa30
movq -0x78(%rbp), %rdi
movq %rax, -0x68(%rbp)
movq -0x68(%rbp), %rsi
callq 0x1b1e0
movq -0x70(%rbp), %rax
addq $0x80, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: 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
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
xorl %eax, %eax
movl %eax, %edi
callq 0xab70
movq %rax, -0x18(%rbp)
leaq -0x18(%rbp), %rdi
callq 0xaa30
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movl 0x14(%rax), %eax
addl $0x76c, %eax            # imm = 0x76C
movl %eax, -0x24(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x40(%rbp)
callq 0xa700
movq -0x40(%rbp), %rdi
movq %rax, %rsi
callq 0xa190
movq %rax, %rdi
movq -0x20(%rbp), %rax
movl 0x10(%rax), %esi
movl -0x24(%rbp), %edx
callq 0xb370
movq -0x10(%rbp), %rax
movq %rax, -0x38(%rbp)
callq 0xa700
movq -0x38(%rbp), %rdi
movq %rax, %rsi
callq 0xa190
movq %rax, %rdi
movq -0x20(%rbp), %rax
movl 0xc(%rax), %esi
callq 0xaf50
movq -0x10(%rbp), %rax
movq %rax, -0x30(%rbp)
callq 0xa700
movq -0x30(%rbp), %rdi
movq %rax, %rsi
callq 0xa190
movq %rax, %rdi
xorl %esi, %esi
callq 0xaf50
addq $0x40, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
nop
// File: 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 %rbp
movq %rsp, %rbp
subq $0x80, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq -0x8(%rbp), %rdi
callq 0xa640
movq %rax, -0x28(%rbp)
movq -0x20(%rbp), %rax
movq 0x28(%rax), %rax
movq %rax, -0x50(%rbp)
movq -0x28(%rbp), %rdi
movq -0x10(%rbp), %rdx
leaq -0x48(%rbp), %rsi
callq 0xb020
cmpl $0x0, %eax
je 0x1bc85
movq -0x50(%rbp), %rdi
callq 0x1cc30
movq %rax, -0x58(%rbp)
movq -0x28(%rbp), %rdi
leaq -0x48(%rbp), %rsi
xorl %edx, %edx
leaq -0x60(%rbp), %rcx
movl $0xffffffff, %r8d       # imm = 0xFFFFFFFF
movb $0x0, %al
callq 0xaab0
movq -0x58(%rbp), %rax
movq %rax, -0x78(%rbp)
callq 0xac30
movq -0x78(%rbp), %rdi
movq %rax, %rsi
callq 0xa190
movq %rax, %rdi
leaq 0x37a01(%rip), %rsi     # 0x5363a
callq 0xb150
movq %rax, -0x68(%rbp)
movq -0x58(%rbp), %rax
movq %rax, -0x70(%rbp)
callq 0xac30
movq -0x70(%rbp), %rdi
movq %rax, %rsi
callq 0xa190
movq %rax, %rdi
movq -0x68(%rbp), %rsi
callq 0xab90
movq -0x50(%rbp), %rdi
callq 0x1cc50
movq %rax, %rdi
movq -0x60(%rbp), %rsi
callq 0x18e20
movq -0x60(%rbp), %rdi
callq 0xb428
addq $0x80, %rsp
popq %rbp
retq
nop
// File: 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 %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x18(%rbp)
movq $0x0, (%rax)
leaq 0x59a4e(%rip), %rdi     # 0x766e0
callq 0xa1d0
movq -0x18(%rbp), %rsi
movq %rax, %rdi
callq 0xa5e0
movl %eax, -0xc(%rbp)
cmpl $0x0, -0xc(%rbp)
je 0x1ccdb
movq -0x18(%rbp), %rax
movq 0x582c9(%rip), %rcx     # 0x74f80
movq (%rcx), %rcx
movq %rcx, -0x20(%rbp)
movq (%rax), %rdi
callq 0xb2e0
movq -0x20(%rbp), %rdi
movq %rax, %rdx
leaq 0x36a34(%rip), %rsi     # 0x53708
movb $0x0, %al
callq 0xa320
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: 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 %rbp
movq %rsp, %rbp
subq $0x160, %rsp            # imm = 0x160
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x130(%rbp)
leaq -0xc9(%rbp), %rdi
movq %rdi, -0x128(%rbp)
callq 0xaf80
movq -0x128(%rbp), %rdx
leaq 0x33f7c(%rip), %rsi     # 0x53887
leaq -0xc8(%rbp), %rdi
callq 0x10f00
jmp 0x1f919
movq -0x130(%rbp), %rsi
leaq -0x100(%rbp), %rdi
callq 0xa230
jmp 0x1f92e
leaq -0xa8(%rbp), %rdi
leaq -0xc8(%rbp), %rsi
leaq -0x100(%rbp), %rdx
callq 0x14ac0
jmp 0x1f94a
leaq -0x100(%rbp), %rdi
callq 0xb430
leaq -0xc8(%rbp), %rdi
callq 0xb430
leaq -0xc9(%rbp), %rdi
callq 0xb410
callq 0xa8b0
movq %rax, -0x138(%rbp)
jmp 0x1f97c
movq -0x130(%rbp), %rax
movq -0x138(%rbp), %rcx
movq %rcx, 0x38(%rax)
movq 0x38(%rax), %rax
movq %rax, -0x140(%rbp)
leaq -0x120(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x20150
jmp 0x1f9ae
leaq -0x120(%rbp), %rdi
callq 0xa1d0
movq -0x140(%rbp), %rdi
movq %rax, %rsi
xorl %eax, %eax
movl %eax, %edx
callq 0xad70
jmp 0x1f9cf
leaq -0x120(%rbp), %rdi
callq 0xb430
callq 0xb120
movq %rax, -0x148(%rbp)
jmp 0x1f9e9
movq -0x130(%rbp), %rax
movq 0x38(%rax), %rax
movq %rax, -0x158(%rbp)
callq 0xa7a0
movq -0x158(%rbp), %rdi
movq %rax, %rsi
callq 0xa190
movq %rax, -0x150(%rbp)
jmp 0x1fa18
movq -0x150(%rbp), %rsi
movq -0x148(%rbp), %rdi
movl $0x320, %edx            # imm = 0x320
callq 0xa600
jmp 0x1fa32
leaq -0xa8(%rbp), %rdi
callq 0x14c50
addq $0x160, %rsp            # imm = 0x160
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x1fa99
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x1fa8d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
leaq -0x100(%rbp), %rdi
callq 0xb430
leaq -0xc8(%rbp), %rdi
callq 0xb430
leaq -0xc9(%rbp), %rdi
callq 0xb410
jmp 0x1fae5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x1fad9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
leaq -0x120(%rbp), %rdi
callq 0xb430
leaq -0xa8(%rbp), %rdi
callq 0x14c50
movq -0xd8(%rbp), %rdi
callq 0xaa00
nopw %cs:(%rax,%rax)
// File: 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
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x10(%rbp)
callq 0xaea0
movq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x28(%rax)
movq 0x28(%rax), %rax
movq %rax, -0x38(%rbp)
callq 0xac20
movq -0x38(%rbp), %rdi
movq %rax, %rsi
callq 0xa190
movq %rax, %rdi
xorl %esi, %esi
callq 0xa400
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
movq %rax, -0x30(%rbp)
callq 0xac20
movq -0x30(%rbp), %rdi
movq %rax, %rsi
callq 0xa190
movq %rax, %rdi
movl $0x1, %esi
callq 0xa400
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
movq %rax, -0x28(%rbp)
callq 0xac20
movq -0x28(%rbp), %rdi
movq %rax, %rsi
callq 0xa190
movq %rax, %rdi
xorl %esi, %esi
callq 0xa930
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
movq %rax, -0x20(%rbp)
callq 0xac20
movq -0x20(%rbp), %rdi
movq %rax, %rsi
callq 0xa190
movq %rax, %rdi
movl $0x1, %esi
callq 0xa930
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rdi
xorl %esi, %esi
callq 0xb190
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rdi
leaq 0x33cac(%rip), %rsi     # 0x5388c
callq 0xa2f0
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x18(%rbp)
callq 0xac10
movq -0x18(%rbp), %rdi
movq %rax, %rsi
callq 0xa190
movq %rax, %rdi
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rsi
callq 0xb1e0
addq $0x40, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: 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 %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movl $0x68, %edi
callq 0xa280
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x30(%rbp)
callq 0x51710
jmp 0x1ff27
movq -0x30(%rbp), %rax
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x38(%rbp)
callq 0xb270
movq -0x38(%rbp), %rdi
movq %rax, %rsi
callq 0xa190
movq %rax, %rdi
callq 0xb280
cmpl $0x0, %eax
je 0x1ff83
movq -0x18(%rbp), %rdi
movl $0x1, %esi
xorl %edx, %edx
callq 0x51a10
jmp 0x1ffd7
movq -0x30(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
movl $0x68, %esi
callq 0xa200
jmp 0x1fff0
movq -0x8(%rbp), %rax
movq %rax, -0x40(%rbp)
callq 0xb270
movq -0x40(%rbp), %rdi
movq %rax, %rsi
callq 0xa190
movq %rax, %rdi
leaq -0xc(%rbp), %rsi
leaq -0x10(%rbp), %rdx
callq 0xa780
movq -0x18(%rbp), %rdi
leaq -0xc(%rbp), %rsi
xorl %edx, %edx
callq 0x51890
movq -0x18(%rbp), %rdi
leaq -0x10(%rbp), %rsi
xorl %edx, %edx
callq 0x51950
movq -0x18(%rbp), %rdi
xorl %edx, %edx
movl %edx, %esi
callq 0x51a10
movq -0x18(%rbp), %rdi
movq (%rdi), %rax
callq *0x18(%rax)
movq -0x8(%rbp), %rdi
callq 0xa250
addq $0x40, %rsp
popq %rbp
retq
movq -0x20(%rbp), %rdi
callq 0xaa00
nopl (%rax)
// File: 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 %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rcx
movq %rcx, (%rax)
movq (%rax), %rdi
callq 0x1f2b0
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x8(%rax)
movl $0x4, 0x10(%rax)
callq 0xb320
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x20(%rax)
callq 0xadd0
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x18(%rax)
movq 0x8(%rax), %rax
movq %rax, -0x20(%rbp)
callq 0xb270
movq -0x20(%rbp), %rdi
movq %rax, %rsi
callq 0xa190
movq %rax, %rdi
movq -0x18(%rbp), %rax
movq 0x18(%rax), %rsi
callq 0xa490
movq -0x18(%rbp), %rdi
callq 0x20d20
movq -0x18(%rbp), %rdi
callq 0x21010
movq -0x18(%rbp), %rdi
callq 0x211d0
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: 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 %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x20(%rbp)
callq 0xa9f0
movq %rax, -0x10(%rbp)
leaq 0x32717(%rip), %rdi     # 0x5390b
callq 0xb090
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x30(%rax)
leaq 0x326c1(%rip), %rdi     # 0x538cc
callq 0xb090
movq %rax, -0x18(%rbp)
leaq 0x326f6(%rip), %rdi     # 0x53911
callq 0xb090
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x38(%rax)
movq 0x38(%rax), %rax
movq %rax, -0x40(%rbp)
callq 0xa4a0
movq -0x40(%rbp), %rdi
movq %rax, %rsi
callq 0xa190
movq %rax, %rdi
movq -0x10(%rbp), %rsi
callq 0xace0
movq -0x10(%rbp), %rax
movq %rax, -0x38(%rbp)
callq 0xa350
movq -0x38(%rbp), %rdi
movq %rax, %rsi
callq 0xa190
movq %rax, %rdi
movq -0x18(%rbp), %rsi
callq 0xaa90
movq -0x18(%rbp), %rdi
movl $0x50, %esi
callq 0xa190
movq %rax, %rdi
movq -0x20(%rbp), %rax
movq (%rax), %rcx
leaq 0x31e82(%rip), %rsi     # 0x53116
leaq -0x10db(%rip), %rdx     # 0x201c0
xorl %eax, %eax
movl %eax, %r8d
xorl %r9d, %r9d
callq 0xa380
movq -0x10(%rbp), %rax
movq %rax, -0x30(%rbp)
callq 0xa350
movq -0x30(%rbp), %rdi
movq %rax, %rsi
callq 0xa190
movq %rax, %rdi
movq -0x20(%rbp), %rax
movq 0x30(%rax), %rsi
callq 0xaa90
movq -0x20(%rbp), %rax
movq 0x30(%rax), %rdi
movl $0x50, %esi
callq 0xa190
movq %rax, %rdi
movq -0x20(%rbp), %rax
movq (%rax), %rcx
leaq 0x31e22(%rip), %rsi     # 0x53116
leaq -0x259b(%rip), %rdx     # 0x1ed60
xorl %eax, %eax
movl %eax, %r8d
xorl %r9d, %r9d
callq 0xa380
movq -0x20(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x28(%rbp)
callq 0xa350
movq -0x28(%rbp), %rdi
movq %rax, %rsi
callq 0xa190
movq %rax, %rdi
movq -0x20(%rbp), %rax
movq 0x38(%rax), %rsi
callq 0xaa90
addq $0x40, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: 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 %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x28(%rbp)
callq 0xa9f0
movq %rax, -0x10(%rbp)
leaq 0x3258d(%rip), %rdi     # 0x53901
callq 0xb090
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x30(%rbp)
callq 0xa4a0
movq -0x30(%rbp), %rdi
movq %rax, %rsi
callq 0xa190
movq %rax, %rdi
movq -0x10(%rbp), %rsi
callq 0xace0
movq -0x28(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x20(%rbp)
callq 0xa350
movq -0x20(%rbp), %rdi
movq %rax, %rsi
callq 0xa190
movq %rax, %rdi
movq -0x18(%rbp), %rsi
callq 0xaa90
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: 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 %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movb %dl, %al
movb %sil, %cl
movq %rdi, -0x8(%rbp)
andb $0x1, %cl
movb %cl, -0x9(%rbp)
andb $0x1, %al
movb %al, -0xa(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x50(%rbp)
movb -0x9(%rbp), %sil
xorl %ecx, %ecx
movl $0x1, %edx
testb $0x1, %sil
cmovnel %edx, %ecx
movl %ecx, -0x10(%rbp)
movb -0x9(%rbp), %cl
andb $0x1, %cl
movb %cl, 0x100(%rax)
testb $0x1, -0xa(%rbp)
je 0x4fdf3
leaq -0x31(%rbp), %rdi
movq %rdi, -0x58(%rbp)
callq 0xaf80
movq -0x58(%rbp), %rdx
leaq 0x3799(%rip), %rsi      # 0x5352c
leaq -0x30(%rbp), %rdi
callq 0x10f00
jmp 0x4fd9e
movq -0x50(%rbp), %rdi
leaq -0x30(%rbp), %rsi
leaq -0x10(%rbp), %rdx
callq 0x220d0
jmp 0x4fdb1
leaq -0x30(%rbp), %rdi
callq 0xb430
leaq -0x31(%rbp), %rdi
callq 0xb410
jmp 0x4fdf3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x4fde8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x30(%rbp), %rdi
callq 0xb430
leaq -0x31(%rbp), %rdi
callq 0xb410
jmp 0x4fdf9
addq $0x60, %rsp
popq %rbp
retq
movq -0x40(%rbp), %rdi
callq 0xaa00
nopw %cs:(%rax,%rax)
// File: 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 %rbp
movq %rsp, %rbp
subq $0x110, %rsp            # imm = 0x110
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0xf0(%rbp)
addq $0xe0, %rax
movq %rax, -0xe8(%rbp)
leaq 0x3cea(%rip), %rsi      # 0x549a8
leaq -0x48(%rbp), %rdi
movq %rdi, -0xe0(%rbp)
movl $0x10, %edx
callq 0x236b0
movq -0xe8(%rbp), %rsi
movq -0xe0(%rbp), %rdx
leaq 0x2ac9(%rip), %rcx      # 0x537b1
leaq -0x28(%rbp), %rdi
xorl %r8d, %r8d
callq 0x235d0
jmp 0x50cf6
movq -0xf0(%rbp), %rdi
addq $0xe0, %rdi
movq %rdi, -0x100(%rbp)
leaq -0x28(%rbp), %rsi
movq %rsi, -0x108(%rbp)
callq 0xa820
movq -0x108(%rbp), %rdi
callq 0xb430
leaq -0x48(%rbp), %rdi
callq 0x23750
leaq 0x3c74(%rip), %rsi      # 0x549ab
leaq -0x98(%rbp), %rdi
movq %rdi, -0xf8(%rbp)
movl $0x10, %edx
callq 0x236b0
movq -0x100(%rbp), %rsi
movq -0xf8(%rbp), %rdx
leaq 0x2ec1(%rip), %rcx      # 0x53c25
leaq -0x78(%rbp), %rdi
xorl %r8d, %r8d
callq 0x235d0
jmp 0x50d72
movq -0xf0(%rbp), %rdi
addq $0xe0, %rdi
leaq -0x78(%rbp), %rsi
callq 0xa820
leaq -0x78(%rbp), %rdi
callq 0xb430
leaq -0x98(%rbp), %rdi
callq 0x23750
movq -0xf0(%rbp), %rdi
addq $0xe0, %rdi
leaq 0x2e72(%rip), %rsi      # 0x53c25
callq 0x19480
testb $0x1, %al
jne 0x50dc1
jmp 0x50ea3
movq -0xf0(%rbp), %rdi
addq $0xe0, %rdi
callq 0xa920
cmpq $0x32, %rax
jb 0x50ea3
movq -0xf0(%rbp), %rsi
addq $0xe0, %rsi
xorl %eax, %eax
movl %eax, %edx
leaq -0xd8(%rbp), %rdi
movq %rdi, -0x110(%rbp)
movl $0x2f, %ecx
callq 0xafc0
movq -0x110(%rbp), %rsi
leaq 0x3b98(%rip), %rdx      # 0x549ae
leaq -0xb8(%rbp), %rdi
callq 0x10eb0
jmp 0x50e24
movq -0xf0(%rbp), %rdi
addq $0xe0, %rdi
leaq -0xb8(%rbp), %rsi
callq 0xa820
leaq -0xb8(%rbp), %rdi
callq 0xb430
leaq -0xd8(%rbp), %rdi
callq 0xb430
jmp 0x50ea3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x23750
jmp 0x50eac
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x98(%rbp), %rdi
callq 0x23750
jmp 0x50eac
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xd8(%rbp), %rdi
callq 0xb430
jmp 0x50eac
addq $0x110, %rsp            # imm = 0x110
popq %rbp
retq
movq -0x50(%rbp), %rdi
callq 0xaa00
nopw %cs:(%rax,%rax)
// File: 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 %rbp
movq %rsp, %rbp
subq $0xd0, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0xc8(%rbp)
movq 0x8(%rax), %rdx
leaq 0x2ca1(%rip), %rsi      # 0x53b86
leaq -0x88(%rbp), %rdi
movq %rdi, -0xc0(%rbp)
callq 0x110c0
movq -0xc0(%rbp), %rsi
leaq 0x3aac(%rip), %rdx      # 0x549b2
leaq -0x68(%rbp), %rdi
callq 0x10eb0
jmp 0x50f11
leaq 0x3ab6(%rip), %rdx      # 0x549ce
leaq -0x48(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x10eb0
jmp 0x50f27
leaq 0x3ab4(%rip), %rdx      # 0x549e2
leaq -0x28(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x10eb0
jmp 0x50f3d
leaq -0x48(%rbp), %rdi
callq 0xb430
leaq -0x68(%rbp), %rdi
callq 0xb430
leaq -0x88(%rbp), %rdi
callq 0xb430
leaq -0xb8(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0xa230
jmp 0x50f6d
movq -0xc8(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0x22410
jmp 0x50f82
leaq -0xb8(%rbp), %rdi
callq 0xb430
leaq -0x28(%rbp), %rdi
callq 0xb430
addq $0xd0, %rsp
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x50fec
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x50fe3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x48(%rbp), %rdi
callq 0xb430
leaq -0x68(%rbp), %rdi
callq 0xb430
leaq -0x88(%rbp), %rdi
callq 0xb430
jmp 0x51035
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x5102c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0xb8(%rbp), %rdi
callq 0xb430
leaq -0x28(%rbp), %rdi
callq 0xb430
movq -0x90(%rbp), %rdi
callq 0xaa00
nopw %cs:(%rax,%rax)
nopl (%rax,%rax)
// File: 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 %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x10(%rbp)
leaq 0x25055(%rip), %rax     # 0x767e0
movq %rax, 0x8(%rdi)
callq 0x227b0
movq -0x10(%rbp), %rdi
callq 0x200f0
cmpl $-0x1, %eax
jne 0x517b7
movq -0x10(%rbp), %rdi
leaq 0x325b(%rip), %rsi      # 0x54a08
movl $0x1, %edx
callq 0x51890
movq -0x10(%rbp), %rdi
callq 0x20110
cmpl $-0x1, %eax
jne 0x517da
movq -0x10(%rbp), %rdi
leaq 0x323c(%rip), %rsi      # 0x54a0c
movl $0x1, %edx
callq 0x51950
addq $0x10, %rsp
popq %rbp
retq
// File: 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 %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movb %dl, %al
movb %sil, %cl
movq %rdi, -0x8(%rbp)
andb $0x1, %cl
movb %cl, -0x9(%rbp)
andb $0x1, %al
movb %al, -0xa(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x50(%rbp)
movb -0x9(%rbp), %sil
xorl %ecx, %ecx
movl $0x1, %edx
testb $0x1, %sil
cmovnel %edx, %ecx
movl %ecx, -0x10(%rbp)
movb -0x9(%rbp), %cl
andb $0x1, %cl
movb %cl, 0x64(%rax)
testb $0x1, -0xa(%rbp)
je 0x51ad0
leaq -0x31(%rbp), %rdi
movq %rdi, -0x58(%rbp)
callq 0xaf80
movq -0x58(%rbp), %rdx
leaq 0x1cdf(%rip), %rsi      # 0x5374f
leaq -0x30(%rbp), %rdi
callq 0x10f00
jmp 0x51a7b
movq -0x50(%rbp), %rdi
leaq -0x30(%rbp), %rsi
leaq -0x10(%rbp), %rdx
callq 0x220d0
jmp 0x51a8e
leaq -0x30(%rbp), %rdi
callq 0xb430
leaq -0x31(%rbp), %rdi
callq 0xb410
jmp 0x51ad0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x51ac5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x30(%rbp), %rdi
callq 0xb430
leaq -0x31(%rbp), %rdi
callq 0xb410
jmp 0x51ad6
addq $0x60, %rsp
popq %rbp
retq
movq -0x40(%rbp), %rdi
callq 0xaa00
nop