Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/sys/crypto/openssl/amd64/cmll-x86_64.S
39482 views
1
/* Do not modify. This file is auto-generated from cmll-x86_64.pl. */
2
.text
3
4
5
.globl Camellia_EncryptBlock
6
.type Camellia_EncryptBlock,@function
7
.align 16
8
Camellia_EncryptBlock:
9
.cfi_startproc
10
movl $128,%eax
11
subl %edi,%eax
12
movl $3,%edi
13
adcl $0,%edi
14
jmp .Lenc_rounds
15
.cfi_endproc
16
.size Camellia_EncryptBlock,.-Camellia_EncryptBlock
17
18
.globl Camellia_EncryptBlock_Rounds
19
.type Camellia_EncryptBlock_Rounds,@function
20
.align 16
21
.Lenc_rounds:
22
Camellia_EncryptBlock_Rounds:
23
.cfi_startproc
24
pushq %rbx
25
.cfi_adjust_cfa_offset 8
26
.cfi_offset %rbx,-16
27
pushq %rbp
28
.cfi_adjust_cfa_offset 8
29
.cfi_offset %rbp,-24
30
pushq %r13
31
.cfi_adjust_cfa_offset 8
32
.cfi_offset %r13,-32
33
pushq %r14
34
.cfi_adjust_cfa_offset 8
35
.cfi_offset %r14,-40
36
pushq %r15
37
.cfi_adjust_cfa_offset 8
38
.cfi_offset %r15,-48
39
.Lenc_prologue:
40
41
42
movq %rcx,%r13
43
movq %rdx,%r14
44
45
shll $6,%edi
46
leaq .LCamellia_SBOX(%rip),%rbp
47
leaq (%r14,%rdi,1),%r15
48
49
movl 0(%rsi),%r8d
50
movl 4(%rsi),%r9d
51
movl 8(%rsi),%r10d
52
bswapl %r8d
53
movl 12(%rsi),%r11d
54
bswapl %r9d
55
bswapl %r10d
56
bswapl %r11d
57
58
call _x86_64_Camellia_encrypt
59
60
bswapl %r8d
61
bswapl %r9d
62
bswapl %r10d
63
movl %r8d,0(%r13)
64
bswapl %r11d
65
movl %r9d,4(%r13)
66
movl %r10d,8(%r13)
67
movl %r11d,12(%r13)
68
69
movq 0(%rsp),%r15
70
.cfi_restore %r15
71
movq 8(%rsp),%r14
72
.cfi_restore %r14
73
movq 16(%rsp),%r13
74
.cfi_restore %r13
75
movq 24(%rsp),%rbp
76
.cfi_restore %rbp
77
movq 32(%rsp),%rbx
78
.cfi_restore %rbx
79
leaq 40(%rsp),%rsp
80
.cfi_adjust_cfa_offset -40
81
.Lenc_epilogue:
82
.byte 0xf3,0xc3
83
.cfi_endproc
84
.size Camellia_EncryptBlock_Rounds,.-Camellia_EncryptBlock_Rounds
85
86
.type _x86_64_Camellia_encrypt,@function
87
.align 16
88
_x86_64_Camellia_encrypt:
89
.cfi_startproc
90
xorl 0(%r14),%r9d
91
xorl 4(%r14),%r8d
92
xorl 8(%r14),%r11d
93
xorl 12(%r14),%r10d
94
.align 16
95
.Leloop:
96
movl 16(%r14),%ebx
97
movl 20(%r14),%eax
98
99
xorl %r8d,%eax
100
xorl %r9d,%ebx
101
movzbl %ah,%esi
102
movzbl %bl,%edi
103
movl 2052(%rbp,%rsi,8),%edx
104
movl 0(%rbp,%rdi,8),%ecx
105
movzbl %al,%esi
106
shrl $16,%eax
107
movzbl %bh,%edi
108
xorl 4(%rbp,%rsi,8),%edx
109
shrl $16,%ebx
110
xorl 4(%rbp,%rdi,8),%ecx
111
movzbl %ah,%esi
112
movzbl %bl,%edi
113
xorl 0(%rbp,%rsi,8),%edx
114
xorl 2052(%rbp,%rdi,8),%ecx
115
movzbl %al,%esi
116
movzbl %bh,%edi
117
xorl 2048(%rbp,%rsi,8),%edx
118
xorl 2048(%rbp,%rdi,8),%ecx
119
movl 24(%r14),%ebx
120
movl 28(%r14),%eax
121
xorl %edx,%ecx
122
rorl $8,%edx
123
xorl %ecx,%r10d
124
xorl %ecx,%r11d
125
xorl %edx,%r11d
126
xorl %r10d,%eax
127
xorl %r11d,%ebx
128
movzbl %ah,%esi
129
movzbl %bl,%edi
130
movl 2052(%rbp,%rsi,8),%edx
131
movl 0(%rbp,%rdi,8),%ecx
132
movzbl %al,%esi
133
shrl $16,%eax
134
movzbl %bh,%edi
135
xorl 4(%rbp,%rsi,8),%edx
136
shrl $16,%ebx
137
xorl 4(%rbp,%rdi,8),%ecx
138
movzbl %ah,%esi
139
movzbl %bl,%edi
140
xorl 0(%rbp,%rsi,8),%edx
141
xorl 2052(%rbp,%rdi,8),%ecx
142
movzbl %al,%esi
143
movzbl %bh,%edi
144
xorl 2048(%rbp,%rsi,8),%edx
145
xorl 2048(%rbp,%rdi,8),%ecx
146
movl 32(%r14),%ebx
147
movl 36(%r14),%eax
148
xorl %edx,%ecx
149
rorl $8,%edx
150
xorl %ecx,%r8d
151
xorl %ecx,%r9d
152
xorl %edx,%r9d
153
xorl %r8d,%eax
154
xorl %r9d,%ebx
155
movzbl %ah,%esi
156
movzbl %bl,%edi
157
movl 2052(%rbp,%rsi,8),%edx
158
movl 0(%rbp,%rdi,8),%ecx
159
movzbl %al,%esi
160
shrl $16,%eax
161
movzbl %bh,%edi
162
xorl 4(%rbp,%rsi,8),%edx
163
shrl $16,%ebx
164
xorl 4(%rbp,%rdi,8),%ecx
165
movzbl %ah,%esi
166
movzbl %bl,%edi
167
xorl 0(%rbp,%rsi,8),%edx
168
xorl 2052(%rbp,%rdi,8),%ecx
169
movzbl %al,%esi
170
movzbl %bh,%edi
171
xorl 2048(%rbp,%rsi,8),%edx
172
xorl 2048(%rbp,%rdi,8),%ecx
173
movl 40(%r14),%ebx
174
movl 44(%r14),%eax
175
xorl %edx,%ecx
176
rorl $8,%edx
177
xorl %ecx,%r10d
178
xorl %ecx,%r11d
179
xorl %edx,%r11d
180
xorl %r10d,%eax
181
xorl %r11d,%ebx
182
movzbl %ah,%esi
183
movzbl %bl,%edi
184
movl 2052(%rbp,%rsi,8),%edx
185
movl 0(%rbp,%rdi,8),%ecx
186
movzbl %al,%esi
187
shrl $16,%eax
188
movzbl %bh,%edi
189
xorl 4(%rbp,%rsi,8),%edx
190
shrl $16,%ebx
191
xorl 4(%rbp,%rdi,8),%ecx
192
movzbl %ah,%esi
193
movzbl %bl,%edi
194
xorl 0(%rbp,%rsi,8),%edx
195
xorl 2052(%rbp,%rdi,8),%ecx
196
movzbl %al,%esi
197
movzbl %bh,%edi
198
xorl 2048(%rbp,%rsi,8),%edx
199
xorl 2048(%rbp,%rdi,8),%ecx
200
movl 48(%r14),%ebx
201
movl 52(%r14),%eax
202
xorl %edx,%ecx
203
rorl $8,%edx
204
xorl %ecx,%r8d
205
xorl %ecx,%r9d
206
xorl %edx,%r9d
207
xorl %r8d,%eax
208
xorl %r9d,%ebx
209
movzbl %ah,%esi
210
movzbl %bl,%edi
211
movl 2052(%rbp,%rsi,8),%edx
212
movl 0(%rbp,%rdi,8),%ecx
213
movzbl %al,%esi
214
shrl $16,%eax
215
movzbl %bh,%edi
216
xorl 4(%rbp,%rsi,8),%edx
217
shrl $16,%ebx
218
xorl 4(%rbp,%rdi,8),%ecx
219
movzbl %ah,%esi
220
movzbl %bl,%edi
221
xorl 0(%rbp,%rsi,8),%edx
222
xorl 2052(%rbp,%rdi,8),%ecx
223
movzbl %al,%esi
224
movzbl %bh,%edi
225
xorl 2048(%rbp,%rsi,8),%edx
226
xorl 2048(%rbp,%rdi,8),%ecx
227
movl 56(%r14),%ebx
228
movl 60(%r14),%eax
229
xorl %edx,%ecx
230
rorl $8,%edx
231
xorl %ecx,%r10d
232
xorl %ecx,%r11d
233
xorl %edx,%r11d
234
xorl %r10d,%eax
235
xorl %r11d,%ebx
236
movzbl %ah,%esi
237
movzbl %bl,%edi
238
movl 2052(%rbp,%rsi,8),%edx
239
movl 0(%rbp,%rdi,8),%ecx
240
movzbl %al,%esi
241
shrl $16,%eax
242
movzbl %bh,%edi
243
xorl 4(%rbp,%rsi,8),%edx
244
shrl $16,%ebx
245
xorl 4(%rbp,%rdi,8),%ecx
246
movzbl %ah,%esi
247
movzbl %bl,%edi
248
xorl 0(%rbp,%rsi,8),%edx
249
xorl 2052(%rbp,%rdi,8),%ecx
250
movzbl %al,%esi
251
movzbl %bh,%edi
252
xorl 2048(%rbp,%rsi,8),%edx
253
xorl 2048(%rbp,%rdi,8),%ecx
254
movl 64(%r14),%ebx
255
movl 68(%r14),%eax
256
xorl %edx,%ecx
257
rorl $8,%edx
258
xorl %ecx,%r8d
259
xorl %ecx,%r9d
260
xorl %edx,%r9d
261
leaq 64(%r14),%r14
262
cmpq %r15,%r14
263
movl 8(%r14),%edx
264
movl 12(%r14),%ecx
265
je .Ledone
266
267
andl %r8d,%eax
268
orl %r11d,%edx
269
roll $1,%eax
270
xorl %edx,%r10d
271
xorl %eax,%r9d
272
andl %r10d,%ecx
273
orl %r9d,%ebx
274
roll $1,%ecx
275
xorl %ebx,%r8d
276
xorl %ecx,%r11d
277
jmp .Leloop
278
279
.align 16
280
.Ledone:
281
xorl %r10d,%eax
282
xorl %r11d,%ebx
283
xorl %r8d,%ecx
284
xorl %r9d,%edx
285
286
movl %eax,%r8d
287
movl %ebx,%r9d
288
movl %ecx,%r10d
289
movl %edx,%r11d
290
291
.byte 0xf3,0xc3
292
.cfi_endproc
293
.size _x86_64_Camellia_encrypt,.-_x86_64_Camellia_encrypt
294
295
296
.globl Camellia_DecryptBlock
297
.type Camellia_DecryptBlock,@function
298
.align 16
299
Camellia_DecryptBlock:
300
.cfi_startproc
301
movl $128,%eax
302
subl %edi,%eax
303
movl $3,%edi
304
adcl $0,%edi
305
jmp .Ldec_rounds
306
.cfi_endproc
307
.size Camellia_DecryptBlock,.-Camellia_DecryptBlock
308
309
.globl Camellia_DecryptBlock_Rounds
310
.type Camellia_DecryptBlock_Rounds,@function
311
.align 16
312
.Ldec_rounds:
313
Camellia_DecryptBlock_Rounds:
314
.cfi_startproc
315
pushq %rbx
316
.cfi_adjust_cfa_offset 8
317
.cfi_offset %rbx,-16
318
pushq %rbp
319
.cfi_adjust_cfa_offset 8
320
.cfi_offset %rbp,-24
321
pushq %r13
322
.cfi_adjust_cfa_offset 8
323
.cfi_offset %r13,-32
324
pushq %r14
325
.cfi_adjust_cfa_offset 8
326
.cfi_offset %r14,-40
327
pushq %r15
328
.cfi_adjust_cfa_offset 8
329
.cfi_offset %r15,-48
330
.Ldec_prologue:
331
332
333
movq %rcx,%r13
334
movq %rdx,%r15
335
336
shll $6,%edi
337
leaq .LCamellia_SBOX(%rip),%rbp
338
leaq (%r15,%rdi,1),%r14
339
340
movl 0(%rsi),%r8d
341
movl 4(%rsi),%r9d
342
movl 8(%rsi),%r10d
343
bswapl %r8d
344
movl 12(%rsi),%r11d
345
bswapl %r9d
346
bswapl %r10d
347
bswapl %r11d
348
349
call _x86_64_Camellia_decrypt
350
351
bswapl %r8d
352
bswapl %r9d
353
bswapl %r10d
354
movl %r8d,0(%r13)
355
bswapl %r11d
356
movl %r9d,4(%r13)
357
movl %r10d,8(%r13)
358
movl %r11d,12(%r13)
359
360
movq 0(%rsp),%r15
361
.cfi_restore %r15
362
movq 8(%rsp),%r14
363
.cfi_restore %r14
364
movq 16(%rsp),%r13
365
.cfi_restore %r13
366
movq 24(%rsp),%rbp
367
.cfi_restore %rbp
368
movq 32(%rsp),%rbx
369
.cfi_restore %rbx
370
leaq 40(%rsp),%rsp
371
.cfi_adjust_cfa_offset -40
372
.Ldec_epilogue:
373
.byte 0xf3,0xc3
374
.cfi_endproc
375
.size Camellia_DecryptBlock_Rounds,.-Camellia_DecryptBlock_Rounds
376
377
.type _x86_64_Camellia_decrypt,@function
378
.align 16
379
_x86_64_Camellia_decrypt:
380
.cfi_startproc
381
xorl 0(%r14),%r9d
382
xorl 4(%r14),%r8d
383
xorl 8(%r14),%r11d
384
xorl 12(%r14),%r10d
385
.align 16
386
.Ldloop:
387
movl -8(%r14),%ebx
388
movl -4(%r14),%eax
389
390
xorl %r8d,%eax
391
xorl %r9d,%ebx
392
movzbl %ah,%esi
393
movzbl %bl,%edi
394
movl 2052(%rbp,%rsi,8),%edx
395
movl 0(%rbp,%rdi,8),%ecx
396
movzbl %al,%esi
397
shrl $16,%eax
398
movzbl %bh,%edi
399
xorl 4(%rbp,%rsi,8),%edx
400
shrl $16,%ebx
401
xorl 4(%rbp,%rdi,8),%ecx
402
movzbl %ah,%esi
403
movzbl %bl,%edi
404
xorl 0(%rbp,%rsi,8),%edx
405
xorl 2052(%rbp,%rdi,8),%ecx
406
movzbl %al,%esi
407
movzbl %bh,%edi
408
xorl 2048(%rbp,%rsi,8),%edx
409
xorl 2048(%rbp,%rdi,8),%ecx
410
movl -16(%r14),%ebx
411
movl -12(%r14),%eax
412
xorl %edx,%ecx
413
rorl $8,%edx
414
xorl %ecx,%r10d
415
xorl %ecx,%r11d
416
xorl %edx,%r11d
417
xorl %r10d,%eax
418
xorl %r11d,%ebx
419
movzbl %ah,%esi
420
movzbl %bl,%edi
421
movl 2052(%rbp,%rsi,8),%edx
422
movl 0(%rbp,%rdi,8),%ecx
423
movzbl %al,%esi
424
shrl $16,%eax
425
movzbl %bh,%edi
426
xorl 4(%rbp,%rsi,8),%edx
427
shrl $16,%ebx
428
xorl 4(%rbp,%rdi,8),%ecx
429
movzbl %ah,%esi
430
movzbl %bl,%edi
431
xorl 0(%rbp,%rsi,8),%edx
432
xorl 2052(%rbp,%rdi,8),%ecx
433
movzbl %al,%esi
434
movzbl %bh,%edi
435
xorl 2048(%rbp,%rsi,8),%edx
436
xorl 2048(%rbp,%rdi,8),%ecx
437
movl -24(%r14),%ebx
438
movl -20(%r14),%eax
439
xorl %edx,%ecx
440
rorl $8,%edx
441
xorl %ecx,%r8d
442
xorl %ecx,%r9d
443
xorl %edx,%r9d
444
xorl %r8d,%eax
445
xorl %r9d,%ebx
446
movzbl %ah,%esi
447
movzbl %bl,%edi
448
movl 2052(%rbp,%rsi,8),%edx
449
movl 0(%rbp,%rdi,8),%ecx
450
movzbl %al,%esi
451
shrl $16,%eax
452
movzbl %bh,%edi
453
xorl 4(%rbp,%rsi,8),%edx
454
shrl $16,%ebx
455
xorl 4(%rbp,%rdi,8),%ecx
456
movzbl %ah,%esi
457
movzbl %bl,%edi
458
xorl 0(%rbp,%rsi,8),%edx
459
xorl 2052(%rbp,%rdi,8),%ecx
460
movzbl %al,%esi
461
movzbl %bh,%edi
462
xorl 2048(%rbp,%rsi,8),%edx
463
xorl 2048(%rbp,%rdi,8),%ecx
464
movl -32(%r14),%ebx
465
movl -28(%r14),%eax
466
xorl %edx,%ecx
467
rorl $8,%edx
468
xorl %ecx,%r10d
469
xorl %ecx,%r11d
470
xorl %edx,%r11d
471
xorl %r10d,%eax
472
xorl %r11d,%ebx
473
movzbl %ah,%esi
474
movzbl %bl,%edi
475
movl 2052(%rbp,%rsi,8),%edx
476
movl 0(%rbp,%rdi,8),%ecx
477
movzbl %al,%esi
478
shrl $16,%eax
479
movzbl %bh,%edi
480
xorl 4(%rbp,%rsi,8),%edx
481
shrl $16,%ebx
482
xorl 4(%rbp,%rdi,8),%ecx
483
movzbl %ah,%esi
484
movzbl %bl,%edi
485
xorl 0(%rbp,%rsi,8),%edx
486
xorl 2052(%rbp,%rdi,8),%ecx
487
movzbl %al,%esi
488
movzbl %bh,%edi
489
xorl 2048(%rbp,%rsi,8),%edx
490
xorl 2048(%rbp,%rdi,8),%ecx
491
movl -40(%r14),%ebx
492
movl -36(%r14),%eax
493
xorl %edx,%ecx
494
rorl $8,%edx
495
xorl %ecx,%r8d
496
xorl %ecx,%r9d
497
xorl %edx,%r9d
498
xorl %r8d,%eax
499
xorl %r9d,%ebx
500
movzbl %ah,%esi
501
movzbl %bl,%edi
502
movl 2052(%rbp,%rsi,8),%edx
503
movl 0(%rbp,%rdi,8),%ecx
504
movzbl %al,%esi
505
shrl $16,%eax
506
movzbl %bh,%edi
507
xorl 4(%rbp,%rsi,8),%edx
508
shrl $16,%ebx
509
xorl 4(%rbp,%rdi,8),%ecx
510
movzbl %ah,%esi
511
movzbl %bl,%edi
512
xorl 0(%rbp,%rsi,8),%edx
513
xorl 2052(%rbp,%rdi,8),%ecx
514
movzbl %al,%esi
515
movzbl %bh,%edi
516
xorl 2048(%rbp,%rsi,8),%edx
517
xorl 2048(%rbp,%rdi,8),%ecx
518
movl -48(%r14),%ebx
519
movl -44(%r14),%eax
520
xorl %edx,%ecx
521
rorl $8,%edx
522
xorl %ecx,%r10d
523
xorl %ecx,%r11d
524
xorl %edx,%r11d
525
xorl %r10d,%eax
526
xorl %r11d,%ebx
527
movzbl %ah,%esi
528
movzbl %bl,%edi
529
movl 2052(%rbp,%rsi,8),%edx
530
movl 0(%rbp,%rdi,8),%ecx
531
movzbl %al,%esi
532
shrl $16,%eax
533
movzbl %bh,%edi
534
xorl 4(%rbp,%rsi,8),%edx
535
shrl $16,%ebx
536
xorl 4(%rbp,%rdi,8),%ecx
537
movzbl %ah,%esi
538
movzbl %bl,%edi
539
xorl 0(%rbp,%rsi,8),%edx
540
xorl 2052(%rbp,%rdi,8),%ecx
541
movzbl %al,%esi
542
movzbl %bh,%edi
543
xorl 2048(%rbp,%rsi,8),%edx
544
xorl 2048(%rbp,%rdi,8),%ecx
545
movl -56(%r14),%ebx
546
movl -52(%r14),%eax
547
xorl %edx,%ecx
548
rorl $8,%edx
549
xorl %ecx,%r8d
550
xorl %ecx,%r9d
551
xorl %edx,%r9d
552
leaq -64(%r14),%r14
553
cmpq %r15,%r14
554
movl 0(%r14),%edx
555
movl 4(%r14),%ecx
556
je .Lddone
557
558
andl %r8d,%eax
559
orl %r11d,%edx
560
roll $1,%eax
561
xorl %edx,%r10d
562
xorl %eax,%r9d
563
andl %r10d,%ecx
564
orl %r9d,%ebx
565
roll $1,%ecx
566
xorl %ebx,%r8d
567
xorl %ecx,%r11d
568
569
jmp .Ldloop
570
571
.align 16
572
.Lddone:
573
xorl %r10d,%ecx
574
xorl %r11d,%edx
575
xorl %r8d,%eax
576
xorl %r9d,%ebx
577
578
movl %ecx,%r8d
579
movl %edx,%r9d
580
movl %eax,%r10d
581
movl %ebx,%r11d
582
583
.byte 0xf3,0xc3
584
.cfi_endproc
585
.size _x86_64_Camellia_decrypt,.-_x86_64_Camellia_decrypt
586
.globl Camellia_Ekeygen
587
.type Camellia_Ekeygen,@function
588
.align 16
589
Camellia_Ekeygen:
590
.cfi_startproc
591
pushq %rbx
592
.cfi_adjust_cfa_offset 8
593
.cfi_offset %rbx,-16
594
pushq %rbp
595
.cfi_adjust_cfa_offset 8
596
.cfi_offset %rbp,-24
597
pushq %r13
598
.cfi_adjust_cfa_offset 8
599
.cfi_offset %r13,-32
600
pushq %r14
601
.cfi_adjust_cfa_offset 8
602
.cfi_offset %r14,-40
603
pushq %r15
604
.cfi_adjust_cfa_offset 8
605
.cfi_offset %r15,-48
606
.Lkey_prologue:
607
608
movl %edi,%r15d
609
movq %rdx,%r13
610
611
movl 0(%rsi),%r8d
612
movl 4(%rsi),%r9d
613
movl 8(%rsi),%r10d
614
movl 12(%rsi),%r11d
615
616
bswapl %r8d
617
bswapl %r9d
618
bswapl %r10d
619
bswapl %r11d
620
movl %r9d,0(%r13)
621
movl %r8d,4(%r13)
622
movl %r11d,8(%r13)
623
movl %r10d,12(%r13)
624
cmpq $128,%r15
625
je .L1st128
626
627
movl 16(%rsi),%r8d
628
movl 20(%rsi),%r9d
629
cmpq $192,%r15
630
je .L1st192
631
movl 24(%rsi),%r10d
632
movl 28(%rsi),%r11d
633
jmp .L1st256
634
.L1st192:
635
movl %r8d,%r10d
636
movl %r9d,%r11d
637
notl %r10d
638
notl %r11d
639
.L1st256:
640
bswapl %r8d
641
bswapl %r9d
642
bswapl %r10d
643
bswapl %r11d
644
movl %r9d,32(%r13)
645
movl %r8d,36(%r13)
646
movl %r11d,40(%r13)
647
movl %r10d,44(%r13)
648
xorl 0(%r13),%r9d
649
xorl 4(%r13),%r8d
650
xorl 8(%r13),%r11d
651
xorl 12(%r13),%r10d
652
653
.L1st128:
654
leaq .LCamellia_SIGMA(%rip),%r14
655
leaq .LCamellia_SBOX(%rip),%rbp
656
657
movl 0(%r14),%ebx
658
movl 4(%r14),%eax
659
xorl %r8d,%eax
660
xorl %r9d,%ebx
661
movzbl %ah,%esi
662
movzbl %bl,%edi
663
movl 2052(%rbp,%rsi,8),%edx
664
movl 0(%rbp,%rdi,8),%ecx
665
movzbl %al,%esi
666
shrl $16,%eax
667
movzbl %bh,%edi
668
xorl 4(%rbp,%rsi,8),%edx
669
shrl $16,%ebx
670
xorl 4(%rbp,%rdi,8),%ecx
671
movzbl %ah,%esi
672
movzbl %bl,%edi
673
xorl 0(%rbp,%rsi,8),%edx
674
xorl 2052(%rbp,%rdi,8),%ecx
675
movzbl %al,%esi
676
movzbl %bh,%edi
677
xorl 2048(%rbp,%rsi,8),%edx
678
xorl 2048(%rbp,%rdi,8),%ecx
679
movl 8(%r14),%ebx
680
movl 12(%r14),%eax
681
xorl %edx,%ecx
682
rorl $8,%edx
683
xorl %ecx,%r10d
684
xorl %ecx,%r11d
685
xorl %edx,%r11d
686
xorl %r10d,%eax
687
xorl %r11d,%ebx
688
movzbl %ah,%esi
689
movzbl %bl,%edi
690
movl 2052(%rbp,%rsi,8),%edx
691
movl 0(%rbp,%rdi,8),%ecx
692
movzbl %al,%esi
693
shrl $16,%eax
694
movzbl %bh,%edi
695
xorl 4(%rbp,%rsi,8),%edx
696
shrl $16,%ebx
697
xorl 4(%rbp,%rdi,8),%ecx
698
movzbl %ah,%esi
699
movzbl %bl,%edi
700
xorl 0(%rbp,%rsi,8),%edx
701
xorl 2052(%rbp,%rdi,8),%ecx
702
movzbl %al,%esi
703
movzbl %bh,%edi
704
xorl 2048(%rbp,%rsi,8),%edx
705
xorl 2048(%rbp,%rdi,8),%ecx
706
movl 16(%r14),%ebx
707
movl 20(%r14),%eax
708
xorl %edx,%ecx
709
rorl $8,%edx
710
xorl %ecx,%r8d
711
xorl %ecx,%r9d
712
xorl %edx,%r9d
713
xorl 0(%r13),%r9d
714
xorl 4(%r13),%r8d
715
xorl 8(%r13),%r11d
716
xorl 12(%r13),%r10d
717
xorl %r8d,%eax
718
xorl %r9d,%ebx
719
movzbl %ah,%esi
720
movzbl %bl,%edi
721
movl 2052(%rbp,%rsi,8),%edx
722
movl 0(%rbp,%rdi,8),%ecx
723
movzbl %al,%esi
724
shrl $16,%eax
725
movzbl %bh,%edi
726
xorl 4(%rbp,%rsi,8),%edx
727
shrl $16,%ebx
728
xorl 4(%rbp,%rdi,8),%ecx
729
movzbl %ah,%esi
730
movzbl %bl,%edi
731
xorl 0(%rbp,%rsi,8),%edx
732
xorl 2052(%rbp,%rdi,8),%ecx
733
movzbl %al,%esi
734
movzbl %bh,%edi
735
xorl 2048(%rbp,%rsi,8),%edx
736
xorl 2048(%rbp,%rdi,8),%ecx
737
movl 24(%r14),%ebx
738
movl 28(%r14),%eax
739
xorl %edx,%ecx
740
rorl $8,%edx
741
xorl %ecx,%r10d
742
xorl %ecx,%r11d
743
xorl %edx,%r11d
744
xorl %r10d,%eax
745
xorl %r11d,%ebx
746
movzbl %ah,%esi
747
movzbl %bl,%edi
748
movl 2052(%rbp,%rsi,8),%edx
749
movl 0(%rbp,%rdi,8),%ecx
750
movzbl %al,%esi
751
shrl $16,%eax
752
movzbl %bh,%edi
753
xorl 4(%rbp,%rsi,8),%edx
754
shrl $16,%ebx
755
xorl 4(%rbp,%rdi,8),%ecx
756
movzbl %ah,%esi
757
movzbl %bl,%edi
758
xorl 0(%rbp,%rsi,8),%edx
759
xorl 2052(%rbp,%rdi,8),%ecx
760
movzbl %al,%esi
761
movzbl %bh,%edi
762
xorl 2048(%rbp,%rsi,8),%edx
763
xorl 2048(%rbp,%rdi,8),%ecx
764
movl 32(%r14),%ebx
765
movl 36(%r14),%eax
766
xorl %edx,%ecx
767
rorl $8,%edx
768
xorl %ecx,%r8d
769
xorl %ecx,%r9d
770
xorl %edx,%r9d
771
cmpq $128,%r15
772
jne .L2nd256
773
774
leaq 128(%r13),%r13
775
shlq $32,%r8
776
shlq $32,%r10
777
orq %r9,%r8
778
orq %r11,%r10
779
movq -128(%r13),%rax
780
movq -120(%r13),%rbx
781
movq %r8,-112(%r13)
782
movq %r10,-104(%r13)
783
movq %rax,%r11
784
shlq $15,%rax
785
movq %rbx,%r9
786
shrq $49,%r9
787
shrq $49,%r11
788
orq %r9,%rax
789
shlq $15,%rbx
790
orq %r11,%rbx
791
movq %rax,-96(%r13)
792
movq %rbx,-88(%r13)
793
movq %r8,%r11
794
shlq $15,%r8
795
movq %r10,%r9
796
shrq $49,%r9
797
shrq $49,%r11
798
orq %r9,%r8
799
shlq $15,%r10
800
orq %r11,%r10
801
movq %r8,-80(%r13)
802
movq %r10,-72(%r13)
803
movq %r8,%r11
804
shlq $15,%r8
805
movq %r10,%r9
806
shrq $49,%r9
807
shrq $49,%r11
808
orq %r9,%r8
809
shlq $15,%r10
810
orq %r11,%r10
811
movq %r8,-64(%r13)
812
movq %r10,-56(%r13)
813
movq %rax,%r11
814
shlq $30,%rax
815
movq %rbx,%r9
816
shrq $34,%r9
817
shrq $34,%r11
818
orq %r9,%rax
819
shlq $30,%rbx
820
orq %r11,%rbx
821
movq %rax,-48(%r13)
822
movq %rbx,-40(%r13)
823
movq %r8,%r11
824
shlq $15,%r8
825
movq %r10,%r9
826
shrq $49,%r9
827
shrq $49,%r11
828
orq %r9,%r8
829
shlq $15,%r10
830
orq %r11,%r10
831
movq %r8,-32(%r13)
832
movq %rax,%r11
833
shlq $15,%rax
834
movq %rbx,%r9
835
shrq $49,%r9
836
shrq $49,%r11
837
orq %r9,%rax
838
shlq $15,%rbx
839
orq %r11,%rbx
840
movq %rbx,-24(%r13)
841
movq %r8,%r11
842
shlq $15,%r8
843
movq %r10,%r9
844
shrq $49,%r9
845
shrq $49,%r11
846
orq %r9,%r8
847
shlq $15,%r10
848
orq %r11,%r10
849
movq %r8,-16(%r13)
850
movq %r10,-8(%r13)
851
movq %rax,%r11
852
shlq $17,%rax
853
movq %rbx,%r9
854
shrq $47,%r9
855
shrq $47,%r11
856
orq %r9,%rax
857
shlq $17,%rbx
858
orq %r11,%rbx
859
movq %rax,0(%r13)
860
movq %rbx,8(%r13)
861
movq %rax,%r11
862
shlq $17,%rax
863
movq %rbx,%r9
864
shrq $47,%r9
865
shrq $47,%r11
866
orq %r9,%rax
867
shlq $17,%rbx
868
orq %r11,%rbx
869
movq %rax,16(%r13)
870
movq %rbx,24(%r13)
871
movq %r8,%r11
872
shlq $34,%r8
873
movq %r10,%r9
874
shrq $30,%r9
875
shrq $30,%r11
876
orq %r9,%r8
877
shlq $34,%r10
878
orq %r11,%r10
879
movq %r8,32(%r13)
880
movq %r10,40(%r13)
881
movq %rax,%r11
882
shlq $17,%rax
883
movq %rbx,%r9
884
shrq $47,%r9
885
shrq $47,%r11
886
orq %r9,%rax
887
shlq $17,%rbx
888
orq %r11,%rbx
889
movq %rax,48(%r13)
890
movq %rbx,56(%r13)
891
movq %r8,%r11
892
shlq $17,%r8
893
movq %r10,%r9
894
shrq $47,%r9
895
shrq $47,%r11
896
orq %r9,%r8
897
shlq $17,%r10
898
orq %r11,%r10
899
movq %r8,64(%r13)
900
movq %r10,72(%r13)
901
movl $3,%eax
902
jmp .Ldone
903
.align 16
904
.L2nd256:
905
movl %r9d,48(%r13)
906
movl %r8d,52(%r13)
907
movl %r11d,56(%r13)
908
movl %r10d,60(%r13)
909
xorl 32(%r13),%r9d
910
xorl 36(%r13),%r8d
911
xorl 40(%r13),%r11d
912
xorl 44(%r13),%r10d
913
xorl %r8d,%eax
914
xorl %r9d,%ebx
915
movzbl %ah,%esi
916
movzbl %bl,%edi
917
movl 2052(%rbp,%rsi,8),%edx
918
movl 0(%rbp,%rdi,8),%ecx
919
movzbl %al,%esi
920
shrl $16,%eax
921
movzbl %bh,%edi
922
xorl 4(%rbp,%rsi,8),%edx
923
shrl $16,%ebx
924
xorl 4(%rbp,%rdi,8),%ecx
925
movzbl %ah,%esi
926
movzbl %bl,%edi
927
xorl 0(%rbp,%rsi,8),%edx
928
xorl 2052(%rbp,%rdi,8),%ecx
929
movzbl %al,%esi
930
movzbl %bh,%edi
931
xorl 2048(%rbp,%rsi,8),%edx
932
xorl 2048(%rbp,%rdi,8),%ecx
933
movl 40(%r14),%ebx
934
movl 44(%r14),%eax
935
xorl %edx,%ecx
936
rorl $8,%edx
937
xorl %ecx,%r10d
938
xorl %ecx,%r11d
939
xorl %edx,%r11d
940
xorl %r10d,%eax
941
xorl %r11d,%ebx
942
movzbl %ah,%esi
943
movzbl %bl,%edi
944
movl 2052(%rbp,%rsi,8),%edx
945
movl 0(%rbp,%rdi,8),%ecx
946
movzbl %al,%esi
947
shrl $16,%eax
948
movzbl %bh,%edi
949
xorl 4(%rbp,%rsi,8),%edx
950
shrl $16,%ebx
951
xorl 4(%rbp,%rdi,8),%ecx
952
movzbl %ah,%esi
953
movzbl %bl,%edi
954
xorl 0(%rbp,%rsi,8),%edx
955
xorl 2052(%rbp,%rdi,8),%ecx
956
movzbl %al,%esi
957
movzbl %bh,%edi
958
xorl 2048(%rbp,%rsi,8),%edx
959
xorl 2048(%rbp,%rdi,8),%ecx
960
movl 48(%r14),%ebx
961
movl 52(%r14),%eax
962
xorl %edx,%ecx
963
rorl $8,%edx
964
xorl %ecx,%r8d
965
xorl %ecx,%r9d
966
xorl %edx,%r9d
967
movq 0(%r13),%rax
968
movq 8(%r13),%rbx
969
movq 32(%r13),%rcx
970
movq 40(%r13),%rdx
971
movq 48(%r13),%r14
972
movq 56(%r13),%r15
973
leaq 128(%r13),%r13
974
shlq $32,%r8
975
shlq $32,%r10
976
orq %r9,%r8
977
orq %r11,%r10
978
movq %r8,-112(%r13)
979
movq %r10,-104(%r13)
980
movq %rcx,%r11
981
shlq $15,%rcx
982
movq %rdx,%r9
983
shrq $49,%r9
984
shrq $49,%r11
985
orq %r9,%rcx
986
shlq $15,%rdx
987
orq %r11,%rdx
988
movq %rcx,-96(%r13)
989
movq %rdx,-88(%r13)
990
movq %r14,%r11
991
shlq $15,%r14
992
movq %r15,%r9
993
shrq $49,%r9
994
shrq $49,%r11
995
orq %r9,%r14
996
shlq $15,%r15
997
orq %r11,%r15
998
movq %r14,-80(%r13)
999
movq %r15,-72(%r13)
1000
movq %rcx,%r11
1001
shlq $15,%rcx
1002
movq %rdx,%r9
1003
shrq $49,%r9
1004
shrq $49,%r11
1005
orq %r9,%rcx
1006
shlq $15,%rdx
1007
orq %r11,%rdx
1008
movq %rcx,-64(%r13)
1009
movq %rdx,-56(%r13)
1010
movq %r8,%r11
1011
shlq $30,%r8
1012
movq %r10,%r9
1013
shrq $34,%r9
1014
shrq $34,%r11
1015
orq %r9,%r8
1016
shlq $30,%r10
1017
orq %r11,%r10
1018
movq %r8,-48(%r13)
1019
movq %r10,-40(%r13)
1020
movq %rax,%r11
1021
shlq $45,%rax
1022
movq %rbx,%r9
1023
shrq $19,%r9
1024
shrq $19,%r11
1025
orq %r9,%rax
1026
shlq $45,%rbx
1027
orq %r11,%rbx
1028
movq %rax,-32(%r13)
1029
movq %rbx,-24(%r13)
1030
movq %r14,%r11
1031
shlq $30,%r14
1032
movq %r15,%r9
1033
shrq $34,%r9
1034
shrq $34,%r11
1035
orq %r9,%r14
1036
shlq $30,%r15
1037
orq %r11,%r15
1038
movq %r14,-16(%r13)
1039
movq %r15,-8(%r13)
1040
movq %rax,%r11
1041
shlq $15,%rax
1042
movq %rbx,%r9
1043
shrq $49,%r9
1044
shrq $49,%r11
1045
orq %r9,%rax
1046
shlq $15,%rbx
1047
orq %r11,%rbx
1048
movq %rax,0(%r13)
1049
movq %rbx,8(%r13)
1050
movq %rcx,%r11
1051
shlq $30,%rcx
1052
movq %rdx,%r9
1053
shrq $34,%r9
1054
shrq $34,%r11
1055
orq %r9,%rcx
1056
shlq $30,%rdx
1057
orq %r11,%rdx
1058
movq %rcx,16(%r13)
1059
movq %rdx,24(%r13)
1060
movq %r8,%r11
1061
shlq $30,%r8
1062
movq %r10,%r9
1063
shrq $34,%r9
1064
shrq $34,%r11
1065
orq %r9,%r8
1066
shlq $30,%r10
1067
orq %r11,%r10
1068
movq %r8,32(%r13)
1069
movq %r10,40(%r13)
1070
movq %rax,%r11
1071
shlq $17,%rax
1072
movq %rbx,%r9
1073
shrq $47,%r9
1074
shrq $47,%r11
1075
orq %r9,%rax
1076
shlq $17,%rbx
1077
orq %r11,%rbx
1078
movq %rax,48(%r13)
1079
movq %rbx,56(%r13)
1080
movq %r14,%r11
1081
shlq $32,%r14
1082
movq %r15,%r9
1083
shrq $32,%r9
1084
shrq $32,%r11
1085
orq %r9,%r14
1086
shlq $32,%r15
1087
orq %r11,%r15
1088
movq %r14,64(%r13)
1089
movq %r15,72(%r13)
1090
movq %rcx,%r11
1091
shlq $34,%rcx
1092
movq %rdx,%r9
1093
shrq $30,%r9
1094
shrq $30,%r11
1095
orq %r9,%rcx
1096
shlq $34,%rdx
1097
orq %r11,%rdx
1098
movq %rcx,80(%r13)
1099
movq %rdx,88(%r13)
1100
movq %r14,%r11
1101
shlq $17,%r14
1102
movq %r15,%r9
1103
shrq $47,%r9
1104
shrq $47,%r11
1105
orq %r9,%r14
1106
shlq $17,%r15
1107
orq %r11,%r15
1108
movq %r14,96(%r13)
1109
movq %r15,104(%r13)
1110
movq %rax,%r11
1111
shlq $34,%rax
1112
movq %rbx,%r9
1113
shrq $30,%r9
1114
shrq $30,%r11
1115
orq %r9,%rax
1116
shlq $34,%rbx
1117
orq %r11,%rbx
1118
movq %rax,112(%r13)
1119
movq %rbx,120(%r13)
1120
movq %r8,%r11
1121
shlq $51,%r8
1122
movq %r10,%r9
1123
shrq $13,%r9
1124
shrq $13,%r11
1125
orq %r9,%r8
1126
shlq $51,%r10
1127
orq %r11,%r10
1128
movq %r8,128(%r13)
1129
movq %r10,136(%r13)
1130
movl $4,%eax
1131
.Ldone:
1132
movq 0(%rsp),%r15
1133
.cfi_restore %r15
1134
movq 8(%rsp),%r14
1135
.cfi_restore %r14
1136
movq 16(%rsp),%r13
1137
.cfi_restore %r13
1138
movq 24(%rsp),%rbp
1139
.cfi_restore %rbp
1140
movq 32(%rsp),%rbx
1141
.cfi_restore %rbx
1142
leaq 40(%rsp),%rsp
1143
.cfi_adjust_cfa_offset -40
1144
.Lkey_epilogue:
1145
.byte 0xf3,0xc3
1146
.cfi_endproc
1147
.size Camellia_Ekeygen,.-Camellia_Ekeygen
1148
.section .rodata
1149
.align 64
1150
.LCamellia_SIGMA:
1151
.long 0x3bcc908b, 0xa09e667f, 0x4caa73b2, 0xb67ae858
1152
.long 0xe94f82be, 0xc6ef372f, 0xf1d36f1c, 0x54ff53a5
1153
.long 0xde682d1d, 0x10e527fa, 0xb3e6c1fd, 0xb05688c2
1154
.long 0, 0, 0, 0
1155
.LCamellia_SBOX:
1156
.long 0x70707000,0x70700070
1157
.long 0x82828200,0x2c2c002c
1158
.long 0x2c2c2c00,0xb3b300b3
1159
.long 0xececec00,0xc0c000c0
1160
.long 0xb3b3b300,0xe4e400e4
1161
.long 0x27272700,0x57570057
1162
.long 0xc0c0c000,0xeaea00ea
1163
.long 0xe5e5e500,0xaeae00ae
1164
.long 0xe4e4e400,0x23230023
1165
.long 0x85858500,0x6b6b006b
1166
.long 0x57575700,0x45450045
1167
.long 0x35353500,0xa5a500a5
1168
.long 0xeaeaea00,0xeded00ed
1169
.long 0x0c0c0c00,0x4f4f004f
1170
.long 0xaeaeae00,0x1d1d001d
1171
.long 0x41414100,0x92920092
1172
.long 0x23232300,0x86860086
1173
.long 0xefefef00,0xafaf00af
1174
.long 0x6b6b6b00,0x7c7c007c
1175
.long 0x93939300,0x1f1f001f
1176
.long 0x45454500,0x3e3e003e
1177
.long 0x19191900,0xdcdc00dc
1178
.long 0xa5a5a500,0x5e5e005e
1179
.long 0x21212100,0x0b0b000b
1180
.long 0xededed00,0xa6a600a6
1181
.long 0x0e0e0e00,0x39390039
1182
.long 0x4f4f4f00,0xd5d500d5
1183
.long 0x4e4e4e00,0x5d5d005d
1184
.long 0x1d1d1d00,0xd9d900d9
1185
.long 0x65656500,0x5a5a005a
1186
.long 0x92929200,0x51510051
1187
.long 0xbdbdbd00,0x6c6c006c
1188
.long 0x86868600,0x8b8b008b
1189
.long 0xb8b8b800,0x9a9a009a
1190
.long 0xafafaf00,0xfbfb00fb
1191
.long 0x8f8f8f00,0xb0b000b0
1192
.long 0x7c7c7c00,0x74740074
1193
.long 0xebebeb00,0x2b2b002b
1194
.long 0x1f1f1f00,0xf0f000f0
1195
.long 0xcecece00,0x84840084
1196
.long 0x3e3e3e00,0xdfdf00df
1197
.long 0x30303000,0xcbcb00cb
1198
.long 0xdcdcdc00,0x34340034
1199
.long 0x5f5f5f00,0x76760076
1200
.long 0x5e5e5e00,0x6d6d006d
1201
.long 0xc5c5c500,0xa9a900a9
1202
.long 0x0b0b0b00,0xd1d100d1
1203
.long 0x1a1a1a00,0x04040004
1204
.long 0xa6a6a600,0x14140014
1205
.long 0xe1e1e100,0x3a3a003a
1206
.long 0x39393900,0xdede00de
1207
.long 0xcacaca00,0x11110011
1208
.long 0xd5d5d500,0x32320032
1209
.long 0x47474700,0x9c9c009c
1210
.long 0x5d5d5d00,0x53530053
1211
.long 0x3d3d3d00,0xf2f200f2
1212
.long 0xd9d9d900,0xfefe00fe
1213
.long 0x01010100,0xcfcf00cf
1214
.long 0x5a5a5a00,0xc3c300c3
1215
.long 0xd6d6d600,0x7a7a007a
1216
.long 0x51515100,0x24240024
1217
.long 0x56565600,0xe8e800e8
1218
.long 0x6c6c6c00,0x60600060
1219
.long 0x4d4d4d00,0x69690069
1220
.long 0x8b8b8b00,0xaaaa00aa
1221
.long 0x0d0d0d00,0xa0a000a0
1222
.long 0x9a9a9a00,0xa1a100a1
1223
.long 0x66666600,0x62620062
1224
.long 0xfbfbfb00,0x54540054
1225
.long 0xcccccc00,0x1e1e001e
1226
.long 0xb0b0b000,0xe0e000e0
1227
.long 0x2d2d2d00,0x64640064
1228
.long 0x74747400,0x10100010
1229
.long 0x12121200,0x00000000
1230
.long 0x2b2b2b00,0xa3a300a3
1231
.long 0x20202000,0x75750075
1232
.long 0xf0f0f000,0x8a8a008a
1233
.long 0xb1b1b100,0xe6e600e6
1234
.long 0x84848400,0x09090009
1235
.long 0x99999900,0xdddd00dd
1236
.long 0xdfdfdf00,0x87870087
1237
.long 0x4c4c4c00,0x83830083
1238
.long 0xcbcbcb00,0xcdcd00cd
1239
.long 0xc2c2c200,0x90900090
1240
.long 0x34343400,0x73730073
1241
.long 0x7e7e7e00,0xf6f600f6
1242
.long 0x76767600,0x9d9d009d
1243
.long 0x05050500,0xbfbf00bf
1244
.long 0x6d6d6d00,0x52520052
1245
.long 0xb7b7b700,0xd8d800d8
1246
.long 0xa9a9a900,0xc8c800c8
1247
.long 0x31313100,0xc6c600c6
1248
.long 0xd1d1d100,0x81810081
1249
.long 0x17171700,0x6f6f006f
1250
.long 0x04040400,0x13130013
1251
.long 0xd7d7d700,0x63630063
1252
.long 0x14141400,0xe9e900e9
1253
.long 0x58585800,0xa7a700a7
1254
.long 0x3a3a3a00,0x9f9f009f
1255
.long 0x61616100,0xbcbc00bc
1256
.long 0xdedede00,0x29290029
1257
.long 0x1b1b1b00,0xf9f900f9
1258
.long 0x11111100,0x2f2f002f
1259
.long 0x1c1c1c00,0xb4b400b4
1260
.long 0x32323200,0x78780078
1261
.long 0x0f0f0f00,0x06060006
1262
.long 0x9c9c9c00,0xe7e700e7
1263
.long 0x16161600,0x71710071
1264
.long 0x53535300,0xd4d400d4
1265
.long 0x18181800,0xabab00ab
1266
.long 0xf2f2f200,0x88880088
1267
.long 0x22222200,0x8d8d008d
1268
.long 0xfefefe00,0x72720072
1269
.long 0x44444400,0xb9b900b9
1270
.long 0xcfcfcf00,0xf8f800f8
1271
.long 0xb2b2b200,0xacac00ac
1272
.long 0xc3c3c300,0x36360036
1273
.long 0xb5b5b500,0x2a2a002a
1274
.long 0x7a7a7a00,0x3c3c003c
1275
.long 0x91919100,0xf1f100f1
1276
.long 0x24242400,0x40400040
1277
.long 0x08080800,0xd3d300d3
1278
.long 0xe8e8e800,0xbbbb00bb
1279
.long 0xa8a8a800,0x43430043
1280
.long 0x60606000,0x15150015
1281
.long 0xfcfcfc00,0xadad00ad
1282
.long 0x69696900,0x77770077
1283
.long 0x50505000,0x80800080
1284
.long 0xaaaaaa00,0x82820082
1285
.long 0xd0d0d000,0xecec00ec
1286
.long 0xa0a0a000,0x27270027
1287
.long 0x7d7d7d00,0xe5e500e5
1288
.long 0xa1a1a100,0x85850085
1289
.long 0x89898900,0x35350035
1290
.long 0x62626200,0x0c0c000c
1291
.long 0x97979700,0x41410041
1292
.long 0x54545400,0xefef00ef
1293
.long 0x5b5b5b00,0x93930093
1294
.long 0x1e1e1e00,0x19190019
1295
.long 0x95959500,0x21210021
1296
.long 0xe0e0e000,0x0e0e000e
1297
.long 0xffffff00,0x4e4e004e
1298
.long 0x64646400,0x65650065
1299
.long 0xd2d2d200,0xbdbd00bd
1300
.long 0x10101000,0xb8b800b8
1301
.long 0xc4c4c400,0x8f8f008f
1302
.long 0x00000000,0xebeb00eb
1303
.long 0x48484800,0xcece00ce
1304
.long 0xa3a3a300,0x30300030
1305
.long 0xf7f7f700,0x5f5f005f
1306
.long 0x75757500,0xc5c500c5
1307
.long 0xdbdbdb00,0x1a1a001a
1308
.long 0x8a8a8a00,0xe1e100e1
1309
.long 0x03030300,0xcaca00ca
1310
.long 0xe6e6e600,0x47470047
1311
.long 0xdadada00,0x3d3d003d
1312
.long 0x09090900,0x01010001
1313
.long 0x3f3f3f00,0xd6d600d6
1314
.long 0xdddddd00,0x56560056
1315
.long 0x94949400,0x4d4d004d
1316
.long 0x87878700,0x0d0d000d
1317
.long 0x5c5c5c00,0x66660066
1318
.long 0x83838300,0xcccc00cc
1319
.long 0x02020200,0x2d2d002d
1320
.long 0xcdcdcd00,0x12120012
1321
.long 0x4a4a4a00,0x20200020
1322
.long 0x90909000,0xb1b100b1
1323
.long 0x33333300,0x99990099
1324
.long 0x73737300,0x4c4c004c
1325
.long 0x67676700,0xc2c200c2
1326
.long 0xf6f6f600,0x7e7e007e
1327
.long 0xf3f3f300,0x05050005
1328
.long 0x9d9d9d00,0xb7b700b7
1329
.long 0x7f7f7f00,0x31310031
1330
.long 0xbfbfbf00,0x17170017
1331
.long 0xe2e2e200,0xd7d700d7
1332
.long 0x52525200,0x58580058
1333
.long 0x9b9b9b00,0x61610061
1334
.long 0xd8d8d800,0x1b1b001b
1335
.long 0x26262600,0x1c1c001c
1336
.long 0xc8c8c800,0x0f0f000f
1337
.long 0x37373700,0x16160016
1338
.long 0xc6c6c600,0x18180018
1339
.long 0x3b3b3b00,0x22220022
1340
.long 0x81818100,0x44440044
1341
.long 0x96969600,0xb2b200b2
1342
.long 0x6f6f6f00,0xb5b500b5
1343
.long 0x4b4b4b00,0x91910091
1344
.long 0x13131300,0x08080008
1345
.long 0xbebebe00,0xa8a800a8
1346
.long 0x63636300,0xfcfc00fc
1347
.long 0x2e2e2e00,0x50500050
1348
.long 0xe9e9e900,0xd0d000d0
1349
.long 0x79797900,0x7d7d007d
1350
.long 0xa7a7a700,0x89890089
1351
.long 0x8c8c8c00,0x97970097
1352
.long 0x9f9f9f00,0x5b5b005b
1353
.long 0x6e6e6e00,0x95950095
1354
.long 0xbcbcbc00,0xffff00ff
1355
.long 0x8e8e8e00,0xd2d200d2
1356
.long 0x29292900,0xc4c400c4
1357
.long 0xf5f5f500,0x48480048
1358
.long 0xf9f9f900,0xf7f700f7
1359
.long 0xb6b6b600,0xdbdb00db
1360
.long 0x2f2f2f00,0x03030003
1361
.long 0xfdfdfd00,0xdada00da
1362
.long 0xb4b4b400,0x3f3f003f
1363
.long 0x59595900,0x94940094
1364
.long 0x78787800,0x5c5c005c
1365
.long 0x98989800,0x02020002
1366
.long 0x06060600,0x4a4a004a
1367
.long 0x6a6a6a00,0x33330033
1368
.long 0xe7e7e700,0x67670067
1369
.long 0x46464600,0xf3f300f3
1370
.long 0x71717100,0x7f7f007f
1371
.long 0xbababa00,0xe2e200e2
1372
.long 0xd4d4d400,0x9b9b009b
1373
.long 0x25252500,0x26260026
1374
.long 0xababab00,0x37370037
1375
.long 0x42424200,0x3b3b003b
1376
.long 0x88888800,0x96960096
1377
.long 0xa2a2a200,0x4b4b004b
1378
.long 0x8d8d8d00,0xbebe00be
1379
.long 0xfafafa00,0x2e2e002e
1380
.long 0x72727200,0x79790079
1381
.long 0x07070700,0x8c8c008c
1382
.long 0xb9b9b900,0x6e6e006e
1383
.long 0x55555500,0x8e8e008e
1384
.long 0xf8f8f800,0xf5f500f5
1385
.long 0xeeeeee00,0xb6b600b6
1386
.long 0xacacac00,0xfdfd00fd
1387
.long 0x0a0a0a00,0x59590059
1388
.long 0x36363600,0x98980098
1389
.long 0x49494900,0x6a6a006a
1390
.long 0x2a2a2a00,0x46460046
1391
.long 0x68686800,0xbaba00ba
1392
.long 0x3c3c3c00,0x25250025
1393
.long 0x38383800,0x42420042
1394
.long 0xf1f1f100,0xa2a200a2
1395
.long 0xa4a4a400,0xfafa00fa
1396
.long 0x40404000,0x07070007
1397
.long 0x28282800,0x55550055
1398
.long 0xd3d3d300,0xeeee00ee
1399
.long 0x7b7b7b00,0x0a0a000a
1400
.long 0xbbbbbb00,0x49490049
1401
.long 0xc9c9c900,0x68680068
1402
.long 0x43434300,0x38380038
1403
.long 0xc1c1c100,0xa4a400a4
1404
.long 0x15151500,0x28280028
1405
.long 0xe3e3e300,0x7b7b007b
1406
.long 0xadadad00,0xc9c900c9
1407
.long 0xf4f4f400,0xc1c100c1
1408
.long 0x77777700,0xe3e300e3
1409
.long 0xc7c7c700,0xf4f400f4
1410
.long 0x80808000,0xc7c700c7
1411
.long 0x9e9e9e00,0x9e9e009e
1412
.long 0x00e0e0e0,0x38003838
1413
.long 0x00050505,0x41004141
1414
.long 0x00585858,0x16001616
1415
.long 0x00d9d9d9,0x76007676
1416
.long 0x00676767,0xd900d9d9
1417
.long 0x004e4e4e,0x93009393
1418
.long 0x00818181,0x60006060
1419
.long 0x00cbcbcb,0xf200f2f2
1420
.long 0x00c9c9c9,0x72007272
1421
.long 0x000b0b0b,0xc200c2c2
1422
.long 0x00aeaeae,0xab00abab
1423
.long 0x006a6a6a,0x9a009a9a
1424
.long 0x00d5d5d5,0x75007575
1425
.long 0x00181818,0x06000606
1426
.long 0x005d5d5d,0x57005757
1427
.long 0x00828282,0xa000a0a0
1428
.long 0x00464646,0x91009191
1429
.long 0x00dfdfdf,0xf700f7f7
1430
.long 0x00d6d6d6,0xb500b5b5
1431
.long 0x00272727,0xc900c9c9
1432
.long 0x008a8a8a,0xa200a2a2
1433
.long 0x00323232,0x8c008c8c
1434
.long 0x004b4b4b,0xd200d2d2
1435
.long 0x00424242,0x90009090
1436
.long 0x00dbdbdb,0xf600f6f6
1437
.long 0x001c1c1c,0x07000707
1438
.long 0x009e9e9e,0xa700a7a7
1439
.long 0x009c9c9c,0x27002727
1440
.long 0x003a3a3a,0x8e008e8e
1441
.long 0x00cacaca,0xb200b2b2
1442
.long 0x00252525,0x49004949
1443
.long 0x007b7b7b,0xde00dede
1444
.long 0x000d0d0d,0x43004343
1445
.long 0x00717171,0x5c005c5c
1446
.long 0x005f5f5f,0xd700d7d7
1447
.long 0x001f1f1f,0xc700c7c7
1448
.long 0x00f8f8f8,0x3e003e3e
1449
.long 0x00d7d7d7,0xf500f5f5
1450
.long 0x003e3e3e,0x8f008f8f
1451
.long 0x009d9d9d,0x67006767
1452
.long 0x007c7c7c,0x1f001f1f
1453
.long 0x00606060,0x18001818
1454
.long 0x00b9b9b9,0x6e006e6e
1455
.long 0x00bebebe,0xaf00afaf
1456
.long 0x00bcbcbc,0x2f002f2f
1457
.long 0x008b8b8b,0xe200e2e2
1458
.long 0x00161616,0x85008585
1459
.long 0x00343434,0x0d000d0d
1460
.long 0x004d4d4d,0x53005353
1461
.long 0x00c3c3c3,0xf000f0f0
1462
.long 0x00727272,0x9c009c9c
1463
.long 0x00959595,0x65006565
1464
.long 0x00ababab,0xea00eaea
1465
.long 0x008e8e8e,0xa300a3a3
1466
.long 0x00bababa,0xae00aeae
1467
.long 0x007a7a7a,0x9e009e9e
1468
.long 0x00b3b3b3,0xec00ecec
1469
.long 0x00020202,0x80008080
1470
.long 0x00b4b4b4,0x2d002d2d
1471
.long 0x00adadad,0x6b006b6b
1472
.long 0x00a2a2a2,0xa800a8a8
1473
.long 0x00acacac,0x2b002b2b
1474
.long 0x00d8d8d8,0x36003636
1475
.long 0x009a9a9a,0xa600a6a6
1476
.long 0x00171717,0xc500c5c5
1477
.long 0x001a1a1a,0x86008686
1478
.long 0x00353535,0x4d004d4d
1479
.long 0x00cccccc,0x33003333
1480
.long 0x00f7f7f7,0xfd00fdfd
1481
.long 0x00999999,0x66006666
1482
.long 0x00616161,0x58005858
1483
.long 0x005a5a5a,0x96009696
1484
.long 0x00e8e8e8,0x3a003a3a
1485
.long 0x00242424,0x09000909
1486
.long 0x00565656,0x95009595
1487
.long 0x00404040,0x10001010
1488
.long 0x00e1e1e1,0x78007878
1489
.long 0x00636363,0xd800d8d8
1490
.long 0x00090909,0x42004242
1491
.long 0x00333333,0xcc00cccc
1492
.long 0x00bfbfbf,0xef00efef
1493
.long 0x00989898,0x26002626
1494
.long 0x00979797,0xe500e5e5
1495
.long 0x00858585,0x61006161
1496
.long 0x00686868,0x1a001a1a
1497
.long 0x00fcfcfc,0x3f003f3f
1498
.long 0x00ececec,0x3b003b3b
1499
.long 0x000a0a0a,0x82008282
1500
.long 0x00dadada,0xb600b6b6
1501
.long 0x006f6f6f,0xdb00dbdb
1502
.long 0x00535353,0xd400d4d4
1503
.long 0x00626262,0x98009898
1504
.long 0x00a3a3a3,0xe800e8e8
1505
.long 0x002e2e2e,0x8b008b8b
1506
.long 0x00080808,0x02000202
1507
.long 0x00afafaf,0xeb00ebeb
1508
.long 0x00282828,0x0a000a0a
1509
.long 0x00b0b0b0,0x2c002c2c
1510
.long 0x00747474,0x1d001d1d
1511
.long 0x00c2c2c2,0xb000b0b0
1512
.long 0x00bdbdbd,0x6f006f6f
1513
.long 0x00363636,0x8d008d8d
1514
.long 0x00222222,0x88008888
1515
.long 0x00383838,0x0e000e0e
1516
.long 0x00646464,0x19001919
1517
.long 0x001e1e1e,0x87008787
1518
.long 0x00393939,0x4e004e4e
1519
.long 0x002c2c2c,0x0b000b0b
1520
.long 0x00a6a6a6,0xa900a9a9
1521
.long 0x00303030,0x0c000c0c
1522
.long 0x00e5e5e5,0x79007979
1523
.long 0x00444444,0x11001111
1524
.long 0x00fdfdfd,0x7f007f7f
1525
.long 0x00888888,0x22002222
1526
.long 0x009f9f9f,0xe700e7e7
1527
.long 0x00656565,0x59005959
1528
.long 0x00878787,0xe100e1e1
1529
.long 0x006b6b6b,0xda00dada
1530
.long 0x00f4f4f4,0x3d003d3d
1531
.long 0x00232323,0xc800c8c8
1532
.long 0x00484848,0x12001212
1533
.long 0x00101010,0x04000404
1534
.long 0x00d1d1d1,0x74007474
1535
.long 0x00515151,0x54005454
1536
.long 0x00c0c0c0,0x30003030
1537
.long 0x00f9f9f9,0x7e007e7e
1538
.long 0x00d2d2d2,0xb400b4b4
1539
.long 0x00a0a0a0,0x28002828
1540
.long 0x00555555,0x55005555
1541
.long 0x00a1a1a1,0x68006868
1542
.long 0x00414141,0x50005050
1543
.long 0x00fafafa,0xbe00bebe
1544
.long 0x00434343,0xd000d0d0
1545
.long 0x00131313,0xc400c4c4
1546
.long 0x00c4c4c4,0x31003131
1547
.long 0x002f2f2f,0xcb00cbcb
1548
.long 0x00a8a8a8,0x2a002a2a
1549
.long 0x00b6b6b6,0xad00adad
1550
.long 0x003c3c3c,0x0f000f0f
1551
.long 0x002b2b2b,0xca00caca
1552
.long 0x00c1c1c1,0x70007070
1553
.long 0x00ffffff,0xff00ffff
1554
.long 0x00c8c8c8,0x32003232
1555
.long 0x00a5a5a5,0x69006969
1556
.long 0x00202020,0x08000808
1557
.long 0x00898989,0x62006262
1558
.long 0x00000000,0x00000000
1559
.long 0x00909090,0x24002424
1560
.long 0x00474747,0xd100d1d1
1561
.long 0x00efefef,0xfb00fbfb
1562
.long 0x00eaeaea,0xba00baba
1563
.long 0x00b7b7b7,0xed00eded
1564
.long 0x00151515,0x45004545
1565
.long 0x00060606,0x81008181
1566
.long 0x00cdcdcd,0x73007373
1567
.long 0x00b5b5b5,0x6d006d6d
1568
.long 0x00121212,0x84008484
1569
.long 0x007e7e7e,0x9f009f9f
1570
.long 0x00bbbbbb,0xee00eeee
1571
.long 0x00292929,0x4a004a4a
1572
.long 0x000f0f0f,0xc300c3c3
1573
.long 0x00b8b8b8,0x2e002e2e
1574
.long 0x00070707,0xc100c1c1
1575
.long 0x00040404,0x01000101
1576
.long 0x009b9b9b,0xe600e6e6
1577
.long 0x00949494,0x25002525
1578
.long 0x00212121,0x48004848
1579
.long 0x00666666,0x99009999
1580
.long 0x00e6e6e6,0xb900b9b9
1581
.long 0x00cecece,0xb300b3b3
1582
.long 0x00ededed,0x7b007b7b
1583
.long 0x00e7e7e7,0xf900f9f9
1584
.long 0x003b3b3b,0xce00cece
1585
.long 0x00fefefe,0xbf00bfbf
1586
.long 0x007f7f7f,0xdf00dfdf
1587
.long 0x00c5c5c5,0x71007171
1588
.long 0x00a4a4a4,0x29002929
1589
.long 0x00373737,0xcd00cdcd
1590
.long 0x00b1b1b1,0x6c006c6c
1591
.long 0x004c4c4c,0x13001313
1592
.long 0x00919191,0x64006464
1593
.long 0x006e6e6e,0x9b009b9b
1594
.long 0x008d8d8d,0x63006363
1595
.long 0x00767676,0x9d009d9d
1596
.long 0x00030303,0xc000c0c0
1597
.long 0x002d2d2d,0x4b004b4b
1598
.long 0x00dedede,0xb700b7b7
1599
.long 0x00969696,0xa500a5a5
1600
.long 0x00262626,0x89008989
1601
.long 0x007d7d7d,0x5f005f5f
1602
.long 0x00c6c6c6,0xb100b1b1
1603
.long 0x005c5c5c,0x17001717
1604
.long 0x00d3d3d3,0xf400f4f4
1605
.long 0x00f2f2f2,0xbc00bcbc
1606
.long 0x004f4f4f,0xd300d3d3
1607
.long 0x00191919,0x46004646
1608
.long 0x003f3f3f,0xcf00cfcf
1609
.long 0x00dcdcdc,0x37003737
1610
.long 0x00797979,0x5e005e5e
1611
.long 0x001d1d1d,0x47004747
1612
.long 0x00525252,0x94009494
1613
.long 0x00ebebeb,0xfa00fafa
1614
.long 0x00f3f3f3,0xfc00fcfc
1615
.long 0x006d6d6d,0x5b005b5b
1616
.long 0x005e5e5e,0x97009797
1617
.long 0x00fbfbfb,0xfe00fefe
1618
.long 0x00696969,0x5a005a5a
1619
.long 0x00b2b2b2,0xac00acac
1620
.long 0x00f0f0f0,0x3c003c3c
1621
.long 0x00313131,0x4c004c4c
1622
.long 0x000c0c0c,0x03000303
1623
.long 0x00d4d4d4,0x35003535
1624
.long 0x00cfcfcf,0xf300f3f3
1625
.long 0x008c8c8c,0x23002323
1626
.long 0x00e2e2e2,0xb800b8b8
1627
.long 0x00757575,0x5d005d5d
1628
.long 0x00a9a9a9,0x6a006a6a
1629
.long 0x004a4a4a,0x92009292
1630
.long 0x00575757,0xd500d5d5
1631
.long 0x00848484,0x21002121
1632
.long 0x00111111,0x44004444
1633
.long 0x00454545,0x51005151
1634
.long 0x001b1b1b,0xc600c6c6
1635
.long 0x00f5f5f5,0x7d007d7d
1636
.long 0x00e4e4e4,0x39003939
1637
.long 0x000e0e0e,0x83008383
1638
.long 0x00737373,0xdc00dcdc
1639
.long 0x00aaaaaa,0xaa00aaaa
1640
.long 0x00f1f1f1,0x7c007c7c
1641
.long 0x00dddddd,0x77007777
1642
.long 0x00595959,0x56005656
1643
.long 0x00141414,0x05000505
1644
.long 0x006c6c6c,0x1b001b1b
1645
.long 0x00929292,0xa400a4a4
1646
.long 0x00545454,0x15001515
1647
.long 0x00d0d0d0,0x34003434
1648
.long 0x00787878,0x1e001e1e
1649
.long 0x00707070,0x1c001c1c
1650
.long 0x00e3e3e3,0xf800f8f8
1651
.long 0x00494949,0x52005252
1652
.long 0x00808080,0x20002020
1653
.long 0x00505050,0x14001414
1654
.long 0x00a7a7a7,0xe900e9e9
1655
.long 0x00f6f6f6,0xbd00bdbd
1656
.long 0x00777777,0xdd00dddd
1657
.long 0x00939393,0xe400e4e4
1658
.long 0x00868686,0xa100a1a1
1659
.long 0x00838383,0xe000e0e0
1660
.long 0x002a2a2a,0x8a008a8a
1661
.long 0x00c7c7c7,0xf100f1f1
1662
.long 0x005b5b5b,0xd600d6d6
1663
.long 0x00e9e9e9,0x7a007a7a
1664
.long 0x00eeeeee,0xbb00bbbb
1665
.long 0x008f8f8f,0xe300e3e3
1666
.long 0x00010101,0x40004040
1667
.long 0x003d3d3d,0x4f004f4f
1668
.text
1669
.globl Camellia_cbc_encrypt
1670
.type Camellia_cbc_encrypt,@function
1671
.align 16
1672
Camellia_cbc_encrypt:
1673
.cfi_startproc
1674
.byte 243,15,30,250
1675
cmpq $0,%rdx
1676
je .Lcbc_abort
1677
pushq %rbx
1678
.cfi_adjust_cfa_offset 8
1679
.cfi_offset %rbx,-16
1680
pushq %rbp
1681
.cfi_adjust_cfa_offset 8
1682
.cfi_offset %rbp,-24
1683
pushq %r12
1684
.cfi_adjust_cfa_offset 8
1685
.cfi_offset %r12,-32
1686
pushq %r13
1687
.cfi_adjust_cfa_offset 8
1688
.cfi_offset %r13,-40
1689
pushq %r14
1690
.cfi_adjust_cfa_offset 8
1691
.cfi_offset %r14,-48
1692
pushq %r15
1693
.cfi_adjust_cfa_offset 8
1694
.cfi_offset %r15,-56
1695
.Lcbc_prologue:
1696
1697
movq %rsp,%rbp
1698
.cfi_def_cfa_register %rbp
1699
subq $64,%rsp
1700
andq $-64,%rsp
1701
1702
1703
1704
leaq -64-63(%rcx),%r10
1705
subq %rsp,%r10
1706
negq %r10
1707
andq $0x3C0,%r10
1708
subq %r10,%rsp
1709
1710
1711
movq %rdi,%r12
1712
movq %rsi,%r13
1713
movq %r8,%rbx
1714
movq %rcx,%r14
1715
movl 272(%rcx),%r15d
1716
1717
movq %r8,40(%rsp)
1718
movq %rbp,48(%rsp)
1719
.cfi_escape 0x0f,0x05,0x77,0x30,0x06,0x23,0x38
1720
1721
.Lcbc_body:
1722
leaq .LCamellia_SBOX(%rip),%rbp
1723
1724
movl $32,%ecx
1725
.align 4
1726
.Lcbc_prefetch_sbox:
1727
movq 0(%rbp),%rax
1728
movq 32(%rbp),%rsi
1729
movq 64(%rbp),%rdi
1730
movq 96(%rbp),%r11
1731
leaq 128(%rbp),%rbp
1732
loop .Lcbc_prefetch_sbox
1733
subq $4096,%rbp
1734
shlq $6,%r15
1735
movq %rdx,%rcx
1736
leaq (%r14,%r15,1),%r15
1737
1738
cmpl $0,%r9d
1739
je .LCBC_DECRYPT
1740
1741
andq $-16,%rdx
1742
andq $15,%rcx
1743
leaq (%r12,%rdx,1),%rdx
1744
movq %r14,0(%rsp)
1745
movq %rdx,8(%rsp)
1746
movq %rcx,16(%rsp)
1747
1748
cmpq %r12,%rdx
1749
movl 0(%rbx),%r8d
1750
movl 4(%rbx),%r9d
1751
movl 8(%rbx),%r10d
1752
movl 12(%rbx),%r11d
1753
je .Lcbc_enc_tail
1754
jmp .Lcbc_eloop
1755
1756
.align 16
1757
.Lcbc_eloop:
1758
xorl 0(%r12),%r8d
1759
xorl 4(%r12),%r9d
1760
xorl 8(%r12),%r10d
1761
bswapl %r8d
1762
xorl 12(%r12),%r11d
1763
bswapl %r9d
1764
bswapl %r10d
1765
bswapl %r11d
1766
1767
call _x86_64_Camellia_encrypt
1768
1769
movq 0(%rsp),%r14
1770
bswapl %r8d
1771
movq 8(%rsp),%rdx
1772
bswapl %r9d
1773
movq 16(%rsp),%rcx
1774
bswapl %r10d
1775
movl %r8d,0(%r13)
1776
bswapl %r11d
1777
movl %r9d,4(%r13)
1778
movl %r10d,8(%r13)
1779
leaq 16(%r12),%r12
1780
movl %r11d,12(%r13)
1781
cmpq %rdx,%r12
1782
leaq 16(%r13),%r13
1783
jne .Lcbc_eloop
1784
1785
cmpq $0,%rcx
1786
jne .Lcbc_enc_tail
1787
1788
movq 40(%rsp),%r13
1789
movl %r8d,0(%r13)
1790
movl %r9d,4(%r13)
1791
movl %r10d,8(%r13)
1792
movl %r11d,12(%r13)
1793
jmp .Lcbc_done
1794
1795
.align 16
1796
.Lcbc_enc_tail:
1797
xorq %rax,%rax
1798
movq %rax,0+24(%rsp)
1799
movq %rax,8+24(%rsp)
1800
movq %rax,16(%rsp)
1801
1802
.Lcbc_enc_pushf:
1803
pushfq
1804
cld
1805
movq %r12,%rsi
1806
leaq 8+24(%rsp),%rdi
1807
.long 0x9066A4F3
1808
popfq
1809
.Lcbc_enc_popf:
1810
1811
leaq 24(%rsp),%r12
1812
leaq 16+24(%rsp),%rax
1813
movq %rax,8(%rsp)
1814
jmp .Lcbc_eloop
1815
1816
.align 16
1817
.LCBC_DECRYPT:
1818
xchgq %r14,%r15
1819
addq $15,%rdx
1820
andq $15,%rcx
1821
andq $-16,%rdx
1822
movq %r14,0(%rsp)
1823
leaq (%r12,%rdx,1),%rdx
1824
movq %rdx,8(%rsp)
1825
movq %rcx,16(%rsp)
1826
1827
movq (%rbx),%rax
1828
movq 8(%rbx),%rbx
1829
jmp .Lcbc_dloop
1830
.align 16
1831
.Lcbc_dloop:
1832
movl 0(%r12),%r8d
1833
movl 4(%r12),%r9d
1834
movl 8(%r12),%r10d
1835
bswapl %r8d
1836
movl 12(%r12),%r11d
1837
bswapl %r9d
1838
movq %rax,0+24(%rsp)
1839
bswapl %r10d
1840
movq %rbx,8+24(%rsp)
1841
bswapl %r11d
1842
1843
call _x86_64_Camellia_decrypt
1844
1845
movq 0(%rsp),%r14
1846
movq 8(%rsp),%rdx
1847
movq 16(%rsp),%rcx
1848
1849
bswapl %r8d
1850
movq (%r12),%rax
1851
bswapl %r9d
1852
movq 8(%r12),%rbx
1853
bswapl %r10d
1854
xorl 0+24(%rsp),%r8d
1855
bswapl %r11d
1856
xorl 4+24(%rsp),%r9d
1857
xorl 8+24(%rsp),%r10d
1858
leaq 16(%r12),%r12
1859
xorl 12+24(%rsp),%r11d
1860
cmpq %rdx,%r12
1861
je .Lcbc_ddone
1862
1863
movl %r8d,0(%r13)
1864
movl %r9d,4(%r13)
1865
movl %r10d,8(%r13)
1866
movl %r11d,12(%r13)
1867
1868
leaq 16(%r13),%r13
1869
jmp .Lcbc_dloop
1870
1871
.align 16
1872
.Lcbc_ddone:
1873
movq 40(%rsp),%rdx
1874
cmpq $0,%rcx
1875
jne .Lcbc_dec_tail
1876
1877
movl %r8d,0(%r13)
1878
movl %r9d,4(%r13)
1879
movl %r10d,8(%r13)
1880
movl %r11d,12(%r13)
1881
1882
movq %rax,(%rdx)
1883
movq %rbx,8(%rdx)
1884
jmp .Lcbc_done
1885
.align 16
1886
.Lcbc_dec_tail:
1887
movl %r8d,0+24(%rsp)
1888
movl %r9d,4+24(%rsp)
1889
movl %r10d,8+24(%rsp)
1890
movl %r11d,12+24(%rsp)
1891
1892
.Lcbc_dec_pushf:
1893
pushfq
1894
cld
1895
leaq 8+24(%rsp),%rsi
1896
leaq (%r13),%rdi
1897
.long 0x9066A4F3
1898
popfq
1899
.Lcbc_dec_popf:
1900
1901
movq %rax,(%rdx)
1902
movq %rbx,8(%rdx)
1903
jmp .Lcbc_done
1904
1905
.align 16
1906
.Lcbc_done:
1907
movq 48(%rsp),%rcx
1908
.cfi_def_cfa %rcx,56
1909
movq 0(%rcx),%r15
1910
.cfi_restore %r15
1911
movq 8(%rcx),%r14
1912
.cfi_restore %r14
1913
movq 16(%rcx),%r13
1914
.cfi_restore %r13
1915
movq 24(%rcx),%r12
1916
.cfi_restore %r12
1917
movq 32(%rcx),%rbp
1918
.cfi_restore %rbp
1919
movq 40(%rcx),%rbx
1920
.cfi_restore %rbx
1921
leaq 48(%rcx),%rsp
1922
.cfi_def_cfa %rsp,8
1923
.Lcbc_abort:
1924
.byte 0xf3,0xc3
1925
.cfi_endproc
1926
.size Camellia_cbc_encrypt,.-Camellia_cbc_encrypt
1927
1928
.byte 67,97,109,101,108,108,105,97,32,102,111,114,32,120,56,54,95,54,52,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
1929
.section ".note.gnu.property", "a"
1930
.p2align 3
1931
.long 1f - 0f
1932
.long 4f - 1f
1933
.long 5
1934
0:
1935
# "GNU" encoded with .byte, since .asciz isn't supported
1936
# on Solaris.
1937
.byte 0x47
1938
.byte 0x4e
1939
.byte 0x55
1940
.byte 0
1941
1:
1942
.p2align 3
1943
.long 0xc0000002
1944
.long 3f - 2f
1945
2:
1946
.long 3
1947
3:
1948
.p2align 3
1949
4:
1950
1951