1#include <machine/asm.h>
2.text
3.globl    Camellia_EncryptBlock_Rounds
4.type     Camellia_EncryptBlock_Rounds,@function
5.align    16
6Camellia_EncryptBlock_Rounds:
7.L_Camellia_EncryptBlock_Rounds_begin:
8          #ifdef __CET__
9
10.byte     243,15,30,251
11          #endif
12
13          pushl     %ebp
14          pushl     %ebx
15          pushl     %esi
16          pushl     %edi
17          movl      20(%esp),%eax
18          movl      24(%esp),%esi
19          movl      28(%esp),%edi
20          movl      %esp,%ebx
21          subl      $28,%esp
22          andl      $-64,%esp
23          leal      -127(%edi),%ecx
24          subl      %esp,%ecx
25          negl      %ecx
26          andl      $960,%ecx
27          subl      %ecx,%esp
28          addl      $4,%esp
29          shll      $6,%eax
30          leal      (%edi,%eax,1),%eax
31          movl      %ebx,20(%esp)
32          movl      %eax,16(%esp)
33          call      .L000pic_point
34.L000pic_point:
35          popl      %ebp
36          leal      .LCamellia_SBOX-.L000pic_point(%ebp),%ebp
37          movl      (%esi),%eax
38          movl      4(%esi),%ebx
39          movl      8(%esi),%ecx
40          bswap     %eax
41          movl      12(%esi),%edx
42          bswap     %ebx
43          bswap     %ecx
44          bswap     %edx
45          call      _x86_Camellia_encrypt
46          movl      20(%esp),%esp
47          bswap     %eax
48          movl      32(%esp),%esi
49          bswap     %ebx
50          bswap     %ecx
51          bswap     %edx
52          movl      %eax,(%esi)
53          movl      %ebx,4(%esi)
54          movl      %ecx,8(%esi)
55          movl      %edx,12(%esi)
56          popl      %edi
57          popl      %esi
58          popl      %ebx
59          popl      %ebp
60          ret
61.size     Camellia_EncryptBlock_Rounds,.-.L_Camellia_EncryptBlock_Rounds_begin
62.globl    Camellia_EncryptBlock
63.type     Camellia_EncryptBlock,@function
64.align    16
65Camellia_EncryptBlock:
66.L_Camellia_EncryptBlock_begin:
67          #ifdef __CET__
68
69.byte     243,15,30,251
70          #endif
71
72          movl      $128,%eax
73          subl      4(%esp),%eax
74          movl      $3,%eax
75          adcl      $0,%eax
76          movl      %eax,4(%esp)
77          jmp       .L_Camellia_EncryptBlock_Rounds_begin
78.size     Camellia_EncryptBlock,.-.L_Camellia_EncryptBlock_begin
79.globl    Camellia_encrypt
80.type     Camellia_encrypt,@function
81.align    16
82Camellia_encrypt:
83.L_Camellia_encrypt_begin:
84          #ifdef __CET__
85
86.byte     243,15,30,251
87          #endif
88
89          pushl     %ebp
90          pushl     %ebx
91          pushl     %esi
92          pushl     %edi
93          movl      20(%esp),%esi
94          movl      28(%esp),%edi
95          movl      %esp,%ebx
96          subl      $28,%esp
97          andl      $-64,%esp
98          movl      272(%edi),%eax
99          leal      -127(%edi),%ecx
100          subl      %esp,%ecx
101          negl      %ecx
102          andl      $960,%ecx
103          subl      %ecx,%esp
104          addl      $4,%esp
105          shll      $6,%eax
106          leal      (%edi,%eax,1),%eax
107          movl      %ebx,20(%esp)
108          movl      %eax,16(%esp)
109          call      .L001pic_point
110.L001pic_point:
111          popl      %ebp
112          leal      .LCamellia_SBOX-.L001pic_point(%ebp),%ebp
113          movl      (%esi),%eax
114          movl      4(%esi),%ebx
115          movl      8(%esi),%ecx
116          bswap     %eax
117          movl      12(%esi),%edx
118          bswap     %ebx
119          bswap     %ecx
120          bswap     %edx
121          call      _x86_Camellia_encrypt
122          movl      20(%esp),%esp
123          bswap     %eax
124          movl      24(%esp),%esi
125          bswap     %ebx
126          bswap     %ecx
127          bswap     %edx
128          movl      %eax,(%esi)
129          movl      %ebx,4(%esi)
130          movl      %ecx,8(%esi)
131          movl      %edx,12(%esi)
132          popl      %edi
133          popl      %esi
134          popl      %ebx
135          popl      %ebp
136          ret
137.size     Camellia_encrypt,.-.L_Camellia_encrypt_begin
138.type     _x86_Camellia_encrypt,@function
139.align    16
140_x86_Camellia_encrypt:
141          #ifdef __CET__
142
143.byte     243,15,30,251
144          #endif
145
146          xorl      (%edi),%eax
147          xorl      4(%edi),%ebx
148          xorl      8(%edi),%ecx
149          xorl      12(%edi),%edx
150          movl      16(%edi),%esi
151          movl      %eax,4(%esp)
152          movl      %ebx,8(%esp)
153          movl      %ecx,12(%esp)
154          movl      %edx,16(%esp)
155.align    16
156.L002loop:
157          xorl      %esi,%eax
158          xorl      20(%edi),%ebx
159          movzbl    %ah,%esi
160          movl      2052(%ebp,%esi,8),%edx
161          movzbl    %al,%esi
162          xorl      4(%ebp,%esi,8),%edx
163          shrl      $16,%eax
164          movzbl    %bl,%esi
165          movl      (%ebp,%esi,8),%ecx
166          movzbl    %ah,%esi
167          xorl      (%ebp,%esi,8),%edx
168          movzbl    %bh,%esi
169          xorl      4(%ebp,%esi,8),%ecx
170          shrl      $16,%ebx
171          movzbl    %al,%eax
172          xorl      2048(%ebp,%eax,8),%edx
173          movzbl    %bh,%esi
174          movl      16(%esp),%eax
175          xorl      %edx,%ecx
176          rorl      $8,%edx
177          xorl      2048(%ebp,%esi,8),%ecx
178          movzbl    %bl,%esi
179          movl      12(%esp),%ebx
180          xorl      %eax,%edx
181          xorl      2052(%ebp,%esi,8),%ecx
182          movl      24(%edi),%esi
183          xorl      %ecx,%edx
184          movl      %edx,16(%esp)
185          xorl      %ebx,%ecx
186          movl      %ecx,12(%esp)
187          xorl      %esi,%ecx
188          xorl      28(%edi),%edx
189          movzbl    %ch,%esi
190          movl      2052(%ebp,%esi,8),%ebx
191          movzbl    %cl,%esi
192          xorl      4(%ebp,%esi,8),%ebx
193          shrl      $16,%ecx
194          movzbl    %dl,%esi
195          movl      (%ebp,%esi,8),%eax
196          movzbl    %ch,%esi
197          xorl      (%ebp,%esi,8),%ebx
198          movzbl    %dh,%esi
199          xorl      4(%ebp,%esi,8),%eax
200          shrl      $16,%edx
201          movzbl    %cl,%ecx
202          xorl      2048(%ebp,%ecx,8),%ebx
203          movzbl    %dh,%esi
204          movl      8(%esp),%ecx
205          xorl      %ebx,%eax
206          rorl      $8,%ebx
207          xorl      2048(%ebp,%esi,8),%eax
208          movzbl    %dl,%esi
209          movl      4(%esp),%edx
210          xorl      %ecx,%ebx
211          xorl      2052(%ebp,%esi,8),%eax
212          movl      32(%edi),%esi
213          xorl      %eax,%ebx
214          movl      %ebx,8(%esp)
215          xorl      %edx,%eax
216          movl      %eax,4(%esp)
217          xorl      %esi,%eax
218          xorl      36(%edi),%ebx
219          movzbl    %ah,%esi
220          movl      2052(%ebp,%esi,8),%edx
221          movzbl    %al,%esi
222          xorl      4(%ebp,%esi,8),%edx
223          shrl      $16,%eax
224          movzbl    %bl,%esi
225          movl      (%ebp,%esi,8),%ecx
226          movzbl    %ah,%esi
227          xorl      (%ebp,%esi,8),%edx
228          movzbl    %bh,%esi
229          xorl      4(%ebp,%esi,8),%ecx
230          shrl      $16,%ebx
231          movzbl    %al,%eax
232          xorl      2048(%ebp,%eax,8),%edx
233          movzbl    %bh,%esi
234          movl      16(%esp),%eax
235          xorl      %edx,%ecx
236          rorl      $8,%edx
237          xorl      2048(%ebp,%esi,8),%ecx
238          movzbl    %bl,%esi
239          movl      12(%esp),%ebx
240          xorl      %eax,%edx
241          xorl      2052(%ebp,%esi,8),%ecx
242          movl      40(%edi),%esi
243          xorl      %ecx,%edx
244          movl      %edx,16(%esp)
245          xorl      %ebx,%ecx
246          movl      %ecx,12(%esp)
247          xorl      %esi,%ecx
248          xorl      44(%edi),%edx
249          movzbl    %ch,%esi
250          movl      2052(%ebp,%esi,8),%ebx
251          movzbl    %cl,%esi
252          xorl      4(%ebp,%esi,8),%ebx
253          shrl      $16,%ecx
254          movzbl    %dl,%esi
255          movl      (%ebp,%esi,8),%eax
256          movzbl    %ch,%esi
257          xorl      (%ebp,%esi,8),%ebx
258          movzbl    %dh,%esi
259          xorl      4(%ebp,%esi,8),%eax
260          shrl      $16,%edx
261          movzbl    %cl,%ecx
262          xorl      2048(%ebp,%ecx,8),%ebx
263          movzbl    %dh,%esi
264          movl      8(%esp),%ecx
265          xorl      %ebx,%eax
266          rorl      $8,%ebx
267          xorl      2048(%ebp,%esi,8),%eax
268          movzbl    %dl,%esi
269          movl      4(%esp),%edx
270          xorl      %ecx,%ebx
271          xorl      2052(%ebp,%esi,8),%eax
272          movl      48(%edi),%esi
273          xorl      %eax,%ebx
274          movl      %ebx,8(%esp)
275          xorl      %edx,%eax
276          movl      %eax,4(%esp)
277          xorl      %esi,%eax
278          xorl      52(%edi),%ebx
279          movzbl    %ah,%esi
280          movl      2052(%ebp,%esi,8),%edx
281          movzbl    %al,%esi
282          xorl      4(%ebp,%esi,8),%edx
283          shrl      $16,%eax
284          movzbl    %bl,%esi
285          movl      (%ebp,%esi,8),%ecx
286          movzbl    %ah,%esi
287          xorl      (%ebp,%esi,8),%edx
288          movzbl    %bh,%esi
289          xorl      4(%ebp,%esi,8),%ecx
290          shrl      $16,%ebx
291          movzbl    %al,%eax
292          xorl      2048(%ebp,%eax,8),%edx
293          movzbl    %bh,%esi
294          movl      16(%esp),%eax
295          xorl      %edx,%ecx
296          rorl      $8,%edx
297          xorl      2048(%ebp,%esi,8),%ecx
298          movzbl    %bl,%esi
299          movl      12(%esp),%ebx
300          xorl      %eax,%edx
301          xorl      2052(%ebp,%esi,8),%ecx
302          movl      56(%edi),%esi
303          xorl      %ecx,%edx
304          movl      %edx,16(%esp)
305          xorl      %ebx,%ecx
306          movl      %ecx,12(%esp)
307          xorl      %esi,%ecx
308          xorl      60(%edi),%edx
309          movzbl    %ch,%esi
310          movl      2052(%ebp,%esi,8),%ebx
311          movzbl    %cl,%esi
312          xorl      4(%ebp,%esi,8),%ebx
313          shrl      $16,%ecx
314          movzbl    %dl,%esi
315          movl      (%ebp,%esi,8),%eax
316          movzbl    %ch,%esi
317          xorl      (%ebp,%esi,8),%ebx
318          movzbl    %dh,%esi
319          xorl      4(%ebp,%esi,8),%eax
320          shrl      $16,%edx
321          movzbl    %cl,%ecx
322          xorl      2048(%ebp,%ecx,8),%ebx
323          movzbl    %dh,%esi
324          movl      8(%esp),%ecx
325          xorl      %ebx,%eax
326          rorl      $8,%ebx
327          xorl      2048(%ebp,%esi,8),%eax
328          movzbl    %dl,%esi
329          movl      4(%esp),%edx
330          xorl      %ecx,%ebx
331          xorl      2052(%ebp,%esi,8),%eax
332          movl      64(%edi),%esi
333          xorl      %eax,%ebx
334          movl      %ebx,8(%esp)
335          xorl      %edx,%eax
336          movl      %eax,4(%esp)
337          addl      $64,%edi
338          cmpl      20(%esp),%edi
339          je        .L003done
340          andl      %eax,%esi
341          movl      16(%esp),%edx
342          roll      $1,%esi
343          movl      %edx,%ecx
344          xorl      %esi,%ebx
345          orl       12(%edi),%ecx
346          movl      %ebx,8(%esp)
347          xorl      12(%esp),%ecx
348          movl      4(%edi),%esi
349          movl      %ecx,12(%esp)
350          orl       %ebx,%esi
351          andl      8(%edi),%ecx
352          xorl      %esi,%eax
353          roll      $1,%ecx
354          movl      %eax,4(%esp)
355          xorl      %ecx,%edx
356          movl      16(%edi),%esi
357          movl      %edx,16(%esp)
358          jmp       .L002loop
359.align    8
360.L003done:
361          movl      %eax,%ecx
362          movl      %ebx,%edx
363          movl      12(%esp),%eax
364          movl      16(%esp),%ebx
365          xorl      %esi,%eax
366          xorl      4(%edi),%ebx
367          xorl      8(%edi),%ecx
368          xorl      12(%edi),%edx
369          ret
370.size     _x86_Camellia_encrypt,.-_x86_Camellia_encrypt
371.globl    Camellia_DecryptBlock_Rounds
372.type     Camellia_DecryptBlock_Rounds,@function
373.align    16
374Camellia_DecryptBlock_Rounds:
375.L_Camellia_DecryptBlock_Rounds_begin:
376          #ifdef __CET__
377
378.byte     243,15,30,251
379          #endif
380
381          pushl     %ebp
382          pushl     %ebx
383          pushl     %esi
384          pushl     %edi
385          movl      20(%esp),%eax
386          movl      24(%esp),%esi
387          movl      28(%esp),%edi
388          movl      %esp,%ebx
389          subl      $28,%esp
390          andl      $-64,%esp
391          leal      -127(%edi),%ecx
392          subl      %esp,%ecx
393          negl      %ecx
394          andl      $960,%ecx
395          subl      %ecx,%esp
396          addl      $4,%esp
397          shll      $6,%eax
398          movl      %edi,16(%esp)
399          leal      (%edi,%eax,1),%edi
400          movl      %ebx,20(%esp)
401          call      .L004pic_point
402.L004pic_point:
403          popl      %ebp
404          leal      .LCamellia_SBOX-.L004pic_point(%ebp),%ebp
405          movl      (%esi),%eax
406          movl      4(%esi),%ebx
407          movl      8(%esi),%ecx
408          bswap     %eax
409          movl      12(%esi),%edx
410          bswap     %ebx
411          bswap     %ecx
412          bswap     %edx
413          call      _x86_Camellia_decrypt
414          movl      20(%esp),%esp
415          bswap     %eax
416          movl      32(%esp),%esi
417          bswap     %ebx
418          bswap     %ecx
419          bswap     %edx
420          movl      %eax,(%esi)
421          movl      %ebx,4(%esi)
422          movl      %ecx,8(%esi)
423          movl      %edx,12(%esi)
424          popl      %edi
425          popl      %esi
426          popl      %ebx
427          popl      %ebp
428          ret
429.size     Camellia_DecryptBlock_Rounds,.-.L_Camellia_DecryptBlock_Rounds_begin
430.globl    Camellia_DecryptBlock
431.type     Camellia_DecryptBlock,@function
432.align    16
433Camellia_DecryptBlock:
434.L_Camellia_DecryptBlock_begin:
435          #ifdef __CET__
436
437.byte     243,15,30,251
438          #endif
439
440          movl      $128,%eax
441          subl      4(%esp),%eax
442          movl      $3,%eax
443          adcl      $0,%eax
444          movl      %eax,4(%esp)
445          jmp       .L_Camellia_DecryptBlock_Rounds_begin
446.size     Camellia_DecryptBlock,.-.L_Camellia_DecryptBlock_begin
447.globl    Camellia_decrypt
448.type     Camellia_decrypt,@function
449.align    16
450Camellia_decrypt:
451.L_Camellia_decrypt_begin:
452          #ifdef __CET__
453
454.byte     243,15,30,251
455          #endif
456
457          pushl     %ebp
458          pushl     %ebx
459          pushl     %esi
460          pushl     %edi
461          movl      20(%esp),%esi
462          movl      28(%esp),%edi
463          movl      %esp,%ebx
464          subl      $28,%esp
465          andl      $-64,%esp
466          movl      272(%edi),%eax
467          leal      -127(%edi),%ecx
468          subl      %esp,%ecx
469          negl      %ecx
470          andl      $960,%ecx
471          subl      %ecx,%esp
472          addl      $4,%esp
473          shll      $6,%eax
474          movl      %edi,16(%esp)
475          leal      (%edi,%eax,1),%edi
476          movl      %ebx,20(%esp)
477          call      .L005pic_point
478.L005pic_point:
479          popl      %ebp
480          leal      .LCamellia_SBOX-.L005pic_point(%ebp),%ebp
481          movl      (%esi),%eax
482          movl      4(%esi),%ebx
483          movl      8(%esi),%ecx
484          bswap     %eax
485          movl      12(%esi),%edx
486          bswap     %ebx
487          bswap     %ecx
488          bswap     %edx
489          call      _x86_Camellia_decrypt
490          movl      20(%esp),%esp
491          bswap     %eax
492          movl      24(%esp),%esi
493          bswap     %ebx
494          bswap     %ecx
495          bswap     %edx
496          movl      %eax,(%esi)
497          movl      %ebx,4(%esi)
498          movl      %ecx,8(%esi)
499          movl      %edx,12(%esi)
500          popl      %edi
501          popl      %esi
502          popl      %ebx
503          popl      %ebp
504          ret
505.size     Camellia_decrypt,.-.L_Camellia_decrypt_begin
506.type     _x86_Camellia_decrypt,@function
507.align    16
508_x86_Camellia_decrypt:
509          #ifdef __CET__
510
511.byte     243,15,30,251
512          #endif
513
514          xorl      (%edi),%eax
515          xorl      4(%edi),%ebx
516          xorl      8(%edi),%ecx
517          xorl      12(%edi),%edx
518          movl      -8(%edi),%esi
519          movl      %eax,4(%esp)
520          movl      %ebx,8(%esp)
521          movl      %ecx,12(%esp)
522          movl      %edx,16(%esp)
523.align    16
524.L006loop:
525          xorl      %esi,%eax
526          xorl      -4(%edi),%ebx
527          movzbl    %ah,%esi
528          movl      2052(%ebp,%esi,8),%edx
529          movzbl    %al,%esi
530          xorl      4(%ebp,%esi,8),%edx
531          shrl      $16,%eax
532          movzbl    %bl,%esi
533          movl      (%ebp,%esi,8),%ecx
534          movzbl    %ah,%esi
535          xorl      (%ebp,%esi,8),%edx
536          movzbl    %bh,%esi
537          xorl      4(%ebp,%esi,8),%ecx
538          shrl      $16,%ebx
539          movzbl    %al,%eax
540          xorl      2048(%ebp,%eax,8),%edx
541          movzbl    %bh,%esi
542          movl      16(%esp),%eax
543          xorl      %edx,%ecx
544          rorl      $8,%edx
545          xorl      2048(%ebp,%esi,8),%ecx
546          movzbl    %bl,%esi
547          movl      12(%esp),%ebx
548          xorl      %eax,%edx
549          xorl      2052(%ebp,%esi,8),%ecx
550          movl      -16(%edi),%esi
551          xorl      %ecx,%edx
552          movl      %edx,16(%esp)
553          xorl      %ebx,%ecx
554          movl      %ecx,12(%esp)
555          xorl      %esi,%ecx
556          xorl      -12(%edi),%edx
557          movzbl    %ch,%esi
558          movl      2052(%ebp,%esi,8),%ebx
559          movzbl    %cl,%esi
560          xorl      4(%ebp,%esi,8),%ebx
561          shrl      $16,%ecx
562          movzbl    %dl,%esi
563          movl      (%ebp,%esi,8),%eax
564          movzbl    %ch,%esi
565          xorl      (%ebp,%esi,8),%ebx
566          movzbl    %dh,%esi
567          xorl      4(%ebp,%esi,8),%eax
568          shrl      $16,%edx
569          movzbl    %cl,%ecx
570          xorl      2048(%ebp,%ecx,8),%ebx
571          movzbl    %dh,%esi
572          movl      8(%esp),%ecx
573          xorl      %ebx,%eax
574          rorl      $8,%ebx
575          xorl      2048(%ebp,%esi,8),%eax
576          movzbl    %dl,%esi
577          movl      4(%esp),%edx
578          xorl      %ecx,%ebx
579          xorl      2052(%ebp,%esi,8),%eax
580          movl      -24(%edi),%esi
581          xorl      %eax,%ebx
582          movl      %ebx,8(%esp)
583          xorl      %edx,%eax
584          movl      %eax,4(%esp)
585          xorl      %esi,%eax
586          xorl      -20(%edi),%ebx
587          movzbl    %ah,%esi
588          movl      2052(%ebp,%esi,8),%edx
589          movzbl    %al,%esi
590          xorl      4(%ebp,%esi,8),%edx
591          shrl      $16,%eax
592          movzbl    %bl,%esi
593          movl      (%ebp,%esi,8),%ecx
594          movzbl    %ah,%esi
595          xorl      (%ebp,%esi,8),%edx
596          movzbl    %bh,%esi
597          xorl      4(%ebp,%esi,8),%ecx
598          shrl      $16,%ebx
599          movzbl    %al,%eax
600          xorl      2048(%ebp,%eax,8),%edx
601          movzbl    %bh,%esi
602          movl      16(%esp),%eax
603          xorl      %edx,%ecx
604          rorl      $8,%edx
605          xorl      2048(%ebp,%esi,8),%ecx
606          movzbl    %bl,%esi
607          movl      12(%esp),%ebx
608          xorl      %eax,%edx
609          xorl      2052(%ebp,%esi,8),%ecx
610          movl      -32(%edi),%esi
611          xorl      %ecx,%edx
612          movl      %edx,16(%esp)
613          xorl      %ebx,%ecx
614          movl      %ecx,12(%esp)
615          xorl      %esi,%ecx
616          xorl      -28(%edi),%edx
617          movzbl    %ch,%esi
618          movl      2052(%ebp,%esi,8),%ebx
619          movzbl    %cl,%esi
620          xorl      4(%ebp,%esi,8),%ebx
621          shrl      $16,%ecx
622          movzbl    %dl,%esi
623          movl      (%ebp,%esi,8),%eax
624          movzbl    %ch,%esi
625          xorl      (%ebp,%esi,8),%ebx
626          movzbl    %dh,%esi
627          xorl      4(%ebp,%esi,8),%eax
628          shrl      $16,%edx
629          movzbl    %cl,%ecx
630          xorl      2048(%ebp,%ecx,8),%ebx
631          movzbl    %dh,%esi
632          movl      8(%esp),%ecx
633          xorl      %ebx,%eax
634          rorl      $8,%ebx
635          xorl      2048(%ebp,%esi,8),%eax
636          movzbl    %dl,%esi
637          movl      4(%esp),%edx
638          xorl      %ecx,%ebx
639          xorl      2052(%ebp,%esi,8),%eax
640          movl      -40(%edi),%esi
641          xorl      %eax,%ebx
642          movl      %ebx,8(%esp)
643          xorl      %edx,%eax
644          movl      %eax,4(%esp)
645          xorl      %esi,%eax
646          xorl      -36(%edi),%ebx
647          movzbl    %ah,%esi
648          movl      2052(%ebp,%esi,8),%edx
649          movzbl    %al,%esi
650          xorl      4(%ebp,%esi,8),%edx
651          shrl      $16,%eax
652          movzbl    %bl,%esi
653          movl      (%ebp,%esi,8),%ecx
654          movzbl    %ah,%esi
655          xorl      (%ebp,%esi,8),%edx
656          movzbl    %bh,%esi
657          xorl      4(%ebp,%esi,8),%ecx
658          shrl      $16,%ebx
659          movzbl    %al,%eax
660          xorl      2048(%ebp,%eax,8),%edx
661          movzbl    %bh,%esi
662          movl      16(%esp),%eax
663          xorl      %edx,%ecx
664          rorl      $8,%edx
665          xorl      2048(%ebp,%esi,8),%ecx
666          movzbl    %bl,%esi
667          movl      12(%esp),%ebx
668          xorl      %eax,%edx
669          xorl      2052(%ebp,%esi,8),%ecx
670          movl      -48(%edi),%esi
671          xorl      %ecx,%edx
672          movl      %edx,16(%esp)
673          xorl      %ebx,%ecx
674          movl      %ecx,12(%esp)
675          xorl      %esi,%ecx
676          xorl      -44(%edi),%edx
677          movzbl    %ch,%esi
678          movl      2052(%ebp,%esi,8),%ebx
679          movzbl    %cl,%esi
680          xorl      4(%ebp,%esi,8),%ebx
681          shrl      $16,%ecx
682          movzbl    %dl,%esi
683          movl      (%ebp,%esi,8),%eax
684          movzbl    %ch,%esi
685          xorl      (%ebp,%esi,8),%ebx
686          movzbl    %dh,%esi
687          xorl      4(%ebp,%esi,8),%eax
688          shrl      $16,%edx
689          movzbl    %cl,%ecx
690          xorl      2048(%ebp,%ecx,8),%ebx
691          movzbl    %dh,%esi
692          movl      8(%esp),%ecx
693          xorl      %ebx,%eax
694          rorl      $8,%ebx
695          xorl      2048(%ebp,%esi,8),%eax
696          movzbl    %dl,%esi
697          movl      4(%esp),%edx
698          xorl      %ecx,%ebx
699          xorl      2052(%ebp,%esi,8),%eax
700          movl      -56(%edi),%esi
701          xorl      %eax,%ebx
702          movl      %ebx,8(%esp)
703          xorl      %edx,%eax
704          movl      %eax,4(%esp)
705          subl      $64,%edi
706          cmpl      20(%esp),%edi
707          je        .L007done
708          andl      %eax,%esi
709          movl      16(%esp),%edx
710          roll      $1,%esi
711          movl      %edx,%ecx
712          xorl      %esi,%ebx
713          orl       4(%edi),%ecx
714          movl      %ebx,8(%esp)
715          xorl      12(%esp),%ecx
716          movl      12(%edi),%esi
717          movl      %ecx,12(%esp)
718          orl       %ebx,%esi
719          andl      (%edi),%ecx
720          xorl      %esi,%eax
721          roll      $1,%ecx
722          movl      %eax,4(%esp)
723          xorl      %ecx,%edx
724          movl      -8(%edi),%esi
725          movl      %edx,16(%esp)
726          jmp       .L006loop
727.align    8
728.L007done:
729          movl      %eax,%ecx
730          movl      %ebx,%edx
731          movl      12(%esp),%eax
732          movl      16(%esp),%ebx
733          xorl      %esi,%ecx
734          xorl      12(%edi),%edx
735          xorl      (%edi),%eax
736          xorl      4(%edi),%ebx
737          ret
738.size     _x86_Camellia_decrypt,.-_x86_Camellia_decrypt
739.globl    Camellia_Ekeygen
740.type     Camellia_Ekeygen,@function
741.align    16
742Camellia_Ekeygen:
743.L_Camellia_Ekeygen_begin:
744          #ifdef __CET__
745
746.byte     243,15,30,251
747          #endif
748
749          pushl     %ebp
750          pushl     %ebx
751          pushl     %esi
752          pushl     %edi
753          subl      $16,%esp
754          movl      36(%esp),%ebp
755          movl      40(%esp),%esi
756          movl      44(%esp),%edi
757          movl      (%esi),%eax
758          movl      4(%esi),%ebx
759          movl      8(%esi),%ecx
760          movl      12(%esi),%edx
761          bswap     %eax
762          bswap     %ebx
763          bswap     %ecx
764          bswap     %edx
765          movl      %eax,(%edi)
766          movl      %ebx,4(%edi)
767          movl      %ecx,8(%edi)
768          movl      %edx,12(%edi)
769          cmpl      $128,%ebp
770          je        .L0081st128
771          movl      16(%esi),%eax
772          movl      20(%esi),%ebx
773          cmpl      $192,%ebp
774          je        .L0091st192
775          movl      24(%esi),%ecx
776          movl      28(%esi),%edx
777          jmp       .L0101st256
778.align    4
779.L0091st192:
780          movl      %eax,%ecx
781          movl      %ebx,%edx
782          notl      %ecx
783          notl      %edx
784.align    4
785.L0101st256:
786          bswap     %eax
787          bswap     %ebx
788          bswap     %ecx
789          bswap     %edx
790          movl      %eax,32(%edi)
791          movl      %ebx,36(%edi)
792          movl      %ecx,40(%edi)
793          movl      %edx,44(%edi)
794          xorl      (%edi),%eax
795          xorl      4(%edi),%ebx
796          xorl      8(%edi),%ecx
797          xorl      12(%edi),%edx
798.align    4
799.L0081st128:
800          call      .L011pic_point
801.L011pic_point:
802          popl      %ebp
803          leal      .LCamellia_SBOX-.L011pic_point(%ebp),%ebp
804          leal      .LCamellia_SIGMA-.LCamellia_SBOX(%ebp),%edi
805          movl      (%edi),%esi
806          movl      %eax,(%esp)
807          movl      %ebx,4(%esp)
808          movl      %ecx,8(%esp)
809          movl      %edx,12(%esp)
810          xorl      %esi,%eax
811          xorl      4(%edi),%ebx
812          movzbl    %ah,%esi
813          movl      2052(%ebp,%esi,8),%edx
814          movzbl    %al,%esi
815          xorl      4(%ebp,%esi,8),%edx
816          shrl      $16,%eax
817          movzbl    %bl,%esi
818          movl      (%ebp,%esi,8),%ecx
819          movzbl    %ah,%esi
820          xorl      (%ebp,%esi,8),%edx
821          movzbl    %bh,%esi
822          xorl      4(%ebp,%esi,8),%ecx
823          shrl      $16,%ebx
824          movzbl    %al,%eax
825          xorl      2048(%ebp,%eax,8),%edx
826          movzbl    %bh,%esi
827          movl      12(%esp),%eax
828          xorl      %edx,%ecx
829          rorl      $8,%edx
830          xorl      2048(%ebp,%esi,8),%ecx
831          movzbl    %bl,%esi
832          movl      8(%esp),%ebx
833          xorl      %eax,%edx
834          xorl      2052(%ebp,%esi,8),%ecx
835          movl      8(%edi),%esi
836          xorl      %ecx,%edx
837          movl      %edx,12(%esp)
838          xorl      %ebx,%ecx
839          movl      %ecx,8(%esp)
840          xorl      %esi,%ecx
841          xorl      12(%edi),%edx
842          movzbl    %ch,%esi
843          movl      2052(%ebp,%esi,8),%ebx
844          movzbl    %cl,%esi
845          xorl      4(%ebp,%esi,8),%ebx
846          shrl      $16,%ecx
847          movzbl    %dl,%esi
848          movl      (%ebp,%esi,8),%eax
849          movzbl    %ch,%esi
850          xorl      (%ebp,%esi,8),%ebx
851          movzbl    %dh,%esi
852          xorl      4(%ebp,%esi,8),%eax
853          shrl      $16,%edx
854          movzbl    %cl,%ecx
855          xorl      2048(%ebp,%ecx,8),%ebx
856          movzbl    %dh,%esi
857          movl      4(%esp),%ecx
858          xorl      %ebx,%eax
859          rorl      $8,%ebx
860          xorl      2048(%ebp,%esi,8),%eax
861          movzbl    %dl,%esi
862          movl      (%esp),%edx
863          xorl      %ecx,%ebx
864          xorl      2052(%ebp,%esi,8),%eax
865          movl      16(%edi),%esi
866          xorl      %eax,%ebx
867          movl      %ebx,4(%esp)
868          xorl      %edx,%eax
869          movl      %eax,(%esp)
870          movl      8(%esp),%ecx
871          movl      12(%esp),%edx
872          movl      44(%esp),%esi
873          xorl      (%esi),%eax
874          xorl      4(%esi),%ebx
875          xorl      8(%esi),%ecx
876          xorl      12(%esi),%edx
877          movl      16(%edi),%esi
878          movl      %eax,(%esp)
879          movl      %ebx,4(%esp)
880          movl      %ecx,8(%esp)
881          movl      %edx,12(%esp)
882          xorl      %esi,%eax
883          xorl      20(%edi),%ebx
884          movzbl    %ah,%esi
885          movl      2052(%ebp,%esi,8),%edx
886          movzbl    %al,%esi
887          xorl      4(%ebp,%esi,8),%edx
888          shrl      $16,%eax
889          movzbl    %bl,%esi
890          movl      (%ebp,%esi,8),%ecx
891          movzbl    %ah,%esi
892          xorl      (%ebp,%esi,8),%edx
893          movzbl    %bh,%esi
894          xorl      4(%ebp,%esi,8),%ecx
895          shrl      $16,%ebx
896          movzbl    %al,%eax
897          xorl      2048(%ebp,%eax,8),%edx
898          movzbl    %bh,%esi
899          movl      12(%esp),%eax
900          xorl      %edx,%ecx
901          rorl      $8,%edx
902          xorl      2048(%ebp,%esi,8),%ecx
903          movzbl    %bl,%esi
904          movl      8(%esp),%ebx
905          xorl      %eax,%edx
906          xorl      2052(%ebp,%esi,8),%ecx
907          movl      24(%edi),%esi
908          xorl      %ecx,%edx
909          movl      %edx,12(%esp)
910          xorl      %ebx,%ecx
911          movl      %ecx,8(%esp)
912          xorl      %esi,%ecx
913          xorl      28(%edi),%edx
914          movzbl    %ch,%esi
915          movl      2052(%ebp,%esi,8),%ebx
916          movzbl    %cl,%esi
917          xorl      4(%ebp,%esi,8),%ebx
918          shrl      $16,%ecx
919          movzbl    %dl,%esi
920          movl      (%ebp,%esi,8),%eax
921          movzbl    %ch,%esi
922          xorl      (%ebp,%esi,8),%ebx
923          movzbl    %dh,%esi
924          xorl      4(%ebp,%esi,8),%eax
925          shrl      $16,%edx
926          movzbl    %cl,%ecx
927          xorl      2048(%ebp,%ecx,8),%ebx
928          movzbl    %dh,%esi
929          movl      4(%esp),%ecx
930          xorl      %ebx,%eax
931          rorl      $8,%ebx
932          xorl      2048(%ebp,%esi,8),%eax
933          movzbl    %dl,%esi
934          movl      (%esp),%edx
935          xorl      %ecx,%ebx
936          xorl      2052(%ebp,%esi,8),%eax
937          movl      32(%edi),%esi
938          xorl      %eax,%ebx
939          movl      %ebx,4(%esp)
940          xorl      %edx,%eax
941          movl      %eax,(%esp)
942          movl      8(%esp),%ecx
943          movl      12(%esp),%edx
944          movl      36(%esp),%esi
945          cmpl      $128,%esi
946          jne       .L0122nd256
947          movl      44(%esp),%edi
948          leal      128(%edi),%edi
949          movl      %eax,-112(%edi)
950          movl      %ebx,-108(%edi)
951          movl      %ecx,-104(%edi)
952          movl      %edx,-100(%edi)
953          movl      %eax,%ebp
954          shll      $15,%eax
955          movl      %ebx,%esi
956          shrl      $17,%esi
957          shll      $15,%ebx
958          orl       %esi,%eax
959          movl      %ecx,%esi
960          shll      $15,%ecx
961          movl      %eax,-80(%edi)
962          shrl      $17,%esi
963          orl       %esi,%ebx
964          shrl      $17,%ebp
965          movl      %edx,%esi
966          shrl      $17,%esi
967          movl      %ebx,-76(%edi)
968          shll      $15,%edx
969          orl       %esi,%ecx
970          orl       %ebp,%edx
971          movl      %ecx,-72(%edi)
972          movl      %edx,-68(%edi)
973          movl      %eax,%ebp
974          shll      $15,%eax
975          movl      %ebx,%esi
976          shrl      $17,%esi
977          shll      $15,%ebx
978          orl       %esi,%eax
979          movl      %ecx,%esi
980          shll      $15,%ecx
981          movl      %eax,-64(%edi)
982          shrl      $17,%esi
983          orl       %esi,%ebx
984          shrl      $17,%ebp
985          movl      %edx,%esi
986          shrl      $17,%esi
987          movl      %ebx,-60(%edi)
988          shll      $15,%edx
989          orl       %esi,%ecx
990          orl       %ebp,%edx
991          movl      %ecx,-56(%edi)
992          movl      %edx,-52(%edi)
993          movl      %eax,%ebp
994          shll      $15,%eax
995          movl      %ebx,%esi
996          shrl      $17,%esi
997          shll      $15,%ebx
998          orl       %esi,%eax
999          movl      %ecx,%esi
1000          shll      $15,%ecx
1001          movl      %eax,-32(%edi)
1002          shrl      $17,%esi
1003          orl       %esi,%ebx
1004          shrl      $17,%ebp
1005          movl      %edx,%esi
1006          shrl      $17,%esi
1007          movl      %ebx,-28(%edi)
1008          shll      $15,%edx
1009          orl       %esi,%ecx
1010          orl       %ebp,%edx
1011          movl      %eax,%ebp
1012          shll      $15,%eax
1013          movl      %ebx,%esi
1014          shrl      $17,%esi
1015          shll      $15,%ebx
1016          orl       %esi,%eax
1017          movl      %ecx,%esi
1018          shll      $15,%ecx
1019          movl      %eax,-16(%edi)
1020          shrl      $17,%esi
1021          orl       %esi,%ebx
1022          shrl      $17,%ebp
1023          movl      %edx,%esi
1024          shrl      $17,%esi
1025          movl      %ebx,-12(%edi)
1026          shll      $15,%edx
1027          orl       %esi,%ecx
1028          orl       %ebp,%edx
1029          movl      %ecx,-8(%edi)
1030          movl      %edx,-4(%edi)
1031          movl      %ebx,%ebp
1032          shll      $2,%ebx
1033          movl      %ecx,%esi
1034          shrl      $30,%esi
1035          shll      $2,%ecx
1036          orl       %esi,%ebx
1037          movl      %edx,%esi
1038          shll      $2,%edx
1039          movl      %ebx,32(%edi)
1040          shrl      $30,%esi
1041          orl       %esi,%ecx
1042          shrl      $30,%ebp
1043          movl      %eax,%esi
1044          shrl      $30,%esi
1045          movl      %ecx,36(%edi)
1046          shll      $2,%eax
1047          orl       %esi,%edx
1048          orl       %ebp,%eax
1049          movl      %edx,40(%edi)
1050          movl      %eax,44(%edi)
1051          movl      %ebx,%ebp
1052          shll      $17,%ebx
1053          movl      %ecx,%esi
1054          shrl      $15,%esi
1055          shll      $17,%ecx
1056          orl       %esi,%ebx
1057          movl      %edx,%esi
1058          shll      $17,%edx
1059          movl      %ebx,64(%edi)
1060          shrl      $15,%esi
1061          orl       %esi,%ecx
1062          shrl      $15,%ebp
1063          movl      %eax,%esi
1064          shrl      $15,%esi
1065          movl      %ecx,68(%edi)
1066          shll      $17,%eax
1067          orl       %esi,%edx
1068          orl       %ebp,%eax
1069          movl      %edx,72(%edi)
1070          movl      %eax,76(%edi)
1071          movl      -128(%edi),%ebx
1072          movl      -124(%edi),%ecx
1073          movl      -120(%edi),%edx
1074          movl      -116(%edi),%eax
1075          movl      %ebx,%ebp
1076          shll      $15,%ebx
1077          movl      %ecx,%esi
1078          shrl      $17,%esi
1079          shll      $15,%ecx
1080          orl       %esi,%ebx
1081          movl      %edx,%esi
1082          shll      $15,%edx
1083          movl      %ebx,-96(%edi)
1084          shrl      $17,%esi
1085          orl       %esi,%ecx
1086          shrl      $17,%ebp
1087          movl      %eax,%esi
1088          shrl      $17,%esi
1089          movl      %ecx,-92(%edi)
1090          shll      $15,%eax
1091          orl       %esi,%edx
1092          orl       %ebp,%eax
1093          movl      %edx,-88(%edi)
1094          movl      %eax,-84(%edi)
1095          movl      %ebx,%ebp
1096          shll      $30,%ebx
1097          movl      %ecx,%esi
1098          shrl      $2,%esi
1099          shll      $30,%ecx
1100          orl       %esi,%ebx
1101          movl      %edx,%esi
1102          shll      $30,%edx
1103          movl      %ebx,-48(%edi)
1104          shrl      $2,%esi
1105          orl       %esi,%ecx
1106          shrl      $2,%ebp
1107          movl      %eax,%esi
1108          shrl      $2,%esi
1109          movl      %ecx,-44(%edi)
1110          shll      $30,%eax
1111          orl       %esi,%edx
1112          orl       %ebp,%eax
1113          movl      %edx,-40(%edi)
1114          movl      %eax,-36(%edi)
1115          movl      %ebx,%ebp
1116          shll      $15,%ebx
1117          movl      %ecx,%esi
1118          shrl      $17,%esi
1119          shll      $15,%ecx
1120          orl       %esi,%ebx
1121          movl      %edx,%esi
1122          shll      $15,%edx
1123          shrl      $17,%esi
1124          orl       %esi,%ecx
1125          shrl      $17,%ebp
1126          movl      %eax,%esi
1127          shrl      $17,%esi
1128          shll      $15,%eax
1129          orl       %esi,%edx
1130          orl       %ebp,%eax
1131          movl      %edx,-24(%edi)
1132          movl      %eax,-20(%edi)
1133          movl      %ebx,%ebp
1134          shll      $17,%ebx
1135          movl      %ecx,%esi
1136          shrl      $15,%esi
1137          shll      $17,%ecx
1138          orl       %esi,%ebx
1139          movl      %edx,%esi
1140          shll      $17,%edx
1141          movl      %ebx,(%edi)
1142          shrl      $15,%esi
1143          orl       %esi,%ecx
1144          shrl      $15,%ebp
1145          movl      %eax,%esi
1146          shrl      $15,%esi
1147          movl      %ecx,4(%edi)
1148          shll      $17,%eax
1149          orl       %esi,%edx
1150          orl       %ebp,%eax
1151          movl      %edx,8(%edi)
1152          movl      %eax,12(%edi)
1153          movl      %ebx,%ebp
1154          shll      $17,%ebx
1155          movl      %ecx,%esi
1156          shrl      $15,%esi
1157          shll      $17,%ecx
1158          orl       %esi,%ebx
1159          movl      %edx,%esi
1160          shll      $17,%edx
1161          movl      %ebx,16(%edi)
1162          shrl      $15,%esi
1163          orl       %esi,%ecx
1164          shrl      $15,%ebp
1165          movl      %eax,%esi
1166          shrl      $15,%esi
1167          movl      %ecx,20(%edi)
1168          shll      $17,%eax
1169          orl       %esi,%edx
1170          orl       %ebp,%eax
1171          movl      %edx,24(%edi)
1172          movl      %eax,28(%edi)
1173          movl      %ebx,%ebp
1174          shll      $17,%ebx
1175          movl      %ecx,%esi
1176          shrl      $15,%esi
1177          shll      $17,%ecx
1178          orl       %esi,%ebx
1179          movl      %edx,%esi
1180          shll      $17,%edx
1181          movl      %ebx,48(%edi)
1182          shrl      $15,%esi
1183          orl       %esi,%ecx
1184          shrl      $15,%ebp
1185          movl      %eax,%esi
1186          shrl      $15,%esi
1187          movl      %ecx,52(%edi)
1188          shll      $17,%eax
1189          orl       %esi,%edx
1190          orl       %ebp,%eax
1191          movl      %edx,56(%edi)
1192          movl      %eax,60(%edi)
1193          movl      $3,%eax
1194          jmp       .L013done
1195.align    16
1196.L0122nd256:
1197          movl      44(%esp),%esi
1198          movl      %eax,48(%esi)
1199          movl      %ebx,52(%esi)
1200          movl      %ecx,56(%esi)
1201          movl      %edx,60(%esi)
1202          xorl      32(%esi),%eax
1203          xorl      36(%esi),%ebx
1204          xorl      40(%esi),%ecx
1205          xorl      44(%esi),%edx
1206          movl      32(%edi),%esi
1207          movl      %eax,(%esp)
1208          movl      %ebx,4(%esp)
1209          movl      %ecx,8(%esp)
1210          movl      %edx,12(%esp)
1211          xorl      %esi,%eax
1212          xorl      36(%edi),%ebx
1213          movzbl    %ah,%esi
1214          movl      2052(%ebp,%esi,8),%edx
1215          movzbl    %al,%esi
1216          xorl      4(%ebp,%esi,8),%edx
1217          shrl      $16,%eax
1218          movzbl    %bl,%esi
1219          movl      (%ebp,%esi,8),%ecx
1220          movzbl    %ah,%esi
1221          xorl      (%ebp,%esi,8),%edx
1222          movzbl    %bh,%esi
1223          xorl      4(%ebp,%esi,8),%ecx
1224          shrl      $16,%ebx
1225          movzbl    %al,%eax
1226          xorl      2048(%ebp,%eax,8),%edx
1227          movzbl    %bh,%esi
1228          movl      12(%esp),%eax
1229          xorl      %edx,%ecx
1230          rorl      $8,%edx
1231          xorl      2048(%ebp,%esi,8),%ecx
1232          movzbl    %bl,%esi
1233          movl      8(%esp),%ebx
1234          xorl      %eax,%edx
1235          xorl      2052(%ebp,%esi,8),%ecx
1236          movl      40(%edi),%esi
1237          xorl      %ecx,%edx
1238          movl      %edx,12(%esp)
1239          xorl      %ebx,%ecx
1240          movl      %ecx,8(%esp)
1241          xorl      %esi,%ecx
1242          xorl      44(%edi),%edx
1243          movzbl    %ch,%esi
1244          movl      2052(%ebp,%esi,8),%ebx
1245          movzbl    %cl,%esi
1246          xorl      4(%ebp,%esi,8),%ebx
1247          shrl      $16,%ecx
1248          movzbl    %dl,%esi
1249          movl      (%ebp,%esi,8),%eax
1250          movzbl    %ch,%esi
1251          xorl      (%ebp,%esi,8),%ebx
1252          movzbl    %dh,%esi
1253          xorl      4(%ebp,%esi,8),%eax
1254          shrl      $16,%edx
1255          movzbl    %cl,%ecx
1256          xorl      2048(%ebp,%ecx,8),%ebx
1257          movzbl    %dh,%esi
1258          movl      4(%esp),%ecx
1259          xorl      %ebx,%eax
1260          rorl      $8,%ebx
1261          xorl      2048(%ebp,%esi,8),%eax
1262          movzbl    %dl,%esi
1263          movl      (%esp),%edx
1264          xorl      %ecx,%ebx
1265          xorl      2052(%ebp,%esi,8),%eax
1266          movl      48(%edi),%esi
1267          xorl      %eax,%ebx
1268          movl      %ebx,4(%esp)
1269          xorl      %edx,%eax
1270          movl      %eax,(%esp)
1271          movl      8(%esp),%ecx
1272          movl      12(%esp),%edx
1273          movl      44(%esp),%edi
1274          leal      128(%edi),%edi
1275          movl      %eax,-112(%edi)
1276          movl      %ebx,-108(%edi)
1277          movl      %ecx,-104(%edi)
1278          movl      %edx,-100(%edi)
1279          movl      %eax,%ebp
1280          shll      $30,%eax
1281          movl      %ebx,%esi
1282          shrl      $2,%esi
1283          shll      $30,%ebx
1284          orl       %esi,%eax
1285          movl      %ecx,%esi
1286          shll      $30,%ecx
1287          movl      %eax,-48(%edi)
1288          shrl      $2,%esi
1289          orl       %esi,%ebx
1290          shrl      $2,%ebp
1291          movl      %edx,%esi
1292          shrl      $2,%esi
1293          movl      %ebx,-44(%edi)
1294          shll      $30,%edx
1295          orl       %esi,%ecx
1296          orl       %ebp,%edx
1297          movl      %ecx,-40(%edi)
1298          movl      %edx,-36(%edi)
1299          movl      %eax,%ebp
1300          shll      $30,%eax
1301          movl      %ebx,%esi
1302          shrl      $2,%esi
1303          shll      $30,%ebx
1304          orl       %esi,%eax
1305          movl      %ecx,%esi
1306          shll      $30,%ecx
1307          movl      %eax,32(%edi)
1308          shrl      $2,%esi
1309          orl       %esi,%ebx
1310          shrl      $2,%ebp
1311          movl      %edx,%esi
1312          shrl      $2,%esi
1313          movl      %ebx,36(%edi)
1314          shll      $30,%edx
1315          orl       %esi,%ecx
1316          orl       %ebp,%edx
1317          movl      %ecx,40(%edi)
1318          movl      %edx,44(%edi)
1319          movl      %ebx,%ebp
1320          shll      $19,%ebx
1321          movl      %ecx,%esi
1322          shrl      $13,%esi
1323          shll      $19,%ecx
1324          orl       %esi,%ebx
1325          movl      %edx,%esi
1326          shll      $19,%edx
1327          movl      %ebx,128(%edi)
1328          shrl      $13,%esi
1329          orl       %esi,%ecx
1330          shrl      $13,%ebp
1331          movl      %eax,%esi
1332          shrl      $13,%esi
1333          movl      %ecx,132(%edi)
1334          shll      $19,%eax
1335          orl       %esi,%edx
1336          orl       %ebp,%eax
1337          movl      %edx,136(%edi)
1338          movl      %eax,140(%edi)
1339          movl      -96(%edi),%ebx
1340          movl      -92(%edi),%ecx
1341          movl      -88(%edi),%edx
1342          movl      -84(%edi),%eax
1343          movl      %ebx,%ebp
1344          shll      $15,%ebx
1345          movl      %ecx,%esi
1346          shrl      $17,%esi
1347          shll      $15,%ecx
1348          orl       %esi,%ebx
1349          movl      %edx,%esi
1350          shll      $15,%edx
1351          movl      %ebx,-96(%edi)
1352          shrl      $17,%esi
1353          orl       %esi,%ecx
1354          shrl      $17,%ebp
1355          movl      %eax,%esi
1356          shrl      $17,%esi
1357          movl      %ecx,-92(%edi)
1358          shll      $15,%eax
1359          orl       %esi,%edx
1360          orl       %ebp,%eax
1361          movl      %edx,-88(%edi)
1362          movl      %eax,-84(%edi)
1363          movl      %ebx,%ebp
1364          shll      $15,%ebx
1365          movl      %ecx,%esi
1366          shrl      $17,%esi
1367          shll      $15,%ecx
1368          orl       %esi,%ebx
1369          movl      %edx,%esi
1370          shll      $15,%edx
1371          movl      %ebx,-64(%edi)
1372          shrl      $17,%esi
1373          orl       %esi,%ecx
1374          shrl      $17,%ebp
1375          movl      %eax,%esi
1376          shrl      $17,%esi
1377          movl      %ecx,-60(%edi)
1378          shll      $15,%eax
1379          orl       %esi,%edx
1380          orl       %ebp,%eax
1381          movl      %edx,-56(%edi)
1382          movl      %eax,-52(%edi)
1383          movl      %ebx,%ebp
1384          shll      $30,%ebx
1385          movl      %ecx,%esi
1386          shrl      $2,%esi
1387          shll      $30,%ecx
1388          orl       %esi,%ebx
1389          movl      %edx,%esi
1390          shll      $30,%edx
1391          movl      %ebx,16(%edi)
1392          shrl      $2,%esi
1393          orl       %esi,%ecx
1394          shrl      $2,%ebp
1395          movl      %eax,%esi
1396          shrl      $2,%esi
1397          movl      %ecx,20(%edi)
1398          shll      $30,%eax
1399          orl       %esi,%edx
1400          orl       %ebp,%eax
1401          movl      %edx,24(%edi)
1402          movl      %eax,28(%edi)
1403          movl      %ecx,%ebp
1404          shll      $2,%ecx
1405          movl      %edx,%esi
1406          shrl      $30,%esi
1407          shll      $2,%edx
1408          orl       %esi,%ecx
1409          movl      %eax,%esi
1410          shll      $2,%eax
1411          movl      %ecx,80(%edi)
1412          shrl      $30,%esi
1413          orl       %esi,%edx
1414          shrl      $30,%ebp
1415          movl      %ebx,%esi
1416          shrl      $30,%esi
1417          movl      %edx,84(%edi)
1418          shll      $2,%ebx
1419          orl       %esi,%eax
1420          orl       %ebp,%ebx
1421          movl      %eax,88(%edi)
1422          movl      %ebx,92(%edi)
1423          movl      -80(%edi),%ecx
1424          movl      -76(%edi),%edx
1425          movl      -72(%edi),%eax
1426          movl      -68(%edi),%ebx
1427          movl      %ecx,%ebp
1428          shll      $15,%ecx
1429          movl      %edx,%esi
1430          shrl      $17,%esi
1431          shll      $15,%edx
1432          orl       %esi,%ecx
1433          movl      %eax,%esi
1434          shll      $15,%eax
1435          movl      %ecx,-80(%edi)
1436          shrl      $17,%esi
1437          orl       %esi,%edx
1438          shrl      $17,%ebp
1439          movl      %ebx,%esi
1440          shrl      $17,%esi
1441          movl      %edx,-76(%edi)
1442          shll      $15,%ebx
1443          orl       %esi,%eax
1444          orl       %ebp,%ebx
1445          movl      %eax,-72(%edi)
1446          movl      %ebx,-68(%edi)
1447          movl      %ecx,%ebp
1448          shll      $30,%ecx
1449          movl      %edx,%esi
1450          shrl      $2,%esi
1451          shll      $30,%edx
1452          orl       %esi,%ecx
1453          movl      %eax,%esi
1454          shll      $30,%eax
1455          movl      %ecx,-16(%edi)
1456          shrl      $2,%esi
1457          orl       %esi,%edx
1458          shrl      $2,%ebp
1459          movl      %ebx,%esi
1460          shrl      $2,%esi
1461          movl      %edx,-12(%edi)
1462          shll      $30,%ebx
1463          orl       %esi,%eax
1464          orl       %ebp,%ebx
1465          movl      %eax,-8(%edi)
1466          movl      %ebx,-4(%edi)
1467          movl      %edx,64(%edi)
1468          movl      %eax,68(%edi)
1469          movl      %ebx,72(%edi)
1470          movl      %ecx,76(%edi)
1471          movl      %edx,%ebp
1472          shll      $17,%edx
1473          movl      %eax,%esi
1474          shrl      $15,%esi
1475          shll      $17,%eax
1476          orl       %esi,%edx
1477          movl      %ebx,%esi
1478          shll      $17,%ebx
1479          movl      %edx,96(%edi)
1480          shrl      $15,%esi
1481          orl       %esi,%eax
1482          shrl      $15,%ebp
1483          movl      %ecx,%esi
1484          shrl      $15,%esi
1485          movl      %eax,100(%edi)
1486          shll      $17,%ecx
1487          orl       %esi,%ebx
1488          orl       %ebp,%ecx
1489          movl      %ebx,104(%edi)
1490          movl      %ecx,108(%edi)
1491          movl      -128(%edi),%edx
1492          movl      -124(%edi),%eax
1493          movl      -120(%edi),%ebx
1494          movl      -116(%edi),%ecx
1495          movl      %eax,%ebp
1496          shll      $13,%eax
1497          movl      %ebx,%esi
1498          shrl      $19,%esi
1499          shll      $13,%ebx
1500          orl       %esi,%eax
1501          movl      %ecx,%esi
1502          shll      $13,%ecx
1503          movl      %eax,-32(%edi)
1504          shrl      $19,%esi
1505          orl       %esi,%ebx
1506          shrl      $19,%ebp
1507          movl      %edx,%esi
1508          shrl      $19,%esi
1509          movl      %ebx,-28(%edi)
1510          shll      $13,%edx
1511          orl       %esi,%ecx
1512          orl       %ebp,%edx
1513          movl      %ecx,-24(%edi)
1514          movl      %edx,-20(%edi)
1515          movl      %eax,%ebp
1516          shll      $15,%eax
1517          movl      %ebx,%esi
1518          shrl      $17,%esi
1519          shll      $15,%ebx
1520          orl       %esi,%eax
1521          movl      %ecx,%esi
1522          shll      $15,%ecx
1523          movl      %eax,(%edi)
1524          shrl      $17,%esi
1525          orl       %esi,%ebx
1526          shrl      $17,%ebp
1527          movl      %edx,%esi
1528          shrl      $17,%esi
1529          movl      %ebx,4(%edi)
1530          shll      $15,%edx
1531          orl       %esi,%ecx
1532          orl       %ebp,%edx
1533          movl      %ecx,8(%edi)
1534          movl      %edx,12(%edi)
1535          movl      %eax,%ebp
1536          shll      $17,%eax
1537          movl      %ebx,%esi
1538          shrl      $15,%esi
1539          shll      $17,%ebx
1540          orl       %esi,%eax
1541          movl      %ecx,%esi
1542          shll      $17,%ecx
1543          movl      %eax,48(%edi)
1544          shrl      $15,%esi
1545          orl       %esi,%ebx
1546          shrl      $15,%ebp
1547          movl      %edx,%esi
1548          shrl      $15,%esi
1549          movl      %ebx,52(%edi)
1550          shll      $17,%edx
1551          orl       %esi,%ecx
1552          orl       %ebp,%edx
1553          movl      %ecx,56(%edi)
1554          movl      %edx,60(%edi)
1555          movl      %ebx,%ebp
1556          shll      $2,%ebx
1557          movl      %ecx,%esi
1558          shrl      $30,%esi
1559          shll      $2,%ecx
1560          orl       %esi,%ebx
1561          movl      %edx,%esi
1562          shll      $2,%edx
1563          movl      %ebx,112(%edi)
1564          shrl      $30,%esi
1565          orl       %esi,%ecx
1566          shrl      $30,%ebp
1567          movl      %eax,%esi
1568          shrl      $30,%esi
1569          movl      %ecx,116(%edi)
1570          shll      $2,%eax
1571          orl       %esi,%edx
1572          orl       %ebp,%eax
1573          movl      %edx,120(%edi)
1574          movl      %eax,124(%edi)
1575          movl      $4,%eax
1576.L013done:
1577          leal      144(%edi),%edx
1578          addl      $16,%esp
1579          popl      %edi
1580          popl      %esi
1581          popl      %ebx
1582          popl      %ebp
1583          ret
1584.size     Camellia_Ekeygen,.-.L_Camellia_Ekeygen_begin
1585.globl    Camellia_set_key
1586.type     Camellia_set_key,@function
1587.align    16
1588Camellia_set_key:
1589.L_Camellia_set_key_begin:
1590          #ifdef __CET__
1591
1592.byte     243,15,30,251
1593          #endif
1594
1595          pushl     %ebx
1596          movl      8(%esp),%ecx
1597          movl      12(%esp),%ebx
1598          movl      16(%esp),%edx
1599          movl      $-1,%eax
1600          testl     %ecx,%ecx
1601          jz        .L014done
1602          testl     %edx,%edx
1603          jz        .L014done
1604          movl      $-2,%eax
1605          cmpl      $256,%ebx
1606          je        .L015arg_ok
1607          cmpl      $192,%ebx
1608          je        .L015arg_ok
1609          cmpl      $128,%ebx
1610          jne       .L014done
1611.align    4
1612.L015arg_ok:
1613          pushl     %edx
1614          pushl     %ecx
1615          pushl     %ebx
1616          call      .L_Camellia_Ekeygen_begin
1617          addl      $12,%esp
1618          movl      %eax,(%edx)
1619          xorl      %eax,%eax
1620.align    4
1621.L014done:
1622          popl      %ebx
1623          ret
1624.size     Camellia_set_key,.-.L_Camellia_set_key_begin
1625.align    64
1626.LCamellia_SIGMA:
1627.long     2694735487,1003262091,3061508184,1286239154,3337565999,3914302142,1426019237,4057165596,283453434,3731369245,2958461122,3018244605,0,0,0,0
1628.align    64
1629.LCamellia_SBOX:
1630.long     1886416896,1886388336
1631.long     2189591040,741081132
1632.long     741092352,3014852787
1633.long     3974949888,3233808576
1634.long     3014898432,3840147684
1635.long     656877312,1465319511
1636.long     3233857536,3941204202
1637.long     3857048832,2930639022
1638.long     3840205824,589496355
1639.long     2240120064,1802174571
1640.long     1465341696,1162149957
1641.long     892679424,2779054245
1642.long     3941263872,3991732461
1643.long     202116096,1330577487
1644.long     2930683392,488439837
1645.long     1094795520,2459041938
1646.long     589505280,2256928902
1647.long     4025478912,2947481775
1648.long     1802201856,2088501372
1649.long     2475922176,522125343
1650.long     1162167552,1044250686
1651.long     421075200,3705405660
1652.long     2779096320,1583218782
1653.long     555819264,185270283
1654.long     3991792896,2795896998
1655.long     235802112,960036921
1656.long     1330597632,3587506389
1657.long     1313754624,1566376029
1658.long     488447232,3654877401
1659.long     1701143808,1515847770
1660.long     2459079168,1364262993
1661.long     3183328512,1819017324
1662.long     2256963072,2341142667
1663.long     3099113472,2593783962
1664.long     2947526400,4227531003
1665.long     2408550144,2964324528
1666.long     2088532992,1953759348
1667.long     3958106880,724238379
1668.long     522133248,4042260720
1669.long     3469659648,2223243396
1670.long     1044266496,3755933919
1671.long     808464384,3419078859
1672.long     3705461760,875823156
1673.long     1600085760,1987444854
1674.long     1583242752,1835860077
1675.long     3318072576,2846425257
1676.long     185273088,3520135377
1677.long     437918208,67371012
1678.long     2795939328,336855060
1679.long     3789676800,976879674
1680.long     960051456,3739091166
1681.long     3402287616,286326801
1682.long     3587560704,842137650
1683.long     1195853568,2627469468
1684.long     1566399744,1397948499
1685.long     1027423488,4075946226
1686.long     3654932736,4278059262
1687.long     16843008,3486449871
1688.long     1515870720,3284336835
1689.long     3604403712,2054815866
1690.long     1364283648,606339108
1691.long     1448498688,3907518696
1692.long     1819044864,1616904288
1693.long     1296911616,1768489065
1694.long     2341178112,2863268010
1695.long     218959104,2694840480
1696.long     2593823232,2711683233
1697.long     1717986816,1650589794
1698.long     4227595008,1414791252
1699.long     3435973632,505282590
1700.long     2964369408,3772776672
1701.long     757935360,1684275300
1702.long     1953788928,269484048
1703.long     303174144,0
1704.long     724249344,2745368739
1705.long     538976256,1970602101
1706.long     4042321920,2324299914
1707.long     2981212416,3873833190
1708.long     2223277056,151584777
1709.long     2576980224,3722248413
1710.long     3755990784,2273771655
1711.long     1280068608,2206400643
1712.long     3419130624,3452764365
1713.long     3267543552,2425356432
1714.long     875836416,1936916595
1715.long     2122219008,4143317238
1716.long     1987474944,2644312221
1717.long     84215040,3216965823
1718.long     1835887872,1381105746
1719.long     3082270464,3638034648
1720.long     2846468352,3368550600
1721.long     825307392,3334865094
1722.long     3520188672,2172715137
1723.long     387389184,1869545583
1724.long     67372032,320012307
1725.long     3621246720,1667432547
1726.long     336860160,3924361449
1727.long     1482184704,2812739751
1728.long     976894464,2677997727
1729.long     1633771776,3166437564
1730.long     3739147776,690552873
1731.long     454761216,4193845497
1732.long     286331136,791609391
1733.long     471604224,3031695540
1734.long     842150400,2021130360
1735.long     252645120,101056518
1736.long     2627509248,3890675943
1737.long     370546176,1903231089
1738.long     1397969664,3570663636
1739.long     404232192,2880110763
1740.long     4076007936,2290614408
1741.long     572662272,2374828173
1742.long     4278124032,1920073842
1743.long     1145324544,3115909305
1744.long     3486502656,4177002744
1745.long     2998055424,2896953516
1746.long     3284386560,909508662
1747.long     3048584448,707395626
1748.long     2054846976,1010565180
1749.long     2442236160,4059103473
1750.long     606348288,1077936192
1751.long     134744064,3553820883
1752.long     3907577856,3149594811
1753.long     2829625344,1128464451
1754.long     1616928768,353697813
1755.long     4244438016,2913796269
1756.long     1768515840,2004287607
1757.long     1347440640,2155872384
1758.long     2863311360,2189557890
1759.long     3503345664,3974889708
1760.long     2694881280,656867367
1761.long     2105376000,3856990437
1762.long     2711724288,2240086149
1763.long     2307492096,892665909
1764.long     1650614784,202113036
1765.long     2543294208,1094778945
1766.long     1414812672,4025417967
1767.long     1532713728,2475884691
1768.long     505290240,421068825
1769.long     2509608192,555810849
1770.long     3772833792,235798542
1771.long     4294967040,1313734734
1772.long     1684300800,1701118053
1773.long     3537031680,3183280317
1774.long     269488128,3099066552
1775.long     3301229568,2408513679
1776.long     0,3958046955
1777.long     1212696576,3469607118
1778.long     2745410304,808452144
1779.long     4160222976,1600061535
1780.long     1970631936,3318022341
1781.long     3688618752,437911578
1782.long     2324335104,3789619425
1783.long     50529024,3402236106
1784.long     3873891840,1195835463
1785.long     3671775744,1027407933
1786.long     151587072,16842753
1787.long     1061109504,3604349142
1788.long     3722304768,1448476758
1789.long     2492765184,1296891981
1790.long     2273806080,218955789
1791.long     1549556736,1717960806
1792.long     2206434048,3435921612
1793.long     33686016,757923885
1794.long     3452816640,303169554
1795.long     1246382592,538968096
1796.long     2425393152,2981167281
1797.long     858993408,2576941209
1798.long     1936945920,1280049228
1799.long     1734829824,3267494082
1800.long     4143379968,2122186878
1801.long     4092850944,84213765
1802.long     2644352256,3082223799
1803.long     2139062016,825294897
1804.long     3217014528,387383319
1805.long     3806519808,3621191895
1806.long     1381126656,1482162264
1807.long     2610666240,1633747041
1808.long     3638089728,454754331
1809.long     640034304,471597084
1810.long     3368601600,252641295
1811.long     926365440,370540566
1812.long     3334915584,404226072
1813.long     993737472,572653602
1814.long     2172748032,1145307204
1815.long     2526451200,2998010034
1816.long     1869573888,3048538293
1817.long     1263225600,2442199185
1818.long     320017152,134742024
1819.long     3200171520,2829582504
1820.long     1667457792,4244373756
1821.long     774778368,1347420240
1822.long     3924420864,3503292624
1823.long     2038003968,2105344125
1824.long     2812782336,2307457161
1825.long     2358021120,2543255703
1826.long     2678038272,1532690523
1827.long     1852730880,2509570197
1828.long     3166485504,4294902015
1829.long     2391707136,3536978130
1830.long     690563328,3301179588
1831.long     4126536960,1212678216
1832.long     4193908992,4160159991
1833.long     3065427456,3688562907
1834.long     791621376,50528259
1835.long     4261281024,3671720154
1836.long     3031741440,1061093439
1837.long     1499027712,2492727444
1838.long     2021160960,1549533276
1839.long     2560137216,33685506
1840.long     101058048,1246363722
1841.long     1785358848,858980403
1842.long     3890734848,1734803559
1843.long     1179010560,4092788979
1844.long     1903259904,2139029631
1845.long     3132799488,3806462178
1846.long     3570717696,2610626715
1847.long     623191296,640024614
1848.long     2880154368,926351415
1849.long     1111638528,993722427
1850.long     2290649088,2526412950
1851.long     2728567296,1263206475
1852.long     2374864128,3200123070
1853.long     4210752000,774766638
1854.long     1920102912,2037973113
1855.long     117901056,2357985420
1856.long     3115956480,1852702830
1857.long     1431655680,2391670926
1858.long     4177065984,4126474485
1859.long     4008635904,3065381046
1860.long     2896997376,4261216509
1861.long     168430080,1499005017
1862.long     909522432,2560098456
1863.long     1229539584,1785331818
1864.long     707406336,1178992710
1865.long     1751672832,3132752058
1866.long     1010580480,623181861
1867.long     943208448,1111621698
1868.long     4059164928,2728525986
1869.long     2762253312,4210688250
1870.long     1077952512,117899271
1871.long     673720320,1431634005
1872.long     3553874688,4008575214
1873.long     2071689984,168427530
1874.long     3149642496,1229520969
1875.long     3385444608,1751646312
1876.long     1128481536,943194168
1877.long     3250700544,2762211492
1878.long     353703168,673710120
1879.long     3823362816,2071658619
1880.long     2913840384,3385393353
1881.long     4109693952,3250651329
1882.long     2004317952,3823304931
1883.long     3351758592,4109631732
1884.long     2155905024,3351707847
1885.long     2661195264,2661154974
1886.long     14737632,939538488
1887.long     328965,1090535745
1888.long     5789784,369104406
1889.long     14277081,1979741814
1890.long     6776679,3640711641
1891.long     5131854,2466288531
1892.long     8487297,1610637408
1893.long     13355979,4060148466
1894.long     13224393,1912631922
1895.long     723723,3254829762
1896.long     11447982,2868947883
1897.long     6974058,2583730842
1898.long     14013909,1962964341
1899.long     1579032,100664838
1900.long     6118749,1459640151
1901.long     8553090,2684395680
1902.long     4605510,2432733585
1903.long     14671839,4144035831
1904.long     14079702,3036722613
1905.long     2565927,3372272073
1906.long     9079434,2717950626
1907.long     3289650,2348846220
1908.long     4934475,3523269330
1909.long     4342338,2415956112
1910.long     14408667,4127258358
1911.long     1842204,117442311
1912.long     10395294,2801837991
1913.long     10263708,654321447
1914.long     3815994,2382401166
1915.long     13290186,2986390194
1916.long     2434341,1224755529
1917.long     8092539,3724599006
1918.long     855309,1124090691
1919.long     7434609,1543527516
1920.long     6250335,3607156695
1921.long     2039583,3338717127
1922.long     16316664,1040203326
1923.long     14145495,4110480885
1924.long     4079166,2399178639
1925.long     10329501,1728079719
1926.long     8158332,520101663
1927.long     6316128,402659352
1928.long     12171705,1845522030
1929.long     12500670,2936057775
1930.long     12369084,788541231
1931.long     9145227,3791708898
1932.long     1447446,2231403909
1933.long     3421236,218107149
1934.long     5066061,1392530259
1935.long     12829635,4026593520
1936.long     7500402,2617285788
1937.long     9803157,1694524773
1938.long     11250603,3925928682
1939.long     9342606,2734728099
1940.long     12237498,2919280302
1941.long     8026746,2650840734
1942.long     11776947,3959483628
1943.long     131586,2147516544
1944.long     11842740,754986285
1945.long     11382189,1795189611
1946.long     10658466,2818615464
1947.long     11316396,721431339
1948.long     14211288,905983542
1949.long     10132122,2785060518
1950.long     1513239,3305162181
1951.long     1710618,2248181382
1952.long     3487029,1291865421
1953.long     13421772,855651123
1954.long     16250871,4244700669
1955.long     10066329,1711302246
1956.long     6381921,1476417624
1957.long     5921370,2516620950
1958.long     15263976,973093434
1959.long     2368548,150997257
1960.long     5658198,2499843477
1961.long     4210752,268439568
1962.long     14803425,2013296760
1963.long     6513507,3623934168
1964.long     592137,1107313218
1965.long     3355443,3422604492
1966.long     12566463,4009816047
1967.long     10000536,637543974
1968.long     9934743,3842041317
1969.long     8750469,1627414881
1970.long     6842472,436214298
1971.long     16579836,1056980799
1972.long     15527148,989870907
1973.long     657930,2181071490
1974.long     14342874,3053500086
1975.long     7303023,3674266587
1976.long     5460819,3556824276
1977.long     6447714,2550175896
1978.long     10724259,3892373736
1979.long     3026478,2332068747
1980.long     526344,33554946
1981.long     11513775,3942706155
1982.long     2631720,167774730
1983.long     11579568,738208812
1984.long     7631988,486546717
1985.long     12763842,2952835248
1986.long     12434877,1862299503
1987.long     3552822,2365623693
1988.long     2236962,2281736328
1989.long     3684408,234884622
1990.long     6579300,419436825
1991.long     1973790,2264958855
1992.long     3750201,1308642894
1993.long     2894892,184552203
1994.long     10921638,2835392937
1995.long     3158064,201329676
1996.long     15066597,2030074233
1997.long     4473924,285217041
1998.long     16645629,2130739071
1999.long     8947848,570434082
2000.long     10461087,3875596263
2001.long     6645093,1493195097
2002.long     8882055,3774931425
2003.long     7039851,3657489114
2004.long     16053492,1023425853
2005.long     2302755,3355494600
2006.long     4737096,301994514
2007.long     1052688,67109892
2008.long     13750737,1946186868
2009.long     5329233,1409307732
2010.long     12632256,805318704
2011.long     16382457,2113961598
2012.long     13816530,3019945140
2013.long     10526880,671098920
2014.long     5592405,1426085205
2015.long     10592673,1744857192
2016.long     4276545,1342197840
2017.long     16448250,3187719870
2018.long     4408131,3489714384
2019.long     1250067,3288384708
2020.long     12895428,822096177
2021.long     3092271,3405827019
2022.long     11053224,704653866
2023.long     11974326,2902502829
2024.long     3947580,251662095
2025.long     2829099,3389049546
2026.long     12698049,1879076976
2027.long     16777215,4278255615
2028.long     13158600,838873650
2029.long     10855845,1761634665
2030.long     2105376,134219784
2031.long     9013641,1644192354
2032.long     0,0
2033.long     9474192,603989028
2034.long     4671303,3506491857
2035.long     15724527,4211145723
2036.long     15395562,3120609978
2037.long     12040119,3976261101
2038.long     1381653,1157645637
2039.long     394758,2164294017
2040.long     13487565,1929409395
2041.long     11908533,1828744557
2042.long     1184274,2214626436
2043.long     8289918,2667618207
2044.long     12303291,3993038574
2045.long     2697513,1241533002
2046.long     986895,3271607235
2047.long     12105912,771763758
2048.long     460551,3238052289
2049.long     263172,16777473
2050.long     10197915,3858818790
2051.long     9737364,620766501
2052.long     2171169,1207978056
2053.long     6710886,2566953369
2054.long     15132390,3103832505
2055.long     13553358,3003167667
2056.long     15592941,2063629179
2057.long     15198183,4177590777
2058.long     3881787,3456159438
2059.long     16711422,3204497343
2060.long     8355711,3741376479
2061.long     12961221,1895854449
2062.long     10790052,687876393
2063.long     3618615,3439381965
2064.long     11645361,1811967084
2065.long     5000268,318771987
2066.long     9539985,1677747300
2067.long     7237230,2600508315
2068.long     9276813,1660969827
2069.long     7763574,2634063261
2070.long     197379,3221274816
2071.long     2960685,1258310475
2072.long     14606046,3070277559
2073.long     9868950,2768283045
2074.long     2500134,2298513801
2075.long     8224125,1593859935
2076.long     13027014,2969612721
2077.long     6052956,385881879
2078.long     13882323,4093703412
2079.long     15921906,3154164924
2080.long     5197647,3540046803
2081.long     1644825,1174423110
2082.long     4144959,3472936911
2083.long     14474460,922761015
2084.long     7960953,1577082462
2085.long     1907997,1191200583
2086.long     5395026,2483066004
2087.long     15461355,4194368250
2088.long     15987699,4227923196
2089.long     7171437,1526750043
2090.long     6184542,2533398423
2091.long     16514043,4261478142
2092.long     6908265,1509972570
2093.long     11711154,2885725356
2094.long     15790320,1006648380
2095.long     3223857,1275087948
2096.long     789516,50332419
2097.long     13948116,889206069
2098.long     13619151,4076925939
2099.long     9211020,587211555
2100.long     14869218,3087055032
2101.long     7697781,1560304989
2102.long     11119017,1778412138
2103.long     4868682,2449511058
2104.long     5723991,3573601749
2105.long     8684676,553656609
2106.long     1118481,1140868164
2107.long     4539717,1358975313
2108.long     1776411,3321939654
2109.long     16119285,2097184125
2110.long     15000804,956315961
2111.long     921102,2197848963
2112.long     7566195,3691044060
2113.long     11184810,2852170410
2114.long     15856113,2080406652
2115.long     14540253,1996519287
2116.long     5855577,1442862678
2117.long     1315860,83887365
2118.long     7105644,452991771
2119.long     9605778,2751505572
2120.long     5526612,352326933
2121.long     13684944,872428596
2122.long     7895160,503324190
2123.long     7368816,469769244
2124.long     14935011,4160813304
2125.long     4802889,1375752786
2126.long     8421504,536879136
2127.long     5263440,335549460
2128.long     10987431,3909151209
2129.long     16185078,3170942397
2130.long     7829367,3707821533
2131.long     9671571,3825263844
2132.long     8816262,2701173153
2133.long     8618883,3758153952
2134.long     2763306,2315291274
2135.long     13092807,4043370993
2136.long     5987163,3590379222
2137.long     15329769,2046851706
2138.long     15658734,3137387451
2139.long     9408399,3808486371
2140.long     65793,1073758272
2141.long     4013373,1325420367
2142.globl    Camellia_cbc_encrypt
2143.type     Camellia_cbc_encrypt,@function
2144.align    16
2145Camellia_cbc_encrypt:
2146.L_Camellia_cbc_encrypt_begin:
2147          #ifdef __CET__
2148
2149.byte     243,15,30,251
2150          #endif
2151
2152          pushl     %ebp
2153          pushl     %ebx
2154          pushl     %esi
2155          pushl     %edi
2156          movl      28(%esp),%ecx
2157          cmpl      $0,%ecx
2158          je        .L016enc_out
2159          pushfl
2160          cld
2161          movl      24(%esp),%eax
2162          movl      28(%esp),%ebx
2163          movl      36(%esp),%edx
2164          movl      40(%esp),%ebp
2165          leal      -64(%esp),%esi
2166          andl      $-64,%esi
2167          leal      -127(%edx),%edi
2168          subl      %esi,%edi
2169          negl      %edi
2170          andl      $960,%edi
2171          subl      %edi,%esi
2172          movl      44(%esp),%edi
2173          xchgl     %esi,%esp
2174          addl      $4,%esp
2175          movl      %esi,20(%esp)
2176          movl      %eax,24(%esp)
2177          movl      %ebx,28(%esp)
2178          movl      %ecx,32(%esp)
2179          movl      %edx,36(%esp)
2180          movl      %ebp,40(%esp)
2181          call      .L017pic_point
2182.L017pic_point:
2183          popl      %ebp
2184          leal      .LCamellia_SBOX-.L017pic_point(%ebp),%ebp
2185          movl      $32,%esi
2186.align    4
2187.L018prefetch_sbox:
2188          movl      (%ebp),%eax
2189          movl      32(%ebp),%ebx
2190          movl      64(%ebp),%ecx
2191          movl      96(%ebp),%edx
2192          leal      128(%ebp),%ebp
2193          decl      %esi
2194          jnz       .L018prefetch_sbox
2195          movl      36(%esp),%eax
2196          subl      $4096,%ebp
2197          movl      24(%esp),%esi
2198          movl      272(%eax),%edx
2199          cmpl      $0,%edi
2200          je        .L019DECRYPT
2201          movl      32(%esp),%ecx
2202          movl      40(%esp),%edi
2203          shll      $6,%edx
2204          leal      (%eax,%edx,1),%edx
2205          movl      %edx,16(%esp)
2206          testl     $4294967280,%ecx
2207          jz        .L020enc_tail
2208          movl      (%edi),%eax
2209          movl      4(%edi),%ebx
2210.align    4
2211.L021enc_loop:
2212          movl      8(%edi),%ecx
2213          movl      12(%edi),%edx
2214          xorl      (%esi),%eax
2215          xorl      4(%esi),%ebx
2216          xorl      8(%esi),%ecx
2217          bswap     %eax
2218          xorl      12(%esi),%edx
2219          bswap     %ebx
2220          movl      36(%esp),%edi
2221          bswap     %ecx
2222          bswap     %edx
2223          call      _x86_Camellia_encrypt
2224          movl      24(%esp),%esi
2225          movl      28(%esp),%edi
2226          bswap     %eax
2227          bswap     %ebx
2228          bswap     %ecx
2229          movl      %eax,(%edi)
2230          bswap     %edx
2231          movl      %ebx,4(%edi)
2232          movl      %ecx,8(%edi)
2233          movl      %edx,12(%edi)
2234          movl      32(%esp),%ecx
2235          leal      16(%esi),%esi
2236          movl      %esi,24(%esp)
2237          leal      16(%edi),%edx
2238          movl      %edx,28(%esp)
2239          subl      $16,%ecx
2240          testl     $4294967280,%ecx
2241          movl      %ecx,32(%esp)
2242          jnz       .L021enc_loop
2243          testl     $15,%ecx
2244          jnz       .L020enc_tail
2245          movl      40(%esp),%esi
2246          movl      8(%edi),%ecx
2247          movl      12(%edi),%edx
2248          movl      %eax,(%esi)
2249          movl      %ebx,4(%esi)
2250          movl      %ecx,8(%esi)
2251          movl      %edx,12(%esi)
2252          movl      20(%esp),%esp
2253          popfl
2254.L016enc_out:
2255          popl      %edi
2256          popl      %esi
2257          popl      %ebx
2258          popl      %ebp
2259          ret
2260          pushfl
2261.align    4
2262.L020enc_tail:
2263          movl      %edi,%eax
2264          movl      28(%esp),%edi
2265          pushl     %eax
2266          movl      $16,%ebx
2267          subl      %ecx,%ebx
2268          cmpl      %esi,%edi
2269          je        .L022enc_in_place
2270.align    4
2271.long     2767451785
2272          jmp       .L023enc_skip_in_place
2273.L022enc_in_place:
2274          leal      (%edi,%ecx,1),%edi
2275.L023enc_skip_in_place:
2276          movl      %ebx,%ecx
2277          xorl      %eax,%eax
2278.align    4
2279.long     2868115081
2280          popl      %edi
2281          movl      28(%esp),%esi
2282          movl      (%edi),%eax
2283          movl      4(%edi),%ebx
2284          movl      $16,32(%esp)
2285          jmp       .L021enc_loop
2286.align    16
2287.L019DECRYPT:
2288          shll      $6,%edx
2289          leal      (%eax,%edx,1),%edx
2290          movl      %eax,16(%esp)
2291          movl      %edx,36(%esp)
2292          cmpl      28(%esp),%esi
2293          je        .L024dec_in_place
2294          movl      40(%esp),%edi
2295          movl      %edi,44(%esp)
2296.align    4
2297.L025dec_loop:
2298          movl      (%esi),%eax
2299          movl      4(%esi),%ebx
2300          movl      8(%esi),%ecx
2301          bswap     %eax
2302          movl      12(%esi),%edx
2303          bswap     %ebx
2304          movl      36(%esp),%edi
2305          bswap     %ecx
2306          bswap     %edx
2307          call      _x86_Camellia_decrypt
2308          movl      44(%esp),%edi
2309          movl      32(%esp),%esi
2310          bswap     %eax
2311          bswap     %ebx
2312          bswap     %ecx
2313          xorl      (%edi),%eax
2314          bswap     %edx
2315          xorl      4(%edi),%ebx
2316          xorl      8(%edi),%ecx
2317          xorl      12(%edi),%edx
2318          subl      $16,%esi
2319          jc        .L026dec_partial
2320          movl      %esi,32(%esp)
2321          movl      24(%esp),%esi
2322          movl      28(%esp),%edi
2323          movl      %eax,(%edi)
2324          movl      %ebx,4(%edi)
2325          movl      %ecx,8(%edi)
2326          movl      %edx,12(%edi)
2327          movl      %esi,44(%esp)
2328          leal      16(%esi),%esi
2329          movl      %esi,24(%esp)
2330          leal      16(%edi),%edi
2331          movl      %edi,28(%esp)
2332          jnz       .L025dec_loop
2333          movl      44(%esp),%edi
2334.L027dec_end:
2335          movl      40(%esp),%esi
2336          movl      (%edi),%eax
2337          movl      4(%edi),%ebx
2338          movl      8(%edi),%ecx
2339          movl      12(%edi),%edx
2340          movl      %eax,(%esi)
2341          movl      %ebx,4(%esi)
2342          movl      %ecx,8(%esi)
2343          movl      %edx,12(%esi)
2344          jmp       .L028dec_out
2345.align    4
2346.L026dec_partial:
2347          leal      44(%esp),%edi
2348          movl      %eax,(%edi)
2349          movl      %ebx,4(%edi)
2350          movl      %ecx,8(%edi)
2351          movl      %edx,12(%edi)
2352          leal      16(%esi),%ecx
2353          movl      %edi,%esi
2354          movl      28(%esp),%edi
2355.long     2767451785
2356          movl      24(%esp),%edi
2357          jmp       .L027dec_end
2358.align    4
2359.L024dec_in_place:
2360.L029dec_in_place_loop:
2361          leal      44(%esp),%edi
2362          movl      (%esi),%eax
2363          movl      4(%esi),%ebx
2364          movl      8(%esi),%ecx
2365          movl      12(%esi),%edx
2366          movl      %eax,(%edi)
2367          movl      %ebx,4(%edi)
2368          movl      %ecx,8(%edi)
2369          bswap     %eax
2370          movl      %edx,12(%edi)
2371          bswap     %ebx
2372          movl      36(%esp),%edi
2373          bswap     %ecx
2374          bswap     %edx
2375          call      _x86_Camellia_decrypt
2376          movl      40(%esp),%edi
2377          movl      28(%esp),%esi
2378          bswap     %eax
2379          bswap     %ebx
2380          bswap     %ecx
2381          xorl      (%edi),%eax
2382          bswap     %edx
2383          xorl      4(%edi),%ebx
2384          xorl      8(%edi),%ecx
2385          xorl      12(%edi),%edx
2386          movl      %eax,(%esi)
2387          movl      %ebx,4(%esi)
2388          movl      %ecx,8(%esi)
2389          movl      %edx,12(%esi)
2390          leal      16(%esi),%esi
2391          movl      %esi,28(%esp)
2392          leal      44(%esp),%esi
2393          movl      (%esi),%eax
2394          movl      4(%esi),%ebx
2395          movl      8(%esi),%ecx
2396          movl      12(%esi),%edx
2397          movl      %eax,(%edi)
2398          movl      %ebx,4(%edi)
2399          movl      %ecx,8(%edi)
2400          movl      %edx,12(%edi)
2401          movl      24(%esp),%esi
2402          leal      16(%esi),%esi
2403          movl      %esi,24(%esp)
2404          movl      32(%esp),%ecx
2405          subl      $16,%ecx
2406          jc        .L030dec_in_place_partial
2407          movl      %ecx,32(%esp)
2408          jnz       .L029dec_in_place_loop
2409          jmp       .L028dec_out
2410.align    4
2411.L030dec_in_place_partial:
2412          movl      28(%esp),%edi
2413          leal      44(%esp),%esi
2414          leal      (%edi,%ecx,1),%edi
2415          leal      16(%esi,%ecx,1),%esi
2416          negl      %ecx
2417.long     2767451785
2418.align    4
2419.L028dec_out:
2420          movl      20(%esp),%esp
2421          popfl
2422          popl      %edi
2423          popl      %esi
2424          popl      %ebx
2425          popl      %ebp
2426          ret
2427.size     Camellia_cbc_encrypt,.-.L_Camellia_cbc_encrypt_begin
2428.byte     67,97,109,101,108,108,105,97,32,102,111,114,32,120,56,54
2429.byte     32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115
2430.byte     115,108,46,111,114,103,62,0
2431
2432          .section ".note.gnu.property", "a"
2433          .p2align 2
2434          .long 1f - 0f
2435          .long 4f - 1f
2436          .long 5
24370:
2438          .asciz "GNU"
24391:
2440          .p2align 2
2441          .long 0xc0000002
2442          .long 3f - 2f
24432:
2444          .long 3
24453:
2446          .p2align 2
24474:
2448