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 7ossl_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 19ossl_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