33 lines
623 B
PHP
33 lines
623 B
PHP
|
init_crc_table:
|
||
|
xor edx, edx
|
||
|
mov edi, crc_table
|
||
|
.1:
|
||
|
mov ecx, 8
|
||
|
mov eax, edx
|
||
|
.2:
|
||
|
shr eax, 1
|
||
|
jnc @f
|
||
|
xor eax, 0xEDB88320
|
||
|
@@:
|
||
|
loop .2
|
||
|
stosd
|
||
|
inc dl
|
||
|
jnz .1
|
||
|
ret
|
||
|
|
||
|
crc:
|
||
|
; in: ecx=size, esi->buffer
|
||
|
; out: eax=crc
|
||
|
or eax, -1
|
||
|
jecxz .end
|
||
|
.loop:
|
||
|
movzx edx, al
|
||
|
xor dl, byte [esi]
|
||
|
inc esi
|
||
|
shr eax, 8
|
||
|
xor eax, [crc_table+edx*4]
|
||
|
loop .loop
|
||
|
.end:
|
||
|
xor eax, -1
|
||
|
ret
|