// File: /workspace/github_c_makefile_star2_O0/justy989[P]ce/ce_draw_term.c
// Function: ce_draw_term
void ce_draw_term(CeApp_t* app){
     CeColorDefs_t color_defs = {};

     CeLayout_t* tab_list_layout = app->tab_list_layout;
     CeLayout_t* tab_layout = tab_list_layout->tab_list.current;

     CeView_t* view = &tab_layout->tab.current->view;

     // draw a tab bar if there is more than 1 tab
     if(tab_list_layout->tab_list.tab_count > 1){
          move(0, 0);
          int color_pair = ce_color_def_get(&color_defs, app->config_options.ui_fg_color, app->config_options.ui_bg_color);
          attron(COLOR_PAIR(color_pair));
          for(int64_t i = tab_list_layout->tab_list.rect.left; i <= tab_list_layout->tab_list.rect.right; i++){
               addch(' ');
          }

          move(0, 0);

          for(int64_t i = 0; i < tab_list_layout->tab_list.tab_count; i++){
               if(tab_list_layout->tab_list.tabs[i] == tab_list_layout->tab_list.current){
                    color_pair = ce_color_def_get(&color_defs, CE_COLOR_DEFAULT, CE_COLOR_DEFAULT);
                    attron(COLOR_PAIR(color_pair));
               }else{
                    color_pair = ce_color_def_get(&color_defs, app->config_options.ui_fg_color, app->config_options.ui_bg_color);
                    attron(COLOR_PAIR(color_pair));
               }

               if(tab_list_layout->tab_list.tabs[i]->tab.current->type == CE_LAYOUT_TYPE_VIEW){
                    const char* buffer_name = tab_list_layout->tab_list.tabs[i]->tab.current->view.buffer->name;

                    printw(" %s ", buffer_name);
               }else{
                    printw(" selection ");
               }
          }
     }

     standend();
     _draw_layout(tab_layout, &app->vim, &app->visual, &app->macros, app->input_view.buffer, &color_defs,
                 app->config_options.tab_width, app->config_options.line_number, app->config_options.visual_line_display_type,
                 tab_layout->tab.current, app->syntax_defs, tab_list_layout->tab_list.rect.right,
                 app->highlight_search, app->config_options.ui_fg_color, app->config_options.ui_bg_color,
                 app->config_options.show_line_extends_passed_view_as);

     if(app->input_complete_func){
          CeDrawColorList_t draw_color_list = {};
          _draw_view(&app->input_view, app->config_options.tab_width, app->config_options.line_number,
                    app->config_options.visual_line_display_type, &draw_color_list, &color_defs, app->syntax_defs,
                    app->terminal_rect.right, app->config_options.show_line_extends_passed_view_as);
          ce_draw_color_list_free(&draw_color_list);
          int64_t new_status_bar_offset = (app->input_view.rect.bottom - app->input_view.rect.top) + 1;
          _draw_view_status(&app->input_view, &app->vim, &app->macros, &color_defs, 0,
                           app->config_options.ui_fg_color, app->config_options.ui_bg_color);
          _draw_view_status(&tab_layout->tab.current->view, NULL, &app->macros, &color_defs,
                           -new_status_bar_offset, app->config_options.ui_fg_color, app->config_options.ui_bg_color);
     }

     CeComplete_t* complete = ce_app_is_completing(app);
     if(complete && tab_layout->tab.current->type == CE_LAYOUT_TYPE_VIEW && app->complete_list_buffer->line_count &&
        strlen(app->complete_list_buffer->lines[0])){
          CeLayout_t* view_layout = tab_layout->tab.current;
          app->complete_view.rect.left = view_layout->view.rect.left;
          app->complete_view.rect.right = view_layout->view.rect.right - 1;
          if(app->input_complete_func){
               app->complete_view.rect.bottom = app->input_view.rect.top;
          }else{
               app->complete_view.rect.bottom = view_layout->view.rect.bottom - 1;
          }
          int64_t lines_to_show = app->complete_list_buffer->line_count;
          if(lines_to_show > app->config_options.completion_line_limit){
               lines_to_show = app->config_options.completion_line_limit;
          }
          app->complete_view.rect.top = app->complete_view.rect.bottom - lines_to_show;
          if(app->complete_view.rect.top <= view_layout->view.rect.top){
               app->complete_view.rect.top = view_layout->view.rect.top + 1; // account for current view's status bar
          }
          app->complete_view.buffer = app->complete_list_buffer;
          app->complete_view.cursor.y = app->complete_list_buffer->cursor_save.y;
          app->complete_view.cursor.x = 0;
          app->complete_view.scroll.y = 0;
          app->complete_view.scroll.x = 0;
          ce_view_follow_cursor(&app->complete_view, 0, 0, 0); // NOTE: I don't think anyone wants their settings applied here
          CeDrawColorList_t draw_color_list = {};
          CeRangeList_t range_list = {};
          CeAppBufferData_t* buffer_data = app->complete_view.buffer->app_data;
          buffer_data->syntax_function(&app->complete_view, &range_list, &draw_color_list, app->syntax_defs,
                                       app->complete_view.buffer->syntax_data);
          ce_range_list_free(&range_list);
          _draw_view(&app->complete_view, app->config_options.tab_width, app->config_options.line_number,
                    app->config_options.visual_line_display_type, &draw_color_list, &color_defs, app->syntax_defs,
                    app->terminal_rect.right, app->config_options.show_line_extends_passed_view_as);
          ce_draw_color_list_free(&draw_color_list);
          if(app->input_complete_func){
               int64_t new_status_bar_offset = (app->complete_view.rect.bottom - app->complete_view.rect.top) + 1 + app->input_view.buffer->line_count;
               _draw_view_status(&tab_layout->tab.current->view, NULL, &app->macros,
                                &color_defs, -new_status_bar_offset, app->config_options.ui_fg_color,
                                app->config_options.ui_bg_color);
          }
     }

     if(app->clangd_completion.start.x >= 0 &&
        app->clangd_completion.start.y >= 0){
          app->clangd_completion.view.cursor.x = 0;
          app->clangd_completion.view.cursor.y = ce_complete_current_match(app->clangd_completion.complete);
          app->clangd_completion.view.scroll.y = 0;
          app->clangd_completion.view.scroll.x = 0;
          ce_view_follow_cursor(&app->clangd_completion.view, 0, 0, 0);

          CeDrawColorList_t draw_color_list = {};
          CeRangeList_t highlight_ranges = {};
          CeAppBufferData_t* buffer_data = app->clangd_completion.buffer->app_data;
          if (buffer_data->syntax_function) {
               buffer_data->syntax_function(&app->clangd_completion.view, &highlight_ranges, &draw_color_list, app->syntax_defs,
                                            app->clangd_completion.buffer->syntax_data);
               ce_range_list_free(&highlight_ranges);
          }

          _draw_view(&app->clangd_completion.view, app->config_options.tab_width, app->config_options.line_number,
                    app->config_options.visual_line_display_type, &draw_color_list, &color_defs, app->syntax_defs,
                    app->terminal_rect.right, app->config_options.show_line_extends_passed_view_as);
     }

     if(app->message_mode){
          CeDrawColorList_t draw_color_list = {};
          CeRangeList_t range_list = {};
          CeAppBufferData_t* buffer_data = app->message_view.buffer->app_data;
          buffer_data->syntax_function(&app->message_view, &range_list, &draw_color_list, app->syntax_defs,
                                       app->message_view.buffer->syntax_data);
          ce_range_list_free(&range_list);

          _draw_view(&app->message_view, app->config_options.tab_width, app->config_options.line_number,
                    app->config_options.visual_line_display_type, &draw_color_list, &color_defs, app->syntax_defs,
                    app->terminal_rect.right, app->config_options.show_line_extends_passed_view_as);
          ce_draw_color_list_free(&draw_color_list);

          // set the specified background
          int message_len = ce_utf8_strlen(app->message_view.buffer->lines[0]);
          int color_pair = ce_color_def_get(&color_defs, app->config_options.message_fg_color, app->config_options.message_bg_color);
          attron(COLOR_PAIR(color_pair));
          int64_t view_width = ce_view_width(&app->message_view);
          move(app->message_view.rect.top, app->message_view.rect.left + message_len);
          for(int i = message_len; i < view_width; i++){
               addch(' ');
          }
     }

     // show border when non view is selected
     if(tab_layout->tab.current->type != CE_LAYOUT_TYPE_VIEW){
          int64_t rect_height = 0;
          int64_t rect_width = 0;
          CeRect_t* rect = NULL;
          switch(tab_layout->tab.current->type){
          default:
               break;
          case CE_LAYOUT_TYPE_LIST:
               rect = &tab_layout->tab.current->list.rect;
               rect_width = rect->right - rect->left;
               rect_height = rect->bottom - rect->top;
               break;
          case CE_LAYOUT_TYPE_TAB:
               rect = &tab_layout->tab.current->tab.rect;
               rect_width = rect->right - rect->left;
               rect_height = rect->bottom - rect->top;
               break;
          }

          int color_pair = ce_color_def_get(&color_defs, CE_COLOR_BRIGHT_WHITE, CE_COLOR_BRIGHT_WHITE);
          attron(COLOR_PAIR(color_pair));
          for(int i = 0; i < rect_height; i++){
               mvaddch(rect->top + i, rect->right, ' ');
               mvaddch(rect->top + i, rect->left, ' ');
          }

          for(int i = 0; i < rect_width; i++){
               mvaddch(rect->top, rect->left + i, ' ');
               mvaddch(rect->bottom, rect->left + i, ' ');
          }

          mvaddch(rect->bottom, rect->right, ' ');

          move(0, 0);
     }else if(app->input_complete_func){
          CePoint_t screen_cursor = view_cursor_on_screen(&app->input_view, app->config_options.tab_width,
                                                          app->config_options.line_number);
          move(screen_cursor.y, screen_cursor.x);
     }else{
          CePoint_t screen_cursor = view_cursor_on_screen(view, app->config_options.tab_width,
                                                          app->config_options.line_number);
          move(screen_cursor.y, screen_cursor.x);
     }

     refresh();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x9b8, %rsp            # imm = 0x9B8
movq %rdi, -0x30(%rbp)
leaq -0x838(%rbp), %rdi
xorl %esi, %esi
movl $0x808, %edx            # imm = 0x808
callq 0xd290
movq -0x30(%rbp), %rax
movq 0x2818(%rax), %rax
movq %rax, -0x840(%rbp)
movq -0x840(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x848(%rbp)
movq -0x848(%rbp), %rax
movq 0x10(%rax), %rax
addq $0x8, %rax
movq %rax, -0x850(%rbp)
movq -0x840(%rbp), %rax
cmpq $0x1, 0x18(%rax)
jle 0x22d56
movq 0x2b48a(%rip), %rax     # 0x4dfd8
movq (%rax), %rdi
xorl %edx, %edx
movl %edx, %esi
callq 0xd070
movq -0x30(%rbp), %rax
movl 0x1a78(%rax), %esi
movq -0x30(%rbp), %rax
movl 0x1a7c(%rax), %edx
leaq -0x838(%rbp), %rdi
callq 0x2b6d0
movl %eax, -0x854(%rbp)
movq 0x2b451(%rip), %rax     # 0x4dfd8
movq (%rax), %rdi
movl -0x854(%rbp), %esi
shll $0x8, %esi
andl $0xff00, %esi           # imm = 0xFF00
xorl %eax, %eax
movl %eax, %edx
callq 0xd0f0
movq -0x840(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x860(%rbp)
movq -0x860(%rbp), %rax
movq -0x840(%rbp), %rcx
cmpq 0x28(%rcx), %rax
jg 0x22bf0
movq 0x2b409(%rip), %rax     # 0x4dfd8
movq (%rax), %rdi
movl $0x20, %esi
callq 0xd600
movq -0x860(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x860(%rbp)
jmp 0x22bb4
movq 0x2b3e1(%rip), %rax     # 0x4dfd8
movq (%rax), %rdi
xorl %edx, %edx
movl %edx, %esi
callq 0xd070
movq $0x0, -0x868(%rbp)
movq -0x868(%rbp), %rax
movq -0x840(%rbp), %rcx
cmpq 0x18(%rcx), %rax
jge 0x22d54
movq -0x840(%rbp), %rax
movq 0x8(%rax), %rax
movq -0x868(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq -0x840(%rbp), %rcx
cmpq 0x10(%rcx), %rax
jne 0x22c86
leaq -0x838(%rbp), %rdi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
movl %edx, %esi
callq 0x2b6d0
movl %eax, -0x854(%rbp)
movq 0x2b36f(%rip), %rax     # 0x4dfd8
movq (%rax), %rdi
movl -0x854(%rbp), %esi
shll $0x8, %esi
andl $0xff00, %esi           # imm = 0xFF00
xorl %eax, %eax
movl %eax, %edx
callq 0xd0f0
jmp 0x22cce
movq -0x30(%rbp), %rax
movl 0x1a78(%rax), %esi
movq -0x30(%rbp), %rax
movl 0x1a7c(%rax), %edx
leaq -0x838(%rbp), %rdi
callq 0x2b6d0
movl %eax, -0x854(%rbp)
movq 0x2b325(%rip), %rax     # 0x4dfd8
movq (%rax), %rdi
movl -0x854(%rbp), %esi
shll $0x8, %esi
andl $0xff00, %esi           # imm = 0xFF00
xorl %eax, %eax
movl %eax, %edx
callq 0xd0f0
movq -0x840(%rbp), %rax
movq 0x8(%rax), %rax
movq -0x868(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x10(%rax), %rax
cmpl $0x0, (%rax)
jne 0x22d2d
movq -0x840(%rbp), %rax
movq 0x8(%rax), %rax
movq -0x868(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x10(%rax), %rax
movq 0x48(%rax), %rax
movq 0x10(%rax), %rax
movq %rax, -0x870(%rbp)
movq -0x870(%rbp), %rsi
leaq 0x218b5(%rip), %rdi     # 0x445d9
movb $0x0, %al
callq 0xd4b0
jmp 0x22d3b
leaq 0x218aa(%rip), %rdi     # 0x445de
movb $0x0, %al
callq 0xd4b0
jmp 0x22d3d
movq -0x868(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x868(%rbp)
jmp 0x22c0e
jmp 0x22d56
movq 0x2b27b(%rip), %rax     # 0x4dfd8
movq (%rax), %rdi
xorl %esi, %esi
callq 0xd710
movq -0x848(%rbp), %rdi
movq -0x30(%rbp), %rsi
addq $0x20, %rsi
movq -0x30(%rbp), %rdx
addq $0x1a20, %rdx           # imm = 0x1A20
movq -0x30(%rbp), %rcx
addq $0x2940, %rcx           # imm = 0x2940
movq -0x30(%rbp), %rax
movq 0x2748(%rax), %r8
movq -0x30(%rbp), %rax
movq 0x1a58(%rax), %rax
movq -0x30(%rbp), %r9
movl 0x1a50(%r9), %r9d
movl %r9d, -0x988(%rbp)
movq -0x30(%rbp), %r9
movl 0x1a74(%r9), %r13d
movq -0x848(%rbp), %r9
movq 0x10(%r9), %r12
movq -0x30(%rbp), %r9
movq 0x2820(%r9), %r15
movq -0x840(%rbp), %r9
movq 0x28(%r9), %r14
movq -0x30(%rbp), %r9
movb 0x2c79(%r9), %bl
movq -0x30(%rbp), %r9
movl 0x1a78(%r9), %r11d
movq -0x30(%rbp), %r9
movl 0x1a7c(%r9), %r10d
movq -0x30(%rbp), %r9
movl 0x1aa8(%r9), %r9d
movl %r9d, -0x984(%rbp)
leaq -0x838(%rbp), %r9
andb $0x1, %bl
movq %rax, (%rsp)
movl -0x988(%rbp), %eax
movl %eax, 0x8(%rsp)
movl -0x984(%rbp), %eax
movl %r13d, 0x10(%rsp)
movq %r12, 0x18(%rsp)
movq %r15, 0x20(%rsp)
movq %r14, 0x28(%rsp)
movzbl %bl, %ebx
movl %ebx, 0x30(%rsp)
movl %r11d, 0x38(%rsp)
movl %r10d, 0x40(%rsp)
movl %eax, 0x48(%rsp)
callq 0x23ad0
movq -0x30(%rbp), %rax
cmpq $0x0, 0x27f8(%rax)
je 0x22fab
leaq -0x880(%rbp), %rdi
xorl %esi, %esi
movl $0x10, %edx
callq 0xd290
movq -0x30(%rbp), %rdi
addq $0x2708, %rdi           # imm = 0x2708
movq -0x30(%rbp), %rax
movq 0x1a58(%rax), %rsi
movq -0x30(%rbp), %rax
movl 0x1a50(%rax), %edx
movq -0x30(%rbp), %rax
movl 0x1a74(%rax), %ecx
movq -0x30(%rbp), %rax
movq 0x2820(%rax), %r11
movq -0x30(%rbp), %rax
movq 0x8(%rax), %r10
movq -0x30(%rbp), %rax
movl 0x1aa8(%rax), %eax
leaq -0x880(%rbp), %r8
leaq -0x838(%rbp), %r9
movq %r11, (%rsp)
movq %r10, 0x8(%rsp)
movl %eax, 0x10(%rsp)
callq 0x24700
leaq -0x880(%rbp), %rdi
callq 0x2b300
movq -0x30(%rbp), %rax
movq 0x2720(%rax), %rax
movq -0x30(%rbp), %rcx
subq 0x2718(%rcx), %rax
addq $0x1, %rax
movq %rax, -0x888(%rbp)
movq -0x30(%rbp), %rdi
addq $0x2708, %rdi           # imm = 0x2708
movq -0x30(%rbp), %rsi
addq $0x20, %rsi
movq -0x30(%rbp), %rdx
addq $0x2940, %rdx           # imm = 0x2940
movq -0x30(%rbp), %rax
movl 0x1a78(%rax), %r9d
movq -0x30(%rbp), %rax
movl 0x1a7c(%rax), %eax
leaq -0x838(%rbp), %rcx
xorl %r8d, %r8d
movl %eax, (%rsp)
callq 0x22730
movq -0x848(%rbp), %rax
movq 0x10(%rax), %rdi
addq $0x8, %rdi
movq -0x30(%rbp), %rdx
addq $0x2940, %rdx           # imm = 0x2940
xorl %eax, %eax
movl %eax, %r8d
subq -0x888(%rbp), %r8
movq -0x30(%rbp), %rax
movl 0x1a78(%rax), %r9d
movq -0x30(%rbp), %rax
movl 0x1a7c(%rax), %eax
xorl %ecx, %ecx
movl %ecx, %esi
leaq -0x838(%rbp), %rcx
movl %eax, (%rsp)
callq 0x22730
movq -0x30(%rbp), %rdi
callq 0x13330
movq %rax, -0x890(%rbp)
cmpq $0x0, -0x890(%rbp)
je 0x23323
movq -0x848(%rbp), %rax
movq 0x10(%rax), %rax
cmpl $0x0, (%rax)
jne 0x23323
movq -0x30(%rbp), %rax
movq 0x2860(%rax), %rax
cmpq $0x0, 0x8(%rax)
je 0x23323
movq -0x30(%rbp), %rax
movq 0x2860(%rax), %rax
movq (%rax), %rax
movq (%rax), %rdi
callq 0xd200
cmpq $0x0, %rax
je 0x23323
movq -0x848(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x898(%rbp)
movq -0x898(%rbp), %rax
movq 0x8(%rax), %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x27a8(%rax)
movq -0x898(%rbp), %rax
movq 0x10(%rax), %rcx
subq $0x1, %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x27b0(%rax)
movq -0x30(%rbp), %rax
cmpq $0x0, 0x27f8(%rax)
je 0x2307b
movq -0x30(%rbp), %rax
movq 0x2718(%rax), %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x27c0(%rax)
jmp 0x23095
movq -0x898(%rbp), %rax
movq 0x20(%rax), %rcx
subq $0x1, %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x27c0(%rax)
movq -0x30(%rbp), %rax
movq 0x2860(%rax), %rax
movq 0x8(%rax), %rax
movq %rax, -0x8a0(%rbp)
movq -0x8a0(%rbp), %rax
movq -0x30(%rbp), %rcx
cmpq 0x1a80(%rcx), %rax
jle 0x230d1
movq -0x30(%rbp), %rax
movq 0x1a80(%rax), %rax
movq %rax, -0x8a0(%rbp)
movq -0x30(%rbp), %rax
movq 0x27c0(%rax), %rcx
subq -0x8a0(%rbp), %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x27b8(%rax)
movq -0x30(%rbp), %rax
movq 0x27b8(%rax), %rax
movq -0x898(%rbp), %rcx
cmpq 0x18(%rcx), %rax
jg 0x23120
movq -0x898(%rbp), %rax
movq 0x18(%rax), %rcx
addq $0x1, %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x27b8(%rax)
movq -0x30(%rbp), %rax
movq 0x2860(%rax), %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x27e8(%rax)
movq -0x30(%rbp), %rax
movq 0x2860(%rax), %rax
movq 0x28(%rax), %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x27e0(%rax)
movq -0x30(%rbp), %rax
movq $0x0, 0x27d8(%rax)
movq -0x30(%rbp), %rax
movq $0x0, 0x27d0(%rax)
movq -0x30(%rbp), %rax
movq $0x0, 0x27c8(%rax)
movq -0x30(%rbp), %rdi
addq $0x27a8, %rdi           # imm = 0x27A8
xorl %eax, %eax
movl %eax, %ecx
movq %rcx, %rsi
movq %rcx, %rdx
callq 0x116a0
leaq -0x8b0(%rbp), %rdi
xorl %esi, %esi
movl $0x10, %edx
callq 0xd290
leaq -0x8c0(%rbp), %rdi
xorl %esi, %esi
movl $0x10, %edx
callq 0xd290
movq -0x30(%rbp), %rax
movq 0x27e8(%rax), %rax
movq 0x58(%rax), %rax
movq %rax, -0x8c8(%rbp)
movq -0x8c8(%rbp), %rax
movq 0x600(%rax), %rax
movq -0x30(%rbp), %rdi
addq $0x27a8, %rdi           # imm = 0x27A8
movq -0x30(%rbp), %rcx
movq 0x2820(%rcx), %rcx
movq -0x30(%rbp), %rdx
movq 0x27e8(%rdx), %rdx
movq 0x60(%rdx), %r8
leaq -0x8c0(%rbp), %rsi
leaq -0x8b0(%rbp), %rdx
callq *%rax
leaq -0x8c0(%rbp), %rdi
callq 0x2b5a0
movq -0x30(%rbp), %rdi
addq $0x27a8, %rdi           # imm = 0x27A8
movq -0x30(%rbp), %rax
movq 0x1a58(%rax), %rsi
movq -0x30(%rbp), %rax
movl 0x1a50(%rax), %edx
movq -0x30(%rbp), %rax
movl 0x1a74(%rax), %ecx
movq -0x30(%rbp), %rax
movq 0x2820(%rax), %r11
movq -0x30(%rbp), %rax
movq 0x8(%rax), %r10
movq -0x30(%rbp), %rax
movl 0x1aa8(%rax), %eax
leaq -0x8b0(%rbp), %r8
leaq -0x838(%rbp), %r9
movq %r11, (%rsp)
movq %r10, 0x8(%rsp)
movl %eax, 0x10(%rsp)
callq 0x24700
leaq -0x8b0(%rbp), %rdi
callq 0x2b300
movq -0x30(%rbp), %rax
cmpq $0x0, 0x27f8(%rax)
je 0x23321
movq -0x30(%rbp), %rax
movq 0x27c0(%rax), %rax
movq -0x30(%rbp), %rcx
subq 0x27b8(%rcx), %rax
addq $0x1, %rax
movq -0x30(%rbp), %rcx
movq 0x2748(%rcx), %rcx
addq 0x8(%rcx), %rax
movq %rax, -0x8d0(%rbp)
movq -0x848(%rbp), %rax
movq 0x10(%rax), %rdi
addq $0x8, %rdi
movq -0x30(%rbp), %rdx
addq $0x2940, %rdx           # imm = 0x2940
xorl %eax, %eax
movl %eax, %r8d
subq -0x8d0(%rbp), %r8
movq -0x30(%rbp), %rax
movl 0x1a78(%rax), %r9d
movq -0x30(%rbp), %rax
movl 0x1a7c(%rax), %eax
xorl %ecx, %ecx
movl %ecx, %esi
leaq -0x838(%rbp), %rcx
movl %eax, (%rsp)
callq 0x22730
jmp 0x23323
movq -0x30(%rbp), %rax
cmpq $0x0, 0x2d50(%rax)
jl 0x234bb
movq -0x30(%rbp), %rax
cmpq $0x0, 0x2d58(%rax)
jl 0x234bb
movq -0x30(%rbp), %rax
movq $0x0, 0x2db0(%rax)
movq -0x30(%rbp), %rax
movq 0x2d70(%rax), %rdi
callq 0x22540
movq %rax, %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x2db8(%rax)
movq -0x30(%rbp), %rax
movq $0x0, 0x2da8(%rax)
movq -0x30(%rbp), %rax
movq $0x0, 0x2da0(%rax)
movq -0x30(%rbp), %rdi
addq $0x2d50, %rdi           # imm = 0x2D50
addq $0x30, %rdi
xorl %eax, %eax
movl %eax, %ecx
movq %rcx, %rsi
movq %rcx, %rdx
callq 0x116a0
leaq -0x8e0(%rbp), %rdi
xorl %esi, %esi
movl $0x10, %edx
callq 0xd290
leaq -0x8f0(%rbp), %rdi
xorl %esi, %esi
movl $0x10, %edx
callq 0xd290
movq -0x30(%rbp), %rax
movq 0x2d78(%rax), %rax
movq 0x58(%rax), %rax
movq %rax, -0x8f8(%rbp)
movq -0x8f8(%rbp), %rax
cmpq $0x0, 0x600(%rax)
je 0x23450
movq -0x8f8(%rbp), %rax
movq 0x600(%rax), %rax
movq -0x30(%rbp), %rdi
addq $0x2d50, %rdi           # imm = 0x2D50
addq $0x30, %rdi
movq -0x30(%rbp), %rcx
movq 0x2820(%rcx), %rcx
movq -0x30(%rbp), %rdx
movq 0x2d78(%rdx), %rdx
movq 0x60(%rdx), %r8
leaq -0x8f0(%rbp), %rsi
leaq -0x8e0(%rbp), %rdx
callq *%rax
leaq -0x8f0(%rbp), %rdi
callq 0x2b5a0
movq -0x30(%rbp), %rdi
addq $0x2d50, %rdi           # imm = 0x2D50
addq $0x30, %rdi
movq -0x30(%rbp), %rax
movq 0x1a58(%rax), %rsi
movq -0x30(%rbp), %rax
movl 0x1a50(%rax), %edx
movq -0x30(%rbp), %rax
movl 0x1a74(%rax), %ecx
movq -0x30(%rbp), %rax
movq 0x2820(%rax), %r11
movq -0x30(%rbp), %rax
movq 0x8(%rax), %r10
movq -0x30(%rbp), %rax
movl 0x1aa8(%rax), %eax
leaq -0x8e0(%rbp), %r8
leaq -0x838(%rbp), %r9
movq %r11, (%rsp)
movq %r10, 0x8(%rsp)
movl %eax, 0x10(%rsp)
callq 0x24700
movq -0x30(%rbp), %rax
testb $0x1, 0x2800(%rax)
je 0x236bb
leaq -0x908(%rbp), %rdi
xorl %esi, %esi
movl $0x10, %edx
callq 0xd290
leaq -0x918(%rbp), %rdi
xorl %esi, %esi
movl $0x10, %edx
callq 0xd290
movq -0x30(%rbp), %rax
movq 0x2798(%rax), %rax
movq 0x58(%rax), %rax
movq %rax, -0x920(%rbp)
movq -0x920(%rbp), %rax
movq 0x600(%rax), %rax
movq -0x30(%rbp), %rdi
addq $0x2758, %rdi           # imm = 0x2758
movq -0x30(%rbp), %rcx
movq 0x2820(%rcx), %rcx
movq -0x30(%rbp), %rdx
movq 0x2798(%rdx), %rdx
movq 0x60(%rdx), %r8
leaq -0x918(%rbp), %rsi
leaq -0x908(%rbp), %rdx
callq *%rax
leaq -0x918(%rbp), %rdi
callq 0x2b5a0
movq -0x30(%rbp), %rdi
addq $0x2758, %rdi           # imm = 0x2758
movq -0x30(%rbp), %rax
movq 0x1a58(%rax), %rsi
movq -0x30(%rbp), %rax
movl 0x1a50(%rax), %edx
movq -0x30(%rbp), %rax
movl 0x1a74(%rax), %ecx
movq -0x30(%rbp), %rax
movq 0x2820(%rax), %r11
movq -0x30(%rbp), %rax
movq 0x8(%rax), %r10
movq -0x30(%rbp), %rax
movl 0x1aa8(%rax), %eax
leaq -0x908(%rbp), %r8
leaq -0x838(%rbp), %r9
movq %r11, (%rsp)
movq %r10, 0x8(%rsp)
movl %eax, 0x10(%rsp)
callq 0x24700
leaq -0x908(%rbp), %rdi
callq 0x2b300
movq -0x30(%rbp), %rax
movq 0x2798(%rax), %rax
movq (%rax), %rax
movq (%rax), %rdi
callq 0xea70
movl %eax, -0x924(%rbp)
movq -0x30(%rbp), %rax
movl 0x1a90(%rax), %esi
movq -0x30(%rbp), %rax
movl 0x1a94(%rax), %edx
leaq -0x838(%rbp), %rdi
callq 0x2b6d0
movl %eax, -0x928(%rbp)
movq 0x2a9c5(%rip), %rax     # 0x4dfd8
movq (%rax), %rdi
movl -0x928(%rbp), %esi
shll $0x8, %esi
andl $0xff00, %esi           # imm = 0xFF00
xorl %eax, %eax
movl %eax, %edx
callq 0xd0f0
movq -0x30(%rbp), %rdi
addq $0x2758, %rdi           # imm = 0x2758
callq 0x119e0
movq %rax, -0x930(%rbp)
movq 0x2a98c(%rip), %rax     # 0x4dfd8
movq (%rax), %rdi
movq -0x30(%rbp), %rax
movq 0x2768(%rax), %rax
movl %eax, %esi
movq -0x30(%rbp), %rax
movq 0x2758(%rax), %rax
movslq -0x924(%rbp), %rcx
addq %rcx, %rax
movl %eax, %edx
callq 0xd070
movl -0x924(%rbp), %eax
movl %eax, -0x934(%rbp)
movslq -0x934(%rbp), %rax
cmpq -0x930(%rbp), %rax
jge 0x236b9
movq 0x2a93d(%rip), %rax     # 0x4dfd8
movq (%rax), %rdi
movl $0x20, %esi
callq 0xd600
movl -0x934(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x934(%rbp)
jmp 0x23684
jmp 0x236bb
movq -0x848(%rbp), %rax
movq 0x10(%rax), %rax
cmpl $0x0, (%rax)
je 0x239f4
movq $0x0, -0x940(%rbp)
movq $0x0, -0x948(%rbp)
movq $0x0, -0x950(%rbp)
movq -0x848(%rbp), %rax
movq 0x10(%rax), %rax
movl (%rax), %eax
movl %eax, -0x98c(%rbp)
subl $0x1, %eax
je 0x2371c
jmp 0x2370a
movl -0x98c(%rbp), %eax
subl $0x2, %eax
je 0x23771
jmp 0x23717
jmp 0x237c4
movq -0x848(%rbp), %rax
movq 0x10(%rax), %rax
addq $0x8, %rax
addq $0x18, %rax
movq %rax, -0x950(%rbp)
movq -0x950(%rbp), %rax
movq 0x8(%rax), %rax
movq -0x950(%rbp), %rcx
subq (%rcx), %rax
movq %rax, -0x948(%rbp)
movq -0x950(%rbp), %rax
movq 0x18(%rax), %rax
movq -0x950(%rbp), %rcx
subq 0x10(%rcx), %rax
movq %rax, -0x940(%rbp)
jmp 0x237c4
movq -0x848(%rbp), %rax
movq 0x10(%rax), %rax
addq $0x8, %rax
addq $0x10, %rax
movq %rax, -0x950(%rbp)
movq -0x950(%rbp), %rax
movq 0x8(%rax), %rax
movq -0x950(%rbp), %rcx
subq (%rcx), %rax
movq %rax, -0x948(%rbp)
movq -0x950(%rbp), %rax
movq 0x18(%rax), %rax
movq -0x950(%rbp), %rcx
subq 0x10(%rcx), %rax
movq %rax, -0x940(%rbp)
leaq -0x838(%rbp), %rdi
movl $0xf, %edx
movl %edx, %esi
callq 0x2b6d0
movl %eax, -0x954(%rbp)
movq 0x2a7f4(%rip), %rax     # 0x4dfd8
movq (%rax), %rdi
movl -0x954(%rbp), %esi
shll $0x8, %esi
andl $0xff00, %esi           # imm = 0xFF00
xorl %eax, %eax
movl %eax, %edx
callq 0xd0f0
movl $0x0, -0x958(%rbp)
movslq -0x958(%rbp), %rax
cmpq -0x940(%rbp), %rax
jge 0x238cc
movq 0x2a7b4(%rip), %rax     # 0x4dfd8
movq (%rax), %rdi
movq -0x950(%rbp), %rax
movq 0x10(%rax), %rax
movslq -0x958(%rbp), %rcx
addq %rcx, %rax
movl %eax, %esi
movq -0x950(%rbp), %rax
movq 0x8(%rax), %rax
movl %eax, %edx
callq 0xd070
cmpl $-0x1, %eax
jne 0x23857
jmp 0x2386b
movq 0x2a77a(%rip), %rax     # 0x4dfd8
movq (%rax), %rdi
movl $0x20, %esi
callq 0xd600
movq 0x2a766(%rip), %rax     # 0x4dfd8
movq (%rax), %rdi
movq -0x950(%rbp), %rax
movq 0x10(%rax), %rax
movslq -0x958(%rbp), %rcx
addq %rcx, %rax
movl %eax, %esi
movq -0x950(%rbp), %rax
movq (%rax), %rax
movl %eax, %edx
callq 0xd070
cmpl $-0x1, %eax
jne 0x238a4
jmp 0x238b8
movq 0x2a72d(%rip), %rax     # 0x4dfd8
movq (%rax), %rdi
movl $0x20, %esi
callq 0xd600
movl -0x958(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x958(%rbp)
jmp 0x23809
movl $0x0, -0x95c(%rbp)
movslq -0x95c(%rbp), %rax
cmpq -0x948(%rbp), %rax
jge 0x23998
movq 0x2a6e7(%rip), %rax     # 0x4dfd8
movq (%rax), %rdi
movq -0x950(%rbp), %rax
movq 0x10(%rax), %rax
movl %eax, %esi
movq -0x950(%rbp), %rax
movq (%rax), %rax
movslq -0x95c(%rbp), %rcx
addq %rcx, %rax
movl %eax, %edx
callq 0xd070
cmpl $-0x1, %eax
jne 0x23923
jmp 0x23937
movq 0x2a6ae(%rip), %rax     # 0x4dfd8
movq (%rax), %rdi
movl $0x20, %esi
callq 0xd600
movq 0x2a69a(%rip), %rax     # 0x4dfd8
movq (%rax), %rdi
movq -0x950(%rbp), %rax
movq 0x18(%rax), %rax
movl %eax, %esi
movq -0x950(%rbp), %rax
movq (%rax), %rax
movslq -0x95c(%rbp), %rcx
addq %rcx, %rax
movl %eax, %edx
callq 0xd070
cmpl $-0x1, %eax
jne 0x23970
jmp 0x23984
movq 0x2a661(%rip), %rax     # 0x4dfd8
movq (%rax), %rdi
movl $0x20, %esi
callq 0xd600
movl -0x95c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x95c(%rbp)
jmp 0x238d6
movq 0x2a639(%rip), %rax     # 0x4dfd8
movq (%rax), %rdi
movq -0x950(%rbp), %rax
movq 0x18(%rax), %rax
movl %eax, %esi
movq -0x950(%rbp), %rax
movq 0x8(%rax), %rax
movl %eax, %edx
callq 0xd070
cmpl $-0x1, %eax
jne 0x239c8
jmp 0x239dc
movq 0x2a609(%rip), %rax     # 0x4dfd8
movq (%rax), %rdi
movl $0x20, %esi
callq 0xd600
movq 0x2a5f5(%rip), %rax     # 0x4dfd8
movq (%rax), %rdi
xorl %edx, %edx
movl %edx, %esi
callq 0xd070
jmp 0x23aaa
movq -0x30(%rbp), %rax
cmpq $0x0, 0x27f8(%rax)
je 0x23a58
movq -0x30(%rbp), %rdi
addq $0x2708, %rdi           # imm = 0x2708
movq -0x30(%rbp), %rax
movq 0x1a58(%rax), %rsi
movq -0x30(%rbp), %rax
movl 0x1a50(%rax), %edx
callq 0x14260
movq %rax, -0x970(%rbp)
movq %rdx, -0x968(%rbp)
movq 0x2a59c(%rip), %rax     # 0x4dfd8
movq (%rax), %rdi
movq -0x968(%rbp), %rax
movl %eax, %esi
movq -0x970(%rbp), %rax
movl %eax, %edx
callq 0xd070
jmp 0x23aa8
movq -0x850(%rbp), %rdi
movq -0x30(%rbp), %rax
movq 0x1a58(%rax), %rsi
movq -0x30(%rbp), %rax
movl 0x1a50(%rax), %edx
callq 0x14260
movq %rax, -0x980(%rbp)
movq %rdx, -0x978(%rbp)
movq 0x2a54a(%rip), %rax     # 0x4dfd8
movq (%rax), %rdi
movq -0x978(%rbp), %rax
movl %eax, %esi
movq -0x980(%rbp), %rax
movl %eax, %edx
callq 0xd070
jmp 0x23aaa
movq 0x2a527(%rip), %rax     # 0x4dfd8
movq (%rax), %rdi
callq 0xd320
addq $0x9b8, %rsp            # imm = 0x9B8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nopl (%rax,%rax)