LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O0/justy989[P]ce/ce_commands.c
// Function: command_line_number
CeCommandStatus_t command_line_number(CeCommand_t* command, void* user_data){
     if(command->arg_count != 1) return CE_COMMAND_PRINT_HELP;
     if(command->args[0].type != CE_COMMAND_ARG_STRING) return CE_COMMAND_PRINT_HELP;
     CeApp_t* app = user_data;
     if(strcmp(command->args[0].string, "none") == 0){
          app->config_options.line_number = CE_LINE_NUMBER_NONE;
     }else if(strcmp(command->args[0].string, "absolute") == 0){
          app->config_options.line_number = CE_LINE_NUMBER_ABSOLUTE;
     }else if(strcmp(command->args[0].string, "relative") == 0){
          app->config_options.line_number = CE_LINE_NUMBER_RELATIVE;
     }else if(strcmp(command->args[0].string, "both") == 0){
          app->config_options.line_number = CE_LINE_NUMBER_ABSOLUTE_AND_RELATIVE;
     }else{
          return CE_COMMAND_PRINT_HELP;
     }

     return CE_COMMAND_SUCCESS;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
cmpq $0x1, 0x208(%rax)
je 0x2083a
movl $0x2, -0x4(%rbp)
jmp 0x20937
movq -0x10(%rbp), %rax
movq 0x200(%rax), %rax
cmpl $0x2, (%rax)
je 0x20856
movl $0x2, -0x4(%rbp)
jmp 0x20937
movq -0x18(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rax
movq 0x200(%rax), %rax
movq 0x8(%rax), %rdi
leaq 0x23c02(%rip), %rsi     # 0x44476
callq 0xd370
cmpl $0x0, %eax
jne 0x20891
movq -0x20(%rbp), %rax
movl $0x0, 0x1a50(%rax)
jmp 0x20930
movq -0x10(%rbp), %rax
movq 0x200(%rax), %rax
movq 0x8(%rax), %rdi
leaq 0x23bd4(%rip), %rsi     # 0x4447b
callq 0xd370
cmpl $0x0, %eax
jne 0x208c1
movq -0x20(%rbp), %rax
movl $0x1, 0x1a50(%rax)
jmp 0x2092e
movq -0x10(%rbp), %rax
movq 0x200(%rax), %rax
movq 0x8(%rax), %rdi
leaq 0x22e35(%rip), %rsi     # 0x4370c
callq 0xd370
cmpl $0x0, %eax
jne 0x208f1
movq -0x20(%rbp), %rax
movl $0x2, 0x1a50(%rax)
jmp 0x2092c
movq -0x10(%rbp), %rax
movq 0x200(%rax), %rax
movq 0x8(%rax), %rdi
leaq 0x23b7d(%rip), %rsi     # 0x44484
callq 0xd370
cmpl $0x0, %eax
jne 0x20921
movq -0x20(%rbp), %rax
movl $0x3, 0x1a50(%rax)
jmp 0x2092a
movl $0x2, -0x4(%rbp)
jmp 0x20937
jmp 0x2092c
jmp 0x2092e
jmp 0x20930
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x20, %rsp
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O0/justy989[P]ce/ce_commands.c
// Function: command_man_page_on_word_under_cursor
CeCommandStatus_t command_man_page_on_word_under_cursor(CeCommand_t* command, void* user_data){
     if(command->arg_count != 0) return CE_COMMAND_PRINT_HELP;

     CeApp_t* app = (CeApp_t*)(user_data);
     CommandContext_t command_context = {};

     if(!get_command_context(app, &command_context)) return CE_COMMAND_NO_ACTION;

     CeRange_t range = ce_vim_find_little_word_boundaries(command_context.view->buffer, command_context.view->cursor); // returns -1
     char* word = ce_buffer_dupe_string(command_context.view->buffer, range.start, (range.end.x - range.start.x) + 1);
     if(!word) return CE_COMMAND_NO_ACTION;
     char cmd[128];
     snprintf(cmd, 128, "man %s", word);
     free(word);
     ce_app_run_shell_command(app, cmd, command_context.tab_layout, command_context.view, false);

     return CE_COMMAND_SUCCESS;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xe0, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
cmpq $0x0, 0x208(%rax)
je 0x2096d
movl $0x2, -0x4(%rbp)
jmp 0x20a3d
movq -0x18(%rbp), %rax
movq %rax, -0x20(%rbp)
leaq -0x30(%rbp), %rdi
xorl %esi, %esi
movl $0x10, %edx
callq 0xd290
movq -0x20(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x1c5d0
testb $0x1, %al
jne 0x209a2
movl $0x3, -0x4(%rbp)
jmp 0x20a3d
movq -0x28(%rbp), %rax
movq 0x40(%rax), %rsi
movq -0x28(%rbp), %rax
movq 0x30(%rax), %rdx
movq 0x38(%rax), %rcx
leaq -0x50(%rbp), %rdi
callq 0x367a0
movq -0x28(%rbp), %rax
movq 0x40(%rax), %rdi
movq -0x40(%rbp), %rcx
subq -0x50(%rbp), %rcx
addq $0x1, %rcx
movq -0x50(%rbp), %rsi
movq -0x48(%rbp), %rdx
callq 0x10900
movq %rax, -0x58(%rbp)
cmpq $0x0, -0x58(%rbp)
jne 0x209f4
movl $0x3, -0x4(%rbp)
jmp 0x20a3d
leaq -0xe0(%rbp), %rdi
movq -0x58(%rbp), %rcx
movl $0x80, %esi
leaq 0x23a7e(%rip), %rdx     # 0x44489
movb $0x0, %al
callq 0xd250
movq -0x58(%rbp), %rdi
callq 0xd090
movq -0x20(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
movq -0x30(%rbp), %rdx
movq -0x28(%rbp), %rcx
xorl %r8d, %r8d
callq 0x18d80
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0xe0, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/justy989[P]ce/ce_commands.c
// Function: command_shell_command
CeCommandStatus_t command_shell_command(CeCommand_t* command, void* user_data){
     if(command->arg_count < 1) return CE_COMMAND_PRINT_HELP;

     CeApp_t* app = (CeApp_t*)(user_data);
     CommandContext_t command_context = {};

     if(!get_command_context(app, &command_context)) return CE_COMMAND_NO_ACTION;

     char* command_args = build_string_from_command_args(command);

     if(!ce_app_run_shell_command(app, command_args, command_context.tab_layout, command_context.view, false)){
          free(command_args);
          return CE_COMMAND_FAILURE;
     }

     free(command_args);
     return CE_COMMAND_SUCCESS;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
cmpq $0x1, 0x208(%rax)
jge 0x20a77
movl $0x2, -0x4(%rbp)
jmp 0x20af4
movq -0x18(%rbp), %rax
movq %rax, -0x20(%rbp)
leaq -0x30(%rbp), %rdi
xorl %esi, %esi
movl $0x10, %edx
callq 0xd290
movq -0x20(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x1c5d0
testb $0x1, %al
jne 0x20aa9
movl $0x3, -0x4(%rbp)
jmp 0x20af4
movq -0x10(%rbp), %rdi
callq 0x20b00
movq %rax, -0x38(%rbp)
movq -0x20(%rbp), %rdi
movq -0x38(%rbp), %rsi
movq -0x30(%rbp), %rdx
movq -0x28(%rbp), %rcx
xorl %r8d, %r8d
callq 0x18d80
testb $0x1, %al
jne 0x20ae4
movq -0x38(%rbp), %rdi
callq 0xd090
movl $0x1, -0x4(%rbp)
jmp 0x20af4
movq -0x38(%rbp), %rdi
callq 0xd090
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x40, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/justy989[P]ce/ce_commands.c
// Function: command_shell_command_relative
CeCommandStatus_t command_shell_command_relative(CeCommand_t* command, void* user_data){
     if(command->arg_count < 1) return CE_COMMAND_PRINT_HELP;

     CeApp_t* app = (CeApp_t*)(user_data);
     CommandContext_t command_context = {};

     if(!get_command_context(app, &command_context)) return CE_COMMAND_NO_ACTION;
#if defined(PLATFORM_WINDOWS)
     ce_app_message(app, "shell_command_relative not yet supported on windows. Please use shell_command.");
     return CE_COMMAND_FAILURE;
#else
     char* command_args = build_string_from_command_args(command);

     if(!ce_app_run_shell_command(app, command_args, command_context.tab_layout, command_context.view, true)){
          free(command_args);
          return CE_COMMAND_FAILURE;
     }

     free(command_args);
     return CE_COMMAND_SUCCESS;
#endif
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
cmpq $0x1, 0x208(%rax)
jge 0x20d7a
movl $0x2, -0x4(%rbp)
jmp 0x20dfa
movq -0x18(%rbp), %rax
movq %rax, -0x20(%rbp)
leaq -0x30(%rbp), %rdi
xorl %esi, %esi
movl $0x10, %edx
callq 0xd290
movq -0x20(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x1c5d0
testb $0x1, %al
jne 0x20dac
movl $0x3, -0x4(%rbp)
jmp 0x20dfa
movq -0x10(%rbp), %rdi
callq 0x20b00
movq %rax, -0x38(%rbp)
movq -0x20(%rbp), %rdi
movq -0x38(%rbp), %rsi
movq -0x30(%rbp), %rdx
movq -0x28(%rbp), %rcx
movl $0x1, %r8d
callq 0x18d80
testb $0x1, %al
jne 0x20dea
movq -0x38(%rbp), %rdi
callq 0xd090
movl $0x1, -0x4(%rbp)
jmp 0x20dfa
movq -0x38(%rbp), %rdi
callq 0xd090
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x40, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/justy989[P]ce/ce_commands.c
// Function: command_paste_clipboard
CeCommandStatus_t command_paste_clipboard(CeCommand_t* command, void* user_data) {
     if(command->arg_count >= 1) return CE_COMMAND_PRINT_HELP;

     CeApp_t* app = (CeApp_t*)(user_data);
     CommandContext_t command_context = {};
     if(!get_command_context(app, &command_context)) return CE_COMMAND_NO_ACTION;

     CePoint_t resulting_cursor = ce_paste_clipboard_into_buffer(command_context.view->buffer,
                                                                 command_context.view->cursor);
     if(resulting_cursor.x <= 0){
          return CE_COMMAND_FAILURE;
     }

     command_context.view->cursor = resulting_cursor;
     return CE_COMMAND_SUCCESS;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
cmpq $0x1, 0x208(%rax)
jl 0x20e87
movl $0x2, -0x4(%rbp)
jmp 0x20f05
movq -0x18(%rbp), %rax
movq %rax, -0x20(%rbp)
leaq -0x30(%rbp), %rdi
xorl %esi, %esi
movl $0x10, %edx
callq 0xd290
movq -0x20(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x1c5d0
testb $0x1, %al
jne 0x20eb9
movl $0x3, -0x4(%rbp)
jmp 0x20f05
movq -0x28(%rbp), %rax
movq 0x40(%rax), %rdi
movq -0x28(%rbp), %rax
movq 0x30(%rax), %rsi
movq 0x38(%rax), %rdx
callq 0x19be0
movq %rax, -0x40(%rbp)
movq %rdx, -0x38(%rbp)
cmpq $0x0, -0x40(%rbp)
jg 0x20eea
movl $0x1, -0x4(%rbp)
jmp 0x20f05
movq -0x28(%rbp), %rax
movq -0x40(%rbp), %rcx
movq %rcx, 0x30(%rax)
movq -0x38(%rbp), %rcx
movq %rcx, 0x38(%rax)
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x40, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/justy989[P]ce/ce_commands.c
// Function: command_clang_goto_def
CeCommandStatus_t command_clang_goto_def(CeCommand_t* command, void* user_data){
     CeApp_t* app = (CeApp_t*)(user_data);
     CommandContext_t command_context = {};
     if(!get_command_context(app, &command_context)) return CE_COMMAND_NO_ACTION;

     if(!ce_clangd_request_goto_def(&app->clangd,
                                    command_context.view->buffer,
                                    command_context.view->cursor)){
         return CE_COMMAND_FAILURE;
     }

     return CE_COMMAND_SUCCESS;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x20(%rbp)
leaq -0x30(%rbp), %rdi
xorl %esi, %esi
movl $0x10, %edx
callq 0xd290
movq -0x20(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x1c5d0
testb $0x1, %al
jne 0x20f52
movl $0x3, -0x4(%rbp)
jmp 0x20f8a
movq -0x20(%rbp), %rdi
addq $0x2cd0, %rdi           # imm = 0x2CD0
movq -0x28(%rbp), %rax
movq 0x40(%rax), %rsi
movq -0x28(%rbp), %rax
movq 0x30(%rax), %rdx
movq 0x38(%rax), %rcx
callq 0x1b080
testb $0x1, %al
jne 0x20f83
movl $0x1, -0x4(%rbp)
jmp 0x20f8a
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/justy989[P]ce/ce_commands.c
// Function: command_clang_goto_decl
CeCommandStatus_t command_clang_goto_decl(CeCommand_t* command, void* user_data){
     CeApp_t* app = (CeApp_t*)(user_data);
     CommandContext_t command_context = {};
     if(!get_command_context(app, &command_context)) return CE_COMMAND_NO_ACTION;

     if(!ce_clangd_request_goto_decl(&app->clangd,
                                     command_context.view->buffer,
                                     command_context.view->cursor)){
         return CE_COMMAND_FAILURE;
     }

     return CE_COMMAND_SUCCESS;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x20(%rbp)
leaq -0x30(%rbp), %rdi
xorl %esi, %esi
movl $0x10, %edx
callq 0xd290
movq -0x20(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x1c5d0
testb $0x1, %al
jne 0x20fe2
movl $0x3, -0x4(%rbp)
jmp 0x2101a
movq -0x20(%rbp), %rdi
addq $0x2cd0, %rdi           # imm = 0x2CD0
movq -0x28(%rbp), %rax
movq 0x40(%rax), %rsi
movq -0x28(%rbp), %rax
movq 0x30(%rax), %rdx
movq 0x38(%rax), %rcx
callq 0x1b100
testb $0x1, %al
jne 0x21013
movl $0x1, -0x4(%rbp)
jmp 0x2101a
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/justy989[P]ce/ce_commands.c
// Function: command_clang_goto_type_def
CeCommandStatus_t command_clang_goto_type_def(CeCommand_t* command, void* user_data){
     CeApp_t* app = (CeApp_t*)(user_data);
     CommandContext_t command_context = {};
     if(!get_command_context(app, &command_context)) return CE_COMMAND_NO_ACTION;

     if(!ce_clangd_request_goto_type_def(&app->clangd,
                                         command_context.view->buffer,
                                         command_context.view->cursor)){
         return CE_COMMAND_FAILURE;
     }

     return CE_COMMAND_SUCCESS;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x20(%rbp)
leaq -0x30(%rbp), %rdi
xorl %esi, %esi
movl $0x10, %edx
callq 0xd290
movq -0x20(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x1c5d0
testb $0x1, %al
jne 0x21072
movl $0x3, -0x4(%rbp)
jmp 0x210aa
movq -0x20(%rbp), %rdi
addq $0x2cd0, %rdi           # imm = 0x2CD0
movq -0x28(%rbp), %rax
movq 0x40(%rax), %rsi
movq -0x28(%rbp), %rax
movq 0x30(%rax), %rdx
movq 0x38(%rax), %rcx
callq 0x1add0
testb $0x1, %al
jne 0x210a3
movl $0x1, -0x4(%rbp)
jmp 0x210aa
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/justy989[P]ce/ce_commands.c
// Function: command_clang_find_references
CeCommandStatus_t command_clang_find_references(CeCommand_t* command, void* user_data){
     CeApp_t* app = (CeApp_t*)(user_data);
     CommandContext_t command_context = {};
     if(!get_command_context(app, &command_context)) return CE_COMMAND_NO_ACTION;

     if(!ce_clangd_request_find_references(&app->clangd,
                                           command_context.view->buffer,
                                           command_context.view->cursor)){
         return CE_COMMAND_FAILURE;
     }

     return CE_COMMAND_SUCCESS;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x20(%rbp)
leaq -0x30(%rbp), %rdi
xorl %esi, %esi
movl $0x10, %edx
callq 0xd290
movq -0x20(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x1c5d0
testb $0x1, %al
jne 0x21102
movl $0x3, -0x4(%rbp)
jmp 0x2113a
movq -0x20(%rbp), %rdi
addq $0x2cd0, %rdi           # imm = 0x2CD0
movq -0x28(%rbp), %rax
movq 0x40(%rax), %rsi
movq -0x28(%rbp), %rax
movq 0x30(%rax), %rdx
movq 0x38(%rax), %rcx
callq 0x1b200
testb $0x1, %al
jne 0x21133
movl $0x1, -0x4(%rbp)
jmp 0x2113a
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/justy989[P]ce/ce_commands.c
// Function: command_vim_e
CeCommandStatus_t command_vim_e(CeCommand_t* command, void* user_data){
     if(command->arg_count != 1) return CE_COMMAND_PRINT_HELP;
     if(command->args[0].type != CE_COMMAND_ARG_STRING) return CE_COMMAND_PRINT_HELP;

     CeApp_t* app = user_data;
     CommandContext_t command_context = {};

     if(!get_command_context(app, &command_context)) return CE_COMMAND_NO_ACTION;

     if(load_file_into_view(&app->buffer_node_head, command_context.view, &app->config_options, &app->vim,
                         true, command->args[0].string)){
          ce_clangd_file_open(&app->clangd, app->buffer_node_head->buffer);
     }else{
          return CE_COMMAND_FAILURE;
     }

     return CE_COMMAND_SUCCESS;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
cmpq $0x1, 0x208(%rax)
je 0x2155a
movl $0x2, -0x4(%rbp)
jmp 0x2161a
movq -0x10(%rbp), %rax
movq 0x200(%rax), %rax
cmpl $0x2, (%rax)
je 0x21576
movl $0x2, -0x4(%rbp)
jmp 0x2161a
movq -0x18(%rbp), %rax
movq %rax, -0x20(%rbp)
leaq -0x30(%rbp), %rdi
xorl %esi, %esi
movl $0x10, %edx
callq 0xd290
movq -0x20(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x1c5d0
testb $0x1, %al
jne 0x215a8
movl $0x3, -0x4(%rbp)
jmp 0x2161a
movq -0x20(%rbp), %rdi
addq $0x2828, %rdi           # imm = 0x2828
movq -0x28(%rbp), %rsi
movq -0x20(%rbp), %rdx
addq $0x1a50, %rdx           # imm = 0x1A50
movq -0x20(%rbp), %rcx
addq $0x20, %rcx
movq -0x10(%rbp), %rax
movq 0x200(%rax), %rax
movq 0x8(%rax), %r9
movl $0x1, %r8d
callq 0x14420
cmpq $0x0, %rax
je 0x2160a
movq -0x20(%rbp), %rdi
addq $0x2cd0, %rdi           # imm = 0x2CD0
movq -0x20(%rbp), %rax
movq 0x2828(%rax), %rax
movq (%rax), %rsi
callq 0x1a760
jmp 0x21613
movl $0x1, -0x4(%rbp)
jmp 0x2161a
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/justy989[P]ce/ce_commands.c
// Function: command_vim_q
CeCommandStatus_t command_vim_q(CeCommand_t* command, void* user_data){
     if(command->arg_count != 0) return CE_COMMAND_PRINT_HELP;

     CeApp_t* app = user_data;
     if(app->tab_list_layout->tab_list.tab_count == 1 &&
        ce_layout_tab_get_layout_count(app->tab_list_layout->tab_list.current) == 1){
          return command_quit(command, user_data);
     }

     if(!delete_layout(user_data)) return CE_COMMAND_FAILURE;

     return CE_COMMAND_SUCCESS;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
cmpq $0x0, 0x208(%rax)
je 0x21687
movl $0x2, -0x4(%rbp)
jmp 0x216ea
movq -0x18(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq 0x2818(%rax), %rax
cmpq $0x1, 0x18(%rax)
jne 0x216cd
movq -0x20(%rbp), %rax
movq 0x2818(%rax), %rax
movq 0x10(%rax), %rdi
callq 0x2a670
cmpq $0x1, %rax
jne 0x216cd
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x1c4b0
movl %eax, -0x4(%rbp)
jmp 0x216ea
movq -0x18(%rbp), %rdi
callq 0x1d4d0
testb $0x1, %al
jne 0x216e3
movl $0x1, -0x4(%rbp)
jmp 0x216ea
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/justy989[P]ce/ce_commands.c
// Function: command_vim_q_exclam
CeCommandStatus_t command_vim_q_exclam(CeCommand_t* command, void* user_data){
     if(command->arg_count != 0) return CE_COMMAND_PRINT_HELP;

     CeApp_t* app = user_data;
     if(app->tab_list_layout->tab_list.tab_count == 1 &&
        ce_layout_tab_get_layout_count(app->tab_list_layout->tab_list.current) == 1){
          app->quit = true;
          return command_quit(command, user_data);
     }

     if(!delete_layout(user_data)) return CE_COMMAND_FAILURE;

     return CE_COMMAND_SUCCESS;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
cmpq $0x0, 0x208(%rax)
je 0x21727
movl $0x2, -0x4(%rbp)
jmp 0x21795
movq -0x18(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq 0x2818(%rax), %rax
cmpq $0x1, 0x18(%rax)
jne 0x21778
movq -0x20(%rbp), %rax
movq 0x2818(%rax), %rax
movq 0x10(%rax), %rdi
callq 0x2a670
cmpq $0x1, %rax
jne 0x21778
movq -0x20(%rbp), %rax
movb $0x1, 0x2c78(%rax)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x1c4b0
movl %eax, -0x4(%rbp)
jmp 0x21795
movq -0x18(%rbp), %rdi
callq 0x1d4d0
testb $0x1, %al
jne 0x2178e
movl $0x1, -0x4(%rbp)
jmp 0x21795
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x20, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/justy989[P]ce/ce_commands.c
// Function: command_vim_qa_exclam
CeCommandStatus_t command_vim_qa_exclam(CeCommand_t* command, void* user_data){
     if(command->arg_count != 0) return CE_COMMAND_PRINT_HELP;
     CeApp_t* app = user_data;
     app->quit = true;
     return CE_COMMAND_SUCCESS;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
cmpq $0x0, 0x208(%rax)
je 0x217c3
movl $0x2, -0x4(%rbp)
jmp 0x217dd
movq -0x18(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movb $0x1, 0x2c78(%rax)
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/justy989[P]ce/ce_commands.c
// Function: command_vim_wq
CeCommandStatus_t command_vim_wq(CeCommand_t* command, void* user_data){
     if(command->arg_count != 0) return CE_COMMAND_PRINT_HELP;

     CeApp_t* app = user_data;
     CommandContext_t command_context = {};

     if(!get_command_context(app, &command_context)) return CE_COMMAND_NO_ACTION;

     try_save_buffer(app, command_context.view->buffer);

     if(app->tab_list_layout->tab_list.tab_count == 1 &&
        ce_layout_tab_get_layout_count(app->tab_list_layout->tab_list.current) == 1){
          return command_quit(command, user_data);
     }

     if(!delete_layout(user_data)) return CE_COMMAND_FAILURE;
     return CE_COMMAND_SUCCESS;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
cmpq $0x0, 0x208(%rax)
je 0x2181a
movl $0x2, -0x4(%rbp)
jmp 0x218b8
movq -0x18(%rbp), %rax
movq %rax, -0x20(%rbp)
leaq -0x30(%rbp), %rdi
xorl %esi, %esi
movl $0x10, %edx
callq 0xd290
movq -0x20(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x1c5d0
testb $0x1, %al
jne 0x2184c
movl $0x3, -0x4(%rbp)
jmp 0x218b8
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rax
movq 0x40(%rax), %rsi
callq 0x1cc30
movq -0x20(%rbp), %rax
movq 0x2818(%rax), %rax
cmpq $0x1, 0x18(%rax)
jne 0x2189b
movq -0x20(%rbp), %rax
movq 0x2818(%rax), %rax
movq 0x10(%rax), %rdi
callq 0x2a670
cmpq $0x1, %rax
jne 0x2189b
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x1c4b0
movl %eax, -0x4(%rbp)
jmp 0x218b8
movq -0x18(%rbp), %rdi
callq 0x1d4d0
testb $0x1, %al
jne 0x218b1
movl $0x1, -0x4(%rbp)
jmp 0x218b8
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/justy989[P]ce/ce_commands.c
// Function: command_vim_tabnext
CeCommandStatus_t command_vim_tabnext(CeCommand_t* command, void* user_data){
     if(command->arg_count != 0) return CE_COMMAND_PRINT_HELP;
     CeApp_t* app = user_data;
     if(select_tab_right(app)){
          return CE_COMMAND_SUCCESS;
     }
     return CE_COMMAND_NO_ACTION;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
cmpq $0x0, 0x208(%rax)
je 0x21b67
movl $0x2, -0x4(%rbp)
jmp 0x21b8e
movq -0x18(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rdi
callq 0x1e9e0
testb $0x1, %al
jne 0x21b7e
jmp 0x21b87
movl $0x0, -0x4(%rbp)
jmp 0x21b8e
movl $0x3, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x20, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/justy989[P]ce/ce_commands.c
// Function: command_vim_tabprevious
CeCommandStatus_t command_vim_tabprevious(CeCommand_t* command, void* user_data){
     if(command->arg_count != 0) return CE_COMMAND_PRINT_HELP;
     CeApp_t* app = user_data;
     if(select_tab_left(app)){
          return CE_COMMAND_SUCCESS;
     }
     return CE_COMMAND_NO_ACTION;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
cmpq $0x0, 0x208(%rax)
je 0x21bc7
movl $0x2, -0x4(%rbp)
jmp 0x21bee
movq -0x18(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rdi
callq 0x1e8f0
testb $0x1, %al
jne 0x21bde
jmp 0x21be7
movl $0x0, -0x4(%rbp)
jmp 0x21bee
movl $0x3, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x20, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/justy989[P]ce/ce_commands.c
// Function: command_vim_make
CeCommandStatus_t command_vim_make(CeCommand_t* command, void* user_data){
     CeApp_t* app = user_data;

     if(command->arg_count == 0){
          CommandContext_t command_context = {};
          if(!get_command_context(app, &command_context)) return CE_COMMAND_NO_ACTION;
          ce_app_run_shell_command(app, "make", command_context.tab_layout, command_context.view, false);
     }else if(command->arg_count == 1 &&
              command->args[0].type == CE_COMMAND_ARG_STRING){
          CommandContext_t command_context = {};
          if(!get_command_context(app, &command_context)) return CE_COMMAND_NO_ACTION;
          char command_string[256];
          snprintf(command_string, 256, "make %s", command->args[0].string);
          ce_app_run_shell_command(app, command_string, command_context.tab_layout, command_context.view, false);
     }else{
          return CE_COMMAND_PRINT_HELP;
     }

     return CE_COMMAND_SUCCESS;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x140, %rsp            # imm = 0x140
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rax
cmpq $0x0, 0x208(%rax)
jne 0x21cd6
leaq -0x30(%rbp), %rdi
xorl %esi, %esi
movl $0x10, %edx
callq 0xd290
movq -0x20(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x1c5d0
testb $0x1, %al
jne 0x21cb6
movl $0x3, -0x4(%rbp)
jmp 0x21d7a
movq -0x20(%rbp), %rdi
movq -0x30(%rbp), %rdx
movq -0x28(%rbp), %rcx
leaq 0x21b5c(%rip), %rsi     # 0x43825
xorl %r8d, %r8d
callq 0x18d80
jmp 0x21d73
movq -0x10(%rbp), %rax
cmpq $0x1, 0x208(%rax)
jne 0x21d68
movq -0x10(%rbp), %rax
movq 0x200(%rax), %rax
cmpl $0x2, (%rax)
jne 0x21d68
leaq -0x40(%rbp), %rdi
xorl %esi, %esi
movl $0x10, %edx
callq 0xd290
movq -0x20(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x1c5d0
testb $0x1, %al
jne 0x21d22
movl $0x3, -0x4(%rbp)
jmp 0x21d7a
leaq -0x140(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x200(%rax), %rax
movq 0x8(%rax), %rcx
movl $0x100, %esi            # imm = 0x100
leaq 0x227c7(%rip), %rdx     # 0x4450b
movb $0x0, %al
callq 0xd250
movq -0x20(%rbp), %rdi
leaq -0x140(%rbp), %rsi
movq -0x40(%rbp), %rdx
movq -0x38(%rbp), %rcx
xorl %r8d, %r8d
callq 0x18d80
jmp 0x21d71
movl $0x2, -0x4(%rbp)
jmp 0x21d7a
jmp 0x21d73
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x140, %rsp            # imm = 0x140
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/justy989[P]ce/ce_commands.c
// Function: command_vim_find
CeCommandStatus_t command_vim_find(CeCommand_t* command, void* user_data){
     if(command->arg_count != 1) return CE_COMMAND_PRINT_HELP;
     if(command->args[0].type != CE_COMMAND_ARG_STRING) return CE_COMMAND_PRINT_HELP;

     CeApp_t* app = user_data;
     CommandContext_t command_context = {};

     if(!get_command_context(app, &command_context)) return CE_COMMAND_NO_ACTION;

     char* base_directory = buffer_base_directory(command_context.view->buffer);
     if(!base_directory) base_directory = strdup(CE_CURRENT_DIR_SEARCH_STR);
     open_file_in_dir_recursively(base_directory, command->args[0].string, app, command_context.view);
     free(base_directory);

     return CE_COMMAND_SUCCESS;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
cmpq $0x1, 0x208(%rax)
je 0x21dba
movl $0x2, -0x4(%rbp)
jmp 0x21e60
movq -0x10(%rbp), %rax
movq 0x200(%rax), %rax
cmpl $0x2, (%rax)
je 0x21dd6
movl $0x2, -0x4(%rbp)
jmp 0x21e60
movq -0x18(%rbp), %rax
movq %rax, -0x20(%rbp)
leaq -0x30(%rbp), %rdi
xorl %esi, %esi
movl $0x10, %edx
callq 0xd290
movq -0x20(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x1c5d0
testb $0x1, %al
jne 0x21e08
movl $0x3, -0x4(%rbp)
jmp 0x21e60
movq -0x28(%rbp), %rax
movq 0x40(%rax), %rdi
callq 0x149f0
movq %rax, -0x38(%rbp)
cmpq $0x0, -0x38(%rbp)
jne 0x21e30
leaq 0x224e0(%rip), %rdi     # 0x44307
callq 0xd620
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x200(%rax), %rax
movq 0x8(%rax), %rsi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
callq 0x21e70
movq -0x38(%rbp), %rdi
callq 0xd090
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x40, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/justy989[P]ce/ce_complete.c
// Function: ce_complete_init
bool ce_complete_init(CeComplete_t* complete, const char** strings, const char** descriptions, int64_t string_count){
     ce_complete_free(complete);

     complete->elements = calloc(string_count, sizeof(*complete->elements));
     if(!complete->elements) return false;

     for(int64_t i = 0; i < string_count; i++){
          complete->elements[i].string = strdup(strings[i]);
          if(descriptions && descriptions[i]){
               complete->elements[i].description = strdup(descriptions[i]);
          }
          if(!complete->elements[i].string) return false;
          complete->elements[i].match = true;
     }

     complete->count = string_count;
     return true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movq -0x10(%rbp), %rdi
callq 0x221f0
movq -0x28(%rbp), %rdi
movl $0x18, %esi
callq 0xd360
movq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, (%rax)
movq -0x10(%rbp), %rax
cmpq $0x0, (%rax)
jne 0x2211c
movb $0x0, -0x1(%rbp)
jmp 0x221e4
movq $0x0, -0x30(%rbp)
movq -0x30(%rbp), %rax
cmpq -0x28(%rbp), %rax
jge 0x221d4
movq -0x18(%rbp), %rax
movq -0x30(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0xd620
movq %rax, %rcx
movq -0x10(%rbp), %rax
movq (%rax), %rax
imulq $0x18, -0x30(%rbp), %rdx
addq %rdx, %rax
movq %rcx, (%rax)
cmpq $0x0, -0x20(%rbp)
je 0x22195
movq -0x20(%rbp), %rax
movq -0x30(%rbp), %rcx
cmpq $0x0, (%rax,%rcx,8)
je 0x22195
movq -0x20(%rbp), %rax
movq -0x30(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0xd620
movq %rax, %rcx
movq -0x10(%rbp), %rax
movq (%rax), %rax
imulq $0x18, -0x30(%rbp), %rdx
addq %rdx, %rax
movq %rcx, 0x8(%rax)
movq -0x10(%rbp), %rax
movq (%rax), %rax
imulq $0x18, -0x30(%rbp), %rcx
addq %rcx, %rax
cmpq $0x0, (%rax)
jne 0x221b0
movb $0x0, -0x1(%rbp)
jmp 0x221e4
movq -0x10(%rbp), %rax
movq (%rax), %rax
imulq $0x18, -0x30(%rbp), %rcx
addq %rcx, %rax
movb $0x1, 0x10(%rax)
movq -0x30(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x30(%rbp)
jmp 0x22124
movq -0x28(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x8(%rax)
movb $0x1, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x30, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/justy989[P]ce/ce_complete.c
// Function: ce_complete_free
void ce_complete_free(CeComplete_t* complete){
     for(int64_t i = 0; i < complete->count; i++){
          free(complete->elements[i].string);
          free(complete->elements[i].description);
     }

     free(complete->elements);
     free(complete->current_match);
     memset(complete, 0, sizeof(*complete));
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq $0x0, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq -0x8(%rbp), %rcx
cmpq 0x8(%rcx), %rax
jge 0x2224f
movq -0x8(%rbp), %rax
movq (%rax), %rax
imulq $0x18, -0x10(%rbp), %rcx
addq %rcx, %rax
movq (%rax), %rdi
callq 0xd090
movq -0x8(%rbp), %rax
movq (%rax), %rax
imulq $0x18, -0x10(%rbp), %rcx
addq %rcx, %rax
movq 0x8(%rax), %rdi
callq 0xd090
movq -0x10(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x10(%rbp)
jmp 0x22204
movq -0x8(%rbp), %rax
movq (%rax), %rdi
callq 0xd090
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0xd090
movq -0x8(%rbp), %rdi
xorl %esi, %esi
movl $0x20, %edx
callq 0xd290
addq $0x10, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/justy989[P]ce/ce_complete.c
// Function: ce_complete_reset
void ce_complete_reset(CeComplete_t* complete){
     free(complete->current_match);
     complete->current_match = NULL;
     complete->current = 0;

     for(int64_t i = 0; i < complete->count; i++){
          complete->elements[i].match = true;
     }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0xd090
movq -0x8(%rbp), %rax
movq $0x0, 0x10(%rax)
movq -0x8(%rbp), %rax
movq $0x0, 0x18(%rax)
movq $0x0, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq -0x8(%rbp), %rcx
cmpq 0x8(%rcx), %rax
jge 0x222e8
movq -0x8(%rbp), %rax
movq (%rax), %rax
imulq $0x18, -0x10(%rbp), %rcx
addq %rcx, %rax
movb $0x1, 0x10(%rax)
movq -0x10(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x10(%rbp)
jmp 0x222b9
addq $0x10, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/justy989[P]ce/ce_complete.c
// Function: ce_complete_current_match
int64_t ce_complete_current_match(CeComplete_t* complete){
     int64_t result = 0;
     for(int64_t i = 0; i < complete->count; i++){
          if(i == complete->current){
               return result;
          }
          if(complete->elements[i].match){
               result++;
          }
     }
     return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x10(%rbp)
movq $0x0, -0x18(%rbp)
movq $0x0, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq -0x10(%rbp), %rcx
cmpq 0x8(%rcx), %rax
jge 0x225af
movq -0x20(%rbp), %rax
movq -0x10(%rbp), %rcx
cmpq 0x18(%rcx), %rax
jne 0x2257e
movq -0x18(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x225b7
movq -0x10(%rbp), %rax
movq (%rax), %rax
imulq $0x18, -0x20(%rbp), %rcx
addq %rcx, %rax
testb $0x1, 0x10(%rax)
je 0x2259f
movq -0x18(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x18(%rbp)
jmp 0x225a1
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
jmp 0x22558
movq $0x0, -0x8(%rbp)
movq -0x8(%rbp), %rax
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/justy989[P]ce/ce_complete.c
// Function: ce_complete_next_match
void ce_complete_next_match(CeComplete_t* complete){
     if(complete->current < 0) return;

     for(int64_t i = complete->current + 1; i != complete->current; i++){
          if(i >= complete->count) i = 0;
          if(complete->elements[i].match){
               complete->current = i;
               break;
          }

          if(i == 0 && complete->current == 0) break;
     }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
cmpq $0x0, 0x18(%rax)
jge 0x225d5
jmp 0x22650
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
addq $0x1, %rax
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq -0x8(%rbp), %rcx
cmpq 0x18(%rcx), %rax
je 0x22650
movq -0x10(%rbp), %rax
movq -0x8(%rbp), %rcx
cmpq 0x8(%rcx), %rax
jl 0x22609
movq $0x0, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
imulq $0x18, -0x10(%rbp), %rcx
addq %rcx, %rax
testb $0x1, 0x10(%rax)
je 0x2262c
movq -0x10(%rbp), %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x18(%rax)
jmp 0x22650
cmpq $0x0, -0x10(%rbp)
jne 0x22640
movq -0x8(%rbp), %rax
cmpq $0x0, 0x18(%rax)
jne 0x22640
jmp 0x22650
jmp 0x22642
movq -0x10(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x10(%rbp)
jmp 0x225e5
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/justy989[P]ce/ce_complete.c
// Function: ce_complete_previous_match
void ce_complete_previous_match(CeComplete_t* complete){
     if(complete->current < 0) return;

     for(int64_t i = complete->current - 1; i != complete->current; i--){
          if(i < 0) i = complete->count - 1;
          if(complete->elements[i].match){
               complete->current = i;
               break;
          }

          if(i == complete->count - 1 && complete->current == complete->count - 1) break;
     }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
cmpq $0x0, 0x18(%rax)
jge 0x22678
jmp 0x22713
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
subq $0x1, %rax
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq -0x8(%rbp), %rcx
cmpq 0x18(%rcx), %rax
je 0x22713
cmpq $0x0, -0x10(%rbp)
jge 0x226ad
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
subq $0x1, %rax
movq %rax, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
imulq $0x18, -0x10(%rbp), %rcx
addq %rcx, %rax
testb $0x1, 0x10(%rax)
je 0x226d0
movq -0x10(%rbp), %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x18(%rax)
jmp 0x22713
movq -0x10(%rbp), %rax
movq -0x8(%rbp), %rcx
movq 0x8(%rcx), %rcx
subq $0x1, %rcx
cmpq %rcx, %rax
jne 0x22700
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq -0x8(%rbp), %rcx
movq 0x8(%rcx), %rcx
subq $0x1, %rcx
cmpq %rcx, %rax
jne 0x22700
jmp 0x22713
jmp 0x22702
movq -0x10(%rbp), %rax
addq $-0x1, %rax
movq %rax, -0x10(%rbp)
jmp 0x22688
popq %rbp
retq
nopw %cs:(%rax,%rax)
nop
// File: /workspace/github_c_makefile_star2_O0/justy989[P]ce/ce_json.c
// Function: ce_json_array_add_obj
void ce_json_array_add_obj(CeJsonArray_t* array, CeJsonObj_t* obj){
     uint64_t new_count = array->count + 1;
     array->values = realloc(array->values, new_count * sizeof(array->values[0]));
     CeJsonValue_t* new_value = array->values + array->count;
     memset(new_value, 0, sizeof(*new_value));
     new_value->type = CE_JSON_TYPE_OBJECT;
     _obj_copy(&new_value->obj, obj);
     array->count = new_count;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
addq $0x1, %rax
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rdi
imulq $0x18, -0x18(%rbp), %rsi
callq 0xd500
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, (%rax)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rbp), %rcx
imulq $0x18, 0x8(%rcx), %rcx
addq %rcx, %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rdi
xorl %esi, %esi
movl $0x18, %edx
callq 0xd290
movq -0x20(%rbp), %rax
movl $0x1, (%rax)
movq -0x20(%rbp), %rdi
addq $0x8, %rdi
movq -0x10(%rbp), %rsi
callq 0x25150
movq -0x18(%rbp), %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x8(%rax)
addq $0x20, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/justy989[P]ce/ce_json.c
// Function: obj_copy
static void _obj_copy(CeJsonObj_t* a, CeJsonObj_t* b){
     _obj_free(a);

     for(int64_t i = 0; i < b->count; i++){
          CeJsonField_t* field = b->fields + i;
          switch(field->value.type){
          case CE_JSON_TYPE_OBJECT:
               ce_json_obj_set_obj(a, field->name, &field->value.obj);
               break;
          case CE_JSON_TYPE_ARRAY:
               ce_json_obj_set_array(a, field->name, &field->value.array);
               break;
          case CE_JSON_TYPE_STRING:
               ce_json_obj_set_string(a, field->name, field->value.string);
               break;
          case CE_JSON_TYPE_NUMBER:
               ce_json_obj_set_number(a, field->name, field->value.number);
               break;
          case CE_JSON_TYPE_BOOL:
               ce_json_obj_set_boolean(a, field->name, field->value.boolean);
               break;
          case CE_JSON_TYPE_NULL:
               ce_json_obj_set_null(a, field->name);
               break;
          default:
               break;
          }
     }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rdi
callq 0x25b70
movq $0x0, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq -0x10(%rbp), %rcx
cmpq 0x8(%rcx), %rax
jge 0x2527e
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq -0x18(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movl 0x8(%rax), %eax
decl %eax
movl %eax, %ecx
movq %rcx, -0x28(%rbp)
subl $0x5, %eax
ja 0x25269
movq -0x28(%rbp), %rax
leaq 0x1f448(%rip), %rcx     # 0x44604
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rax
movq (%rax), %rsi
movq -0x20(%rbp), %rdx
addq $0x8, %rdx
addq $0x8, %rdx
callq 0x25560
jmp 0x2526b
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rax
movq (%rax), %rsi
movq -0x20(%rbp), %rdx
addq $0x8, %rdx
addq $0x8, %rdx
callq 0x25690
jmp 0x2526b
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rax
movq (%rax), %rsi
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rdx
callq 0x25860
jmp 0x2526b
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rax
movq (%rax), %rsi
movq -0x20(%rbp), %rax
movsd 0x10(%rax), %xmm0
callq 0x25920
jmp 0x2526b
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rax
movq (%rax), %rsi
movq -0x20(%rbp), %rax
movb 0x10(%rax), %al
andb $0x1, %al
movzbl %al, %edx
callq 0x259e0
jmp 0x2526b
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rax
movq (%rax), %rsi
callq 0x25aa0
jmp 0x2526b
jmp 0x2526b
jmp 0x2526d
movq -0x18(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x18(%rbp)
jmp 0x25171
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/justy989[P]ce/ce_json.c
// Function: ce_json_array_add_string
void ce_json_array_add_string(CeJsonArray_t* array, const char* string){
     uint64_t new_count = array->count + 1;
     array->values = realloc(array->values, new_count * sizeof(array->values[0]));
     CeJsonValue_t* new_value = array->values + array->count;
     memset(new_value, 0, sizeof(*new_value));
     new_value->type = CE_JSON_TYPE_STRING;
     new_value->string = strdup(string);
     array->count = new_count;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
addq $0x1, %rax
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rdi
imulq $0x18, -0x18(%rbp), %rsi
callq 0xd500
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, (%rax)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rbp), %rcx
imulq $0x18, 0x8(%rcx), %rcx
addq %rcx, %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rdi
xorl %esi, %esi
movl $0x18, %edx
callq 0xd290
movq -0x20(%rbp), %rax
movl $0x3, (%rax)
movq -0x10(%rbp), %rdi
callq 0xd620
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x18(%rbp), %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x8(%rax)
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/justy989[P]ce/ce_json.c
// Function: ce_json_array_add_number
void ce_json_array_add_number(CeJsonArray_t* array, double number){
     uint64_t new_count = array->count + 1;
     array->values = realloc(array->values, new_count * sizeof(array->values[0]));
     CeJsonValue_t* new_value = array->values + array->count;
     memset(new_value, 0, sizeof(*new_value));
     new_value->type = CE_JSON_TYPE_NUMBER;
     new_value->number = number;
     array->count = new_count;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movsd %xmm0, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
addq $0x1, %rax
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rdi
imulq $0x18, -0x18(%rbp), %rsi
callq 0xd500
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, (%rax)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rbp), %rcx
imulq $0x18, 0x8(%rcx), %rcx
addq %rcx, %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rdi
xorl %esi, %esi
movl $0x18, %edx
callq 0xd290
movq -0x20(%rbp), %rax
movl $0x4, (%rax)
movsd -0x10(%rbp), %xmm0
movq -0x20(%rbp), %rax
movsd %xmm0, 0x8(%rax)
movq -0x18(%rbp), %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x8(%rax)
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/justy989[P]ce/ce_json.c
// Function: ce_json_array_add_boolean
void ce_json_array_add_boolean(CeJsonArray_t* array, bool boolean){
     uint64_t new_count = array->count + 1;
     array->values = realloc(array->values, new_count * sizeof(array->values[0]));
     CeJsonValue_t* new_value = array->values + array->count;
     memset(new_value, 0, sizeof(*new_value));
     new_value->type = CE_JSON_TYPE_BOOL;
     new_value->boolean = boolean;
     array->count = new_count;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movb %sil, %al
movq %rdi, -0x8(%rbp)
andb $0x1, %al
movb %al, -0x9(%rbp)
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
addq $0x1, %rax
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rdi
imulq $0x18, -0x18(%rbp), %rsi
callq 0xd500
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, (%rax)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rbp), %rcx
imulq $0x18, 0x8(%rcx), %rcx
addq %rcx, %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rdi
xorl %esi, %esi
movl $0x18, %edx
callq 0xd290
movq -0x20(%rbp), %rax
movl $0x5, (%rax)
movb -0x9(%rbp), %cl
movq -0x20(%rbp), %rax
andb $0x1, %cl
movb %cl, 0x8(%rax)
movq -0x18(%rbp), %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x8(%rax)
addq $0x20, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/justy989[P]ce/ce_json.c
// Function: ce_json_array_add_null
void ce_json_array_add_null(CeJsonArray_t* array){
     uint64_t new_count = array->count + 1;
     array->values = realloc(array->values, new_count * sizeof(array->values[0]));
     CeJsonValue_t* new_value = array->values + array->count;
     memset(new_value, 0, sizeof(*new_value));
     new_value->type = CE_JSON_TYPE_NULL;
     array->count = new_count;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
addq $0x1, %rax
movq %rax, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rdi
imulq $0x18, -0x10(%rbp), %rsi
callq 0xd500
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, (%rax)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rbp), %rcx
imulq $0x18, 0x8(%rcx), %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rdi
xorl %esi, %esi
movl $0x18, %edx
callq 0xd290
movq -0x18(%rbp), %rax
movl $0x6, (%rax)
movq -0x10(%rbp), %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x8(%rax)
addq $0x20, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/justy989[P]ce/ce_json.c
// Function: array_free
static void _array_free(CeJsonArray_t* a){
     for(int64_t i = 0; i < a->count; i++){
          CeJsonValue_t* value = a->values + i;
          _value_free(value);
     }
     free(a->values);
     a->values = NULL;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq $0x0, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq -0x8(%rbp), %rcx
cmpq 0x8(%rcx), %rax
jge 0x2553c
movq -0x8(%rbp), %rax
movq (%rax), %rax
imulq $0x18, -0x10(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rdi
callq 0x267c0
movq -0x10(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x10(%rbp)
jmp 0x25504
movq -0x8(%rbp), %rax
movq (%rax), %rdi
callq 0xd090
movq -0x8(%rbp), %rax
movq $0x0, (%rax)
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/justy989[P]ce/ce_json.c
// Function: ce_json_obj_set_obj
void ce_json_obj_set_obj(CeJsonObj_t* obj, const char* name, CeJsonObj_t* member_obj){
     _obj_free_field_of_name(obj, name);
     uint64_t new_count = obj->count + 1;
     obj->fields = realloc(obj->fields, new_count * sizeof(obj->fields[0]));
     CeJsonField_t* new_field = obj->fields + obj->count;
     memset(new_field, 0, sizeof(*new_field));
     new_field->name = strdup(name);
     new_field->value.type = CE_JSON_TYPE_OBJECT;
     _obj_copy(&new_field->value.obj, member_obj);
     obj->count = new_count;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x25620
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rdi
movq -0x20(%rbp), %rsi
shlq $0x5, %rsi
callq 0xd500
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, (%rax)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rbp), %rcx
movq 0x8(%rcx), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rdi
xorl %esi, %esi
movl $0x20, %edx
callq 0xd290
movq -0x10(%rbp), %rdi
callq 0xd620
movq %rax, %rcx
movq -0x28(%rbp), %rax
movq %rcx, (%rax)
movq -0x28(%rbp), %rax
movl $0x1, 0x8(%rax)
movq -0x28(%rbp), %rdi
addq $0x8, %rdi
addq $0x8, %rdi
movq -0x18(%rbp), %rsi
callq 0x25150
movq -0x20(%rbp), %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x8(%rax)
addq $0x30, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/justy989[P]ce/ce_json.c
// Function: obj_free_field_of_name
static void _obj_free_field_of_name(CeJsonObj_t* obj, const char* name){
     for(int64_t i = 0; i < obj->count; i++){
          CeJsonField_t* field = obj->fields + i;
          if (strcmp(field->name, name) != 0){
               continue;
          }
          _field_free(field);
     }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq $0x0, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq -0x8(%rbp), %rcx
cmpq 0x8(%rcx), %rax
jge 0x2568a
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x18(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq (%rax), %rdi
movq -0x10(%rbp), %rsi
callq 0xd370
cmpl $0x0, %eax
je 0x25673
jmp 0x2567c
movq -0x20(%rbp), %rdi
callq 0x26830
movq -0x18(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x18(%rbp)
jmp 0x25638
addq $0x20, %rsp
popq %rbp
retq