// File: /workspace/github_c_makefile_star2_O0/lh3[P]fermi-lite/example.c
// Function: main
int main(int argc, char *argv[])
{
	fml_opt_t opt;
	int c, n_seqs, n_utg, gfa_out = 0;
	bseq1_t *seqs;
	fml_utg_t *utg;

	fml_opt_init(&opt);
	while ((c = getopt(argc, argv, "gOAe:l:r:t:c:d:v:")) >= 0) {
		if (c == 'e') opt.ec_k = atoi(optarg);
		else if (c == 'l') opt.min_asm_ovlp = atoi(optarg);
		else if (c == 'r') opt.mag_opt.min_dratio1 = atof(optarg);
		else if (c == 'A') opt.mag_opt.flag |= MAG_F_AGGRESSIVE;
		else if (c == 'O') opt.mag_opt.flag &= ~MAG_F_POPOPEN;
		else if (c == 'd') opt.mag_opt.max_bdiff = atoi(optarg);
		else if (c == 't') opt.n_threads = atoi(optarg);
		else if (c == 'g') gfa_out = 1;
		else if (c == 'v') fm_verbose = atoi(optarg);
		else if (c == 'c') {
			char *p;
			opt.min_cnt = strtol(optarg, &p, 10);
			if (*p == ',') opt.max_cnt = strtol(p + 1, &p, 10);
		}
	}
	if (argc == optind) {
		fprintf(stderr, "Usage: fml-asm [options] <in.fq>\n");
		fprintf(stderr, "Options:\n");
		fprintf(stderr, "  -e INT          k-mer length for error correction (0 for auto; -1 to disable) [%d]\n", opt.ec_k);
		fprintf(stderr, "  -c INT1[,INT2]  range of k-mer & read count thresholds for ec and graph cleaning [%d,%d]\n", opt.min_cnt, opt.max_cnt);
		fprintf(stderr, "  -l INT          min overlap length during initial assembly [%d]\n", opt.min_asm_ovlp);
		fprintf(stderr, "  -r FLOAT        drop an overlap if its length is below maxOvlpLen*FLOAT [%g]\n", opt.mag_opt.min_dratio1);
		fprintf(stderr, "  -t INT          number of threads (don't use multi-threading for small data sets) [%d]\n", opt.n_threads);
		fprintf(stderr, "  -d INT          retain a bubble if one side is longer than the other side by >INT-bp [%d]\n", opt.mag_opt.max_bdiff);
		fprintf(stderr, "  -A              discard heterozygotes (apply this to assemble bacterial genomes; override -O)\n");
		fprintf(stderr, "  -O              don't apply aggressive tip trimming\n");
		fprintf(stderr, "  -g              output the assembly graph in the GFA format\n");
		return 1;
	}
	seqs = bseq_read(argv[optind], &n_seqs);
	utg = fml_assemble(&opt, n_seqs, seqs, &n_utg);
	if (!gfa_out) fml_utg_print(n_utg, utg);
	else fml_utg_print_gfa(n_utg, utg);
	fml_utg_destroy(n_utg, utg);
	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x90, %rsp
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl $0x0, -0x70(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x2730
movl -0x8(%rbp), %edi
movq -0x10(%rbp), %rsi
leaq 0x22bfd(%rip), %rdx     # 0x25004
callq 0x2260
movl %eax, -0x64(%rbp)
cmpl $0x0, %eax
jl 0x2573
cmpl $0x65, -0x64(%rbp)
jne 0x2435
movq 0x27bb3(%rip), %rax     # 0x29fd8
movq (%rax), %rdi
callq 0x2270
movl %eax, -0x5c(%rbp)
jmp 0x256e
cmpl $0x6c, -0x64(%rbp)
jne 0x2452
movq 0x27b96(%rip), %rax     # 0x29fd8
movq (%rax), %rdi
callq 0x2270
movl %eax, -0x50(%rbp)
jmp 0x256c
cmpl $0x72, -0x64(%rbp)
jne 0x2475
movq 0x27b79(%rip), %rax     # 0x29fd8
movq (%rax), %rdi
callq 0x2080
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x1c(%rbp)
jmp 0x256a
cmpl $0x41, -0x64(%rbp)
jne 0x2489
movl -0x48(%rbp), %eax
orl $0x20, %eax
movl %eax, -0x48(%rbp)
jmp 0x2568
cmpl $0x4f, -0x64(%rbp)
jne 0x249d
movl -0x48(%rbp), %eax
andl $-0x41, %eax
movl %eax, -0x48(%rbp)
jmp 0x2566
cmpl $0x64, -0x64(%rbp)
jne 0x24ba
movq 0x27b2e(%rip), %rax     # 0x29fd8
movq (%rax), %rdi
callq 0x2270
movl %eax, -0x30(%rbp)
jmp 0x2564
cmpl $0x74, -0x64(%rbp)
jne 0x24d7
movq 0x27b11(%rip), %rax     # 0x29fd8
movq (%rax), %rdi
callq 0x2270
movl %eax, -0x60(%rbp)
jmp 0x2562
cmpl $0x67, -0x64(%rbp)
jne 0x24e6
movl $0x1, -0x70(%rbp)
jmp 0x2560
cmpl $0x76, -0x64(%rbp)
jne 0x2508
movq 0x27ae5(%rip), %rax     # 0x29fd8
movq (%rax), %rdi
callq 0x2270
movl %eax, %ecx
leaq 0x27dac(%rip), %rax     # 0x2a2b0
movl %ecx, (%rax)
jmp 0x255e
cmpl $0x63, -0x64(%rbp)
jne 0x255c
movq 0x27ac3(%rip), %rax     # 0x29fd8
movq (%rax), %rdi
leaq -0x88(%rbp), %rsi
movl $0xa, %edx
callq 0x2180
movl %eax, -0x58(%rbp)
movq -0x88(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2c, %eax
jne 0x255a
movq -0x88(%rbp), %rdi
addq $0x1, %rdi
leaq -0x88(%rbp), %rsi
movl $0xa, %edx
callq 0x2180
movl %eax, -0x54(%rbp)
jmp 0x255c
jmp 0x255e
jmp 0x2560
jmp 0x2562
jmp 0x2564
jmp 0x2566
jmp 0x2568
jmp 0x256a
jmp 0x256c
jmp 0x256e
jmp 0x23f9
movl -0x8(%rbp), %eax
movq 0x27a53(%rip), %rcx     # 0x29fd0
cmpl (%rcx), %eax
jne 0x26b1
movq 0x27a6c(%rip), %rax     # 0x29ff8
movq (%rax), %rdi
leaq 0x22a80(%rip), %rsi     # 0x25016
movb $0x0, %al
callq 0x2170
movq 0x27a54(%rip), %rax     # 0x29ff8
movq (%rax), %rdi
leaq 0x22a8a(%rip), %rsi     # 0x25038
movb $0x0, %al
callq 0x2170
movq 0x27a3c(%rip), %rax     # 0x29ff8
movq (%rax), %rdi
movl -0x5c(%rbp), %edx
leaq 0x22a79(%rip), %rsi     # 0x25042
movb $0x0, %al
callq 0x2170
movq 0x27a21(%rip), %rax     # 0x29ff8
movq (%rax), %rdi
movl -0x58(%rbp), %edx
movl -0x54(%rbp), %ecx
leaq 0x22ab1(%rip), %rsi     # 0x25098
movb $0x0, %al
callq 0x2170
movq 0x27a03(%rip), %rax     # 0x29ff8
movq (%rax), %rdi
movl -0x50(%rbp), %edx
leaq 0x22af2(%rip), %rsi     # 0x250f4
movb $0x0, %al
callq 0x2170
movq 0x279e8(%rip), %rax     # 0x29ff8
movq (%rax), %rdi
movss -0x1c(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
leaq 0x22b14(%rip), %rsi     # 0x25137
movb $0x1, %al
callq 0x2170
movq 0x279c7(%rip), %rax     # 0x29ff8
movq (%rax), %rdi
movl -0x60(%rbp), %edx
leaq 0x22b49(%rip), %rsi     # 0x25187
movb $0x0, %al
callq 0x2170
movq 0x279ac(%rip), %rax     # 0x29ff8
movq (%rax), %rdi
movl -0x30(%rbp), %edx
leaq 0x22b88(%rip), %rsi     # 0x251e1
movb $0x0, %al
callq 0x2170
movq 0x27991(%rip), %rax     # 0x29ff8
movq (%rax), %rdi
leaq 0x22bcd(%rip), %rsi     # 0x2523e
movb $0x0, %al
callq 0x2170
movq 0x27979(%rip), %rax     # 0x29ff8
movq (%rax), %rdi
leaq 0x22c16(%rip), %rsi     # 0x2529f
movb $0x0, %al
callq 0x2170
movq 0x27961(%rip), %rax     # 0x29ff8
movq (%rax), %rdi
leaq 0x22c35(%rip), %rsi     # 0x252d6
movb $0x0, %al
callq 0x2170
movl $0x1, -0x4(%rbp)
jmp 0x271b
movq -0x10(%rbp), %rax
movq 0x27914(%rip), %rcx     # 0x29fd0
movslq (%rcx), %rcx
movq (%rax,%rcx,8), %rdi
leaq -0x68(%rbp), %rsi
callq 0x3fc0
movq %rax, -0x78(%rbp)
movl -0x68(%rbp), %esi
movq -0x78(%rbp), %rdx
leaq -0x60(%rbp), %rdi
leaq -0x6c(%rbp), %rcx
callq 0x3e00
movq %rax, -0x80(%rbp)
cmpl $0x0, -0x70(%rbp)
jne 0x26fc
movl -0x6c(%rbp), %edi
movq -0x80(%rbp), %rsi
callq 0x35e0
jmp 0x2708
movl -0x6c(%rbp), %edi
movq -0x80(%rbp), %rsi
callq 0x3bd0
movl -0x6c(%rbp), %edi
movq -0x80(%rbp), %rsi
callq 0x3d80
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x90, %rsp
popq %rbp
retq
nopw (%rax,%rax)