mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
102 lines
1.4 KiB
NASM
102 lines
1.4 KiB
NASM
|
.code
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
CRC1b macro
|
||
|
movzx EDX, BYTE PTR [RSI]
|
||
|
inc RSI
|
||
|
movzx EBX, AL
|
||
|
xor EDX, EBX
|
||
|
shr EAX, 8
|
||
|
xor EAX, [RDI + RDX * 4]
|
||
|
dec R8
|
||
|
endm
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
align 16
|
||
|
CrcUpdateT8 PROC
|
||
|
|
||
|
push RBX
|
||
|
push RSI
|
||
|
push RDI
|
||
|
push RBP
|
||
|
|
||
|
mov EAX, ECX
|
||
|
mov RSI, RDX
|
||
|
mov RDI, R9
|
||
|
|
||
|
|
||
|
test R8, R8
|
||
|
jz sl_end
|
||
|
sl:
|
||
|
test RSI, 7
|
||
|
jz sl_end
|
||
|
CRC1b
|
||
|
jnz sl
|
||
|
sl_end:
|
||
|
|
||
|
cmp R8, 16
|
||
|
jb crc_end
|
||
|
mov R9, R8
|
||
|
and R8, 7
|
||
|
add R8, 8
|
||
|
sub R9, R8
|
||
|
|
||
|
add R9, RSI
|
||
|
xor EAX, [RSI]
|
||
|
mov EBX, [RSI + 4]
|
||
|
movzx ECX, BL
|
||
|
align 16
|
||
|
main_loop:
|
||
|
mov EDX, [RDI + RCX*4 + 0C00h]
|
||
|
movzx EBP, BH
|
||
|
xor EDX, [RDI + RBP*4 + 0800h]
|
||
|
shr EBX, 16
|
||
|
movzx ECX, BL
|
||
|
xor EDX, [RSI + 8]
|
||
|
xor EDX, [RDI + RCX*4 + 0400h]
|
||
|
movzx ECX, AL
|
||
|
movzx EBP, BH
|
||
|
xor EDX, [RDI + RBP*4 + 0000h]
|
||
|
|
||
|
mov EBX, [RSI + 12]
|
||
|
|
||
|
xor EDX, [RDI + RCX*4 + 01C00h]
|
||
|
movzx EBP, AH
|
||
|
shr EAX, 16
|
||
|
movzx ECX, AL
|
||
|
xor EDX, [RDI + RBP*4 + 01800h]
|
||
|
movzx EBP, AH
|
||
|
mov EAX, [RDI + RCX*4 + 01400h]
|
||
|
add RSI, 8
|
||
|
xor EAX, [RDI + RBP*4 + 01000h]
|
||
|
movzx ECX, BL
|
||
|
xor EAX,EDX
|
||
|
|
||
|
cmp RSI, R9
|
||
|
jne main_loop
|
||
|
xor EAX, [RSI]
|
||
|
|
||
|
|
||
|
|
||
|
crc_end:
|
||
|
|
||
|
test R8, R8
|
||
|
jz fl_end
|
||
|
fl:
|
||
|
CRC1b
|
||
|
jnz fl
|
||
|
fl_end:
|
||
|
|
||
|
pop RBP
|
||
|
pop RDI
|
||
|
pop RSI
|
||
|
pop RBX
|
||
|
ret
|
||
|
CrcUpdateT8 ENDP
|
||
|
|
||
|
end
|