// File: BenLangmead[P]bowtie/ebwt_search.cpp
// Function: bowtie
int bowtie(int argc, const char **argv) {
	try {
  #if (__cplusplus >= 201103L)
  #ifdef WITH_AFFINITY
    //CWILKS: adjust this depending on # of hyperthreads per core
    pinning_observer pinner( 2 /* the number of hyper threads on each core */ );
          pinner.observe( true );
  #endif
  #endif
		// Reset all global state, including getopt state
		opterr = optind = 1;
		resetOptions();
		for(int i = 0; i < argc; i++) {
			argstr += argv[i];
			if(i < argc-1) argstr += " ";
		}
		string query;   // read query string(s) from this file
		EList<string> queries;
		string outfile; // write query results to this file
		if(startVerbose) { cerr << "Entered main(): "; logTime(cerr, true); }
		parseOptions(argc, argv);
		argv0 = argv[0];
		if(showVersion) {
			cout << argv0 << " version " << BOWTIE_VERSION << endl;
			if(sizeof(void*) == 4) {
				cout << "32-bit" << endl;
			} else if(sizeof(void*) == 8) {
				cout << "64-bit" << endl;
			} else {
				cout << "Neither 32- nor 64-bit: sizeof(void*) = " << sizeof(void*) << endl;
			}
			cout << "Built on " << BUILD_HOST << endl;
			cout << BUILD_TIME << endl;
			cout << "Compiler: " << COMPILER_VERSION << endl;
			cout << "Options: " << COMPILER_OPTIONS << endl;
			cout << "Sizeof {int, long, long long, void*, size_t, off_t}: {"
				 << sizeof(int)
				 << ", " << sizeof(long) << ", " << sizeof(long long)
				 << ", " << sizeof(void *) << ", " << sizeof(size_t)
				 << ", " << sizeof(off_t) << "}" << endl;
			return 0;
		}
	#ifdef CHUD_PROFILING
		chudInitialize();
		chudAcquireRemoteAccess();
	#endif
		{
			Timer _t(cerr, "Overall time: ", timing);
			if(startVerbose) {
				cerr << "Parsing index and read arguments: "; logTime(cerr, true);
			}

			// Get index basename
			if (ebwtFile.empty()) {
				if(optind >= argc) {
					cerr << "No index, query, or output file specified!" << endl;
					printUsage(cerr);
					return 1;
				}
				std::cerr << "Setting the index via positional argument"
					  << " will be deprecated in a future release."
					  << " Please use -x option instead." << std::endl;
				ebwtFile = argv[optind++];
			}

			// Get query filename
			if(optind >= argc) {
				if(mates1.size() > 0 || mates12.size() > 0) {
					query = "";
				} else {
					cerr << "No query or output file specified!" << endl;
					printUsage(cerr);
					return 1;
				}
			} else if (mates1.size() == 0 && mates12.size() == 0) {
				query = argv[optind++];
				// Tokenize the list of query files
				tokenize(query, ",", queries);
				if(queries.size() < 1) {
					cerr << "Tokenized query file list was empty!" << endl;
					printUsage(cerr);
					return 1;
				}
			}

			// Get output filename
			if(optind < argc) {
				outfile = argv[optind++];
			}

			// Extra parametesr?
			if(optind < argc) {
				cerr << "Extra parameter(s) specified: ";
				for(int i = optind; i < argc; i++) {
					cerr << "\"" << argv[i] << "\"";
					if(i < argc-1) cerr << ", ";
				}
				cerr << endl;
				if(mates1.size() > 0) {
					cerr << "Note that if <mates> files are specified using -1/-2, a <singles> file cannot" << endl
						 << "also be specified.  Please run bowtie separately for mates and singles." << endl;
				}
				throw 1;
			}

			// Optionally summarize
			if(verbose) {
				cout << "Input ebwt file: \"" << ebwtFile << "\"" << endl;
				cout << "Query inputs (DNA, " << file_format_names[format] << "):" << endl;
				for(size_t i = 0; i < queries.size(); i++) {
					cout << "  " << queries[i] << endl;
				}
				cout << "Quality inputs:" << endl;
				for(size_t i = 0; i < qualities.size(); i++) {
					cout << "  " << qualities[i] << endl;
				}
				cout << "Output file: \"" << outfile << "\"" << endl;
				cout << "Local endianness: " << (currentlyBigEndian()? "big":"little") << endl;
				cout << "Sanity checking: " << (sanityCheck? "enabled":"disabled") << endl;
			#ifdef NDEBUG
				cout << "Assertions: disabled" << endl;
			#else
				cout << "Assertions: enabled" << endl;
			#endif
			}
			if(ipause) {
				cout << "Press key to continue..." << endl;
				getchar();
			}
			driver("DNA", ebwtFile, query, queries, qualities, outfile);
			CHUD_STOP();
		}
#ifdef CHUD_PROFILING
		chudReleaseRemoteAccess();
#endif
  #if (__cplusplus >= 201103L)
  #ifdef WITH_AFFINITY
    // Always disable observation before observers destruction
        //tracker.observe( false );
        pinner.observe( false );
  #endif
  #endif
		return 0;
	} catch(exception& e) {
		cerr << "Command: ";
		for(int i = 0; i < argc; i++) cerr << argv[i] << " ";
		cerr << endl;
		return 1;
	} catch(int e) {
		if(e != 0) {
			cerr << "Command: ";
			for(int i = 0; i < argc; i++) cerr << argv[i] << " ";
			cerr << endl;
		}
		return e;
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x340, %rsp            # imm = 0x340
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq 0x9645f(%rip), %rax     # 0xa7fc8
movl $0x1, (%rax)
movq 0x9645a(%rip), %rax     # 0xa7fd0
movl $0x1, (%rax)
callq 0x12c40
jmp 0x11b83
movl $0x0, -0x20(%rbp)
movl -0x20(%rbp), %eax
cmpl -0x8(%rbp), %eax
jge 0x11bee
movq -0x10(%rbp), %rax
movslq -0x20(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
leaq 0x997c3(%rip), %rdi     # 0xab368
callq 0xa5b0
jmp 0x11bac
movl -0x20(%rbp), %eax
movl -0x8(%rbp), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jge 0x11be1
leaq 0x997a8(%rip), %rdi     # 0xab368
leaq 0x7b53d(%rip), %rsi     # 0x8d104
callq 0xa5b0
jmp 0x11bce
jmp 0x11be1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x12a4e
jmp 0x11be3
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
jmp 0x11b8a
leaq -0x40(%rbp), %rdi
callq 0xa850
leaq -0x60(%rbp), %rdi
callq 0x27220
jmp 0x11c02
leaq -0x80(%rbp), %rdi
callq 0xa850
testb $0x1, 0x99776(%rip)     # 0xab388
je 0x11c60
movq 0x963d5(%rip), %rdi     # 0xa7ff0
leaq 0x78308(%rip), %rsi     # 0x89f2a
callq 0xa5d0
jmp 0x11c29
movq 0x963c0(%rip), %rdi     # 0xa7ff0
movl $0x1, %esi
callq 0x10f50
jmp 0x11c3c
jmp 0x11c60
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x12a45
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x12a33
movl -0x8(%rbp), %edi
movq -0x10(%rbp), %rsi
callq 0x13010
jmp 0x11c6e
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, 0x99714(%rip)     # 0xab390
cmpl $0x0, 0x99715(%rip)     # 0xab398
je 0x11fc6
movq 0x99700(%rip), %rsi     # 0xab390
movq 0x96321(%rip), %rdi     # 0xa7fb8
callq 0xa5d0
movq %rax, -0x100(%rbp)
jmp 0x11ca5
movq -0x100(%rbp), %rdi
leaq 0x78288(%rip), %rsi     # 0x89f3b
callq 0xa5d0
movq %rax, -0x108(%rbp)
jmp 0x11cc1
movq -0x108(%rbp), %rdi
leaq 0x78276(%rip), %rsi     # 0x89f45
callq 0xa5d0
movq %rax, -0x110(%rbp)
jmp 0x11cdd
movq -0x110(%rbp), %rdi
movq 0x9627d(%rip), %rsi     # 0xa7f68
callq 0xa640
jmp 0x11cf2
movq 0x962bf(%rip), %rdi     # 0xa7fb8
leaq 0x7824b(%rip), %rsi     # 0x89f4b
callq 0xa5d0
movq %rax, -0x118(%rbp)
jmp 0x11d0e
movq -0x118(%rbp), %rdi
movq 0x9624c(%rip), %rsi     # 0xa7f68
callq 0xa640
jmp 0x11d23
movq 0x9628e(%rip), %rdi     # 0xa7fb8
leaq 0x78221(%rip), %rsi     # 0x89f52
callq 0xa5d0
movq %rax, -0x120(%rbp)
jmp 0x11d3f
movq -0x120(%rbp), %rdi
leaq 0x7820f(%rip), %rsi     # 0x89f5c
callq 0xa5d0
movq %rax, -0x128(%rbp)
jmp 0x11d5b
movq -0x128(%rbp), %rdi
movq 0x961ff(%rip), %rsi     # 0xa7f68
callq 0xa640
jmp 0x11d70
movq 0x96241(%rip), %rdi     # 0xa7fb8
leaq 0x781eb(%rip), %rsi     # 0x89f69
callq 0xa5d0
movq %rax, -0x130(%rbp)
jmp 0x11d8c
movq -0x130(%rbp), %rdi
movq 0x961ce(%rip), %rsi     # 0xa7f68
callq 0xa640
jmp 0x11da1
movq 0x96210(%rip), %rdi     # 0xa7fb8
leaq 0x781ce(%rip), %rsi     # 0x89f7d
callq 0xa5d0
movq %rax, -0x138(%rbp)
jmp 0x11dbd
movq -0x138(%rbp), %rdi
leaq 0x781bd(%rip), %rsi     # 0x89f88
callq 0xa5d0
movq %rax, -0x140(%rbp)
jmp 0x11dd9
movq -0x140(%rbp), %rdi
movq 0x96181(%rip), %rsi     # 0xa7f68
callq 0xa640
jmp 0x11dee
movq 0x961c3(%rip), %rdi     # 0xa7fb8
leaq 0x781e8(%rip), %rsi     # 0x89fe4
callq 0xa5d0
movq %rax, -0x148(%rbp)
jmp 0x11e0a
movq -0x148(%rbp), %rdi
leaq 0x781d6(%rip), %rsi     # 0x89fee
callq 0xa5d0
movq %rax, -0x150(%rbp)
jmp 0x11e26
movq -0x150(%rbp), %rdi
movq 0x96134(%rip), %rsi     # 0xa7f68
callq 0xa640
jmp 0x11e3b
movq 0x96176(%rip), %rdi     # 0xa7fb8
leaq 0x781e1(%rip), %rsi     # 0x8a02a
callq 0xa5d0
movq %rax, -0x158(%rbp)
jmp 0x11e57
movq -0x158(%rbp), %rdi
movl $0x4, %esi
callq 0xa130
movq %rax, -0x160(%rbp)
jmp 0x11e71
movq -0x160(%rbp), %rdi
leaq 0x783d2(%rip), %rsi     # 0x8a251
callq 0xa5d0
movq %rax, -0x168(%rbp)
jmp 0x11e8d
movq -0x168(%rbp), %rdi
movl $0x8, %esi
callq 0xa130
movq %rax, -0x170(%rbp)
jmp 0x11ea7
movq -0x170(%rbp), %rdi
leaq 0x7839c(%rip), %rsi     # 0x8a251
callq 0xa5d0
movq %rax, -0x178(%rbp)
jmp 0x11ec3
movq -0x178(%rbp), %rdi
movl $0x8, %esi
callq 0xa130
movq %rax, -0x180(%rbp)
jmp 0x11edd
movq -0x180(%rbp), %rdi
leaq 0x78366(%rip), %rsi     # 0x8a251
callq 0xa5d0
movq %rax, -0x188(%rbp)
jmp 0x11ef9
movq -0x188(%rbp), %rdi
movl $0x8, %esi
callq 0xa130
movq %rax, -0x190(%rbp)
jmp 0x11f13
movq -0x190(%rbp), %rdi
leaq 0x78330(%rip), %rsi     # 0x8a251
callq 0xa5d0
movq %rax, -0x198(%rbp)
jmp 0x11f2f
movq -0x198(%rbp), %rdi
movl $0x8, %esi
callq 0xa130
movq %rax, -0x1a0(%rbp)
jmp 0x11f49
movq -0x1a0(%rbp), %rdi
leaq 0x782fa(%rip), %rsi     # 0x8a251
callq 0xa5d0
movq %rax, -0x1a8(%rbp)
jmp 0x11f65
movq -0x1a8(%rbp), %rdi
movl $0x8, %esi
callq 0xa130
movq %rax, -0x1b0(%rbp)
jmp 0x11f7f
movq -0x1b0(%rbp), %rdi
leaq 0x7783b(%rip), %rsi     # 0x897c8
callq 0xa5d0
movq %rax, -0x1b8(%rbp)
jmp 0x11f9b
movq -0x1b8(%rbp), %rdi
movq 0x95fbf(%rip), %rsi     # 0xa7f68
callq 0xa640
jmp 0x11fb0
movl $0x0, -0x4(%rbp)
movl $0x1, -0x84(%rbp)
jmp 0x12a13
movl 0x993d0(%rip), %eax     # 0xab39c
testl %eax, %eax
setne %al
movzbl %al, %ecx
movq 0x96015(%rip), %rsi     # 0xa7ff0
leaq 0x7807f(%rip), %rdx     # 0x8a061
leaq -0xa8(%rbp), %rdi
callq 0x273f0
jmp 0x11ff0
testb $0x1, 0x99391(%rip)     # 0xab388
je 0x12034
movq 0x95ff0(%rip), %rdi     # 0xa7ff0
leaq 0x78069(%rip), %rsi     # 0x8a070
callq 0xa5d0
jmp 0x1200e
movq 0x95fdb(%rip), %rdi     # 0xa7ff0
movl $0x1, %esi
callq 0x10f50
jmp 0x12021
jmp 0x12034
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x12a05
leaq 0x992fd(%rip), %rdi     # 0xab338
callq 0xaa90
testb $0x1, %al
jne 0x12049
jmp 0x1213d
movq 0x95f78(%rip), %rax     # 0xa7fc8
movl (%rax), %eax
cmpl -0x8(%rbp), %eax
jl 0x120ac
movq 0x95f92(%rip), %rdi     # 0xa7ff0
leaq 0x7802e(%rip), %rsi     # 0x8a093
callq 0xa5d0
movq %rax, -0x1c0(%rbp)
jmp 0x12073
movq -0x1c0(%rbp), %rdi
movq 0x95ee7(%rip), %rsi     # 0xa7f68
callq 0xa640
jmp 0x12088
movq 0x95f61(%rip), %rdi     # 0xa7ff0
callq 0x14950
jmp 0x12096
movl $0x1, -0x4(%rbp)
movl $0x1, -0x84(%rbp)
jmp 0x129da
movq 0x95f3d(%rip), %rdi     # 0xa7ff0
leaq 0x78004(%rip), %rsi     # 0x8a0be
callq 0xa5d0
movq %rax, -0x1c8(%rbp)
jmp 0x120c8
movq -0x1c8(%rbp), %rdi
leaq 0x78012(%rip), %rsi     # 0x8a0e8
callq 0xa5d0
movq %rax, -0x1d0(%rbp)
jmp 0x120e4
movq -0x1d0(%rbp), %rdi
leaq 0x7801f(%rip), %rsi     # 0x8a111
callq 0xa5d0
movq %rax, -0x1d8(%rbp)
jmp 0x12100
movq -0x1d8(%rbp), %rdi
movq 0x95e5a(%rip), %rsi     # 0xa7f68
callq 0xa640
jmp 0x12115
movq -0x10(%rbp), %rax
movq 0x95ea8(%rip), %rdx     # 0xa7fc8
movslq (%rdx), %rcx
movl %ecx, %esi
incl %esi
movl %esi, (%rdx)
movq (%rax,%rcx,8), %rsi
leaq 0x99204(%rip), %rdi     # 0xab338
callq 0xa840
jmp 0x1213b
jmp 0x1213d
movq 0x95e84(%rip), %rax     # 0xa7fc8
movl (%rax), %eax
cmpl -0x8(%rbp), %eax
jl 0x12201
leaq 0x98fea(%rip), %rdi     # 0xab140
callq 0x26400
movq %rax, -0x1e0(%rbp)
jmp 0x12164
movq -0x1e0(%rbp), %rax
cmpq $0x0, %rax
ja 0x12193
leaq 0x99008(%rip), %rdi     # 0xab180
callq 0x26400
movq %rax, -0x1e8(%rbp)
jmp 0x12186
movq -0x1e8(%rbp), %rax
cmpq $0x0, %rax
jbe 0x121a7
leaq 0x7c701(%rip), %rsi     # 0x8e89b
leaq -0x40(%rbp), %rdi
callq 0xa840
jmp 0x121a5
jmp 0x121fc
movq 0x95e42(%rip), %rdi     # 0xa7ff0
leaq 0x77f7b(%rip), %rsi     # 0x8a130
callq 0xa5d0
movq %rax, -0x1f0(%rbp)
jmp 0x121c3
movq -0x1f0(%rbp), %rdi
movq 0x95d97(%rip), %rsi     # 0xa7f68
callq 0xa640
jmp 0x121d8
movq 0x95e11(%rip), %rdi     # 0xa7ff0
callq 0x14950
jmp 0x121e6
movl $0x1, -0x4(%rbp)
movl $0x1, -0x84(%rbp)
jmp 0x129da
jmp 0x12388
leaq 0x98f38(%rip), %rdi     # 0xab140
callq 0x26400
movq %rax, -0x1f8(%rbp)
jmp 0x12216
movq -0x1f8(%rbp), %rax
cmpq $0x0, %rax
jne 0x12386
leaq 0x98f52(%rip), %rdi     # 0xab180
callq 0x26400
movq %rax, -0x200(%rbp)
jmp 0x1223c
movq -0x200(%rbp), %rax
cmpq $0x0, %rax
jne 0x12386
movq -0x10(%rbp), %rax
movq 0x95d70(%rip), %rdx     # 0xa7fc8
movslq (%rdx), %rcx
movl %ecx, %esi
incl %esi
movl %esi, (%rdx)
movq (%rax,%rcx,8), %rsi
leaq -0x40(%rbp), %rdi
callq 0xa840
jmp 0x12270
leaq -0xc9(%rbp), %rdi
movq %rdi, -0x208(%rbp)
callq 0xab70
movq -0x208(%rbp), %rdx
leaq 0x7b4aa(%rip), %rsi     # 0x8d73b
leaq -0xc8(%rbp), %rdi
callq 0x24c10
jmp 0x1229f
callq 0x27450
movq %rax, %rcx
leaq -0x40(%rbp), %rdi
leaq -0xc8(%rbp), %rsi
leaq -0x60(%rbp), %rdx
callq 0x15dd0
jmp 0x122bd
leaq -0xc8(%rbp), %rdi
callq 0xacd8
leaq -0xc9(%rbp), %rdi
callq 0xa670
leaq -0x60(%rbp), %rdi
callq 0x26400
movq %rax, -0x210(%rbp)
jmp 0x122e7
movq -0x210(%rbp), %rax
cmpq $0x1, %rax
jae 0x12384
movq 0x95cf1(%rip), %rdi     # 0xa7ff0
leaq 0x77e4d(%rip), %rsi     # 0x8a153
callq 0xa5d0
movq %rax, -0x218(%rbp)
jmp 0x12314
movq -0x218(%rbp), %rdi
movq 0x95c46(%rip), %rsi     # 0xa7f68
callq 0xa640
jmp 0x12329
movq 0x95cc0(%rip), %rdi     # 0xa7ff0
callq 0x14950
jmp 0x12337
movl $0x1, -0x4(%rbp)
movl $0x1, -0x84(%rbp)
jmp 0x129da
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x12373
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0xc8(%rbp), %rdi
callq 0xacd8
leaq -0xc9(%rbp), %rdi
callq 0xa670
jmp 0x12a05
jmp 0x12386
jmp 0x12388
movq 0x95c39(%rip), %rax     # 0xa7fc8
movl (%rax), %eax
cmpl -0x8(%rbp), %eax
jge 0x123bb
movq -0x10(%rbp), %rax
movq 0x95c27(%rip), %rdx     # 0xa7fc8
movslq (%rdx), %rcx
movl %ecx, %esi
incl %esi
movl %esi, (%rdx)
movq (%rax,%rcx,8), %rsi
leaq -0x80(%rbp), %rdi
callq 0xa840
jmp 0x123b9
jmp 0x123bb
movq 0x95c06(%rip), %rax     # 0xa7fc8
movl (%rax), %eax
cmpl -0x8(%rbp), %eax
jge 0x1255c
movq 0x95c1c(%rip), %rdi     # 0xa7ff0
leaq 0x77d9d(%rip), %rsi     # 0x8a178
callq 0xa5d0
jmp 0x123e2
movq 0x95bdf(%rip), %rax     # 0xa7fc8
movl (%rax), %eax
movl %eax, -0xd0(%rbp)
movl -0xd0(%rbp), %eax
cmpl -0x8(%rbp), %eax
jge 0x12492
movq 0x95be9(%rip), %rdi     # 0xa7ff0
leaq 0x7af46(%rip), %rsi     # 0x8d354
callq 0xa5d0
movq %rax, -0x220(%rbp)
jmp 0x1241c
movq -0x220(%rbp), %rdi
movq -0x10(%rbp), %rax
movslq -0xd0(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
callq 0xa5d0
movq %rax, -0x228(%rbp)
jmp 0x12440
movq -0x228(%rbp), %rdi
leaq 0x7af06(%rip), %rsi     # 0x8d354
callq 0xa5d0
jmp 0x12455
movl -0xd0(%rbp), %eax
movl -0x8(%rbp), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jge 0x1247c
movq 0x95b84(%rip), %rdi     # 0xa7ff0
leaq 0x77dde(%rip), %rsi     # 0x8a251
callq 0xa5d0
jmp 0x1247a
jmp 0x1247c
jmp 0x1247e
movl -0xd0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xd0(%rbp)
jmp 0x123f1
movq 0x95b57(%rip), %rdi     # 0xa7ff0
movq 0x95ac8(%rip), %rsi     # 0xa7f68
callq 0xa640
jmp 0x124a7
leaq 0x98c92(%rip), %rdi     # 0xab140
callq 0x26400
movq %rax, -0x230(%rbp)
jmp 0x124bc
movq -0x230(%rbp), %rax
cmpq $0x0, %rax
jbe 0x12534
movq 0x95b20(%rip), %rdi     # 0xa7ff0
leaq 0x77cc0(%rip), %rsi     # 0x8a197
callq 0xa5d0
movq %rax, -0x238(%rbp)
jmp 0x124e5
movq -0x238(%rbp), %rdi
movq 0x95a75(%rip), %rsi     # 0xa7f68
callq 0xa640
movq %rax, -0x240(%rbp)
jmp 0x12501
movq -0x240(%rbp), %rdi
leaq 0x77cd6(%rip), %rsi     # 0x8a1e5
callq 0xa5d0
movq %rax, -0x248(%rbp)
jmp 0x1251d
movq -0x248(%rbp), %rdi
movq 0x95a3d(%rip), %rsi     # 0xa7f68
callq 0xa640
jmp 0x12532
jmp 0x12534
movl $0x4, %edi
callq 0xa290
movq %rax, %rdi
movl $0x1, (%rdi)
movq 0x95a02(%rip), %rsi     # 0xa7f50
xorl %eax, %eax
movl %eax, %edx
callq 0xab10
jmp 0x12c38
testb $0x1, 0x98e3d(%rip)     # 0xab3a0
je 0x12965
movq 0x95a48(%rip), %rdi     # 0xa7fb8
leaq 0x77cb6(%rip), %rsi     # 0x8a22d
callq 0xa5d0
movq %rax, -0x250(%rbp)
jmp 0x12585
movq -0x250(%rbp), %rdi
leaq 0x98da5(%rip), %rsi     # 0xab338
callq 0xa540
movq %rax, -0x258(%rbp)
jmp 0x125a1
movq -0x258(%rbp), %rdi
leaq 0x7ada5(%rip), %rsi     # 0x8d354
callq 0xa5d0
movq %rax, -0x260(%rbp)
jmp 0x125bd
movq -0x260(%rbp), %rdi
movq 0x9599d(%rip), %rsi     # 0xa7f68
callq 0xa640
jmp 0x125d2
movq 0x959df(%rip), %rdi     # 0xa7fb8
leaq 0x77c60(%rip), %rsi     # 0x8a240
callq 0xa5d0
movq %rax, -0x268(%rbp)
jmp 0x125ee
movq -0x268(%rbp), %rdi
movslq 0x98da8(%rip), %rax     # 0xab3a4
shlq $0x5, %rax
leaq 0x98999(%rip), %rsi     # 0xaafa0
addq %rax, %rsi
callq 0xa540
movq %rax, -0x270(%rbp)
jmp 0x12618
movq -0x270(%rbp), %rdi
leaq 0x77c2e(%rip), %rsi     # 0x8a254
callq 0xa5d0
movq %rax, -0x278(%rbp)
jmp 0x12634
movq -0x278(%rbp), %rdi
movq 0x95926(%rip), %rsi     # 0xa7f68
callq 0xa640
jmp 0x12649
movq $0x0, -0xd8(%rbp)
movq -0xd8(%rbp), %rax
movq %rax, -0x288(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x26400
movq %rax, -0x280(%rbp)
jmp 0x12674
movq -0x288(%rbp), %rax
movq -0x280(%rbp), %rcx
cmpq %rcx, %rax
jae 0x12706
movq 0x9592a(%rip), %rdi     # 0xa7fb8
leaq 0x7aa6e(%rip), %rsi     # 0x8d103
callq 0xa5d0
movq %rax, -0x290(%rbp)
jmp 0x126a3
movq -0xd8(%rbp), %rsi
leaq -0x60(%rbp), %rdi
callq 0x27460
movq %rax, -0x298(%rbp)
jmp 0x126bc
movq -0x298(%rbp), %rsi
movq -0x290(%rbp), %rdi
callq 0xa540
movq %rax, -0x2a0(%rbp)
jmp 0x126d8
movq -0x2a0(%rbp), %rdi
movq 0x95882(%rip), %rsi     # 0xa7f68
callq 0xa640
jmp 0x126ed
jmp 0x126ef
movq -0xd8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xd8(%rbp)
jmp 0x12654
movq 0x958ab(%rip), %rdi     # 0xa7fb8
leaq 0x77b43(%rip), %rsi     # 0x8a257
callq 0xa5d0
movq %rax, -0x2a8(%rbp)
jmp 0x12722
movq -0x2a8(%rbp), %rdi
movq 0x95838(%rip), %rsi     # 0xa7f68
callq 0xa640
jmp 0x12737
movq $0x0, -0xe0(%rbp)
movq -0xe0(%rbp), %rax
movq %rax, -0x2b8(%rbp)
leaq 0x98b59(%rip), %rdi     # 0xab2b0
callq 0x26400
movq %rax, -0x2b0(%rbp)
jmp 0x12765
movq -0x2b8(%rbp), %rax
movq -0x2b0(%rbp), %rcx
cmpq %rcx, %rax
jae 0x127fe
movq 0x95835(%rip), %rdi     # 0xa7fb8
leaq 0x7a979(%rip), %rsi     # 0x8d103
callq 0xa5d0
movq %rax, -0x2c0(%rbp)
jmp 0x12798
movq -0xe0(%rbp), %rsi
leaq 0x98b0a(%rip), %rdi     # 0xab2b0
callq 0x27460
movq %rax, -0x2c8(%rbp)
jmp 0x127b4
movq -0x2c8(%rbp), %rsi
movq -0x2c0(%rbp), %rdi
callq 0xa540
movq %rax, -0x2d0(%rbp)
jmp 0x127d0
movq -0x2d0(%rbp), %rdi
movq 0x9578a(%rip), %rsi     # 0xa7f68
callq 0xa640
jmp 0x127e5
jmp 0x127e7
movq -0xe0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xe0(%rbp)
jmp 0x12742
movq 0x957b3(%rip), %rdi     # 0xa7fb8
leaq 0x77a5b(%rip), %rsi     # 0x8a267
callq 0xa5d0
movq %rax, -0x2d8(%rbp)
jmp 0x1281a
movq -0x2d8(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0xa540
movq %rax, -0x2e0(%rbp)
jmp 0x12833
movq -0x2e0(%rbp), %rdi
leaq 0x7ab13(%rip), %rsi     # 0x8d354
callq 0xa5d0
movq %rax, -0x2e8(%rbp)
jmp 0x1284f
movq -0x2e8(%rbp), %rdi
movq 0x9570b(%rip), %rsi     # 0xa7f68
callq 0xa640
jmp 0x12864
movq 0x9574d(%rip), %rdi     # 0xa7fb8
leaq 0x77a04(%rip), %rsi     # 0x8a276
callq 0xa5d0
movq %rax, -0x2f0(%rbp)
jmp 0x12880
callq 0x15f00
movb %al, -0x2f1(%rbp)
jmp 0x1288d
movq -0x2f0(%rbp), %rdi
movb -0x2f1(%rbp), %cl
leaq 0x779e8(%rip), %rax     # 0x8a289
leaq 0x779e5(%rip), %rsi     # 0x8a28d
testb $0x1, %cl
cmovneq %rax, %rsi
callq 0xa5d0
movq %rax, -0x300(%rbp)
jmp 0x128bd
movq -0x300(%rbp), %rdi
movq 0x9569d(%rip), %rsi     # 0xa7f68
callq 0xa640
jmp 0x128d2
movq 0x956df(%rip), %rdi     # 0xa7fb8
leaq 0x779b4(%rip), %rsi     # 0x8a294
callq 0xa5d0
movq %rax, -0x308(%rbp)
jmp 0x128ee
movq -0x308(%rbp), %rdi
movl 0x98aad(%rip), %eax     # 0xab3a8
testl %eax, %eax
leaq 0x779a2(%rip), %rax     # 0x8a2a6
leaq 0x779af(%rip), %rsi     # 0x8a2ba
cmovneq %rax, %rsi
callq 0xa5d0
movq %rax, -0x310(%rbp)
jmp 0x1291d
movq -0x310(%rbp), %rdi
movq 0x9563d(%rip), %rsi     # 0xa7f68
callq 0xa640
jmp 0x12932
movq 0x9567f(%rip), %rdi     # 0xa7fb8
leaq 0x7796e(%rip), %rsi     # 0x8a2ae
callq 0xa5d0
movq %rax, -0x318(%rbp)
jmp 0x1294e
movq -0x318(%rbp), %rdi
movq 0x9560c(%rip), %rsi     # 0xa7f68
callq 0xa640
jmp 0x12963
jmp 0x12965
cmpl $0x0, 0x98a40(%rip)     # 0xab3ac
je 0x129a8
movq 0x95643(%rip), %rdi     # 0xa7fb8
leaq 0x77947(%rip), %rsi     # 0x8a2c3
callq 0xa5d0
movq %rax, -0x320(%rbp)
jmp 0x1298a
movq -0x320(%rbp), %rdi
movq 0x955d0(%rip), %rsi     # 0xa7f68
callq 0xa640
jmp 0x1299f
callq 0xa860
jmp 0x129a6
jmp 0x129a8
leaq 0x7792d(%rip), %rdi     # 0x8a2dc
leaq 0x98982(%rip), %rsi     # 0xab338
leaq 0x988f3(%rip), %r8      # 0xab2b0
leaq -0x40(%rbp), %rdx
leaq -0x60(%rbp), %rcx
leaq -0x80(%rbp), %r9
callq 0x15f20
jmp 0x129d0
movl $0x0, -0x84(%rbp)
leaq -0xa8(%rbp), %rdi
callq 0x27490
movl -0x84(%rbp), %eax
testl %eax, %eax
jne 0x12a13
jmp 0x129f2
movl $0x0, -0x4(%rbp)
movl $0x1, -0x84(%rbp)
jmp 0x12a13
leaq -0xa8(%rbp), %rdi
callq 0x27490
jmp 0x12a33
leaq -0x80(%rbp), %rdi
callq 0xacd8
leaq -0x60(%rbp), %rdi
callq 0x27260
leaq -0x40(%rbp), %rdi
callq 0xacd8
jmp 0x12c1b
leaq -0x80(%rbp), %rdi
callq 0xacd8
leaq -0x60(%rbp), %rdi
callq 0x27260
leaq -0x40(%rbp), %rdi
callq 0xacd8
movl -0x1c(%rbp), %eax
movl %eax, -0x324(%rbp)
movl $0x2, %ecx
cmpl %ecx, %eax
jne 0x12aee
movq -0x18(%rbp), %rdi
callq 0xa200
movq %rax, -0xf0(%rbp)
movq 0x95575(%rip), %rdi     # 0xa7ff0
leaq 0x7785e(%rip), %rsi     # 0x8a2e0
callq 0xa5d0
jmp 0x12a89
movl $0x0, -0xf4(%rbp)
movl -0xf4(%rbp), %eax
cmpl -0x8(%rbp), %eax
jge 0x12bec
movq -0x10(%rbp), %rax
movslq -0xf4(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
movq 0x95538(%rip), %rdi     # 0xa7ff0
callq 0xa5d0
movq %rax, -0x330(%rbp)
jmp 0x12ac6
movq -0x330(%rbp), %rdi
leaq 0x7a630(%rip), %rsi     # 0x8d104
callq 0xa5d0
jmp 0x12adb
jmp 0x12add
movl -0xf4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xf4(%rbp)
jmp 0x12a93
movl -0x324(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0x12c27
movq -0x18(%rbp), %rdi
callq 0xa200
movl (%rax), %eax
movl %eax, -0xe4(%rbp)
cmpl $0x0, -0xe4(%rbp)
je 0x12bbf
movq 0x954ca(%rip), %rdi     # 0xa7ff0
leaq 0x777b3(%rip), %rsi     # 0x8a2e0
callq 0xa5d0
jmp 0x12b34
movl $0x0, -0xe8(%rbp)
movl -0xe8(%rbp), %eax
cmpl -0x8(%rbp), %eax
jge 0x12ba8
movq -0x10(%rbp), %rax
movslq -0xe8(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
movq 0x95491(%rip), %rdi     # 0xa7ff0
callq 0xa5d0
movq %rax, -0x338(%rbp)
jmp 0x12b6d
movq -0x338(%rbp), %rdi
leaq 0x7a589(%rip), %rsi     # 0x8d104
callq 0xa5d0
jmp 0x12b82
jmp 0x12b84
movl -0xe8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xe8(%rbp)
jmp 0x12b3e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
callq 0xaa60
jmp 0x12c27
movq 0x95441(%rip), %rdi     # 0xa7ff0
movq 0x953b2(%rip), %rsi     # 0xa7f68
callq 0xa640
jmp 0x12bbd
jmp 0x12bbf
movl -0xe4(%rbp), %eax
movl %eax, -0x4(%rbp)
movl $0x1, -0x84(%rbp)
callq 0xaa60
jmp 0x12c1b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
callq 0xaa60
jmp 0x12c19
movq 0x953fd(%rip), %rdi     # 0xa7ff0
movq 0x9536e(%rip), %rsi     # 0xa7f68
callq 0xa640
jmp 0x12c01
movl $0x1, -0x4(%rbp)
movl $0x1, -0x84(%rbp)
callq 0xaa60
jmp 0x12c1b
jmp 0x12c27
movl -0x4(%rbp), %eax
addq $0x340, %rsp            # imm = 0x340
popq %rbp
retq
movq -0x18(%rbp), %rdi
callq 0xab60
movq %rax, %rdi
callq 0x24d00
nopl (%rax,%rax)