// File: ekg[P]fastahack/./Region.h
// Function: FastaRegion::FastaRegion(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&)
FastaRegion(string& region) {
        startPos = -1;
        stopPos = -1;
        size_t foundFirstColon = region.find(":");
        // we only have a single string, use the whole sequence as the target
        if (foundFirstColon == string::npos) {
            startSeq = region;
        } else {
            startSeq = region.substr(0, foundFirstColon);
            size_t foundRangeDots = region.find("..", foundFirstColon);
	    size_t foundRangeDash = region.find("-", foundFirstColon);
            if (foundRangeDots == string::npos && foundRangeDash == string::npos) {
                startPos = atoi(region.substr(foundFirstColon + 1).c_str());
                stopPos = startPos; // just print one base if we don't give an end
            } else {
		if (foundRangeDash == string::npos) {
		    startPos = atoi(region.substr(foundFirstColon + 1, foundRangeDots - foundRangeDots - 1).c_str());
		    stopPos = atoi(region.substr(foundRangeDots + 2).c_str()); // to the start of this chromosome
		} else {
		    startPos = atoi(region.substr(foundFirstColon + 1, foundRangeDash - foundRangeDash - 1).c_str());
		    stopPos = atoi(region.substr(foundRangeDash + 1).c_str()); // to the start of this chromosome
		}
            }
        }
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x110, %rsp            # imm = 0x110
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x100(%rbp)
callq 0x3430
movq -0x100(%rbp), %rax
movl $0xffffffff, 0x20(%rax) # imm = 0xFFFFFFFF
movl $0xffffffff, 0x24(%rax) # imm = 0xFFFFFFFF
movq -0x10(%rbp), %rdi
leaq 0x20a2(%rip), %rsi      # 0xe5e5
xorl %eax, %eax
movl %eax, %edx
callq 0x35b0
movq %rax, -0x18(%rbp)
cmpq $-0x1, -0x18(%rbp)
jne 0xc58b
movq -0x100(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x3050
jmp 0xc569
jmp 0xc7a1
movq -0x100(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
callq 0x31a0
jmp 0xc7aa
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rcx
xorl %eax, %eax
movl %eax, %edx
leaq -0x48(%rbp), %rdi
callq 0x3300
jmp 0xc5a2
movq -0x100(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x33c0
leaq -0x48(%rbp), %rdi
callq 0x31a0
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x1bbe(%rip), %rsi      # 0xe188
callq 0x35b0
movq %rax, -0x50(%rbp)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x2089(%rip), %rsi      # 0xe66b
callq 0x35b0
movq %rax, -0x58(%rbp)
cmpq $-0x1, -0x50(%rbp)
jne 0xc64e
cmpq $-0x1, -0x58(%rbp)
jne 0xc64e
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
incq %rdx
leaq -0x78(%rbp), %rdi
movq $-0x1, %rcx
callq 0x3300
jmp 0xc616
leaq -0x78(%rbp), %rdi
callq 0x3120
movq %rax, %rdi
callq 0x34a0
movl %eax, %ecx
movq -0x100(%rbp), %rax
movl %ecx, 0x20(%rax)
leaq -0x78(%rbp), %rdi
callq 0x31a0
movq -0x100(%rbp), %rax
movl 0x20(%rax), %ecx
movl %ecx, 0x24(%rax)
jmp 0xc79f
cmpq $-0x1, -0x58(%rbp)
jne 0xc6fe
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
incq %rdx
leaq -0x98(%rbp), %rdi
movq $-0x1, %rcx
callq 0x3300
jmp 0xc679
leaq -0x98(%rbp), %rdi
movq %rdi, -0x108(%rbp)
callq 0x3120
movq %rax, %rdi
callq 0x34a0
movq -0x108(%rbp), %rdi
movl %eax, %ecx
movq -0x100(%rbp), %rax
movl %ecx, 0x20(%rax)
callq 0x31a0
movq -0x10(%rbp), %rsi
movq -0x50(%rbp), %rdx
addq $0x2, %rdx
leaq -0xb8(%rbp), %rdi
movq $-0x1, %rcx
callq 0x3300
jmp 0xc6cd
leaq -0xb8(%rbp), %rdi
callq 0x3120
movq %rax, %rdi
callq 0x34a0
movl %eax, %ecx
movq -0x100(%rbp), %rax
movl %ecx, 0x24(%rax)
leaq -0xb8(%rbp), %rdi
callq 0x31a0
jmp 0xc79d
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
incq %rdx
leaq -0xd8(%rbp), %rdi
movq $-0x1, %rcx
callq 0x3300
jmp 0xc71e
leaq -0xd8(%rbp), %rdi
movq %rdi, -0x110(%rbp)
callq 0x3120
movq %rax, %rdi
callq 0x34a0
movq -0x110(%rbp), %rdi
movl %eax, %ecx
movq -0x100(%rbp), %rax
movl %ecx, 0x20(%rax)
callq 0x31a0
movq -0x10(%rbp), %rsi
movq -0x58(%rbp), %rdx
incq %rdx
leaq -0xf8(%rbp), %rdi
movq $-0x1, %rcx
callq 0x3300
jmp 0xc771
leaq -0xf8(%rbp), %rdi
callq 0x3120
movq %rax, %rdi
callq 0x34a0
movl %eax, %ecx
movq -0x100(%rbp), %rax
movl %ecx, 0x24(%rax)
leaq -0xf8(%rbp), %rdi
callq 0x31a0
jmp 0xc79f
jmp 0xc7a1
addq $0x110, %rsp            # imm = 0x110
popq %rbp
retq
movq -0x20(%rbp), %rdi
callq 0x3540
nopw %cs:(%rax,%rax)
nopl (%rax)