// File: ncbi[P]amr/gff.cpp
// Function: GFF_sp::Locus::Locus(unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, unsigned long, unsigned long, bool, bool, unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
Locus::Locus (size_t lineNum_arg,
              const string &contig_arg,
    				  size_t start_arg,
    				  size_t stop_arg,
    				  bool strand_arg,
              bool partial_arg,
              size_t crossOriginSeqLen_arg,
              string gene_arg,
              string product_arg)
: lineNum (lineNum_arg)
, contig (contig_arg)
, start (start_arg)
, stop (stop_arg)
, strand (strand_arg)
, partial (partial_arg)
, contigLen (crossOriginSeqLen_arg)
, crossOrigin (bool (crossOriginSeqLen_arg))
, gene (gene_arg)
, product (product_arg)
{ 
//QC_ASSERT (lineNum >= 1);
  trim (contig);
	if (contig. empty ())
		throw runtime_error ("Empty contig name");
	if (crossOrigin)
	{
		swap (start, stop);
		start--;
		stop++;
	  QC_ASSERT (contigLen);
		QC_ASSERT (stop <= contigLen);
	}
  QC_ASSERT (start < stop); 
}

// Assembly:
subq $0x3f8, %rsp            # imm = 0x3F8
movl %r9d, %eax
movq %rcx, 0x48(%rsp)
movq %rdx, %rcx
movq 0x48(%rsp), %rdx
movq %rcx, 0x50(%rsp)
movq %rsi, %rcx
movq 0x50(%rsp), %rsi
movq %rcx, 0x58(%rsp)
movq %rdi, %r9
movq 0x58(%rsp), %rdi
movb %al, %cl
movq 0x418(%rsp), %rax
movq %rax, 0x60(%rsp)
movq 0x410(%rsp), %rax
movq %rax, 0x78(%rsp)
movq 0x408(%rsp), %rax
movb 0x400(%rsp), %al
movq %r9, 0x3f0(%rsp)
movq %rdi, 0x3e8(%rsp)
movq %rsi, 0x3e0(%rsp)
movq %rdx, 0x3d8(%rsp)
movq %r8, 0x3d0(%rsp)
andb $0x1, %cl
movb %cl, 0x3cf(%rsp)
andb $0x1, %al
movb %al, 0x3ce(%rsp)
movq 0x3f0(%rsp), %rdi
movq %rdi, 0x70(%rsp)
movq 0x3e8(%rsp), %rax
movq %rax, (%rdi)
addq $0x8, %rdi
movq %rdi, 0x68(%rsp)
movq 0x3e0(%rsp), %rsi
callq 0xc320
movq 0x70(%rsp), %rdi
movq 0x78(%rsp), %rsi
movq 0x3d8(%rsp), %rax
movq %rax, 0x28(%rdi)
movq 0x3d0(%rsp), %rax
movq %rax, 0x30(%rdi)
movb 0x3cf(%rsp), %al
andb $0x1, %al
movb %al, 0x38(%rdi)
movb 0x3ce(%rsp), %al
andb $0x1, %al
movb %al, 0x39(%rdi)
movq 0x408(%rsp), %rax
movq %rax, 0x40(%rdi)
movq 0x408(%rsp), %rax
testq %rax, %rax
setne 0x48(%rdi)
addq $0x50, %rdi
movq %rdi, 0x80(%rsp)
callq 0xc320
jmp 0xabdfd
movq 0x60(%rsp), %rsi
movq 0x70(%rsp), %rdi
addq $0x70, %rdi
movq %rdi, 0x40(%rsp)
callq 0xc320
jmp 0xabe17
movq 0x70(%rsp), %rdi
addq $0x8, %rdi
callq 0x73800
jmp 0xabe27
movq 0x70(%rsp), %rdi
addq $0x8, %rdi
callq 0xcc10
testb $0x1, %al
jne 0xabe3e
jmp 0xabeec
movl $0x10, %edi
callq 0xc3b0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x38(%rsp)
leaq 0x25192(%rip), %rsi     # 0xd0fec
callq 0xc2e0
jmp 0xabe61
movq 0x38(%rsp), %rdi
movq 0x5a183(%rip), %rsi     # 0x105ff0
movq 0x5a0fc(%rip), %rdx     # 0x105f70
callq 0xcc80
jmp 0xac751
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3c0(%rsp)
movl %eax, 0x3bc(%rsp)
jmp 0xac73a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3c0(%rsp)
movl %eax, 0x3bc(%rsp)
jmp 0xac72d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3c0(%rsp)
movl %eax, 0x3bc(%rsp)
jmp 0xac723
movq 0x38(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3c0(%rsp)
movl %eax, 0x3bc(%rsp)
callq 0xc580
jmp 0xac723
movq 0x70(%rsp), %rax
testb $0x1, 0x48(%rax)
je 0xac479
movq 0x70(%rsp), %rsi
movq %rsi, %rdi
addq $0x28, %rdi
addq $0x30, %rsi
callq 0xb3600
movq 0x70(%rsp), %rax
movq 0x28(%rax), %rcx
addq $-0x1, %rcx
movq %rcx, 0x28(%rax)
movq 0x30(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0x30(%rax)
callq 0xc090
movq %rax, %rcx
movq 0x70(%rsp), %rax
movl $0x0, (%rcx)
cmpq $0x0, 0x40(%rax)
jne 0xac1d2
callq 0xc8c0
cmpl $0x0, %eax
jne 0xac1c8
leaq 0x317(%rsp), %rdi
movq %rdi, 0x30(%rsp)
callq 0xcd00
movq 0x30(%rsp), %rdx
leaq 0x25087(%rip), %rsi     # 0xd0ffe
leaq 0x318(%rsp), %rdi
callq 0x29fd0
jmp 0xabf86
leaq 0x2f0(%rsp), %rdi
movl $0x4f, %esi
callq 0x2ded0
jmp 0xabf9a
leaq 0x338(%rsp), %rdi
leaq 0x318(%rsp), %rsi
leaq 0x2f0(%rsp), %rdx
callq 0x2dde0
jmp 0xabfb9
leaq 0x1fbe1(%rip), %rdx     # 0xcbba1
leaq 0x358(%rsp), %rdi
leaq 0x338(%rsp), %rsi
callq 0x2a2f0
jmp 0xabfd7
leaq 0x2af(%rsp), %rdi
movq %rdi, 0x28(%rsp)
callq 0xcd00
movq 0x28(%rsp), %rdx
leaq 0x2501a(%rip), %rsi     # 0xd100f
leaq 0x2b0(%rsp), %rdi
callq 0x29fd0
jmp 0xac004
leaq 0x21a0b(%rip), %rdx     # 0xcda16
leaq 0x2d0(%rsp), %rdi
leaq 0x2b0(%rsp), %rsi
callq 0x2a2f0
jmp 0xac022
leaq 0x378(%rsp), %rdi
leaq 0x358(%rsp), %rsi
leaq 0x2d0(%rsp), %rdx
callq 0x2dde0
jmp 0xac041
leaq 0x25030(%rip), %rdx     # 0xd1078
leaq 0x398(%rsp), %rdi
leaq 0x378(%rsp), %rsi
callq 0x2a2f0
jmp 0xac05f
leaq 0x398(%rsp), %rdi
callq 0x3e9b0
jmp 0xac06e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3c0(%rsp)
movl %eax, 0x3bc(%rsp)
jmp 0xac1b6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3c0(%rsp)
movl %eax, 0x3bc(%rsp)
jmp 0xac1a9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3c0(%rsp)
movl %eax, 0x3bc(%rsp)
jmp 0xac19c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3c0(%rsp)
movl %eax, 0x3bc(%rsp)
jmp 0xac18f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3c0(%rsp)
movl %eax, 0x3bc(%rsp)
jmp 0xac175
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3c0(%rsp)
movl %eax, 0x3bc(%rsp)
jmp 0xac168
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3c0(%rsp)
movl %eax, 0x3bc(%rsp)
jmp 0xac15b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3c0(%rsp)
movl %eax, 0x3bc(%rsp)
jmp 0xac14e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3c0(%rsp)
movl %eax, 0x3bc(%rsp)
leaq 0x398(%rsp), %rdi
callq 0xce98
leaq 0x378(%rsp), %rdi
callq 0xce98
leaq 0x2d0(%rsp), %rdi
callq 0xce98
leaq 0x2b0(%rsp), %rdi
callq 0xce98
leaq 0x2af(%rsp), %rdi
callq 0xc7a0
leaq 0x358(%rsp), %rdi
callq 0xce98
leaq 0x338(%rsp), %rdi
callq 0xce98
leaq 0x2f0(%rsp), %rdi
callq 0xce98
leaq 0x318(%rsp), %rdi
callq 0xce98
leaq 0x317(%rsp), %rdi
callq 0xc7a0
jmp 0xac723
movl $0x1, %edi
callq 0xc8d0
callq 0xc090
movq 0x70(%rsp), %rcx
movl $0x0, (%rax)
movq 0x30(%rcx), %rax
cmpq 0x40(%rcx), %rax
jbe 0xac477
callq 0xc8c0
cmpl $0x0, %eax
jne 0xac46d
leaq 0x207(%rsp), %rdi
movq %rdi, 0x20(%rsp)
callq 0xcd00
movq 0x20(%rsp), %rdx
leaq 0x24de2(%rip), %rsi     # 0xd0ffe
leaq 0x208(%rsp), %rdi
callq 0x29fd0
jmp 0xac22b
leaq 0x1e0(%rsp), %rdi
movl $0x50, %esi
callq 0x2ded0
jmp 0xac23f
leaq 0x228(%rsp), %rdi
leaq 0x208(%rsp), %rsi
leaq 0x1e0(%rsp), %rdx
callq 0x2dde0
jmp 0xac25e
leaq 0x1f93c(%rip), %rdx     # 0xcbba1
leaq 0x248(%rsp), %rdi
leaq 0x228(%rsp), %rsi
callq 0x2a2f0
jmp 0xac27c
leaq 0x19f(%rsp), %rdi
movq %rdi, 0x18(%rsp)
callq 0xcd00
movq 0x18(%rsp), %rdx
leaq 0x24d75(%rip), %rsi     # 0xd100f
leaq 0x1a0(%rsp), %rdi
callq 0x29fd0
jmp 0xac2a9
leaq 0x21766(%rip), %rdx     # 0xcda16
leaq 0x1c0(%rsp), %rdi
leaq 0x1a0(%rsp), %rsi
callq 0x2a2f0
jmp 0xac2c7
leaq 0x268(%rsp), %rdi
leaq 0x248(%rsp), %rsi
leaq 0x1c0(%rsp), %rdx
callq 0x2dde0
jmp 0xac2e6
leaq 0x24d83(%rip), %rdx     # 0xd1070
leaq 0x288(%rsp), %rdi
leaq 0x268(%rsp), %rsi
callq 0x2a2f0
jmp 0xac304
leaq 0x288(%rsp), %rdi
callq 0x3e9b0
jmp 0xac313
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3c0(%rsp)
movl %eax, 0x3bc(%rsp)
jmp 0xac45b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3c0(%rsp)
movl %eax, 0x3bc(%rsp)
jmp 0xac44e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3c0(%rsp)
movl %eax, 0x3bc(%rsp)
jmp 0xac441
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3c0(%rsp)
movl %eax, 0x3bc(%rsp)
jmp 0xac434
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3c0(%rsp)
movl %eax, 0x3bc(%rsp)
jmp 0xac41a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3c0(%rsp)
movl %eax, 0x3bc(%rsp)
jmp 0xac40d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3c0(%rsp)
movl %eax, 0x3bc(%rsp)
jmp 0xac400
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3c0(%rsp)
movl %eax, 0x3bc(%rsp)
jmp 0xac3f3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3c0(%rsp)
movl %eax, 0x3bc(%rsp)
leaq 0x288(%rsp), %rdi
callq 0xce98
leaq 0x268(%rsp), %rdi
callq 0xce98
leaq 0x1c0(%rsp), %rdi
callq 0xce98
leaq 0x1a0(%rsp), %rdi
callq 0xce98
leaq 0x19f(%rsp), %rdi
callq 0xc7a0
leaq 0x248(%rsp), %rdi
callq 0xce98
leaq 0x228(%rsp), %rdi
callq 0xce98
leaq 0x1e0(%rsp), %rdi
callq 0xce98
leaq 0x208(%rsp), %rdi
callq 0xce98
leaq 0x207(%rsp), %rdi
callq 0xc7a0
jmp 0xac723
movl $0x1, %edi
callq 0xc8d0
jmp 0xac479
callq 0xc090
movq 0x70(%rsp), %rcx
movl $0x0, (%rax)
movq 0x28(%rcx), %rax
cmpq 0x30(%rcx), %rax
jb 0xac71b
callq 0xc8c0
cmpl $0x0, %eax
jne 0xac711
leaq 0xf7(%rsp), %rdi
movq %rdi, 0x10(%rsp)
callq 0xcd00
movq 0x10(%rsp), %rdx
leaq 0x24b3b(%rip), %rsi     # 0xd0ffe
leaq 0xf8(%rsp), %rdi
callq 0x29fd0
jmp 0xac4d2
leaq 0xd0(%rsp), %rdi
movl $0x52, %esi
callq 0x2ded0
jmp 0xac4e6
leaq 0x118(%rsp), %rdi
leaq 0xf8(%rsp), %rsi
leaq 0xd0(%rsp), %rdx
callq 0x2dde0
jmp 0xac505
leaq 0x1f695(%rip), %rdx     # 0xcbba1
leaq 0x138(%rsp), %rdi
leaq 0x118(%rsp), %rsi
callq 0x2a2f0
jmp 0xac523
leaq 0x8f(%rsp), %rdi
movq %rdi, 0x8(%rsp)
callq 0xcd00
movq 0x8(%rsp), %rdx
leaq 0x24ace(%rip), %rsi     # 0xd100f
leaq 0x90(%rsp), %rdi
callq 0x29fd0
jmp 0xac550
leaq 0x214bf(%rip), %rdx     # 0xcda16
leaq 0xb0(%rsp), %rdi
leaq 0x90(%rsp), %rsi
callq 0x2a2f0
jmp 0xac56e
leaq 0x158(%rsp), %rdi
leaq 0x138(%rsp), %rsi
leaq 0xb0(%rsp), %rdx
callq 0x2dde0
jmp 0xac58d
leaq 0x24aee(%rip), %rdx     # 0xd1082
leaq 0x178(%rsp), %rdi
leaq 0x158(%rsp), %rsi
callq 0x2a2f0
jmp 0xac5ab
leaq 0x178(%rsp), %rdi
callq 0x3e9b0
jmp 0xac5ba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3c0(%rsp)
movl %eax, 0x3bc(%rsp)
jmp 0xac702
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3c0(%rsp)
movl %eax, 0x3bc(%rsp)
jmp 0xac6f5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3c0(%rsp)
movl %eax, 0x3bc(%rsp)
jmp 0xac6e8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3c0(%rsp)
movl %eax, 0x3bc(%rsp)
jmp 0xac6db
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3c0(%rsp)
movl %eax, 0x3bc(%rsp)
jmp 0xac6c1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3c0(%rsp)
movl %eax, 0x3bc(%rsp)
jmp 0xac6b4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3c0(%rsp)
movl %eax, 0x3bc(%rsp)
jmp 0xac6a7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3c0(%rsp)
movl %eax, 0x3bc(%rsp)
jmp 0xac69a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x3c0(%rsp)
movl %eax, 0x3bc(%rsp)
leaq 0x178(%rsp), %rdi
callq 0xce98
leaq 0x158(%rsp), %rdi
callq 0xce98
leaq 0xb0(%rsp), %rdi
callq 0xce98
leaq 0x90(%rsp), %rdi
callq 0xce98
leaq 0x8f(%rsp), %rdi
callq 0xc7a0
leaq 0x138(%rsp), %rdi
callq 0xce98
leaq 0x118(%rsp), %rdi
callq 0xce98
leaq 0xd0(%rsp), %rdi
callq 0xce98
leaq 0xf8(%rsp), %rdi
callq 0xce98
leaq 0xf7(%rsp), %rdi
callq 0xc7a0
jmp 0xac723
movl $0x1, %edi
callq 0xc8d0
addq $0x3f8, %rsp            # imm = 0x3F8
retq
movq 0x40(%rsp), %rdi
callq 0xce98
movq 0x80(%rsp), %rdi
callq 0xce98
movq 0x68(%rsp), %rdi
callq 0xce98
movq 0x3c0(%rsp), %rdi
callq 0xccf0
nopw %cs:(%rax,%rax)