// File: millanek[P]evo/remove_lowercase.cpp
// Function: removeLcMain(int, char**)
int removeLcMain(int argc, char** argv) {
    parseRemoveLcOptions(argc, argv);
    
    std::ifstream* fastaFile = new std::ifstream(opt::fastaFile.c_str());
    string description; getline(*fastaFile, description);
    
    string finalSequence = removeLcLetters(*fastaFile, 500000000);
    
    if (opt::out.empty()) {
        std::cout << description << std::endl;
        print80bpPerLineStdOut(std::cout, finalSequence);
    } else {
        string outFN = opt::out + ".joined.fa";
        std::ofstream* outFilteredFile = new std::ofstream(outFN.c_str());
        *outFilteredFile << description << std::endl;
        print80bpPerLineFile(outFilteredFile, finalSequence);
    }
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x100, %rsp            # imm = 0x100
movl %edi, -0x4(%rbp)
movq %rsi, -0x10(%rbp)
movl -0x4(%rbp), %edi
movq -0x10(%rbp), %rsi
callq 0xf0290
movl $0x208, %edi            # imm = 0x208
callq 0xa5d0
movq %rax, -0xd8(%rbp)
movq %rax, -0xe0(%rbp)
leaq 0xab1a3(%rip), %rdi     # 0x19b1a0
callq 0xa220
movq -0xd8(%rbp), %rdi
movq %rax, %rsi
movl $0x8, %edx
callq 0xab90
jmp 0xf0018
movq -0xe0(%rbp), %rax
movq %rax, -0x18(%rbp)
leaq -0x48(%rbp), %rdi
movq %rdi, -0xe8(%rbp)
callq 0xa820
movq -0xe8(%rbp), %rsi
movq -0x18(%rbp), %rdi
callq 0xa0d0
jmp 0xf0045
movq -0x18(%rbp), %rsi
leaq -0x68(%rbp), %rdi
movl $0x1dcd6500, %edx       # imm = 0x1DCD6500
callq 0xefe40
jmp 0xf0059
leaq 0xab160(%rip), %rdi     # 0x19b1c0
callq 0xaa70
testb $0x1, %al
jne 0xf006e
jmp 0xf0135
movq 0xa8f43(%rip), %rdi     # 0x198fb8
leaq -0x48(%rbp), %rsi
callq 0xa520
movq %rax, -0xf0(%rbp)
jmp 0xf0087
movq -0xf0(%rbp), %rdi
movq 0xa8ef3(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xf009c
leaq -0x88(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0xa250
jmp 0xf00ae
movq 0xa8f03(%rip), %rdi     # 0x198fb8
leaq -0x88(%rbp), %rsi
callq 0x81090
jmp 0xf00c3
leaq -0x88(%rbp), %rdi
callq 0xac88
jmp 0xf0256
movq -0xe0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
movl $0x208, %esi            # imm = 0x208
callq 0xa5e0
jmp 0xf0285
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xf027c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xf0273
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x88(%rbp), %rdi
callq 0xac88
jmp 0xf0273
leaq 0xab084(%rip), %rsi     # 0x19b1c0
leaq 0x4ae9b(%rip), %rdx     # 0x13afde
leaq -0xa8(%rbp), %rdi
callq 0x3da80
jmp 0xf0151
movl $0x200, %edi            # imm = 0x200
callq 0xa5d0
movq %rax, -0xf8(%rbp)
jmp 0xf0164
leaq -0xa8(%rbp), %rdi
callq 0xa220
movq -0xf8(%rbp), %rdi
movq %rax, %rsi
movl $0x10, %edx
callq 0xa650
jmp 0xf0186
movq -0xf8(%rbp), %rax
movq %rax, -0xb0(%rbp)
movq -0xb0(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0xa520
movq %rax, -0x100(%rbp)
jmp 0xf01ad
movq -0x100(%rbp), %rdi
movq 0xa8dcd(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xf01c2
leaq -0xd0(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0xa250
jmp 0xf01d4
leaq -0xb0(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
callq 0x81170
jmp 0xf01e9
leaq -0xd0(%rbp), %rdi
callq 0xac88
leaq -0xa8(%rbp), %rdi
callq 0xac88
jmp 0xf0256
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xf0248
movq -0xf8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
movl $0x200, %esi            # imm = 0x200
callq 0xa5e0
jmp 0xf0248
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0xd0(%rbp), %rdi
callq 0xac88
leaq -0xa8(%rbp), %rdi
callq 0xac88
jmp 0xf0273
leaq -0x68(%rbp), %rdi
callq 0xac88
leaq -0x48(%rbp), %rdi
callq 0xac88
xorl %eax, %eax
addq $0x100, %rsp            # imm = 0x100
popq %rbp
retq
leaq -0x68(%rbp), %rdi
callq 0xac88
leaq -0x48(%rbp), %rdi
callq 0xac88
movq -0x20(%rbp), %rdi
callq 0xab50
nop