// File: /workspace/github_cpp_makefile_star2_O2/XDragonSl[P]git-switcher/src/main.cpp
// Function: main
int main(int argc, char **argv) {
    setlocale(LC_ALL, "Russian");
    Options opts(argc, argv);
    if (opts.isExists("-h") || opts.isExists("--help")) {
        help();
    } else if (opts.isExists("-v") || opts.isExists("--version")) {
        version();
    } else if (opts.isExists("-c") || opts.isExists("--current")) {
        current();
    } else if (opts.isExists("-a") || opts.isExists("--add")) {
        add(opts.get("--name"), opts.get("--email"));
    } else if (opts.isExists("-u") || opts.isExists("--update")) {
        try {
            string number = opts.get("--number");
            if (!number.empty()) {
                update(stoi(number), opts.get("--name"), opts.get("--email"));
            } else {
                throw invalid_argument(WRONG_UPDATE_PARAM_MESSAGE.c_str());
            }
        }
        catch(const exception& e) {
            cout << WRONG_UPDATE_PARAM_MESSAGE << endl;
            cout << RUN_HELP_MESSAGE;
        }
        
    } else if (opts.isExists("-s") || opts.isExists("--switch")) {
        string shortParam(opts.get("-s"));
        string longParam(opts.get("--switch"));
        try {
            if (!shortParam.empty()) {
                swap(stoi(shortParam));
            } else if (!longParam.empty()) {
                swap(stoi(longParam));
            } else {
                throw invalid_argument(WRONG_SWITCH_PARAM_MESSAGE.c_str());
            }
        } catch(const exception& e) {
            cout << WRONG_SWITCH_PARAM_MESSAGE << endl;
            cout << RUN_HELP_MESSAGE;
        }
    } else if (opts.isExists("-r") || opts.isExists("--remove")) {
        string shortParam(opts.get("-r"));
        string longParam(opts.get("--remove"));
        try {
            if (!shortParam.empty()) {
                remove(stoi(shortParam));
            } else if (!longParam.empty()) {
                remove(stoi(longParam));
            } else {
                throw invalid_argument(WRONG_REMOVE_PARAM_MESSAGE.c_str());
            }
        } catch(const exception& e) {
            cout << WRONG_REMOVE_PARAM_MESSAGE << endl;
            cout << RUN_HELP_MESSAGE;
        }
    } else if (opts.isExists("-l") || opts.isExists("--list")) {
        list();
    } else {
        cout << WRONG_OPTS_MESSAGE << endl;
        cout << RUN_HELP_MESSAGE;
    }
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x98, %rsp
movq %rsi, %rbx
leaq -0xa4(%rbp), %r14
movl %edi, (%r14)
leaq 0x29a0(%rip), %rsi      # 0x5330
pushq $0x6
popq %rdi
callq 0x21c0
leaq -0x78(%rbp), %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq 0x3e5c
leaq 0x298a(%rip), %rsi      # 0x5338
leaq -0x60(%rbp), %rdi
leaq -0xa0(%rbp), %rdx
callq 0x20b0
leaq -0x78(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x3fa4
testb %al, %al
je 0x29da
leaq -0x60(%rbp), %rdi
callq 0x2378
jmp 0x2a13
leaq 0x295a(%rip), %rsi      # 0x533b
leaq -0x40(%rbp), %rdi
leaq -0x19(%rbp), %rdx
callq 0x20b0
leaq -0x78(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x3fa4
movl %eax, %ebx
leaq -0x40(%rbp), %rdi
callq 0x2378
leaq -0x60(%rbp), %rdi
callq 0x2378
testb %bl, %bl
je 0x2a31
callq 0x3316
leaq -0x78(%rbp), %rdi
callq 0x3cd8
xorl %eax, %eax
addq $0x98, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
leaq 0x290a(%rip), %rsi      # 0x5342
leaq -0x60(%rbp), %rdi
leaq -0xa0(%rbp), %rdx
callq 0x20b0
leaq -0x78(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x3fa4
testb %al, %al
je 0x2a64
leaq -0x60(%rbp), %rdi
callq 0x2378
jmp 0x2a9d
leaq 0x28da(%rip), %rsi      # 0x5345
leaq -0x40(%rbp), %rdi
leaq -0x19(%rbp), %rdx
callq 0x20b0
leaq -0x78(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x3fa4
movl %eax, %ebx
leaq -0x40(%rbp), %rdi
callq 0x2378
leaq -0x60(%rbp), %rdi
callq 0x2378
testb %bl, %bl
je 0x2aa7
callq 0x3417
jmp 0x2a18
leaq 0x28a1(%rip), %rsi      # 0x534f
leaq -0x60(%rbp), %rdi
leaq -0xa0(%rbp), %rdx
callq 0x20b0
leaq -0x78(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x3fa4
testb %al, %al
je 0x2ada
leaq -0x60(%rbp), %rdi
callq 0x2378
jmp 0x2b13
leaq 0x2871(%rip), %rsi      # 0x5352
leaq -0x40(%rbp), %rdi
leaq -0x19(%rbp), %rdx
callq 0x20b0
leaq -0x78(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x3fa4
movl %eax, %ebx
leaq -0x40(%rbp), %rdi
callq 0x2378
leaq -0x60(%rbp), %rdi
callq 0x2378
testb %bl, %bl
je 0x2b1d
callq 0x342f
jmp 0x2a18
leaq 0x2838(%rip), %rsi      # 0x535c
leaq -0x60(%rbp), %rdi
leaq -0xa0(%rbp), %rdx
callq 0x20b0
leaq -0x78(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x3fa4
testb %al, %al
je 0x2b50
leaq -0x60(%rbp), %rdi
callq 0x2378
jmp 0x2b89
leaq 0x2808(%rip), %rsi      # 0x535f
leaq -0x40(%rbp), %rdi
leaq -0x19(%rbp), %rdx
callq 0x20b0
leaq -0x78(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x3fa4
movl %eax, %ebx
leaq -0x40(%rbp), %rdi
callq 0x2378
leaq -0x60(%rbp), %rdi
callq 0x2378
testb %bl, %bl
je 0x2bf3
leaq 0x27d5(%rip), %rsi      # 0x5365
leaq -0x60(%rbp), %rdi
leaq -0xa0(%rbp), %rdx
callq 0x20b0
leaq -0x78(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x3eea
movq %rax, %rbx
leaq 0x27b5(%rip), %rsi      # 0x536c
leaq -0x40(%rbp), %rdi
leaq -0x19(%rbp), %rdx
callq 0x20b0
leaq -0x78(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x3eea
movq %rbx, %rdi
movq %rax, %rsi
callq 0x3440
leaq -0x40(%rbp), %rdi
callq 0x2378
leaq -0x60(%rbp), %rdi
callq 0x2378
jmp 0x2a18
leaq 0x277a(%rip), %rsi      # 0x5374
leaq -0x60(%rbp), %rdi
leaq -0xa0(%rbp), %rdx
callq 0x20b0
leaq -0x78(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x3fa4
testb %al, %al
je 0x2c26
leaq -0x60(%rbp), %rdi
callq 0x2378
jmp 0x2c63
leaq 0x274a(%rip), %rsi      # 0x5377
leaq -0x40(%rbp), %rdi
leaq -0x19(%rbp), %rdx
callq 0x20b0
leaq -0x78(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x3fa4
movl %eax, %ebx
leaq -0x40(%rbp), %rdi
callq 0x2378
leaq -0x60(%rbp), %rdi
callq 0x2378
testb %bl, %bl
je 0x2d20
leaq 0x2716(%rip), %rsi      # 0x5380
leaq -0x40(%rbp), %rdi
leaq -0xa0(%rbp), %rdx
callq 0x20b0
leaq -0x78(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x3eea
leaq -0x60(%rbp), %rdi
movq %rax, %rsi
callq 0x2270
leaq -0x40(%rbp), %rdi
callq 0x2378
cmpq $0x0, -0x58(%rbp)
je 0x3001
leaq -0x60(%rbp), %rdi
pushq $0xa
popq %rdx
xorl %esi, %esi
callq 0x3a99
movl %eax, %ebx
leaq 0x26a7(%rip), %rsi      # 0x5365
leaq -0x40(%rbp), %rdi
leaq -0x19(%rbp), %rdx
callq 0x20b0
leaq -0x78(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x3eea
movq %rax, %r14
leaq 0x268a(%rip), %rsi      # 0x536c
leaq -0xa0(%rbp), %rdi
leaq -0x79(%rbp), %rdx
callq 0x20b0
leaq -0x78(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0x3eea
movl %ebx, %edi
movq %r14, %rsi
movq %rax, %rdx
callq 0x34ff
leaq -0xa0(%rbp), %rdi
callq 0x2378
jmp 0x2bdc
leaq 0x2662(%rip), %rsi      # 0x5389
leaq -0x60(%rbp), %rdi
leaq -0xa0(%rbp), %rdx
callq 0x20b0
leaq -0x78(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x3fa4
testb %al, %al
je 0x2d53
leaq -0x60(%rbp), %rdi
callq 0x2378
jmp 0x2d90
leaq 0x2632(%rip), %rsi      # 0x538c
leaq -0x40(%rbp), %rdi
leaq -0x19(%rbp), %rdx
callq 0x20b0
leaq -0x78(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x3fa4
movl %eax, %ebx
leaq -0x40(%rbp), %rdi
callq 0x2378
leaq -0x60(%rbp), %rdi
callq 0x2378
testb %bl, %bl
je 0x2e3c
leaq 0x25f2(%rip), %rsi      # 0x5389
leaq -0x40(%rbp), %rdi
leaq -0xa0(%rbp), %rdx
callq 0x20b0
leaq -0x78(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x3eea
leaq -0x60(%rbp), %rbx
movq %rbx, %rdi
movq %rax, %rsi
callq 0x2270
leaq -0x40(%rbp), %rdi
callq 0x2378
leaq 0x25b9(%rip), %rsi      # 0x538c
leaq -0xa0(%rbp), %rdi
leaq -0x19(%rbp), %rdx
callq 0x20b0
leaq -0x78(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0x3eea
leaq -0x40(%rbp), %r14
movq %r14, %rdi
movq %rax, %rsi
callq 0x2270
leaq -0xa0(%rbp), %rdi
callq 0x2378
cmpq $0x0, -0x58(%rbp)
jne 0x2e23
cmpq $0x0, -0x38(%rbp)
movq %r14, %rbx
je 0x3033
pushq $0xa
popq %rdx
movq %rbx, %rdi
xorl %esi, %esi
callq 0x3a99
movl %eax, %edi
callq 0x361c
jmp 0x2bdc
leaq 0x2552(%rip), %rsi      # 0x5395
leaq -0x60(%rbp), %rdi
leaq -0xa0(%rbp), %rdx
callq 0x20b0
leaq -0x78(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x3fa4
testb %al, %al
je 0x2e6f
leaq -0x60(%rbp), %rdi
callq 0x2378
jmp 0x2eac
leaq 0x2522(%rip), %rsi      # 0x5398
leaq -0x40(%rbp), %rdi
leaq -0x19(%rbp), %rdx
callq 0x20b0
leaq -0x78(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x3fa4
movl %eax, %ebx
leaq -0x40(%rbp), %rdi
callq 0x2378
leaq -0x60(%rbp), %rdi
callq 0x2378
testb %bl, %bl
je 0x2f58
leaq 0x24e2(%rip), %rsi      # 0x5395
leaq -0x40(%rbp), %rdi
leaq -0xa0(%rbp), %rdx
callq 0x20b0
leaq -0x78(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x3eea
leaq -0x60(%rbp), %rbx
movq %rbx, %rdi
movq %rax, %rsi
callq 0x2270
leaq -0x40(%rbp), %rdi
callq 0x2378
leaq 0x24a9(%rip), %rsi      # 0x5398
leaq -0xa0(%rbp), %rdi
leaq -0x19(%rbp), %rdx
callq 0x20b0
leaq -0x78(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0x3eea
leaq -0x40(%rbp), %r14
movq %r14, %rdi
movq %rax, %rsi
callq 0x2270
leaq -0xa0(%rbp), %rdi
callq 0x2378
cmpq $0x0, -0x58(%rbp)
jne 0x2f3f
cmpq $0x0, -0x38(%rbp)
movq %r14, %rbx
je 0x3065
pushq $0xa
popq %rdx
movq %rbx, %rdi
xorl %esi, %esi
callq 0x3a99
movl %eax, %edi
callq 0x3814
jmp 0x2bdc
leaq 0x2442(%rip), %rsi      # 0x53a1
leaq -0x60(%rbp), %rdi
leaq -0xa0(%rbp), %rdx
callq 0x20b0
leaq -0x78(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x3fa4
testb %al, %al
je 0x2f8b
leaq -0x60(%rbp), %rdi
callq 0x2378
jmp 0x2fc4
leaq 0x2412(%rip), %rsi      # 0x53a4
leaq -0x40(%rbp), %rdi
leaq -0x19(%rbp), %rdx
callq 0x20b0
leaq -0x78(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x3fa4
movl %eax, %ebx
leaq -0x40(%rbp), %rdi
callq 0x2378
leaq -0x60(%rbp), %rdi
callq 0x2378
testb %bl, %bl
je 0x2fce
callq 0x38af
jmp 0x2a18
movq 0x4feb(%rip), %rdi      # 0x7fc0
leaq 0x53ac(%rip), %rsi      # 0x8388
callq 0x21b0
movq %rax, %rdi
callq 0x2100
movq 0x4fd0(%rip), %rdi      # 0x7fc0
leaq 0x5371(%rip), %rsi      # 0x8368
callq 0x21b0
jmp 0x2a18
pushq $0x10
popq %rdi
callq 0x2110
movq %rax, %r15
movq 0x5395(%rip), %rsi      # 0x83a8
movq %rax, %rdi
callq 0x2340
movq 0x4fbe(%rip), %rsi      # 0x7fe0
movq 0x4fa7(%rip), %rdx      # 0x7fd0
movq %r15, %rdi
callq 0x22f0
jmp 0x3095
pushq $0x10
popq %rdi
callq 0x2110
movq %rax, %r14
movq 0x5383(%rip), %rsi      # 0x83c8
movq %rax, %rdi
callq 0x2340
movq 0x4f8c(%rip), %rsi      # 0x7fe0
movq 0x4f75(%rip), %rdx      # 0x7fd0
movq %r14, %rdi
callq 0x22f0
jmp 0x3095
pushq $0x10
popq %rdi
callq 0x2110
movq %rax, %r14
movq 0x5371(%rip), %rsi      # 0x83e8
movq %rax, %rdi
callq 0x2340
movq 0x4f5a(%rip), %rsi      # 0x7fe0
movq 0x4f43(%rip), %rdx      # 0x7fd0
movq %r14, %rdi
callq 0x22f0
jmp 0x32e2
jmp 0x32f4
movq %rdx, %r15
movq %rax, %rbx
movq %r14, %rdi
callq 0x2170
jmp 0x30fa
jmp 0x32f4
jmp 0x3302
jmp 0x32e2
jmp 0x32f4
movq %rdx, %r15
movq %rax, %rbx
movq %r14, %rdi
callq 0x2170
jmp 0x31a8
jmp 0x32f4
jmp 0x3302
jmp 0x32f4
jmp 0x3302
jmp 0x3174
jmp 0x3183
movq %rdx, %r15
movq %rax, %rbx
cmpl $0x1, %r15d
jne 0x32e5
movq %rbx, %rdi
callq 0x20c0
movq 0x4ead(%rip), %rdi      # 0x7fc0
leaq 0x52ce(%rip), %rsi      # 0x83e8
callq 0x21b0
movq %rax, %rdi
callq 0x2100
movq 0x4e92(%rip), %rdi      # 0x7fc0
leaq 0x5233(%rip), %rsi      # 0x8368
callq 0x21b0
callq 0x22c0
jmp 0x2bdc
jmp 0x32e2
movq %rax, %rbx
callq 0x22c0
jmp 0x32e5
jmp 0x32e2
jmp 0x32f4
jmp 0x32f4
jmp 0x3302
jmp 0x32f4
jmp 0x3302
movq %rax, %rbx
leaq -0xa0(%rbp), %rdi
jmp 0x32e9
movq %rax, %rbx
leaq -0x40(%rbp), %rdi
jmp 0x32fb
movq %rdx, %r14
movq %rax, %rbx
movq %r15, %rdi
callq 0x2170
jmp 0x324f
movq %rdx, %r15
movq %rax, %rbx
cmpl $0x1, %r15d
jne 0x32e5
movq %rbx, %rdi
callq 0x20c0
movq 0x4dff(%rip), %rdi      # 0x7fc0
leaq 0x5200(%rip), %rsi      # 0x83c8
callq 0x21b0
movq %rax, %rdi
callq 0x2100
movq 0x4de4(%rip), %rdi      # 0x7fc0
leaq 0x5185(%rip), %rsi      # 0x8368
callq 0x21b0
callq 0x22c0
jmp 0x2bdc
jmp 0x32e2
movq %rax, %rbx
callq 0x22c0
jmp 0x32e5
jmp 0x32e2
jmp 0x32f4
jmp 0x3210
movq %rdx, %r14
movq %rax, %rbx
jmp 0x3246
jmp 0x322c
movq %rdx, %r14
movq %rax, %rbx
jmp 0x3264
jmp 0x32f4
jmp 0x3302
movq %rdx, %r14
movq %rax, %rbx
jmp 0x324f
movq %rdx, %r14
movq %rax, %rbx
leaq -0xa0(%rbp), %rdi
callq 0x2378
leaq -0x40(%rbp), %rdi
callq 0x2378
leaq -0x60(%rbp), %rdi
jmp 0x325f
movq %rdx, %r14
movq %rax, %rbx
leaq -0x40(%rbp), %rdi
callq 0x2378
cmpl $0x1, %r14d
jne 0x3305
movq %rbx, %rdi
callq 0x20c0
movq 0x4d43(%rip), %rdi      # 0x7fc0
leaq 0x5124(%rip), %rsi      # 0x83a8
callq 0x21b0
movq %rax, %rdi
callq 0x2100
movq 0x4d28(%rip), %rdi      # 0x7fc0
leaq 0x50c9(%rip), %rsi      # 0x8368
callq 0x21b0
callq 0x22c0
jmp 0x2a18
jmp 0x3302
movq %rax, %rbx
callq 0x22c0
jmp 0x3305
movq %rax, %rdi
callq 0x3aba
jmp 0x32e2
jmp 0x32f4
jmp 0x32f4
jmp 0x32f4
jmp 0x3302
jmp 0x32f4
jmp 0x3302
jmp 0x32e2
jmp 0x32e2
jmp 0x32f4
jmp 0x32f4
jmp 0x3302
jmp 0x32e2
jmp 0x32f4
jmp 0x32f4
jmp 0x3302
movq %rax, %rbx
leaq -0x40(%rbp), %rdi
callq 0x2378
jmp 0x32f7
jmp 0x32f4
jmp 0x3302
movq %rax, %rbx
leaq -0x60(%rbp), %rdi
callq 0x2378
jmp 0x3305
movq %rax, %rbx
leaq -0x78(%rbp), %rdi
callq 0x3cd8
movq %rbx, %rdi
callq 0x2310