// File: /workspace/github_cpp_makefile_star2_O3/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
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1298, %rsp           # imm = 0x1298
movq %rsi, %r13
movl %edi, %ebp
leaq 0x2c(%rsp), %rax
movl $0x0, (%rax)
leaq 0x80(%rsp), %rax
movq %rax, -0x10(%rax)
xorl %edx, %edx
movq %rdx, -0x8(%rax)
movb %dl, (%rax)
leaq 0x60(%rsp), %rax
movq %rax, -0x10(%rax)
movq %rdx, -0x8(%rax)
movb %dl, (%rax)
leaq 0xe0(%rsp), %rax
movq %rax, -0x10(%rax)
movq %rdx, -0x8(%rax)
movb %dl, (%rax)
leaq 0x100(%rsp), %rax
movq %rax, -0x10(%rax)
movq %rdx, -0x8(%rax)
movb %dl, (%rax)
leaq 0xc0(%rsp), %rax
movq %rax, -0x10(%rax)
movq %rdx, -0x8(%rax)
movb %dl, (%rax)
leaq 0xa0(%rsp), %rax
movq %rax, -0x10(%rax)
movq %rdx, -0x8(%rax)
movl $0x0, %ecx
movq %rcx, 0x48(%rsp)
movb %dl, (%rax)
movl $0x14, %eax
movq %rax, 0x40(%rsp)
movl $0x1, %eax
movq %rax, 0x38(%rsp)
leaq 0x3006f(%rip), %r15     # 0x3d470
movq $0x0, 0x30(%rsp)
movq $0x0, 0x20(%rsp)
movl %ebp, %edi
movq %r13, %rsi
leaq 0x1c507(%rip), %rdx     # 0x29926
movq %r15, %rcx
leaq 0x2c(%rsp), %r8
callq 0xb770
cmpl $0x71, %eax
jg 0xd45c
cmpl $0x60, %eax
jle 0xd4ae
addl $-0x61, %eax
cmpl $0x7, %eax
ja 0xeaea
leaq 0x1bc27(%rip), %rcx     # 0x29070
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0xd0(%rsp), %rbx
jmp 0xd480
addl $-0x72, %eax
cmpl $0x6, %eax
ja 0xeaea
leaq 0x1bc21(%rip), %rcx     # 0x29090
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
leaq 0xf0(%rsp), %rbx
jmpq *%rax
movq 0x2fa89(%rip), %rax     # 0x3cf10
movq (%rax), %r14
movq 0x8(%rbx), %r12
movq %r14, %rdi
callq 0xb220
movq %rbx, %rdi
xorl %esi, %esi
movq %r12, %rdx
movq %r14, %rcx
movq %rax, %r8
callq 0xb6f0
jmp 0xd413
testl %eax, %eax
jne 0xd6dd
movslq 0x2c(%rsp), %rax
shlq $0x5, %rax
cmpq $0x0, 0x10(%rax,%r15)
jne 0xd413
jmp 0xea45
movq 0x2fa39(%rip), %rax     # 0x3cf10
movq (%rax), %rsi
leaq 0x3b0(%rsp), %rdi
leaq 0xdb8(%rsp), %rdx
callq 0xf0ae
movq 0x3b0(%rsp), %r14
callq 0xb060
movq %rax, %rbx
movl (%rax), %r12d
movl $0x0, (%rax)
movq %r14, %rdi
leaq 0xbb8(%rsp), %rsi
movl $0xa, %edx
callq 0xb0a0
movq %rax, 0x40(%rsp)
cmpq %r14, 0xbb8(%rsp)
je 0xeb05
movl (%rbx), %eax
testl %eax, %eax
je 0xd6ac
cmpl $0x22, %eax
jne 0xd6af
jmp 0xeb3c
movb $0x1, %al
movq %rax, 0x20(%rsp)
jmp 0xd413
movq 0x2f9b5(%rip), %rax     # 0x3cf10
movq (%rax), %rsi
leaq 0x3b0(%rsp), %rdi
leaq 0xdb8(%rsp), %rdx
callq 0xf0ae
movq 0x3b0(%rsp), %r14
callq 0xb060
movq %rax, %rbx
movl (%rax), %r12d
movl $0x0, (%rax)
movq %r14, %rdi
leaq 0xbb8(%rsp), %rsi
movl $0xa, %edx
callq 0xb0a0
movq %rax, 0x30(%rsp)
cmpq %r14, 0xbb8(%rsp)
je 0xeaf9
movl (%rbx), %eax
testl %eax, %eax
je 0xd6ac
cmpl $0x22, %eax
jne 0xd6af
jmp 0xeb30
movq 0x2f93d(%rip), %rax     # 0x3cf10
movq (%rax), %rsi
leaq 0x3b0(%rsp), %rdi
leaq 0xdb8(%rsp), %rdx
callq 0xf0ae
movq 0x3b0(%rsp), %r14
callq 0xb060
movq %rax, %rbx
movl (%rax), %r12d
movl $0x0, (%rax)
movq %r14, %rdi
leaq 0xbb8(%rsp), %rsi
movl $0xa, %edx
callq 0xb0a0
movq %rax, 0x48(%rsp)
cmpq %r14, 0xbb8(%rsp)
je 0xeb11
movl (%rbx), %eax
testl %eax, %eax
je 0xd6ac
cmpl $0x22, %eax
jne 0xd6af
jmp 0xeb48
movq 0x2f8cd(%rip), %rax     # 0x3cf10
movq (%rax), %rsi
leaq 0x3b0(%rsp), %rdi
leaq 0xdb8(%rsp), %rdx
callq 0xf0ae
movq 0x3b0(%rsp), %r14
callq 0xb060
movq %rax, %rbx
movl (%rax), %r12d
movl $0x0, (%rax)
movq %r14, %rdi
leaq 0xbb8(%rsp), %rsi
movl $0xa, %edx
callq 0xb0a0
movq %rax, 0x38(%rsp)
cmpq %r14, 0xbb8(%rsp)
je 0xeb1d
movl (%rbx), %eax
testl %eax, %eax
je 0xd6ac
cmpl $0x22, %eax
jne 0xd6af
jmp 0xeb54
movl %r12d, (%rbx)
movq 0x3b0(%rsp), %rdi
leaq 0x3c0(%rsp), %rax
cmpq %rax, %rdi
je 0xd413
movq 0x3c0(%rsp), %rsi
incq %rsi
callq 0xb480
jmp 0xd413
cmpl $-0x1, %eax
jne 0xea32
movq 0x2f8a3(%rip), %r12     # 0x3cf90
movslq (%r12), %rax
leal 0x2(%rax), %ecx
cmpl %ebp, %ecx
jg 0xeb29
movq (%r13,%rax,8), %rbx
leaq 0x70(%rsp), %r14
movq 0x8(%r14), %r15
movq %rbx, %rdi
callq 0xb220
movq %r14, %rdi
xorl %esi, %esi
movq %r15, %rdx
movq %rbx, %rcx
movq %rax, %r8
callq 0xb6f0
movslq (%r12), %rax
movq 0x8(%r13,%rax,8), %rbx
leaq 0x50(%rsp), %r14
movq 0x8(%r14), %r15
movq %rbx, %rdi
callq 0xb220
movq %r14, %rdi
xorl %esi, %esi
movq %r15, %rdx
movq %rbx, %rcx
movq %rax, %r8
callq 0xb6f0
movslq (%r12), %rax
leal 0x2(%rax), %ecx
cmpl %ebp, %ecx
jge 0xd7c4
leal 0x4(%rax), %ecx
cmpl %ebp, %ecx
jne 0xeb60
movq 0x10(%r13,%rax,8), %rbx
leaq 0xb0(%rsp), %r14
movq 0x8(%r14), %r15
movq %rbx, %rdi
callq 0xb220
movq %r14, %rdi
xorl %esi, %esi
movq %r15, %rdx
movq %rbx, %rcx
movq %rax, %r8
callq 0xb6f0
movslq (%r12), %rax
movq 0x18(%r13,%rax,8), %rbx
leaq 0x90(%rsp), %r14
movq 0x8(%r14), %r15
movq %rbx, %rdi
callq 0xb220
movq %r14, %rdi
xorl %esi, %esi
movq %r15, %rdx
movq %rbx, %rcx
movq %rax, %r8
callq 0xb6f0
leaq 0x1e0(%rsp), %rdi
leaq 0x70(%rsp), %rsi
movl $0x8, %edx
movl $0x8, %ecx
callq 0x1fe5a
leaq 0xdb8(%rsp), %rdi
leaq 0x1e0(%rsp), %rsi
movq $-0x1, %rdx
movq $-0x1, %rcx
callq 0xf34c
leaq 0x1d0(%rsp), %rdi
leaq 0x50(%rsp), %rsi
movl $0x8, %edx
movl $0x8, %ecx
callq 0x1fe5a
leaq 0x10f8(%rsp), %rdi
leaq 0x1d0(%rsp), %rsi
movq $-0x1, %rdx
movq $-0x1, %rcx
callq 0xf34c
leaq 0x1c0(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
movl $0x8, %edx
movl $0x8, %ecx
callq 0x1fe5a
leaq 0xf58(%rsp), %rdi
leaq 0x1c0(%rsp), %rsi
movq $-0x1, %rdx
movq $-0x1, %rcx
callq 0xf34c
leaq 0x818(%rsp), %rdi
callq 0xf47a
leaq 0x70(%rsp), %rdi
callq 0xbd51
testb %al, %al
je 0xd94d
leaq 0x3b0(%rsp), %rdi
movl $0x1000, %edx           # imm = 0x1000
movl $0xf, %esi
callq 0xf50c
movq 0x820(%rsp), %rdi
leaq 0x3b0(%rsp), %rsi
movq $-0x1, %rdx
movq $-0x1, %rcx
callq 0x21956
leaq 0x440(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd8fe
movq 0x440(%rsp), %rsi
incq %rsi
callq 0xb480
leaq 0x3f0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd91f
movq 0x3f0(%rsp), %rsi
incq %rsi
callq 0xb480
leaq 0x3d0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd940
movq 0x3d0(%rsp), %rsi
incq %rsi
callq 0xb480
leaq 0x3b8(%rsp), %rdi
callq 0xfe9a
leaq 0x3b0(%rsp), %rsi
leaq 0xdb8(%rsp), %rax
movq %rax, (%rsi)
movq 0x820(%rsp), %rdi
movq $-0x1, %rdx
movq $-0x1, %rcx
callq 0x23ff8
leaq 0x6e0(%rsp), %rdi
callq 0xf47a
leaq 0x50(%rsp), %rdi
callq 0xbd51
testb %al, %al
je 0xda44
leaq 0x3b0(%rsp), %rdi
movl $0x1000, %edx           # imm = 0x1000
movl $0xf, %esi
callq 0xf50c
movq 0x6e8(%rsp), %rdi
leaq 0x3b0(%rsp), %rsi
movq $-0x1, %rdx
movq $-0x1, %rcx
callq 0x21956
leaq 0x440(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd9f5
movq 0x440(%rsp), %rsi
incq %rsi
callq 0xb480
leaq 0x3f0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xda16
movq 0x3f0(%rsp), %rsi
incq %rsi
callq 0xb480
leaq 0x3d0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xda37
movq 0x3d0(%rsp), %rsi
incq %rsi
callq 0xb480
leaq 0x3b8(%rsp), %rdi
callq 0xfe9a
leaq 0x3b0(%rsp), %rsi
leaq 0x10f8(%rsp), %rax
movq %rax, (%rsi)
movq 0x6e8(%rsp), %rdi
movq $-0x1, %rdx
movq $-0x1, %rcx
callq 0x23ff8
leaq 0x950(%rsp), %rdi
callq 0xf47a
cmpq $0x0, 0xd8(%rsp)
je 0xdb4d
leaq 0xd0(%rsp), %rdi
callq 0xbd51
testb %al, %al
je 0xdb4d
leaq 0x3b0(%rsp), %rdi
movl $0x1000, %edx           # imm = 0x1000
movl $0xf, %esi
callq 0xf50c
movq 0x958(%rsp), %rdi
leaq 0x3b0(%rsp), %rsi
movq $-0x1, %rdx
movq $-0x1, %rcx
callq 0x21956
leaq 0x440(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xdafe
movq 0x440(%rsp), %rsi
incq %rsi
callq 0xb480
leaq 0x3f0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xdb1f
movq 0x3f0(%rsp), %rsi
incq %rsi
callq 0xb480
leaq 0x3d0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xdb40
movq 0x3d0(%rsp), %rsi
incq %rsi
callq 0xb480
leaq 0x3b8(%rsp), %rdi
callq 0xfe9a
leaq 0x3b0(%rsp), %rsi
leaq 0xf58(%rsp), %rax
movq %rax, (%rsi)
movq 0x958(%rsp), %rdi
movq $-0x1, %rdx
movq $-0x1, %rcx
callq 0x23ff8
cmpq $0x0, 0xb8(%rsp)
jne 0xdbd0
leaq 0x3b0(%rsp), %rdi
leaq 0x70(%rsp), %rsi
callq 0xbfd0
leaq 0xb0(%rsp), %rdi
leaq 0x3b0(%rsp), %rbx
movq %rbx, %rsi
callq 0xb5a0
movq (%rbx), %rdi
leaq 0x3c0(%rsp), %rax
cmpq %rax, %rdi
je 0xdbd0
movq 0x3c0(%rsp), %rsi
incq %rsi
callq 0xb480
cmpq $0x0, 0x98(%rsp)
jne 0xdc25
leaq 0x3b0(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0xbfd0
leaq 0x90(%rsp), %rdi
leaq 0x3b0(%rsp), %rbx
movq %rbx, %rsi
callq 0xb5a0
movq (%rbx), %rdi
leaq 0x3c0(%rsp), %rax
cmpq %rax, %rdi
je 0xdc25
movq 0x3c0(%rsp), %rsi
incq %rsi
callq 0xb480
testb $0x1, 0x20(%rsp)
je 0xdca3
movq 0x2f34d(%rip), %rdi     # 0x3cf80
leaq 0x1bcfc(%rip), %rsi     # 0x29936
movl $0xb, %edx
callq 0xb540
movq 0xb0(%rsp), %rsi
movq 0xb8(%rsp), %rdx
movq 0x2f325(%rip), %rdi     # 0x3cf80
callq 0xb540
movq %rax, %rbx
leaq 0x1bcd8(%rip), %rsi     # 0x29942
movl $0x5, %edx
movq %rax, %rdi
callq 0xb540
movq 0x90(%rsp), %rsi
movq 0x98(%rsp), %rdx
movq %rbx, %rdi
callq 0xb540
leaq 0x1bcb2(%rip), %rsi     # 0x29948
movl $0x4, %edx
movq %rax, %rdi
callq 0xb540
leaq 0x3b0(%rsp), %rdi
leaq 0xb0(%rsp), %rsi
movl $0x14, %edx
callq 0xb890
leaq 0xbb8(%rsp), %rdi
leaq 0x90(%rsp), %rsi
movl $0x14, %edx
callq 0xb890
leaq 0xa88(%rsp), %rdi
callq 0xf644
leaq 0xb0(%rsp), %rdi
callq 0xbf46
testb %al, %al
je 0xde94
leaq 0x320(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x1b7ff(%rip), %rdx     # 0x2950b
leaq 0x310(%rsp), %rbx
movq %rbx, %rdi
movq %rdx, %rsi
callq 0x11010
leaq 0x300(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0x1b7d8(%rip), %rdx     # 0x2950b
leaq 0x2f0(%rsp), %r14
movq %r14, %rdi
movq %rdx, %rsi
callq 0x11010
movq 0x2f203(%rip), %rax     # 0x3cf50
movl (%rax), %esi
movq 0x2f1a2(%rip), %rax     # 0x3cef8
movl (%rax), %edx
movq 0x2f239(%rip), %rax     # 0x3cf98
movl (%rax), %r9d
movq %r14, 0x8(%rsp)
movq %rbx, (%rsp)
movq $0x0, 0x10(%rsp)
leaq 0x110(%rsp), %rdi
movl $0xf, %ecx
movl $0x8, %r8d
callq 0xf6d6
leaq 0x5b0(%rsp), %rdi
leaq 0x110(%rsp), %rsi
movl $0x1000, %edx           # imm = 0x1000
callq 0xf770
movq 0xa90(%rsp), %rdi
leaq 0x5b0(%rsp), %rsi
movq $-0x1, %rdx
movq $-0x1, %rcx
callq 0x25e96
leaq 0x5f0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xddea
movq 0x5f0(%rsp), %rsi
incq %rsi
callq 0xb480
leaq 0x5d0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xde0b
movq 0x5d0(%rsp), %rsi
incq %rsi
callq 0xb480
leaq 0x5b8(%rsp), %rdi
callq 0xfe9a
leaq 0x158(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xde39
movq 0x158(%rsp), %rsi
incq %rsi
callq 0xb480
leaq 0x138(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xde5a
movq 0x138(%rsp), %rsi
incq %rsi
callq 0xb480
movq 0x2f0(%rsp), %rdi
cmpq %r12, %rdi
je 0xde77
movq 0x300(%rsp), %rsi
incq %rsi
callq 0xb480
movq 0x310(%rsp), %rdi
cmpq %r15, %rdi
je 0xde94
movq 0x320(%rsp), %rsi
incq %rsi
callq 0xb480
leaq 0x5b0(%rsp), %rsi
leaq 0x3b0(%rsp), %rax
movq %rax, (%rsi)
movq 0xa90(%rsp), %rdi
movq $-0x1, %rdx
movq $-0x1, %rcx
callq 0x27ac2
leaq 0x5b0(%rsp), %rdi
callq 0xf644
leaq 0x90(%rsp), %rdi
callq 0xbf46
testb %al, %al
je 0xe07f
leaq 0x2e0(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x1b614(%rip), %rdx     # 0x2950b
leaq 0x2d0(%rsp), %rbx
movq %rbx, %rdi
movq %rdx, %rsi
callq 0x11010
leaq 0x2c0(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0x1b5ed(%rip), %rdx     # 0x2950b
leaq 0x2b0(%rsp), %r14
movq %r14, %rdi
movq %rdx, %rsi
callq 0x11010
movq 0x2f018(%rip), %rax     # 0x3cf50
movl (%rax), %esi
movq 0x2efb7(%rip), %rax     # 0x3cef8
movl (%rax), %edx
movq 0x2f04e(%rip), %rax     # 0x3cf98
movl (%rax), %r9d
movq %r14, 0x8(%rsp)
movq %rbx, (%rsp)
movq $0x0, 0x10(%rsp)
leaq 0x230(%rsp), %rdi
movl $0xf, %ecx
movl $0x8, %r8d
callq 0xf6d6
leaq 0x110(%rsp), %rdi
leaq 0x230(%rsp), %rsi
movl $0x1000, %edx           # imm = 0x1000
callq 0xf770
movq 0x5b8(%rsp), %rdi
leaq 0x110(%rsp), %rsi
movq $-0x1, %rdx
movq $-0x1, %rcx
callq 0x25e96
leaq 0x150(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xdfd5
movq 0x150(%rsp), %rsi
incq %rsi
callq 0xb480
leaq 0x130(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xdff6
movq 0x130(%rsp), %rsi
incq %rsi
callq 0xb480
leaq 0x118(%rsp), %rdi
callq 0xfe9a
leaq 0x278(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xe024
movq 0x278(%rsp), %rsi
incq %rsi
callq 0xb480
leaq 0x258(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xe045
movq 0x258(%rsp), %rsi
incq %rsi
callq 0xb480
movq 0x2b0(%rsp), %rdi
cmpq %r12, %rdi
je 0xe062
movq 0x2c0(%rsp), %rsi
incq %rsi
callq 0xb480
movq 0x2d0(%rsp), %rdi
cmpq %r15, %rdi
je 0xe07f
movq 0x2e0(%rsp), %rsi
incq %rsi
callq 0xb480
leaq 0x110(%rsp), %rsi
leaq 0xbb8(%rsp), %rax
movq %rax, (%rsi)
movq 0x5b8(%rsp), %rdi
movq $-0x1, %rdx
movq $-0x1, %rcx
callq 0x27ac2
leaq 0x120(%rsp), %rcx
movq %rcx, -0x10(%rcx)
xorl %eax, %eax
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0x140(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0x160(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0x180(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0x240(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0x260(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0x280(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0x2a0(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0x340(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0x360(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0x380(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0x3a0(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
cmpq %rax, 0xd8(%rsp)
je 0xe821
movq 0xf8(%rsp), %rdx
testq %rdx, %rdx
je 0xe8e0
leaq 0x198(%rsp), %rbx
movl $0x0, (%rbx)
xorl %eax, %eax
movq %rax, 0x8(%rbx)
movq %rbx, 0x10(%rbx)
movq %rbx, 0x18(%rbx)
movq %rax, 0x20(%rbx)
leaq 0x220(%rsp), %r15
movq %r15, -0x10(%r15)
movq 0xf0(%rsp), %rsi
addq %rsi, %rdx
leaq 0x210(%rsp), %rdi
callq 0x10f7a
leaq 0x210(%rsp), %rdi
leaq 0x190(%rsp), %rsi
callq 0xd1d3
movq 0x210(%rsp), %rdi
cmpq %r15, %rdi
je 0xe21c
movq 0x220(%rsp), %rsi
incq %rsi
callq 0xb480
leaq 0x200(%rsp), %r12
leaq 0x110(%rsp), %rbp
leaq 0x230(%rsp), %r13
leaq 0x1f0(%rsp), %r15
movzbl 0x20(%rsp), %r14d
andl $0x1, %r14d
leaq 0x828(%rsp), %rdi
movq %rbp, %rsi
callq 0xbca9
movq 0x828(%rsp), %rax
movq -0x18(%rax), %rax
testb $0x5, 0x848(%rsp,%rax)
jne 0xe380
leaq 0x6f0(%rsp), %rdi
movq %r13, %rsi
callq 0xbca9
movq 0x6f0(%rsp), %rax
movq -0x18(%rax), %rax
testb $0x5, 0x710(%rsp,%rax)
jne 0xe380
leaq 0x960(%rsp), %rdi
leaq 0x330(%rsp), %rsi
callq 0xbca9
movq 0x960(%rsp), %rax
movq -0x18(%rax), %rax
testb $0x5, 0x980(%rsp,%rax)
jne 0xe380
movq %r12, 0x1f0(%rsp)
movq 0x370(%rsp), %rsi
movq 0x378(%rsp), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0x10f7a
leaq 0x190(%rsp), %rdi
movq %r15, %rsi
callq 0x28634
cmpq %rbx, %rax
je 0xe35a
movl %r14d, (%rsp)
movq %rbp, %rdi
movq %r13, %rsi
movq 0x40(%rsp), %rdx
movq 0x38(%rsp), %rcx
movq 0x48(%rsp), %r8
movq 0x30(%rsp), %r9
callq 0xc9c9
movq %rbp, %rdi
movq %r15, %rsi
callq 0xfb9e
movq %r13, %rdi
movq %r15, %rsi
callq 0xfb9e
leaq 0xa98(%rsp), %rdi
movq %rbp, %rsi
callq 0xbbfc
leaq 0x5c0(%rsp), %rdi
movq %r13, %rsi
callq 0xbbfc
movq 0x1f0(%rsp), %rdi
cmpq %r12, %rdi
je 0xe246
movq 0x200(%rsp), %rsi
incq %rsi
callq 0xb480
jmp 0xe246
leaq 0x190(%rsp), %rdi
callq 0xfecc
leaq 0xa88(%rsp), %rdi
callq 0x286bd
leaq 0x5b0(%rsp), %rdi
callq 0x286bd
movq 0x390(%rsp), %rdi
leaq 0x3a0(%rsp), %rax
cmpq %rax, %rdi
je 0xe3cc
movq 0x3a0(%rsp), %rsi
incq %rsi
callq 0xb480
movq 0x370(%rsp), %rdi
leaq 0x380(%rsp), %rax
cmpq %rax, %rdi
je 0xe3f1
movq 0x380(%rsp), %rsi
incq %rsi
callq 0xb480
movq 0x350(%rsp), %rdi
leaq 0x360(%rsp), %rax
cmpq %rax, %rdi
je 0xe416
movq 0x360(%rsp), %rsi
incq %rsi
callq 0xb480
movq 0x330(%rsp), %rdi
leaq 0x340(%rsp), %rax
cmpq %rax, %rdi
je 0xe43b
movq 0x340(%rsp), %rsi
incq %rsi
callq 0xb480
movq 0x290(%rsp), %rdi
leaq 0x2a0(%rsp), %rax
cmpq %rax, %rdi
je 0xe460
movq 0x2a0(%rsp), %rsi
incq %rsi
callq 0xb480
movq 0x270(%rsp), %rdi
leaq 0x280(%rsp), %rax
cmpq %rax, %rdi
je 0xe485
movq 0x280(%rsp), %rsi
incq %rsi
callq 0xb480
movq 0x250(%rsp), %rdi
leaq 0x260(%rsp), %rax
cmpq %rax, %rdi
je 0xe4aa
movq 0x260(%rsp), %rsi
incq %rsi
callq 0xb480
movq 0x230(%rsp), %rdi
leaq 0x240(%rsp), %rax
cmpq %rax, %rdi
je 0xe4cf
movq 0x240(%rsp), %rsi
incq %rsi
callq 0xb480
movq 0x170(%rsp), %rdi
leaq 0x180(%rsp), %rax
cmpq %rax, %rdi
je 0xe4f4
movq 0x180(%rsp), %rsi
incq %rsi
callq 0xb480
movq 0x150(%rsp), %rdi
leaq 0x160(%rsp), %rax
cmpq %rax, %rdi
je 0xe519
movq 0x160(%rsp), %rsi
incq %rsi
callq 0xb480
movq 0x130(%rsp), %rdi
leaq 0x140(%rsp), %rax
cmpq %rax, %rdi
je 0xe53e
movq 0x140(%rsp), %rsi
incq %rsi
callq 0xb480
movq 0x110(%rsp), %rdi
leaq 0x120(%rsp), %rax
cmpq %rax, %rdi
je 0xe563
movq 0x120(%rsp), %rsi
incq %rsi
callq 0xb480
leaq 0x2de66(%rip), %rbx     # 0x3c3d0
leaq 0x5b0(%rsp), %rdi
movq %rbx, %rsi
callq 0x25b90
leaq 0x5d8(%rsp), %rdi
callq 0xb180
leaq 0xa88(%rsp), %rdi
movq %rbx, %rsi
callq 0x25b90
leaq 0xab0(%rsp), %rdi
callq 0xb180
movq 0x2e98d(%rip), %rax     # 0x3cf38
movq (%rax), %rbx
movq 0x18(%rax), %r14
leaq 0xbc0(%rsp), %rdi
movq %rbx, -0x8(%rdi)
movq -0x18(%rbx), %rax
movq %r14, 0xbb8(%rsp,%rax)
callq 0xb3d0
movl $0xf8, %r15d
leaq 0xbb8(%rsp), %rdi
addq %r15, %rdi
callq 0xb180
leaq 0x3b8(%rsp), %rdi
movq %rbx, -0x8(%rdi)
movq -0x18(%rbx), %rax
movq %r14, 0x3b0(%rsp,%rax)
callq 0xb3d0
leaq 0x3b0(%rsp), %rdi
addq %r15, %rdi
callq 0xb180
leaq 0x2d257(%rip), %rbx     # 0x3b870
leaq 0x950(%rsp), %rdi
movq %rbx, %rsi
callq 0x2147c
leaq 0x980(%rsp), %rdi
callq 0xb180
leaq 0x6e0(%rsp), %rdi
movq %rbx, %rsi
callq 0x2147c
leaq 0x710(%rsp), %rdi
callq 0xb180
leaq 0x818(%rsp), %rdi
movq %rbx, %rsi
callq 0x2147c
leaq 0x848(%rsp), %rdi
callq 0xb180
leaq 0x2cab9(%rip), %rbx     # 0x3b130
leaq 0xf68(%rsp), %rdi
movq %rbx, -0x10(%rdi)
movl $0x98, %r14d
leaq 0xf58(%rsp), %r13
addq %r14, %r13
leaq 0x2cabd(%rip), %r15     # 0x3b158
movq %r15, 0x88(%rdi)
xorl %r12d, %r12d
movq %r12, -0x8(%rdi)
callq 0x1017a
movq %r13, %rdi
callq 0xb180
leaq 0x1c8(%rsp), %rdi
callq 0xfe9a
leaq 0x1108(%rsp), %rdi
movq %rbx, -0x10(%rdi)
leaq 0x10f8(%rsp), %r13
addq %r14, %r13
movq %r15, 0x88(%rdi)
movq %r12, -0x8(%rdi)
callq 0x1017a
movq %r13, %rdi
callq 0xb180
leaq 0x1d8(%rsp), %rdi
callq 0xfe9a
leaq 0xdc8(%rsp), %rdi
movq %rbx, -0x10(%rdi)
leaq 0xdb8(%rsp), %rbx
addq %r14, %rbx
movq %r15, 0x88(%rdi)
movq %r12, -0x8(%rdi)
callq 0x1017a
movq %rbx, %rdi
callq 0xb180
leaq 0x1e8(%rsp), %rdi
callq 0xfe9a
movq 0x90(%rsp), %rdi
leaq 0xa0(%rsp), %rax
cmpq %rax, %rdi
je 0xe760
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0xb480
movq 0xb0(%rsp), %rdi
leaq 0xc0(%rsp), %rax
cmpq %rax, %rdi
leaq 0x80(%rsp), %rbx
leaq 0x60(%rsp), %r14
je 0xe792
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0xb480
movq 0xf0(%rsp), %rdi
leaq 0x100(%rsp), %rax
cmpq %rax, %rdi
je 0xe7b7
movq 0x100(%rsp), %rsi
incq %rsi
callq 0xb480
movq 0xd0(%rsp), %rdi
leaq 0xe0(%rsp), %rax
cmpq %rax, %rdi
je 0xe7dc
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0xb480
movq 0x50(%rsp), %rdi
cmpq %r14, %rdi
je 0xe7f3
movq 0x60(%rsp), %rsi
incq %rsi
callq 0xb480
movq 0x70(%rsp), %rdi
cmpq %rbx, %rdi
je 0xe80d
movq 0x80(%rsp), %rsi
incq %rsi
callq 0xb480
xorl %eax, %eax
addq $0x1298, %rsp           # imm = 0x1298
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x828(%rsp), %r14
leaq 0x6f0(%rsp), %r15
leaq 0x5c0(%rsp), %r13
leaq 0x110(%rsp), %rbp
leaq 0x230(%rsp), %rbx
movzbl 0x20(%rsp), %r12d
andl $0x1, %r12d
movq %r14, %rdi
movq %rbp, %rsi
callq 0xbca9
movq 0x828(%rsp), %rax
movq -0x18(%rax), %rax
testb $0x5, 0x848(%rsp,%rax)
jne 0xe38d
movq %r15, %rdi
movq %rbx, %rsi
callq 0xbca9
movq 0x6f0(%rsp), %rax
movq -0x18(%rax), %rax
testb $0x5, 0x710(%rsp,%rax)
jne 0xe38d
movl %r12d, (%rsp)
movq %rbp, %rdi
movq %rbx, %rsi
movq 0x40(%rsp), %rdx
movq 0x38(%rsp), %rcx
movq 0x48(%rsp), %r8
movq 0x30(%rsp), %r9
callq 0xc9c9
leaq 0xa98(%rsp), %rdi
movq %rbp, %rsi
callq 0xbbfc
movq %r13, %rdi
movq %rbx, %rsi
callq 0xbbfc
jmp 0xe853
leaq 0x828(%rsp), %r14
leaq 0x1a0(%rsp), %rbx
leaq 0x110(%rsp), %r13
leaq 0x230(%rsp), %rbp
leaq 0x190(%rsp), %r15
movzbl 0x20(%rsp), %r12d
andl $0x1, %r12d
movq %r14, %rdi
movq %r13, %rsi
callq 0xbca9
movq 0x828(%rsp), %rax
movq -0x18(%rax), %rax
testb $0x5, 0x848(%rsp,%rax)
jne 0xe38d
leaq 0x6f0(%rsp), %rdi
movq %rbp, %rsi
callq 0xbca9
movq 0x6f0(%rsp), %rax
movq -0x18(%rax), %rax
testb $0x5, 0x710(%rsp,%rax)
jne 0xe38d
leaq 0x960(%rsp), %rdi
leaq 0x330(%rsp), %rsi
callq 0xbca9
movq 0x960(%rsp), %rax
movq -0x18(%rax), %rax
testb $0x5, 0x980(%rsp,%rax)
jne 0xe38d
movq %rbx, 0x190(%rsp)
movq 0x370(%rsp), %rsi
movq 0x378(%rsp), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0x10f7a
movl %r12d, (%rsp)
movq %r13, %rdi
movq %rbp, %rsi
movq 0x40(%rsp), %rdx
movq 0x38(%rsp), %rcx
movq 0x48(%rsp), %r8
movq 0x30(%rsp), %r9
callq 0xc9c9
movq %r13, %rdi
movq %r15, %rsi
callq 0xfb9e
movq %rbp, %rdi
movq %r15, %rsi
callq 0xfb9e
leaq 0xa98(%rsp), %rdi
movq %r13, %rsi
callq 0xbbfc
leaq 0x5c0(%rsp), %rdi
movq %rbp, %rsi
callq 0xbbfc
movq 0x190(%rsp), %rdi
cmpq %rbx, %rdi
je 0xe912
movq 0x1a0(%rsp), %rsi
incq %rsi
callq 0xb480
jmp 0xe912
cmpl $0x3f, %eax
jne 0xeaea
callq 0xce93
jmp 0xeaef
addq %rax, %r15
movq (%r15), %rbx
leaq 0x3b0(%rsp), %rdi
leaq 0x3c0(%rsp), %rax
movq %rax, (%rdi)
leaq 0x1ae66(%rip), %rsi     # 0x298cb
leaq 0x1ae66(%rip), %rdx     # 0x298d2
callq 0x11010
leaq 0x3b0(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rsi
callq 0xb140
movl %eax, %ebx
movq (%r14), %rdi
leaq 0x3c0(%rsp), %rax
cmpq %rax, %rdi
je 0xeaa6
movq 0x3c0(%rsp), %rsi
incq %rsi
callq 0xb480
testl %ebx, %ebx
jne 0xeaea
leaq 0x3b0(%rsp), %rdi
callq 0xcda1
movq 0x3b0(%rsp), %rsi
movq 0x3b8(%rsp), %rdx
movq 0x2e4b2(%rip), %rdi     # 0x3cf80
callq 0xb540
movq %rax, %rdi
callq 0xb250
leaq 0x3b0(%rsp), %rdi
callq 0xb240
jmp 0xeaef
callq 0xce93
movl $0x1, %edi
callq 0xb590
leaq 0x1ae4d(%rip), %rdi     # 0x2994d
callq 0xb2c0
leaq 0x1ae41(%rip), %rdi     # 0x2994d
callq 0xb2c0
leaq 0x1ae35(%rip), %rdi     # 0x2994d
callq 0xb2c0
leaq 0x1ae29(%rip), %rdi     # 0x2994d
callq 0xb2c0
callq 0xce93
jmp 0xeaef
leaq 0x1ae16(%rip), %rdi     # 0x2994d
callq 0xb680
leaq 0x1ae0a(%rip), %rdi     # 0x2994d
callq 0xb680
leaq 0x1adfe(%rip), %rdi     # 0x2994d
callq 0xb680
leaq 0x1adf2(%rip), %rdi     # 0x2994d
callq 0xb680
callq 0xce93
jmp 0xeaef
movq %rax, %r14
leaq 0x3b0(%rsp), %rdi
callq 0xf5e4
jmp 0xee94
jmp 0xeda9
jmp 0xeda9
jmp 0xeda9
movq %rax, %r14
movq 0x210(%rsp), %rdi
cmpq %r15, %rdi
je 0xedff
movq 0x220(%rsp), %rsi
jmp 0xedf7
jmp 0xedd5
movq %rax, %r14
leaq 0x110(%rsp), %rdi
callq 0xfb24
jmp 0xebc6
movq %rax, %r14
leaq 0x230(%rsp), %rdi
callq 0xfb66
jmp 0xebd8
movq %rax, %r14
movq 0x2b0(%rsp), %rdi
cmpq %r12, %rdi
je 0xebfa
movq 0x2c0(%rsp), %rsi
incq %rsi
callq 0xb480
jmp 0xebfa
movq %rax, %r14
movq 0x2d0(%rsp), %rdi
cmpq %r15, %rdi
je 0xee38
movq 0x2e0(%rsp), %rsi
incq %rsi
callq 0xb480
jmp 0xee38
jmp 0xed4c
movq %rax, %r14
leaq 0x5b0(%rsp), %rdi
callq 0xfb24
jmp 0xec3a
movq %rax, %r14
leaq 0x110(%rsp), %rdi
callq 0xfb66
jmp 0xec4c
movq %rax, %r14
movq 0x2f0(%rsp), %rdi
cmpq %r12, %rdi
je 0xec6e
movq 0x300(%rsp), %rsi
incq %rsi
callq 0xb480
jmp 0xec6e
movq %rax, %r14
movq 0x310(%rsp), %rdi
cmpq %r15, %rdi
je 0xee59
movq 0x320(%rsp), %rsi
incq %rsi
callq 0xb480
jmp 0xee59
jmp 0xed54
movq %rax, %r14
leaq 0x3b0(%rsp), %rdi
callq 0xf5e4
jmp 0xeeb5
jmp 0xed5c
movq %rax, %r14
leaq 0x3b0(%rsp), %rdi
callq 0xf5e4
jmp 0xeed6
jmp 0xed64
jmp 0xed54
movq %rax, %r14
jmp 0xee7a
movq %rax, %r14
jmp 0xee87
jmp 0xeda9
jmp 0xed5c
jmp 0xed64
movq %rax, %r14
jmp 0xeef7
movq %rax, %r14
jmp 0xef04
movq %rax, %r14
jmp 0xef11
movq %rax, %r14
jmp 0xef1e
movq %rax, %r14
jmp 0xef2b
movq %rax, %r14
jmp 0xef38
jmp 0xef49
jmp 0xef49
jmp 0xef49
jmp 0xef49
jmp 0xef49
jmp 0xed3a
jmp 0xed3a
jmp 0xed3a
movq %rax, %r14
cmpl $0x0, (%rbx)
jne 0xed74
movl %r12d, (%rbx)
jmp 0xed74
jmp 0xee0e
movq %rax, %r14
jmp 0xee38
movq %rax, %r14
jmp 0xee59
movq %rax, %r14
jmp 0xeeb5
movq %rax, %r14
jmp 0xeed6
jmp 0xee0e
movq %rax, %r14
movq 0x3b0(%rsp), %rdi
leaq 0x3c0(%rsp), %rax
cmpq %rax, %rdi
je 0xef4c
movq 0x3c0(%rsp), %rsi
incq %rsi
callq 0xb480
jmp 0xef4c
jmp 0xef49
jmp 0xedd5
movq %rax, %r14
jmp 0xee94
jmp 0xee0e
movq %rax, %r14
movq 0x190(%rsp), %rdi
cmpq %rbx, %rdi
je 0xee11
movq 0x1a0(%rsp), %rsi
incq %rsi
callq 0xb480
jmp 0xee11
movq %rax, %r14
jmp 0xedff
jmp 0xef49
movq %rax, %r14
movq 0x1f0(%rsp), %rdi
cmpq %r12, %rdi
je 0xedff
movq 0x200(%rsp), %rsi
incq %rsi
callq 0xb480
leaq 0x190(%rsp), %rdi
callq 0xfecc
jmp 0xee11
movq %rax, %r14
leaq 0x330(%rsp), %rdi
callq 0xfc78
leaq 0x230(%rsp), %rdi
callq 0xfc78
leaq 0x110(%rsp), %rdi
callq 0xfc78
leaq 0x2d591(%rip), %rsi     # 0x3c3d0
leaq 0x5b0(%rsp), %rdi
callq 0x25b90
leaq 0x5d8(%rsp), %rdi
callq 0xb180
leaq 0x2d570(%rip), %rsi     # 0x3c3d0
leaq 0xa88(%rsp), %rdi
callq 0x25b90
leaq 0xab0(%rsp), %rdi
callq 0xb180
leaq 0xbb8(%rsp), %rdi
callq 0xb6b0
leaq 0x3b0(%rsp), %rdi
callq 0xb6b0
leaq 0x2c9d5(%rip), %rsi     # 0x3b870
leaq 0x950(%rsp), %rdi
callq 0x2147c
leaq 0x980(%rsp), %rdi
callq 0xb180
leaq 0x2c9b4(%rip), %rsi     # 0x3b870
leaq 0x6e0(%rsp), %rdi
callq 0x2147c
leaq 0x710(%rsp), %rdi
callq 0xb180
leaq 0x2c993(%rip), %rsi     # 0x3b870
leaq 0x818(%rsp), %rdi
callq 0x2147c
leaq 0x848(%rsp), %rdi
callq 0xb180
leaq 0xf58(%rsp), %rdi
callq 0xfd1a
leaq 0x1c8(%rsp), %rdi
callq 0xfe9a
leaq 0x10f8(%rsp), %rdi
callq 0xfd1a
leaq 0x1d8(%rsp), %rdi
callq 0xfe9a
leaq 0xdb8(%rsp), %rdi
callq 0xfd1a
leaq 0x1e8(%rsp), %rdi
callq 0xfe9a
jmp 0xef4c
jmp 0xef49
movq %rax, %r14
leaq 0x80(%rsp), %rbx
leaq 0x60(%rsp), %r15
movq 0x90(%rsp), %rdi
leaq 0xa0(%rsp), %rax
cmpq %rax, %rdi
je 0xef7e
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0xb480
movq 0xb0(%rsp), %rdi
leaq 0xc0(%rsp), %rax
cmpq %rax, %rdi
je 0xefa3
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0xb480
movq 0xf0(%rsp), %rdi
leaq 0x100(%rsp), %rax
cmpq %rax, %rdi
je 0xefc8
movq 0x100(%rsp), %rsi
incq %rsi
callq 0xb480
movq 0xd0(%rsp), %rdi
leaq 0xe0(%rsp), %rax
cmpq %rax, %rdi
je 0xefed
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0xb480
movq 0x50(%rsp), %rdi
cmpq %r15, %rdi
je 0xf004
movq 0x60(%rsp), %rsi
incq %rsi
callq 0xb480
movq 0x70(%rsp), %rdi
cmpq %rbx, %rdi
je 0xf01e
movq 0x80(%rsp), %rsi
incq %rsi
callq 0xb480
movq %r14, %rdi
callq 0xb7d0