github.com/bir3/gocompiler@v0.9.2202/src/cmd/internal/notsha256/sha256block_amd64.s (about) 1 // Copyright 2013 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 //go:build !purego 6 7 #include "textflag.h" 8 9 // SHA256 block routine. See sha256block.go for Go equivalent. 10 // 11 // The algorithm is detailed in FIPS 180-4: 12 // 13 // https://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf 14 15 // Wt = Mt; for 0 <= t <= 15 16 // Wt = SIGMA1(Wt-2) + SIGMA0(Wt-15) + Wt-16; for 16 <= t <= 63 17 // 18 // a = H0 19 // b = H1 20 // c = H2 21 // d = H3 22 // e = H4 23 // f = H5 24 // g = H6 25 // h = H7 26 // 27 // for t = 0 to 63 { 28 // T1 = h + BIGSIGMA1(e) + Ch(e,f,g) + Kt + Wt 29 // T2 = BIGSIGMA0(a) + Maj(a,b,c) 30 // h = g 31 // g = f 32 // f = e 33 // e = d + T1 34 // d = c 35 // c = b 36 // b = a 37 // a = T1 + T2 38 // } 39 // 40 // H0 = a + H0 41 // H1 = b + H1 42 // H2 = c + H2 43 // H3 = d + H3 44 // H4 = e + H4 45 // H5 = f + H5 46 // H6 = g + H6 47 // H7 = h + H7 48 49 // Wt = Mt; for 0 <= t <= 15 50 #define MSGSCHEDULE0(index) \ 51 MOVL (index*4)(SI), AX; \ 52 BSWAPL AX; \ 53 MOVL AX, (index*4)(BP) 54 55 // Wt = SIGMA1(Wt-2) + Wt-7 + SIGMA0(Wt-15) + Wt-16; for 16 <= t <= 63 56 // SIGMA0(x) = ROTR(7,x) XOR ROTR(18,x) XOR SHR(3,x) 57 // SIGMA1(x) = ROTR(17,x) XOR ROTR(19,x) XOR SHR(10,x) 58 #define MSGSCHEDULE1(index) \ 59 MOVL ((index-2)*4)(BP), AX; \ 60 MOVL AX, CX; \ 61 RORL $17, AX; \ 62 MOVL CX, DX; \ 63 RORL $19, CX; \ 64 SHRL $10, DX; \ 65 MOVL ((index-15)*4)(BP), BX; \ 66 XORL CX, AX; \ 67 MOVL BX, CX; \ 68 XORL DX, AX; \ 69 RORL $7, BX; \ 70 MOVL CX, DX; \ 71 SHRL $3, DX; \ 72 RORL $18, CX; \ 73 ADDL ((index-7)*4)(BP), AX; \ 74 XORL CX, BX; \ 75 XORL DX, BX; \ 76 ADDL ((index-16)*4)(BP), BX; \ 77 ADDL BX, AX; \ 78 MOVL AX, ((index)*4)(BP) 79 80 // Calculate T1 in AX - uses AX, CX and DX registers. 81 // h is also used as an accumulator. Wt is passed in AX. 82 // T1 = h + BIGSIGMA1(e) + Ch(e, f, g) + Kt + Wt 83 // BIGSIGMA1(x) = ROTR(6,x) XOR ROTR(11,x) XOR ROTR(25,x) 84 // Ch(x, y, z) = (x AND y) XOR (NOT x AND z) 85 #define SHA256T1(const, e, f, g, h) \ 86 ADDL AX, h; \ 87 MOVL e, AX; \ 88 ADDL $const, h; \ 89 MOVL e, CX; \ 90 RORL $6, AX; \ 91 MOVL e, DX; \ 92 RORL $11, CX; \ 93 XORL CX, AX; \ 94 MOVL e, CX; \ 95 RORL $25, DX; \ 96 ANDL f, CX; \ 97 XORL AX, DX; \ 98 MOVL e, AX; \ 99 NOTL AX; \ 100 ADDL DX, h; \ 101 ANDL g, AX; \ 102 XORL CX, AX; \ 103 ADDL h, AX 104 105 // Calculate T2 in BX - uses BX, CX, DX and DI registers. 106 // T2 = BIGSIGMA0(a) + Maj(a, b, c) 107 // BIGSIGMA0(x) = ROTR(2,x) XOR ROTR(13,x) XOR ROTR(22,x) 108 // Maj(x, y, z) = (x AND y) XOR (x AND z) XOR (y AND z) 109 #define SHA256T2(a, b, c) \ 110 MOVL a, DI; \ 111 MOVL c, BX; \ 112 RORL $2, DI; \ 113 MOVL a, DX; \ 114 ANDL b, BX; \ 115 RORL $13, DX; \ 116 MOVL a, CX; \ 117 ANDL c, CX; \ 118 XORL DX, DI; \ 119 XORL CX, BX; \ 120 MOVL a, DX; \ 121 MOVL b, CX; \ 122 RORL $22, DX; \ 123 ANDL a, CX; \ 124 XORL CX, BX; \ 125 XORL DX, DI; \ 126 ADDL DI, BX 127 128 // Calculate T1 and T2, then e = d + T1 and a = T1 + T2. 129 // The values for e and a are stored in d and h, ready for rotation. 130 #define SHA256ROUND(index, const, a, b, c, d, e, f, g, h) \ 131 SHA256T1(const, e, f, g, h); \ 132 SHA256T2(a, b, c); \ 133 MOVL BX, h; \ 134 ADDL AX, d; \ 135 ADDL AX, h 136 137 #define SHA256ROUND0(index, const, a, b, c, d, e, f, g, h) \ 138 MSGSCHEDULE0(index); \ 139 SHA256ROUND(index, const, a, b, c, d, e, f, g, h) 140 141 #define SHA256ROUND1(index, const, a, b, c, d, e, f, g, h) \ 142 MSGSCHEDULE1(index); \ 143 SHA256ROUND(index, const, a, b, c, d, e, f, g, h) 144 145 TEXT ·block(SB), 0, $536-32 146 MOVQ p_base+8(FP), SI 147 MOVQ p_len+16(FP), DX 148 SHRQ $6, DX 149 SHLQ $6, DX 150 151 LEAQ (SI)(DX*1), DI 152 MOVQ DI, 256(SP) 153 CMPQ SI, DI 154 JEQ end 155 156 MOVQ dig+0(FP), BP 157 MOVL (0*4)(BP), R8 // a = H0 158 MOVL (1*4)(BP), R9 // b = H1 159 MOVL (2*4)(BP), R10 // c = H2 160 MOVL (3*4)(BP), R11 // d = H3 161 MOVL (4*4)(BP), R12 // e = H4 162 MOVL (5*4)(BP), R13 // f = H5 163 MOVL (6*4)(BP), R14 // g = H6 164 MOVL (7*4)(BP), R15 // h = H7 165 166 loop: 167 MOVQ SP, BP 168 169 SHA256ROUND0(0, 0x428a2f98, R8, R9, R10, R11, R12, R13, R14, R15) 170 SHA256ROUND0(1, 0x71374491, R15, R8, R9, R10, R11, R12, R13, R14) 171 SHA256ROUND0(2, 0xb5c0fbcf, R14, R15, R8, R9, R10, R11, R12, R13) 172 SHA256ROUND0(3, 0xe9b5dba5, R13, R14, R15, R8, R9, R10, R11, R12) 173 SHA256ROUND0(4, 0x3956c25b, R12, R13, R14, R15, R8, R9, R10, R11) 174 SHA256ROUND0(5, 0x59f111f1, R11, R12, R13, R14, R15, R8, R9, R10) 175 SHA256ROUND0(6, 0x923f82a4, R10, R11, R12, R13, R14, R15, R8, R9) 176 SHA256ROUND0(7, 0xab1c5ed5, R9, R10, R11, R12, R13, R14, R15, R8) 177 SHA256ROUND0(8, 0xd807aa98, R8, R9, R10, R11, R12, R13, R14, R15) 178 SHA256ROUND0(9, 0x12835b01, R15, R8, R9, R10, R11, R12, R13, R14) 179 SHA256ROUND0(10, 0x243185be, R14, R15, R8, R9, R10, R11, R12, R13) 180 SHA256ROUND0(11, 0x550c7dc3, R13, R14, R15, R8, R9, R10, R11, R12) 181 SHA256ROUND0(12, 0x72be5d74, R12, R13, R14, R15, R8, R9, R10, R11) 182 SHA256ROUND0(13, 0x80deb1fe, R11, R12, R13, R14, R15, R8, R9, R10) 183 SHA256ROUND0(14, 0x9bdc06a7, R10, R11, R12, R13, R14, R15, R8, R9) 184 SHA256ROUND0(15, 0xc19bf174, R9, R10, R11, R12, R13, R14, R15, R8) 185 186 SHA256ROUND1(16, 0xe49b69c1, R8, R9, R10, R11, R12, R13, R14, R15) 187 SHA256ROUND1(17, 0xefbe4786, R15, R8, R9, R10, R11, R12, R13, R14) 188 SHA256ROUND1(18, 0x0fc19dc6, R14, R15, R8, R9, R10, R11, R12, R13) 189 SHA256ROUND1(19, 0x240ca1cc, R13, R14, R15, R8, R9, R10, R11, R12) 190 SHA256ROUND1(20, 0x2de92c6f, R12, R13, R14, R15, R8, R9, R10, R11) 191 SHA256ROUND1(21, 0x4a7484aa, R11, R12, R13, R14, R15, R8, R9, R10) 192 SHA256ROUND1(22, 0x5cb0a9dc, R10, R11, R12, R13, R14, R15, R8, R9) 193 SHA256ROUND1(23, 0x76f988da, R9, R10, R11, R12, R13, R14, R15, R8) 194 SHA256ROUND1(24, 0x983e5152, R8, R9, R10, R11, R12, R13, R14, R15) 195 SHA256ROUND1(25, 0xa831c66d, R15, R8, R9, R10, R11, R12, R13, R14) 196 SHA256ROUND1(26, 0xb00327c8, R14, R15, R8, R9, R10, R11, R12, R13) 197 SHA256ROUND1(27, 0xbf597fc7, R13, R14, R15, R8, R9, R10, R11, R12) 198 SHA256ROUND1(28, 0xc6e00bf3, R12, R13, R14, R15, R8, R9, R10, R11) 199 SHA256ROUND1(29, 0xd5a79147, R11, R12, R13, R14, R15, R8, R9, R10) 200 SHA256ROUND1(30, 0x06ca6351, R10, R11, R12, R13, R14, R15, R8, R9) 201 SHA256ROUND1(31, 0x14292967, R9, R10, R11, R12, R13, R14, R15, R8) 202 SHA256ROUND1(32, 0x27b70a85, R8, R9, R10, R11, R12, R13, R14, R15) 203 SHA256ROUND1(33, 0x2e1b2138, R15, R8, R9, R10, R11, R12, R13, R14) 204 SHA256ROUND1(34, 0x4d2c6dfc, R14, R15, R8, R9, R10, R11, R12, R13) 205 SHA256ROUND1(35, 0x53380d13, R13, R14, R15, R8, R9, R10, R11, R12) 206 SHA256ROUND1(36, 0x650a7354, R12, R13, R14, R15, R8, R9, R10, R11) 207 SHA256ROUND1(37, 0x766a0abb, R11, R12, R13, R14, R15, R8, R9, R10) 208 SHA256ROUND1(38, 0x81c2c92e, R10, R11, R12, R13, R14, R15, R8, R9) 209 SHA256ROUND1(39, 0x92722c85, R9, R10, R11, R12, R13, R14, R15, R8) 210 SHA256ROUND1(40, 0xa2bfe8a1, R8, R9, R10, R11, R12, R13, R14, R15) 211 SHA256ROUND1(41, 0xa81a664b, R15, R8, R9, R10, R11, R12, R13, R14) 212 SHA256ROUND1(42, 0xc24b8b70, R14, R15, R8, R9, R10, R11, R12, R13) 213 SHA256ROUND1(43, 0xc76c51a3, R13, R14, R15, R8, R9, R10, R11, R12) 214 SHA256ROUND1(44, 0xd192e819, R12, R13, R14, R15, R8, R9, R10, R11) 215 SHA256ROUND1(45, 0xd6990624, R11, R12, R13, R14, R15, R8, R9, R10) 216 SHA256ROUND1(46, 0xf40e3585, R10, R11, R12, R13, R14, R15, R8, R9) 217 SHA256ROUND1(47, 0x106aa070, R9, R10, R11, R12, R13, R14, R15, R8) 218 SHA256ROUND1(48, 0x19a4c116, R8, R9, R10, R11, R12, R13, R14, R15) 219 SHA256ROUND1(49, 0x1e376c08, R15, R8, R9, R10, R11, R12, R13, R14) 220 SHA256ROUND1(50, 0x2748774c, R14, R15, R8, R9, R10, R11, R12, R13) 221 SHA256ROUND1(51, 0x34b0bcb5, R13, R14, R15, R8, R9, R10, R11, R12) 222 SHA256ROUND1(52, 0x391c0cb3, R12, R13, R14, R15, R8, R9, R10, R11) 223 SHA256ROUND1(53, 0x4ed8aa4a, R11, R12, R13, R14, R15, R8, R9, R10) 224 SHA256ROUND1(54, 0x5b9cca4f, R10, R11, R12, R13, R14, R15, R8, R9) 225 SHA256ROUND1(55, 0x682e6ff3, R9, R10, R11, R12, R13, R14, R15, R8) 226 SHA256ROUND1(56, 0x748f82ee, R8, R9, R10, R11, R12, R13, R14, R15) 227 SHA256ROUND1(57, 0x78a5636f, R15, R8, R9, R10, R11, R12, R13, R14) 228 SHA256ROUND1(58, 0x84c87814, R14, R15, R8, R9, R10, R11, R12, R13) 229 SHA256ROUND1(59, 0x8cc70208, R13, R14, R15, R8, R9, R10, R11, R12) 230 SHA256ROUND1(60, 0x90befffa, R12, R13, R14, R15, R8, R9, R10, R11) 231 SHA256ROUND1(61, 0xa4506ceb, R11, R12, R13, R14, R15, R8, R9, R10) 232 SHA256ROUND1(62, 0xbef9a3f7, R10, R11, R12, R13, R14, R15, R8, R9) 233 SHA256ROUND1(63, 0xc67178f2, R9, R10, R11, R12, R13, R14, R15, R8) 234 235 MOVQ dig+0(FP), BP 236 ADDL (0*4)(BP), R8 // H0 = a + H0 237 MOVL R8, (0*4)(BP) 238 ADDL (1*4)(BP), R9 // H1 = b + H1 239 MOVL R9, (1*4)(BP) 240 ADDL (2*4)(BP), R10 // H2 = c + H2 241 MOVL R10, (2*4)(BP) 242 ADDL (3*4)(BP), R11 // H3 = d + H3 243 MOVL R11, (3*4)(BP) 244 ADDL (4*4)(BP), R12 // H4 = e + H4 245 MOVL R12, (4*4)(BP) 246 ADDL (5*4)(BP), R13 // H5 = f + H5 247 MOVL R13, (5*4)(BP) 248 ADDL (6*4)(BP), R14 // H6 = g + H6 249 MOVL R14, (6*4)(BP) 250 ADDL (7*4)(BP), R15 // H7 = h + H7 251 MOVL R15, (7*4)(BP) 252 253 ADDQ $64, SI 254 CMPQ SI, 256(SP) 255 JB loop 256 257 end: 258 RET 259 260 // shuffle byte order from LE to BE 261 DATA flip_mask<>+0x00(SB)/8, $0x0405060700010203 262 DATA flip_mask<>+0x08(SB)/8, $0x0c0d0e0f08090a0b 263 DATA flip_mask<>+0x10(SB)/8, $0x0405060700010203 264 DATA flip_mask<>+0x18(SB)/8, $0x0c0d0e0f08090a0b 265 GLOBL flip_mask<>(SB), 8, $32 266 267 // shuffle xBxA -> 00BA 268 DATA shuff_00BA<>+0x00(SB)/8, $0x0b0a090803020100 269 DATA shuff_00BA<>+0x08(SB)/8, $0xFFFFFFFFFFFFFFFF 270 DATA shuff_00BA<>+0x10(SB)/8, $0x0b0a090803020100 271 DATA shuff_00BA<>+0x18(SB)/8, $0xFFFFFFFFFFFFFFFF 272 GLOBL shuff_00BA<>(SB), 8, $32 273 274 // shuffle xDxC -> DC00 275 DATA shuff_DC00<>+0x00(SB)/8, $0xFFFFFFFFFFFFFFFF 276 DATA shuff_DC00<>+0x08(SB)/8, $0x0b0a090803020100 277 DATA shuff_DC00<>+0x10(SB)/8, $0xFFFFFFFFFFFFFFFF 278 DATA shuff_DC00<>+0x18(SB)/8, $0x0b0a090803020100 279 GLOBL shuff_DC00<>(SB), 8, $32 280 281 // Round specific constants 282 DATA K256<>+0x00(SB)/4, $0x428a2f98 // k1 283 DATA K256<>+0x04(SB)/4, $0x71374491 // k2 284 DATA K256<>+0x08(SB)/4, $0xb5c0fbcf // k3 285 DATA K256<>+0x0c(SB)/4, $0xe9b5dba5 // k4 286 DATA K256<>+0x10(SB)/4, $0x428a2f98 // k1 287 DATA K256<>+0x14(SB)/4, $0x71374491 // k2 288 DATA K256<>+0x18(SB)/4, $0xb5c0fbcf // k3 289 DATA K256<>+0x1c(SB)/4, $0xe9b5dba5 // k4 290 291 DATA K256<>+0x20(SB)/4, $0x3956c25b // k5 - k8 292 DATA K256<>+0x24(SB)/4, $0x59f111f1 293 DATA K256<>+0x28(SB)/4, $0x923f82a4 294 DATA K256<>+0x2c(SB)/4, $0xab1c5ed5 295 DATA K256<>+0x30(SB)/4, $0x3956c25b 296 DATA K256<>+0x34(SB)/4, $0x59f111f1 297 DATA K256<>+0x38(SB)/4, $0x923f82a4 298 DATA K256<>+0x3c(SB)/4, $0xab1c5ed5 299 300 DATA K256<>+0x40(SB)/4, $0xd807aa98 // k9 - k12 301 DATA K256<>+0x44(SB)/4, $0x12835b01 302 DATA K256<>+0x48(SB)/4, $0x243185be 303 DATA K256<>+0x4c(SB)/4, $0x550c7dc3 304 DATA K256<>+0x50(SB)/4, $0xd807aa98 305 DATA K256<>+0x54(SB)/4, $0x12835b01 306 DATA K256<>+0x58(SB)/4, $0x243185be 307 DATA K256<>+0x5c(SB)/4, $0x550c7dc3 308 309 DATA K256<>+0x60(SB)/4, $0x72be5d74 // k13 - k16 310 DATA K256<>+0x64(SB)/4, $0x80deb1fe 311 DATA K256<>+0x68(SB)/4, $0x9bdc06a7 312 DATA K256<>+0x6c(SB)/4, $0xc19bf174 313 DATA K256<>+0x70(SB)/4, $0x72be5d74 314 DATA K256<>+0x74(SB)/4, $0x80deb1fe 315 DATA K256<>+0x78(SB)/4, $0x9bdc06a7 316 DATA K256<>+0x7c(SB)/4, $0xc19bf174 317 318 DATA K256<>+0x80(SB)/4, $0xe49b69c1 // k17 - k20 319 DATA K256<>+0x84(SB)/4, $0xefbe4786 320 DATA K256<>+0x88(SB)/4, $0x0fc19dc6 321 DATA K256<>+0x8c(SB)/4, $0x240ca1cc 322 DATA K256<>+0x90(SB)/4, $0xe49b69c1 323 DATA K256<>+0x94(SB)/4, $0xefbe4786 324 DATA K256<>+0x98(SB)/4, $0x0fc19dc6 325 DATA K256<>+0x9c(SB)/4, $0x240ca1cc 326 327 DATA K256<>+0xa0(SB)/4, $0x2de92c6f // k21 - k24 328 DATA K256<>+0xa4(SB)/4, $0x4a7484aa 329 DATA K256<>+0xa8(SB)/4, $0x5cb0a9dc 330 DATA K256<>+0xac(SB)/4, $0x76f988da 331 DATA K256<>+0xb0(SB)/4, $0x2de92c6f 332 DATA K256<>+0xb4(SB)/4, $0x4a7484aa 333 DATA K256<>+0xb8(SB)/4, $0x5cb0a9dc 334 DATA K256<>+0xbc(SB)/4, $0x76f988da 335 336 DATA K256<>+0xc0(SB)/4, $0x983e5152 // k25 - k28 337 DATA K256<>+0xc4(SB)/4, $0xa831c66d 338 DATA K256<>+0xc8(SB)/4, $0xb00327c8 339 DATA K256<>+0xcc(SB)/4, $0xbf597fc7 340 DATA K256<>+0xd0(SB)/4, $0x983e5152 341 DATA K256<>+0xd4(SB)/4, $0xa831c66d 342 DATA K256<>+0xd8(SB)/4, $0xb00327c8 343 DATA K256<>+0xdc(SB)/4, $0xbf597fc7 344 345 DATA K256<>+0xe0(SB)/4, $0xc6e00bf3 // k29 - k32 346 DATA K256<>+0xe4(SB)/4, $0xd5a79147 347 DATA K256<>+0xe8(SB)/4, $0x06ca6351 348 DATA K256<>+0xec(SB)/4, $0x14292967 349 DATA K256<>+0xf0(SB)/4, $0xc6e00bf3 350 DATA K256<>+0xf4(SB)/4, $0xd5a79147 351 DATA K256<>+0xf8(SB)/4, $0x06ca6351 352 DATA K256<>+0xfc(SB)/4, $0x14292967 353 354 DATA K256<>+0x100(SB)/4, $0x27b70a85 355 DATA K256<>+0x104(SB)/4, $0x2e1b2138 356 DATA K256<>+0x108(SB)/4, $0x4d2c6dfc 357 DATA K256<>+0x10c(SB)/4, $0x53380d13 358 DATA K256<>+0x110(SB)/4, $0x27b70a85 359 DATA K256<>+0x114(SB)/4, $0x2e1b2138 360 DATA K256<>+0x118(SB)/4, $0x4d2c6dfc 361 DATA K256<>+0x11c(SB)/4, $0x53380d13 362 363 DATA K256<>+0x120(SB)/4, $0x650a7354 364 DATA K256<>+0x124(SB)/4, $0x766a0abb 365 DATA K256<>+0x128(SB)/4, $0x81c2c92e 366 DATA K256<>+0x12c(SB)/4, $0x92722c85 367 DATA K256<>+0x130(SB)/4, $0x650a7354 368 DATA K256<>+0x134(SB)/4, $0x766a0abb 369 DATA K256<>+0x138(SB)/4, $0x81c2c92e 370 DATA K256<>+0x13c(SB)/4, $0x92722c85 371 372 DATA K256<>+0x140(SB)/4, $0xa2bfe8a1 373 DATA K256<>+0x144(SB)/4, $0xa81a664b 374 DATA K256<>+0x148(SB)/4, $0xc24b8b70 375 DATA K256<>+0x14c(SB)/4, $0xc76c51a3 376 DATA K256<>+0x150(SB)/4, $0xa2bfe8a1 377 DATA K256<>+0x154(SB)/4, $0xa81a664b 378 DATA K256<>+0x158(SB)/4, $0xc24b8b70 379 DATA K256<>+0x15c(SB)/4, $0xc76c51a3 380 381 DATA K256<>+0x160(SB)/4, $0xd192e819 382 DATA K256<>+0x164(SB)/4, $0xd6990624 383 DATA K256<>+0x168(SB)/4, $0xf40e3585 384 DATA K256<>+0x16c(SB)/4, $0x106aa070 385 DATA K256<>+0x170(SB)/4, $0xd192e819 386 DATA K256<>+0x174(SB)/4, $0xd6990624 387 DATA K256<>+0x178(SB)/4, $0xf40e3585 388 DATA K256<>+0x17c(SB)/4, $0x106aa070 389 390 DATA K256<>+0x180(SB)/4, $0x19a4c116 391 DATA K256<>+0x184(SB)/4, $0x1e376c08 392 DATA K256<>+0x188(SB)/4, $0x2748774c 393 DATA K256<>+0x18c(SB)/4, $0x34b0bcb5 394 DATA K256<>+0x190(SB)/4, $0x19a4c116 395 DATA K256<>+0x194(SB)/4, $0x1e376c08 396 DATA K256<>+0x198(SB)/4, $0x2748774c 397 DATA K256<>+0x19c(SB)/4, $0x34b0bcb5 398 399 DATA K256<>+0x1a0(SB)/4, $0x391c0cb3 400 DATA K256<>+0x1a4(SB)/4, $0x4ed8aa4a 401 DATA K256<>+0x1a8(SB)/4, $0x5b9cca4f 402 DATA K256<>+0x1ac(SB)/4, $0x682e6ff3 403 DATA K256<>+0x1b0(SB)/4, $0x391c0cb3 404 DATA K256<>+0x1b4(SB)/4, $0x4ed8aa4a 405 DATA K256<>+0x1b8(SB)/4, $0x5b9cca4f 406 DATA K256<>+0x1bc(SB)/4, $0x682e6ff3 407 408 DATA K256<>+0x1c0(SB)/4, $0x748f82ee 409 DATA K256<>+0x1c4(SB)/4, $0x78a5636f 410 DATA K256<>+0x1c8(SB)/4, $0x84c87814 411 DATA K256<>+0x1cc(SB)/4, $0x8cc70208 412 DATA K256<>+0x1d0(SB)/4, $0x748f82ee 413 DATA K256<>+0x1d4(SB)/4, $0x78a5636f 414 DATA K256<>+0x1d8(SB)/4, $0x84c87814 415 DATA K256<>+0x1dc(SB)/4, $0x8cc70208 416 417 DATA K256<>+0x1e0(SB)/4, $0x90befffa 418 DATA K256<>+0x1e4(SB)/4, $0xa4506ceb 419 DATA K256<>+0x1e8(SB)/4, $0xbef9a3f7 420 DATA K256<>+0x1ec(SB)/4, $0xc67178f2 421 DATA K256<>+0x1f0(SB)/4, $0x90befffa 422 DATA K256<>+0x1f4(SB)/4, $0xa4506ceb 423 DATA K256<>+0x1f8(SB)/4, $0xbef9a3f7 424 DATA K256<>+0x1fc(SB)/4, $0xc67178f2 425 426 GLOBL K256<>(SB), (NOPTR + RODATA), $512