// File: /workspace/github_cpp_makefile_star2_O2/Shadowsith[P]gtts/main.cpp
// Function: main
int main(int argc, char *argv[]) {
    typedef std::string string;
    switch(argc) {
        case 2:
            if (string("-h") == argv[1]
                || string("-H") == argv[1]
                || string("--help") == argv[1]) {
                gtts::GoogleTTS::help();
            }
            if (string("-v") == argv[1] || string("--version") == argv[1]) {
                gtts::GoogleTTS::version();
            }
            if (string("-l") == argv[1] || string("--languages") == argv[1]) {
                gtts::GoogleTTS::languages(); 
            }
            break;

        case 3: {
            string msg(argv[2]);
            string lang(argv[1]);
            std::unique_ptr<gtts::GoogleTTS>
                tts(new gtts::GoogleTTS(msg, lang));
            tts->execute();
            }
            break;

        case 4: {
            string msg(argv[2]);
            string lang(argv[1]);
            string speed(argv[3]);
            std::unique_ptr<gtts::GoogleTTS>
            tts(new gtts::GoogleTTS(msg, lang, speed));
            tts->execute();
            }
            break;

        default:
            gtts::GoogleTTS::help();
            break;
    }
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x138, %rsp            # imm = 0x138
movq %rsi, %rbx
cmpl $0x4, %edi
je 0x54c3
cmpl $0x3, %edi
je 0x53f9
cmpl $0x2, %edi
jne 0x55b5
leaq 0x13b8(%rip), %rsi      # 0x6719
leaq -0x48(%rbp), %rdi
leaq -0x20(%rbp), %rdx
callq 0x465e
movq 0x8(%rbx), %rsi
leaq -0x48(%rbp), %rdi
callq 0x5319
testb %al, %al
jne 0x53b1
leaq 0x10e5(%rip), %rsi      # 0x646b
leaq -0x68(%rbp), %rdi
leaq -0x22(%rbp), %rdx
callq 0x465e
movq 0x8(%rbx), %rsi
leaq -0x68(%rbp), %rdi
callq 0x5319
testb %al, %al
je 0x5686
leaq -0x68(%rbp), %rdi
callq 0x20a0
leaq -0x48(%rbp), %rdi
callq 0x20a0
callq 0x4022
leaq 0x135d(%rip), %rsi      # 0x6723
leaq -0x48(%rbp), %rdi
leaq -0x88(%rbp), %rdx
callq 0x465e
movq 0x8(%rbx), %rsi
leaq -0x48(%rbp), %rdi
callq 0x5319
testb %al, %al
je 0x55bf
leaq -0x48(%rbp), %rdi
callq 0x20a0
jmp 0x55fc
movq 0x10(%rbx), %rsi
leaq -0x48(%rbp), %rdi
leaq -0x68(%rbp), %rdx
callq 0x465e
movq 0x8(%rbx), %rsi
leaq -0x68(%rbp), %rdi
leaq -0x88(%rbp), %rdx
callq 0x465e
movl $0x1b8, %edi            # imm = 0x1B8
callq 0x2180
movq %rax, %r14
leaq -0x148(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x2200
leaq -0x128(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x2200
leaq 0x10e3(%rip), %rsi      # 0x6535
leaq -0x108(%rbp), %rdi
leaq -0x20(%rbp), %rdx
callq 0x465e
leaq -0x148(%rbp), %rsi
leaq -0x128(%rbp), %rdx
leaq -0x108(%rbp), %rcx
movq %r14, %rdi
callq 0x34cc
movq %r14, -0x88(%rbp)
leaq -0x108(%rbp), %rdi
callq 0x20a0
leaq -0x128(%rbp), %rdi
callq 0x20a0
leaq -0x148(%rbp), %rdi
callq 0x20a0
movq %r14, %rdi
callq 0x3ef4
leaq -0x88(%rbp), %rdi
callq 0x57e2
jmp 0x559e
movq 0x10(%rbx), %rsi
leaq -0x48(%rbp), %rdi
leaq -0x68(%rbp), %rdx
callq 0x465e
movq 0x8(%rbx), %rsi
leaq -0x68(%rbp), %rdi
leaq -0x88(%rbp), %rdx
callq 0x465e
movq 0x18(%rbx), %rsi
leaq -0x88(%rbp), %rdi
leaq -0x20(%rbp), %rdx
callq 0x465e
movl $0x1b8, %edi            # imm = 0x1B8
callq 0x2180
movq %rax, %r14
leaq -0xe8(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x2200
leaq -0xc8(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x2200
leaq -0xa8(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0x2200
leaq -0xe8(%rbp), %rsi
leaq -0xc8(%rbp), %rdx
leaq -0xa8(%rbp), %rcx
movq %r14, %rdi
callq 0x34cc
movq %r14, -0x20(%rbp)
leaq -0xa8(%rbp), %rdi
callq 0x20a0
leaq -0xc8(%rbp), %rdi
callq 0x20a0
leaq -0xe8(%rbp), %rdi
callq 0x20a0
movq %r14, %rdi
callq 0x3ef4
leaq -0x20(%rbp), %rdi
callq 0x57e2
leaq -0x88(%rbp), %rdi
callq 0x20a0
leaq -0x68(%rbp), %rdi
callq 0x20a0
leaq -0x48(%rbp), %rdi
callq 0x20a0
jmp 0x5676
callq 0x4022
jmp 0x5676
leaq 0x1160(%rip), %rsi      # 0x6726
leaq -0x68(%rbp), %rdi
leaq -0x20(%rbp), %rdx
callq 0x465e
movq 0x8(%rbx), %rsi
leaq -0x68(%rbp), %r14
movq %r14, %rdi
callq 0x5319
movl %eax, %r15d
movq %r14, %rdi
callq 0x20a0
leaq -0x48(%rbp), %rdi
callq 0x20a0
testb %r15b, %r15b
je 0x5601
callq 0x41f8
leaq 0x1128(%rip), %rsi      # 0x6730
leaq -0x48(%rbp), %rdi
leaq -0x88(%rbp), %rdx
callq 0x465e
movq 0x8(%rbx), %rsi
leaq -0x48(%rbp), %rdi
callq 0x5319
testb %al, %al
je 0x5634
leaq -0x48(%rbp), %rdi
callq 0x20a0
jmp 0x5671
leaq 0x10f8(%rip), %rsi      # 0x6733
leaq -0x68(%rbp), %rdi
leaq -0x20(%rbp), %rdx
callq 0x465e
movq 0x8(%rbx), %rsi
leaq -0x68(%rbp), %rbx
movq %rbx, %rdi
callq 0x5319
movl %eax, %r14d
movq %rbx, %rdi
callq 0x20a0
leaq -0x48(%rbp), %rdi
callq 0x20a0
testb %r14b, %r14b
je 0x5676
callq 0x412c
xorl %eax, %eax
addq $0x138, %rsp            # imm = 0x138
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
leaq 0x108f(%rip), %rsi      # 0x671c
leaq -0x88(%rbp), %rdi
leaq -0x21(%rbp), %rdx
callq 0x465e
movq 0x8(%rbx), %rsi
leaq -0x88(%rbp), %r14
movq %r14, %rdi
callq 0x5319
movl %eax, %r15d
movq %r14, %rdi
callq 0x20a0
leaq -0x68(%rbp), %rdi
callq 0x20a0
leaq -0x48(%rbp), %rdi
callq 0x20a0
testb %r15b, %r15b
jne 0x53ba
jmp 0x53bf
jmp 0x57b3
jmp 0x57c5
jmp 0x57c5
jmp 0x57c5
movq %rax, %rbx
leaq -0x20(%rbp), %rdi
callq 0x57e2
jmp 0x5791
movq %rax, %rbx
leaq -0xa8(%rbp), %rdi
callq 0x20a0
jmp 0x5728
movq %rax, %rbx
leaq -0x88(%rbp), %rdi
callq 0x57e2
jmp 0x57b6
movq %rax, %rbx
leaq -0xc8(%rbp), %rdi
callq 0x20a0
jmp 0x574a
movq %rax, %rbx
leaq -0x108(%rbp), %rdi
callq 0x20a0
jmp 0x575b
movq %rax, %rbx
leaq -0xe8(%rbp), %rdi
callq 0x20a0
jmp 0x576c
movq %rax, %rbx
leaq -0x128(%rbp), %rdi
callq 0x20a0
jmp 0x577e
movq %rax, %rbx
movl $0x1b8, %esi            # imm = 0x1B8
movq %r14, %rdi
callq 0x2190
jmp 0x5791
movq %rax, %rbx
leaq -0x148(%rbp), %rdi
callq 0x20a0
jmp 0x57a2
jmp 0x57d7
movq %rax, %rbx
leaq -0x88(%rbp), %rdi
callq 0x20a0
jmp 0x57b6
movq %rax, %rbx
movl $0x1b8, %esi            # imm = 0x1B8
movq %r14, %rdi
callq 0x2190
jmp 0x57b6
jmp 0x57b3
movq %rax, %rbx
leaq -0x68(%rbp), %rdi
callq 0x20a0
jmp 0x57c8
jmp 0x57d7
jmp 0x57c5
movq %rax, %rbx
leaq -0x48(%rbp), %rdi
callq 0x20a0
jmp 0x57da
jmp 0x57d7
jmp 0x57d7
movq %rax, %rbx
movq %rbx, %rdi
callq 0x2260