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
145TEXT ·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
166loop:
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
257end:
258 RET
259
260// shuffle byte order from LE to BE
261DATA flip_mask<>+0x00(SB)/8, $0x0405060700010203
262DATA flip_mask<>+0x08(SB)/8, $0x0c0d0e0f08090a0b
263DATA flip_mask<>+0x10(SB)/8, $0x0405060700010203
264DATA flip_mask<>+0x18(SB)/8, $0x0c0d0e0f08090a0b
265GLOBL flip_mask<>(SB), 8, $32
266
267// shuffle xBxA -> 00BA
268DATA shuff_00BA<>+0x00(SB)/8, $0x0b0a090803020100
269DATA shuff_00BA<>+0x08(SB)/8, $0xFFFFFFFFFFFFFFFF
270DATA shuff_00BA<>+0x10(SB)/8, $0x0b0a090803020100
271DATA shuff_00BA<>+0x18(SB)/8, $0xFFFFFFFFFFFFFFFF
272GLOBL shuff_00BA<>(SB), 8, $32
273
274// shuffle xDxC -> DC00
275DATA shuff_DC00<>+0x00(SB)/8, $0xFFFFFFFFFFFFFFFF
276DATA shuff_DC00<>+0x08(SB)/8, $0x0b0a090803020100
277DATA shuff_DC00<>+0x10(SB)/8, $0xFFFFFFFFFFFFFFFF
278DATA shuff_DC00<>+0x18(SB)/8, $0x0b0a090803020100
279GLOBL shuff_DC00<>(SB), 8, $32
280
281// Round specific constants
282DATA K256<>+0x00(SB)/4, $0x428a2f98 // k1
283DATA K256<>+0x04(SB)/4, $0x71374491 // k2
284DATA K256<>+0x08(SB)/4, $0xb5c0fbcf // k3
285DATA K256<>+0x0c(SB)/4, $0xe9b5dba5 // k4
286DATA K256<>+0x10(SB)/4, $0x428a2f98 // k1
287DATA K256<>+0x14(SB)/4, $0x71374491 // k2
288DATA K256<>+0x18(SB)/4, $0xb5c0fbcf // k3
289DATA K256<>+0x1c(SB)/4, $0xe9b5dba5 // k4
290
291DATA K256<>+0x20(SB)/4, $0x3956c25b // k5 - k8
292DATA K256<>+0x24(SB)/4, $0x59f111f1
293DATA K256<>+0x28(SB)/4, $0x923f82a4
294DATA K256<>+0x2c(SB)/4, $0xab1c5ed5
295DATA K256<>+0x30(SB)/4, $0x3956c25b
296DATA K256<>+0x34(SB)/4, $0x59f111f1
297DATA K256<>+0x38(SB)/4, $0x923f82a4
298DATA K256<>+0x3c(SB)/4, $0xab1c5ed5
299
300DATA K256<>+0x40(SB)/4, $0xd807aa98 // k9 - k12
301DATA K256<>+0x44(SB)/4, $0x12835b01
302DATA K256<>+0x48(SB)/4, $0x243185be
303DATA K256<>+0x4c(SB)/4, $0x550c7dc3
304DATA K256<>+0x50(SB)/4, $0xd807aa98
305DATA K256<>+0x54(SB)/4, $0x12835b01
306DATA K256<>+0x58(SB)/4, $0x243185be
307DATA K256<>+0x5c(SB)/4, $0x550c7dc3
308
309DATA K256<>+0x60(SB)/4, $0x72be5d74 // k13 - k16
310DATA K256<>+0x64(SB)/4, $0x80deb1fe
311DATA K256<>+0x68(SB)/4, $0x9bdc06a7
312DATA K256<>+0x6c(SB)/4, $0xc19bf174
313DATA K256<>+0x70(SB)/4, $0x72be5d74
314DATA K256<>+0x74(SB)/4, $0x80deb1fe
315DATA K256<>+0x78(SB)/4, $0x9bdc06a7
316DATA K256<>+0x7c(SB)/4, $0xc19bf174
317
318DATA K256<>+0x80(SB)/4, $0xe49b69c1 // k17 - k20
319DATA K256<>+0x84(SB)/4, $0xefbe4786
320DATA K256<>+0x88(SB)/4, $0x0fc19dc6
321DATA K256<>+0x8c(SB)/4, $0x240ca1cc
322DATA K256<>+0x90(SB)/4, $0xe49b69c1
323DATA K256<>+0x94(SB)/4, $0xefbe4786
324DATA K256<>+0x98(SB)/4, $0x0fc19dc6
325DATA K256<>+0x9c(SB)/4, $0x240ca1cc
326
327DATA K256<>+0xa0(SB)/4, $0x2de92c6f // k21 - k24
328DATA K256<>+0xa4(SB)/4, $0x4a7484aa
329DATA K256<>+0xa8(SB)/4, $0x5cb0a9dc
330DATA K256<>+0xac(SB)/4, $0x76f988da
331DATA K256<>+0xb0(SB)/4, $0x2de92c6f
332DATA K256<>+0xb4(SB)/4, $0x4a7484aa
333DATA K256<>+0xb8(SB)/4, $0x5cb0a9dc
334DATA K256<>+0xbc(SB)/4, $0x76f988da
335
336DATA K256<>+0xc0(SB)/4, $0x983e5152 // k25 - k28
337DATA K256<>+0xc4(SB)/4, $0xa831c66d
338DATA K256<>+0xc8(SB)/4, $0xb00327c8
339DATA K256<>+0xcc(SB)/4, $0xbf597fc7
340DATA K256<>+0xd0(SB)/4, $0x983e5152
341DATA K256<>+0xd4(SB)/4, $0xa831c66d
342DATA K256<>+0xd8(SB)/4, $0xb00327c8
343DATA K256<>+0xdc(SB)/4, $0xbf597fc7
344
345DATA K256<>+0xe0(SB)/4, $0xc6e00bf3 // k29 - k32
346DATA K256<>+0xe4(SB)/4, $0xd5a79147
347DATA K256<>+0xe8(SB)/4, $0x06ca6351
348DATA K256<>+0xec(SB)/4, $0x14292967
349DATA K256<>+0xf0(SB)/4, $0xc6e00bf3
350DATA K256<>+0xf4(SB)/4, $0xd5a79147
351DATA K256<>+0xf8(SB)/4, $0x06ca6351
352DATA K256<>+0xfc(SB)/4, $0x14292967
353
354DATA K256<>+0x100(SB)/4, $0x27b70a85
355DATA K256<>+0x104(SB)/4, $0x2e1b2138
356DATA K256<>+0x108(SB)/4, $0x4d2c6dfc
357DATA K256<>+0x10c(SB)/4, $0x53380d13
358DATA K256<>+0x110(SB)/4, $0x27b70a85
359DATA K256<>+0x114(SB)/4, $0x2e1b2138
360DATA K256<>+0x118(SB)/4, $0x4d2c6dfc
361DATA K256<>+0x11c(SB)/4, $0x53380d13
362
363DATA K256<>+0x120(SB)/4, $0x650a7354
364DATA K256<>+0x124(SB)/4, $0x766a0abb
365DATA K256<>+0x128(SB)/4, $0x81c2c92e
366DATA K256<>+0x12c(SB)/4, $0x92722c85
367DATA K256<>+0x130(SB)/4, $0x650a7354
368DATA K256<>+0x134(SB)/4, $0x766a0abb
369DATA K256<>+0x138(SB)/4, $0x81c2c92e
370DATA K256<>+0x13c(SB)/4, $0x92722c85
371
372DATA K256<>+0x140(SB)/4, $0xa2bfe8a1
373DATA K256<>+0x144(SB)/4, $0xa81a664b
374DATA K256<>+0x148(SB)/4, $0xc24b8b70
375DATA K256<>+0x14c(SB)/4, $0xc76c51a3
376DATA K256<>+0x150(SB)/4, $0xa2bfe8a1
377DATA K256<>+0x154(SB)/4, $0xa81a664b
378DATA K256<>+0x158(SB)/4, $0xc24b8b70
379DATA K256<>+0x15c(SB)/4, $0xc76c51a3
380
381DATA K256<>+0x160(SB)/4, $0xd192e819
382DATA K256<>+0x164(SB)/4, $0xd6990624
383DATA K256<>+0x168(SB)/4, $0xf40e3585
384DATA K256<>+0x16c(SB)/4, $0x106aa070
385DATA K256<>+0x170(SB)/4, $0xd192e819
386DATA K256<>+0x174(SB)/4, $0xd6990624
387DATA K256<>+0x178(SB)/4, $0xf40e3585
388DATA K256<>+0x17c(SB)/4, $0x106aa070
389
390DATA K256<>+0x180(SB)/4, $0x19a4c116
391DATA K256<>+0x184(SB)/4, $0x1e376c08
392DATA K256<>+0x188(SB)/4, $0x2748774c
393DATA K256<>+0x18c(SB)/4, $0x34b0bcb5
394DATA K256<>+0x190(SB)/4, $0x19a4c116
395DATA K256<>+0x194(SB)/4, $0x1e376c08
396DATA K256<>+0x198(SB)/4, $0x2748774c
397DATA K256<>+0x19c(SB)/4, $0x34b0bcb5
398
399DATA K256<>+0x1a0(SB)/4, $0x391c0cb3
400DATA K256<>+0x1a4(SB)/4, $0x4ed8aa4a
401DATA K256<>+0x1a8(SB)/4, $0x5b9cca4f
402DATA K256<>+0x1ac(SB)/4, $0x682e6ff3
403DATA K256<>+0x1b0(SB)/4, $0x391c0cb3
404DATA K256<>+0x1b4(SB)/4, $0x4ed8aa4a
405DATA K256<>+0x1b8(SB)/4, $0x5b9cca4f
406DATA K256<>+0x1bc(SB)/4, $0x682e6ff3
407
408DATA K256<>+0x1c0(SB)/4, $0x748f82ee
409DATA K256<>+0x1c4(SB)/4, $0x78a5636f
410DATA K256<>+0x1c8(SB)/4, $0x84c87814
411DATA K256<>+0x1cc(SB)/4, $0x8cc70208
412DATA K256<>+0x1d0(SB)/4, $0x748f82ee
413DATA K256<>+0x1d4(SB)/4, $0x78a5636f
414DATA K256<>+0x1d8(SB)/4, $0x84c87814
415DATA K256<>+0x1dc(SB)/4, $0x8cc70208
416
417DATA K256<>+0x1e0(SB)/4, $0x90befffa
418DATA K256<>+0x1e4(SB)/4, $0xa4506ceb
419DATA K256<>+0x1e8(SB)/4, $0xbef9a3f7
420DATA K256<>+0x1ec(SB)/4, $0xc67178f2
421DATA K256<>+0x1f0(SB)/4, $0x90befffa
422DATA K256<>+0x1f4(SB)/4, $0xa4506ceb
423DATA K256<>+0x1f8(SB)/4, $0xbef9a3f7
424DATA K256<>+0x1fc(SB)/4, $0xc67178f2
425
426GLOBL K256<>(SB), (NOPTR + RODATA), $512
View as plain text