gtsocial-umbx

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

keccakf_amd64.s (14537B)


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