OSDN Git Service

new repo
[bytom/vapor.git] / vendor / golang.org / x / crypto / sha3 / keccakf_amd64.s
1 // Copyright 2015 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 // +build amd64,!appengine,!gccgo
6
7 // This code was translated into a form compatible with 6a from the public
8 // domain sources at https://github.com/gvanas/KeccakCodePackage
9
10 // Offsets in state
11 #define _ba  (0*8)
12 #define _be  (1*8)
13 #define _bi  (2*8)
14 #define _bo  (3*8)
15 #define _bu  (4*8)
16 #define _ga  (5*8)
17 #define _ge  (6*8)
18 #define _gi  (7*8)
19 #define _go  (8*8)
20 #define _gu  (9*8)
21 #define _ka (10*8)
22 #define _ke (11*8)
23 #define _ki (12*8)
24 #define _ko (13*8)
25 #define _ku (14*8)
26 #define _ma (15*8)
27 #define _me (16*8)
28 #define _mi (17*8)
29 #define _mo (18*8)
30 #define _mu (19*8)
31 #define _sa (20*8)
32 #define _se (21*8)
33 #define _si (22*8)
34 #define _so (23*8)
35 #define _su (24*8)
36
37 // Temporary registers
38 #define rT1  AX
39
40 // Round vars
41 #define rpState DI
42 #define rpStack SP
43
44 #define rDa BX
45 #define rDe CX
46 #define rDi DX
47 #define rDo R8
48 #define rDu R9
49
50 #define rBa R10
51 #define rBe R11
52 #define rBi R12
53 #define rBo R13
54 #define rBu R14
55
56 #define rCa SI
57 #define rCe BP
58 #define rCi rBi
59 #define rCo rBo
60 #define rCu R15
61
62 #define MOVQ_RBI_RCE MOVQ rBi, rCe
63 #define XORQ_RT1_RCA XORQ rT1, rCa
64 #define XORQ_RT1_RCE XORQ rT1, rCe
65 #define XORQ_RBA_RCU XORQ rBa, rCu
66 #define XORQ_RBE_RCU XORQ rBe, rCu
67 #define XORQ_RDU_RCU XORQ rDu, rCu
68 #define XORQ_RDA_RCA XORQ rDa, rCa
69 #define XORQ_RDE_RCE XORQ rDe, rCe
70
71 #define mKeccakRound(iState, oState, rc, B_RBI_RCE, G_RT1_RCA, G_RT1_RCE, G_RBA_RCU, K_RT1_RCA, K_RT1_RCE, K_RBA_RCU, M_RT1_RCA, M_RT1_RCE, M_RBE_RCU, S_RDU_RCU, S_RDA_RCA, S_RDE_RCE) \
72         /* Prepare round */    \
73         MOVQ rCe, rDa;         \
74         ROLQ $1, rDa;          \
75                                \
76         MOVQ _bi(iState), rCi; \
77         XORQ _gi(iState), rDi; \
78         XORQ rCu, rDa;         \
79         XORQ _ki(iState), rCi; \
80         XORQ _mi(iState), rDi; \
81         XORQ rDi, rCi;         \
82                                \
83         MOVQ rCi, rDe;         \
84         ROLQ $1, rDe;          \
85                                \
86         MOVQ _bo(iState), rCo; \
87         XORQ _go(iState), rDo; \
88         XORQ rCa, rDe;         \
89         XORQ _ko(iState), rCo; \
90         XORQ _mo(iState), rDo; \
91         XORQ rDo, rCo;         \
92                                \
93         MOVQ rCo, rDi;         \
94         ROLQ $1, rDi;          \
95                                \
96         MOVQ rCu, rDo;         \
97         XORQ rCe, rDi;         \
98         ROLQ $1, rDo;          \
99                                \
100         MOVQ rCa, rDu;         \
101         XORQ rCi, rDo;         \
102         ROLQ $1, rDu;          \
103                                \
104         /* Result b */         \
105         MOVQ _ba(iState), rBa; \
106         MOVQ _ge(iState), rBe; \
107         XORQ rCo, rDu;         \
108         MOVQ _ki(iState), rBi; \
109         MOVQ _mo(iState), rBo; \
110         MOVQ _su(iState), rBu; \
111         XORQ rDe, rBe;         \
112         ROLQ $44, rBe;         \
113         XORQ rDi, rBi;         \
114         XORQ rDa, rBa;         \
115         ROLQ $43, rBi;         \
116                                \
117         MOVQ rBe, rCa;         \
118         MOVQ rc, rT1;          \
119         ORQ  rBi, rCa;         \
120         XORQ rBa, rT1;         \
121         XORQ rT1, rCa;         \
122         MOVQ rCa, _ba(oState); \
123                                \
124         XORQ rDu, rBu;         \
125         ROLQ $14, rBu;         \
126         MOVQ rBa, rCu;         \
127         ANDQ rBe, rCu;         \
128         XORQ rBu, rCu;         \
129         MOVQ rCu, _bu(oState); \
130                                \
131         XORQ rDo, rBo;         \
132         ROLQ $21, rBo;         \
133         MOVQ rBo, rT1;         \
134         ANDQ rBu, rT1;         \
135         XORQ rBi, rT1;         \
136         MOVQ rT1, _bi(oState); \
137                                \
138         NOTQ rBi;              \
139         ORQ  rBa, rBu;         \
140         ORQ  rBo, rBi;         \
141         XORQ rBo, rBu;         \
142         XORQ rBe, rBi;         \
143         MOVQ rBu, _bo(oState); \
144         MOVQ rBi, _be(oState); \
145         B_RBI_RCE;             \
146                                \
147         /* Result g */         \
148         MOVQ _gu(iState), rBe; \
149         XORQ rDu, rBe;         \
150         MOVQ _ka(iState), rBi; \
151         ROLQ $20, rBe;         \
152         XORQ rDa, rBi;         \
153         ROLQ $3, rBi;          \
154         MOVQ _bo(iState), rBa; \
155         MOVQ rBe, rT1;         \
156         ORQ  rBi, rT1;         \
157         XORQ rDo, rBa;         \
158         MOVQ _me(iState), rBo; \
159         MOVQ _si(iState), rBu; \
160         ROLQ $28, rBa;         \
161         XORQ rBa, rT1;         \
162         MOVQ rT1, _ga(oState); \
163         G_RT1_RCA;             \
164                                \
165         XORQ rDe, rBo;         \
166         ROLQ $45, rBo;         \
167         MOVQ rBi, rT1;         \
168         ANDQ rBo, rT1;         \
169         XORQ rBe, rT1;         \
170         MOVQ rT1, _ge(oState); \
171         G_RT1_RCE;             \
172                                \
173         XORQ rDi, rBu;         \
174         ROLQ $61, rBu;         \
175         MOVQ rBu, rT1;         \
176         ORQ  rBa, rT1;         \
177         XORQ rBo, rT1;         \
178         MOVQ rT1, _go(oState); \
179                                \
180         ANDQ rBe, rBa;         \
181         XORQ rBu, rBa;         \
182         MOVQ rBa, _gu(oState); \
183         NOTQ rBu;              \
184         G_RBA_RCU;             \
185                                \
186         ORQ  rBu, rBo;         \
187         XORQ rBi, rBo;         \
188         MOVQ rBo, _gi(oState); \
189                                \
190         /* Result k */         \
191         MOVQ _be(iState), rBa; \
192         MOVQ _gi(iState), rBe; \
193         MOVQ _ko(iState), rBi; \
194         MOVQ _mu(iState), rBo; \
195         MOVQ _sa(iState), rBu; \
196         XORQ rDi, rBe;         \
197         ROLQ $6, rBe;          \
198         XORQ rDo, rBi;         \
199         ROLQ $25, rBi;         \
200         MOVQ rBe, rT1;         \
201         ORQ  rBi, rT1;         \
202         XORQ rDe, rBa;         \
203         ROLQ $1, rBa;          \
204         XORQ rBa, rT1;         \
205         MOVQ rT1, _ka(oState); \
206         K_RT1_RCA;             \
207                                \
208         XORQ rDu, rBo;         \
209         ROLQ $8, rBo;          \
210         MOVQ rBi, rT1;         \
211         ANDQ rBo, rT1;         \
212         XORQ rBe, rT1;         \
213         MOVQ rT1, _ke(oState); \
214         K_RT1_RCE;             \
215                                \
216         XORQ rDa, rBu;         \
217         ROLQ $18, rBu;         \
218         NOTQ rBo;              \
219         MOVQ rBo, rT1;         \
220         ANDQ rBu, rT1;         \
221         XORQ rBi, rT1;         \
222         MOVQ rT1, _ki(oState); \
223                                \
224         MOVQ rBu, rT1;         \
225         ORQ  rBa, rT1;         \
226         XORQ rBo, rT1;         \
227         MOVQ rT1, _ko(oState); \
228                                \
229         ANDQ rBe, rBa;         \
230         XORQ rBu, rBa;         \
231         MOVQ rBa, _ku(oState); \
232         K_RBA_RCU;             \
233                                \
234         /* Result m */         \
235         MOVQ _ga(iState), rBe; \
236         XORQ rDa, rBe;         \
237         MOVQ _ke(iState), rBi; \
238         ROLQ $36, rBe;         \
239         XORQ rDe, rBi;         \
240         MOVQ _bu(iState), rBa; \
241         ROLQ $10, rBi;         \
242         MOVQ rBe, rT1;         \
243         MOVQ _mi(iState), rBo; \
244         ANDQ rBi, rT1;         \
245         XORQ rDu, rBa;         \
246         MOVQ _so(iState), rBu; \
247         ROLQ $27, rBa;         \
248         XORQ rBa, rT1;         \
249         MOVQ rT1, _ma(oState); \
250         M_RT1_RCA;             \
251                                \
252         XORQ rDi, rBo;         \
253         ROLQ $15, rBo;         \
254         MOVQ rBi, rT1;         \
255         ORQ  rBo, rT1;         \
256         XORQ rBe, rT1;         \
257         MOVQ rT1, _me(oState); \
258         M_RT1_RCE;             \
259                                \
260         XORQ rDo, rBu;         \
261         ROLQ $56, rBu;         \
262         NOTQ rBo;              \
263         MOVQ rBo, rT1;         \
264         ORQ  rBu, rT1;         \
265         XORQ rBi, rT1;         \
266         MOVQ rT1, _mi(oState); \
267                                \
268         ORQ  rBa, rBe;         \
269         XORQ rBu, rBe;         \
270         MOVQ rBe, _mu(oState); \
271                                \
272         ANDQ rBa, rBu;         \
273         XORQ rBo, rBu;         \
274         MOVQ rBu, _mo(oState); \
275         M_RBE_RCU;             \
276                                \
277         /* Result s */         \
278         MOVQ _bi(iState), rBa; \
279         MOVQ _go(iState), rBe; \
280         MOVQ _ku(iState), rBi; \
281         XORQ rDi, rBa;         \
282         MOVQ _ma(iState), rBo; \
283         ROLQ $62, rBa;         \
284         XORQ rDo, rBe;         \
285         MOVQ _se(iState), rBu; \
286         ROLQ $55, rBe;         \
287                                \
288         XORQ rDu, rBi;         \
289         MOVQ rBa, rDu;         \
290         XORQ rDe, rBu;         \
291         ROLQ $2, rBu;          \
292         ANDQ rBe, rDu;         \
293         XORQ rBu, rDu;         \
294         MOVQ rDu, _su(oState); \
295                                \
296         ROLQ $39, rBi;         \
297         S_RDU_RCU;             \
298         NOTQ rBe;              \
299         XORQ rDa, rBo;         \
300         MOVQ rBe, rDa;         \
301         ANDQ rBi, rDa;         \
302         XORQ rBa, rDa;         \
303         MOVQ rDa, _sa(oState); \
304         S_RDA_RCA;             \
305                                \
306         ROLQ $41, rBo;         \
307         MOVQ rBi, rDe;         \
308         ORQ  rBo, rDe;         \
309         XORQ rBe, rDe;         \
310         MOVQ rDe, _se(oState); \
311         S_RDE_RCE;             \
312                                \
313         MOVQ rBo, rDi;         \
314         MOVQ rBu, rDo;         \
315         ANDQ rBu, rDi;         \
316         ORQ  rBa, rDo;         \
317         XORQ rBi, rDi;         \
318         XORQ rBo, rDo;         \
319         MOVQ rDi, _si(oState); \
320         MOVQ rDo, _so(oState)  \
321
322 // func keccakF1600(state *[25]uint64)
323 TEXT ·keccakF1600(SB), 0, $200-8
324         MOVQ state+0(FP), rpState
325
326         // Convert the user state into an internal state
327         NOTQ _be(rpState)
328         NOTQ _bi(rpState)
329         NOTQ _go(rpState)
330         NOTQ _ki(rpState)
331         NOTQ _mi(rpState)
332         NOTQ _sa(rpState)
333
334         // Execute the KeccakF permutation
335         MOVQ _ba(rpState), rCa
336         MOVQ _be(rpState), rCe
337         MOVQ _bu(rpState), rCu
338
339         XORQ _ga(rpState), rCa
340         XORQ _ge(rpState), rCe
341         XORQ _gu(rpState), rCu
342
343         XORQ _ka(rpState), rCa
344         XORQ _ke(rpState), rCe
345         XORQ _ku(rpState), rCu
346
347         XORQ _ma(rpState), rCa
348         XORQ _me(rpState), rCe
349         XORQ _mu(rpState), rCu
350
351         XORQ _sa(rpState), rCa
352         XORQ _se(rpState), rCe
353         MOVQ _si(rpState), rDi
354         MOVQ _so(rpState), rDo
355         XORQ _su(rpState), rCu
356
357         mKeccakRound(rpState, rpStack, $0x0000000000000001, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE)
358         mKeccakRound(rpStack, rpState, $0x0000000000008082, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE)
359         mKeccakRound(rpState, rpStack, $0x800000000000808a, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE)
360         mKeccakRound(rpStack, rpState, $0x8000000080008000, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE)
361         mKeccakRound(rpState, rpStack, $0x000000000000808b, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE)
362         mKeccakRound(rpStack, rpState, $0x0000000080000001, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE)
363         mKeccakRound(rpState, rpStack, $0x8000000080008081, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE)
364         mKeccakRound(rpStack, rpState, $0x8000000000008009, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE)
365         mKeccakRound(rpState, rpStack, $0x000000000000008a, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE)
366         mKeccakRound(rpStack, rpState, $0x0000000000000088, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE)
367         mKeccakRound(rpState, rpStack, $0x0000000080008009, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE)
368         mKeccakRound(rpStack, rpState, $0x000000008000000a, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE)
369         mKeccakRound(rpState, rpStack, $0x000000008000808b, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE)
370         mKeccakRound(rpStack, rpState, $0x800000000000008b, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE)
371         mKeccakRound(rpState, rpStack, $0x8000000000008089, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE)
372         mKeccakRound(rpStack, rpState, $0x8000000000008003, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE)
373         mKeccakRound(rpState, rpStack, $0x8000000000008002, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE)
374         mKeccakRound(rpStack, rpState, $0x8000000000000080, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE)
375         mKeccakRound(rpState, rpStack, $0x000000000000800a, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE)
376         mKeccakRound(rpStack, rpState, $0x800000008000000a, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE)
377         mKeccakRound(rpState, rpStack, $0x8000000080008081, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE)
378         mKeccakRound(rpStack, rpState, $0x8000000000008080, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE)
379         mKeccakRound(rpState, rpStack, $0x0000000080000001, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE)
380         mKeccakRound(rpStack, rpState, $0x8000000080008008, NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP)
381
382         // Revert the internal state to the user state
383         NOTQ _be(rpState)
384         NOTQ _bi(rpState)
385         NOTQ _go(rpState)
386         NOTQ _ki(rpState)
387         NOTQ _mi(rpState)
388         NOTQ _sa(rpState)
389
390         RET