// File: /workspace/github_c_makefile_star2_O1/ToniWestbrook[P]paladin/align.c
// Function: command_align
int command_align(int argc, char *argv[]) {
	mem_opt_t *opt, opt0;
	int fd, fd2, i, c, ignore_alt = 0, no_mt_io = 0;
	int fixed_chunk_size = -1;
	gzFile fp, fp2 = 0;
	char *p, *rg_line = 0, *hdr_line = 0;
	const char *mode = 0;
	void *ko = 0, *ko2 = 0;
	mem_pestat_t pes[VALUE_DOMAIN];
	ktp_aux_t aux;
	FILE * reportPriStream = 0, * reportSecStream = 0;
	char * readsProName = 0, * indexProName = 0, * prefixName = 0;
	char * samName = 0, * reportPriName = 0, * reportSecName = 0;
    const char * proxyAddress;

	memset(&aux, 0, sizeof(ktp_aux_t));
	memset(pes, 0, VALUE_DOMAIN * sizeof(mem_pestat_t));
	for (i = 0; i < VALUE_DOMAIN; ++i) pes[i].failed = 1;

	aux.opt = opt = mem_opt_init();
	memset(&opt0, 0, sizeof(mem_opt_t));
    proxyAddress = NULL;

	while ((c = getopt(argc, argv, "1epqabgnMCSVYJjf:F:z:u:k:o:c:v:s:r:t:R:A:B:O:E:U:w:L:d:T:Q:D:m:I:N:W:x:G:h:y:K:X:H:P:")) >= 0) {
		if (c == 'k') opt->min_seed_len = atoi(optarg), opt0.min_seed_len = 1;
		else if (c == 'u') opt->outputType = atoi(optarg);
		else if (c == 'f') opt->min_orf_len = atoi(optarg);
		else if (c == 'F') opt->min_orf_percent = atof(optarg);
        else if (c == 'z') opt->translations = convertTransArgs(optarg);
		else if (c == 'o') prefixName = optarg;
		else if (c == '1') no_mt_io = 1;
		else if (c == 'x') mode = optarg;
		else if (c == 'w') opt->w = atoi(optarg), opt0.w = 1;
		else if (c == 'A') opt->a = atoi(optarg), opt0.a = 1;
		else if (c == 'B') opt->b = atoi(optarg), opt0.b = 1;
		else if (c == 'T') opt->T = atoi(optarg), opt0.T = 1;
		else if (c == 'U') opt->pen_unpaired = atoi(optarg), opt0.pen_unpaired = 1;
		else if (c == 't') opt->n_threads = atoi(optarg), opt->n_threads = opt->n_threads > 1? opt->n_threads : 1;
		//else if (c == 'P') opt->flag |= MEM_F_NOPAIRING;
		else if (c == 'a') opt->flag |= MEM_F_ALL;
		//else if (c == 'p') opt->flag |= MEM_F_PE | MEM_F_SMARTPE;
		else if (c == 'M') opt->flag |= MEM_F_NO_MULTI;
		else if (c == 'S') opt->flag |= MEM_F_NO_RESCUE;
		else if (c == 'e') opt->flag |= MEM_F_SELF_OVLP;
		else if (c == 'F') opt->flag |= MEM_F_ALN_REG;
		else if (c == 'Y') opt->flag |= MEM_F_SOFTCLIP;
		else if (c == 'V') opt->flag |= MEM_F_REF_HDR;
		else if (c == 'b') opt->proteinFlag &= ~ALIGN_FLAG_BRUTE_ORF;
		else if (c == 'g') opt->proteinFlag |= ALIGN_FLAG_GEN_NT;
		else if (c == 'n') opt->proteinFlag |= ALIGN_FLAG_KEEP_PRO;
		else if (c == 'J') opt->proteinFlag &= ~ALIGN_FLAG_ADJUST_ORF;
        else if (c == 'p') opt->proteinFlag |= ALIGN_FLAG_MANUAL_PRO;
        else if (c == 'q') opt->proteinFlag |= ALIGN_FLAG_MANUAL_TRANSCRIPT;
		else if (c == 'c') opt->max_occ = atoi(optarg), opt0.max_occ = 1;
		else if (c == 'd') opt->zdrop = atoi(optarg), opt0.zdrop = 1;
		else if (c == 'v') bwa_verbose = atoi(optarg);
		else if (c == 'j') ignore_alt = 1;
		else if (c == 'r') opt->split_factor = atof(optarg), opt0.split_factor = 1.;
		else if (c == 'D') opt->drop_ratio = atof(optarg), opt0.drop_ratio = 1.;
		else if (c == 'm') opt->max_matesw = atoi(optarg), opt0.max_matesw = 1;
		else if (c == 's') opt->split_width = atoi(optarg), opt0.split_width = 1;
		else if (c == 'G') opt->max_chain_gap = atoi(optarg), opt0.max_chain_gap = 1;
		else if (c == 'N') opt->max_chain_extend = atoi(optarg), opt0.max_chain_extend = 1;
		else if (c == 'W') opt->min_chain_weight = atoi(optarg), opt0.min_chain_weight = 1;
		else if (c == 'y') opt->max_mem_intv = atol(optarg), opt0.max_mem_intv = 1;
		else if (c == 'C') aux.copy_comment = 1;
		else if (c == 'K') fixed_chunk_size = atoi(optarg);
		else if (c == 'X') opt->mask_level = atof(optarg);
        else if (c == 'P') proxyAddress = optarg;
		else if (c == 'h') {
			opt0.max_XA_hits = opt0.max_XA_hits_alt = 1;
			opt->max_XA_hits = opt->max_XA_hits_alt = strtol(optarg, &p, 10);
			if (*p != 0 && ispunct(*p) && isdigit(p[1]))
				opt->max_XA_hits_alt = strtol(p+1, &p, 10);
		}
		else if (c == 'Q') {
			opt0.mapQ_coef_len = 1;
			opt->mapQ_coef_len = atoi(optarg);
			opt->mapQ_coef_fac = opt->mapQ_coef_len > 0? log(opt->mapQ_coef_len) : 0;
		} else if (c == 'O') {
			opt0.o_del = opt0.o_ins = 1;
			opt->o_del = opt->o_ins = strtol(optarg, &p, 10);
			if (*p != 0 && ispunct(*p) && isdigit(p[1]))
				opt->o_ins = strtol(p+1, &p, 10);
		} else if (c == 'E') {
			opt0.e_del = opt0.e_ins = 1;
			opt->e_del = opt->e_ins = strtol(optarg, &p, 10);
			if (*p != 0 && ispunct(*p) && isdigit(p[1]))
				opt->e_ins = strtol(p+1, &p, 10);
		} else if (c == 'L') {
			opt0.pen_clip5 = opt0.pen_clip3 = 1;
			opt->pen_clip5 = opt->pen_clip3 = strtol(optarg, &p, 10);
			if (*p != 0 && ispunct(*p) && isdigit(p[1]))
				opt->pen_clip3 = strtol(p+1, &p, 10);
		} else if (c == 'R') {
			if ((rg_line = bwa_set_rg(optarg)) == 0) return 1; // FIXME: memory leak
		} else if (c == 'H') {
			if (optarg[0] != '@') {
				FILE *fp;
				if ((fp = fopen(optarg, "r")) != 0) {
					char *buf;
					buf = calloc(1, 0x10000);
					while (fgets(buf, 0xffff, fp)) {
						i = strlen(buf);
						assert(buf[i-1] == '\n'); // a long line
						buf[i-1] = 0;
						hdr_line = bwa_insert_header(buf, hdr_line);
					}
					free(buf);
					fclose(fp);
				}
			} else hdr_line = bwa_insert_header(optarg, hdr_line);
		} else if (c == 'I') { // specify the insert size distribution
			aux.pes0 = pes;
			pes[1].failed = 0;
			pes[1].avg = strtod(optarg, &p);
			pes[1].std = pes[1].avg * .1;
			if (*p != 0 && ispunct(*p) && isdigit(p[1]))
				pes[1].std = strtod(p+1, &p);
			pes[1].high = (int)(pes[1].avg + 4. * pes[1].std + .499);
			pes[1].low  = (int)(pes[1].avg - 4. * pes[1].std + .499);
			if (pes[1].low < 1) pes[1].low = 1;
			if (*p != 0 && ispunct(*p) && isdigit(p[1]))
				pes[1].high = (int)(strtod(p+1, &p) + .499);
			if (*p != 0 && ispunct(*p) && isdigit(p[1]))
				pes[1].low  = (int)(strtod(p+1, &p) + .499);

			logMessage(__func__, LOG_LEVEL_MESSAGE, "mean insert size: %.3f, stddev: %.3f, max: %d, min: %d\n",
			   									     pes[1].avg, pes[1].std, pes[1].high, pes[1].low);

		}
		else return 1;
	}

	if (rg_line) {
		hdr_line = bwa_insert_header(rg_line, hdr_line);
		free(rg_line);
	}

	if (opt->n_threads < 1) opt->n_threads = 1;
	if (optind + 1 >= argc || optind + 3 < argc) {
		renderAlignUsage(opt);
		free(opt);
		return 1;
	}

	if (mode) {
		if (strcmp(mode, "intractg") == 0) {
			if (!opt0.o_del) opt->o_del = 16;
			if (!opt0.o_ins) opt->o_ins = 16;
			if (!opt0.b) opt->b = 9;
			if (!opt0.pen_clip5) opt->pen_clip5 = 5;
			if (!opt0.pen_clip3) opt->pen_clip3 = 5;
		} else if (strcmp(mode, "pacbio") == 0 || strcmp(mode, "pbref") == 0 || strcmp(mode, "pbread") == 0 || strcmp(mode, "ont2d") == 0) {
			if (!opt0.o_del) opt->o_del = 1;
			if (!opt0.e_del) opt->e_del = 1;
			if (!opt0.o_ins) opt->o_ins = 1;
			if (!opt0.e_ins) opt->e_ins = 1;
			if (!opt0.b) opt->b = 1;
			if (opt0.split_factor == 0.) opt->split_factor = 10.;
			if (strcmp(mode, "pbread") == 0) { // pacbio read-to-read setting; NOT working well!
				opt->flag |= MEM_F_ALL | MEM_F_SELF_OVLP | MEM_F_ALN_REG;
				if (!opt0.min_chain_weight) opt->min_chain_weight = 40;
				if (!opt0.max_occ) opt->max_occ = 1000;
				if (!opt0.min_seed_len) opt->min_seed_len = 13;
				if (!opt0.max_chain_extend) opt->max_chain_extend = 25;
				if (opt0.drop_ratio == 0.) opt->drop_ratio = .001;
			} else if (strcmp(mode, "ont2d") == 0) {
				if (!opt0.min_chain_weight) opt->min_chain_weight = 20;
				if (!opt0.min_seed_len) opt->min_seed_len = 14;
				if (!opt0.pen_clip5) opt->pen_clip5 = 0;
				if (!opt0.pen_clip3) opt->pen_clip3 = 0;
			} else {
				if (!opt0.min_chain_weight) opt->min_chain_weight = 40;
				if (!opt0.min_seed_len) opt->min_seed_len = 17;
				if (!opt0.pen_clip5) opt->pen_clip5 = 0;
				if (!opt0.pen_clip3) opt->pen_clip3 = 0;
			}
		} else {
			logMessage(__func__, LOG_LEVEL_ERROR, "Unknown read type '%s'\n", mode);
			return 1; // FIXME memory leak
		}
	} else update_a(opt, &opt0);

    // Check for incompatible options
    if ((opt->proteinFlag & ALIGN_FLAG_MANUAL_PRO) && (opt->proteinFlag & ALIGN_FLAG_MANUAL_TRANSCRIPT)) {
		logMessage(__func__, LOG_LEVEL_ERROR, "Both protein and transcriptome mode selected.\n");
        return 1;
    }

    // Default to standard genetic code for translations
    if (!opt->translations) opt->translations = convertTransArgs("");

	// Create scoring weight matrix
	bwa_fill_scmat(opt->a, opt->b, opt->mat);

	// Prepare header check and filenames
	indexProName = malloc(strlen(argv[optind]) + 5);
	readsProName = malloc(strlen(argv[optind + 1]) + 5);
	sprintf(indexProName, "%s.pro", argv[optind]);
	sprintf(readsProName, "%s.pro", argv[optind + 1]);
	opt->indexInfo = getIndexHeader(indexProName);

	// Before loading index, ensure it's compatible
	switch (getIndexCompatible(opt->indexInfo)) {
		case INDEX_COMPATIBILITY_NONE:
			logMessage(__func__, LOG_LEVEL_ERROR,
					   "Index version %d.%d.%d is incompatible, please reindex the reference.\n",
						opt->indexInfo.version[0],
						opt->indexInfo.version[1],
						opt->indexInfo.version[2]);

			return 1;

		case INDEX_COMPATBILITY_FUTURE:
			logMessage(__func__, LOG_LEVEL_WARNING,
					   "Index version %d.%d.%d is newer than program version, compatibility not guaranteed.\n",
						opt->indexInfo.version[0],
						opt->indexInfo.version[1],
						opt->indexInfo.version[2]);

			break;
		default:
			break;
	}

	// Load index
	aux.idx = index_load_from_shm(argv[optind]);
	if (aux.idx == 0) {
		logMessage(__func__, LOG_LEVEL_MESSAGE, "Loading the index for reference '%s'...\n", argv[optind]);
		if ((aux.idx = index_load(argv[optind], BWA_IDX_ALL)) == 0) return 1; // FIXME: memory leak
	}
	else {
		logMessage(__func__, LOG_LEVEL_MESSAGE, "Loading the index from shared memory...\n");
	}

	if (ignore_alt)
		for (i = 0; i < aux.idx->bns->n_seqs; ++i)
			aux.idx->bns->anns[i].is_alt = 0;

	// Ready output files if requested (else stdout)
	if (prefixName != NULL) {
		if (opt->indexInfo.referenceType == 0) {
			logMessage(__func__, LOG_LEVEL_ERROR, "Reporting can only be used on prepared indices.\n");
 			return 1;
		}

		samName = malloc(strlen(prefixName) + 5);
		reportPriName = malloc(strlen(prefixName) + 23);
		reportSecName = malloc(strlen(prefixName) + 23);
		sprintf(samName, "%s.sam", prefixName);
		sprintf(reportPriName, "%s_uniprot.tsv", prefixName);

		if (opt->flag & MEM_F_ALL) {
			sprintf(reportPriName, "%s_uniprot_primary.tsv", prefixName);
			sprintf(reportSecName, "%s_uniprot_secondary.tsv", prefixName);
		}

		// Open files
		opt->outputStream = err_xopen_core(__func__, samName, "w");
		reportPriStream = err_xopen_core(__func__, reportPriName, "w");
		if (opt->flag & MEM_F_ALL) reportSecStream = err_xopen_core(__func__, reportSecName, "w");

	}

    if (opt->proteinFlag & ALIGN_FLAG_MANUAL_PRO) {
        // Protein input given, skip ORF detection
        sprintf(readsProName, "%s", argv[optind + 1]);
    }
    else {
        // Detect ORFs and write protein file
        writeReadsProtein(argv[optind + 1], readsProName, opt);
    }

	// Open ORFs sequence
	ko = kopen(readsProName, &fd);
	if (ko == 0) {
		logMessage(__func__, LOG_LEVEL_ERROR, "Failed to open file `%s'.\n", argv[optind + 1]);
		return 1;
	}

	fp = gzdopen(fd, "r");
	aux.ks = kseq_init(fp);
	if (optind + 2 < argc) {
		if (opt->flag&MEM_F_PE) {
			logMessage(__func__, LOG_LEVEL_WARNING, "When '-p' is in use, the second query file is ignored.\n");
		} else {
			ko2 = kopen(argv[optind + 2], &fd2);
			if (ko2 == 0) {
				logMessage(__func__, LOG_LEVEL_ERROR, "Failed to open file `%s'.\n", argv[optind + 2]);
				return 1;
			}
			fp2 = gzdopen(fd2, "r");
			aux.ks2 = kseq_init(fp2);
			opt->flag |= MEM_F_PE;
		}
	}

	// Render SAM header
	if (!(opt->flag & MEM_F_ALN_REG)) {
		bwa_print_sam_hdr(aux.idx->bns, hdr_line, opt->outputStream);
	}

	// Align and render
	aux.actual_chunk_size = fixed_chunk_size > 0? fixed_chunk_size : opt->chunk_size * opt->n_threads;
	kt_pipeline(no_mt_io? 1 : 2, process, &aux, 3);

	// Report number aligned
	renderNumberAligned(opt);

	// Generate UniProt report if requested
	if (prefixName != NULL) {
		renderUniprotReport(opt->outputType, 1, reportPriStream, proxyAddress);
		if (opt->flag & MEM_F_ALL) {
			renderUniprotReport(opt->outputType, 0, reportSecStream, proxyAddress);
		}
	}

	// Delete generated protein file unless requested otherwise
	if (!(opt->proteinFlag & ALIGN_FLAG_KEEP_PRO) && !(opt->proteinFlag & ALIGN_FLAG_MANUAL_PRO)) {
		remove(readsProName);
	}

	// Cleanup
	if (opt->outputStream != stdout) fclose (opt->outputStream);
	if (reportPriStream) fclose(reportPriStream);
	if (reportSecStream) fclose(reportSecStream);

	free(indexProName);
	free(readsProName);
	free(samName);
	free(reportPriName);
	free(reportSecName);
	free(hdr_line);
	free(opt);

	index_destroy(aux.idx);
	kseq_destroy(aux.ks);
	err_gzclose(fp); kclose(ko);
	if (aux.ks2) {
		kseq_destroy(aux.ks2);
		err_gzclose(fp2); kclose(ko2);
	}

	return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x528, %rsp            # imm = 0x528
movq %rsi, %r12
movl %edi, %r13d
xorps %xmm0, %xmm0
movaps %xmm0, 0xf0(%rsp)
movaps %xmm0, 0xe0(%rsp)
movaps %xmm0, 0xd0(%rsp)
movq $0x0, 0x100(%rsp)
leaq 0x120(%rsp), %rdi
movl $0x400, %edx            # imm = 0x400
xorl %esi, %esi
callq 0x3140
movl $0x8, %eax
movl $0x1, 0x120(%rsp,%rax)
addq $0x20, %rax
cmpq $0x408, %rax            # imm = 0x408
jne 0x753b
callq 0x13484
movq %rax, %rbx
movq %rax, 0xe0(%rsp)
leaq 0x1e373(%rip), %rdx     # 0x258dc
movl %r13d, %edi
movq %r12, %rsi
callq 0x3090
testl %eax, %eax
movl %r13d, 0x20(%rsp)
js 0x8029
movq $0x0, 0x88(%rsp)
xorps %xmm0, %xmm0
movss %xmm0, 0x80(%rsp)
movl $0xffffffff, 0x94(%rsp) # imm = 0xFFFFFFFF
leaq 0x1e209(%rip), %r14     # 0x257b4
movq $0x0, 0xc0(%rsp)
movq $0x0, 0xa0(%rsp)
movq $0x0, 0x70(%rsp)
xorl %r15d, %r15d
movq $0x0, 0x98(%rsp)
movl $0x0, 0x6c(%rsp)
movl $0x0, 0x5c(%rsp)
movss %xmm0, 0x34(%rsp)
movl $0x0, 0x60(%rsp)
movl $0x0, 0x2c(%rsp)
movl $0x0, 0x30(%rsp)
movl $0x0, 0x64(%rsp)
movl $0x0, 0xb8(%rsp)
movl $0x0, 0x68(%rsp)
movl $0x0, 0xb4(%rsp)
movl $0x0, 0xbc(%rsp)
movl $0x0, 0x44(%rsp)
movl $0x0, 0x50(%rsp)
movl $0x0, 0x48(%rsp)
movl $0x1, %ebp
addl $-0x31, %eax
cmpl $0x49, %eax
ja 0x8afd
movslq (%r14,%rax,4), %rax
addq %r14, %rax
jmpq *%rax
movl $0x1, 0x6c(%rsp)
jmp 0x7df7
movq 0x28938(%rip), %rax     # 0x2ffb8
movq (%rax), %rdi
callq 0x33a0
movq %rax, 0x30(%rbx)
jmp 0x7df7
orb $0x2, 0x4c(%rbx)
jmp 0x7df7
movq 0x28917(%rip), %rax     # 0x2ffb8
movq (%rax), %rdi
callq 0x35b0
movl %eax, 0x78(%rbx)
movl $0x1, 0x30(%rsp)
jmp 0x7df7
movq 0x288f8(%rip), %rax     # 0x2ffb8
movq (%rax), %rdi
callq 0x8e84
movq %rax, 0x70(%rbx)
jmp 0x7df7
movq 0x288e0(%rip), %rax     # 0x2ffb8
movq (%rax), %rdi
callq 0x35b0
movl %eax, 0x28(%rbx)
movl $0x1, 0x68(%rsp)
jmp 0x7df7
movl $0x1, %eax
movq %rax, 0x88(%rsp)
jmp 0x7df7
movq 0x288af(%rip), %rax     # 0x2ffb8
movq (%rax), %rdi
callq 0x35b0
movl %eax, 0xb8(%rbx)
jmp 0x7df7
movq 0x28895(%rip), %rax     # 0x2ffb8
movq (%rax), %rax
movq %rax, 0xc0(%rsp)
jmp 0x7df7
movq 0x2887e(%rip), %rax     # 0x2ffb8
movq (%rax), %rdi
callq 0x33e0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0x9c(%rbx)
jmp 0x7df7
movq 0x2885e(%rip), %rax     # 0x2ffb8
movq (%rax), %rdi
callq 0x13284
movq %rax, 0x98(%rsp)
testq %rax, %rax
jne 0x7df7
jmp 0x8afd
movq 0x28839(%rip), %rax     # 0x2ffb8
movq (%rax), %rdi
callq 0x35b0
leaq 0x296b2(%rip), %rcx     # 0x30e40
movl %eax, (%rcx)
jmp 0x7df7
orb $0x2, 0x49(%rbx)
jmp 0x7df7
andb $-0x9, 0x4c(%rbx)
jmp 0x7df7
orb $0x10, 0x4c(%rbx)
jmp 0x7df7
movq 0x28801(%rip), %rax     # 0x2ffb8
movq (%rax), %rdi
callq 0x35b0
movl %eax, 0x18(%rbx)
movl $0x1, 0xbc(%rsp)
jmp 0x7df7
movq 0x287df(%rip), %rax     # 0x2ffb8
movq (%rax), %rdi
callq 0x35b0
movl %eax, 0x44(%rbx)
movl $0x1, 0x64(%rsp)
jmp 0x7df7
movq 0x287c0(%rip), %rax     # 0x2ffb8
movq (%rax), %rdi
callq 0x35b0
movl %eax, 0x90(%rbx)
jmp 0x7df7
movq 0x287a6(%rip), %rax     # 0x2ffb8
movq (%rax), %rdi
callq 0x35b0
movl %eax, 0x8c(%rbx)
movl $0x1, 0x5c(%rsp)
jmp 0x7df7
movq 0x28784(%rip), %rax     # 0x2ffb8
movq (%rax), %rdi
callq 0x33e0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0xa0(%rbx)
movss 0x1df60(%rip), %xmm0    # 0x257b0
movss %xmm0, 0x80(%rsp)
jmp 0x7df7
movq 0x28753(%rip), %rax     # 0x2ffb8
movq (%rax), %rdi
callq 0x35b0
movl %eax, 0x24(%rbx)
jmp 0x7df7
movq %r15, %rbp
movq 0x28739(%rip), %rax     # 0x2ffb8
movq (%rax), %rdi
leaq 0x38(%rsp), %r13
movq %r13, %rsi
movl $0xa, %edx
callq 0x34e0
movl %eax, 0x14(%rbx)
movl %eax, 0xc(%rbx)
movq (%r13), %r13
movsbq (%r13), %r15
movl $0x1, 0x44(%rsp)
testq %r15, %r15
je 0x7def
callq 0x3320
movq (%rax), %rax
testb $0x4, (%rax,%r15,2)
je 0x7def
movsbq 0x1(%r13), %rcx
testb $0x8, 0x1(%rax,%rcx,2)
movq %rbp, %r15
je 0x7df2
incq %r13
leaq 0x38(%rsp), %rsi
movq %r13, %rdi
movl $0xa, %edx
callq 0x34e0
movl %eax, 0x14(%rbx)
jmp 0x7df2
movq 0x286ba(%rip), %rax     # 0x2ffb8
movq (%rax), %rdi
callq 0x35b0
movl %eax, 0x4(%rbx)
movl $0x1, 0x48(%rsp)
jmp 0x7df7
movl $0x1, 0xf8(%rsp)
jmp 0x7df7
orb $0x8, 0x48(%rbx)
jmp 0x7df7
orb $0x4, 0x4c(%rbx)
jmp 0x7df7
movq 0x28679(%rip), %rax     # 0x2ffb8
movq (%rax), %rdi
callq 0x35b0
movl %eax, (%rbx)
movl $0x1, 0xb8(%rsp)
jmp 0x7df7
movq 0x28658(%rip), %rax     # 0x2ffb8
movq (%rax), %rdi
callq 0x35b0
movl %eax, 0x94(%rsp)
jmp 0x7df7
orb $0x10, 0x48(%rbx)
jmp 0x7df7
movq 0x28634(%rip), %rax     # 0x2ffb8
movq (%rax), %rdi
callq 0x35b0
movl %eax, 0x68(%rbx)
jmp 0x7df7
movq 0x2861d(%rip), %rax     # 0x2ffb8
movq (%rax), %rdi
cmpb $0x40, (%rdi)
jne 0x7e58
movq %r15, %rsi
callq 0x133da
movq %rax, %r15
jmp 0x7df7
movq 0x285fa(%rip), %rax     # 0x2ffb8
movq (%rax), %rdi
callq 0x35b0
xorps %xmm0, %xmm0
cvtsi2ss %eax, %xmm0
movss %xmm0, 0xac(%rbx)
testl %eax, %eax
jle 0x7ed7
cvtss2sd %xmm0, %xmm0
callq 0x3250
cvttsd2si %xmm0, %eax
jmp 0x7ed9
orb $0x1, 0x49(%rbx)
jmp 0x7df7
orb $0x20, 0x48(%rbx)
jmp 0x7df7
movq %r15, %rbp
movq 0x285ad(%rip), %rax     # 0x2ffb8
movq (%rax), %rdi
leaq 0x38(%rsp), %r13
movq %r13, %rsi
movl $0xa, %edx
callq 0x34e0
movl %eax, 0x20(%rbx)
movl %eax, 0x1c(%rbx)
movq (%r13), %r13
movsbq (%r13), %r15
movl $0x1, 0xb4(%rsp)
testq %r15, %r15
je 0x7def
callq 0x3320
movq (%rax), %rax
testb $0x4, (%rax,%r15,2)
je 0x7def
movsbq 0x1(%r13), %rcx
testb $0x8, 0x1(%rax,%rcx,2)
movq %rbp, %r15
je 0x7df2
incq %r13
leaq 0x38(%rsp), %rsi
movq %r13, %rdi
movl $0xa, %edx
callq 0x34e0
movl %eax, 0x20(%rbx)
jmp 0x7df2
movq 0x2852b(%rip), %rax     # 0x2ffb8
movq (%rax), %rdi
callq 0x33e0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0x6c(%rbx)
jmp 0x7df7
movq %r15, %rbp
movq 0x2850b(%rip), %rax     # 0x2ffb8
movq (%rax), %rdi
leaq 0x38(%rsp), %r13
movq %r13, %rsi
movl $0xa, %edx
callq 0x34e0
movl %eax, 0x10(%rbx)
movl %eax, 0x8(%rbx)
movq (%r13), %r13
movsbq (%r13), %r15
movl $0x1, 0x50(%rsp)
testq %r15, %r15
je 0x7def
callq 0x3320
movq (%rax), %rax
testb $0x4, (%rax,%r15,2)
je 0x7def
movsbq 0x1(%r13), %rcx
testb $0x8, 0x1(%rax,%rcx,2)
movq %rbp, %r15
je 0x7df2
incq %r13
leaq 0x38(%rsp), %rsi
movq %r13, %rdi
movl $0xa, %edx
callq 0x34e0
movl %eax, 0x10(%rbx)
jmp 0x7df2
movq %r15, %rbp
leaq 0x120(%rsp), %rax
movq %rax, 0xe8(%rsp)
movl $0x0, 0x148(%rsp)
movq 0x2846e(%rip), %rax     # 0x2ffb8
movq (%rax), %rdi
leaq 0x38(%rsp), %r13
movq %r13, %rsi
callq 0x3210
movsd %xmm0, 0x150(%rsp)
mulsd 0x1dc25(%rip), %xmm0    # 0x25790
movsd %xmm0, 0x158(%rsp)
movq (%r13), %r13
movsbq (%r13), %r15
testq %r15, %r15
je 0x7bb6
callq 0x3320
movq (%rax), %rax
testb $0x4, (%rax,%r15,2)
je 0x7bb6
movsbq 0x1(%r13), %rcx
testb $0x8, 0x1(%rax,%rcx,2)
je 0x7bb6
incq %r13
leaq 0x38(%rsp), %rsi
movq %r13, %rdi
callq 0x3210
movsd %xmm0, 0x158(%rsp)
movsd 0x150(%rsp), %xmm0
movsd 0x158(%rsp), %xmm1
movsd 0x1dbc8(%rip), %xmm2    # 0x25798
mulsd %xmm1, %xmm2
addsd %xmm0, %xmm2
movsd 0x1dbc0(%rip), %xmm3    # 0x257a0
addsd %xmm3, %xmm2
cvttsd2si %xmm2, %eax
movl %eax, 0x144(%rsp)
mulsd 0x1dbb1(%rip), %xmm1    # 0x257a8
addsd %xmm0, %xmm1
addsd %xmm3, %xmm1
cvttsd2si %xmm1, %eax
cmpl $0x2, %eax
movl $0x1, %ecx
cmovgel %eax, %ecx
movl %ecx, 0x140(%rsp)
movq 0x38(%rsp), %r13
movsbq (%r13), %r15
testq %r15, %r15
je 0x7c62
callq 0x3320
movq (%rax), %rax
testb $0x4, (%rax,%r15,2)
je 0x7c62
movsbq 0x1(%r13), %rcx
testb $0x8, 0x1(%rax,%rcx,2)
je 0x7c62
incq %r13
leaq 0x38(%rsp), %rsi
movq %r13, %rdi
callq 0x3210
addsd 0x1db49(%rip), %xmm0    # 0x257a0
cvttsd2si %xmm0, %eax
movl %eax, 0x144(%rsp)
movq 0x38(%rsp), %r13
movsbq (%r13), %r15
testq %r15, %r15
je 0x7caf
callq 0x3320
movq (%rax), %rax
testb $0x4, (%rax,%r15,2)
je 0x7caf
movsbq 0x1(%r13), %rcx
testb $0x8, 0x1(%rax,%rcx,2)
je 0x7caf
incq %r13
leaq 0x38(%rsp), %rsi
movq %r13, %rdi
callq 0x3210
addsd 0x1dafc(%rip), %xmm0    # 0x257a0
cvttsd2si %xmm0, %eax
movl %eax, 0x140(%rsp)
movsd 0x150(%rsp), %xmm0
movsd 0x158(%rsp), %xmm1
movl 0x140(%rsp), %r8d
movl 0x144(%rsp), %ecx
leaq 0x1dc63(%rip), %rdi     # 0x2593a
leaq 0x1dc9b(%rip), %rdx     # 0x25979
movl $0x3, %esi
movb $0x2, %al
callq 0xdbeb
jmp 0x7def
orb $0x20, 0x4c(%rbx)
jmp 0x7df7
movq 0x282b9(%rip), %rax     # 0x2ffb8
movq (%rax), %rdi
callq 0x35b0
movl %eax, 0x80(%rbx)
movl $0x1, 0x60(%rsp)
jmp 0x7df7
movq 0x28297(%rip), %rax     # 0x2ffb8
movq (%rax), %rdi
callq 0x33e0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0x84(%rbx)
movss 0x1da73(%rip), %xmm0    # 0x257b0
movss %xmm0, 0x34(%rsp)
jmp 0x7df7
movq 0x28269(%rip), %rax     # 0x2ffb8
movq (%rax), %rdi
callq 0x35b0
cmpl $0x2, %eax
movl $0x1, %ecx
cmovgel %eax, %ecx
movl %ecx, 0x94(%rbx)
jmp 0x7df7
movq 0x28244(%rip), %rax     # 0x2ffb8
movq (%rax), %rdi
callq 0x35b0
movl %eax, 0x7c(%rbx)
movl $0x1, 0x2c(%rsp)
jmp 0x7df7
orb $0x40, 0x48(%rbx)
jmp 0x7df7
movq 0x28222(%rip), %rax     # 0x2ffb8
movq (%rax), %rax
movq %rax, 0xa0(%rsp)
jmp 0x7df7
movq %r15, %rbp
movq 0x2820b(%rip), %rax     # 0x2ffb8
movq (%rax), %rdi
leaq 0x38(%rsp), %r13
movq %r13, %rsi
movl $0xa, %edx
callq 0x34e0
movl %eax, 0xc0(%rbx)
movl %eax, 0xbc(%rbx)
movq (%r13), %r13
movsbq (%r13), %r15
testq %r15, %r15
je 0x7def
callq 0x3320
movq (%rax), %rax
testb $0x4, (%rax,%r15,2)
jne 0x7ee4
movq %rbp, %r15
movl 0x20(%rsp), %r13d
leaq 0x1dade(%rip), %rdx     # 0x258dc
movl %r13d, %edi
movq %r12, %rsi
callq 0x3090
testl %eax, %eax
jns 0x7652
jmp 0x7f2c
andb $-0x2, 0x4c(%rbx)
jmp 0x7df7
movq 0x28195(%rip), %rax     # 0x2ffb8
movq (%rax), %rdi
callq 0x35b0
movl %eax, 0x40(%rbx)
jmp 0x7df7
movq 0x28181(%rip), %rax     # 0x2ffb8
movq (%rax), %rax
movq %rax, 0x70(%rsp)
jmp 0x7df7
movq 0x28170(%rip), %rax     # 0x2ffb8
movq (%rax), %rdi
callq 0x35b0
movl %eax, 0x88(%rbx)
jmp 0x7df7
leaq 0x1efbf(%rip), %rsi     # 0x26e1e
callq 0x3380
testq %rax, %rax
je 0x7df7
movq %rax, %rbp
leaq 0x1dabf(%rip), %rdx     # 0x25932
leaq 0x1dac0(%rip), %r8      # 0x2593a
movl $0x1, %edi
movl $0x10000, %esi          # imm = 0x10000
movl $0xc7, %ecx
callq 0x22cb4
movq %rax, %r13
movq %rax, %rdi
movl $0xffff, %esi           # imm = 0xFFFF
movq %rbp, %rdx
callq 0x35d0
testq %rax, %rax
je 0x7f17
movq %r13, %rdi
callq 0x3100
decl %eax
cltq
cmpb $0xa, (%r13,%rax)
jne 0x8b25
movb $0x0, (%r13,%rax)
movq %r13, %rdi
movq %r15, %rsi
callq 0x133da
movq %rax, %r15
movq %r13, %rdi
jmp 0x7e94
xorl %eax, %eax
movl %eax, 0xb0(%rbx)
jmp 0x7df7
movsbq 0x1(%r13), %rcx
testb $0x8, 0x1(%rax,%rcx,2)
movq %rbp, %r15
je 0x7df2
incq %r13
leaq 0x38(%rsp), %rsi
movq %r13, %rdi
movl $0xa, %edx
callq 0x34e0
movl %eax, 0xc0(%rbx)
jmp 0x7df2
movq %r13, %rdi
callq 0x3390
movq %rbp, %rdi
callq 0x32f0
jmp 0x7df2
movq %r12, %r13
movq %r15, 0xa8(%rsp)
movl 0x50(%rsp), %ecx
testl %ecx, %ecx
sete 0x78(%rsp)
movl 0x44(%rsp), %eax
testl %eax, %eax
sete 0x1f(%rsp)
testl %ecx, %ecx
sete 0x50(%rsp)
testl %eax, %eax
sete 0x44(%rsp)
cmpl $0x0, 0x48(%rsp)
sete 0x48(%rsp)
xorps %xmm0, %xmm0
movss 0x34(%rsp), %xmm1
cmpeqss %xmm0, %xmm1
movd %xmm1, %ebp
andl $0x1, %ebp
cmpl $0x0, 0x2c(%rsp)
sete 0x1e(%rsp)
cmpl $0x0, 0x30(%rsp)
sete 0x34(%rsp)
movl 0xb4(%rsp), %eax
testl %eax, %eax
sete 0x2c(%rsp)
testl %eax, %eax
sete 0x30(%rsp)
cmpl $0x0, 0x5c(%rsp)
sete 0x5c(%rsp)
cmpl $0x0, 0x60(%rsp)
sete 0x60(%rsp)
movss 0x80(%rsp), %xmm1
cmpeqss %xmm0, %xmm1
movd %xmm1, %r14d
andl $0x1, %r14d
cmpl $0x0, 0xb8(%rsp)
sete %r12b
cmpl $0x0, 0x64(%rsp)
sete 0x64(%rsp)
cmpl $0x0, 0x68(%rsp)
sete 0x68(%rsp)
cmpl $0x0, 0xbc(%rsp)
sete 0x80(%rsp)
cmpl $0x0, 0x88(%rsp)
sete 0x88(%rsp)
xorl %eax, %eax
cmpl $0x1, 0x6c(%rsp)
adcl $0x1, %eax
movl %eax, 0x6c(%rsp)
movq 0x98(%rsp), %r15
jmp 0x80c9
movq %r12, %r13
movl $0xffffffff, 0x94(%rsp) # imm = 0xFFFFFFFF
movl $0x2, 0x6c(%rsp)
movb $0x1, 0x48(%rsp)
movb $0x1, 0x78(%rsp)
movb $0x1, 0x1f(%rsp)
movb $0x1, 0x50(%rsp)
movb $0x1, 0x44(%rsp)
movb $0x1, 0x80(%rsp)
movb $0x1, 0x2c(%rsp)
movb $0x1, 0x30(%rsp)
movb $0x1, 0x68(%rsp)
movb $0x1, %r12b
movb $0x1, 0x64(%rsp)
movb $0x1, 0x34(%rsp)
movb $0x1, 0x1e(%rsp)
movb $0x1, 0x60(%rsp)
movb $0x1, %bpl
movb $0x1, 0x5c(%rsp)
movb $0x1, %r14b
movb $0x1, 0x88(%rsp)
xorl %r15d, %r15d
movq $0x0, 0xa8(%rsp)
movq $0x0, 0x70(%rsp)
movq $0x0, 0xa0(%rsp)
movq $0x0, 0xc0(%rsp)
testq %r15, %r15
je 0x80ee
movq %r15, %rdi
movq 0xa8(%rsp), %rsi
callq 0x133da
movq %rax, 0xa8(%rsp)
movq %r15, %rdi
callq 0x3390
cmpl $0x0, 0x94(%rbx)
jg 0x8101
movl $0x1, 0x94(%rbx)
movq 0x27ed0(%rip), %rax     # 0x2ffd8
movl (%rax), %eax
leal 0x1(%rax), %ecx
movl 0x20(%rsp), %edx
cmpl %edx, %ecx
jge 0x8809
addl $0x3, %eax
cmpl %edx, %eax
jl 0x8809
movq 0x70(%rsp), %r15
testq %r15, %r15
je 0x81c8
leaq 0x1d878(%rip), %rsi     # 0x259b1
movq %r15, %rdi
callq 0x34d0
testl %eax, %eax
je 0x8336
leaq 0x1d86a(%rip), %rsi     # 0x259ba
movq %r15, %rdi
callq 0x34d0
testl %eax, %eax
movq %r13, %r12
je 0x8287
leaq 0x1d857(%rip), %rsi     # 0x259c1
movq %r15, %rdi
callq 0x34d0
testl %eax, %eax
je 0x8287
leaq 0x1d846(%rip), %rsi     # 0x259c7
movq %r15, %rdi
callq 0x34d0
testl %eax, %eax
je 0x8287
leaq 0x1d836(%rip), %rsi     # 0x259ce
movq %r15, %rdi
callq 0x34d0
testl %eax, %eax
je 0x8287
leaq 0x1d78b(%rip), %rdi     # 0x2593a
leaq 0x1d81e(%rip), %rdx     # 0x259d4
movl $0x1, %ebp
movl $0x1, %esi
movq %r15, %rcx
jmp 0x8947
testb %r12b, %r12b
movq %r13, %r12
movq 0x27e03(%rip), %r15     # 0x2ffd8
jne 0x8428
cmpb $0x0, 0x48(%rsp)
je 0x81eb
movl 0x4(%rbx), %eax
imull (%rbx), %eax
movl %eax, 0x4(%rbx)
cmpb $0x0, 0x64(%rsp)
je 0x81fb
movl 0x44(%rbx), %eax
imull (%rbx), %eax
movl %eax, 0x44(%rbx)
cmpb $0x0, 0x78(%rsp)
je 0x820b
movl 0x8(%rbx), %eax
imull (%rbx), %eax
movl %eax, 0x8(%rbx)
cmpb $0x0, 0x1f(%rsp)
je 0x821b
movl 0xc(%rbx), %eax
imull (%rbx), %eax
movl %eax, 0xc(%rbx)
cmpb $0x0, 0x50(%rsp)
je 0x822b
movl 0x10(%rbx), %eax
imull (%rbx), %eax
movl %eax, 0x10(%rbx)
cmpb $0x0, 0x44(%rsp)
je 0x823b
movl 0x14(%rbx), %eax
imull (%rbx), %eax
movl %eax, 0x14(%rbx)
cmpb $0x0, 0x68(%rsp)
je 0x824b
movl 0x28(%rbx), %eax
imull (%rbx), %eax
movl %eax, 0x28(%rbx)
cmpb $0x0, 0x2c(%rsp)
je 0x825b
movl 0x1c(%rbx), %eax
imull (%rbx), %eax
movl %eax, 0x1c(%rbx)
cmpb $0x0, 0x30(%rsp)
je 0x826b
movl 0x20(%rbx), %eax
imull (%rbx), %eax
movl %eax, 0x20(%rbx)
cmpb $0x0, 0x80(%rsp)
je 0x8428
movl 0x18(%rbx), %eax
imull (%rbx), %eax
movl %eax, 0x18(%rbx)
jmp 0x8428
cmpb $0x0, 0x78(%rsp)
je 0x8295
movl $0x1, 0x8(%rbx)
cmpb $0x0, 0x1f(%rsp)
je 0x82a3
movl $0x1, 0xc(%rbx)
cmpb $0x0, 0x50(%rsp)
je 0x82b1
movl $0x1, 0x10(%rbx)
cmpb $0x0, 0x44(%rsp)
je 0x82bf
movl $0x1, 0x14(%rbx)
cmpb $0x0, 0x48(%rsp)
je 0x82cd
movl $0x1, 0x4(%rbx)
testb %bpl, %bpl
je 0x82dc
movl $0x41200000, 0x84(%rbx) # imm = 0x41200000
leaq 0x1d6e4(%rip), %rsi     # 0x259c7
movq %r15, %rdi
callq 0x34d0
testl %eax, %eax
je 0x838f
leaq 0x1d6d4(%rip), %rsi     # 0x259ce
movq %r15, %rdi
callq 0x34d0
testl %eax, %eax
je 0x83e9
cmpb $0x0, 0x1e(%rsp)
movq 0x27cc2(%rip), %r15     # 0x2ffd8
je 0x831f
movl $0x28, 0x7c(%rbx)
cmpb $0x0, 0x34(%rsp)
je 0x840c
movl $0x11, 0x78(%rbx)
jmp 0x840c
cmpb $0x0, 0x78(%rsp)
movq %r13, %r12
je 0x8347
movl $0x10, 0x8(%rbx)
cmpb $0x0, 0x50(%rsp)
movq 0x27c85(%rip), %r15     # 0x2ffd8
je 0x835c
movl $0x10, 0x10(%rbx)
cmpb $0x0, 0x48(%rsp)
je 0x836a
movl $0x9, 0x4(%rbx)
cmpb $0x0, 0x2c(%rsp)
je 0x8378
movl $0x5, 0x1c(%rbx)
cmpb $0x0, 0x30(%rsp)
je 0x8428
movl $0x5, 0x20(%rbx)
jmp 0x8428
orb $-0x38, 0x48(%rbx)
cmpb $0x0, 0x1e(%rsp)
movq 0x27c39(%rip), %r15     # 0x2ffd8
je 0x83a8
movl $0x28, 0x7c(%rbx)
cmpb $0x0, 0x5c(%rsp)
je 0x83b9
movl $0x3e8, 0x8c(%rbx)      # imm = 0x3E8
cmpb $0x0, 0x34(%rsp)
je 0x83c7
movl $0xd, 0x78(%rbx)
cmpb $0x0, 0x60(%rsp)
je 0x83d8
movl $0x19, 0x80(%rbx)
testb %r14b, %r14b
je 0x8428
movl $0x3a83126f, 0xa0(%rbx) # imm = 0x3A83126F
jmp 0x8428
cmpb $0x0, 0x1e(%rsp)
movq 0x27be3(%rip), %r15     # 0x2ffd8
je 0x83fe
movl $0x14, 0x7c(%rbx)
cmpb $0x0, 0x34(%rsp)
je 0x840c
movl $0xe, 0x78(%rbx)
cmpb $0x0, 0x2c(%rsp)
je 0x841a
movl $0x0, 0x1c(%rbx)
cmpb $0x0, 0x30(%rsp)
je 0x8428
movl $0x0, 0x20(%rbx)
movl 0x4c(%rbx), %eax
notl %eax
testb $0x30, %al
jne 0x8455
leaq 0x1d502(%rip), %rdi     # 0x2593a
leaq 0x1d5ad(%rip), %rdx     # 0x259ec
movl $0x1, %ebp
movl $0x1, %esi
xorl %eax, %eax
callq 0xdbeb
jmp 0x8afd
cmpq $0x0, 0x70(%rbx)
jne 0x846c
leaq 0x201cb(%rip), %rdi     # 0x2862e
callq 0x8e84
movq %rax, 0x70(%rbx)
movl (%rbx), %edi
movl 0x4(%rbx), %esi
movq %rbx, %rdx
addq $0xc4, %rdx
callq 0x11ea5
movslq (%r15), %rax
movq (%r12,%rax,8), %rdi
callq 0x3100
leaq 0x5(%rax), %rdi
leaq 0x1d49b(%rip), %r13     # 0x25932
leaq 0x1d49c(%rip), %rbp     # 0x2593a
movq %r13, %rsi
movl $0x127, %edx            # imm = 0x127
movq %rbp, %rcx
callq 0x22d2b
movq %rax, %r14
movslq (%r15), %rax
movq 0x8(%r12,%rax,8), %rdi
callq 0x3100
leaq 0x5(%rax), %rdi
movq %r13, %rsi
movl $0x128, %edx            # imm = 0x128
movq %rbp, %rcx
callq 0x22d2b
movq %rax, %rbp
movslq (%r15), %rax
movq (%r12,%rax,8), %rdx
leaq 0x1cf18(%rip), %r13     # 0x253fb
movq %r14, %rdi
movq %r13, %rsi
xorl %eax, %eax
callq 0x3070
movslq (%r15), %rax
movq 0x8(%r12,%rax,8), %rdx
movq %rbp, 0x70(%rsp)
movq %rbp, %rdi
movq %r13, %rsi
xorl %eax, %eax
callq 0x3070
leaq 0x108(%rsp), %r13
movq %r13, %rdi
movq %r14, %rsi
callq 0x57b7
movq 0x10(%r13), %rax
movq %rax, 0x60(%rbx)
movups (%r13), %xmm0
movups %xmm0, 0x50(%rbx)
movq 0x60(%rbx), %rax
movq %rax, 0x10(%rsp)
movups 0x50(%rbx), %xmm0
movups %xmm0, (%rsp)
callq 0x5881
cmpl $0x2, %eax
je 0x8580
testl %eax, %eax
movl 0x20(%rsp), %ebp
jne 0x85a9
movl 0x5c(%rbx), %ecx
movl 0x60(%rbx), %r8d
movl 0x64(%rbx), %r9d
leaq 0x1d3d7(%rip), %rdi     # 0x2593a
leaq 0x1d4b1(%rip), %rdx     # 0x25a1b
movl $0x1, %ebp
movl $0x1, %esi
xorl %eax, %eax
callq 0xdbeb
jmp 0x8afd
movl 0x5c(%rbx), %ecx
movl 0x60(%rbx), %r8d
movl 0x64(%rbx), %r9d
leaq 0x1d3a8(%rip), %rdi     # 0x2593a
leaq 0x1d4c9(%rip), %rdx     # 0x25a62
movl $0x2, %esi
xorl %eax, %eax
callq 0xdbeb
movl 0x20(%rsp), %ebp
movslq (%r15), %rax
movq (%r12,%rax,8), %rdi
callq 0xbd94
movq %rax, 0x100(%rsp)
testq %rax, %rax
je 0x85e3
leaq 0x1d371(%rip), %rdi     # 0x2593a
leaq 0x1d510(%rip), %rdx     # 0x25ae0
movl $0x3, %esi
xorl %eax, %eax
callq 0xdbeb
movq 0x70(%rsp), %r13
jmp 0x862b
movslq (%r15), %rax
movq (%r12,%rax,8), %rcx
leaq 0x1d349(%rip), %rdi     # 0x2593a
leaq 0x1d4bf(%rip), %rdx     # 0x25ab7
movl $0x3, %esi
xorl %eax, %eax
callq 0xdbeb
movslq (%r15), %rax
movq (%r12,%rax,8), %rdi
movl $0x7, %esi
callq 0x12bf4
movq %rax, 0x100(%rsp)
testq %rax, %rax
movq 0x70(%rsp), %r13
je 0x8819
cmpb $0x0, 0x88(%rsp)
jne 0x8669
movq 0x100(%rsp), %rax
movq 0x8(%rax), %rax
movslq 0x8(%rax), %rcx
testq %rcx, %rcx
jle 0x8669
movq 0x10(%rax), %rax
shlq $0x3, %rcx
leaq (%rcx,%rcx,4), %rcx
xorl %edx, %edx
movl $0x0, 0x14(%rax,%rdx)
addq $0x28, %rdx
cmpq %rdx, %rcx
jne 0x8658
cmpq $0x0, 0xa0(%rsp)
je 0x87c1
cmpl $0x0, 0x58(%rbx)
je 0x87f6
movq %r14, 0x80(%rsp)
movq 0xa0(%rsp), %r14
movq %r14, %rdi
callq 0x3100
leaq 0x5(%rax), %rdi
leaq 0x1d28d(%rip), %rsi     # 0x25932
leaq 0x1d28e(%rip), %rbp     # 0x2593a
movl $0x159, %edx            # imm = 0x159
movq %rbp, %rcx
callq 0x22d2b
movq %rax, %r13
movq %r14, %rdi
callq 0x3100
leaq 0x17(%rax), %rdi
leaq 0x1d263(%rip), %rsi     # 0x25932
movl $0x15a, %edx            # imm = 0x15A
movq %rbp, %rcx
callq 0x22d2b
movq %rax, %rbp
movq %r14, %rdi
callq 0x3100
leaq 0x17(%rax), %rdi
leaq 0x1d240(%rip), %rsi     # 0x25932
movl $0x15b, %edx            # imm = 0x15B
leaq 0x1d23c(%rip), %rcx     # 0x2593a
callq 0x22d2b
movq %rax, 0x48(%rsp)
leaq 0x1d42b(%rip), %rsi     # 0x25b3a
movq %r13, 0x50(%rsp)
movq %r13, %rdi
movq %r14, %rdx
xorl %eax, %eax
callq 0x3070
leaq 0x1d419(%rip), %rsi     # 0x25b41
movq %rbp, %rdi
movq %r14, %rdx
xorl %eax, %eax
callq 0x3070
testb $0x8, 0x48(%rbx)
je 0x876d
leaq 0x1d40e(%rip), %rsi     # 0x25b50
movq %rbp, %rdi
movq 0xa0(%rsp), %r14
movq %r14, %rdx
xorl %eax, %eax
callq 0x3070
leaq 0x1d409(%rip), %rsi     # 0x25b67
movq 0x48(%rsp), %rdi
movq %r14, %rdx
xorl %eax, %eax
callq 0x3070
movq %rbp, %r14
leaq 0x1d1c3(%rip), %r13     # 0x2593a
leaq 0x20cb1(%rip), %rbp     # 0x2942f
movq %r13, %rdi
movq 0x50(%rsp), %rsi
movq %rbp, %rdx
callq 0xdd8e
movq %rax, 0x38(%rbx)
movq %r13, %rdi
movq %r14, 0x88(%rsp)
movq %r14, %rsi
movq %rbp, %rdx
callq 0xdd8e
movq %rax, 0x98(%rsp)
testb $0x8, 0x48(%rbx)
jne 0x8823
movq $0x0, 0x78(%rsp)
jmp 0x8840
movq $0x0, 0x98(%rsp)
movq $0x0, 0x78(%rsp)
movq $0x0, 0x50(%rsp)
movq $0x0, 0x88(%rsp)
movq $0x0, 0x48(%rsp)
jmp 0x8851
leaq 0x1d13d(%rip), %rdi     # 0x2593a
leaq 0x1d305(%rip), %rdx     # 0x25b09
jmp 0x843f
movq %rbx, %rdi
callq 0x3a06
movq %rbx, %rdi
callq 0x3390
movl $0x1, %ebp
jmp 0x8afd
leaq 0x1d110(%rip), %rdi     # 0x2593a
leaq 0x20bfe(%rip), %rdx     # 0x2942f
movq 0x48(%rsp), %rsi
callq 0xdd8e
movq %rax, 0x78(%rsp)
movl 0x20(%rsp), %ebp
movq 0x80(%rsp), %r14
movq 0x70(%rsp), %r13
testb $0x10, 0x4c(%rbx)
movslq (%r15), %rax
movq 0x8(%r12,%rax,8), %rsi
jne 0x886f
movq %rsi, %rdi
movq %r13, %rsi
movq %rbx, %rdx
callq 0xa009
jmp 0x8877
movq %r13, %rdi
callq 0x32c0
leaq 0x108(%rsp), %rsi
movq %r13, %rdi
callq 0x65a0
testq %rax, %rax
je 0x8927
movq %rax, 0x20(%rsp)
movl 0x108(%rsp), %edi
leaq 0x1e57b(%rip), %rsi     # 0x26e1e
callq 0x36f0
movq %rax, 0x70(%rsp)
movq %rax, %rdi
callq 0xd53f
movq %rax, 0xd0(%rsp)
movslq (%r15), %rax
leal 0x2(%rax), %ecx
cmpl %ebp, %ecx
jge 0x8953
testb $0x2, 0x48(%rbx)
movq 0x98(%rsp), %rbp
jne 0x8963
movq 0x10(%r12,%rax,8), %rdi
leaq 0xcc(%rsp), %rsi
callq 0x65a0
testq %rax, %rax
je 0x8b11
movq %rax, %r15
movl 0xcc(%rsp), %edi
leaq 0x1e515(%rip), %rsi     # 0x26e1e
callq 0x36f0
movq %rax, %r12
movq %rax, %rdi
callq 0xd53f
movq %rax, 0xd8(%rsp)
orb $0x2, 0x48(%rbx)
jmp 0x8983
movslq (%r15), %rax
movq 0x8(%r12,%rax,8), %rcx
leaq 0x1d004(%rip), %rdi     # 0x2593a
leaq 0x1d243(%rip), %rdx     # 0x25b80
movl $0x1, %ebp
movl $0x1, %esi
xorl %eax, %eax
callq 0xdbeb
jmp 0x8afd
xorl %r12d, %r12d
xorl %r15d, %r15d
movq 0x98(%rsp), %rbp
jmp 0x8983
leaq 0x1cfd0(%rip), %rdi     # 0x2593a
leaq 0x1d22a(%rip), %rdx     # 0x25b9b
xorl %r12d, %r12d
movl $0x2, %esi
xorl %eax, %eax
callq 0xdbeb
xorl %r15d, %r15d
testb $-0x80, 0x48(%rbx)
jne 0x89a6
movq 0x100(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x38(%rbx), %rdx
movq 0xa8(%rsp), %rsi
callq 0x13161
movl 0x94(%rsp), %eax
testl %eax, %eax
jg 0x89be
movl 0x94(%rbx), %eax
imull 0x98(%rbx), %eax
leaq 0xd0(%rsp), %rdx
movl %eax, 0x2c(%rdx)
leaq 0x174(%rip), %rsi       # 0x8b44
movl 0x6c(%rsp), %edi
movl $0x3, %ecx
callq 0xe703
movq %rbx, %rdi
callq 0xb381
cmpq $0x0, 0xa0(%rsp)
je 0x8a26
movl 0x40(%rbx), %edi
movl $0x1, %esi
movq %rbp, %rdx
movq 0xc0(%rsp), %rcx
callq 0xabb9
testb $0x8, 0x48(%rbx)
je 0x8a26
movl 0x40(%rbx), %edi
xorl %esi, %esi
movq 0x78(%rsp), %rdx
movq 0xc0(%rsp), %rcx
callq 0xabb9
testb $0x14, 0x4c(%rbx)
jne 0x8a34
movq %r13, %rdi
callq 0x36e0
movq 0x38(%rbx), %rdi
movq 0x27569(%rip), %rax     # 0x2ffa8
cmpq (%rax), %rdi
je 0x8a49
callq 0x32f0
testq %rbp, %rbp
je 0x8a56
movq %rbp, %rdi
callq 0x32f0
movq 0x78(%rsp), %rdi
testq %rdi, %rdi
je 0x8a65
callq 0x32f0
movq %r14, %rdi
callq 0x3390
movq %r13, %rdi
callq 0x3390
movq 0x50(%rsp), %rdi
callq 0x3390
movq 0x88(%rsp), %rdi
callq 0x3390
movq 0x48(%rsp), %rdi
callq 0x3390
movq 0xa8(%rsp), %rdi
callq 0x3390
movq %rbx, %rdi
callq 0x3390
movq 0x100(%rsp), %rdi
callq 0x12bf9
movq 0xd0(%rsp), %rdi
callq 0xd5c5
movq 0x70(%rsp), %rdi
callq 0xe4b9
movq 0x20(%rsp), %rdi
callq 0x712a
movq 0xd8(%rsp), %rdi
xorl %ebp, %ebp
testq %rdi, %rdi
je 0x8afd
callq 0xd5c5
movq %r12, %rdi
callq 0xe4b9
movq %r15, %rdi
callq 0x712a
movl %ebp, %eax
addq $0x528, %rsp            # imm = 0x528
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x274c0(%rip), %rax     # 0x2ffd8
movslq (%rax), %rax
movq 0x10(%r12,%rax,8), %rcx
jmp 0x892f
leaq 0x1ce1c(%rip), %rdi     # 0x25948
leaq 0x1cdff(%rip), %rsi     # 0x25932
leaq 0x1ce1f(%rip), %rcx     # 0x25959
movl $0xca, %edx
callq 0x31a0