// File: /workspace/github_c_makefile_star2_O0/OpenGene[P]pecheck/src/sequence.cpp
// Function: Sequence::reverseComplement()
Sequence Sequence::reverseComplement(){
    string str(mStr.length(), 0);
    for(int c=0;c<mStr.length();c++){
        char base = mStr[c];
        switch(base){
            case 'A':
            case 'a':
                str[mStr.length()-c-1] = 'T';
                break;
            case 'T':
            case 't':
                str[mStr.length()-c-1] = 'A';
                break;
            case 'C':
            case 'c':
                str[mStr.length()-c-1] = 'G';
                break;
            case 'G':
            case 'g':
                str[mStr.length()-c-1] = 'C';
                break;
            default:
                str[mStr.length()-c-1] = 'N';
        }
    }
    return Sequence(str);
}

// Assembly:
subq $0xd8, %rsp
movq %rdi, 0x40(%rsp)
movq %rdi, %rax
movq %rax, 0x48(%rsp)
movq %rdi, 0xd0(%rsp)
movq %rsi, 0xc8(%rsp)
movq 0xc8(%rsp), %rdi
movq %rdi, 0x50(%rsp)
callq 0x4590
movq %rax, 0x58(%rsp)
leaq 0xa7(%rsp), %rdi
movq %rdi, 0x60(%rsp)
callq 0x46b0
movq 0x58(%rsp), %rsi
movq 0x60(%rsp), %rcx
leaq 0xa8(%rsp), %rdi
xorl %edx, %edx
callq 0x6a60
jmp 0x15528
leaq 0xa7(%rsp), %rdi
callq 0x43e0
movl $0x0, 0x90(%rsp)
movq 0x50(%rsp), %rdi
movslq 0x90(%rsp), %rax
movq %rax, 0x38(%rsp)
callq 0x4590
movq %rax, %rcx
movq 0x38(%rsp), %rax
cmpq %rcx, %rax
jae 0x15726
movq 0x50(%rsp), %rdi
movslq 0x90(%rsp), %rsi
callq 0x4740
movq %rax, 0x30(%rsp)
jmp 0x15581
movq 0x30(%rsp), %rax
movb (%rax), %al
movb %al, 0x8f(%rsp)
movsbl 0x8f(%rsp), %eax
addl $-0x41, %eax
movl %eax, %ecx
movq %rcx, 0x28(%rsp)
subl $0x33, %eax
ja 0x156dc
movq 0x28(%rsp), %rax
leaq 0x15b6(%rip), %rcx      # 0x16b6c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x98(%rsp)
movl %eax, 0x94(%rsp)
leaq 0xa7(%rsp), %rdi
callq 0x43e0
jmp 0x1579a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x98(%rsp)
movl %eax, 0x94(%rsp)
jmp 0x1578d
movq 0x50(%rsp), %rdi
callq 0x4590
movslq 0x90(%rsp), %rsi
notq %rsi
addq %rax, %rsi
leaq 0xa8(%rsp), %rdi
callq 0x4740
movq %rax, 0x20(%rsp)
jmp 0x1562a
movq 0x20(%rsp), %rax
movb $0x54, (%rax)
jmp 0x1570e
movq 0x50(%rsp), %rdi
callq 0x4590
movslq 0x90(%rsp), %rsi
notq %rsi
addq %rax, %rsi
leaq 0xa8(%rsp), %rdi
callq 0x4740
movq %rax, 0x18(%rsp)
jmp 0x15663
movq 0x18(%rsp), %rax
movb $0x41, (%rax)
jmp 0x1570e
movq 0x50(%rsp), %rdi
callq 0x4590
movslq 0x90(%rsp), %rsi
notq %rsi
addq %rax, %rsi
leaq 0xa8(%rsp), %rdi
callq 0x4740
movq %rax, 0x10(%rsp)
jmp 0x1569c
movq 0x10(%rsp), %rax
movb $0x47, (%rax)
jmp 0x1570e
movq 0x50(%rsp), %rdi
callq 0x4590
movslq 0x90(%rsp), %rsi
notq %rsi
addq %rax, %rsi
leaq 0xa8(%rsp), %rdi
callq 0x4740
movq %rax, 0x8(%rsp)
jmp 0x156d2
movq 0x8(%rsp), %rax
movb $0x43, (%rax)
jmp 0x1570e
movq 0x50(%rsp), %rdi
callq 0x4590
movslq 0x90(%rsp), %rsi
notq %rsi
addq %rax, %rsi
leaq 0xa8(%rsp), %rdi
callq 0x4740
movq %rax, (%rsp)
jmp 0x15707
movq (%rsp), %rax
movb $0x4e, (%rax)
jmp 0x15710
movl 0x90(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x90(%rsp)
jmp 0x15540
leaq 0x68(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x4180
jmp 0x1573a
movq 0x40(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x15430
jmp 0x1574b
leaq 0x68(%rsp), %rdi
callq 0x4758
leaq 0xa8(%rsp), %rdi
callq 0x4758
movq 0x48(%rsp), %rax
addq $0xd8, %rsp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x98(%rsp)
movl %eax, 0x94(%rsp)
leaq 0x68(%rsp), %rdi
callq 0x4758
leaq 0xa8(%rsp), %rdi
callq 0x4758
movq 0x98(%rsp), %rdi
callq 0x46a0
nopw (%rax,%rax)