1 export function $chacha20_rounds_qbe(l %out, l %in) {
39 %rotl32_a =w shl %t12, 16
40 %rotl32_b =w shr %t12, 16
41 %t12 =w xor %rotl32_a, %rotl32_b
44 %rotl32_a =w shl %t4, 12
45 %rotl32_b =w shr %t4, 20
46 %t4 =w xor %rotl32_a, %rotl32_b
49 %rotl32_a =w shl %t12, 8
50 %rotl32_b =w shr %t12, 24
51 %t12 =w xor %rotl32_a, %rotl32_b
54 %rotl32_a =w shl %t4, 7
55 %rotl32_b =w shr %t4, 25
56 %t4 =w xor %rotl32_a, %rotl32_b
59 %rotl32_a =w shl %t13, 16
60 %rotl32_b =w shr %t13, 16
61 %t13 =w xor %rotl32_a, %rotl32_b
64 %rotl32_a =w shl %t5, 12
65 %rotl32_b =w shr %t5, 20
66 %t5 =w xor %rotl32_a, %rotl32_b
69 %rotl32_a =w shl %t13, 8
70 %rotl32_b =w shr %t13, 24
71 %t13 =w xor %rotl32_a, %rotl32_b
74 %rotl32_a =w shl %t5, 7
75 %rotl32_b =w shr %t5, 25
76 %t5 =w xor %rotl32_a, %rotl32_b
79 %rotl32_a =w shl %t14, 16
80 %rotl32_b =w shr %t14, 16
81 %t14 =w xor %rotl32_a, %rotl32_b
82 %t10 =w add %t10, %t14
84 %rotl32_a =w shl %t6, 12
85 %rotl32_b =w shr %t6, 20
86 %t6 =w xor %rotl32_a, %rotl32_b
89 %rotl32_a =w shl %t14, 8
90 %rotl32_b =w shr %t14, 24
91 %t14 =w xor %rotl32_a, %rotl32_b
92 %t10 =w add %t10, %t14
94 %rotl32_a =w shl %t6, 7
95 %rotl32_b =w shr %t6, 25
96 %t6 =w xor %rotl32_a, %rotl32_b
99 %rotl32_a =w shl %t15, 16
100 %rotl32_b =w shr %t15, 16
101 %t15 =w xor %rotl32_a, %rotl32_b
102 %t11 =w add %t11, %t15
104 %rotl32_a =w shl %t7, 12
105 %rotl32_b =w shr %t7, 20
106 %t7 =w xor %rotl32_a, %rotl32_b
108 %t15 =w xor %t15, %t3
109 %rotl32_a =w shl %t15, 8
110 %rotl32_b =w shr %t15, 24
111 %t15 =w xor %rotl32_a, %rotl32_b
112 %t11 =w add %t11, %t15
114 %rotl32_a =w shl %t7, 7
115 %rotl32_b =w shr %t7, 25
116 %t7 =w xor %rotl32_a, %rotl32_b
118 %t15 =w xor %t15, %t0
119 %rotl32_a =w shl %t15, 16
120 %rotl32_b =w shr %t15, 16
121 %t15 =w xor %rotl32_a, %rotl32_b
122 %t10 =w add %t10, %t15
124 %rotl32_a =w shl %t5, 12
125 %rotl32_b =w shr %t5, 20
126 %t5 =w xor %rotl32_a, %rotl32_b
128 %t15 =w xor %t15, %t0
129 %rotl32_a =w shl %t15, 8
130 %rotl32_b =w shr %t15, 24
131 %t15 =w xor %rotl32_a, %rotl32_b
132 %t10 =w add %t10, %t15
134 %rotl32_a =w shl %t5, 7
135 %rotl32_b =w shr %t5, 25
136 %t5 =w xor %rotl32_a, %rotl32_b
138 %t12 =w xor %t12, %t1
139 %rotl32_a =w shl %t12, 16
140 %rotl32_b =w shr %t12, 16
141 %t12 =w xor %rotl32_a, %rotl32_b
142 %t11 =w add %t11, %t12
144 %rotl32_a =w shl %t6, 12
145 %rotl32_b =w shr %t6, 20
146 %t6 =w xor %rotl32_a, %rotl32_b
148 %t12 =w xor %t12, %t1
149 %rotl32_a =w shl %t12, 8
150 %rotl32_b =w shr %t12, 24
151 %t12 =w xor %rotl32_a, %rotl32_b
152 %t11 =w add %t11, %t12
154 %rotl32_a =w shl %t6, 7
155 %rotl32_b =w shr %t6, 25
156 %t6 =w xor %rotl32_a, %rotl32_b
158 %t13 =w xor %t13, %t2
159 %rotl32_a =w shl %t13, 16
160 %rotl32_b =w shr %t13, 16
161 %t13 =w xor %rotl32_a, %rotl32_b
164 %rotl32_a =w shl %t7, 12
165 %rotl32_b =w shr %t7, 20
166 %t7 =w xor %rotl32_a, %rotl32_b
168 %t13 =w xor %t13, %t2
169 %rotl32_a =w shl %t13, 8
170 %rotl32_b =w shr %t13, 24
171 %t13 =w xor %rotl32_a, %rotl32_b
174 %rotl32_a =w shl %t7, 7
175 %rotl32_b =w shr %t7, 25
176 %t7 =w xor %rotl32_a, %rotl32_b
178 %t14 =w xor %t14, %t3
179 %rotl32_a =w shl %t14, 16
180 %rotl32_b =w shr %t14, 16
181 %t14 =w xor %rotl32_a, %rotl32_b
184 %rotl32_a =w shl %t4, 12
185 %rotl32_b =w shr %t4, 20
186 %t4 =w xor %rotl32_a, %rotl32_b
188 %t14 =w xor %t14, %t3
189 %rotl32_a =w shl %t14, 8
190 %rotl32_b =w shr %t14, 24
191 %t14 =w xor %rotl32_a, %rotl32_b
194 %rotl32_a =w shl %t4, 7
195 %rotl32_b =w shr %t4, 25
196 %t4 =w xor %rotl32_a, %rotl32_b
197 %counter =w sub %counter, 10
198 jnz %counter, @loop, @done