// File: /workspace/github_cpp_makefile_star2_O3/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 0x87a0
movq %rax, %r15
leaq 0x142b3(%rip), %rdi     # 0x296b3
callq 0x8da0
movq %rax, %r13
movq %rax, 0x8(%rsp)
callq 0x87a0
movq %rax, %r14
leaq 0x1429c(%rip), %rdi     # 0x296b8
callq 0x8da0
movq %rax, (%rsp)
leaq 0x13ea4(%rip), %rdi     # 0x292d0
callq 0x8da0
movq %rax, %rbp
callq 0x89f0
movq %rax, 0x10(%rsp)
leaq 0x14277(%rip), %rdi     # 0x296bc
callq 0x8da0
movq %rax, 0x18(%rsp)
callq 0x89f0
movq %rax, 0x20(%rsp)
leaq 0x14262(%rip), %rdi     # 0x296c2
callq 0x8da0
movq %rax, 0x28(%rbx)
callq 0x8350
movq %rax, %r12
movq %r13, %rdi
movq %rax, %rsi
callq 0x8150
movq %rax, %rdi
movq %r15, %rsi
callq 0x8a80
movq (%rsp), %r13
movq %r13, %rdi
movq %r12, %rsi
callq 0x8150
movq %rax, %rdi
movq %r14, %rsi
callq 0x8a80
callq 0x8270
movq %rax, %r12
movq %r14, %rdi
movq %rax, %rsi
callq 0x8150
movq %rax, %rdi
movq %rbp, %rsi
callq 0x8830
movl $0x50, %esi
movq %rbp, %rdi
callq 0x8150
leaq 0x13c1b(%rip), %rbp     # 0x290ee
leaq -0x1ba(%rip), %rdx      # 0x15320
movq %rax, %rdi
movq %rbp, %rsi
movq %rbx, %rcx
xorl %r8d, %r8d
xorl %r9d, %r9d
callq 0x82a0
movq %r15, %rdi
movq %r12, %rsi
callq 0x8150
movq %rax, %rdi
movq %r13, %rsi
callq 0x8830
movq %r15, %rdi
movq %r12, %rsi
callq 0x8150
movq %rax, %rdi
movq 0x10(%rsp), %rsi
callq 0x8830
movq %r15, %rdi
movq %r12, %rsi
callq 0x8150
movq %rax, %rdi
movq 0x18(%rsp), %r14
movq %r14, %rsi
callq 0x8830
movq %r15, %rdi
movq %r12, %rsi
callq 0x8150
movq %rax, %rdi
movq 0x20(%rsp), %rsi
callq 0x8830
movl $0x50, %esi
movq %r14, %rdi
callq 0x8150
leaq -0x226(%rip), %rdx      # 0x1533d
movq %rax, %rdi
movq %rbp, %rsi
movq %rbx, %rcx
xorl %r8d, %r8d
xorl %r9d, %r9d
callq 0x82a0
movq 0x18(%rbx), %rdx
movl 0x10(%rbx), %r8d
movq %r14, %rdi
movq %rbp, %rsi
movl $0x77, %ecx
movl $0x1, %r9d
callq 0x8980
movq %r15, %rdi
movq %r12, %rsi
callq 0x8150
movq 0x28(%rbx), %rsi
movq %rax, %rdi
callq 0x8830
movq 0x28(%rbx), %rdi
movl $0x50, %esi
callq 0x8150
leaq -0x27b(%rip), %rdx      # 0x15346
movq %rax, %rdi
movq %rbp, %rsi
movq %rbx, %rcx
xorl %r8d, %r8d
xorl %r9d, %r9d
callq 0x82a0
movq 0x28(%rbx), %rdi
movq 0x18(%rbx), %rdx
movl 0x10(%rbx), %r8d
movq %rbp, %rsi
movl $0x71, %ecx
movl $0x1, %r9d
callq 0x8980
movq 0x20(%rbx), %rdi
movq %r12, %rsi
callq 0x8150
movq %rax, %rdi
movq 0x8(%rsp), %rsi
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x8830
nop