Rev 589 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 589 | Rev 6883 | ||
---|---|---|---|
1 | init_crc_table: |
1 | init_crc_table: |
2 | xor edx, edx |
2 | xor edx, edx |
3 | mov edi, crc_table |
3 | mov edi, crc_table |
4 | .1: |
4 | .1: |
5 | mov ecx, 8 |
5 | mov ecx, 8 |
6 | mov eax, edx |
6 | mov eax, edx |
7 | .2: |
7 | .2: |
8 | shr eax, 1 |
8 | shr eax, 1 |
9 | jnc @f |
9 | jnc @f |
10 | xor eax, 0xEDB88320 |
10 | xor eax, 0xEDB88320 |
11 | @@: |
11 | @@: |
12 | loop .2 |
12 | loop .2 |
13 | stosd |
13 | stosd |
14 | inc dl |
14 | inc dl |
15 | jnz .1 |
15 | jnz .1 |
16 | ret |
16 | ret |
- | 17 | ||
- | 18 | crc_continue: |
|
- | 19 | ; in: eax = pervios crc, ecx = size, esi->buffer |
|
- | 20 | ; out: eax = crc |
|
- | 21 | xor eax,-1 |
|
- | 22 | jmp crc.loop |
|
17 | 23 | ||
18 | crc: |
24 | crc: |
19 | ; in: ecx=size, esi->buffer |
25 | ; in: ecx=size, esi->buffer |
20 | ; out: eax=crc |
26 | ; out: eax=crc |
21 | or eax, -1 |
27 | or eax, -1 |
22 | jecxz .end |
28 | jecxz .end |
23 | .loop: |
29 | .loop: |
24 | movzx edx, al |
30 | movzx edx, al |
25 | xor dl, byte [esi] |
31 | xor dl, byte [esi] |
26 | inc esi |
32 | inc esi |
27 | shr eax, 8 |
33 | shr eax, 8 |
28 | xor eax, [crc_table+edx*4] |
34 | xor eax, [crc_table+edx*4] |
29 | loop .loop |
35 | loop .loop |
30 | .end: |
36 | .end: |
31 | xor eax, -1 |
37 | xor eax, -1 |
32 | ret |
38 | ret |