.arch i8086,jumps .code16 .att_syntax prefix #NO_APP #APP .section .text.init .global _start _start: .section .text.main .global main main: push %bp mov %sp, %bp mov 8(%bp), %si push (%si) call crc16 add $0x2, %sp mov 6(%bp), %di mov %ax, (%di) pop %bp lret $4 #NO_APP .text .global crc16 .type crc16, @function crc16: pushw %bp movw %sp, %bp xorw %bx, %bx movw $-1, %ax .L2: cmpw 4(%bp), %bx jne .L5 popw %bp ret .L5: movb %cs:(%bx), %dl movb $8, %cl shlw %cl, %dx xorw %dx, %ax movb %cl, %dl .L4: movw %ax, %cx shlw $1, %cx testw %ax, %ax xchgw %ax, %cx jge .L3 xorw $4129, %ax .L3: decb %dl jne .L4 incw %bx jmp .L2 .size crc16, .-crc16 .ident "GCC: (GNU) 6.3.0"