// File: ParkerLab[P]cta/src/cta.cpp
// Function: main
int main(int argc, char **argv)
{
    int c, option_index = 0;
    bool verbose = 0;

    long long int max_edit_distance = 1;
    long long int fudge = 0;
    long long int trim_start = 0;
    long long int rc_length = 20;
    std::string input_filename1;
    std::string input_filename2;
    std::string barcode_filename;
	std::string selected_barcode_filename;
    std::string output_filename1;
    std::string output_filename2;

    static struct option long_options[] = {
        {"help", no_argument, NULL, 'h'},
        {"verbose", no_argument, NULL, 'v'},
        {"version", no_argument, NULL, 0},
        {"max-edit-distance", required_argument, NULL, 'd'},
        {"fudge", required_argument, NULL, 'f'},
        {"trim-from-start", required_argument, NULL, 't'},
        {"rc-length", required_argument, NULL, 'r'},
        {"append-barcode", required_argument, NULL, 'a'},
		{"selected-barcodes", required_argument, NULL, 'x'},
        {0, 0, 0, 0}
    };

    // parse the command line arguments
    while ((c = getopt_long(argc, argv, "d:f:t:r:a:x:vh?", long_options, &option_index)) != -1) {
        switch (c) {
        case 'h':
        case '?':
            print_usage();
            exit(1);
        case 'v':
            verbose = true;
            break;
        case 'd':
            max_edit_distance = std::stoll(optarg);
            break;
        case 'f':
            fudge = std::stoll(optarg);
            break;
        case 's':
            trim_start = std::stoll(optarg);
            break;
        case 'r':
            rc_length = std::stoll(optarg);
            break;
        case 'a':
            barcode_filename = optarg;
            break;
		case 'x':
			selected_barcode_filename = optarg;
			break;
        case 0:
            if (long_options[option_index].flag != 0){
                break;
            }

            if (long_options[option_index].name == std::string("version")) {
                std::cout << version_string() << std::endl;
                exit(1);
            }

        default:
            print_usage();
            exit(1);
        }
    }

    if (argc < (optind + 2)) {
        print_usage();
        exit(1);
    }

    input_filename1 = argv[optind];
    input_filename2 = argv[optind + 1];

    if (argc > (optind + 2)) {
        if (argc == optind + 4) {
            output_filename1 = argv[optind + 2];
            output_filename2 = argv[optind + 3];
        } else {
            print_usage();
            exit(1);
        }
    }

    bio::file_source input_file1(input_filename1);
    bio::stream<bio::file_source> input_stream1(input_file1);

    bio::file_source input_file2(input_filename2);
    bio::stream<bio::file_source> input_stream2(input_file2);

    bio::file_source barcode_file(barcode_filename);
    bio::stream<bio::file_source> barcode_stream(barcode_file);

    bio::filtering_stream<bio::input> in1;
    if (is_gzipped_file(input_filename1)) {
        in1.push(bio::gzip_decompressor());
    }
    in1.push(input_stream1);

    bio::filtering_stream<bio::input> in2;
    if (is_gzipped_file(input_filename2)) {
        in2.push(bio::gzip_decompressor());
    }
    in2.push(input_stream2);

    bio::filtering_stream<bio::input> inBarcode;
    if (!barcode_filename.empty() && is_gzipped_file(barcode_filename)) {
        inBarcode.push(bio::gzip_decompressor());
    }
    inBarcode.push(barcode_stream);

    if (output_filename1.empty()) {
        output_filename1 = make_trimmed_filename(input_filename1);
    }

    if (output_filename2.empty()) {
        output_filename2 = make_trimmed_filename(input_filename2);
    }

    if (verbose) {
        std::cout << "Writing to " << output_filename1 << " and " << output_filename2 << "...\n";
    }

    std::ofstream output_file1(output_filename1, std::ios_base::out | std::ios_base::binary);
    std::ofstream output_file2(output_filename2, std::ios_base::out | std::ios_base::binary);

    bio::filtering_stream<bio::output> out1;
    if (is_gzipped_filename(output_filename1)) {
        out1.push(bio::gzip_compressor(bio::gzip_params(bio::gzip::best_speed)));
    }
    out1.push(output_file1);

    bio::filtering_stream<bio::output> out2;
    if (is_gzipped_filename(output_filename2)) {
        out2.push(bio::gzip_compressor(bio::gzip_params(bio::gzip::best_speed)));
    }
    out2.push(output_file2);

    FASTQRecord record1;
    FASTQRecord record2;
    FASTQRecord recordBarcode;

	if (!barcode_filename.empty()) {
		if (!selected_barcode_filename.empty()) {
			// Read list of selected barcodes
			std::map<std::string,bool> selected_barcodes;

			// Get the contents of file in a vector
			bool result = getFileContent(selected_barcode_filename, selected_barcodes);

			// check is barcode is in selected barcodes, if yes, trim and append
			while ((in1 >> record1) && (in2 >> record2) && (inBarcode >> recordBarcode)) {
				std::string barcode = recordBarcode.sequence;
				if (selected_barcodes.count(barcode) > 0) {
					trim_pair(record1, record2, rc_length, max_edit_distance, fudge, trim_start, verbose);
					record1.append_barcode(barcode);
					record2.append_barcode(barcode);
					out1 << record1;
					out2 << record2;
				}
			}
		}
		else {
			// just trim and append barcode
			while ((in1 >> record1) && (in2 >> record2) && (inBarcode >> recordBarcode)) {
				std::string barcode = recordBarcode.sequence;
				trim_pair(record1, record2, rc_length, max_edit_distance, fudge, trim_start, verbose);
				record1.append_barcode(barcode);
				record2.append_barcode(barcode);
				out1 << record1;
				out2 << record2;
			}
		}
	}
	else {
		// just trim
		while ((in1 >> record1) && (in2 >> record2)){
			trim_pair(record1, record2, rc_length, max_edit_distance, fudge, trim_start, verbose);
			out1 << record1;
			out2 << record2;
		}
	}
    bio::close(out1);
    bio::close(out2);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1930, %rsp           # imm = 0x1930
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl $0x0, -0x18(%rbp)
movb $0x0, -0x19(%rbp)
movq $0x1, -0x28(%rbp)
movq $0x0, -0x30(%rbp)
movq $0x0, -0x38(%rbp)
movq $0x14, -0x40(%rbp)
leaq -0x60(%rbp), %rdi
callq 0xe8d0
leaq -0x80(%rbp), %rdi
callq 0xe8d0
leaq -0xa0(%rbp), %rdi
callq 0xe8d0
leaq -0xc0(%rbp), %rdi
callq 0xe8d0
leaq -0xe0(%rbp), %rdi
callq 0xe8d0
leaq -0x100(%rbp), %rdi
callq 0xe8d0
movl -0x8(%rbp), %edi
movq -0x10(%rbp), %rsi
leaq 0x50c52(%rip), %rdx     # 0x61936
leaq 0x81995(%rip), %rcx     # 0x92680
leaq -0x18(%rbp), %r8
callq 0xeab0
movl %eax, -0x14(%rbp)
cmpl $-0x1, %eax
je 0x112b2
movl -0x14(%rbp), %eax
movl %eax, -0x1784(%rbp)
testl %eax, %eax
je 0x11136
jmp 0x10d13
movl -0x1784(%rbp), %eax
subl $0x3f, %eax
je 0x10da7
jmp 0x10d24
movl -0x1784(%rbp), %eax
subl $0x61, %eax
je 0x110fc
jmp 0x10d35
movl -0x1784(%rbp), %eax
subl $0x64, %eax
je 0x10dd8
jmp 0x10d46
movl -0x1784(%rbp), %eax
subl $0x66, %eax
je 0x10ea1
jmp 0x10d57
movl -0x1784(%rbp), %eax
subl $0x68, %eax
je 0x10da7
jmp 0x10d64
movl -0x1784(%rbp), %eax
subl $0x72, %eax
je 0x11033
jmp 0x10d75
movl -0x1784(%rbp), %eax
subl $0x73, %eax
je 0x10f6a
jmp 0x10d86
movl -0x1784(%rbp), %eax
subl $0x76, %eax
je 0x10dcf
jmp 0x10d93
movl -0x1784(%rbp), %eax
subl $0x78, %eax
je 0x11119
jmp 0x1129c
callq 0x106b0
jmp 0x10dae
movl $0x1, %edi
callq 0xe7c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0x125aa
movb $0x1, -0x19(%rbp)
jmp 0x112ad
movq 0x81149(%rip), %rax     # 0x91f28
movq (%rax), %rax
movq %rax, -0x1798(%rbp)
leaq -0x131(%rbp), %rdi
movq %rdi, -0x1790(%rbp)
callq 0xeba0
movq -0x1798(%rbp), %rsi
movq -0x1790(%rbp), %rdx
leaq -0x130(%rbp), %rdi
callq 0x127c0
jmp 0x10e18
xorl %eax, %eax
movl %eax, %esi
leaq -0x130(%rbp), %rdi
movl $0xa, %edx
callq 0x13320
movq %rax, -0x17a0(%rbp)
jmp 0x10e36
movq -0x17a0(%rbp), %rax
movq %rax, -0x28(%rbp)
leaq -0x130(%rbp), %rdi
callq 0xe400
leaq -0x131(%rbp), %rdi
callq 0xe6b0
jmp 0x112ad
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0x10e90
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x130(%rbp), %rdi
callq 0xe400
leaq -0x131(%rbp), %rdi
callq 0xe6b0
jmp 0x125aa
movq 0x81080(%rip), %rax     # 0x91f28
movq (%rax), %rax
movq %rax, -0x17b0(%rbp)
leaq -0x159(%rbp), %rdi
movq %rdi, -0x17a8(%rbp)
callq 0xeba0
movq -0x17b0(%rbp), %rsi
movq -0x17a8(%rbp), %rdx
leaq -0x158(%rbp), %rdi
callq 0x127c0
jmp 0x10ee1
xorl %eax, %eax
movl %eax, %esi
leaq -0x158(%rbp), %rdi
movl $0xa, %edx
callq 0x13320
movq %rax, -0x17b8(%rbp)
jmp 0x10eff
movq -0x17b8(%rbp), %rax
movq %rax, -0x30(%rbp)
leaq -0x158(%rbp), %rdi
callq 0xe400
leaq -0x159(%rbp), %rdi
callq 0xe6b0
jmp 0x112ad
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0x10f59
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x158(%rbp), %rdi
callq 0xe400
leaq -0x159(%rbp), %rdi
callq 0xe6b0
jmp 0x125aa
movq 0x80fb7(%rip), %rax     # 0x91f28
movq (%rax), %rax
movq %rax, -0x17c8(%rbp)
leaq -0x181(%rbp), %rdi
movq %rdi, -0x17c0(%rbp)
callq 0xeba0
movq -0x17c8(%rbp), %rsi
movq -0x17c0(%rbp), %rdx
leaq -0x180(%rbp), %rdi
callq 0x127c0
jmp 0x10faa
xorl %eax, %eax
movl %eax, %esi
leaq -0x180(%rbp), %rdi
movl $0xa, %edx
callq 0x13320
movq %rax, -0x17d0(%rbp)
jmp 0x10fc8
movq -0x17d0(%rbp), %rax
movq %rax, -0x38(%rbp)
leaq -0x180(%rbp), %rdi
callq 0xe400
leaq -0x181(%rbp), %rdi
callq 0xe6b0
jmp 0x112ad
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0x11022
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x180(%rbp), %rdi
callq 0xe400
leaq -0x181(%rbp), %rdi
callq 0xe6b0
jmp 0x125aa
movq 0x80eee(%rip), %rax     # 0x91f28
movq (%rax), %rax
movq %rax, -0x17e0(%rbp)
leaq -0x1a9(%rbp), %rdi
movq %rdi, -0x17d8(%rbp)
callq 0xeba0
movq -0x17e0(%rbp), %rsi
movq -0x17d8(%rbp), %rdx
leaq -0x1a8(%rbp), %rdi
callq 0x127c0
jmp 0x11073
xorl %eax, %eax
movl %eax, %esi
leaq -0x1a8(%rbp), %rdi
movl $0xa, %edx
callq 0x13320
movq %rax, -0x17e8(%rbp)
jmp 0x11091
movq -0x17e8(%rbp), %rax
movq %rax, -0x40(%rbp)
leaq -0x1a8(%rbp), %rdi
callq 0xe400
leaq -0x1a9(%rbp), %rdi
callq 0xe6b0
jmp 0x112ad
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0x110eb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x1a8(%rbp), %rdi
callq 0xe400
leaq -0x1a9(%rbp), %rdi
callq 0xe6b0
jmp 0x125aa
movq 0x80e25(%rip), %rax     # 0x91f28
movq (%rax), %rsi
leaq -0xa0(%rbp), %rdi
callq 0xe8b0
jmp 0x11114
jmp 0x112ad
movq 0x80e08(%rip), %rax     # 0x91f28
movq (%rax), %rsi
leaq -0xc0(%rbp), %rdi
callq 0xe8b0
jmp 0x11131
jmp 0x112ad
movslq -0x18(%rbp), %rcx
leaq 0x8153f(%rip), %rax     # 0x92680
shlq $0x5, %rcx
addq %rcx, %rax
cmpq $0x0, 0x10(%rax)
je 0x11154
jmp 0x112ad
movslq -0x18(%rbp), %rax
shlq $0x5, %rax
leaq 0x8151d(%rip), %rcx     # 0x92680
movq (%rax,%rcx), %rax
movq %rax, -0x17f8(%rbp)
leaq -0x1d1(%rbp), %rdi
movq %rdi, -0x17f0(%rbp)
callq 0xeba0
movq -0x17f0(%rbp), %rdx
leaq 0x5074c(%rip), %rsi     # 0x618db
leaq -0x1d0(%rbp), %rdi
callq 0x127c0
jmp 0x1119d
movq -0x17f8(%rbp), %rdi
leaq -0x1d0(%rbp), %rsi
callq 0x13360
movb %al, -0x17f9(%rbp)
jmp 0x111b8
leaq -0x1d0(%rbp), %rdi
callq 0xe400
leaq -0x1d1(%rbp), %rdi
callq 0xe6b0
movb -0x17f9(%rbp), %al
testb $0x1, %al
jne 0x111df
jmp 0x1129a
leaq -0x1f8(%rbp), %rdi
callq 0x10570
jmp 0x111ed
movq 0x80d84(%rip), %rdi     # 0x91f78
leaq -0x1f8(%rbp), %rsi
callq 0xe580
movq %rax, -0x1808(%rbp)
jmp 0x11209
movq -0x1808(%rbp), %rdi
movq 0x80d09(%rip), %rsi     # 0x91f20
callq 0xe690
jmp 0x1121e
leaq -0x1f8(%rbp), %rdi
callq 0xe400
movl $0x1, %edi
callq 0xe7c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0x11266
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x1d0(%rbp), %rdi
callq 0xe400
leaq -0x1d1(%rbp), %rdi
callq 0xe6b0
jmp 0x125aa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x1f8(%rbp), %rdi
callq 0xe400
jmp 0x125aa
jmp 0x1129c
callq 0x106b0
jmp 0x112a3
movl $0x1, %edi
callq 0xe7c0
jmp 0x10cd6
movl -0x8(%rbp), %eax
movq 0x80ccc(%rip), %rcx     # 0x91f88
movl (%rcx), %ecx
addl $0x2, %ecx
cmpl %ecx, %eax
jge 0x112d6
callq 0x106b0
jmp 0x112cc
movl $0x1, %edi
callq 0xe7c0
movq -0x10(%rbp), %rax
movq 0x80ca7(%rip), %rcx     # 0x91f88
movslq (%rcx), %rcx
movq (%rax,%rcx,8), %rsi
leaq -0x60(%rbp), %rdi
callq 0xe8b0
jmp 0x112f3
movq -0x10(%rbp), %rax
movq 0x80c8a(%rip), %rcx     # 0x91f88
movslq (%rcx), %rcx
movq 0x8(%rax,%rcx,8), %rsi
leaq -0x80(%rbp), %rdi
callq 0xe8b0
jmp 0x11311
movl -0x8(%rbp), %eax
movq 0x80c6d(%rip), %rcx     # 0x91f88
movl (%rcx), %ecx
addl $0x2, %ecx
cmpl %ecx, %eax
jle 0x1138e
movl -0x8(%rbp), %eax
movq 0x80c5a(%rip), %rcx     # 0x91f88
movl (%rcx), %ecx
addl $0x4, %ecx
cmpl %ecx, %eax
jne 0x1137b
movq -0x10(%rbp), %rax
movq 0x80c46(%rip), %rcx     # 0x91f88
movslq (%rcx), %rcx
movq 0x10(%rax,%rcx,8), %rsi
leaq -0xe0(%rbp), %rdi
callq 0xe8b0
jmp 0x11358
movq -0x10(%rbp), %rax
movq 0x80c25(%rip), %rcx     # 0x91f88
movslq (%rcx), %rcx
movq 0x18(%rax,%rcx,8), %rsi
leaq -0x100(%rbp), %rdi
callq 0xe8b0
jmp 0x11379
jmp 0x1138c
callq 0x106b0
jmp 0x11382
movl $0x1, %edi
callq 0xe7c0
jmp 0x1138e
leaq -0x208(%rbp), %rdi
leaq -0x60(%rbp), %rsi
movl $0x8, %edx
callq 0x13390
jmp 0x113a5
leaq -0x3a8(%rbp), %rdi
leaq -0x208(%rbp), %rsi
movq $-0x1, %rcx
movq %rcx, %rdx
callq 0x133f0
jmp 0x113c4
leaq -0x3b8(%rbp), %rdi
leaq -0x80(%rbp), %rsi
movl $0x8, %edx
callq 0x13390
jmp 0x113db
leaq -0x558(%rbp), %rdi
leaq -0x3b8(%rbp), %rsi
movq $-0x1, %rcx
movq %rcx, %rdx
callq 0x133f0
jmp 0x113fa
leaq -0x568(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
movl $0x8, %edx
callq 0x13390
jmp 0x11414
leaq -0x708(%rbp), %rdi
leaq -0x568(%rbp), %rsi
movq $-0x1, %rcx
movq %rcx, %rdx
callq 0x133f0
jmp 0x11433
leaq -0x840(%rbp), %rdi
callq 0x134f0
jmp 0x11441
leaq -0x60(%rbp), %rdi
callq 0xeff0
movb %al, -0x1809(%rbp)
jmp 0x11452
movb -0x1809(%rbp), %al
testb $0x1, %al
jne 0x11461
jmp 0x11572
leaq -0x8e8(%rbp), %rdi
movl $0xf, %esi
movl $0x1000, %edx           # imm = 0x1000
callq 0x135d0
jmp 0x11479
xorl %eax, %eax
movl %eax, %r8d
leaq -0x840(%rbp), %rdi
leaq -0x8e8(%rbp), %rsi
movq $-0x1, %rcx
movq %rcx, %rdx
callq 0x13580
jmp 0x1149d
leaq -0x8e8(%rbp), %rdi
callq 0x136e0
jmp 0x11572
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0x1259e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0x12592
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0x12586
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0x1257a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0x1256e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0x12562
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0x12556
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x8e8(%rbp), %rdi
callq 0x136e0
jmp 0x12556
leaq -0x840(%rbp), %rdi
leaq -0x3a8(%rbp), %rsi
movq $-0x1, %rcx
movq %rcx, %rdx
callq 0x13720
jmp 0x11591
leaq -0xa20(%rbp), %rdi
callq 0x134f0
jmp 0x1159f
leaq -0x80(%rbp), %rdi
callq 0xeff0
movb %al, -0x180a(%rbp)
jmp 0x115b0
movb -0x180a(%rbp), %al
testb $0x1, %al
jne 0x115bf
jmp 0x11643
leaq -0xac8(%rbp), %rdi
movl $0xf, %esi
movl $0x1000, %edx           # imm = 0x1000
callq 0x135d0
jmp 0x115d7
xorl %eax, %eax
movl %eax, %r8d
leaq -0xa20(%rbp), %rdi
leaq -0xac8(%rbp), %rsi
movq $-0x1, %rcx
movq %rcx, %rdx
callq 0x13580
jmp 0x115fb
leaq -0xac8(%rbp), %rdi
callq 0x136e0
jmp 0x11643
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0x1254a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0xac8(%rbp), %rdi
callq 0x136e0
jmp 0x1254a
leaq -0xa20(%rbp), %rdi
leaq -0x558(%rbp), %rsi
movq $-0x1, %rcx
movq %rcx, %rdx
callq 0x13720
jmp 0x11662
leaq -0xc00(%rbp), %rdi
callq 0x134f0
jmp 0x11670
leaq -0xa0(%rbp), %rdi
callq 0xeac0
testb $0x1, %al
jne 0x1172b
leaq -0xa0(%rbp), %rdi
callq 0xeff0
movb %al, -0x180b(%rbp)
jmp 0x11698
movb -0x180b(%rbp), %al
testb $0x1, %al
jne 0x116a7
jmp 0x1172b
leaq -0xca8(%rbp), %rdi
movl $0xf, %esi
movl $0x1000, %edx           # imm = 0x1000
callq 0x135d0
jmp 0x116bf
xorl %eax, %eax
movl %eax, %r8d
leaq -0xc00(%rbp), %rdi
leaq -0xca8(%rbp), %rsi
movq $-0x1, %rcx
movq %rcx, %rdx
callq 0x13580
jmp 0x116e3
leaq -0xca8(%rbp), %rdi
callq 0x136e0
jmp 0x1172b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0x1253e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0xca8(%rbp), %rdi
callq 0x136e0
jmp 0x1253e
leaq -0xc00(%rbp), %rdi
leaq -0x708(%rbp), %rsi
movq $-0x1, %rcx
movq %rcx, %rdx
callq 0x13720
jmp 0x1174a
leaq -0xe0(%rbp), %rdi
callq 0xeac0
testb $0x1, %al
jne 0x1175c
jmp 0x1178d
leaq -0xcc8(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0xf260
jmp 0x1176e
leaq -0xe0(%rbp), %rdi
leaq -0xcc8(%rbp), %rsi
callq 0xe7d0
leaq -0xcc8(%rbp), %rdi
callq 0xe400
leaq -0x100(%rbp), %rdi
callq 0xeac0
testb $0x1, %al
jne 0x1179f
jmp 0x117d0
leaq -0xce8(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0xf260
jmp 0x117b1
leaq -0x100(%rbp), %rdi
leaq -0xce8(%rbp), %rsi
callq 0xe7d0
leaq -0xce8(%rbp), %rdi
callq 0xe400
testb $0x1, -0x19(%rbp)
je 0x11861
movq 0x80797(%rip), %rdi     # 0x91f78
leaq 0x5015e(%rip), %rsi     # 0x61946
callq 0xe610
movq %rax, -0x1818(%rbp)
jmp 0x117f6
movq -0x1818(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0xe580
movq %rax, -0x1820(%rbp)
jmp 0x11812
movq -0x1820(%rbp), %rdi
leaq 0x50132(%rip), %rsi     # 0x61952
callq 0xe610
movq %rax, -0x1828(%rbp)
jmp 0x1182e
movq -0x1828(%rbp), %rdi
leaq -0x100(%rbp), %rsi
callq 0xe580
movq %rax, -0x1830(%rbp)
jmp 0x1184a
movq -0x1830(%rbp), %rdi
leaq 0x50100(%rip), %rsi     # 0x61958
callq 0xe610
jmp 0x1185f
jmp 0x11861
movl $0x10, %edi
movl $0x4, %esi
callq 0x13770
movl %eax, -0x1834(%rbp)
jmp 0x11878
movl -0x1834(%rbp), %edx
leaq -0xee8(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0xec70
jmp 0x11893
movl $0x10, %edi
movl $0x4, %esi
callq 0x13770
movl %eax, -0x1838(%rbp)
jmp 0x118aa
movl -0x1838(%rbp), %edx
leaq -0x10e8(%rbp), %rdi
leaq -0x100(%rbp), %rsi
callq 0xec70
jmp 0x118c5
leaq -0x1218(%rbp), %rdi
callq 0x13790
jmp 0x118d3
leaq -0xe0(%rbp), %rdi
callq 0xf180
movb %al, -0x1839(%rbp)
jmp 0x118e7
movb -0x1839(%rbp), %al
testb $0x1, %al
jne 0x118f6
jmp 0x11b4f
movq 0x8065b(%rip), %rax     # 0x91f58
movl (%rax), %eax
movl %eax, -0x1854(%rbp)
movq 0x80604(%rip), %rax     # 0x91f10
movl (%rax), %eax
movl %eax, -0x1850(%rbp)
movq 0x80675(%rip), %rax     # 0x91f90
movl (%rax), %eax
movl %eax, -0x184c(%rbp)
leaq -0x12f9(%rbp), %rdi
movq %rdi, -0x1848(%rbp)
callq 0xeba0
movq -0x1848(%rbp), %rdx
leaq 0x4fbd7(%rip), %rsi     # 0x6151b
leaq -0x12f8(%rbp), %rdi
callq 0x127c0
jmp 0x11952
leaq -0x1321(%rbp), %rdi
movq %rdi, -0x1860(%rbp)
callq 0xeba0
movq -0x1860(%rbp), %rdx
leaq 0x4fba8(%rip), %rsi     # 0x6151b
leaq -0x1320(%rbp), %rdi
callq 0x127c0
jmp 0x11981
movl -0x184c(%rbp), %r9d
movl -0x1850(%rbp), %edx
movl -0x1854(%rbp), %esi
movq %rsp, %rax
leaq -0x1320(%rbp), %rcx
movq %rcx, 0x8(%rax)
leaq -0x12f8(%rbp), %rcx
movq %rcx, (%rax)
movq $0x0, 0x10(%rax)
leaq -0x12d8(%rbp), %rdi
movl $0xf, %ecx
movl $0x8, %r8d
callq 0x13870
jmp 0x119cd
leaq -0x1278(%rbp), %rdi
leaq -0x12d8(%rbp), %rsi
movl $0x1000, %edx           # imm = 0x1000
callq 0x13930
jmp 0x119e7
xorl %eax, %eax
movl %eax, %r8d
leaq -0x1218(%rbp), %rdi
leaq -0x1278(%rbp), %rsi
movq $-0x1, %rcx
movq %rcx, %rdx
callq 0x13820
jmp 0x11a0b
leaq -0x1278(%rbp), %rdi
callq 0x13d10
leaq -0x12d8(%rbp), %rdi
callq 0x13d50
leaq -0x1320(%rbp), %rdi
callq 0xe400
leaq -0x1321(%rbp), %rdi
callq 0xe6b0
leaq -0x12f8(%rbp), %rdi
callq 0xe400
leaq -0x12f9(%rbp), %rdi
callq 0xe6b0
jmp 0x11b4f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0x12532
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0x12526
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0x1251a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0x11b3e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0x11b26
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0x11b1a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0x11b0e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x1278(%rbp), %rdi
callq 0x13d10
leaq -0x12d8(%rbp), %rdi
callq 0x13d50
leaq -0x1320(%rbp), %rdi
callq 0xe400
leaq -0x1321(%rbp), %rdi
callq 0xe6b0
leaq -0x12f8(%rbp), %rdi
callq 0xe400
leaq -0x12f9(%rbp), %rdi
callq 0xe6b0
jmp 0x1251a
leaq -0x1218(%rbp), %rdi
leaq -0xee8(%rbp), %rsi
movq $-0x1, %rcx
movq %rcx, %rdx
callq 0x13d80
jmp 0x11b6e
leaq -0x1458(%rbp), %rdi
callq 0x13790
jmp 0x11b7c
leaq -0x100(%rbp), %rdi
callq 0xf180
movb %al, -0x1861(%rbp)
jmp 0x11b90
movb -0x1861(%rbp), %al
testb $0x1, %al
jne 0x11b9f
jmp 0x11dca
movq 0x803b2(%rip), %rax     # 0x91f58
movl (%rax), %eax
movl %eax, -0x187c(%rbp)
movq 0x8035b(%rip), %rax     # 0x91f10
movl (%rax), %eax
movl %eax, -0x1878(%rbp)
movq 0x803cc(%rip), %rax     # 0x91f90
movl (%rax), %eax
movl %eax, -0x1874(%rbp)
leaq -0x1539(%rbp), %rdi
movq %rdi, -0x1870(%rbp)
callq 0xeba0
movq -0x1870(%rbp), %rdx
leaq 0x4f92e(%rip), %rsi     # 0x6151b
leaq -0x1538(%rbp), %rdi
callq 0x127c0
jmp 0x11bfb
leaq -0x1561(%rbp), %rdi
movq %rdi, -0x1888(%rbp)
callq 0xeba0
movq -0x1888(%rbp), %rdx
leaq 0x4f8ff(%rip), %rsi     # 0x6151b
leaq -0x1560(%rbp), %rdi
callq 0x127c0
jmp 0x11c2a
movl -0x1874(%rbp), %r9d
movl -0x1878(%rbp), %edx
movl -0x187c(%rbp), %esi
movq %rsp, %rax
leaq -0x1560(%rbp), %rcx
movq %rcx, 0x8(%rax)
leaq -0x1538(%rbp), %rcx
movq %rcx, (%rax)
movq $0x0, 0x10(%rax)
leaq -0x1518(%rbp), %rdi
movl $0xf, %ecx
movl $0x8, %r8d
callq 0x13870
jmp 0x11c76
leaq -0x14b8(%rbp), %rdi
leaq -0x1518(%rbp), %rsi
movl $0x1000, %edx           # imm = 0x1000
callq 0x13930
jmp 0x11c90
xorl %eax, %eax
movl %eax, %r8d
leaq -0x1458(%rbp), %rdi
leaq -0x14b8(%rbp), %rsi
movq $-0x1, %rcx
movq %rcx, %rdx
callq 0x13820
jmp 0x11cb4
leaq -0x14b8(%rbp), %rdi
callq 0x13d10
leaq -0x1518(%rbp), %rdi
callq 0x13d50
leaq -0x1560(%rbp), %rdi
callq 0xe400
leaq -0x1561(%rbp), %rdi
callq 0xe6b0
leaq -0x1538(%rbp), %rdi
callq 0xe400
leaq -0x1539(%rbp), %rdi
callq 0xe6b0
jmp 0x11dca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0x1250e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0x11db9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0x11da1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0x11d95
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0x11d89
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x14b8(%rbp), %rdi
callq 0x13d10
leaq -0x1518(%rbp), %rdi
callq 0x13d50
leaq -0x1560(%rbp), %rdi
callq 0xe400
leaq -0x1561(%rbp), %rdi
callq 0xe6b0
leaq -0x1538(%rbp), %rdi
callq 0xe400
leaq -0x1539(%rbp), %rdi
callq 0xe6b0
jmp 0x1250e
leaq -0x1458(%rbp), %rdi
leaq -0x10e8(%rbp), %rsi
movq $-0x1, %rcx
movq %rcx, %rdx
callq 0x13d80
jmp 0x11de9
leaq -0x15e8(%rbp), %rdi
callq 0x13dd0
leaq -0x1668(%rbp), %rdi
callq 0x13dd0
leaq -0x16e8(%rbp), %rdi
callq 0x13dd0
leaq -0xa0(%rbp), %rdi
callq 0xeac0
testb $0x1, %al
jne 0x122b9
leaq -0xc0(%rbp), %rdi
callq 0xeac0
testb $0x1, %al
jne 0x120d3
leaq -0x1718(%rbp), %rdi
callq 0x13e20
leaq -0x1740(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
callq 0xe2b0
jmp 0x11e56
leaq -0x1740(%rbp), %rdi
leaq -0x1718(%rbp), %rsi
callq 0x10a70
movb %al, -0x1889(%rbp)
jmp 0x11e71
leaq -0x1740(%rbp), %rdi
callq 0xe400
movb -0x1889(%rbp), %al
andb $0x1, %al
movb %al, -0x1719(%rbp)
leaq -0x830(%rbp), %rdi
leaq -0x15e8(%rbp), %rsi
callq 0xef90
movq %rax, -0x1898(%rbp)
jmp 0x11ea7
movq -0x1898(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0xe810
movb %al, -0x1899(%rbp)
jmp 0x11ec5
movb -0x1899(%rbp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x189a(%rbp)
jne 0x11edd
jmp 0x11f74
leaq -0xa10(%rbp), %rdi
leaq -0x1668(%rbp), %rsi
callq 0xef90
movq %rax, -0x18a8(%rbp)
jmp 0x11ef9
movq -0x18a8(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0xe810
movb %al, -0x18a9(%rbp)
jmp 0x11f17
movb -0x18a9(%rbp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x189a(%rbp)
jne 0x11f2c
jmp 0x11f74
leaq -0xbf0(%rbp), %rdi
leaq -0x16e8(%rbp), %rsi
callq 0xef90
movq %rax, -0x18b8(%rbp)
jmp 0x11f48
movq -0x18b8(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0xe810
movb %al, -0x18b9(%rbp)
jmp 0x11f66
movb -0x18b9(%rbp), %al
movb %al, -0x189a(%rbp)
jmp 0x11f74
movb -0x189a(%rbp), %al
testb $0x1, %al
jne 0x11f83
jmp 0x120b1
leaq -0x16a8(%rbp), %rsi
leaq -0x1760(%rbp), %rdi
callq 0xe2b0
jmp 0x11f98
leaq -0x1718(%rbp), %rdi
leaq -0x1760(%rbp), %rsi
callq 0x13e40
movq %rax, -0x18c8(%rbp)
jmp 0x11fb4
movq -0x18c8(%rbp), %rax
cmpq $0x0, %rax
jbe 0x120a0
movq -0x40(%rbp), %rdx
movq -0x28(%rbp), %rcx
movq -0x30(%rbp), %r8
movq -0x38(%rbp), %r9
movzbl -0x19(%rbp), %esi
andl $0x1, %esi
movq %rsp, %rax
movl %esi, (%rax)
leaq -0x15e8(%rbp), %rdi
leaq -0x1668(%rbp), %rsi
callq 0x100a0
jmp 0x11ff6
leaq -0x15e8(%rbp), %rdi
leaq -0x1760(%rbp), %rsi
callq 0x13ea0
jmp 0x1200b
leaq -0x1668(%rbp), %rdi
leaq -0x1760(%rbp), %rsi
callq 0x13ea0
jmp 0x12020
leaq -0x1208(%rbp), %rdi
leaq -0x15e8(%rbp), %rsi
callq 0xef00
jmp 0x12035
leaq -0x1448(%rbp), %rdi
leaq -0x1668(%rbp), %rsi
callq 0xef00
jmp 0x1204a
jmp 0x120a0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0x120c2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x1740(%rbp), %rdi
callq 0xe400
jmp 0x120c2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x1760(%rbp), %rdi
callq 0xe400
jmp 0x120c2
leaq -0x1760(%rbp), %rdi
callq 0xe400
jmp 0x11e8b
leaq -0x1718(%rbp), %rdi
callq 0x13f90
jmp 0x122b4
leaq -0x1718(%rbp), %rdi
callq 0x13f90
jmp 0x124ea
jmp 0x120d5
leaq -0x830(%rbp), %rdi
leaq -0x15e8(%rbp), %rsi
callq 0xef90
movq %rax, -0x18d0(%rbp)
jmp 0x120f1
movq -0x18d0(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0xe810
movb %al, -0x18d1(%rbp)
jmp 0x1210f
movb -0x18d1(%rbp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x18d2(%rbp)
jne 0x12127
jmp 0x121be
leaq -0xa10(%rbp), %rdi
leaq -0x1668(%rbp), %rsi
callq 0xef90
movq %rax, -0x18e0(%rbp)
jmp 0x12143
movq -0x18e0(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0xe810
movb %al, -0x18e1(%rbp)
jmp 0x12161
movb -0x18e1(%rbp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x18d2(%rbp)
jne 0x12176
jmp 0x121be
leaq -0xbf0(%rbp), %rdi
leaq -0x16e8(%rbp), %rsi
callq 0xef90
movq %rax, -0x18f0(%rbp)
jmp 0x12192
movq -0x18f0(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0xe810
movb %al, -0x18f1(%rbp)
jmp 0x121b0
movb -0x18f1(%rbp), %al
movb %al, -0x18d2(%rbp)
jmp 0x121be
movb -0x18d2(%rbp), %al
testb $0x1, %al
jne 0x121cd
jmp 0x122b2
leaq -0x16a8(%rbp), %rsi
leaq -0x1780(%rbp), %rdi
callq 0xe2b0
jmp 0x121e2
movq -0x40(%rbp), %rdx
movq -0x28(%rbp), %rcx
movq -0x30(%rbp), %r8
movq -0x38(%rbp), %r9
movzbl -0x19(%rbp), %esi
andl $0x1, %esi
movq %rsp, %rax
movl %esi, (%rax)
leaq -0x15e8(%rbp), %rdi
leaq -0x1668(%rbp), %rsi
callq 0x100a0
jmp 0x12213
leaq -0x15e8(%rbp), %rdi
leaq -0x1780(%rbp), %rsi
callq 0x13ea0
jmp 0x12228
leaq -0x1668(%rbp), %rdi
leaq -0x1780(%rbp), %rsi
callq 0x13ea0
jmp 0x1223d
leaq -0x1208(%rbp), %rdi
leaq -0x15e8(%rbp), %rsi
callq 0xef00
jmp 0x12252
leaq -0x1448(%rbp), %rdi
leaq -0x1668(%rbp), %rsi
callq 0xef00
jmp 0x12267
leaq -0x1780(%rbp), %rdi
callq 0xe400
jmp 0x120d5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0x124ea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x1780(%rbp), %rdi
callq 0xe400
jmp 0x124ea
jmp 0x122b4
jmp 0x123c0
jmp 0x122bb
leaq -0x830(%rbp), %rdi
leaq -0x15e8(%rbp), %rsi
callq 0xef90
movq %rax, -0x1900(%rbp)
jmp 0x122d7
movq -0x1900(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0xe810
movb %al, -0x1901(%rbp)
jmp 0x122f5
movb -0x1901(%rbp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x1902(%rbp)
jne 0x1230a
jmp 0x12352
leaq -0xa10(%rbp), %rdi
leaq -0x1668(%rbp), %rsi
callq 0xef90
movq %rax, -0x1910(%rbp)
jmp 0x12326
movq -0x1910(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0xe810
movb %al, -0x1911(%rbp)
jmp 0x12344
movb -0x1911(%rbp), %al
movb %al, -0x1902(%rbp)
jmp 0x12352
movb -0x1902(%rbp), %al
testb $0x1, %al
jne 0x1235e
jmp 0x123be
movq -0x40(%rbp), %rdx
movq -0x28(%rbp), %rcx
movq -0x30(%rbp), %r8
movq -0x38(%rbp), %r9
movzbl -0x19(%rbp), %esi
andl $0x1, %esi
movq %rsp, %rax
movl %esi, (%rax)
leaq -0x15e8(%rbp), %rdi
leaq -0x1668(%rbp), %rsi
callq 0x100a0
jmp 0x1238f
leaq -0x1208(%rbp), %rdi
leaq -0x15e8(%rbp), %rsi
callq 0xef00
jmp 0x123a4
leaq -0x1448(%rbp), %rdi
leaq -0x1668(%rbp), %rsi
callq 0xef00
jmp 0x123b9
jmp 0x122bb
jmp 0x123c0
leaq -0x1218(%rbp), %rdi
callq 0x13fb0
jmp 0x123ce
leaq -0x1458(%rbp), %rdi
callq 0x13fb0
jmp 0x123dc
leaq -0x16e8(%rbp), %rdi
callq 0x13fd0
leaq -0x1668(%rbp), %rdi
callq 0x13fd0
leaq -0x15e8(%rbp), %rdi
callq 0x13fd0
leaq -0x1458(%rbp), %rdi
callq 0x14020
leaq -0x1218(%rbp), %rdi
callq 0x14020
leaq -0x10e8(%rbp), %rdi
callq 0xe990
leaq -0xee8(%rbp), %rdi
callq 0xe990
leaq -0xc00(%rbp), %rdi
callq 0x14060
leaq -0xa20(%rbp), %rdi
callq 0x14060
leaq -0x840(%rbp), %rdi
callq 0x14060
leaq -0x708(%rbp), %rdi
callq 0x140a0
leaq -0x568(%rbp), %rdi
callq 0x140e0
leaq -0x558(%rbp), %rdi
callq 0x140a0
leaq -0x3b8(%rbp), %rdi
callq 0x140e0
leaq -0x3a8(%rbp), %rdi
callq 0x140a0
leaq -0x208(%rbp), %rdi
callq 0x140e0
leaq -0x100(%rbp), %rdi
callq 0xe400
leaq -0xe0(%rbp), %rdi
callq 0xe400
leaq -0xc0(%rbp), %rdi
callq 0xe400
leaq -0xa0(%rbp), %rdi
callq 0xe400
leaq -0x80(%rbp), %rdi
callq 0xe400
leaq -0x60(%rbp), %rdi
callq 0xe400
movl -0x4(%rbp), %eax
addq $0x1930, %rsp           # imm = 0x1930
popq %rbp
retq
leaq -0x16e8(%rbp), %rdi
callq 0x13fd0
leaq -0x1668(%rbp), %rdi
callq 0x13fd0
leaq -0x15e8(%rbp), %rdi
callq 0x13fd0
leaq -0x1458(%rbp), %rdi
callq 0x14020
leaq -0x1218(%rbp), %rdi
callq 0x14020
leaq -0x10e8(%rbp), %rdi
callq 0xe990
leaq -0xee8(%rbp), %rdi
callq 0xe990
leaq -0xc00(%rbp), %rdi
callq 0x14060
leaq -0xa20(%rbp), %rdi
callq 0x14060
leaq -0x840(%rbp), %rdi
callq 0x14060
leaq -0x708(%rbp), %rdi
callq 0x140a0
leaq -0x568(%rbp), %rdi
callq 0x140e0
leaq -0x558(%rbp), %rdi
callq 0x140a0
leaq -0x3b8(%rbp), %rdi
callq 0x140e0
leaq -0x3a8(%rbp), %rdi
callq 0x140a0
leaq -0x208(%rbp), %rdi
callq 0x140e0
leaq -0x100(%rbp), %rdi
callq 0xe400
leaq -0xe0(%rbp), %rdi
callq 0xe400
leaq -0xc0(%rbp), %rdi
callq 0xe400
leaq -0xa0(%rbp), %rdi
callq 0xe400
leaq -0x80(%rbp), %rdi
callq 0xe400
leaq -0x60(%rbp), %rdi
callq 0xe400
movq -0x108(%rbp), %rdi
callq 0xeb80
nopl (%rax,%rax)