// File: /workspace/github_cpp_makefile_star2_O1/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 0x300d9(%rip), %r15     # 0x3d470
movq $0x0, 0x30(%rsp)
movq $0x0, 0x20(%rsp)
movl %ebp, %edi
movq %r13, %rsi
leaq 0x1c541(%rip), %rdx     # 0x298f6
movq %r15, %rcx
leaq 0x2c(%rsp), %r8
callq 0xb770
cmpl $0x71, %eax
jg 0xd3f2
cmpl $0x60, %eax
jle 0xd444
addl $-0x61, %eax
cmpl $0x7, %eax
ja 0xea80
leaq 0x1bc25(%rip), %rcx     # 0x29004
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0xd0(%rsp), %rbx
jmp 0xd416
addl $-0x72, %eax
cmpl $0x6, %eax
ja 0xea80
leaq 0x1bc1f(%rip), %rcx     # 0x29024
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
leaq 0xf0(%rsp), %rbx
jmpq *%rax
movq 0x2faf3(%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 0xd3a9
testl %eax, %eax
jne 0xd673
movslq 0x2c(%rsp), %rax
shlq $0x5, %rax
cmpq $0x0, 0x10(%rax,%r15)
jne 0xd3a9
jmp 0xe9db
movq 0x2faa3(%rip), %rax     # 0x3cf10
movq (%rax), %rsi
leaq 0x3b0(%rsp), %rdi
leaq 0xdb8(%rsp), %rdx
callq 0xf044
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 0xea9b
movl (%rbx), %eax
testl %eax, %eax
je 0xd642
cmpl $0x22, %eax
jne 0xd645
jmp 0xead2
movb $0x1, %al
movq %rax, 0x20(%rsp)
jmp 0xd3a9
movq 0x2fa1f(%rip), %rax     # 0x3cf10
movq (%rax), %rsi
leaq 0x3b0(%rsp), %rdi
leaq 0xdb8(%rsp), %rdx
callq 0xf044
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 0xea8f
movl (%rbx), %eax
testl %eax, %eax
je 0xd642
cmpl $0x22, %eax
jne 0xd645
jmp 0xeac6
movq 0x2f9a7(%rip), %rax     # 0x3cf10
movq (%rax), %rsi
leaq 0x3b0(%rsp), %rdi
leaq 0xdb8(%rsp), %rdx
callq 0xf044
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 0xeaa7
movl (%rbx), %eax
testl %eax, %eax
je 0xd642
cmpl $0x22, %eax
jne 0xd645
jmp 0xeade
movq 0x2f937(%rip), %rax     # 0x3cf10
movq (%rax), %rsi
leaq 0x3b0(%rsp), %rdi
leaq 0xdb8(%rsp), %rdx
callq 0xf044
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 0xeab3
movl (%rbx), %eax
testl %eax, %eax
je 0xd642
cmpl $0x22, %eax
jne 0xd645
jmp 0xeaea
movl %r12d, (%rbx)
movq 0x3b0(%rsp), %rdi
leaq 0x3c0(%rsp), %rax
cmpq %rax, %rdi
je 0xd3a9
movq 0x3c0(%rsp), %rsi
incq %rsi
callq 0xb480
jmp 0xd3a9
cmpl $-0x1, %eax
jne 0xe9c8
movq 0x2f90d(%rip), %r12     # 0x3cf90
movslq (%r12), %rax
leal 0x2(%rax), %ecx
cmpl %ebp, %ecx
jg 0xeabf
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 0xd75a
leal 0x4(%rax), %ecx
cmpl %ebp, %ecx
jne 0xeaf6
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 0x1fe58
leaq 0xdb8(%rsp), %rdi
leaq 0x1e0(%rsp), %rsi
movq $-0x1, %rdx
movq $-0x1, %rcx
callq 0xf2e4
leaq 0x1d0(%rsp), %rdi
leaq 0x50(%rsp), %rsi
movl $0x8, %edx
movl $0x8, %ecx
callq 0x1fe58
leaq 0x10f8(%rsp), %rdi
leaq 0x1d0(%rsp), %rsi
movq $-0x1, %rdx
movq $-0x1, %rcx
callq 0xf2e4
leaq 0x1c0(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
movl $0x8, %edx
movl $0x8, %ecx
callq 0x1fe58
leaq 0xf58(%rsp), %rdi
leaq 0x1c0(%rsp), %rsi
movq $-0x1, %rdx
movq $-0x1, %rcx
callq 0xf2e4
leaq 0x818(%rsp), %rdi
callq 0xf412
leaq 0x70(%rsp), %rdi
callq 0xbd51
testb %al, %al
je 0xd8e3
leaq 0x3b0(%rsp), %rdi
movl $0x1000, %edx           # imm = 0x1000
movl $0xf, %esi
callq 0xf4a4
movq 0x820(%rsp), %rdi
leaq 0x3b0(%rsp), %rsi
movq $-0x1, %rdx
movq $-0x1, %rcx
callq 0x21984
leaq 0x440(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd894
movq 0x440(%rsp), %rsi
incq %rsi
callq 0xb480
leaq 0x3f0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd8b5
movq 0x3f0(%rsp), %rsi
incq %rsi
callq 0xb480
leaq 0x3d0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd8d6
movq 0x3d0(%rsp), %rsi
incq %rsi
callq 0xb480
leaq 0x3b8(%rsp), %rdi
callq 0xfe32
leaq 0x3b0(%rsp), %rsi
leaq 0xdb8(%rsp), %rax
movq %rax, (%rsi)
movq 0x820(%rsp), %rdi
movq $-0x1, %rdx
movq $-0x1, %rcx
callq 0x24074
leaq 0x6e0(%rsp), %rdi
callq 0xf412
leaq 0x50(%rsp), %rdi
callq 0xbd51
testb %al, %al
je 0xd9da
leaq 0x3b0(%rsp), %rdi
movl $0x1000, %edx           # imm = 0x1000
movl $0xf, %esi
callq 0xf4a4
movq 0x6e8(%rsp), %rdi
leaq 0x3b0(%rsp), %rsi
movq $-0x1, %rdx
movq $-0x1, %rcx
callq 0x21984
leaq 0x440(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd98b
movq 0x440(%rsp), %rsi
incq %rsi
callq 0xb480
leaq 0x3f0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd9ac
movq 0x3f0(%rsp), %rsi
incq %rsi
callq 0xb480
leaq 0x3d0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd9cd
movq 0x3d0(%rsp), %rsi
incq %rsi
callq 0xb480
leaq 0x3b8(%rsp), %rdi
callq 0xfe32
leaq 0x3b0(%rsp), %rsi
leaq 0x10f8(%rsp), %rax
movq %rax, (%rsi)
movq 0x6e8(%rsp), %rdi
movq $-0x1, %rdx
movq $-0x1, %rcx
callq 0x24074
leaq 0x950(%rsp), %rdi
callq 0xf412
cmpq $0x0, 0xd8(%rsp)
je 0xdae3
leaq 0xd0(%rsp), %rdi
callq 0xbd51
testb %al, %al
je 0xdae3
leaq 0x3b0(%rsp), %rdi
movl $0x1000, %edx           # imm = 0x1000
movl $0xf, %esi
callq 0xf4a4
movq 0x958(%rsp), %rdi
leaq 0x3b0(%rsp), %rsi
movq $-0x1, %rdx
movq $-0x1, %rcx
callq 0x21984
leaq 0x440(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xda94
movq 0x440(%rsp), %rsi
incq %rsi
callq 0xb480
leaq 0x3f0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xdab5
movq 0x3f0(%rsp), %rsi
incq %rsi
callq 0xb480
leaq 0x3d0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xdad6
movq 0x3d0(%rsp), %rsi
incq %rsi
callq 0xb480
leaq 0x3b8(%rsp), %rdi
callq 0xfe32
leaq 0x3b0(%rsp), %rsi
leaq 0xf58(%rsp), %rax
movq %rax, (%rsi)
movq 0x958(%rsp), %rdi
movq $-0x1, %rdx
movq $-0x1, %rcx
callq 0x24074
cmpq $0x0, 0xb8(%rsp)
jne 0xdb66
leaq 0x3b0(%rsp), %rdi
leaq 0x70(%rsp), %rsi
callq 0xbfd1
leaq 0xb0(%rsp), %rdi
leaq 0x3b0(%rsp), %rbx
movq %rbx, %rsi
callq 0xb5a0
movq (%rbx), %rdi
leaq 0x3c0(%rsp), %rax
cmpq %rax, %rdi
je 0xdb66
movq 0x3c0(%rsp), %rsi
incq %rsi
callq 0xb480
cmpq $0x0, 0x98(%rsp)
jne 0xdbbb
leaq 0x3b0(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0xbfd1
leaq 0x90(%rsp), %rdi
leaq 0x3b0(%rsp), %rbx
movq %rbx, %rsi
callq 0xb5a0
movq (%rbx), %rdi
leaq 0x3c0(%rsp), %rax
cmpq %rax, %rdi
je 0xdbbb
movq 0x3c0(%rsp), %rsi
incq %rsi
callq 0xb480
testb $0x1, 0x20(%rsp)
je 0xdc39
movq 0x2f3b7(%rip), %rdi     # 0x3cf80
leaq 0x1bd36(%rip), %rsi     # 0x29906
movl $0xb, %edx
callq 0xb540
movq 0xb0(%rsp), %rsi
movq 0xb8(%rsp), %rdx
movq 0x2f38f(%rip), %rdi     # 0x3cf80
callq 0xb540
movq %rax, %rbx
leaq 0x1bd12(%rip), %rsi     # 0x29912
movl $0x5, %edx
movq %rax, %rdi
callq 0xb540
movq 0x90(%rsp), %rsi
movq 0x98(%rsp), %rdx
movq %rbx, %rdi
callq 0xb540
leaq 0x1bcec(%rip), %rsi     # 0x29918
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 0xf5dc
leaq 0xb0(%rsp), %rdi
callq 0xbf31
testb %al, %al
je 0xde2a
leaq 0x320(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x1b839(%rip), %rdx     # 0x294db
leaq 0x310(%rsp), %rbx
movq %rbx, %rdi
movq %rdx, %rsi
callq 0x10ff6
leaq 0x300(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0x1b812(%rip), %rdx     # 0x294db
leaq 0x2f0(%rsp), %r14
movq %r14, %rdi
movq %rdx, %rsi
callq 0x10ff6
movq 0x2f26d(%rip), %rax     # 0x3cf50
movl (%rax), %esi
movq 0x2f20c(%rip), %rax     # 0x3cef8
movl (%rax), %edx
movq 0x2f2a3(%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 0xf66e
leaq 0x5b0(%rsp), %rdi
leaq 0x110(%rsp), %rsi
movl $0x1000, %edx           # imm = 0x1000
callq 0xf708
movq 0xa90(%rsp), %rdi
leaq 0x5b0(%rsp), %rsi
movq $-0x1, %rdx
movq $-0x1, %rcx
callq 0x25f1e
leaq 0x5f0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xdd80
movq 0x5f0(%rsp), %rsi
incq %rsi
callq 0xb480
leaq 0x5d0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xdda1
movq 0x5d0(%rsp), %rsi
incq %rsi
callq 0xb480
leaq 0x5b8(%rsp), %rdi
callq 0xfe32
leaq 0x158(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xddcf
movq 0x158(%rsp), %rsi
incq %rsi
callq 0xb480
leaq 0x138(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xddf0
movq 0x138(%rsp), %rsi
incq %rsi
callq 0xb480
movq 0x2f0(%rsp), %rdi
cmpq %r12, %rdi
je 0xde0d
movq 0x300(%rsp), %rsi
incq %rsi
callq 0xb480
movq 0x310(%rsp), %rdi
cmpq %r15, %rdi
je 0xde2a
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 0x27b92
leaq 0x5b0(%rsp), %rdi
callq 0xf5dc
leaq 0x90(%rsp), %rdi
callq 0xbf31
testb %al, %al
je 0xe015
leaq 0x2e0(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x1b64e(%rip), %rdx     # 0x294db
leaq 0x2d0(%rsp), %rbx
movq %rbx, %rdi
movq %rdx, %rsi
callq 0x10ff6
leaq 0x2c0(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0x1b627(%rip), %rdx     # 0x294db
leaq 0x2b0(%rsp), %r14
movq %r14, %rdi
movq %rdx, %rsi
callq 0x10ff6
movq 0x2f082(%rip), %rax     # 0x3cf50
movl (%rax), %esi
movq 0x2f021(%rip), %rax     # 0x3cef8
movl (%rax), %edx
movq 0x2f0b8(%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 0xf66e
leaq 0x110(%rsp), %rdi
leaq 0x230(%rsp), %rsi
movl $0x1000, %edx           # imm = 0x1000
callq 0xf708
movq 0x5b8(%rsp), %rdi
leaq 0x110(%rsp), %rsi
movq $-0x1, %rdx
movq $-0x1, %rcx
callq 0x25f1e
leaq 0x150(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xdf6b
movq 0x150(%rsp), %rsi
incq %rsi
callq 0xb480
leaq 0x130(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xdf8c
movq 0x130(%rsp), %rsi
incq %rsi
callq 0xb480
leaq 0x118(%rsp), %rdi
callq 0xfe32
leaq 0x278(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xdfba
movq 0x278(%rsp), %rsi
incq %rsi
callq 0xb480
leaq 0x258(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xdfdb
movq 0x258(%rsp), %rsi
incq %rsi
callq 0xb480
movq 0x2b0(%rsp), %rdi
cmpq %r12, %rdi
je 0xdff8
movq 0x2c0(%rsp), %rsi
incq %rsi
callq 0xb480
movq 0x2d0(%rsp), %rdi
cmpq %r15, %rdi
je 0xe015
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 0x27b92
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 0xe7b7
movq 0xf8(%rsp), %rdx
testq %rdx, %rdx
je 0xe876
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 0x10f66
leaq 0x210(%rsp), %rdi
leaq 0x190(%rsp), %rsi
callq 0xd173
movq 0x210(%rsp), %rdi
cmpq %r15, %rdi
je 0xe1b2
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 0xe316
leaq 0x6f0(%rsp), %rdi
movq %r13, %rsi
callq 0xbca9
movq 0x6f0(%rsp), %rax
movq -0x18(%rax), %rax
testb $0x5, 0x710(%rsp,%rax)
jne 0xe316
leaq 0x960(%rsp), %rdi
leaq 0x330(%rsp), %rsi
callq 0xbca9
movq 0x960(%rsp), %rax
movq -0x18(%rax), %rax
testb $0x5, 0x980(%rsp,%rax)
jne 0xe316
movq %r12, 0x1f0(%rsp)
movq 0x370(%rsp), %rsi
movq 0x378(%rsp), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0x10f66
leaq 0x190(%rsp), %rdi
movq %r15, %rsi
callq 0x28718
cmpq %rbx, %rax
je 0xe2f0
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 0xc950
movq %rbp, %rdi
movq %r15, %rsi
callq 0xfb36
movq %r13, %rdi
movq %r15, %rsi
callq 0xfb36
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 0xe1dc
movq 0x200(%rsp), %rsi
incq %rsi
callq 0xb480
jmp 0xe1dc
leaq 0x190(%rsp), %rdi
callq 0xfe64
leaq 0xa88(%rsp), %rdi
callq 0x287a1
leaq 0x5b0(%rsp), %rdi
callq 0x287a1
movq 0x390(%rsp), %rdi
leaq 0x3a0(%rsp), %rax
cmpq %rax, %rdi
je 0xe362
movq 0x3a0(%rsp), %rsi
incq %rsi
callq 0xb480
movq 0x370(%rsp), %rdi
leaq 0x380(%rsp), %rax
cmpq %rax, %rdi
je 0xe387
movq 0x380(%rsp), %rsi
incq %rsi
callq 0xb480
movq 0x350(%rsp), %rdi
leaq 0x360(%rsp), %rax
cmpq %rax, %rdi
je 0xe3ac
movq 0x360(%rsp), %rsi
incq %rsi
callq 0xb480
movq 0x330(%rsp), %rdi
leaq 0x340(%rsp), %rax
cmpq %rax, %rdi
je 0xe3d1
movq 0x340(%rsp), %rsi
incq %rsi
callq 0xb480
movq 0x290(%rsp), %rdi
leaq 0x2a0(%rsp), %rax
cmpq %rax, %rdi
je 0xe3f6
movq 0x2a0(%rsp), %rsi
incq %rsi
callq 0xb480
movq 0x270(%rsp), %rdi
leaq 0x280(%rsp), %rax
cmpq %rax, %rdi
je 0xe41b
movq 0x280(%rsp), %rsi
incq %rsi
callq 0xb480
movq 0x250(%rsp), %rdi
leaq 0x260(%rsp), %rax
cmpq %rax, %rdi
je 0xe440
movq 0x260(%rsp), %rsi
incq %rsi
callq 0xb480
movq 0x230(%rsp), %rdi
leaq 0x240(%rsp), %rax
cmpq %rax, %rdi
je 0xe465
movq 0x240(%rsp), %rsi
incq %rsi
callq 0xb480
movq 0x170(%rsp), %rdi
leaq 0x180(%rsp), %rax
cmpq %rax, %rdi
je 0xe48a
movq 0x180(%rsp), %rsi
incq %rsi
callq 0xb480
movq 0x150(%rsp), %rdi
leaq 0x160(%rsp), %rax
cmpq %rax, %rdi
je 0xe4af
movq 0x160(%rsp), %rsi
incq %rsi
callq 0xb480
movq 0x130(%rsp), %rdi
leaq 0x140(%rsp), %rax
cmpq %rax, %rdi
je 0xe4d4
movq 0x140(%rsp), %rsi
incq %rsi
callq 0xb480
movq 0x110(%rsp), %rdi
leaq 0x120(%rsp), %rax
cmpq %rax, %rdi
je 0xe4f9
movq 0x120(%rsp), %rsi
incq %rsi
callq 0xb480
leaq 0x2dea8(%rip), %rbx     # 0x3c3a8
leaq 0x5b0(%rsp), %rdi
movq %rbx, %rsi
callq 0x25c14
leaq 0x5d8(%rsp), %rdi
callq 0xb180
leaq 0xa88(%rsp), %rdi
movq %rbx, %rsi
callq 0x25c14
leaq 0xab0(%rsp), %rdi
callq 0xb180
movq 0x2e9f7(%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 0x2d271(%rip), %rbx     # 0x3b820
leaq 0x950(%rsp), %rdi
movq %rbx, %rsi
callq 0x214a6
leaq 0x980(%rsp), %rdi
callq 0xb180
leaq 0x6e0(%rsp), %rdi
movq %rbx, %rsi
callq 0x214a6
leaq 0x710(%rsp), %rdi
callq 0xb180
leaq 0x818(%rsp), %rdi
movq %rbx, %rsi
callq 0x214a6
leaq 0x848(%rsp), %rdi
callq 0xb180
leaq 0x2c9a3(%rip), %rbx     # 0x3afb0
leaq 0xf68(%rsp), %rdi
movq %rbx, -0x10(%rdi)
movl $0x98, %r14d
leaq 0xf58(%rsp), %r13
addq %r14, %r13
leaq 0x2c9a7(%rip), %r15     # 0x3afd8
movq %r15, 0x88(%rdi)
xorl %r12d, %r12d
movq %r12, -0x8(%rdi)
callq 0x10112
movq %r13, %rdi
callq 0xb180
leaq 0x1c8(%rsp), %rdi
callq 0xfe32
leaq 0x1108(%rsp), %rdi
movq %rbx, -0x10(%rdi)
leaq 0x10f8(%rsp), %r13
addq %r14, %r13
movq %r15, 0x88(%rdi)
movq %r12, -0x8(%rdi)
callq 0x10112
movq %r13, %rdi
callq 0xb180
leaq 0x1d8(%rsp), %rdi
callq 0xfe32
leaq 0xdc8(%rsp), %rdi
movq %rbx, -0x10(%rdi)
leaq 0xdb8(%rsp), %rbx
addq %r14, %rbx
movq %r15, 0x88(%rdi)
movq %r12, -0x8(%rdi)
callq 0x10112
movq %rbx, %rdi
callq 0xb180
leaq 0x1e8(%rsp), %rdi
callq 0xfe32
movq 0x90(%rsp), %rdi
leaq 0xa0(%rsp), %rax
cmpq %rax, %rdi
je 0xe6f6
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 0xe728
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0xb480
movq 0xf0(%rsp), %rdi
leaq 0x100(%rsp), %rax
cmpq %rax, %rdi
je 0xe74d
movq 0x100(%rsp), %rsi
incq %rsi
callq 0xb480
movq 0xd0(%rsp), %rdi
leaq 0xe0(%rsp), %rax
cmpq %rax, %rdi
je 0xe772
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0xb480
movq 0x50(%rsp), %rdi
cmpq %r14, %rdi
je 0xe789
movq 0x60(%rsp), %rsi
incq %rsi
callq 0xb480
movq 0x70(%rsp), %rdi
cmpq %rbx, %rdi
je 0xe7a3
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 0xe323
movq %r15, %rdi
movq %rbx, %rsi
callq 0xbca9
movq 0x6f0(%rsp), %rax
movq -0x18(%rax), %rax
testb $0x5, 0x710(%rsp,%rax)
jne 0xe323
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 0xc950
leaq 0xa98(%rsp), %rdi
movq %rbp, %rsi
callq 0xbbfc
movq %r13, %rdi
movq %rbx, %rsi
callq 0xbbfc
jmp 0xe7e9
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 0xe323
leaq 0x6f0(%rsp), %rdi
movq %rbp, %rsi
callq 0xbca9
movq 0x6f0(%rsp), %rax
movq -0x18(%rax), %rax
testb $0x5, 0x710(%rsp,%rax)
jne 0xe323
leaq 0x960(%rsp), %rdi
leaq 0x330(%rsp), %rsi
callq 0xbca9
movq 0x960(%rsp), %rax
movq -0x18(%rax), %rax
testb $0x5, 0x980(%rsp,%rax)
jne 0xe323
movq %rbx, 0x190(%rsp)
movq 0x370(%rsp), %rsi
movq 0x378(%rsp), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0x10f66
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 0xc950
movq %r13, %rdi
movq %r15, %rsi
callq 0xfb36
movq %rbp, %rdi
movq %r15, %rsi
callq 0xfb36
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 0xe8a8
movq 0x1a0(%rsp), %rsi
incq %rsi
callq 0xb480
jmp 0xe8a8
cmpl $0x3f, %eax
jne 0xea80
callq 0xce33
jmp 0xea85
addq %rax, %r15
movq (%r15), %rbx
leaq 0x3b0(%rsp), %rdi
leaq 0x3c0(%rsp), %rax
movq %rax, (%rdi)
leaq 0x1aea0(%rip), %rsi     # 0x2989b
leaq 0x1aea0(%rip), %rdx     # 0x298a2
callq 0x10ff6
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 0xea3c
movq 0x3c0(%rsp), %rsi
incq %rsi
callq 0xb480
testl %ebx, %ebx
jne 0xea80
leaq 0x3b0(%rsp), %rdi
callq 0xcd41
movq 0x3b0(%rsp), %rsi
movq 0x3b8(%rsp), %rdx
movq 0x2e51c(%rip), %rdi     # 0x3cf80
callq 0xb540
movq %rax, %rdi
callq 0xb250
leaq 0x3b0(%rsp), %rdi
callq 0xb240
jmp 0xea85
callq 0xce33
movl $0x1, %edi
callq 0xb590
leaq 0x1ae87(%rip), %rdi     # 0x2991d
callq 0xb2c0
leaq 0x1ae7b(%rip), %rdi     # 0x2991d
callq 0xb2c0
leaq 0x1ae6f(%rip), %rdi     # 0x2991d
callq 0xb2c0
leaq 0x1ae63(%rip), %rdi     # 0x2991d
callq 0xb2c0
callq 0xce33
jmp 0xea85
leaq 0x1ae50(%rip), %rdi     # 0x2991d
callq 0xb680
leaq 0x1ae44(%rip), %rdi     # 0x2991d
callq 0xb680
leaq 0x1ae38(%rip), %rdi     # 0x2991d
callq 0xb680
leaq 0x1ae2c(%rip), %rdi     # 0x2991d
callq 0xb680
callq 0xce33
jmp 0xea85
movq %rax, %r14
leaq 0x3b0(%rsp), %rdi
callq 0xf57c
jmp 0xee2a
jmp 0xed3f
jmp 0xed3f
jmp 0xed3f
movq %rax, %r14
movq 0x210(%rsp), %rdi
cmpq %r15, %rdi
je 0xed95
movq 0x220(%rsp), %rsi
jmp 0xed8d
jmp 0xed6b
movq %rax, %r14
leaq 0x110(%rsp), %rdi
callq 0xfabc
jmp 0xeb5c
movq %rax, %r14
leaq 0x230(%rsp), %rdi
callq 0xfafe
jmp 0xeb6e
movq %rax, %r14
movq 0x2b0(%rsp), %rdi
cmpq %r12, %rdi
je 0xeb90
movq 0x2c0(%rsp), %rsi
incq %rsi
callq 0xb480
jmp 0xeb90
movq %rax, %r14
movq 0x2d0(%rsp), %rdi
cmpq %r15, %rdi
je 0xedce
movq 0x2e0(%rsp), %rsi
incq %rsi
callq 0xb480
jmp 0xedce
jmp 0xece2
movq %rax, %r14
leaq 0x5b0(%rsp), %rdi
callq 0xfabc
jmp 0xebd0
movq %rax, %r14
leaq 0x110(%rsp), %rdi
callq 0xfafe
jmp 0xebe2
movq %rax, %r14
movq 0x2f0(%rsp), %rdi
cmpq %r12, %rdi
je 0xec04
movq 0x300(%rsp), %rsi
incq %rsi
callq 0xb480
jmp 0xec04
movq %rax, %r14
movq 0x310(%rsp), %rdi
cmpq %r15, %rdi
je 0xedef
movq 0x320(%rsp), %rsi
incq %rsi
callq 0xb480
jmp 0xedef
jmp 0xecea
movq %rax, %r14
leaq 0x3b0(%rsp), %rdi
callq 0xf57c
jmp 0xee4b
jmp 0xecf2
movq %rax, %r14
leaq 0x3b0(%rsp), %rdi
callq 0xf57c
jmp 0xee6c
jmp 0xecfa
jmp 0xecea
movq %rax, %r14
jmp 0xee10
movq %rax, %r14
jmp 0xee1d
jmp 0xed3f
jmp 0xecf2
jmp 0xecfa
movq %rax, %r14
jmp 0xee8d
movq %rax, %r14
jmp 0xee9a
movq %rax, %r14
jmp 0xeea7
movq %rax, %r14
jmp 0xeeb4
movq %rax, %r14
jmp 0xeec1
movq %rax, %r14
jmp 0xeece
jmp 0xeedf
jmp 0xeedf
jmp 0xeedf
jmp 0xeedf
jmp 0xeedf
jmp 0xecd0
jmp 0xecd0
jmp 0xecd0
movq %rax, %r14
cmpl $0x0, (%rbx)
jne 0xed0a
movl %r12d, (%rbx)
jmp 0xed0a
jmp 0xeda4
movq %rax, %r14
jmp 0xedce
movq %rax, %r14
jmp 0xedef
movq %rax, %r14
jmp 0xee4b
movq %rax, %r14
jmp 0xee6c
jmp 0xeda4
movq %rax, %r14
movq 0x3b0(%rsp), %rdi
leaq 0x3c0(%rsp), %rax
cmpq %rax, %rdi
je 0xeee2
movq 0x3c0(%rsp), %rsi
incq %rsi
callq 0xb480
jmp 0xeee2
jmp 0xeedf
jmp 0xed6b
movq %rax, %r14
jmp 0xee2a
jmp 0xeda4
movq %rax, %r14
movq 0x190(%rsp), %rdi
cmpq %rbx, %rdi
je 0xeda7
movq 0x1a0(%rsp), %rsi
incq %rsi
callq 0xb480
jmp 0xeda7
movq %rax, %r14
jmp 0xed95
jmp 0xeedf
movq %rax, %r14
movq 0x1f0(%rsp), %rdi
cmpq %r12, %rdi
je 0xed95
movq 0x200(%rsp), %rsi
incq %rsi
callq 0xb480
leaq 0x190(%rsp), %rdi
callq 0xfe64
jmp 0xeda7
movq %rax, %r14
leaq 0x330(%rsp), %rdi
callq 0xfc10
leaq 0x230(%rsp), %rdi
callq 0xfc10
leaq 0x110(%rsp), %rdi
callq 0xfc10
leaq 0x2d5d3(%rip), %rsi     # 0x3c3a8
leaq 0x5b0(%rsp), %rdi
callq 0x25c14
leaq 0x5d8(%rsp), %rdi
callq 0xb180
leaq 0x2d5b2(%rip), %rsi     # 0x3c3a8
leaq 0xa88(%rsp), %rdi
callq 0x25c14
leaq 0xab0(%rsp), %rdi
callq 0xb180
leaq 0xbb8(%rsp), %rdi
callq 0xb6b0
leaq 0x3b0(%rsp), %rdi
callq 0xb6b0
leaq 0x2c9ef(%rip), %rsi     # 0x3b820
leaq 0x950(%rsp), %rdi
callq 0x214a6
leaq 0x980(%rsp), %rdi
callq 0xb180
leaq 0x2c9ce(%rip), %rsi     # 0x3b820
leaq 0x6e0(%rsp), %rdi
callq 0x214a6
leaq 0x710(%rsp), %rdi
callq 0xb180
leaq 0x2c9ad(%rip), %rsi     # 0x3b820
leaq 0x818(%rsp), %rdi
callq 0x214a6
leaq 0x848(%rsp), %rdi
callq 0xb180
leaq 0xf58(%rsp), %rdi
callq 0xfcb2
leaq 0x1c8(%rsp), %rdi
callq 0xfe32
leaq 0x10f8(%rsp), %rdi
callq 0xfcb2
leaq 0x1d8(%rsp), %rdi
callq 0xfe32
leaq 0xdb8(%rsp), %rdi
callq 0xfcb2
leaq 0x1e8(%rsp), %rdi
callq 0xfe32
jmp 0xeee2
jmp 0xeedf
movq %rax, %r14
leaq 0x80(%rsp), %rbx
leaq 0x60(%rsp), %r15
movq 0x90(%rsp), %rdi
leaq 0xa0(%rsp), %rax
cmpq %rax, %rdi
je 0xef14
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0xb480
movq 0xb0(%rsp), %rdi
leaq 0xc0(%rsp), %rax
cmpq %rax, %rdi
je 0xef39
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0xb480
movq 0xf0(%rsp), %rdi
leaq 0x100(%rsp), %rax
cmpq %rax, %rdi
je 0xef5e
movq 0x100(%rsp), %rsi
incq %rsi
callq 0xb480
movq 0xd0(%rsp), %rdi
leaq 0xe0(%rsp), %rax
cmpq %rax, %rdi
je 0xef83
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0xb480
movq 0x50(%rsp), %rdi
cmpq %r15, %rdi
je 0xef9a
movq 0x60(%rsp), %rsi
incq %rsi
callq 0xb480
movq 0x70(%rsp), %rdi
cmpq %rbx, %rdi
je 0xefb4
movq 0x80(%rsp), %rsi
incq %rsi
callq 0xb480
movq %r14, %rdi
callq 0xb7d0