// File: /workspace/github_c_makefile_star2_O0/lh3[P]bgt/view.c
// Function: main_view
int main_view(int argc, char *argv[])
{
	int i, c, n_files = 0, out_bcf = 0, clevel = -1, multi_flag = 0, excl = 0, not_vcf = 0, in_mem = 0, u_set = 0;
	long seekn = -1, n_rec = LONG_MAX, n_read = 0;
	bgtm_t *bm = 0;
	bcf1_t *b;
	htsFile *out = 0;
	char modew[8], *reg = 0, *site_flt = 0;
	void *bed = 0;
	int n_groups = 0;
	char *gexpr[BGT_MAX_GROUPS], *aexpr = 0, *dbfn = 0, *fmt = 0;
	bgt_file_t **files = 0;
	fmf_t *vardb = 0;

	while ((c = getopt(argc, argv, "ubs:r:l:CMGB:ef:g:a:i:n:SHt:d:")) >= 0) {
		if (c == 'b') out_bcf = 1;
		else if (c == 'r') reg = optarg;
		else if (c == 'l') clevel = atoi(optarg);
		else if (c == 'e') excl = 1;
		else if (c == 'u') u_set = 1;
		else if (c == 'B') bed = bed_read(optarg);
		else if (c == 'C') multi_flag |= BGT_F_SET_AC;
		else if (c == 'G') multi_flag |= BGT_F_NO_GT;
		else if (c == 'S') multi_flag |= BGT_F_NO_GT | BGT_F_CNT_AL, not_vcf = 1;
		else if (c == 'H') multi_flag |= BGT_F_NO_GT | BGT_F_CNT_HAP, not_vcf = 1;
		else if (c == 'M') in_mem = 1;
		else if (c == 'i') seekn = atol(optarg) - 1;
		else if (c == 'n') n_rec = atol(optarg);
		else if (c == 'f') site_flt = optarg;
		else if (c == 't') fmt = optarg, not_vcf = 1;
		else if (c == 'd') dbfn = optarg;
		else if (c == 's' && n_groups < BGT_MAX_GROUPS) gexpr[n_groups++] = optarg;
		else if (c == 'a') aexpr = optarg;
	}
	if (n_rec < 0) {
		fprintf(stderr, "[E::%s] option -n must be at least 0.\n", __func__);
		return 1;
	}
	if (clevel > 9) clevel = 9;
	if (u_set) clevel = 0, out_bcf = 1;
	if (n_groups > 1) multi_flag |= BGT_F_SET_AC;
	if (argc - optind < 1) {
		fprintf(stderr, "Usage: bgt %s [options] <bgt-prefix> [...]", argv[0]);
		fputc('\n', stderr);
		fprintf(stderr, "Options:\n");
		fprintf(stderr, "  Sample selection:\n");
		fprintf(stderr, "    -s EXPR      samples list (,sample1,sample2 or a file or expr; see Notes below) [all]\n");
		fprintf(stderr, "  Site selection:\n");
		fprintf(stderr, "    -r STR       region [all]\n");
		fprintf(stderr, "    -B FILE      extract variants overlapping BED FILE []\n");
		fprintf(stderr, "    -e           exclude variants overlapping BED FILE (effective with -B)\n");
		fprintf(stderr, "    -i INT       process from the INT-th record (1-based) []\n");
		fprintf(stderr, "    -n INT       process at most INT records []\n");
		fprintf(stderr, "    -d FILE      variant annotations in FMF (to work with -a) []\n");
		fprintf(stderr, "    -M           load variant annotations in RAM (only with -d)\n");
		fprintf(stderr, "    -a EXPR      alleles list chr:1basedPos:refLen:seq (,allele1,allele2 or a file or expr) []\n");
		fprintf(stderr, "    -f STR       frequency filters []\n");
		fprintf(stderr, "  VCF output:\n");
		fprintf(stderr, "    -b           BCF output (effective without -S/-H)\n");
		fprintf(stderr, "    -l INT       compression level for BCF [default]\n");
		fprintf(stderr, "    -u           equivalent to -bl0 (overriding -b and -l)\n");
		fprintf(stderr, "    -G           don't output sample genotypes\n");
		fprintf(stderr, "    -C           write AC/AN to the INFO field (auto applied with -f or multipl -s)\n");
		fprintf(stderr, "  Non-VCF output:\n");
		fprintf(stderr, "    -S           show samples with a set of alleles (with -a)\n");
		fprintf(stderr, "    -H           count of haplotypes with a set of alleles (with -a)\n");
		fprintf(stderr, "    -t STR       comma-delimited list of fields to output. Accepted variables:\n");
		fprintf(stderr, "                 AC, AN, AC#, AN#, CHROM, POS, END, REF, ALT (# for a group number)\n");
		fprintf(stderr, "Notes:\n");
		fprintf(stderr, "  For option -s/-a, EXPR can be one of:\n");
		fprintf(stderr, "    1) comma-delimited list following a colon/comma. e.g. -s,NA12878,NA12044\n");
		fprintf(stderr, "    2) space-delimited file with the first column giving a sample/allele name. e.g. -s list.txt\n");
		fprintf(stderr, "    3) expression if .spl/-d file contains metadata. e.g.: -s\"gender=='M'&&population!='CEU'\"\n");
		fprintf(stderr, "  If multiple -s is specified, the AC/AN of the first group will be written to VCF INFO AC1/AN1,\n");
		fprintf(stderr, "  the second to AC2/AN2, etc.\n");
		return 1;
	}

	if (dbfn && in_mem) vardb = fmf_read(dbfn), dbfn = 0;

	if ((multi_flag&(BGT_F_CNT_AL|BGT_F_CNT_HAP)) && aexpr == 0) {
		fprintf(stderr, "[E::%s] -a must be specified when -S/-H is in use.\n", __func__);
		return 1;
	}

	n_files = argc - optind;
	files = (bgt_file_t**)calloc(n_files, sizeof(bgt_file_t*));
	for (i = 0; i < n_files; ++i) {
		files[i] = bgt_open(argv[optind+i]);
		if (files[i] == 0) {
			fprintf(stderr, "[E::%s] failed to open BGT with prefix '%s'\n", __func__, argv[optind+i]);
			return 1; // FIXME: memory leak
		}
	}

	bm = bgtm_reader_init(n_files, files);
	bgtm_set_flag(bm, multi_flag);
	if (site_flt && bgtm_set_flt_site(bm, site_flt) != 0) {
		fprintf(stderr, "[E::%s] failed to set frequency filters. Syntax error?\n", __func__);
		return 1;
	}
	if (reg && bgtm_set_region(bm, reg) < 0) {
		fprintf(stderr, "[E::%s] failed to set region. Region format error?\n", __func__);
		return 1;
	}
	if (bed) bgtm_set_bed(bm, bed, excl);
	if (fmt && bgtm_set_table(bm, fmt) < 0) {
		fprintf(stderr, "[E::%s] failed to set tabular output.\n", __func__);
		return 1;
	}
	if (seekn > 0) bgtm_set_start(bm, seekn);
	if (aexpr) {
		int n_al;
		n_al = bgtm_set_alleles(bm, aexpr, vardb, dbfn);
		if (n_al < 0) {
			fprintf(stderr, "[E::%s] failed to set alleles.\n", __func__);
			return 1;
		} else if (n_al == 0)
			fprintf(stderr, "[W::%s] no alleles selected.\n", __func__);
	}
	for (i = 0; i < n_groups; ++i) {
		if (bgtm_add_group(bm, gexpr[i]) < 0) {
			fprintf(stderr, "[E::%s] failed to add sample group '%s'.\n", __func__, gexpr[i]);
			return 1;
		}
	}
	bgtm_prepare(bm); // bgtm_prepare() generates the VCF header

	if (!not_vcf) {
		strcpy(modew, "w");
		if (out_bcf) strcat(modew, "b");
		sprintf(modew + strlen(modew), "%d", clevel);
		out = hts_open("-", modew, 0);
		vcf_hdr_write(out, bm->h_out);
	}

	b = bcf_init1();
	while (bgtm_read(bm, b) >= 0 && n_read < n_rec) {
		if (out) vcf_write1(out, bm->h_out, b);
		if (fmt && bm->n_fields > 0) puts(bm->tbl_line.s);
		++n_read;
	}
	bcf_destroy1(b);

	if (not_vcf && bm->n_aal > 0) {
		if (bm->flag & BGT_F_CNT_HAP) {
			bgt_hapcnt_t *hc;
			int n_hap;
			char *s;
			hc = bgtm_hapcnt(bm, &n_hap);
			s = bgtm_hapcnt_print_destroy(bm, n_hap, hc);
			fputs(s, stdout);
			free(s);
		}
		if (bm->flag & BGT_F_CNT_AL) {
			char *s;
			if ((s = bgtm_alcnt_print(bm)) != 0)
				fputs(s, stdout);
			free(s);
		}
	}

	if (out) hts_close(out);
	bgtm_reader_destroy(bm);
	if (bed) bed_destroy(bed);
	for (i = 0; i < n_files; ++i) bgt_close(files[i]);
	free(files);
	if (vardb) fmf_destroy(vardb);
	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1f0, %rsp            # imm = 0x1F0
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl $0x0, -0x1c(%rbp)
movl $0x0, -0x20(%rbp)
movl $0xffffffff, -0x24(%rbp) # imm = 0xFFFFFFFF
movl $0x0, -0x28(%rbp)
movl $0x0, -0x2c(%rbp)
movl $0x0, -0x30(%rbp)
movl $0x0, -0x34(%rbp)
movl $0x0, -0x38(%rbp)
movq $-0x1, -0x40(%rbp)
movabsq $0x7fffffffffffffff, %rax # imm = 0x7FFFFFFFFFFFFFFF
movq %rax, -0x48(%rbp)
movq $0x0, -0x50(%rbp)
movq $0x0, -0x58(%rbp)
movq $0x0, -0x68(%rbp)
movq $0x0, -0x78(%rbp)
movq $0x0, -0x80(%rbp)
movq $0x0, -0x88(%rbp)
movl $0x0, -0x8c(%rbp)
movq $0x0, -0x198(%rbp)
movq $0x0, -0x1a0(%rbp)
movq $0x0, -0x1a8(%rbp)
movq $0x0, -0x1b0(%rbp)
movq $0x0, -0x1b8(%rbp)
movl -0x8(%rbp), %edi
movq -0x10(%rbp), %rsi
leaq 0x23fe4(%rip), %rdx     # 0x274b6
callq 0x23e0
movl %eax, -0x18(%rbp)
cmpl $0x0, %eax
jl 0x36e6
cmpl $0x62, -0x18(%rbp)
jne 0x34f5
movl $0x1, -0x20(%rbp)
jmp 0x36e1
cmpl $0x72, -0x18(%rbp)
jne 0x350e
movq 0x2aaae(%rip), %rax     # 0x2dfb0
movq (%rax), %rax
movq %rax, -0x78(%rbp)
jmp 0x36df
cmpl $0x6c, -0x18(%rbp)
jne 0x352b
movq 0x2aa95(%rip), %rax     # 0x2dfb0
movq (%rax), %rdi
callq 0x23f0
movl %eax, -0x24(%rbp)
jmp 0x36dd
cmpl $0x65, -0x18(%rbp)
jne 0x353d
movl $0x1, -0x2c(%rbp)
jmp 0x36db
cmpl $0x75, -0x18(%rbp)
jne 0x354f
movl $0x1, -0x38(%rbp)
jmp 0x36d9
cmpl $0x42, -0x18(%rbp)
jne 0x3570
movq 0x2aa54(%rip), %rax     # 0x2dfb0
movq (%rax), %rdi
callq 0x19360
movq %rax, -0x88(%rbp)
jmp 0x36d7
cmpl $0x43, -0x18(%rbp)
jne 0x3584
movl -0x28(%rbp), %eax
orl $0x1, %eax
movl %eax, -0x28(%rbp)
jmp 0x36d5
cmpl $0x47, -0x18(%rbp)
jne 0x3598
movl -0x28(%rbp), %eax
orl $0x2, %eax
movl %eax, -0x28(%rbp)
jmp 0x36d3
cmpl $0x53, -0x18(%rbp)
jne 0x35b3
movl -0x28(%rbp), %eax
orl $0x6, %eax
movl %eax, -0x28(%rbp)
movl $0x1, -0x30(%rbp)
jmp 0x36d1
cmpl $0x48, -0x18(%rbp)
jne 0x35ce
movl -0x28(%rbp), %eax
orl $0xa, %eax
movl %eax, -0x28(%rbp)
movl $0x1, -0x30(%rbp)
jmp 0x36cf
cmpl $0x4d, -0x18(%rbp)
jne 0x35e0
movl $0x1, -0x34(%rbp)
jmp 0x36cd
cmpl $0x69, -0x18(%rbp)
jne 0x3602
movq 0x2a9c3(%rip), %rax     # 0x2dfb0
movq (%rax), %rdi
callq 0x2390
subq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0x36cb
cmpl $0x6e, -0x18(%rbp)
jne 0x3620
movq 0x2a9a1(%rip), %rax     # 0x2dfb0
movq (%rax), %rdi
callq 0x2390
movq %rax, -0x48(%rbp)
jmp 0x36c9
cmpl $0x66, -0x18(%rbp)
jne 0x3639
movq 0x2a983(%rip), %rax     # 0x2dfb0
movq (%rax), %rax
movq %rax, -0x80(%rbp)
jmp 0x36c7
cmpl $0x74, -0x18(%rbp)
jne 0x3659
movq 0x2a96a(%rip), %rax     # 0x2dfb0
movq (%rax), %rax
movq %rax, -0x1a8(%rbp)
movl $0x1, -0x30(%rbp)
jmp 0x36c5
cmpl $0x64, -0x18(%rbp)
jne 0x3672
movq 0x2a94a(%rip), %rax     # 0x2dfb0
movq (%rax), %rax
movq %rax, -0x1a0(%rbp)
jmp 0x36c3
cmpl $0x73, -0x18(%rbp)
jne 0x36a8
cmpl $0x20, -0x8c(%rbp)
jge 0x36a8
movq 0x2a928(%rip), %rax     # 0x2dfb0
movq (%rax), %rcx
movl -0x8c(%rbp), %eax
movl %eax, %edx
addl $0x1, %edx
movl %edx, -0x8c(%rbp)
cltq
movq %rcx, -0x190(%rbp,%rax,8)
jmp 0x36c1
cmpl $0x61, -0x18(%rbp)
jne 0x36bf
movq 0x2a8fb(%rip), %rax     # 0x2dfb0
movq (%rax), %rax
movq %rax, -0x198(%rbp)
jmp 0x36c1
jmp 0x36c3
jmp 0x36c5
jmp 0x36c7
jmp 0x36c9
jmp 0x36cb
jmp 0x36cd
jmp 0x36cf
jmp 0x36d1
jmp 0x36d3
jmp 0x36d5
jmp 0x36d7
jmp 0x36d9
jmp 0x36db
jmp 0x36dd
jmp 0x36df
jmp 0x36e1
jmp 0x34c4
cmpq $0x0, -0x48(%rbp)
jge 0x3718
movq 0x2a904(%rip), %rax     # 0x2dff8
movq (%rax), %rdi
leaq 0x23dd7(%rip), %rsi     # 0x274d5
leaq 0x23df7(%rip), %rdx     # 0x274fc
movb $0x0, %al
callq 0x2260
movl $0x1, -0x4(%rbp)
jmp 0x405c
cmpl $0x9, -0x24(%rbp)
jle 0x3725
movl $0x9, -0x24(%rbp)
cmpl $0x0, -0x38(%rbp)
je 0x3739
movl $0x0, -0x24(%rbp)
movl $0x1, -0x20(%rbp)
cmpl $0x1, -0x8c(%rbp)
jle 0x374b
movl -0x28(%rbp), %eax
orl $0x1, %eax
movl %eax, -0x28(%rbp)
movl -0x8(%rbp), %eax
movq 0x2a843(%rip), %rcx     # 0x2df98
subl (%rcx), %eax
cmpl $0x1, %eax
jge 0x3a87
movq 0x2a891(%rip), %rax     # 0x2dff8
movq (%rax), %rdi
movq -0x10(%rbp), %rax
movq (%rax), %rdx
leaq 0x23d8e(%rip), %rsi     # 0x27506
movb $0x0, %al
callq 0x2260
movq 0x2a872(%rip), %rax     # 0x2dff8
movq (%rax), %rsi
movl $0xa, %edi
callq 0x21f0
movq 0x2a85e(%rip), %rax     # 0x2dff8
movq (%rax), %rdi
leaq 0x23a1a(%rip), %rsi     # 0x271be
movb $0x0, %al
callq 0x2260
movq 0x2a846(%rip), %rax     # 0x2dff8
movq (%rax), %rdi
leaq 0x23d75(%rip), %rsi     # 0x27531
movb $0x0, %al
callq 0x2260
movq 0x2a82e(%rip), %rax     # 0x2dff8
movq (%rax), %rdi
leaq 0x23d72(%rip), %rsi     # 0x27546
movb $0x0, %al
callq 0x2260
movq 0x2a816(%rip), %rax     # 0x2dff8
movq (%rax), %rdi
leaq 0x23db5(%rip), %rsi     # 0x275a1
movb $0x0, %al
callq 0x2260
movq 0x2a7fe(%rip), %rax     # 0x2dff8
movq (%rax), %rdi
leaq 0x23db0(%rip), %rsi     # 0x275b4
movb $0x0, %al
callq 0x2260
movq 0x2a7e6(%rip), %rax     # 0x2dff8
movq (%rax), %rdi
leaq 0x23db7(%rip), %rsi     # 0x275d3
movb $0x0, %al
callq 0x2260
movq 0x2a7ce(%rip), %rax     # 0x2dff8
movq (%rax), %rdi
leaq 0x23dda(%rip), %rsi     # 0x2760e
movb $0x0, %al
callq 0x2260
movq 0x2a7b6(%rip), %rax     # 0x2dff8
movq (%rax), %rdi
leaq 0x23e0e(%rip), %rsi     # 0x2765a
movb $0x0, %al
callq 0x2260
movq 0x2a79e(%rip), %rax     # 0x2dff8
movq (%rax), %rdi
leaq 0x23e34(%rip), %rsi     # 0x27698
movb $0x0, %al
callq 0x2260
movq 0x2a786(%rip), %rax     # 0x2dff8
movq (%rax), %rdi
leaq 0x23e4d(%rip), %rsi     # 0x276c9
movb $0x0, %al
callq 0x2260
movq 0x2a76e(%rip), %rax     # 0x2dff8
movq (%rax), %rdi
leaq 0x23e77(%rip), %rsi     # 0x2770b
movb $0x0, %al
callq 0x2260
movq 0x2a756(%rip), %rax     # 0x2dff8
movq (%rax), %rdi
leaq 0x23ea0(%rip), %rsi     # 0x2774c
movb $0x0, %al
callq 0x2260
movq 0x2a73e(%rip), %rax     # 0x2dff8
movq (%rax), %rdi
leaq 0x23ee8(%rip), %rsi     # 0x277ac
movb $0x0, %al
callq 0x2260
movq 0x2a726(%rip), %rax     # 0x2dff8
movq (%rax), %rdi
leaq 0x23ef7(%rip), %rsi     # 0x277d3
movb $0x0, %al
callq 0x2260
movq 0x2a70e(%rip), %rax     # 0x2dff8
movq (%rax), %rdi
leaq 0x23eee(%rip), %rsi     # 0x277e2
movb $0x0, %al
callq 0x2260
movq 0x2a6f6(%rip), %rax     # 0x2dff8
movq (%rax), %rdi
leaq 0x23f0d(%rip), %rsi     # 0x27819
movb $0x0, %al
callq 0x2260
movq 0x2a6de(%rip), %rax     # 0x2dff8
movq (%rax), %rdi
leaq 0x23f2b(%rip), %rsi     # 0x2784f
movb $0x0, %al
callq 0x2260
movq 0x2a6c6(%rip), %rax     # 0x2dff8
movq (%rax), %rdi
leaq 0x23f4f(%rip), %rsi     # 0x2788b
movb $0x0, %al
callq 0x2260
movq 0x2a6ae(%rip), %rax     # 0x2dff8
movq (%rax), %rdi
leaq 0x23f67(%rip), %rsi     # 0x278bb
movb $0x0, %al
callq 0x2260
movq 0x2a696(%rip), %rax     # 0x2dff8
movq (%rax), %rdi
leaq 0x23fa4(%rip), %rsi     # 0x27910
movb $0x0, %al
callq 0x2260
movq 0x2a67e(%rip), %rax     # 0x2dff8
movq (%rax), %rdi
leaq 0x23f9f(%rip), %rsi     # 0x27923
movb $0x0, %al
callq 0x2260
movq 0x2a666(%rip), %rax     # 0x2dff8
movq (%rax), %rdi
leaq 0x23fc6(%rip), %rsi     # 0x27962
movb $0x0, %al
callq 0x2260
movq 0x2a64e(%rip), %rax     # 0x2dff8
movq (%rax), %rdi
leaq 0x23ff4(%rip), %rsi     # 0x279a8
movb $0x0, %al
callq 0x2260
movq 0x2a636(%rip), %rax     # 0x2dff8
movq (%rax), %rdi
leaq 0x2402c(%rip), %rsi     # 0x279f8
movb $0x0, %al
callq 0x2260
movq 0x2a61e(%rip), %rax     # 0x2dff8
movq (%rax), %rdi
leaq 0x24069(%rip), %rsi     # 0x27a4d
movb $0x0, %al
callq 0x2260
movq 0x2a606(%rip), %rax     # 0x2dff8
movq (%rax), %rdi
leaq 0x24059(%rip), %rsi     # 0x27a55
movb $0x0, %al
callq 0x2260
movq 0x2a5ee(%rip), %rax     # 0x2dff8
movq (%rax), %rdi
leaq 0x2406a(%rip), %rsi     # 0x27a7e
movb $0x0, %al
callq 0x2260
movq 0x2a5d6(%rip), %rax     # 0x2dff8
movq (%rax), %rdi
leaq 0x240a0(%rip), %rsi     # 0x27acc
movb $0x0, %al
callq 0x2260
movq 0x2a5be(%rip), %rax     # 0x2dff8
movq (%rax), %rdi
leaq 0x240e9(%rip), %rsi     # 0x27b2d
movb $0x0, %al
callq 0x2260
movq 0x2a5a6(%rip), %rax     # 0x2dff8
movq (%rax), %rdi
leaq 0x24130(%rip), %rsi     # 0x27b8c
movb $0x0, %al
callq 0x2260
movq 0x2a58e(%rip), %rax     # 0x2dff8
movq (%rax), %rdi
leaq 0x2417a(%rip), %rsi     # 0x27bee
movb $0x0, %al
callq 0x2260
movl $0x1, -0x4(%rbp)
jmp 0x405c
cmpq $0x0, -0x1a0(%rbp)
je 0x3ab5
cmpl $0x0, -0x34(%rbp)
je 0x3ab5
movq -0x1a0(%rbp), %rdi
callq 0xd4c0
movq %rax, -0x1b8(%rbp)
movq $0x0, -0x1a0(%rbp)
movl -0x28(%rbp), %eax
andl $0xc, %eax
cmpl $0x0, %eax
je 0x3af5
cmpq $0x0, -0x198(%rbp)
jne 0x3af5
movq 0x2a527(%rip), %rax     # 0x2dff8
movq (%rax), %rdi
leaq 0x24132(%rip), %rsi     # 0x27c0d
leaq 0x23a1a(%rip), %rdx     # 0x274fc
movb $0x0, %al
callq 0x2260
movl $0x1, -0x4(%rbp)
jmp 0x405c
movl -0x8(%rbp), %eax
movq 0x2a499(%rip), %rcx     # 0x2df98
subl (%rcx), %eax
movl %eax, -0x1c(%rbp)
movslq -0x1c(%rbp), %rdi
movl $0x8, %esi
callq 0x2230
movq %rax, -0x1b0(%rbp)
movl $0x0, -0x14(%rbp)
movl -0x14(%rbp), %eax
cmpl -0x1c(%rbp), %eax
jge 0x3bbe
movq -0x10(%rbp), %rax
movq 0x2a461(%rip), %rcx     # 0x2df98
movl (%rcx), %ecx
addl -0x14(%rbp), %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x1c300
movq %rax, %rdx
movq -0x1b0(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movq -0x1b0(%rbp), %rax
movslq -0x14(%rbp), %rcx
cmpq $0x0, (%rax,%rcx,8)
jne 0x3bae
movq 0x2a485(%rip), %rax     # 0x2dff8
movq (%rax), %rdi
movq -0x10(%rbp), %rax
movq 0x2a417(%rip), %rcx     # 0x2df98
movl (%rcx), %ecx
addl -0x14(%rbp), %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rcx
leaq 0x240ad(%rip), %rsi     # 0x27c41
leaq 0x23961(%rip), %rdx     # 0x274fc
movb $0x0, %al
callq 0x2260
movl $0x1, -0x4(%rbp)
jmp 0x405c
jmp 0x3bb0
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x3b20
movl -0x1c(%rbp), %edi
movq -0x1b0(%rbp), %rsi
callq 0x1dce0
movq %rax, -0x58(%rbp)
movq -0x58(%rbp), %rdi
movl -0x28(%rbp), %esi
callq 0x1e1d0
cmpq $0x0, -0x80(%rbp)
je 0x3c21
movq -0x58(%rbp), %rdi
movq -0x80(%rbp), %rsi
callq 0x1e1f0
cmpl $0x0, %eax
je 0x3c21
movq 0x2a3fb(%rip), %rax     # 0x2dff8
movq (%rax), %rdi
leaq 0x24067(%rip), %rsi     # 0x27c6e
leaq 0x238ee(%rip), %rdx     # 0x274fc
movb $0x0, %al
callq 0x2260
movl $0x1, -0x4(%rbp)
jmp 0x405c
cmpq $0x0, -0x78(%rbp)
je 0x3c65
movq -0x58(%rbp), %rdi
movq -0x78(%rbp), %rsi
callq 0x1e0b0
cmpl $0x0, %eax
jge 0x3c65
movq 0x2a3b7(%rip), %rax     # 0x2dff8
movq (%rax), %rdi
leaq 0x2405b(%rip), %rsi     # 0x27ca6
leaq 0x238aa(%rip), %rdx     # 0x274fc
movb $0x0, %al
callq 0x2260
movl $0x1, -0x4(%rbp)
jmp 0x405c
cmpq $0x0, -0x88(%rbp)
je 0x3c82
movq -0x58(%rbp), %rdi
movq -0x88(%rbp), %rsi
movl -0x2c(%rbp), %edx
callq 0x1e170
cmpq $0x0, -0x1a8(%rbp)
je 0x3ccc
movq -0x58(%rbp), %rdi
movq -0x1a8(%rbp), %rsi
callq 0x1f400
cmpl $0x0, %eax
jge 0x3ccc
movq 0x2a350(%rip), %rax     # 0x2dff8
movq (%rax), %rdi
leaq 0x24028(%rip), %rsi     # 0x27cda
leaq 0x23843(%rip), %rdx     # 0x274fc
movb $0x0, %al
callq 0x2260
movl $0x1, -0x4(%rbp)
jmp 0x405c
cmpq $0x0, -0x40(%rbp)
jle 0x3ce0
movq -0x58(%rbp), %rdi
movq -0x40(%rbp), %rsi
callq 0x1e120
cmpq $0x0, -0x198(%rbp)
je 0x3d72
movq -0x58(%rbp), %rdi
movq -0x198(%rbp), %rsi
movq -0x1b8(%rbp), %rdx
movq -0x1a0(%rbp), %rcx
callq 0x1e2d0
movl %eax, -0x1bc(%rbp)
cmpl $0x0, -0x1bc(%rbp)
jge 0x3d46
movq 0x2a2d6(%rip), %rax     # 0x2dff8
movq (%rax), %rdi
leaq 0x23fd5(%rip), %rsi     # 0x27d01
leaq 0x237c9(%rip), %rdx     # 0x274fc
movb $0x0, %al
callq 0x2260
movl $0x1, -0x4(%rbp)
jmp 0x405c
cmpl $0x0, -0x1bc(%rbp)
jne 0x3d6e
movq 0x2a2a2(%rip), %rax     # 0x2dff8
movq (%rax), %rdi
leaq 0x23fc1(%rip), %rsi     # 0x27d21
leaq 0x23795(%rip), %rdx     # 0x274fc
movb $0x0, %al
callq 0x2260
jmp 0x3d70
jmp 0x3d72
movl $0x0, -0x14(%rbp)
movl -0x14(%rbp), %eax
cmpl -0x8c(%rbp), %eax
jge 0x3de2
movq -0x58(%rbp), %rdi
movslq -0x14(%rbp), %rax
movq -0x190(%rbp,%rax,8), %rsi
callq 0x1e000
cmpl $0x0, %eax
jge 0x3dd5
movq 0x2a253(%rip), %rax     # 0x2dff8
movq (%rax), %rdi
movslq -0x14(%rbp), %rax
movq -0x190(%rbp,%rax,8), %rcx
leaq 0x23f84(%rip), %rsi     # 0x27d3f
leaq 0x2373a(%rip), %rdx     # 0x274fc
movb $0x0, %al
callq 0x2260
movl $0x1, -0x4(%rbp)
jmp 0x405c
jmp 0x3dd7
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x3d79
movq -0x58(%rbp), %rdi
callq 0x1f450
cmpl $0x0, -0x30(%rbp)
jne 0x3e6f
leaq -0x70(%rbp), %rdi
leaq 0x23708(%rip), %rsi     # 0x27504
callq 0x2090
cmpl $0x0, -0x20(%rbp)
je 0x3e17
leaq -0x70(%rbp), %rdi
leaq 0x2416f(%rip), %rsi     # 0x27f81
callq 0x2400
leaq -0x70(%rbp), %rax
movq %rax, -0x1e8(%rbp)
leaq -0x70(%rbp), %rdi
callq 0x2170
movq -0x1e8(%rbp), %rdi
addq %rax, %rdi
movl -0x24(%rbp), %edx
leaq 0x24b3f(%rip), %rsi     # 0x2897e
movb $0x0, %al
callq 0x2410
leaq -0x70(%rbp), %rsi
leaq 0x23663(%rip), %rdi     # 0x274b4
xorl %eax, %eax
movl %eax, %edx
callq 0x84f0
movq %rax, -0x68(%rbp)
movq -0x68(%rbp), %rdi
movq -0x58(%rbp), %rax
movq 0x50(%rax), %rsi
callq 0x10e10
movb $0x0, %al
callq 0x100d0
movq %rax, -0x60(%rbp)
movq -0x58(%rbp), %rdi
movq -0x60(%rbp), %rsi
callq 0x210b0
movl %eax, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x1e9(%rbp)
jl 0x3ea7
movq -0x50(%rbp), %rax
cmpq -0x48(%rbp), %rax
setl %al
movb %al, -0x1e9(%rbp)
movb -0x1e9(%rbp), %al
testb $0x1, %al
jne 0x3eb3
jmp 0x3f04
cmpq $0x0, -0x68(%rbp)
je 0x3ecf
movq -0x68(%rbp), %rdi
movq -0x58(%rbp), %rax
movq 0x50(%rax), %rsi
movq -0x60(%rbp), %rdx
callq 0x14af0
cmpq $0x0, -0x1a8(%rbp)
je 0x3ef3
movq -0x58(%rbp), %rax
cmpl $0x0, 0x68(%rax)
jle 0x3ef3
movq -0x58(%rbp), %rax
movq 0x88(%rax), %rdi
callq 0x20e0
movq -0x50(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x50(%rbp)
jmp 0x3e7a
movq -0x60(%rbp), %rdi
callq 0x10100
cmpl $0x0, -0x30(%rbp)
je 0x3fd6
movq -0x58(%rbp), %rax
cmpl $0x0, 0x90(%rax)
jle 0x3fd6
movq -0x58(%rbp), %rax
movl 0xc(%rax), %eax
andl $0x8, %eax
cmpl $0x0, %eax
je 0x3f8d
movq -0x58(%rbp), %rdi
leaq -0x1cc(%rbp), %rsi
callq 0x21910
movq %rax, -0x1c8(%rbp)
movq -0x58(%rbp), %rdi
movl -0x1cc(%rbp), %esi
movq -0x1c8(%rbp), %rdx
callq 0x22070
movq %rax, -0x1d8(%rbp)
movq -0x1d8(%rbp), %rdi
movq 0x2a007(%rip), %rax     # 0x2df80
movq (%rax), %rsi
callq 0x21c0
movq -0x1d8(%rbp), %rdi
callq 0x2040
movq -0x58(%rbp), %rax
movl 0xc(%rax), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0x3fd4
movq -0x58(%rbp), %rdi
callq 0x22240
movq %rax, -0x1e0(%rbp)
cmpq $0x0, %rax
je 0x3fc8
movq -0x1e0(%rbp), %rdi
movq 0x29fc0(%rip), %rax     # 0x2df80
movq (%rax), %rsi
callq 0x21c0
movq -0x1e0(%rbp), %rdi
callq 0x2040
jmp 0x3fd6
cmpq $0x0, -0x68(%rbp)
je 0x3fe6
movq -0x68(%rbp), %rdi
callq 0x87b0
movq -0x58(%rbp), %rdi
callq 0x1dd90
cmpq $0x0, -0x88(%rbp)
je 0x4005
movq -0x88(%rbp), %rdi
callq 0x19b90
movl $0x0, -0x14(%rbp)
movl -0x14(%rbp), %eax
cmpl -0x1c(%rbp), %eax
jge 0x4033
movq -0x1b0(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x1c620
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x400c
movq -0x1b0(%rbp), %rdi
callq 0x2040
cmpq $0x0, -0x1b8(%rbp)
je 0x4055
movq -0x1b8(%rbp), %rdi
callq 0xdb80
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x1f0, %rsp            # imm = 0x1F0
popq %rbp
retq
nopl (%rax,%rax)