// File: /workspace/github_c_makefile_star2_O0/sasairc[P]clangsay/src/libbenly/src/cmd.c
// Function: exec_cmd
int exec_cmd(cmd_t* cmd, int ret, int in_fd)
{
    int         status  = 0,
                fd[2]   = {0};

    pid_t       pid     = 0;

    /*
     * pipe (last)
     */
    if (cmd->prev != NULL) {
        if (cmd->prev->type == TPIPE && cmd->type != TPIPE) {
            redirect(in_fd, STDIN_FILENO);
            if (cmd->io != NULL) {
                if (file_redirect(cmd) < 0)
                    exit(1);
            }
            if (cmd->args[0][0] == '.'  &&
                        (cmd->args[0][1] == '/' || cmd->args[0][1] == '.')) {
                if (check_file_stat(cmd, 0, S_IEXEC) < 0)
                    exit(1);
            }
            execvp(cmd->args[0], cmd->args);
            fprintf(stderr, "command not found: %s\n",
                    cmd->args[0]);

            exit(errno);
        }
    }

    /*
     * command
     */
    if (cmd->type != TPIPE) {
        switch (pid = fork()) {
            case    -1:
                fprintf(stderr, "fork() failure");

                return errno;
            case    0:
                if (cmd->io != NULL) {
                    if (file_redirect(cmd) < 0)
                        exit(1);
                }
                if (cmd->args[0][0] == '.'  &&
                            (cmd->args[0][1] == '/' || cmd->args[0][1] == '.')) {
                    if (check_file_stat(cmd, 0, S_IEXEC) < 0)
                        exit(1);
                }
                execvp(cmd->args[0], cmd->args);
                fprintf(stderr, "command not found: %s\n",
                        cmd->args[0]);

                exit(errno);
            default:
                if (waitpid(pid, &status, 0) < 0)
                    perror("waitpid");

                ret += WEXITSTATUS(status);
                if (cmd->next != NULL) {
                    /*
                     * 1. &&
                     * 2. ||
                     * 3. ;
                     */
                    if (ret == 0 && cmd->type == TAND)
                        exec_cmd(cmd->next, ret, STDIN_FILENO);
                    else if (ret != 0 && cmd->type == TOR)
                        exec_cmd(cmd->next, ret, STDIN_FILENO);
                    else if (cmd->type == TPAREN || cmd->type == TCOM)
                        exec_cmd(cmd->next, 0, STDIN_FILENO);

                    /*
                     * 1. a && b && c
                     * 2. a || b || c
                     */
                    if ((cmd->type == TAND && ret != 0) || (cmd->type == TOR && ret == 0)) {
                        cmd = cmd->next;
                        switch (cmd->prev->type) {
                            case    TAND:
                                while (cmd->next != NULL &&
                                        (cmd->type == TPIPE || cmd->type == TAND))
                                    cmd = cmd->next;
                                break;
                            case    TOR:
                                while (cmd->next != NULL &&
                                        (cmd->type == TPIPE || cmd->type == TOR))
                                    cmd = cmd->next;
                                break;
                        }
                        if (cmd->next != NULL)
                            exec_cmd(cmd->next, 0, STDIN_FILENO);
                    }
                }

                return ret;
        }
    }

    /*
     * pipe
     */
    if (cmd->prev != NULL) {
        if (cmd->prev->type != TPIPE)
            pid = getpid();
    } else {
        pid= getpid();
    }
    switch (fork()) {
        case    -1:
            fprintf(stderr, "fork() failure");

            return errno;
        case    0:
            if (pipe(fd) < 0) {
                fprintf(stderr, "pipe() failure\n");

                exit(errno);
            }
            switch (fork()) {
                case    -1:
                    fprintf(stderr, "fork() failure\n");

                    exit(1);
                case    0:
                    if (cmd->io != NULL) {
                        if (file_redirect(cmd) < 0)
                            exit(1);
                    } else {
                        close(fd[0]);
                        redirect(in_fd, STDIN_FILENO);
                    }
                    redirect(fd[1], STDOUT_FILENO);
                    if (cmd->args[0][0] == '.'  &&
                                (cmd->args[0][1] == '/' || cmd->args[0][1] == '.')) {
                        if (check_file_stat(cmd, 0, S_IEXEC) < 0)
                            exit(1);
                    }
                    execvp(cmd->args[0], cmd->args);
                    fprintf(stderr, "command not found: %s\n",
                            cmd->args[0]);

                    exit(errno);
                default:
                    close(fd[1]);
                    close(in_fd);
                    if (cmd->next != NULL)
                        exec_cmd(cmd->next, ret, fd[0]);

                    exit(1);
            }
        default:
            status = mwait();
            if (pid == getpid()) {
                while (cmd->next != NULL && cmd->type == TPIPE)
                    cmd = cmd->next;

                ret += WEXITSTATUS(status);
                if (cmd->next != NULL) {
                    /*
                     * 1. &&
                     * 2. ||
                     * 3. ;
                     */
                    if (ret == 0 && cmd->type == TAND)
                        exec_cmd(cmd->next, ret, STDIN_FILENO);
                    else if (ret != 0 && cmd->type == TOR)
                        exec_cmd(cmd->next, ret, STDIN_FILENO);
                    else if (cmd->type == TPAREN || cmd->type == TCOM)
                        exec_cmd(cmd->next, 0, STDIN_FILENO);

                    /*
                     * 1. a | b && c && d
                     * 2. a | b || c || d
                     */
                    if ((cmd->type == TAND && ret != 0) || (cmd->type == TOR && ret == 0)) {
                        cmd = cmd->next;
                        switch (cmd->prev->type) {
                            case    TAND:
                                while (cmd->next != NULL &&
                                        (cmd->type == TPIPE || cmd->type == TAND))
                                    cmd = cmd->next;
                                break;
                            case    TOR:
                                while (cmd->next != NULL &&
                                        (cmd->type == TPIPE || cmd->type == TOR))
                                    cmd = cmd->next;
                                break;
                        }
                        if (cmd->next != NULL)
                            exec_cmd(cmd->next, 0, STDIN_FILENO);
                    }
                }
            } else {
                exit(0);
            }
    }

    return ret;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movl %edx, -0x18(%rbp)
movl $0x0, -0x1c(%rbp)
leaq -0x24(%rbp), %rdi
xorl %esi, %esi
movl $0x8, %edx
callq 0x2050
movl $0x0, -0x28(%rbp)
movq -0x10(%rbp), %rax
cmpq $0x0, 0x20(%rax)
je 0x39f1
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rax
cmpl $0x3, (%rax)
jne 0x39ef
movq -0x10(%rbp), %rax
cmpl $0x3, (%rax)
je 0x39ef
movl -0x18(%rbp), %edi
xorl %esi, %esi
callq 0x40e0
movq -0x10(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x394c
movq -0x10(%rbp), %rdi
callq 0x3570
cmpl $0x0, %eax
jge 0x394a
movl $0x1, %edi
callq 0x20c0
jmp 0x394c
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
movsbl (%rax), %eax
cmpl $0x2e, %eax
jne 0x39a8
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
movsbl 0x1(%rax), %eax
cmpl $0x2f, %eax
je 0x3987
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
movsbl 0x1(%rax), %eax
cmpl $0x2e, %eax
jne 0x39a8
movq -0x10(%rbp), %rdi
xorl %esi, %esi
movl $0x40, %edx
callq 0x3760
cmpl $0x0, %eax
jge 0x39a6
movl $0x1, %edi
callq 0x20c0
jmp 0x39a8
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rdi
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x20b0
movq 0x13621(%rip), %rax     # 0x16fe8
movq (%rax), %rdi
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rdx
leaq 0xe67b(%rip), %rsi      # 0x12057
movb $0x0, %al
callq 0x23f0
callq 0x2350
movl (%rax), %edi
callq 0x20c0
jmp 0x39f1
movq -0x10(%rbp), %rax
cmpl $0x3, (%rax)
je 0x3ccf
callq 0x23b0
movl %eax, -0x28(%rbp)
movl %eax, %ecx
movl %ecx, -0x2c(%rbp)
subl $-0x1, %eax
je 0x3a1e
jmp 0x3a12
movl -0x2c(%rbp), %eax
testl %eax, %eax
je 0x3a45
jmp 0x3b0d
movq 0x135c3(%rip), %rax     # 0x16fe8
movq (%rax), %rdi
leaq 0xe63f(%rip), %rsi      # 0x1206e
movb $0x0, %al
callq 0x23f0
callq 0x2350
movl (%rax), %eax
movl %eax, -0x4(%rbp)
jmp 0x40cc
movq -0x10(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x3a6a
movq -0x10(%rbp), %rdi
callq 0x3570
cmpl $0x0, %eax
jge 0x3a68
movl $0x1, %edi
callq 0x20c0
jmp 0x3a6a
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
movsbl (%rax), %eax
cmpl $0x2e, %eax
jne 0x3ac6
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
movsbl 0x1(%rax), %eax
cmpl $0x2f, %eax
je 0x3aa5
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
movsbl 0x1(%rax), %eax
cmpl $0x2e, %eax
jne 0x3ac6
movq -0x10(%rbp), %rdi
xorl %esi, %esi
movl $0x40, %edx
callq 0x3760
cmpl $0x0, %eax
jge 0x3ac4
movl $0x1, %edi
callq 0x20c0
jmp 0x3ac6
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rdi
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x20b0
movq 0x13503(%rip), %rax     # 0x16fe8
movq (%rax), %rdi
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rdx
leaq 0xe55d(%rip), %rsi      # 0x12057
movb $0x0, %al
callq 0x23f0
callq 0x2350
movl (%rax), %edi
callq 0x20c0
movl -0x28(%rbp), %edi
leaq -0x1c(%rbp), %rsi
xorl %edx, %edx
callq 0x2320
cmpl $0x0, %eax
jge 0x3b2c
leaq 0xe556(%rip), %rdi      # 0x1207d
callq 0x23e0
movl -0x1c(%rbp), %eax
andl $0xff00, %eax           # imm = 0xFF00
sarl $0x8, %eax
addl -0x14(%rbp), %eax
movl %eax, -0x14(%rbp)
movq -0x10(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0x3cc4
cmpl $0x0, -0x14(%rbp)
jne 0x3b6f
movq -0x10(%rbp), %rax
cmpl $0x4, (%rax)
jne 0x3b6f
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
movl -0x14(%rbp), %esi
xorl %edx, %edx
callq 0x38c0
jmp 0x3bb9
cmpl $0x0, -0x14(%rbp)
je 0x3b92
movq -0x10(%rbp), %rax
cmpl $0x5, (%rax)
jne 0x3b92
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
movl -0x14(%rbp), %esi
xorl %edx, %edx
callq 0x38c0
jmp 0x3bb7
movq -0x10(%rbp), %rax
cmpl $0x2, (%rax)
je 0x3ba4
movq -0x10(%rbp), %rax
cmpl $0x1, (%rax)
jne 0x3bb5
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
xorl %edx, %edx
movl %edx, %esi
callq 0x38c0
jmp 0x3bb7
jmp 0x3bb9
movq -0x10(%rbp), %rax
cmpl $0x4, (%rax)
jne 0x3bc8
cmpl $0x0, -0x14(%rbp)
jne 0x3bdf
movq -0x10(%rbp), %rax
cmpl $0x5, (%rax)
jne 0x3cc2
cmpl $0x0, -0x14(%rbp)
jne 0x3cc2
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rax
movl (%rax), %eax
movl %eax, -0x30(%rbp)
subl $0x4, %eax
je 0x3c0c
jmp 0x3bff
movl -0x30(%rbp), %eax
subl $0x5, %eax
je 0x3c58
jmp 0x3ca4
jmp 0x3c0e
movq -0x10(%rbp), %rcx
xorl %eax, %eax
cmpq $0x0, 0x18(%rcx)
movb %al, -0x31(%rbp)
je 0x3c3f
movq -0x10(%rbp), %rcx
movb $0x1, %al
cmpl $0x3, (%rcx)
movb %al, -0x32(%rbp)
je 0x3c39
movq -0x10(%rbp), %rax
cmpl $0x4, (%rax)
sete %al
movb %al, -0x32(%rbp)
movb -0x32(%rbp), %al
movb %al, -0x31(%rbp)
movb -0x31(%rbp), %al
testb $0x1, %al
jne 0x3c48
jmp 0x3c56
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x10(%rbp)
jmp 0x3c0e
jmp 0x3ca4
jmp 0x3c5a
movq -0x10(%rbp), %rcx
xorl %eax, %eax
cmpq $0x0, 0x18(%rcx)
movb %al, -0x33(%rbp)
je 0x3c8b
movq -0x10(%rbp), %rcx
movb $0x1, %al
cmpl $0x3, (%rcx)
movb %al, -0x34(%rbp)
je 0x3c85
movq -0x10(%rbp), %rax
cmpl $0x5, (%rax)
sete %al
movb %al, -0x34(%rbp)
movb -0x34(%rbp), %al
movb %al, -0x33(%rbp)
movb -0x33(%rbp), %al
testb $0x1, %al
jne 0x3c94
jmp 0x3ca2
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x10(%rbp)
jmp 0x3c5a
jmp 0x3ca4
movq -0x10(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0x3cc0
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
xorl %edx, %edx
movl %edx, %esi
callq 0x38c0
jmp 0x3cc2
jmp 0x3cc4
movl -0x14(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x40cc
movq -0x10(%rbp), %rax
cmpq $0x0, 0x20(%rax)
je 0x3cf1
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rax
cmpl $0x3, (%rax)
je 0x3cef
callq 0x2130
movl %eax, -0x28(%rbp)
jmp 0x3cf9
callq 0x2130
movl %eax, -0x28(%rbp)
callq 0x23b0
movl %eax, %ecx
movl %ecx, -0x38(%rbp)
subl $-0x1, %eax
je 0x3d16
jmp 0x3d0a
movl -0x38(%rbp), %eax
testl %eax, %eax
je 0x3d3d
jmp 0x3ecd
movq 0x132cb(%rip), %rax     # 0x16fe8
movq (%rax), %rdi
leaq 0xe347(%rip), %rsi      # 0x1206e
movb $0x0, %al
callq 0x23f0
callq 0x2350
movl (%rax), %eax
movl %eax, -0x4(%rbp)
jmp 0x40cc
leaq -0x24(%rbp), %rdi
callq 0x2220
cmpl $0x0, %eax
jge 0x3d6f
movq 0x13296(%rip), %rax     # 0x16fe8
movq (%rax), %rdi
leaq 0xe329(%rip), %rsi      # 0x12085
movb $0x0, %al
callq 0x23f0
callq 0x2350
movl (%rax), %edi
callq 0x20c0
callq 0x23b0
movl %eax, %ecx
movl %ecx, -0x3c(%rbp)
subl $-0x1, %eax
je 0x3d8c
jmp 0x3d80
movl -0x3c(%rbp), %eax
testl %eax, %eax
je 0x3dae
jmp 0x3e95
movq 0x13255(%rip), %rax     # 0x16fe8
movq (%rax), %rdi
leaq 0xe2f8(%rip), %rsi      # 0x12095
movb $0x0, %al
callq 0x23f0
movl $0x1, %edi
callq 0x20c0
movq -0x10(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x3dd3
movq -0x10(%rbp), %rdi
callq 0x3570
cmpl $0x0, %eax
jge 0x3dd1
movl $0x1, %edi
callq 0x20c0
jmp 0x3de5
movl -0x24(%rbp), %edi
callq 0x2060
movl -0x18(%rbp), %edi
xorl %esi, %esi
callq 0x40e0
movl -0x20(%rbp), %edi
movl $0x1, %esi
callq 0x40e0
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
movsbl (%rax), %eax
cmpl $0x2e, %eax
jne 0x3e4e
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
movsbl 0x1(%rax), %eax
cmpl $0x2f, %eax
je 0x3e2d
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
movsbl 0x1(%rax), %eax
cmpl $0x2e, %eax
jne 0x3e4e
movq -0x10(%rbp), %rdi
xorl %esi, %esi
movl $0x40, %edx
callq 0x3760
cmpl $0x0, %eax
jge 0x3e4c
movl $0x1, %edi
callq 0x20c0
jmp 0x3e4e
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rdi
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x20b0
movq 0x1317b(%rip), %rax     # 0x16fe8
movq (%rax), %rdi
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rdx
leaq 0xe1d5(%rip), %rsi      # 0x12057
movb $0x0, %al
callq 0x23f0
callq 0x2350
movl (%rax), %edi
callq 0x20c0
movl -0x20(%rbp), %edi
callq 0x2060
movl -0x18(%rbp), %edi
callq 0x2060
movq -0x10(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0x3ec3
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
movl -0x14(%rbp), %esi
movl -0x24(%rbp), %edx
callq 0x38c0
movl $0x1, %edi
callq 0x20c0
callq 0x4120
movl %eax, -0x1c(%rbp)
movl -0x28(%rbp), %eax
movl %eax, -0x40(%rbp)
callq 0x2130
movl %eax, %ecx
movl -0x40(%rbp), %eax
cmpl %ecx, %eax
jne 0x40bd
jmp 0x3eef
movq -0x10(%rbp), %rcx
xorl %eax, %eax
cmpq $0x0, 0x18(%rcx)
movb %al, -0x41(%rbp)
je 0x3f0c
movq -0x10(%rbp), %rax
cmpl $0x3, (%rax)
sete %al
movb %al, -0x41(%rbp)
movb -0x41(%rbp), %al
testb $0x1, %al
jne 0x3f15
jmp 0x3f23
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x10(%rbp)
jmp 0x3eef
movl -0x1c(%rbp), %eax
andl $0xff00, %eax           # imm = 0xFF00
sarl $0x8, %eax
addl -0x14(%rbp), %eax
movl %eax, -0x14(%rbp)
movq -0x10(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0x40bb
cmpl $0x0, -0x14(%rbp)
jne 0x3f66
movq -0x10(%rbp), %rax
cmpl $0x4, (%rax)
jne 0x3f66
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
movl -0x14(%rbp), %esi
xorl %edx, %edx
callq 0x38c0
jmp 0x3fb0
cmpl $0x0, -0x14(%rbp)
je 0x3f89
movq -0x10(%rbp), %rax
cmpl $0x5, (%rax)
jne 0x3f89
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
movl -0x14(%rbp), %esi
xorl %edx, %edx
callq 0x38c0
jmp 0x3fae
movq -0x10(%rbp), %rax
cmpl $0x2, (%rax)
je 0x3f9b
movq -0x10(%rbp), %rax
cmpl $0x1, (%rax)
jne 0x3fac
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
xorl %edx, %edx
movl %edx, %esi
callq 0x38c0
jmp 0x3fae
jmp 0x3fb0
movq -0x10(%rbp), %rax
cmpl $0x4, (%rax)
jne 0x3fbf
cmpl $0x0, -0x14(%rbp)
jne 0x3fd6
movq -0x10(%rbp), %rax
cmpl $0x5, (%rax)
jne 0x40b9
cmpl $0x0, -0x14(%rbp)
jne 0x40b9
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rax
movl (%rax), %eax
movl %eax, -0x48(%rbp)
subl $0x4, %eax
je 0x4003
jmp 0x3ff6
movl -0x48(%rbp), %eax
subl $0x5, %eax
je 0x404f
jmp 0x409b
jmp 0x4005
movq -0x10(%rbp), %rcx
xorl %eax, %eax
cmpq $0x0, 0x18(%rcx)
movb %al, -0x49(%rbp)
je 0x4036
movq -0x10(%rbp), %rcx
movb $0x1, %al
cmpl $0x3, (%rcx)
movb %al, -0x4a(%rbp)
je 0x4030
movq -0x10(%rbp), %rax
cmpl $0x4, (%rax)
sete %al
movb %al, -0x4a(%rbp)
movb -0x4a(%rbp), %al
movb %al, -0x49(%rbp)
movb -0x49(%rbp), %al
testb $0x1, %al
jne 0x403f
jmp 0x404d
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x10(%rbp)
jmp 0x4005
jmp 0x409b
jmp 0x4051
movq -0x10(%rbp), %rcx
xorl %eax, %eax
cmpq $0x0, 0x18(%rcx)
movb %al, -0x4b(%rbp)
je 0x4082
movq -0x10(%rbp), %rcx
movb $0x1, %al
cmpl $0x3, (%rcx)
movb %al, -0x4c(%rbp)
je 0x407c
movq -0x10(%rbp), %rax
cmpl $0x5, (%rax)
sete %al
movb %al, -0x4c(%rbp)
movb -0x4c(%rbp), %al
movb %al, -0x4b(%rbp)
movb -0x4b(%rbp), %al
testb $0x1, %al
jne 0x408b
jmp 0x4099
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x10(%rbp)
jmp 0x4051
jmp 0x409b
movq -0x10(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0x40b7
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
xorl %edx, %edx
movl %edx, %esi
callq 0x38c0
jmp 0x40b9
jmp 0x40bb
jmp 0x40c4
xorl %edi, %edi
callq 0x20c0
jmp 0x40c6
movl -0x14(%rbp), %eax
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x50, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)