Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/sys/crypto/openssl/aarch64/md5-aarch64.S
39507 views
1
/* Do not modify. This file is auto-generated from md5-aarch64.pl. */
2
#include "arm_arch.h"
3
4
.text
5
.globl ossl_md5_block_asm_data_order
6
.type ossl_md5_block_asm_data_order,@function
7
ossl_md5_block_asm_data_order:
8
AARCH64_VALID_CALL_TARGET
9
// Save all callee-saved registers
10
stp x19,x20,[sp,#-80]!
11
stp x21,x22,[sp,#16]
12
stp x23,x24,[sp,#32]
13
stp x25,x26,[sp,#48]
14
stp x27,x28,[sp,#64]
15
16
ldp w10, w11, [x0, #0] // .Load MD5 state->A and state->B
17
ldp w12, w13, [x0, #8] // .Load MD5 state->C and state->D
18
.align 5
19
ossl_md5_blocks_loop:
20
eor x17, x12, x13 // Begin aux function round 1 F(x,y,z)=(((y^z)&x)^z)
21
and x16, x17, x11 // Continue aux function round 1 F(x,y,z)=(((y^z)&x)^z)
22
ldp w15, w20, [x1] // .Load 2 words of input data0 M[0],M[1]
23
ldp w3, w21, [x1, #8] // .Load 2 words of input data0 M[2],M[3]
24
#ifdef __AARCH64EB__
25
rev w15, w15
26
rev w20, w20
27
rev w3, w3
28
rev w21, w21
29
#endif
30
eor x14, x16, x13 // End aux function round 1 F(x,y,z)=(((y^z)&x)^z)
31
movz x9, #0xa478 // .Load lower half of constant 0xd76aa478
32
movk x9, #0xd76a, lsl #16 // .Load upper half of constant 0xd76aa478
33
add w8, w10, w15 // Add dest value
34
add w7, w8, w9 // Add constant 0xd76aa478
35
add w6, w7, w14 // Add aux function result
36
ror w6, w6, #25 // Rotate left s=7 bits
37
eor x5, x11, x12 // Begin aux function round 1 F(x,y,z)=(((y^z)&x)^z)
38
add w4, w11, w6 // Add X parameter round 1 A=FF(A, B, C, D, 0xd76aa478, s=7, M[0])
39
and x8, x5, x4 // Continue aux function round 1 F(x,y,z)=(((y^z)&x)^z)
40
eor x17, x8, x12 // End aux function round 1 F(x,y,z)=(((y^z)&x)^z)
41
movz x16, #0xb756 // .Load lower half of constant 0xe8c7b756
42
movk x16, #0xe8c7, lsl #16 // .Load upper half of constant 0xe8c7b756
43
add w9, w13, w20 // Add dest value
44
add w7, w9, w16 // Add constant 0xe8c7b756
45
add w14, w7, w17 // Add aux function result
46
ror w14, w14, #20 // Rotate left s=12 bits
47
eor x6, x4, x11 // Begin aux function round 1 F(x,y,z)=(((y^z)&x)^z)
48
add w5, w4, w14 // Add X parameter round 1 D=FF(D, A, B, C, 0xe8c7b756, s=12, M[1])
49
and x8, x6, x5 // Continue aux function round 1 F(x,y,z)=(((y^z)&x)^z)
50
eor x9, x8, x11 // End aux function round 1 F(x,y,z)=(((y^z)&x)^z)
51
movz x16, #0x70db // .Load lower half of constant 0x242070db
52
movk x16, #0x2420, lsl #16 // .Load upper half of constant 0x242070db
53
add w7, w12, w3 // Add dest value
54
add w17, w7, w16 // Add constant 0x242070db
55
add w14, w17, w9 // Add aux function result
56
ror w14, w14, #15 // Rotate left s=17 bits
57
eor x6, x5, x4 // Begin aux function round 1 F(x,y,z)=(((y^z)&x)^z)
58
add w8, w5, w14 // Add X parameter round 1 C=FF(C, D, A, B, 0x242070db, s=17, M[2])
59
and x7, x6, x8 // Continue aux function round 1 F(x,y,z)=(((y^z)&x)^z)
60
eor x16, x7, x4 // End aux function round 1 F(x,y,z)=(((y^z)&x)^z)
61
movz x9, #0xceee // .Load lower half of constant 0xc1bdceee
62
movk x9, #0xc1bd, lsl #16 // .Load upper half of constant 0xc1bdceee
63
add w14, w11, w21 // Add dest value
64
add w6, w14, w9 // Add constant 0xc1bdceee
65
add w7, w6, w16 // Add aux function result
66
ror w7, w7, #10 // Rotate left s=22 bits
67
eor x17, x8, x5 // Begin aux function round 1 F(x,y,z)=(((y^z)&x)^z)
68
add w9, w8, w7 // Add X parameter round 1 B=FF(B, C, D, A, 0xc1bdceee, s=22, M[3])
69
ldp w14, w22, [x1, #16] // .Load 2 words of input data0 M[4],M[5]
70
ldp w7, w23, [x1, #24] // .Load 2 words of input data0 M[6],M[7]
71
#ifdef __AARCH64EB__
72
rev w14, w14
73
rev w22, w22
74
rev w7, w7
75
rev w23, w23
76
#endif
77
and x16, x17, x9 // Continue aux function round 1 F(x,y,z)=(((y^z)&x)^z)
78
eor x6, x16, x5 // End aux function round 1 F(x,y,z)=(((y^z)&x)^z)
79
movz x16, #0xfaf // .Load lower half of constant 0xf57c0faf
80
movk x16, #0xf57c, lsl #16 // .Load upper half of constant 0xf57c0faf
81
add w17, w4, w14 // Add dest value
82
add w16, w17, w16 // Add constant 0xf57c0faf
83
add w4, w16, w6 // Add aux function result
84
ror w4, w4, #25 // Rotate left s=7 bits
85
eor x16, x9, x8 // Begin aux function round 1 F(x,y,z)=(((y^z)&x)^z)
86
add w17, w9, w4 // Add X parameter round 1 A=FF(A, B, C, D, 0xf57c0faf, s=7, M[4])
87
and x16, x16, x17 // Continue aux function round 1 F(x,y,z)=(((y^z)&x)^z)
88
eor x6, x16, x8 // End aux function round 1 F(x,y,z)=(((y^z)&x)^z)
89
movz x4, #0xc62a // .Load lower half of constant 0x4787c62a
90
movk x4, #0x4787, lsl #16 // .Load upper half of constant 0x4787c62a
91
add w16, w5, w22 // Add dest value
92
add w16, w16, w4 // Add constant 0x4787c62a
93
add w5, w16, w6 // Add aux function result
94
ror w5, w5, #20 // Rotate left s=12 bits
95
eor x4, x17, x9 // Begin aux function round 1 F(x,y,z)=(((y^z)&x)^z)
96
add w19, w17, w5 // Add X parameter round 1 D=FF(D, A, B, C, 0x4787c62a, s=12, M[5])
97
and x6, x4, x19 // Continue aux function round 1 F(x,y,z)=(((y^z)&x)^z)
98
eor x5, x6, x9 // End aux function round 1 F(x,y,z)=(((y^z)&x)^z)
99
movz x4, #0x4613 // .Load lower half of constant 0xa8304613
100
movk x4, #0xa830, lsl #16 // .Load upper half of constant 0xa8304613
101
add w6, w8, w7 // Add dest value
102
add w8, w6, w4 // Add constant 0xa8304613
103
add w4, w8, w5 // Add aux function result
104
ror w4, w4, #15 // Rotate left s=17 bits
105
eor x6, x19, x17 // Begin aux function round 1 F(x,y,z)=(((y^z)&x)^z)
106
add w8, w19, w4 // Add X parameter round 1 C=FF(C, D, A, B, 0xa8304613, s=17, M[6])
107
and x5, x6, x8 // Continue aux function round 1 F(x,y,z)=(((y^z)&x)^z)
108
eor x4, x5, x17 // End aux function round 1 F(x,y,z)=(((y^z)&x)^z)
109
movz x6, #0x9501 // .Load lower half of constant 0xfd469501
110
movk x6, #0xfd46, lsl #16 // .Load upper half of constant 0xfd469501
111
add w9, w9, w23 // Add dest value
112
add w5, w9, w6 // Add constant 0xfd469501
113
add w9, w5, w4 // Add aux function result
114
ror w9, w9, #10 // Rotate left s=22 bits
115
eor x6, x8, x19 // Begin aux function round 1 F(x,y,z)=(((y^z)&x)^z)
116
add w4, w8, w9 // Add X parameter round 1 B=FF(B, C, D, A, 0xfd469501, s=22, M[7])
117
ldp w5, w24, [x1, #32] // .Load 2 words of input data0 M[8],M[9]
118
ldp w16, w25, [x1, #40] // .Load 2 words of input data0 M[10],M[11]
119
#ifdef __AARCH64EB__
120
rev w5, w5
121
rev w24, w24
122
rev w16, w16
123
rev w25, w25
124
#endif
125
and x9, x6, x4 // Continue aux function round 1 F(x,y,z)=(((y^z)&x)^z)
126
eor x6, x9, x19 // End aux function round 1 F(x,y,z)=(((y^z)&x)^z)
127
movz x9, #0x98d8 // .Load lower half of constant 0x698098d8
128
movk x9, #0x6980, lsl #16 // .Load upper half of constant 0x698098d8
129
add w17, w17, w5 // Add dest value
130
add w9, w17, w9 // Add constant 0x698098d8
131
add w17, w9, w6 // Add aux function result
132
ror w17, w17, #25 // Rotate left s=7 bits
133
eor x9, x4, x8 // Begin aux function round 1 F(x,y,z)=(((y^z)&x)^z)
134
add w6, w4, w17 // Add X parameter round 1 A=FF(A, B, C, D, 0x698098d8, s=7, M[8])
135
and x17, x9, x6 // Continue aux function round 1 F(x,y,z)=(((y^z)&x)^z)
136
eor x9, x17, x8 // End aux function round 1 F(x,y,z)=(((y^z)&x)^z)
137
movz x17, #0xf7af // .Load lower half of constant 0x8b44f7af
138
movk x17, #0x8b44, lsl #16 // .Load upper half of constant 0x8b44f7af
139
add w19, w19, w24 // Add dest value
140
add w17, w19, w17 // Add constant 0x8b44f7af
141
add w19, w17, w9 // Add aux function result
142
ror w19, w19, #20 // Rotate left s=12 bits
143
eor x9, x6, x4 // Begin aux function round 1 F(x,y,z)=(((y^z)&x)^z)
144
add w17, w6, w19 // Add X parameter round 1 D=FF(D, A, B, C, 0x8b44f7af, s=12, M[9])
145
and x9, x9, x17 // Continue aux function round 1 F(x,y,z)=(((y^z)&x)^z)
146
eor x9, x9, x4 // End aux function round 1 F(x,y,z)=(((y^z)&x)^z)
147
movz x11, #0x5bb1 // .Load lower half of constant 0xffff5bb1
148
movk x11, #0xffff, lsl #16 // .Load upper half of constant 0xffff5bb1
149
add w8, w8, w16 // Add dest value
150
add w8, w8, w11 // Add constant 0xffff5bb1
151
add w8, w8, w9 // Add aux function result
152
ror w8, w8, #15 // Rotate left s=17 bits
153
eor x9, x17, x6 // Begin aux function round 1 F(x,y,z)=(((y^z)&x)^z)
154
add w8, w17, w8 // Add X parameter round 1 C=FF(C, D, A, B, 0xffff5bb1, s=17, M[10])
155
and x9, x9, x8 // Continue aux function round 1 F(x,y,z)=(((y^z)&x)^z)
156
eor x9, x9, x6 // End aux function round 1 F(x,y,z)=(((y^z)&x)^z)
157
movz x11, #0xd7be // .Load lower half of constant 0x895cd7be
158
movk x11, #0x895c, lsl #16 // .Load upper half of constant 0x895cd7be
159
add w4, w4, w25 // Add dest value
160
add w4, w4, w11 // Add constant 0x895cd7be
161
add w9, w4, w9 // Add aux function result
162
ror w9, w9, #10 // Rotate left s=22 bits
163
eor x4, x8, x17 // Begin aux function round 1 F(x,y,z)=(((y^z)&x)^z)
164
add w9, w8, w9 // Add X parameter round 1 B=FF(B, C, D, A, 0x895cd7be, s=22, M[11])
165
ldp w11, w26, [x1, #48] // .Load 2 words of input data0 M[12],M[13]
166
ldp w12, w27, [x1, #56] // .Load 2 words of input data0 M[14],M[15]
167
#ifdef __AARCH64EB__
168
rev w11, w11
169
rev w26, w26
170
rev w12, w12
171
rev w27, w27
172
#endif
173
and x4, x4, x9 // Continue aux function round 1 F(x,y,z)=(((y^z)&x)^z)
174
eor x4, x4, x17 // End aux function round 1 F(x,y,z)=(((y^z)&x)^z)
175
movz x19, #0x1122 // .Load lower half of constant 0x6b901122
176
movk x19, #0x6b90, lsl #16 // .Load upper half of constant 0x6b901122
177
add w6, w6, w11 // Add dest value
178
add w6, w6, w19 // Add constant 0x6b901122
179
add w4, w6, w4 // Add aux function result
180
ror w4, w4, #25 // Rotate left s=7 bits
181
eor x6, x9, x8 // Begin aux function round 1 F(x,y,z)=(((y^z)&x)^z)
182
add w4, w9, w4 // Add X parameter round 1 A=FF(A, B, C, D, 0x6b901122, s=7, M[12])
183
and x6, x6, x4 // Continue aux function round 1 F(x,y,z)=(((y^z)&x)^z)
184
eor x6, x6, x8 // End aux function round 1 F(x,y,z)=(((y^z)&x)^z)
185
movz x19, #0x7193 // .Load lower half of constant 0xfd987193
186
movk x19, #0xfd98, lsl #16 // .Load upper half of constant 0xfd987193
187
add w17, w17, w26 // Add dest value
188
add w17, w17, w19 // Add constant 0xfd987193
189
add w17, w17, w6 // Add aux function result
190
ror w17, w17, #20 // Rotate left s=12 bits
191
eor x6, x4, x9 // Begin aux function round 1 F(x,y,z)=(((y^z)&x)^z)
192
add w17, w4, w17 // Add X parameter round 1 D=FF(D, A, B, C, 0xfd987193, s=12, M[13])
193
and x6, x6, x17 // Continue aux function round 1 F(x,y,z)=(((y^z)&x)^z)
194
eor x6, x6, x9 // End aux function round 1 F(x,y,z)=(((y^z)&x)^z)
195
movz x13, #0x438e // .Load lower half of constant 0xa679438e
196
movk x13, #0xa679, lsl #16 // .Load upper half of constant 0xa679438e
197
add w8, w8, w12 // Add dest value
198
add w8, w8, w13 // Add constant 0xa679438e
199
add w8, w8, w6 // Add aux function result
200
ror w8, w8, #15 // Rotate left s=17 bits
201
eor x6, x17, x4 // Begin aux function round 1 F(x,y,z)=(((y^z)&x)^z)
202
add w8, w17, w8 // Add X parameter round 1 C=FF(C, D, A, B, 0xa679438e, s=17, M[14])
203
and x6, x6, x8 // Continue aux function round 1 F(x,y,z)=(((y^z)&x)^z)
204
eor x6, x6, x4 // End aux function round 1 F(x,y,z)=(((y^z)&x)^z)
205
movz x13, #0x821 // .Load lower half of constant 0x49b40821
206
movk x13, #0x49b4, lsl #16 // .Load upper half of constant 0x49b40821
207
add w9, w9, w27 // Add dest value
208
add w9, w9, w13 // Add constant 0x49b40821
209
add w9, w9, w6 // Add aux function result
210
ror w9, w9, #10 // Rotate left s=22 bits
211
bic x6, x8, x17 // Aux function round 2 (~z & y)
212
add w9, w8, w9 // Add X parameter round 1 B=FF(B, C, D, A, 0x49b40821, s=22, M[15])
213
movz x13, #0x2562 // .Load lower half of constant 0xf61e2562
214
movk x13, #0xf61e, lsl #16 // .Load upper half of constant 0xf61e2562
215
add w4, w4, w20 // Add dest value
216
add w4, w4, w13 // Add constant 0xf61e2562
217
and x13, x9, x17 // Aux function round 2 (x & z)
218
add w4, w4, w6 // Add (~z & y)
219
add w4, w4, w13 // Add (x & z)
220
ror w4, w4, #27 // Rotate left s=5 bits
221
bic x6, x9, x8 // Aux function round 2 (~z & y)
222
add w4, w9, w4 // Add X parameter round 2 A=GG(A, B, C, D, 0xf61e2562, s=5, M[1])
223
movz x13, #0xb340 // .Load lower half of constant 0xc040b340
224
movk x13, #0xc040, lsl #16 // .Load upper half of constant 0xc040b340
225
add w17, w17, w7 // Add dest value
226
add w17, w17, w13 // Add constant 0xc040b340
227
and x13, x4, x8 // Aux function round 2 (x & z)
228
add w17, w17, w6 // Add (~z & y)
229
add w17, w17, w13 // Add (x & z)
230
ror w17, w17, #23 // Rotate left s=9 bits
231
bic x6, x4, x9 // Aux function round 2 (~z & y)
232
add w17, w4, w17 // Add X parameter round 2 D=GG(D, A, B, C, 0xc040b340, s=9, M[6])
233
movz x13, #0x5a51 // .Load lower half of constant 0x265e5a51
234
movk x13, #0x265e, lsl #16 // .Load upper half of constant 0x265e5a51
235
add w8, w8, w25 // Add dest value
236
add w8, w8, w13 // Add constant 0x265e5a51
237
and x13, x17, x9 // Aux function round 2 (x & z)
238
add w8, w8, w6 // Add (~z & y)
239
add w8, w8, w13 // Add (x & z)
240
ror w8, w8, #18 // Rotate left s=14 bits
241
bic x6, x17, x4 // Aux function round 2 (~z & y)
242
add w8, w17, w8 // Add X parameter round 2 C=GG(C, D, A, B, 0x265e5a51, s=14, M[11])
243
movz x13, #0xc7aa // .Load lower half of constant 0xe9b6c7aa
244
movk x13, #0xe9b6, lsl #16 // .Load upper half of constant 0xe9b6c7aa
245
add w9, w9, w15 // Add dest value
246
add w9, w9, w13 // Add constant 0xe9b6c7aa
247
and x13, x8, x4 // Aux function round 2 (x & z)
248
add w9, w9, w6 // Add (~z & y)
249
add w9, w9, w13 // Add (x & z)
250
ror w9, w9, #12 // Rotate left s=20 bits
251
bic x6, x8, x17 // Aux function round 2 (~z & y)
252
add w9, w8, w9 // Add X parameter round 2 B=GG(B, C, D, A, 0xe9b6c7aa, s=20, M[0])
253
movz x13, #0x105d // .Load lower half of constant 0xd62f105d
254
movk x13, #0xd62f, lsl #16 // .Load upper half of constant 0xd62f105d
255
add w4, w4, w22 // Add dest value
256
add w4, w4, w13 // Add constant 0xd62f105d
257
and x13, x9, x17 // Aux function round 2 (x & z)
258
add w4, w4, w6 // Add (~z & y)
259
add w4, w4, w13 // Add (x & z)
260
ror w4, w4, #27 // Rotate left s=5 bits
261
bic x6, x9, x8 // Aux function round 2 (~z & y)
262
add w4, w9, w4 // Add X parameter round 2 A=GG(A, B, C, D, 0xd62f105d, s=5, M[5])
263
movz x13, #0x1453 // .Load lower half of constant 0x2441453
264
movk x13, #0x244, lsl #16 // .Load upper half of constant 0x2441453
265
add w17, w17, w16 // Add dest value
266
add w17, w17, w13 // Add constant 0x2441453
267
and x13, x4, x8 // Aux function round 2 (x & z)
268
add w17, w17, w6 // Add (~z & y)
269
add w17, w17, w13 // Add (x & z)
270
ror w17, w17, #23 // Rotate left s=9 bits
271
bic x6, x4, x9 // Aux function round 2 (~z & y)
272
add w17, w4, w17 // Add X parameter round 2 D=GG(D, A, B, C, 0x2441453, s=9, M[10])
273
movz x13, #0xe681 // .Load lower half of constant 0xd8a1e681
274
movk x13, #0xd8a1, lsl #16 // .Load upper half of constant 0xd8a1e681
275
add w8, w8, w27 // Add dest value
276
add w8, w8, w13 // Add constant 0xd8a1e681
277
and x13, x17, x9 // Aux function round 2 (x & z)
278
add w8, w8, w6 // Add (~z & y)
279
add w8, w8, w13 // Add (x & z)
280
ror w8, w8, #18 // Rotate left s=14 bits
281
bic x6, x17, x4 // Aux function round 2 (~z & y)
282
add w8, w17, w8 // Add X parameter round 2 C=GG(C, D, A, B, 0xd8a1e681, s=14, M[15])
283
movz x13, #0xfbc8 // .Load lower half of constant 0xe7d3fbc8
284
movk x13, #0xe7d3, lsl #16 // .Load upper half of constant 0xe7d3fbc8
285
add w9, w9, w14 // Add dest value
286
add w9, w9, w13 // Add constant 0xe7d3fbc8
287
and x13, x8, x4 // Aux function round 2 (x & z)
288
add w9, w9, w6 // Add (~z & y)
289
add w9, w9, w13 // Add (x & z)
290
ror w9, w9, #12 // Rotate left s=20 bits
291
bic x6, x8, x17 // Aux function round 2 (~z & y)
292
add w9, w8, w9 // Add X parameter round 2 B=GG(B, C, D, A, 0xe7d3fbc8, s=20, M[4])
293
movz x13, #0xcde6 // .Load lower half of constant 0x21e1cde6
294
movk x13, #0x21e1, lsl #16 // .Load upper half of constant 0x21e1cde6
295
add w4, w4, w24 // Add dest value
296
add w4, w4, w13 // Add constant 0x21e1cde6
297
and x13, x9, x17 // Aux function round 2 (x & z)
298
add w4, w4, w6 // Add (~z & y)
299
add w4, w4, w13 // Add (x & z)
300
ror w4, w4, #27 // Rotate left s=5 bits
301
bic x6, x9, x8 // Aux function round 2 (~z & y)
302
add w4, w9, w4 // Add X parameter round 2 A=GG(A, B, C, D, 0x21e1cde6, s=5, M[9])
303
movz x13, #0x7d6 // .Load lower half of constant 0xc33707d6
304
movk x13, #0xc337, lsl #16 // .Load upper half of constant 0xc33707d6
305
add w17, w17, w12 // Add dest value
306
add w17, w17, w13 // Add constant 0xc33707d6
307
and x13, x4, x8 // Aux function round 2 (x & z)
308
add w17, w17, w6 // Add (~z & y)
309
add w17, w17, w13 // Add (x & z)
310
ror w17, w17, #23 // Rotate left s=9 bits
311
bic x6, x4, x9 // Aux function round 2 (~z & y)
312
add w17, w4, w17 // Add X parameter round 2 D=GG(D, A, B, C, 0xc33707d6, s=9, M[14])
313
movz x13, #0xd87 // .Load lower half of constant 0xf4d50d87
314
movk x13, #0xf4d5, lsl #16 // .Load upper half of constant 0xf4d50d87
315
add w8, w8, w21 // Add dest value
316
add w8, w8, w13 // Add constant 0xf4d50d87
317
and x13, x17, x9 // Aux function round 2 (x & z)
318
add w8, w8, w6 // Add (~z & y)
319
add w8, w8, w13 // Add (x & z)
320
ror w8, w8, #18 // Rotate left s=14 bits
321
bic x6, x17, x4 // Aux function round 2 (~z & y)
322
add w8, w17, w8 // Add X parameter round 2 C=GG(C, D, A, B, 0xf4d50d87, s=14, M[3])
323
movz x13, #0x14ed // .Load lower half of constant 0x455a14ed
324
movk x13, #0x455a, lsl #16 // .Load upper half of constant 0x455a14ed
325
add w9, w9, w5 // Add dest value
326
add w9, w9, w13 // Add constant 0x455a14ed
327
and x13, x8, x4 // Aux function round 2 (x & z)
328
add w9, w9, w6 // Add (~z & y)
329
add w9, w9, w13 // Add (x & z)
330
ror w9, w9, #12 // Rotate left s=20 bits
331
bic x6, x8, x17 // Aux function round 2 (~z & y)
332
add w9, w8, w9 // Add X parameter round 2 B=GG(B, C, D, A, 0x455a14ed, s=20, M[8])
333
movz x13, #0xe905 // .Load lower half of constant 0xa9e3e905
334
movk x13, #0xa9e3, lsl #16 // .Load upper half of constant 0xa9e3e905
335
add w4, w4, w26 // Add dest value
336
add w4, w4, w13 // Add constant 0xa9e3e905
337
and x13, x9, x17 // Aux function round 2 (x & z)
338
add w4, w4, w6 // Add (~z & y)
339
add w4, w4, w13 // Add (x & z)
340
ror w4, w4, #27 // Rotate left s=5 bits
341
bic x6, x9, x8 // Aux function round 2 (~z & y)
342
add w4, w9, w4 // Add X parameter round 2 A=GG(A, B, C, D, 0xa9e3e905, s=5, M[13])
343
movz x13, #0xa3f8 // .Load lower half of constant 0xfcefa3f8
344
movk x13, #0xfcef, lsl #16 // .Load upper half of constant 0xfcefa3f8
345
add w17, w17, w3 // Add dest value
346
add w17, w17, w13 // Add constant 0xfcefa3f8
347
and x13, x4, x8 // Aux function round 2 (x & z)
348
add w17, w17, w6 // Add (~z & y)
349
add w17, w17, w13 // Add (x & z)
350
ror w17, w17, #23 // Rotate left s=9 bits
351
bic x6, x4, x9 // Aux function round 2 (~z & y)
352
add w17, w4, w17 // Add X parameter round 2 D=GG(D, A, B, C, 0xfcefa3f8, s=9, M[2])
353
movz x13, #0x2d9 // .Load lower half of constant 0x676f02d9
354
movk x13, #0x676f, lsl #16 // .Load upper half of constant 0x676f02d9
355
add w8, w8, w23 // Add dest value
356
add w8, w8, w13 // Add constant 0x676f02d9
357
and x13, x17, x9 // Aux function round 2 (x & z)
358
add w8, w8, w6 // Add (~z & y)
359
add w8, w8, w13 // Add (x & z)
360
ror w8, w8, #18 // Rotate left s=14 bits
361
bic x6, x17, x4 // Aux function round 2 (~z & y)
362
add w8, w17, w8 // Add X parameter round 2 C=GG(C, D, A, B, 0x676f02d9, s=14, M[7])
363
movz x13, #0x4c8a // .Load lower half of constant 0x8d2a4c8a
364
movk x13, #0x8d2a, lsl #16 // .Load upper half of constant 0x8d2a4c8a
365
add w9, w9, w11 // Add dest value
366
add w9, w9, w13 // Add constant 0x8d2a4c8a
367
and x13, x8, x4 // Aux function round 2 (x & z)
368
add w9, w9, w6 // Add (~z & y)
369
add w9, w9, w13 // Add (x & z)
370
eor x6, x8, x17 // Begin aux function round 3 H(x,y,z)=(x^y^z)
371
ror w9, w9, #12 // Rotate left s=20 bits
372
movz x10, #0x3942 // .Load lower half of constant 0xfffa3942
373
add w9, w8, w9 // Add X parameter round 2 B=GG(B, C, D, A, 0x8d2a4c8a, s=20, M[12])
374
movk x10, #0xfffa, lsl #16 // .Load upper half of constant 0xfffa3942
375
add w4, w4, w22 // Add dest value
376
eor x6, x6, x9 // End aux function round 3 H(x,y,z)=(x^y^z)
377
add w4, w4, w10 // Add constant 0xfffa3942
378
add w4, w4, w6 // Add aux function result
379
ror w4, w4, #28 // Rotate left s=4 bits
380
eor x6, x9, x8 // Begin aux function round 3 H(x,y,z)=(x^y^z)
381
movz x10, #0xf681 // .Load lower half of constant 0x8771f681
382
add w4, w9, w4 // Add X parameter round 3 A=HH(A, B, C, D, 0xfffa3942, s=4, M[5])
383
movk x10, #0x8771, lsl #16 // .Load upper half of constant 0x8771f681
384
add w17, w17, w5 // Add dest value
385
eor x6, x6, x4 // End aux function round 3 H(x,y,z)=(x^y^z)
386
add w17, w17, w10 // Add constant 0x8771f681
387
add w17, w17, w6 // Add aux function result
388
eor x6, x4, x9 // Begin aux function round 3 H(x,y,z)=(x^y^z)
389
ror w17, w17, #21 // Rotate left s=11 bits
390
movz x13, #0x6122 // .Load lower half of constant 0x6d9d6122
391
add w17, w4, w17 // Add X parameter round 3 D=HH(D, A, B, C, 0x8771f681, s=11, M[8])
392
movk x13, #0x6d9d, lsl #16 // .Load upper half of constant 0x6d9d6122
393
add w8, w8, w25 // Add dest value
394
eor x6, x6, x17 // End aux function round 3 H(x,y,z)=(x^y^z)
395
add w8, w8, w13 // Add constant 0x6d9d6122
396
add w8, w8, w6 // Add aux function result
397
ror w8, w8, #16 // Rotate left s=16 bits
398
eor x6, x17, x4 // Begin aux function round 3 H(x,y,z)=(x^y^z)
399
movz x13, #0x380c // .Load lower half of constant 0xfde5380c
400
add w8, w17, w8 // Add X parameter round 3 C=HH(C, D, A, B, 0x6d9d6122, s=16, M[11])
401
movk x13, #0xfde5, lsl #16 // .Load upper half of constant 0xfde5380c
402
add w9, w9, w12 // Add dest value
403
eor x6, x6, x8 // End aux function round 3 H(x,y,z)=(x^y^z)
404
add w9, w9, w13 // Add constant 0xfde5380c
405
add w9, w9, w6 // Add aux function result
406
eor x6, x8, x17 // Begin aux function round 3 H(x,y,z)=(x^y^z)
407
ror w9, w9, #9 // Rotate left s=23 bits
408
movz x10, #0xea44 // .Load lower half of constant 0xa4beea44
409
add w9, w8, w9 // Add X parameter round 3 B=HH(B, C, D, A, 0xfde5380c, s=23, M[14])
410
movk x10, #0xa4be, lsl #16 // .Load upper half of constant 0xa4beea44
411
add w4, w4, w20 // Add dest value
412
eor x6, x6, x9 // End aux function round 3 H(x,y,z)=(x^y^z)
413
add w4, w4, w10 // Add constant 0xa4beea44
414
add w4, w4, w6 // Add aux function result
415
ror w4, w4, #28 // Rotate left s=4 bits
416
eor x6, x9, x8 // Begin aux function round 3 H(x,y,z)=(x^y^z)
417
movz x10, #0xcfa9 // .Load lower half of constant 0x4bdecfa9
418
add w4, w9, w4 // Add X parameter round 3 A=HH(A, B, C, D, 0xa4beea44, s=4, M[1])
419
movk x10, #0x4bde, lsl #16 // .Load upper half of constant 0x4bdecfa9
420
add w17, w17, w14 // Add dest value
421
eor x6, x6, x4 // End aux function round 3 H(x,y,z)=(x^y^z)
422
add w17, w17, w10 // Add constant 0x4bdecfa9
423
add w17, w17, w6 // Add aux function result
424
eor x6, x4, x9 // Begin aux function round 3 H(x,y,z)=(x^y^z)
425
ror w17, w17, #21 // Rotate left s=11 bits
426
movz x13, #0x4b60 // .Load lower half of constant 0xf6bb4b60
427
add w17, w4, w17 // Add X parameter round 3 D=HH(D, A, B, C, 0x4bdecfa9, s=11, M[4])
428
movk x13, #0xf6bb, lsl #16 // .Load upper half of constant 0xf6bb4b60
429
add w8, w8, w23 // Add dest value
430
eor x6, x6, x17 // End aux function round 3 H(x,y,z)=(x^y^z)
431
add w8, w8, w13 // Add constant 0xf6bb4b60
432
add w8, w8, w6 // Add aux function result
433
ror w8, w8, #16 // Rotate left s=16 bits
434
eor x6, x17, x4 // Begin aux function round 3 H(x,y,z)=(x^y^z)
435
movz x13, #0xbc70 // .Load lower half of constant 0xbebfbc70
436
add w8, w17, w8 // Add X parameter round 3 C=HH(C, D, A, B, 0xf6bb4b60, s=16, M[7])
437
movk x13, #0xbebf, lsl #16 // .Load upper half of constant 0xbebfbc70
438
add w9, w9, w16 // Add dest value
439
eor x6, x6, x8 // End aux function round 3 H(x,y,z)=(x^y^z)
440
add w9, w9, w13 // Add constant 0xbebfbc70
441
add w9, w9, w6 // Add aux function result
442
eor x6, x8, x17 // Begin aux function round 3 H(x,y,z)=(x^y^z)
443
ror w9, w9, #9 // Rotate left s=23 bits
444
movz x10, #0x7ec6 // .Load lower half of constant 0x289b7ec6
445
add w9, w8, w9 // Add X parameter round 3 B=HH(B, C, D, A, 0xbebfbc70, s=23, M[10])
446
movk x10, #0x289b, lsl #16 // .Load upper half of constant 0x289b7ec6
447
add w4, w4, w26 // Add dest value
448
eor x6, x6, x9 // End aux function round 3 H(x,y,z)=(x^y^z)
449
add w4, w4, w10 // Add constant 0x289b7ec6
450
add w4, w4, w6 // Add aux function result
451
ror w4, w4, #28 // Rotate left s=4 bits
452
eor x6, x9, x8 // Begin aux function round 3 H(x,y,z)=(x^y^z)
453
movz x10, #0x27fa // .Load lower half of constant 0xeaa127fa
454
add w4, w9, w4 // Add X parameter round 3 A=HH(A, B, C, D, 0x289b7ec6, s=4, M[13])
455
movk x10, #0xeaa1, lsl #16 // .Load upper half of constant 0xeaa127fa
456
add w17, w17, w15 // Add dest value
457
eor x6, x6, x4 // End aux function round 3 H(x,y,z)=(x^y^z)
458
add w17, w17, w10 // Add constant 0xeaa127fa
459
add w17, w17, w6 // Add aux function result
460
eor x6, x4, x9 // Begin aux function round 3 H(x,y,z)=(x^y^z)
461
ror w17, w17, #21 // Rotate left s=11 bits
462
movz x13, #0x3085 // .Load lower half of constant 0xd4ef3085
463
add w17, w4, w17 // Add X parameter round 3 D=HH(D, A, B, C, 0xeaa127fa, s=11, M[0])
464
movk x13, #0xd4ef, lsl #16 // .Load upper half of constant 0xd4ef3085
465
add w8, w8, w21 // Add dest value
466
eor x6, x6, x17 // End aux function round 3 H(x,y,z)=(x^y^z)
467
add w8, w8, w13 // Add constant 0xd4ef3085
468
add w8, w8, w6 // Add aux function result
469
ror w8, w8, #16 // Rotate left s=16 bits
470
eor x6, x17, x4 // Begin aux function round 3 H(x,y,z)=(x^y^z)
471
movz x13, #0x1d05 // .Load lower half of constant 0x4881d05
472
add w8, w17, w8 // Add X parameter round 3 C=HH(C, D, A, B, 0xd4ef3085, s=16, M[3])
473
movk x13, #0x488, lsl #16 // .Load upper half of constant 0x4881d05
474
add w9, w9, w7 // Add dest value
475
eor x6, x6, x8 // End aux function round 3 H(x,y,z)=(x^y^z)
476
add w9, w9, w13 // Add constant 0x4881d05
477
add w9, w9, w6 // Add aux function result
478
eor x6, x8, x17 // Begin aux function round 3 H(x,y,z)=(x^y^z)
479
ror w9, w9, #9 // Rotate left s=23 bits
480
movz x10, #0xd039 // .Load lower half of constant 0xd9d4d039
481
add w9, w8, w9 // Add X parameter round 3 B=HH(B, C, D, A, 0x4881d05, s=23, M[6])
482
movk x10, #0xd9d4, lsl #16 // .Load upper half of constant 0xd9d4d039
483
add w4, w4, w24 // Add dest value
484
eor x6, x6, x9 // End aux function round 3 H(x,y,z)=(x^y^z)
485
add w4, w4, w10 // Add constant 0xd9d4d039
486
add w4, w4, w6 // Add aux function result
487
ror w4, w4, #28 // Rotate left s=4 bits
488
eor x6, x9, x8 // Begin aux function round 3 H(x,y,z)=(x^y^z)
489
movz x10, #0x99e5 // .Load lower half of constant 0xe6db99e5
490
add w4, w9, w4 // Add X parameter round 3 A=HH(A, B, C, D, 0xd9d4d039, s=4, M[9])
491
movk x10, #0xe6db, lsl #16 // .Load upper half of constant 0xe6db99e5
492
add w17, w17, w11 // Add dest value
493
eor x6, x6, x4 // End aux function round 3 H(x,y,z)=(x^y^z)
494
add w17, w17, w10 // Add constant 0xe6db99e5
495
add w17, w17, w6 // Add aux function result
496
eor x6, x4, x9 // Begin aux function round 3 H(x,y,z)=(x^y^z)
497
ror w17, w17, #21 // Rotate left s=11 bits
498
movz x13, #0x7cf8 // .Load lower half of constant 0x1fa27cf8
499
add w17, w4, w17 // Add X parameter round 3 D=HH(D, A, B, C, 0xe6db99e5, s=11, M[12])
500
movk x13, #0x1fa2, lsl #16 // .Load upper half of constant 0x1fa27cf8
501
add w8, w8, w27 // Add dest value
502
eor x6, x6, x17 // End aux function round 3 H(x,y,z)=(x^y^z)
503
add w8, w8, w13 // Add constant 0x1fa27cf8
504
add w8, w8, w6 // Add aux function result
505
ror w8, w8, #16 // Rotate left s=16 bits
506
eor x6, x17, x4 // Begin aux function round 3 H(x,y,z)=(x^y^z)
507
movz x13, #0x5665 // .Load lower half of constant 0xc4ac5665
508
add w8, w17, w8 // Add X parameter round 3 C=HH(C, D, A, B, 0x1fa27cf8, s=16, M[15])
509
movk x13, #0xc4ac, lsl #16 // .Load upper half of constant 0xc4ac5665
510
add w9, w9, w3 // Add dest value
511
eor x6, x6, x8 // End aux function round 3 H(x,y,z)=(x^y^z)
512
add w9, w9, w13 // Add constant 0xc4ac5665
513
add w9, w9, w6 // Add aux function result
514
ror w9, w9, #9 // Rotate left s=23 bits
515
movz x6, #0x2244 // .Load lower half of constant 0xf4292244
516
movk x6, #0xf429, lsl #16 // .Load upper half of constant 0xf4292244
517
add w9, w8, w9 // Add X parameter round 3 B=HH(B, C, D, A, 0xc4ac5665, s=23, M[2])
518
add w4, w4, w15 // Add dest value
519
orn x13, x9, x17 // Begin aux function round 4 I(x,y,z)=((~z|x)^y)
520
add w4, w4, w6 // Add constant 0xf4292244
521
eor x6, x8, x13 // End aux function round 4 I(x,y,z)=((~z|x)^y)
522
add w4, w4, w6 // Add aux function result
523
ror w4, w4, #26 // Rotate left s=6 bits
524
movz x6, #0xff97 // .Load lower half of constant 0x432aff97
525
movk x6, #0x432a, lsl #16 // .Load upper half of constant 0x432aff97
526
add w4, w9, w4 // Add X parameter round 4 A=II(A, B, C, D, 0xf4292244, s=6, M[0])
527
orn x10, x4, x8 // Begin aux function round 4 I(x,y,z)=((~z|x)^y)
528
add w17, w17, w23 // Add dest value
529
eor x10, x9, x10 // End aux function round 4 I(x,y,z)=((~z|x)^y)
530
add w17, w17, w6 // Add constant 0x432aff97
531
add w6, w17, w10 // Add aux function result
532
ror w6, w6, #22 // Rotate left s=10 bits
533
movz x17, #0x23a7 // .Load lower half of constant 0xab9423a7
534
movk x17, #0xab94, lsl #16 // .Load upper half of constant 0xab9423a7
535
add w6, w4, w6 // Add X parameter round 4 D=II(D, A, B, C, 0x432aff97, s=10, M[7])
536
add w8, w8, w12 // Add dest value
537
orn x10, x6, x9 // Begin aux function round 4 I(x,y,z)=((~z|x)^y)
538
add w8, w8, w17 // Add constant 0xab9423a7
539
eor x17, x4, x10 // End aux function round 4 I(x,y,z)=((~z|x)^y)
540
add w8, w8, w17 // Add aux function result
541
ror w8, w8, #17 // Rotate left s=15 bits
542
movz x17, #0xa039 // .Load lower half of constant 0xfc93a039
543
movk x17, #0xfc93, lsl #16 // .Load upper half of constant 0xfc93a039
544
add w8, w6, w8 // Add X parameter round 4 C=II(C, D, A, B, 0xab9423a7, s=15, M[14])
545
orn x13, x8, x4 // Begin aux function round 4 I(x,y,z)=((~z|x)^y)
546
add w9, w9, w22 // Add dest value
547
eor x13, x6, x13 // End aux function round 4 I(x,y,z)=((~z|x)^y)
548
add w9, w9, w17 // Add constant 0xfc93a039
549
add w17, w9, w13 // Add aux function result
550
ror w17, w17, #11 // Rotate left s=21 bits
551
movz x9, #0x59c3 // .Load lower half of constant 0x655b59c3
552
movk x9, #0x655b, lsl #16 // .Load upper half of constant 0x655b59c3
553
add w17, w8, w17 // Add X parameter round 4 B=II(B, C, D, A, 0xfc93a039, s=21, M[5])
554
add w4, w4, w11 // Add dest value
555
orn x13, x17, x6 // Begin aux function round 4 I(x,y,z)=((~z|x)^y)
556
add w9, w4, w9 // Add constant 0x655b59c3
557
eor x4, x8, x13 // End aux function round 4 I(x,y,z)=((~z|x)^y)
558
add w9, w9, w4 // Add aux function result
559
ror w9, w9, #26 // Rotate left s=6 bits
560
movz x4, #0xcc92 // .Load lower half of constant 0x8f0ccc92
561
movk x4, #0x8f0c, lsl #16 // .Load upper half of constant 0x8f0ccc92
562
add w9, w17, w9 // Add X parameter round 4 A=II(A, B, C, D, 0x655b59c3, s=6, M[12])
563
orn x10, x9, x8 // Begin aux function round 4 I(x,y,z)=((~z|x)^y)
564
add w6, w6, w21 // Add dest value
565
eor x10, x17, x10 // End aux function round 4 I(x,y,z)=((~z|x)^y)
566
add w4, w6, w4 // Add constant 0x8f0ccc92
567
add w6, w4, w10 // Add aux function result
568
ror w6, w6, #22 // Rotate left s=10 bits
569
movz x4, #0xf47d // .Load lower half of constant 0xffeff47d
570
movk x4, #0xffef, lsl #16 // .Load upper half of constant 0xffeff47d
571
add w6, w9, w6 // Add X parameter round 4 D=II(D, A, B, C, 0x8f0ccc92, s=10, M[3])
572
add w8, w8, w16 // Add dest value
573
orn x10, x6, x17 // Begin aux function round 4 I(x,y,z)=((~z|x)^y)
574
add w8, w8, w4 // Add constant 0xffeff47d
575
eor x4, x9, x10 // End aux function round 4 I(x,y,z)=((~z|x)^y)
576
add w8, w8, w4 // Add aux function result
577
ror w8, w8, #17 // Rotate left s=15 bits
578
movz x4, #0x5dd1 // .Load lower half of constant 0x85845dd1
579
movk x4, #0x8584, lsl #16 // .Load upper half of constant 0x85845dd1
580
add w8, w6, w8 // Add X parameter round 4 C=II(C, D, A, B, 0xffeff47d, s=15, M[10])
581
orn x10, x8, x9 // Begin aux function round 4 I(x,y,z)=((~z|x)^y)
582
add w15, w17, w20 // Add dest value
583
eor x17, x6, x10 // End aux function round 4 I(x,y,z)=((~z|x)^y)
584
add w15, w15, w4 // Add constant 0x85845dd1
585
add w4, w15, w17 // Add aux function result
586
ror w4, w4, #11 // Rotate left s=21 bits
587
movz x15, #0x7e4f // .Load lower half of constant 0x6fa87e4f
588
movk x15, #0x6fa8, lsl #16 // .Load upper half of constant 0x6fa87e4f
589
add w17, w8, w4 // Add X parameter round 4 B=II(B, C, D, A, 0x85845dd1, s=21, M[1])
590
add w4, w9, w5 // Add dest value
591
orn x9, x17, x6 // Begin aux function round 4 I(x,y,z)=((~z|x)^y)
592
add w15, w4, w15 // Add constant 0x6fa87e4f
593
eor x4, x8, x9 // End aux function round 4 I(x,y,z)=((~z|x)^y)
594
add w9, w15, w4 // Add aux function result
595
ror w9, w9, #26 // Rotate left s=6 bits
596
movz x15, #0xe6e0 // .Load lower half of constant 0xfe2ce6e0
597
movk x15, #0xfe2c, lsl #16 // .Load upper half of constant 0xfe2ce6e0
598
add w4, w17, w9 // Add X parameter round 4 A=II(A, B, C, D, 0x6fa87e4f, s=6, M[8])
599
orn x9, x4, x8 // Begin aux function round 4 I(x,y,z)=((~z|x)^y)
600
add w6, w6, w27 // Add dest value
601
eor x9, x17, x9 // End aux function round 4 I(x,y,z)=((~z|x)^y)
602
add w15, w6, w15 // Add constant 0xfe2ce6e0
603
add w6, w15, w9 // Add aux function result
604
ror w6, w6, #22 // Rotate left s=10 bits
605
movz x9, #0x4314 // .Load lower half of constant 0xa3014314
606
movk x9, #0xa301, lsl #16 // .Load upper half of constant 0xa3014314
607
add w15, w4, w6 // Add X parameter round 4 D=II(D, A, B, C, 0xfe2ce6e0, s=10, M[15])
608
add w6, w8, w7 // Add dest value
609
orn x7, x15, x17 // Begin aux function round 4 I(x,y,z)=((~z|x)^y)
610
add w8, w6, w9 // Add constant 0xa3014314
611
eor x9, x4, x7 // End aux function round 4 I(x,y,z)=((~z|x)^y)
612
add w6, w8, w9 // Add aux function result
613
ror w6, w6, #17 // Rotate left s=15 bits
614
movz x7, #0x11a1 // .Load lower half of constant 0x4e0811a1
615
movk x7, #0x4e08, lsl #16 // .Load upper half of constant 0x4e0811a1
616
add w8, w15, w6 // Add X parameter round 4 C=II(C, D, A, B, 0xa3014314, s=15, M[6])
617
orn x9, x8, x4 // Begin aux function round 4 I(x,y,z)=((~z|x)^y)
618
add w6, w17, w26 // Add dest value
619
eor x17, x15, x9 // End aux function round 4 I(x,y,z)=((~z|x)^y)
620
add w9, w6, w7 // Add constant 0x4e0811a1
621
add w7, w9, w17 // Add aux function result
622
ror w7, w7, #11 // Rotate left s=21 bits
623
movz x6, #0x7e82 // .Load lower half of constant 0xf7537e82
624
movk x6, #0xf753, lsl #16 // .Load upper half of constant 0xf7537e82
625
add w9, w8, w7 // Add X parameter round 4 B=II(B, C, D, A, 0x4e0811a1, s=21, M[13])
626
add w17, w4, w14 // Add dest value
627
orn x7, x9, x15 // Begin aux function round 4 I(x,y,z)=((~z|x)^y)
628
add w14, w17, w6 // Add constant 0xf7537e82
629
eor x4, x8, x7 // End aux function round 4 I(x,y,z)=((~z|x)^y)
630
add w17, w14, w4 // Add aux function result
631
ror w17, w17, #26 // Rotate left s=6 bits
632
movz x6, #0xf235 // .Load lower half of constant 0xbd3af235
633
movk x6, #0xbd3a, lsl #16 // .Load upper half of constant 0xbd3af235
634
add w7, w9, w17 // Add X parameter round 4 A=II(A, B, C, D, 0xf7537e82, s=6, M[4])
635
orn x14, x7, x8 // Begin aux function round 4 I(x,y,z)=((~z|x)^y)
636
add w4, w15, w25 // Add dest value
637
eor x17, x9, x14 // End aux function round 4 I(x,y,z)=((~z|x)^y)
638
add w15, w4, w6 // Add constant 0xbd3af235
639
add w16, w15, w17 // Add aux function result
640
ror w16, w16, #22 // Rotate left s=10 bits
641
movz x14, #0xd2bb // .Load lower half of constant 0x2ad7d2bb
642
movk x14, #0x2ad7, lsl #16 // .Load upper half of constant 0x2ad7d2bb
643
add w4, w7, w16 // Add X parameter round 4 D=II(D, A, B, C, 0xbd3af235, s=10, M[11])
644
add w6, w8, w3 // Add dest value
645
orn x15, x4, x9 // Begin aux function round 4 I(x,y,z)=((~z|x)^y)
646
add w17, w6, w14 // Add constant 0x2ad7d2bb
647
eor x16, x7, x15 // End aux function round 4 I(x,y,z)=((~z|x)^y)
648
add w8, w17, w16 // Add aux function result
649
ror w8, w8, #17 // Rotate left s=15 bits
650
movz x3, #0xd391 // .Load lower half of constant 0xeb86d391
651
movk x3, #0xeb86, lsl #16 // .Load upper half of constant 0xeb86d391
652
add w14, w4, w8 // Add X parameter round 4 C=II(C, D, A, B, 0x2ad7d2bb, s=15, M[2])
653
orn x6, x14, x7 // Begin aux function round 4 I(x,y,z)=((~z|x)^y)
654
add w15, w9, w24 // Add dest value
655
eor x17, x4, x6 // End aux function round 4 I(x,y,z)=((~z|x)^y)
656
add w16, w15, w3 // Add constant 0xeb86d391
657
add w8, w16, w17 // Add aux function result
658
ror w8, w8, #11 // Rotate left s=21 bits
659
ldp w6, w15, [x0] // Reload MD5 state->A and state->B
660
ldp w5, w9, [x0, #8] // Reload MD5 state->C and state->D
661
add w3, w14, w8 // Add X parameter round 4 B=II(B, C, D, A, 0xeb86d391, s=21, M[9])
662
add w13, w4, w9 // Add result of MD5 rounds to state->D
663
add w12, w14, w5 // Add result of MD5 rounds to state->C
664
add w10, w7, w6 // Add result of MD5 rounds to state->A
665
add w11, w3, w15 // Add result of MD5 rounds to state->B
666
stp w12, w13, [x0, #8] // Store MD5 states C,D
667
stp w10, w11, [x0] // Store MD5 states A,B
668
add x1, x1, #64 // Increment data pointer
669
subs w2, w2, #1 // Decrement block counter
670
b.ne ossl_md5_blocks_loop
671
672
ldp x21,x22,[sp,#16]
673
ldp x23,x24,[sp,#32]
674
ldp x25,x26,[sp,#48]
675
ldp x27,x28,[sp,#64]
676
ldp x19,x20,[sp],#80
677
ret
678
679
680