// File: carellano8[P]Proyecto-Redes-I-2017/main.cpp
// Function: emisor(int)
void emisor(int c){
    ifstream archivo("entrada.txt");
    string mensaje="";
    int i,j=0;
    char buff;
    bool error=false;
    if(archivo.is_open()){
        i=0;
        while (!archivo.eof()&&!error)
        {

             buff=archivo.get();
             if((buff>=32&&buff<=126)/*||buff=='\n'*/){
                mensaje+=buff;
            }else{
                
                if(buff!= EOF&&buff!='\n' ){//solo se ecepta un salto de linea y fin de archivo
                   // cout<<buff<<endl;
                    error=true;
                }
                if(buff=='\n'){
                        j++;
                   }
                if(buff==EOF){i--;}
            }
            if(j>=2){error=true;}
            i++;
        }
        
        if(i-1>MAXMSJ){error=true;}
        if(!error){
            if(c){
                crc16::enviar(mensaje);
                }
            else{
                hamming::enviar(mensaje);
                }   
        }
        if(error){
            cout<<"Se ha detectado algun un error"<<endl;
        }
        archivo.close();
    }else{

            cout<<"Se ha detectado algun un error"<<endl;
        }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x2b0, %rsp            # imm = 0x2B0
movl %edi, -0x4(%rbp)
leaq 0x68be(%rip), %rsi      # 0xa0d3
leaq -0x210(%rbp), %rdi
movl $0x8, %edx
callq 0x33c0
leaq -0x231(%rbp), %rdi
movq %rdi, -0x298(%rbp)
callq 0x33a0
movq -0x298(%rbp), %rdx
leaq 0x6912(%rip), %rsi      # 0xa159
leaq -0x230(%rbp), %rdi
callq 0x4340
jmp 0x3855
leaq -0x231(%rbp), %rdi
callq 0x3240
movl $0x0, -0x24c(%rbp)
movb $0x0, -0x24e(%rbp)
leaq -0x210(%rbp), %rdi
callq 0x3340
movb %al, -0x299(%rbp)
jmp 0x3886
movb -0x299(%rbp), %al
testb $0x1, %al
jne 0x3895
jmp 0x3b18
movl $0x0, -0x248(%rbp)
movq -0x210(%rbp), %rax
movq -0x18(%rax), %rax
leaq -0x210(%rbp,%rax), %rdi
callq 0x33d0
movb %al, -0x29a(%rbp)
jmp 0x38bf
movb -0x29a(%rbp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x29b(%rbp)
jne 0x38e2
jmp 0x38d4
movb -0x24e(%rbp), %al
xorb $-0x1, %al
movb %al, -0x29b(%rbp)
movb -0x29b(%rbp), %al
testb $0x1, %al
jne 0x38f1
jmp 0x39f8
leaq -0x210(%rbp), %rdi
callq 0x3280
movl %eax, -0x2a0(%rbp)
jmp 0x3905
movl -0x2a0(%rbp), %eax
movb %al, -0x24d(%rbp)
movsbl -0x24d(%rbp), %eax
cmpl $0x20, %eax
jl 0x397d
movsbl -0x24d(%rbp), %eax
cmpl $0x7e, %eax
jg 0x397d
movsbl -0x24d(%rbp), %esi
leaq -0x230(%rbp), %rdi
callq 0x3150
jmp 0x393e
jmp 0x39d4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
leaq -0x231(%rbp), %rdi
callq 0x3240
jmp 0x3b78
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
jmp 0x3b6c
movsbl -0x24d(%rbp), %eax
cmpl $-0x1, %eax
je 0x399c
movsbl -0x24d(%rbp), %eax
cmpl $0xa, %eax
je 0x399c
movb $0x1, -0x24e(%rbp)
movsbl -0x24d(%rbp), %eax
cmpl $0xa, %eax
jne 0x39b7
movl -0x24c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24c(%rbp)
movsbl -0x24d(%rbp), %eax
cmpl $-0x1, %eax
jne 0x39d2
movl -0x248(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x248(%rbp)
jmp 0x39d4
cmpl $0x2, -0x24c(%rbp)
jl 0x39e4
movb $0x1, -0x24e(%rbp)
movl -0x248(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x248(%rbp)
jmp 0x389f
movl -0x248(%rbp), %eax
subl $0x1, %eax
cmpl $0x7d0, %eax            # imm = 0x7D0
jle 0x3a0f
movb $0x1, -0x24e(%rbp)
testb $0x1, -0x24e(%rbp)
jne 0x3acc
cmpl $0x0, -0x4(%rbp)
je 0x3a76
leaq -0x270(%rbp), %rdi
leaq -0x230(%rbp), %rsi
callq 0x30e0
jmp 0x3a37
leaq -0x270(%rbp), %rdi
callq 0x4690
jmp 0x3a45
leaq -0x270(%rbp), %rdi
callq 0x3140
jmp 0x3aca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
leaq -0x270(%rbp), %rdi
callq 0x3140
jmp 0x3b6c
leaq -0x290(%rbp), %rdi
leaq -0x230(%rbp), %rsi
callq 0x30e0
jmp 0x3a8b
leaq -0x290(%rbp), %rdi
callq 0x7070
jmp 0x3a99
leaq -0x290(%rbp), %rdi
callq 0x3140
jmp 0x3aca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
leaq -0x290(%rbp), %rdi
callq 0x3140
jmp 0x3b6c
jmp 0x3acc
testb $0x1, -0x24e(%rbp)
je 0x3b08
movq 0x94f4(%rip), %rdi      # 0xcfd0
leaq 0x65ac(%rip), %rsi      # 0xa08f
callq 0x31f0
movq %rax, -0x2a8(%rbp)
jmp 0x3af1
movq -0x2a8(%rbp), %rdi
movq 0x94c1(%rip), %rsi      # 0xcfc0
callq 0x3210
jmp 0x3b06
jmp 0x3b08
leaq -0x210(%rbp), %rdi
callq 0x3070
jmp 0x3b16
jmp 0x3b4b
movq 0x94b1(%rip), %rdi      # 0xcfd0
leaq 0x6569(%rip), %rsi      # 0xa08f
callq 0x31f0
movq %rax, -0x2b0(%rbp)
jmp 0x3b34
movq -0x2b0(%rbp), %rdi
movq 0x947e(%rip), %rsi      # 0xcfc0
callq 0x3210
jmp 0x3b49
jmp 0x3b4b
leaq -0x230(%rbp), %rdi
callq 0x3140
leaq -0x210(%rbp), %rdi
callq 0x3090
addq $0x2b0, %rsp            # imm = 0x2B0
popq %rbp
retq
leaq -0x230(%rbp), %rdi
callq 0x3140
leaq -0x210(%rbp), %rdi
callq 0x3090
movq -0x240(%rbp), %rdi
callq 0x3390