// File: /workspace/github_cpp_makefile_star2_O3/kelwinfc[P]ci4721-Fernandez-Gyomrey/src/main.cpp
// Function: main_read_args(int, char**, _IO_FILE*, main_args&)
void main_read_args(int argc, char **argv, FILE *in, main_args& args)
{
    args.to_single_archive = false;
    args.to_separate_archives = false;
    args.ast = false;
    args.tac_with_comments = false;
    args.in = in;
    if (1 == argc) {
        cout << "Opciones para " << argv[0] << " [-a | -s] [-c] [-t] archivo:" << endl
             << " -a imprimir en archivo bla.output" << endl
             << " -s imprimir en archivo bla.* separados" << endl
             << " -c imprimir el tac con comentarios" << endl
             << " -t imprimir el ast" << endl;
        exit(0);
    }
    for (int i = 1; i < argc; ++i) {
        if (i + 1 == argc) {
            args.in = fopen(argv[i], "r");
            if (!args.in) {
                cout << "Archivo '" << argv[i] << "' no existe" << endl;
                exit(1);
            }
        } else if (!strcmp("-a", argv[i])) {
            args.to_separate_archives = false;
            args.to_single_archive = true;
        } else if (!strcmp("-s", argv[i])) {
            args.to_separate_archives = true;
            args.to_single_archive = false;
        } else if (!strcmp("-c", argv[i])) {
            args.tac_with_comments = true;
        } else if (!strcmp("-t", argv[i])) {
            args.ast = true;
        } else {
            cout << "Opciones para " << argv[0] << " [-a | -s] [-c] [-t] archivo:" << endl
                 << " -a imprimir en archivo bla.output" << endl
                 << " -s imprimir en archivo bla.* separados" << endl
                 << " -c imprimir el tac con comentarios" << endl
                 << " -t imprimir el ast" << endl;
            exit(1);
        }
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %rbx
movl $0x0, (%rcx)
movq %rdx, 0x8(%rcx)
cmpl $0x1, %edi
je 0x2a7ee
jle 0x2a718
movq %rcx, %r14
movl %edi, %r13d
leaq -0x1(%r13), %rbp
addq $-0x2, %r13
xorl %r12d, %r12d
leaq 0x4990(%rip), %r15      # 0x2eff0
movq 0x8(%rbx,%r12,8), %rdi
cmpq %r12, %r13
jne 0x2a684
movq %r15, %rsi
callq 0x63a0
movq %rax, 0x8(%r14)
testq %rax, %rax
jne 0x2a70c
jmp 0x2a727
movzbl (%rdi), %ecx
leal -0x2d(%rcx), %eax
negl %eax
movl %eax, %edx
cmpl $0x2d, %ecx
jne 0x2a6bc
movzbl 0x1(%rdi), %edx
subl $0x61, %edx
jne 0x2a6a0
movzbl 0x2(%rdi), %edx
negl %edx
testl %edx, %edx
je 0x2a6ff
movl %eax, %edx
cmpb $0x2d, %cl
jne 0x2a6bc
movzbl 0x1(%rdi), %edx
subl $0x73, %edx
jne 0x2a6ba
movzbl 0x2(%rdi), %edx
negl %edx
testl %edx, %edx
je 0x2a6f7
cmpb $0x2d, %cl
jne 0x2a6ec
movzbl 0x1(%rdi), %edx
subl $0x63, %edx
jne 0x2a6d2
movzbl 0x2(%rdi), %edx
negl %edx
testl %edx, %edx
je 0x2a707
cmpb $0x2d, %cl
jne 0x2a6ec
movzbl 0x1(%rdi), %eax
subl $0x74, %eax
jne 0x2a6ea
movzbl 0x2(%rdi), %eax
negl %eax
testl %eax, %eax
jne 0x2a753
movb $0x1, 0x2(%r14)
jmp 0x2a70c
movw $0x100, (%r14)          # imm = 0x100
jmp 0x2a70c
movw $0x1, (%r14)
jmp 0x2a70c
movb $0x1, 0x3(%r14)
incq %r12
cmpq %r12, %rbp
jne 0x2a660
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x14892(%rip), %rdi     # 0x3efc0
leaq 0x84b8(%rip), %rsi      # 0x32bed
callq 0x62d0
movq 0x8(%rbx,%r12,8), %rsi
movq %rax, %rdi
callq 0x62d0
leaq 0x84a9(%rip), %rsi      # 0x32bf7
jmp 0x2a7d4
movq 0x14866(%rip), %rdi     # 0x3efc0
leaq 0x83dc(%rip), %rsi      # 0x32b3d
callq 0x62d0
movq (%rbx), %rsi
movq %rax, %rdi
callq 0x62d0
leaq 0x83d4(%rip), %rsi      # 0x32b4c
movq %rax, %rdi
callq 0x62d0
movq %rax, %rdi
callq 0x6140
leaq 0x83db(%rip), %rsi      # 0x32b6a
movq %rax, %rdi
callq 0x62d0
movq %rax, %rdi
callq 0x6140
leaq 0x83e7(%rip), %rsi      # 0x32b8d
movq %rax, %rdi
callq 0x62d0
movq %rax, %rdi
callq 0x6140
leaq 0x83f8(%rip), %rsi      # 0x32bb5
movq %rax, %rdi
callq 0x62d0
movq %rax, %rdi
callq 0x6140
leaq 0x8405(%rip), %rsi      # 0x32bd9
movq %rax, %rdi
callq 0x62d0
movq %rax, %rdi
callq 0x6140
movl $0x1, %edi
callq 0x63c0
movq 0x147cb(%rip), %rdi     # 0x3efc0
leaq 0x8341(%rip), %rsi      # 0x32b3d
callq 0x62d0
movq (%rbx), %rsi
movq %rax, %rdi
callq 0x62d0
leaq 0x8339(%rip), %rsi      # 0x32b4c
movq %rax, %rdi
callq 0x62d0
movq %rax, %rdi
callq 0x6140
leaq 0x8340(%rip), %rsi      # 0x32b6a
movq %rax, %rdi
callq 0x62d0
movq %rax, %rdi
callq 0x6140
leaq 0x834c(%rip), %rsi      # 0x32b8d
movq %rax, %rdi
callq 0x62d0
movq %rax, %rdi
callq 0x6140
leaq 0x835d(%rip), %rsi      # 0x32bb5
movq %rax, %rdi
callq 0x62d0
movq %rax, %rdi
callq 0x6140
leaq 0x836a(%rip), %rsi      # 0x32bd9
movq %rax, %rdi
callq 0x62d0
movq %rax, %rdi
callq 0x6140
xorl %edi, %edi
callq 0x63c0