// File: /workspace/github_cpp_makefile_star2_O2/eiskalteschatten[P]developersnotebook/src/windows/MenuBar.cpp
// Function: MenuBar::setup_file_menu()
void MenuBar::setup_file_menu() {
    GtkWidget *file_menu      = gtk_menu_new();
    GtkWidget *file_mi        = gtk_menu_item_new_with_label("File");
    GtkWidget *new_menu       = gtk_menu_new();
    GtkWidget *new_mi         = gtk_menu_item_new_with_label("New");
    GtkWidget *new_project_mi = gtk_menu_item_new_with_label("New Project");
    GtkWidget *separator_mi_1 = gtk_separator_menu_item_new();
    GtkWidget *close_mi       = gtk_menu_item_new_with_label("Close");
    GtkWidget *separator_mi_2 = gtk_separator_menu_item_new();
    file_quit_mi              = gtk_menu_item_new_with_label("Quit");

    // Setup submenus
    {
        gtk_menu_item_set_submenu(GTK_MENU_ITEM(file_mi), file_menu);
        gtk_menu_item_set_submenu(GTK_MENU_ITEM(new_mi), new_menu);
    }

    // Setup New submenu
    {
        gtk_menu_shell_append(GTK_MENU_SHELL(new_menu), new_project_mi);
        g_signal_connect(G_OBJECT(new_project_mi), "activate", G_CALLBACK(new_project), this);
    }

    // Setup menu items

    // New
    {
        gtk_menu_shell_append(GTK_MENU_SHELL(file_menu), new_mi);
        gtk_menu_shell_append(GTK_MENU_SHELL(file_menu), separator_mi_1);
    }

    // Close
    {
        gtk_menu_shell_append(GTK_MENU_SHELL(file_menu), close_mi);
        gtk_menu_shell_append(GTK_MENU_SHELL(file_menu), separator_mi_2);
        g_signal_connect(G_OBJECT(close_mi), "activate", G_CALLBACK(close_window), this);
        gtk_widget_add_accelerator(close_mi, "activate", accel_group, GDK_KEY_w, primary_mask_key, GTK_ACCEL_VISIBLE);
    }

    // Quit
    {
        gtk_menu_shell_append(GTK_MENU_SHELL(file_menu), file_quit_mi);
        g_signal_connect(G_OBJECT(file_quit_mi), "activate", G_CALLBACK(quit_app), this);
        gtk_widget_add_accelerator(file_quit_mi, "activate", accel_group, GDK_KEY_q, primary_mask_key, GTK_ACCEL_VISIBLE);
    }

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

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rdi, %rbx
callq 0x87e0
movq %rax, %r15
leaq 0x112ad(%rip), %rdi     # 0x226bd
callq 0x8de0
movq %rax, %r14
movq %rax, 0x20(%rsp)
callq 0x87e0
movq %rax, %rbp
leaq 0x11296(%rip), %rdi     # 0x226c2
callq 0x8de0
movq %rax, (%rsp)
leaq 0x10e94(%rip), %rdi     # 0x222d0
callq 0x8de0
movq %rax, %r13
callq 0x8a10
movq %rax, 0x8(%rsp)
leaq 0x11271(%rip), %rdi     # 0x226c6
callq 0x8de0
movq %rax, 0x10(%rsp)
callq 0x8a10
movq %rax, 0x18(%rsp)
leaq 0x1125c(%rip), %rdi     # 0x226cc
callq 0x8de0
movq %rax, 0x28(%rbx)
callq 0x8360
movq %rax, %r12
movq %r14, %rdi
movq %rax, %rsi
callq 0x8150
movq %rax, %rdi
movq %r15, %rsi
callq 0x8ab0
movq (%rsp), %r14
movq %r14, %rdi
movq %r12, %rsi
callq 0x8150
movq %rax, %rdi
movq %rbp, %rsi
callq 0x8ab0
callq 0x8280
movq %rax, %r12
movq %rbp, %rdi
movq %rax, %rsi
callq 0x8150
movq %rax, %rdi
movq %r13, %rsi
callq 0x8870
pushq $0x50
popq %rsi
movq %r13, %rdi
callq 0x8150
leaq 0x10c0d(%rip), %rbp     # 0x220ee
leaq -0x1b8(%rip), %rdx      # 0x11330
movq %rax, %rdi
movq %rbp, %rsi
movq %rbx, %rcx
xorl %r8d, %r8d
xorl %r9d, %r9d
callq 0x82b0
movq %r15, %rdi
movq %r12, %rsi
callq 0x8150
movq %rax, %rdi
movq %r14, %rsi
callq 0x8870
movq %r15, %rdi
movq %r12, %rsi
callq 0x8150
movq %rax, %rdi
movq 0x8(%rsp), %rsi
callq 0x8870
movq %r15, %rdi
movq %r12, %rsi
callq 0x8150
movq %rax, %rdi
movq 0x10(%rsp), %r13
movq %r13, %rsi
callq 0x8870
movq %r15, %rdi
movq %r12, %rsi
callq 0x8150
movq %rax, %rdi
movq 0x18(%rsp), %rsi
callq 0x8870
movq %r13, %rdi
pushq $0x50
popq %r14
movq %r14, %rsi
callq 0x8150
leaq -0x226(%rip), %rdx      # 0x1134d
movq %rax, %rdi
movq %rbp, %rsi
movq %rbx, %rcx
xorl %r8d, %r8d
xorl %r9d, %r9d
callq 0x82b0
movq 0x18(%rbx), %rdx
movl 0x10(%rbx), %r8d
pushq $0x77
popq %rcx
pushq $0x1
popq %r9
movq %r13, %rdi
movq %rbp, %rsi
movl %r9d, %r13d
callq 0x89b0
movq %r15, %rdi
movq %r12, %rsi
callq 0x8150
movq 0x28(%rbx), %rsi
movq %rax, %rdi
callq 0x8870
movq 0x28(%rbx), %rdi
movq %r14, %rsi
callq 0x8150
leaq -0x278(%rip), %rdx      # 0x11356
movq %rax, %rdi
movq %rbp, %rsi
movq %rbx, %rcx
xorl %r8d, %r8d
xorl %r9d, %r9d
callq 0x82b0
movq 0x28(%rbx), %rdi
movq 0x18(%rbx), %rdx
movl 0x10(%rbx), %r8d
pushq $0x71
popq %rcx
movq %rbp, %rsi
movl %r13d, %r9d
callq 0x89b0
movq 0x20(%rbx), %rdi
movq %r12, %rsi
callq 0x8150
movq %rax, %rdi
movq 0x20(%rsp), %rsi
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x8870
nop