Welcome to mirror list, hosted at ThFree Co, Russian Federation.

7zCrcT8U.asm « x64 « Asm - github.com/kornelski/7z.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 41194324b38c9ba1842438a00e97afa6b95a6f31 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
.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