// File: /workspace/github_c_makefile_star2_O0/briandowns[P]pass/main.c
// Function: main
int main(int argc, char **argv) {
    if (argc < 2) {
        printf(USAGE, STR(app_name));
        return 1;
    }

    if (sodium_init() != 0) {
        return 1;
    }
    
    for (int i = 1; i < argc; i++) {
        if (strcmp(argv[i], "-v") == 0 || strcmp(argv[i], "version") == 0) {
            printf("version: %s - git: %s\n", STR(app_version), STR(git_sha));
            return 0;
        }

        if (strcmp(argv[i], "-h") == 0 || strcmp(argv[i], "help") == 0) {
            printf(USAGE, STR(bin_name));
            return 0;
        }
            
        char pass_dir_path[PATH_MAX];
        const char *pass_dir = getenv("PASS_DIR");
        if ((pass_dir != NULL) && (pass_dir[0] != 0)) {
            strcpy(pass_dir_path, pass_dir);
        } else {
            strcpy(pass_dir_path, getenv("HOME"));
            strcat(pass_dir_path, "/" CONFIG_DIR);
        }

        char key_file_path[PATH_MAX];
        const char *pass_key = getenv("PASS_KEY");
        if ((pass_key != NULL) && (pass_key[0] == 0)) {
            strcpy(key_file_path, pass_key);
        } else {
            strcpy(key_file_path, pass_dir_path);
            strcat(key_file_path, "/");
            strcat(key_file_path, KEY_NAME);
        }

        if (strcmp(argv[i], "init") == 0) {
            DIR* dir = opendir(pass_dir_path);
            if (ENOENT == errno) {
                mkdir(pass_dir_path, 0700);
            } else {
                closedir(dir);
            }
            
            if (access(key_file_path, F_OK ) != -1) {
                char answer;
                printf("overwrite existing key? [Y/n] ");
                if (scanf("%c", &answer) == EOF) {
                    fprintf(stderr, "error: failed to read user input\n");
                    return 1;
                }
                if (answer == 'Y') {
                    if (create_key(key_file_path) != 0) {
                        fprintf(stderr, "error: failed to generate key\n");
                        return 1;
                    }
                }
            } else {
                if (create_key(key_file_path) != 0) {
                    fprintf(stderr, "error: failed to create key\n");
                    return 1;
                }
            }

            return 0;
        }

        unsigned char key[crypto_secretstream_xchacha20poly1305_KEYBYTES];

        FILE *key_fd = fopen(key_file_path, "r");
        fread(&key, crypto_secretstream_xchacha20poly1305_KEYBYTES, 1, key_fd);

        if ((strcmp(argv[i], "ls") == 0) || (strcmp(argv[i], "list") == 0)) {
            if (argc == 3) {
                PASSWORD_FILE_PATH;
                list(fp, 0);
            } else {
                list(pass_dir_path, 0);
            }

            break;
        }

        if (strcmp(argv[i], "set") == 0) {
            COMMAND_ARG_ERR_CHECK;

            char pass_buf[MAX_PASS_SIZE] = {0};
            strcpy(pass_buf, getpass("enter password: "));
            
            if (strlen(pass_buf) == 0) {
                fprintf(stderr, "error: empty passwords are not allowed\n");
                return 1;
            }

            PASSWORD_FILE_PATH;

            if (strchr(fp, '/') != NULL) {
                char *temp_fp = strdup(fp);
                mkdir_p(dirname(temp_fp));
                free(temp_fp);
            }

            if (encrypt_password(fp, pass_buf, key) != 0) {
                return 1;
            }

            break;
        }

        if (strcmp(argv[i], "get") == 0) {
            COMMAND_ARG_ERR_CHECK;
            PASSWORD_FILE_PATH;

            if (access(fp, F_OK ) != -1) {
                if (decrypt_password(fp, key) != 0) {
                    return 1;
                }
            } 

            break;
        }

        if ((strcmp(argv[i], "rm") == 0) || (strcmp(argv[i], "remove") == 0)) {
            COMMAND_ARG_ERR_CHECK;
            PASSWORD_FILE_PATH;

            remove(fp);

            break;
        }

        if (strcmp(argv[i], "config") == 0) {
            printf("path: %s\n", pass_dir_path);
            printf("key : %s\n", key_file_path);
            break;
        }

        if ((strcmp(argv[i], "gen") == 0) || (strcmp(argv[i], "generate") == 0)) {
            COMMAND_ARG_ERR_CHECK;

            int size = atoi(argv[2]);
            char *pass = generate_password(size);

            printf("%s\n", pass);
            free(pass);

            break;
        }

        if (strcmp(argv[i], "check") == 0) {
            COMMAND_ARG_ERR_CHECK;

            check(argv[2]);

            break;
        }
    }

    return 0;
}

// Assembly:
subq $0xb0c8, %rsp           # imm = 0xB0C8
movl $0x0, 0xb0c4(%rsp)
movl %edi, 0xb0c0(%rsp)
movq %rsi, 0xb0b8(%rsp)
cmpl $0x2, 0xb0c0(%rsp)
jge 0x401ad0
leaq 0xe1552(%rip), %rdi     # 0x4e3004
leaq 0xe17a2(%rip), %rsi     # 0x4e325b
movb $0x0, %al
callq 0x432bd0
movl $0x1, 0xb0c4(%rsp)
jmp 0x402606
callq 0x404540
cmpl $0x0, %eax
je 0x401aea
movl $0x1, 0xb0c4(%rsp)
jmp 0x402606
movl $0x1, 0xb0b4(%rsp)
movl 0xb0b4(%rsp), %eax
cmpl 0xb0c0(%rsp), %eax
jge 0x4025fb
movq 0xb0b8(%rsp), %rax
movslq 0xb0b4(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0xe16c5(%rip), %rsi     # 0x4e31e9
callq 0x4010b8
cmpl $0x0, %eax
je 0x401b53
movq 0xb0b8(%rsp), %rax
movslq 0xb0b4(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0xe16a3(%rip), %rsi     # 0x4e31ec
callq 0x4010b8
cmpl $0x0, %eax
jne 0x401b7f
leaq 0xe169a(%rip), %rdi     # 0x4e31f4
leaq 0xe16aa(%rip), %rsi     # 0x4e320b
leaq 0xe16a9(%rip), %rdx     # 0x4e3211
movb $0x0, %al
callq 0x432bd0
movl $0x0, 0xb0c4(%rsp)
jmp 0x402606
movq 0xb0b8(%rsp), %rax
movslq 0xb0b4(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0xe16a0(%rip), %rsi     # 0x4e323a
callq 0x4010b8
cmpl $0x0, %eax
je 0x401bc9
movq 0xb0b8(%rsp), %rax
movslq 0xb0b4(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0xe167e(%rip), %rsi     # 0x4e323d
callq 0x4010b8
cmpl $0x0, %eax
jne 0x401bee
leaq 0xe1434(%rip), %rdi     # 0x4e3004
leaq 0xe166b(%rip), %rsi     # 0x4e3242
movb $0x0, %al
callq 0x432bd0
movl $0x0, 0xb0c4(%rsp)
jmp 0x402606
leaq 0xe1656(%rip), %rdi     # 0x4e324b
callq 0x430fc0
movq %rax, 0xa0a8(%rsp)
cmpq $0x0, 0xa0a8(%rsp)
je 0x401c34
movq 0xa0a8(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
je 0x401c34
leaq 0xa0b0(%rsp), %rdi
movq 0xa0a8(%rsp), %rsi
callq 0x401020
jmp 0x401c6e
leaq 0xa0b0(%rsp), %rax
movq %rax, 0x28(%rsp)
leaq 0xe160c(%rip), %rdi     # 0x4e3254
callq 0x430fc0
movq 0x28(%rsp), %rdi
movq %rax, %rsi
callq 0x401020
leaq 0xa0b0(%rsp), %rdi
leaq 0xe15f0(%rip), %rsi     # 0x4e3259
callq 0x401060
leaq 0xe15eb(%rip), %rdi     # 0x4e3260
callq 0x430fc0
movq %rax, 0x9098(%rsp)
cmpq $0x0, 0x9098(%rsp)
je 0x401cb4
movq 0x9098(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
jne 0x401cb4
leaq 0x90a0(%rsp), %rdi
movq 0x9098(%rsp), %rsi
callq 0x401020
jmp 0x401cf1
leaq 0x90a0(%rsp), %rdi
leaq 0xa0b0(%rsp), %rsi
callq 0x401020
leaq 0x90a0(%rsp), %rdi
leaq 0xf16a4(%rip), %rsi     # 0x4f337c
callq 0x401060
leaq 0x90a0(%rsp), %rdi
leaq 0xe157d(%rip), %rsi     # 0x4e3269
callq 0x401060
movq 0xb0b8(%rsp), %rax
movslq 0xb0b4(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0xf1506(%rip), %rsi     # 0x4f3212
callq 0x4010b8
cmpl $0x0, %eax
jne 0x401e61
leaq 0xa0b0(%rsp), %rdi
callq 0x484e60
movq %rax, 0x9090(%rsp)
callq 0x42aae0
movq %rax, %rcx
movl $0x2, %eax
cmpl (%rcx), %eax
jne 0x401d54
leaq 0xa0b0(%rsp), %rdi
movl $0x1c0, %esi            # imm = 0x1C0
callq 0x485b60
jmp 0x401d61
movq 0x9090(%rsp), %rdi
callq 0x485090
leaq 0x90a0(%rsp), %rdi
xorl %esi, %esi
callq 0x485e30
cmpl $-0x1, %eax
je 0x401e15
leaq 0xe14f3(%rip), %rdi     # 0x4e3273
movb $0x0, %al
callq 0x432bd0
leaq 0xe1504(%rip), %rdi     # 0x4e3292
leaq 0x908f(%rsp), %rsi
movb $0x0, %al
callq 0x432fc0
cmpl $-0x1, %eax
jne 0x401dca
movq $0x520a68, %rax         # imm = 0x520A68
movq (%rax), %rdi
leaq 0xe14e2(%rip), %rsi     # 0x4e3295
movb $0x0, %al
callq 0x432b10
movl $0x1, 0xb0c4(%rsp)
jmp 0x402606
movsbl 0x908f(%rsp), %eax
cmpl $0x59, %eax
jne 0x401e13
leaq 0x90a0(%rsp), %rdi
callq 0x402ad0
cmpl $0x0, %eax
je 0x401e11
movq $0x520a68, %rax         # imm = 0x520A68
movq (%rax), %rdi
leaq 0xe14bd(%rip), %rsi     # 0x4e32b7
movb $0x0, %al
callq 0x432b10
movl $0x1, 0xb0c4(%rsp)
jmp 0x402606
jmp 0x401e13
jmp 0x401e51
leaq 0x90a0(%rsp), %rdi
callq 0x402ad0
cmpl $0x0, %eax
je 0x401e4f
movq $0x520a68, %rax         # imm = 0x520A68
movq (%rax), %rdi
leaq 0xe149e(%rip), %rsi     # 0x4e32d6
movb $0x0, %al
callq 0x432b10
movl $0x1, 0xb0c4(%rsp)
jmp 0x402606
jmp 0x401e51
movl $0x0, 0xb0c4(%rsp)
jmp 0x402606
leaq 0x90a0(%rsp), %rdi
leaq 0x1055f7(%rip), %rsi    # 0x507467
callq 0x441ab0
movq %rax, 0x9058(%rsp)
movq 0x9058(%rsp), %rcx
leaq 0x9060(%rsp), %rdi
movl $0x20, %esi
movl $0x1, %edx
callq 0x441bb0
movq 0xb0b8(%rsp), %rax
movslq 0xb0b4(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0xe143c(%rip), %rsi     # 0x4e32f3
callq 0x4010b8
cmpl $0x0, %eax
je 0x401eea
movq 0xb0b8(%rsp), %rax
movslq 0xb0b4(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0xece83(%rip), %rsi     # 0x4eed5f
callq 0x4010b8
cmpl $0x0, %eax
jne 0x401fb5
cmpl $0x3, 0xb0c0(%rsp)
jne 0x401fa1
leaq 0x8050(%rsp), %rdi
xorl %esi, %esi
movl $0x1000, %edx           # imm = 0x1000
callq 0x4010a8
leaq 0x7050(%rsp), %rax
movq %rax, 0x20(%rsp)
leaq 0xe1334(%rip), %rdi     # 0x4e3254
callq 0x430fc0
movq 0x20(%rsp), %rdi
movq %rax, %rsi
callq 0x401020
movq %rax, %rdi
leaq 0xe131d(%rip), %rsi     # 0x4e3259
callq 0x401060
leaq 0x8050(%rsp), %rdi
leaq 0x7050(%rsp), %rsi
callq 0x401020
leaq 0x8050(%rsp), %rdi
leaq 0xf1417(%rip), %rsi     # 0x4f337c
callq 0x401060
leaq 0x8050(%rsp), %rdi
movq 0xb0b8(%rsp), %rax
movl 0xb0b4(%rsp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rsi
callq 0x401060
leaq 0x8050(%rsp), %rdi
xorl %esi, %esi
callq 0x402620
jmp 0x401fb0
leaq 0xa0b0(%rsp), %rdi
xorl %esi, %esi
callq 0x402620
jmp 0x4025fb
movq 0xb0b8(%rsp), %rax
movslq 0xb0b4(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x105a86(%rip), %rsi    # 0x507a56
callq 0x4010b8
cmpl $0x0, %eax
jne 0x4021b7
cmpl $0x3, 0xb0c0(%rsp)
je 0x402024
movq $0x520a68, %rax         # imm = 0x520A68
movq (%rax), %rdi
movq 0xb0b8(%rsp), %rax
movslq 0xb0b4(%rsp), %rcx
movq (%rax,%rcx,8), %rdx
leaq 0xe12e9(%rip), %rsi     # 0x4e32f6
movb $0x0, %al
callq 0x432b10
movl $0x1, 0xb0c4(%rsp)
jmp 0x402606
leaq 0x6050(%rsp), %rdi
xorl %esi, %esi
movl $0x1000, %edx           # imm = 0x1000
callq 0x4010a8
leaq 0x6050(%rsp), %rax
movq %rax, 0x18(%rsp)
leaq 0xe12c7(%rip), %rdi     # 0x4e3313
callq 0x486d00
movq 0x18(%rsp), %rdi
movq %rax, %rsi
callq 0x401020
leaq 0x6050(%rsp), %rdi
callq 0x4010e8
cmpq $0x0, %rax
jne 0x402099
movq $0x520a68, %rax         # imm = 0x520A68
movq (%rax), %rdi
leaq 0xe12a2(%rip), %rsi     # 0x4e3324
movb $0x0, %al
callq 0x432b10
movl $0x1, 0xb0c4(%rsp)
jmp 0x402606
leaq 0x5050(%rsp), %rdi
xorl %esi, %esi
movl $0x1000, %edx           # imm = 0x1000
callq 0x4010a8
leaq 0x4050(%rsp), %rax
movq %rax, 0x10(%rsp)
leaq 0xe1193(%rip), %rdi     # 0x4e3254
callq 0x430fc0
movq 0x10(%rsp), %rdi
movq %rax, %rsi
callq 0x401020
movq %rax, %rdi
leaq 0xe117c(%rip), %rsi     # 0x4e3259
callq 0x401060
leaq 0x5050(%rsp), %rdi
leaq 0x4050(%rsp), %rsi
callq 0x401020
leaq 0x5050(%rsp), %rdi
leaq 0xf1276(%rip), %rsi     # 0x4f337c
callq 0x401060
leaq 0x5050(%rsp), %rdi
movq 0xb0b8(%rsp), %rax
movl 0xb0b4(%rsp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rsi
callq 0x401060
leaq 0x5050(%rsp), %rdi
movl $0x2f, %esi
callq 0x4010f0
cmpq $0x0, %rax
je 0x402180
leaq 0x5050(%rsp), %rdi
callq 0x453630
movq %rax, 0x4048(%rsp)
movq 0x4048(%rsp), %rdi
callq 0x488800
movq %rax, %rdi
callq 0x402790
movq 0x4048(%rsp), %rdi
callq 0x451280
leaq 0x5050(%rsp), %rdi
leaq 0x6050(%rsp), %rsi
leaq 0x9060(%rsp), %rdx
callq 0x402870
cmpl $0x0, %eax
je 0x4021b2
movl $0x1, 0xb0c4(%rsp)
jmp 0x402606
jmp 0x4025fb
movq 0xb0b8(%rsp), %rax
movslq 0xb0b4(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0xe117a(%rip), %rsi     # 0x4e334c
callq 0x4010b8
cmpl $0x0, %eax
jne 0x402303
cmpl $0x3, 0xb0c0(%rsp)
je 0x402226
movq $0x520a68, %rax         # imm = 0x520A68
movq (%rax), %rdi
movq 0xb0b8(%rsp), %rax
movslq 0xb0b4(%rsp), %rcx
movq (%rax,%rcx,8), %rdx
leaq 0xe10e7(%rip), %rsi     # 0x4e32f6
movb $0x0, %al
callq 0x432b10
movl $0x1, 0xb0c4(%rsp)
jmp 0x402606
leaq 0x3040(%rsp), %rdi
xorl %esi, %esi
movl $0x1000, %edx           # imm = 0x1000
callq 0x4010a8
leaq 0x2040(%rsp), %rax
movq %rax, 0x8(%rsp)
leaq 0xe1006(%rip), %rdi     # 0x4e3254
callq 0x430fc0
movq 0x8(%rsp), %rdi
movq %rax, %rsi
callq 0x401020
movq %rax, %rdi
leaq 0xe0fef(%rip), %rsi     # 0x4e3259
callq 0x401060
leaq 0x3040(%rsp), %rdi
leaq 0x2040(%rsp), %rsi
callq 0x401020
leaq 0x3040(%rsp), %rdi
leaq 0xf10e9(%rip), %rsi     # 0x4f337c
callq 0x401060
leaq 0x3040(%rsp), %rdi
movq 0xb0b8(%rsp), %rax
movl 0xb0b4(%rsp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rsi
callq 0x401060
leaq 0x3040(%rsp), %rdi
xorl %esi, %esi
callq 0x485e30
cmpl $-0x1, %eax
je 0x4022fe
leaq 0x3040(%rsp), %rdi
leaq 0x9060(%rsp), %rsi
callq 0x402960
cmpl $0x0, %eax
je 0x4022fc
movl $0x1, 0xb0c4(%rsp)
jmp 0x402606
jmp 0x4022fe
jmp 0x4025fb
movq 0xb0b8(%rsp), %rax
movslq 0xb0b4(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0xe1032(%rip), %rsi     # 0x4e3350
callq 0x4010b8
cmpl $0x0, %eax
je 0x402351
movq 0xb0b8(%rsp), %rax
movslq 0xb0b4(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0xe1010(%rip), %rsi     # 0x4e3353
callq 0x4010b8
cmpl $0x0, %eax
jne 0x402439
cmpl $0x3, 0xb0c0(%rsp)
je 0x402397
movq $0x520a68, %rax         # imm = 0x520A68
movq (%rax), %rdi
movq 0xb0b8(%rsp), %rax
movslq 0xb0b4(%rsp), %rcx
movq (%rax,%rcx,8), %rdx
leaq 0xe0f76(%rip), %rsi     # 0x4e32f6
movb $0x0, %al
callq 0x432b10
movl $0x1, 0xb0c4(%rsp)
jmp 0x402606
leaq 0x1040(%rsp), %rdi
xorl %esi, %esi
movl $0x1000, %edx           # imm = 0x1000
callq 0x4010a8
leaq 0x40(%rsp), %rax
movq %rax, (%rsp)
leaq 0xe0e99(%rip), %rdi     # 0x4e3254
callq 0x430fc0
movq (%rsp), %rdi
movq %rax, %rsi
callq 0x401020
movq %rax, %rdi
leaq 0xe0e83(%rip), %rsi     # 0x4e3259
callq 0x401060
leaq 0x1040(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x401020
leaq 0x1040(%rsp), %rdi
leaq 0xf0f80(%rip), %rsi     # 0x4f337c
callq 0x401060
leaq 0x1040(%rsp), %rdi
movq 0xb0b8(%rsp), %rax
movl 0xb0b4(%rsp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rsi
callq 0x401060
leaq 0x1040(%rsp), %rdi
callq 0x432f80
jmp 0x4025fb
movq 0xb0b8(%rsp), %rax
movslq 0xb0b4(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0xe0f06(%rip), %rsi     # 0x4e335a
callq 0x4010b8
cmpl $0x0, %eax
jne 0x40248f
leaq 0xa0b0(%rsp), %rsi
leaq 0xe0ef4(%rip), %rdi     # 0x4e3361
movb $0x0, %al
callq 0x432bd0
leaq 0x90a0(%rsp), %rsi
leaq 0xe0ee8(%rip), %rdi     # 0x4e336b
movb $0x0, %al
callq 0x432bd0
jmp 0x4025fb
movq 0xb0b8(%rsp), %rax
movslq 0xb0b4(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0xe0ecb(%rip), %rsi     # 0x4e3375
callq 0x4010b8
cmpl $0x0, %eax
je 0x4024dd
movq 0xb0b8(%rsp), %rax
movslq 0xb0b4(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0xe0eaa(%rip), %rsi     # 0x4e3379
callq 0x4010b8
cmpl $0x0, %eax
jne 0x402568
cmpl $0x3, 0xb0c0(%rsp)
je 0x402523
movq $0x520a68, %rax         # imm = 0x520A68
movq (%rax), %rdi
movq 0xb0b8(%rsp), %rax
movslq 0xb0b4(%rsp), %rcx
movq (%rax,%rcx,8), %rdx
leaq 0xe0dea(%rip), %rsi     # 0x4e32f6
movb $0x0, %al
callq 0x432b10
movl $0x1, 0xb0c4(%rsp)
jmp 0x402606
movq 0xb0b8(%rsp), %rax
movq 0x10(%rax), %rdi
callq 0x430790
movl %eax, 0x3c(%rsp)
movl 0x3c(%rsp), %edi
callq 0x402b40
movq %rax, 0x30(%rsp)
movq 0x30(%rsp), %rsi
leaq 0xe0e4e(%rip), %rdi     # 0x4e33a0
movb $0x0, %al
callq 0x432bd0
movq 0x30(%rsp), %rdi
callq 0x451280
jmp 0x4025fb
movq 0xb0b8(%rsp), %rax
movslq 0xb0b4(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0xe0dff(%rip), %rsi     # 0x4e3382
callq 0x4010b8
cmpl $0x0, %eax
jne 0x4025e3
cmpl $0x3, 0xb0c0(%rsp)
je 0x4025d0
movq $0x520a68, %rax         # imm = 0x520A68
movq (%rax), %rdi
movq 0xb0b8(%rsp), %rax
movslq 0xb0b4(%rsp), %rcx
movq (%rax,%rcx,8), %rdx
leaq 0xe0d3a(%rip), %rsi     # 0x4e32f6
movb $0x0, %al
callq 0x432b10
movl $0x1, 0xb0c4(%rsp)
jmp 0x402606
movq 0xb0b8(%rsp), %rax
movq 0x10(%rax), %rdi
callq 0x402bc0
jmp 0x4025fb
jmp 0x4025e5
movl 0xb0b4(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xb0b4(%rsp)
jmp 0x401af5
movl $0x0, 0xb0c4(%rsp)
movl 0xb0c4(%rsp), %eax
addq $0xb0c8, %rsp           # imm = 0xB0C8
retq
nopw %cs:(%rax,%rax)