Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/sys/crypto/openssl/i386/cast-586.S
39482 views
1
/* Do not modify. This file is auto-generated from cast-586.pl. */
2
#ifdef PIC
3
.text
4
.globl CAST_encrypt
5
.type CAST_encrypt,@function
6
.align 16
7
CAST_encrypt:
8
.L_CAST_encrypt_begin:
9
#ifdef __CET__
10
11
.byte 243,15,30,251
12
#endif
13
14
15
pushl %ebp
16
pushl %ebx
17
movl 12(%esp),%ebx
18
movl 16(%esp),%ebp
19
pushl %esi
20
pushl %edi
21
22
movl (%ebx),%edi
23
movl 4(%ebx),%esi
24
25
movl 128(%ebp),%eax
26
pushl %eax
27
xorl %eax,%eax
28
29
movl (%ebp),%edx
30
movl 4(%ebp),%ecx
31
addl %esi,%edx
32
roll %cl,%edx
33
xorl %ecx,%ecx
34
movl $255,%ebx
35
movb %dh,%cl
36
andl %edx,%ebx
37
shrl $16,%edx
38
xorl %eax,%eax
39
movb %dh,%al
40
andl $255,%edx
41
movl CAST_S_table0(,%ecx,4),%ecx
42
movl CAST_S_table1(,%ebx,4),%ebx
43
xorl %ebx,%ecx
44
movl CAST_S_table2(,%eax,4),%ebx
45
subl %ebx,%ecx
46
movl CAST_S_table3(,%edx,4),%ebx
47
addl %ebx,%ecx
48
xorl %ecx,%edi
49
50
movl 8(%ebp),%edx
51
movl 12(%ebp),%ecx
52
xorl %edi,%edx
53
roll %cl,%edx
54
xorl %ecx,%ecx
55
movl $255,%ebx
56
movb %dh,%cl
57
andl %edx,%ebx
58
shrl $16,%edx
59
xorl %eax,%eax
60
movb %dh,%al
61
andl $255,%edx
62
movl CAST_S_table0(,%ecx,4),%ecx
63
movl CAST_S_table1(,%ebx,4),%ebx
64
subl %ebx,%ecx
65
movl CAST_S_table2(,%eax,4),%ebx
66
addl %ebx,%ecx
67
movl CAST_S_table3(,%edx,4),%ebx
68
xorl %ebx,%ecx
69
xorl %ecx,%esi
70
71
movl 16(%ebp),%edx
72
movl 20(%ebp),%ecx
73
subl %esi,%edx
74
roll %cl,%edx
75
xorl %ecx,%ecx
76
movl $255,%ebx
77
movb %dh,%cl
78
andl %edx,%ebx
79
shrl $16,%edx
80
xorl %eax,%eax
81
movb %dh,%al
82
andl $255,%edx
83
movl CAST_S_table0(,%ecx,4),%ecx
84
movl CAST_S_table1(,%ebx,4),%ebx
85
addl %ebx,%ecx
86
movl CAST_S_table2(,%eax,4),%ebx
87
xorl %ebx,%ecx
88
movl CAST_S_table3(,%edx,4),%ebx
89
subl %ebx,%ecx
90
xorl %ecx,%edi
91
92
movl 24(%ebp),%edx
93
movl 28(%ebp),%ecx
94
addl %edi,%edx
95
roll %cl,%edx
96
xorl %ecx,%ecx
97
movl $255,%ebx
98
movb %dh,%cl
99
andl %edx,%ebx
100
shrl $16,%edx
101
xorl %eax,%eax
102
movb %dh,%al
103
andl $255,%edx
104
movl CAST_S_table0(,%ecx,4),%ecx
105
movl CAST_S_table1(,%ebx,4),%ebx
106
xorl %ebx,%ecx
107
movl CAST_S_table2(,%eax,4),%ebx
108
subl %ebx,%ecx
109
movl CAST_S_table3(,%edx,4),%ebx
110
addl %ebx,%ecx
111
xorl %ecx,%esi
112
113
movl 32(%ebp),%edx
114
movl 36(%ebp),%ecx
115
xorl %esi,%edx
116
roll %cl,%edx
117
xorl %ecx,%ecx
118
movl $255,%ebx
119
movb %dh,%cl
120
andl %edx,%ebx
121
shrl $16,%edx
122
xorl %eax,%eax
123
movb %dh,%al
124
andl $255,%edx
125
movl CAST_S_table0(,%ecx,4),%ecx
126
movl CAST_S_table1(,%ebx,4),%ebx
127
subl %ebx,%ecx
128
movl CAST_S_table2(,%eax,4),%ebx
129
addl %ebx,%ecx
130
movl CAST_S_table3(,%edx,4),%ebx
131
xorl %ebx,%ecx
132
xorl %ecx,%edi
133
134
movl 40(%ebp),%edx
135
movl 44(%ebp),%ecx
136
subl %edi,%edx
137
roll %cl,%edx
138
xorl %ecx,%ecx
139
movl $255,%ebx
140
movb %dh,%cl
141
andl %edx,%ebx
142
shrl $16,%edx
143
xorl %eax,%eax
144
movb %dh,%al
145
andl $255,%edx
146
movl CAST_S_table0(,%ecx,4),%ecx
147
movl CAST_S_table1(,%ebx,4),%ebx
148
addl %ebx,%ecx
149
movl CAST_S_table2(,%eax,4),%ebx
150
xorl %ebx,%ecx
151
movl CAST_S_table3(,%edx,4),%ebx
152
subl %ebx,%ecx
153
xorl %ecx,%esi
154
155
movl 48(%ebp),%edx
156
movl 52(%ebp),%ecx
157
addl %esi,%edx
158
roll %cl,%edx
159
xorl %ecx,%ecx
160
movl $255,%ebx
161
movb %dh,%cl
162
andl %edx,%ebx
163
shrl $16,%edx
164
xorl %eax,%eax
165
movb %dh,%al
166
andl $255,%edx
167
movl CAST_S_table0(,%ecx,4),%ecx
168
movl CAST_S_table1(,%ebx,4),%ebx
169
xorl %ebx,%ecx
170
movl CAST_S_table2(,%eax,4),%ebx
171
subl %ebx,%ecx
172
movl CAST_S_table3(,%edx,4),%ebx
173
addl %ebx,%ecx
174
xorl %ecx,%edi
175
176
movl 56(%ebp),%edx
177
movl 60(%ebp),%ecx
178
xorl %edi,%edx
179
roll %cl,%edx
180
xorl %ecx,%ecx
181
movl $255,%ebx
182
movb %dh,%cl
183
andl %edx,%ebx
184
shrl $16,%edx
185
xorl %eax,%eax
186
movb %dh,%al
187
andl $255,%edx
188
movl CAST_S_table0(,%ecx,4),%ecx
189
movl CAST_S_table1(,%ebx,4),%ebx
190
subl %ebx,%ecx
191
movl CAST_S_table2(,%eax,4),%ebx
192
addl %ebx,%ecx
193
movl CAST_S_table3(,%edx,4),%ebx
194
xorl %ebx,%ecx
195
xorl %ecx,%esi
196
197
movl 64(%ebp),%edx
198
movl 68(%ebp),%ecx
199
subl %esi,%edx
200
roll %cl,%edx
201
xorl %ecx,%ecx
202
movl $255,%ebx
203
movb %dh,%cl
204
andl %edx,%ebx
205
shrl $16,%edx
206
xorl %eax,%eax
207
movb %dh,%al
208
andl $255,%edx
209
movl CAST_S_table0(,%ecx,4),%ecx
210
movl CAST_S_table1(,%ebx,4),%ebx
211
addl %ebx,%ecx
212
movl CAST_S_table2(,%eax,4),%ebx
213
xorl %ebx,%ecx
214
movl CAST_S_table3(,%edx,4),%ebx
215
subl %ebx,%ecx
216
xorl %ecx,%edi
217
218
movl 72(%ebp),%edx
219
movl 76(%ebp),%ecx
220
addl %edi,%edx
221
roll %cl,%edx
222
xorl %ecx,%ecx
223
movl $255,%ebx
224
movb %dh,%cl
225
andl %edx,%ebx
226
shrl $16,%edx
227
xorl %eax,%eax
228
movb %dh,%al
229
andl $255,%edx
230
movl CAST_S_table0(,%ecx,4),%ecx
231
movl CAST_S_table1(,%ebx,4),%ebx
232
xorl %ebx,%ecx
233
movl CAST_S_table2(,%eax,4),%ebx
234
subl %ebx,%ecx
235
movl CAST_S_table3(,%edx,4),%ebx
236
addl %ebx,%ecx
237
xorl %ecx,%esi
238
239
movl 80(%ebp),%edx
240
movl 84(%ebp),%ecx
241
xorl %esi,%edx
242
roll %cl,%edx
243
xorl %ecx,%ecx
244
movl $255,%ebx
245
movb %dh,%cl
246
andl %edx,%ebx
247
shrl $16,%edx
248
xorl %eax,%eax
249
movb %dh,%al
250
andl $255,%edx
251
movl CAST_S_table0(,%ecx,4),%ecx
252
movl CAST_S_table1(,%ebx,4),%ebx
253
subl %ebx,%ecx
254
movl CAST_S_table2(,%eax,4),%ebx
255
addl %ebx,%ecx
256
movl CAST_S_table3(,%edx,4),%ebx
257
xorl %ebx,%ecx
258
xorl %ecx,%edi
259
260
movl 88(%ebp),%edx
261
movl 92(%ebp),%ecx
262
subl %edi,%edx
263
roll %cl,%edx
264
xorl %ecx,%ecx
265
movl $255,%ebx
266
movb %dh,%cl
267
andl %edx,%ebx
268
shrl $16,%edx
269
xorl %eax,%eax
270
movb %dh,%al
271
andl $255,%edx
272
movl CAST_S_table0(,%ecx,4),%ecx
273
movl CAST_S_table1(,%ebx,4),%ebx
274
addl %ebx,%ecx
275
movl CAST_S_table2(,%eax,4),%ebx
276
xorl %ebx,%ecx
277
movl CAST_S_table3(,%edx,4),%ebx
278
subl %ebx,%ecx
279
xorl %ecx,%esi
280
281
popl %edx
282
orl %edx,%edx
283
jnz .L000cast_enc_done
284
285
movl 96(%ebp),%edx
286
movl 100(%ebp),%ecx
287
addl %esi,%edx
288
roll %cl,%edx
289
xorl %ecx,%ecx
290
movl $255,%ebx
291
movb %dh,%cl
292
andl %edx,%ebx
293
shrl $16,%edx
294
xorl %eax,%eax
295
movb %dh,%al
296
andl $255,%edx
297
movl CAST_S_table0(,%ecx,4),%ecx
298
movl CAST_S_table1(,%ebx,4),%ebx
299
xorl %ebx,%ecx
300
movl CAST_S_table2(,%eax,4),%ebx
301
subl %ebx,%ecx
302
movl CAST_S_table3(,%edx,4),%ebx
303
addl %ebx,%ecx
304
xorl %ecx,%edi
305
306
movl 104(%ebp),%edx
307
movl 108(%ebp),%ecx
308
xorl %edi,%edx
309
roll %cl,%edx
310
xorl %ecx,%ecx
311
movl $255,%ebx
312
movb %dh,%cl
313
andl %edx,%ebx
314
shrl $16,%edx
315
xorl %eax,%eax
316
movb %dh,%al
317
andl $255,%edx
318
movl CAST_S_table0(,%ecx,4),%ecx
319
movl CAST_S_table1(,%ebx,4),%ebx
320
subl %ebx,%ecx
321
movl CAST_S_table2(,%eax,4),%ebx
322
addl %ebx,%ecx
323
movl CAST_S_table3(,%edx,4),%ebx
324
xorl %ebx,%ecx
325
xorl %ecx,%esi
326
327
movl 112(%ebp),%edx
328
movl 116(%ebp),%ecx
329
subl %esi,%edx
330
roll %cl,%edx
331
xorl %ecx,%ecx
332
movl $255,%ebx
333
movb %dh,%cl
334
andl %edx,%ebx
335
shrl $16,%edx
336
xorl %eax,%eax
337
movb %dh,%al
338
andl $255,%edx
339
movl CAST_S_table0(,%ecx,4),%ecx
340
movl CAST_S_table1(,%ebx,4),%ebx
341
addl %ebx,%ecx
342
movl CAST_S_table2(,%eax,4),%ebx
343
xorl %ebx,%ecx
344
movl CAST_S_table3(,%edx,4),%ebx
345
subl %ebx,%ecx
346
xorl %ecx,%edi
347
348
movl 120(%ebp),%edx
349
movl 124(%ebp),%ecx
350
addl %edi,%edx
351
roll %cl,%edx
352
xorl %ecx,%ecx
353
movl $255,%ebx
354
movb %dh,%cl
355
andl %edx,%ebx
356
shrl $16,%edx
357
xorl %eax,%eax
358
movb %dh,%al
359
andl $255,%edx
360
movl CAST_S_table0(,%ecx,4),%ecx
361
movl CAST_S_table1(,%ebx,4),%ebx
362
xorl %ebx,%ecx
363
movl CAST_S_table2(,%eax,4),%ebx
364
subl %ebx,%ecx
365
movl CAST_S_table3(,%edx,4),%ebx
366
addl %ebx,%ecx
367
xorl %ecx,%esi
368
.L000cast_enc_done:
369
nop
370
movl 20(%esp),%eax
371
movl %edi,4(%eax)
372
movl %esi,(%eax)
373
popl %edi
374
popl %esi
375
popl %ebx
376
popl %ebp
377
ret
378
.size CAST_encrypt,.-.L_CAST_encrypt_begin
379
.globl CAST_decrypt
380
.type CAST_decrypt,@function
381
.align 16
382
CAST_decrypt:
383
.L_CAST_decrypt_begin:
384
#ifdef __CET__
385
386
.byte 243,15,30,251
387
#endif
388
389
390
pushl %ebp
391
pushl %ebx
392
movl 12(%esp),%ebx
393
movl 16(%esp),%ebp
394
pushl %esi
395
pushl %edi
396
397
movl (%ebx),%edi
398
movl 4(%ebx),%esi
399
400
movl 128(%ebp),%eax
401
orl %eax,%eax
402
jnz .L001cast_dec_skip
403
xorl %eax,%eax
404
405
movl 120(%ebp),%edx
406
movl 124(%ebp),%ecx
407
addl %esi,%edx
408
roll %cl,%edx
409
xorl %ecx,%ecx
410
movl $255,%ebx
411
movb %dh,%cl
412
andl %edx,%ebx
413
shrl $16,%edx
414
xorl %eax,%eax
415
movb %dh,%al
416
andl $255,%edx
417
movl CAST_S_table0(,%ecx,4),%ecx
418
movl CAST_S_table1(,%ebx,4),%ebx
419
xorl %ebx,%ecx
420
movl CAST_S_table2(,%eax,4),%ebx
421
subl %ebx,%ecx
422
movl CAST_S_table3(,%edx,4),%ebx
423
addl %ebx,%ecx
424
xorl %ecx,%edi
425
426
movl 112(%ebp),%edx
427
movl 116(%ebp),%ecx
428
subl %edi,%edx
429
roll %cl,%edx
430
xorl %ecx,%ecx
431
movl $255,%ebx
432
movb %dh,%cl
433
andl %edx,%ebx
434
shrl $16,%edx
435
xorl %eax,%eax
436
movb %dh,%al
437
andl $255,%edx
438
movl CAST_S_table0(,%ecx,4),%ecx
439
movl CAST_S_table1(,%ebx,4),%ebx
440
addl %ebx,%ecx
441
movl CAST_S_table2(,%eax,4),%ebx
442
xorl %ebx,%ecx
443
movl CAST_S_table3(,%edx,4),%ebx
444
subl %ebx,%ecx
445
xorl %ecx,%esi
446
447
movl 104(%ebp),%edx
448
movl 108(%ebp),%ecx
449
xorl %esi,%edx
450
roll %cl,%edx
451
xorl %ecx,%ecx
452
movl $255,%ebx
453
movb %dh,%cl
454
andl %edx,%ebx
455
shrl $16,%edx
456
xorl %eax,%eax
457
movb %dh,%al
458
andl $255,%edx
459
movl CAST_S_table0(,%ecx,4),%ecx
460
movl CAST_S_table1(,%ebx,4),%ebx
461
subl %ebx,%ecx
462
movl CAST_S_table2(,%eax,4),%ebx
463
addl %ebx,%ecx
464
movl CAST_S_table3(,%edx,4),%ebx
465
xorl %ebx,%ecx
466
xorl %ecx,%edi
467
468
movl 96(%ebp),%edx
469
movl 100(%ebp),%ecx
470
addl %edi,%edx
471
roll %cl,%edx
472
xorl %ecx,%ecx
473
movl $255,%ebx
474
movb %dh,%cl
475
andl %edx,%ebx
476
shrl $16,%edx
477
xorl %eax,%eax
478
movb %dh,%al
479
andl $255,%edx
480
movl CAST_S_table0(,%ecx,4),%ecx
481
movl CAST_S_table1(,%ebx,4),%ebx
482
xorl %ebx,%ecx
483
movl CAST_S_table2(,%eax,4),%ebx
484
subl %ebx,%ecx
485
movl CAST_S_table3(,%edx,4),%ebx
486
addl %ebx,%ecx
487
xorl %ecx,%esi
488
.L001cast_dec_skip:
489
490
movl 88(%ebp),%edx
491
movl 92(%ebp),%ecx
492
subl %esi,%edx
493
roll %cl,%edx
494
xorl %ecx,%ecx
495
movl $255,%ebx
496
movb %dh,%cl
497
andl %edx,%ebx
498
shrl $16,%edx
499
xorl %eax,%eax
500
movb %dh,%al
501
andl $255,%edx
502
movl CAST_S_table0(,%ecx,4),%ecx
503
movl CAST_S_table1(,%ebx,4),%ebx
504
addl %ebx,%ecx
505
movl CAST_S_table2(,%eax,4),%ebx
506
xorl %ebx,%ecx
507
movl CAST_S_table3(,%edx,4),%ebx
508
subl %ebx,%ecx
509
xorl %ecx,%edi
510
511
movl 80(%ebp),%edx
512
movl 84(%ebp),%ecx
513
xorl %edi,%edx
514
roll %cl,%edx
515
xorl %ecx,%ecx
516
movl $255,%ebx
517
movb %dh,%cl
518
andl %edx,%ebx
519
shrl $16,%edx
520
xorl %eax,%eax
521
movb %dh,%al
522
andl $255,%edx
523
movl CAST_S_table0(,%ecx,4),%ecx
524
movl CAST_S_table1(,%ebx,4),%ebx
525
subl %ebx,%ecx
526
movl CAST_S_table2(,%eax,4),%ebx
527
addl %ebx,%ecx
528
movl CAST_S_table3(,%edx,4),%ebx
529
xorl %ebx,%ecx
530
xorl %ecx,%esi
531
532
movl 72(%ebp),%edx
533
movl 76(%ebp),%ecx
534
addl %esi,%edx
535
roll %cl,%edx
536
xorl %ecx,%ecx
537
movl $255,%ebx
538
movb %dh,%cl
539
andl %edx,%ebx
540
shrl $16,%edx
541
xorl %eax,%eax
542
movb %dh,%al
543
andl $255,%edx
544
movl CAST_S_table0(,%ecx,4),%ecx
545
movl CAST_S_table1(,%ebx,4),%ebx
546
xorl %ebx,%ecx
547
movl CAST_S_table2(,%eax,4),%ebx
548
subl %ebx,%ecx
549
movl CAST_S_table3(,%edx,4),%ebx
550
addl %ebx,%ecx
551
xorl %ecx,%edi
552
553
movl 64(%ebp),%edx
554
movl 68(%ebp),%ecx
555
subl %edi,%edx
556
roll %cl,%edx
557
xorl %ecx,%ecx
558
movl $255,%ebx
559
movb %dh,%cl
560
andl %edx,%ebx
561
shrl $16,%edx
562
xorl %eax,%eax
563
movb %dh,%al
564
andl $255,%edx
565
movl CAST_S_table0(,%ecx,4),%ecx
566
movl CAST_S_table1(,%ebx,4),%ebx
567
addl %ebx,%ecx
568
movl CAST_S_table2(,%eax,4),%ebx
569
xorl %ebx,%ecx
570
movl CAST_S_table3(,%edx,4),%ebx
571
subl %ebx,%ecx
572
xorl %ecx,%esi
573
574
movl 56(%ebp),%edx
575
movl 60(%ebp),%ecx
576
xorl %esi,%edx
577
roll %cl,%edx
578
xorl %ecx,%ecx
579
movl $255,%ebx
580
movb %dh,%cl
581
andl %edx,%ebx
582
shrl $16,%edx
583
xorl %eax,%eax
584
movb %dh,%al
585
andl $255,%edx
586
movl CAST_S_table0(,%ecx,4),%ecx
587
movl CAST_S_table1(,%ebx,4),%ebx
588
subl %ebx,%ecx
589
movl CAST_S_table2(,%eax,4),%ebx
590
addl %ebx,%ecx
591
movl CAST_S_table3(,%edx,4),%ebx
592
xorl %ebx,%ecx
593
xorl %ecx,%edi
594
595
movl 48(%ebp),%edx
596
movl 52(%ebp),%ecx
597
addl %edi,%edx
598
roll %cl,%edx
599
xorl %ecx,%ecx
600
movl $255,%ebx
601
movb %dh,%cl
602
andl %edx,%ebx
603
shrl $16,%edx
604
xorl %eax,%eax
605
movb %dh,%al
606
andl $255,%edx
607
movl CAST_S_table0(,%ecx,4),%ecx
608
movl CAST_S_table1(,%ebx,4),%ebx
609
xorl %ebx,%ecx
610
movl CAST_S_table2(,%eax,4),%ebx
611
subl %ebx,%ecx
612
movl CAST_S_table3(,%edx,4),%ebx
613
addl %ebx,%ecx
614
xorl %ecx,%esi
615
616
movl 40(%ebp),%edx
617
movl 44(%ebp),%ecx
618
subl %esi,%edx
619
roll %cl,%edx
620
xorl %ecx,%ecx
621
movl $255,%ebx
622
movb %dh,%cl
623
andl %edx,%ebx
624
shrl $16,%edx
625
xorl %eax,%eax
626
movb %dh,%al
627
andl $255,%edx
628
movl CAST_S_table0(,%ecx,4),%ecx
629
movl CAST_S_table1(,%ebx,4),%ebx
630
addl %ebx,%ecx
631
movl CAST_S_table2(,%eax,4),%ebx
632
xorl %ebx,%ecx
633
movl CAST_S_table3(,%edx,4),%ebx
634
subl %ebx,%ecx
635
xorl %ecx,%edi
636
637
movl 32(%ebp),%edx
638
movl 36(%ebp),%ecx
639
xorl %edi,%edx
640
roll %cl,%edx
641
xorl %ecx,%ecx
642
movl $255,%ebx
643
movb %dh,%cl
644
andl %edx,%ebx
645
shrl $16,%edx
646
xorl %eax,%eax
647
movb %dh,%al
648
andl $255,%edx
649
movl CAST_S_table0(,%ecx,4),%ecx
650
movl CAST_S_table1(,%ebx,4),%ebx
651
subl %ebx,%ecx
652
movl CAST_S_table2(,%eax,4),%ebx
653
addl %ebx,%ecx
654
movl CAST_S_table3(,%edx,4),%ebx
655
xorl %ebx,%ecx
656
xorl %ecx,%esi
657
658
movl 24(%ebp),%edx
659
movl 28(%ebp),%ecx
660
addl %esi,%edx
661
roll %cl,%edx
662
xorl %ecx,%ecx
663
movl $255,%ebx
664
movb %dh,%cl
665
andl %edx,%ebx
666
shrl $16,%edx
667
xorl %eax,%eax
668
movb %dh,%al
669
andl $255,%edx
670
movl CAST_S_table0(,%ecx,4),%ecx
671
movl CAST_S_table1(,%ebx,4),%ebx
672
xorl %ebx,%ecx
673
movl CAST_S_table2(,%eax,4),%ebx
674
subl %ebx,%ecx
675
movl CAST_S_table3(,%edx,4),%ebx
676
addl %ebx,%ecx
677
xorl %ecx,%edi
678
679
movl 16(%ebp),%edx
680
movl 20(%ebp),%ecx
681
subl %edi,%edx
682
roll %cl,%edx
683
xorl %ecx,%ecx
684
movl $255,%ebx
685
movb %dh,%cl
686
andl %edx,%ebx
687
shrl $16,%edx
688
xorl %eax,%eax
689
movb %dh,%al
690
andl $255,%edx
691
movl CAST_S_table0(,%ecx,4),%ecx
692
movl CAST_S_table1(,%ebx,4),%ebx
693
addl %ebx,%ecx
694
movl CAST_S_table2(,%eax,4),%ebx
695
xorl %ebx,%ecx
696
movl CAST_S_table3(,%edx,4),%ebx
697
subl %ebx,%ecx
698
xorl %ecx,%esi
699
700
movl 8(%ebp),%edx
701
movl 12(%ebp),%ecx
702
xorl %esi,%edx
703
roll %cl,%edx
704
xorl %ecx,%ecx
705
movl $255,%ebx
706
movb %dh,%cl
707
andl %edx,%ebx
708
shrl $16,%edx
709
xorl %eax,%eax
710
movb %dh,%al
711
andl $255,%edx
712
movl CAST_S_table0(,%ecx,4),%ecx
713
movl CAST_S_table1(,%ebx,4),%ebx
714
subl %ebx,%ecx
715
movl CAST_S_table2(,%eax,4),%ebx
716
addl %ebx,%ecx
717
movl CAST_S_table3(,%edx,4),%ebx
718
xorl %ebx,%ecx
719
xorl %ecx,%edi
720
721
movl (%ebp),%edx
722
movl 4(%ebp),%ecx
723
addl %edi,%edx
724
roll %cl,%edx
725
xorl %ecx,%ecx
726
movl $255,%ebx
727
movb %dh,%cl
728
andl %edx,%ebx
729
shrl $16,%edx
730
xorl %eax,%eax
731
movb %dh,%al
732
andl $255,%edx
733
movl CAST_S_table0(,%ecx,4),%ecx
734
movl CAST_S_table1(,%ebx,4),%ebx
735
xorl %ebx,%ecx
736
movl CAST_S_table2(,%eax,4),%ebx
737
subl %ebx,%ecx
738
movl CAST_S_table3(,%edx,4),%ebx
739
addl %ebx,%ecx
740
xorl %ecx,%esi
741
nop
742
movl 20(%esp),%eax
743
movl %edi,4(%eax)
744
movl %esi,(%eax)
745
popl %edi
746
popl %esi
747
popl %ebx
748
popl %ebp
749
ret
750
.size CAST_decrypt,.-.L_CAST_decrypt_begin
751
.globl CAST_cbc_encrypt
752
.type CAST_cbc_encrypt,@function
753
.align 16
754
CAST_cbc_encrypt:
755
.L_CAST_cbc_encrypt_begin:
756
#ifdef __CET__
757
758
.byte 243,15,30,251
759
#endif
760
761
762
pushl %ebp
763
pushl %ebx
764
pushl %esi
765
pushl %edi
766
movl 28(%esp),%ebp
767
768
movl 36(%esp),%ebx
769
movl (%ebx),%esi
770
movl 4(%ebx),%edi
771
pushl %edi
772
pushl %esi
773
pushl %edi
774
pushl %esi
775
movl %esp,%ebx
776
movl 36(%esp),%esi
777
movl 40(%esp),%edi
778
779
movl 56(%esp),%ecx
780
781
movl 48(%esp),%eax
782
pushl %eax
783
pushl %ebx
784
cmpl $0,%ecx
785
jz .L002decrypt
786
andl $4294967288,%ebp
787
movl 8(%esp),%eax
788
movl 12(%esp),%ebx
789
jz .L003encrypt_finish
790
.L004encrypt_loop:
791
movl (%esi),%ecx
792
movl 4(%esi),%edx
793
xorl %ecx,%eax
794
xorl %edx,%ebx
795
bswap %eax
796
bswap %ebx
797
movl %eax,8(%esp)
798
movl %ebx,12(%esp)
799
call .L_CAST_encrypt_begin
800
movl 8(%esp),%eax
801
movl 12(%esp),%ebx
802
bswap %eax
803
bswap %ebx
804
movl %eax,(%edi)
805
movl %ebx,4(%edi)
806
addl $8,%esi
807
addl $8,%edi
808
subl $8,%ebp
809
jnz .L004encrypt_loop
810
.L003encrypt_finish:
811
movl 52(%esp),%ebp
812
andl $7,%ebp
813
jz .L005finish
814
call .L006PIC_point
815
.L006PIC_point:
816
popl %edx
817
leal .L007cbc_enc_jmp_table-.L006PIC_point(%edx),%ecx
818
movl (%ecx,%ebp,4),%ebp
819
addl %edx,%ebp
820
xorl %ecx,%ecx
821
xorl %edx,%edx
822
jmp *%ebp
823
.L008ej7:
824
#ifdef __CET__
825
826
.byte 243,15,30,251
827
#endif
828
829
movb 6(%esi),%dh
830
shll $8,%edx
831
.L009ej6:
832
#ifdef __CET__
833
834
.byte 243,15,30,251
835
#endif
836
837
movb 5(%esi),%dh
838
.L010ej5:
839
#ifdef __CET__
840
841
.byte 243,15,30,251
842
#endif
843
844
movb 4(%esi),%dl
845
.L011ej4:
846
#ifdef __CET__
847
848
.byte 243,15,30,251
849
#endif
850
851
movl (%esi),%ecx
852
jmp .L012ejend
853
.L013ej3:
854
#ifdef __CET__
855
856
.byte 243,15,30,251
857
#endif
858
859
movb 2(%esi),%ch
860
shll $8,%ecx
861
.L014ej2:
862
#ifdef __CET__
863
864
.byte 243,15,30,251
865
#endif
866
867
movb 1(%esi),%ch
868
.L015ej1:
869
#ifdef __CET__
870
871
.byte 243,15,30,251
872
#endif
873
874
movb (%esi),%cl
875
.L012ejend:
876
xorl %ecx,%eax
877
xorl %edx,%ebx
878
bswap %eax
879
bswap %ebx
880
movl %eax,8(%esp)
881
movl %ebx,12(%esp)
882
call .L_CAST_encrypt_begin
883
movl 8(%esp),%eax
884
movl 12(%esp),%ebx
885
bswap %eax
886
bswap %ebx
887
movl %eax,(%edi)
888
movl %ebx,4(%edi)
889
jmp .L005finish
890
.L002decrypt:
891
andl $4294967288,%ebp
892
movl 16(%esp),%eax
893
movl 20(%esp),%ebx
894
jz .L016decrypt_finish
895
.L017decrypt_loop:
896
movl (%esi),%eax
897
movl 4(%esi),%ebx
898
bswap %eax
899
bswap %ebx
900
movl %eax,8(%esp)
901
movl %ebx,12(%esp)
902
call .L_CAST_decrypt_begin
903
movl 8(%esp),%eax
904
movl 12(%esp),%ebx
905
bswap %eax
906
bswap %ebx
907
movl 16(%esp),%ecx
908
movl 20(%esp),%edx
909
xorl %eax,%ecx
910
xorl %ebx,%edx
911
movl (%esi),%eax
912
movl 4(%esi),%ebx
913
movl %ecx,(%edi)
914
movl %edx,4(%edi)
915
movl %eax,16(%esp)
916
movl %ebx,20(%esp)
917
addl $8,%esi
918
addl $8,%edi
919
subl $8,%ebp
920
jnz .L017decrypt_loop
921
.L016decrypt_finish:
922
movl 52(%esp),%ebp
923
andl $7,%ebp
924
jz .L005finish
925
movl (%esi),%eax
926
movl 4(%esi),%ebx
927
bswap %eax
928
bswap %ebx
929
movl %eax,8(%esp)
930
movl %ebx,12(%esp)
931
call .L_CAST_decrypt_begin
932
movl 8(%esp),%eax
933
movl 12(%esp),%ebx
934
bswap %eax
935
bswap %ebx
936
movl 16(%esp),%ecx
937
movl 20(%esp),%edx
938
xorl %eax,%ecx
939
xorl %ebx,%edx
940
movl (%esi),%eax
941
movl 4(%esi),%ebx
942
.L018dj7:
943
rorl $16,%edx
944
movb %dl,6(%edi)
945
shrl $16,%edx
946
.L019dj6:
947
movb %dh,5(%edi)
948
.L020dj5:
949
movb %dl,4(%edi)
950
.L021dj4:
951
movl %ecx,(%edi)
952
jmp .L022djend
953
.L023dj3:
954
rorl $16,%ecx
955
movb %cl,2(%edi)
956
shll $16,%ecx
957
.L024dj2:
958
movb %ch,1(%esi)
959
.L025dj1:
960
movb %cl,(%esi)
961
.L022djend:
962
jmp .L005finish
963
.L005finish:
964
movl 60(%esp),%ecx
965
addl $24,%esp
966
movl %eax,(%ecx)
967
movl %ebx,4(%ecx)
968
popl %edi
969
popl %esi
970
popl %ebx
971
popl %ebp
972
ret
973
.align 64
974
.L007cbc_enc_jmp_table:
975
.long 0
976
.long .L015ej1-.L006PIC_point
977
.long .L014ej2-.L006PIC_point
978
.long .L013ej3-.L006PIC_point
979
.long .L011ej4-.L006PIC_point
980
.long .L010ej5-.L006PIC_point
981
.long .L009ej6-.L006PIC_point
982
.long .L008ej7-.L006PIC_point
983
.align 64
984
.size CAST_cbc_encrypt,.-.L_CAST_cbc_encrypt_begin
985
986
.section ".note.gnu.property", "a"
987
.p2align 2
988
.long 1f - 0f
989
.long 4f - 1f
990
.long 5
991
0:
992
.asciz "GNU"
993
1:
994
.p2align 2
995
.long 0xc0000002
996
.long 3f - 2f
997
2:
998
.long 3
999
3:
1000
.p2align 2
1001
4:
1002
#else
1003
.text
1004
.globl CAST_encrypt
1005
.type CAST_encrypt,@function
1006
.align 16
1007
CAST_encrypt:
1008
.L_CAST_encrypt_begin:
1009
#ifdef __CET__
1010
1011
.byte 243,15,30,251
1012
#endif
1013
1014
1015
pushl %ebp
1016
pushl %ebx
1017
movl 12(%esp),%ebx
1018
movl 16(%esp),%ebp
1019
pushl %esi
1020
pushl %edi
1021
1022
movl (%ebx),%edi
1023
movl 4(%ebx),%esi
1024
1025
movl 128(%ebp),%eax
1026
pushl %eax
1027
xorl %eax,%eax
1028
1029
movl (%ebp),%edx
1030
movl 4(%ebp),%ecx
1031
addl %esi,%edx
1032
roll %cl,%edx
1033
xorl %ecx,%ecx
1034
movl $255,%ebx
1035
movb %dh,%cl
1036
andl %edx,%ebx
1037
shrl $16,%edx
1038
xorl %eax,%eax
1039
movb %dh,%al
1040
andl $255,%edx
1041
movl CAST_S_table0(,%ecx,4),%ecx
1042
movl CAST_S_table1(,%ebx,4),%ebx
1043
xorl %ebx,%ecx
1044
movl CAST_S_table2(,%eax,4),%ebx
1045
subl %ebx,%ecx
1046
movl CAST_S_table3(,%edx,4),%ebx
1047
addl %ebx,%ecx
1048
xorl %ecx,%edi
1049
1050
movl 8(%ebp),%edx
1051
movl 12(%ebp),%ecx
1052
xorl %edi,%edx
1053
roll %cl,%edx
1054
xorl %ecx,%ecx
1055
movl $255,%ebx
1056
movb %dh,%cl
1057
andl %edx,%ebx
1058
shrl $16,%edx
1059
xorl %eax,%eax
1060
movb %dh,%al
1061
andl $255,%edx
1062
movl CAST_S_table0(,%ecx,4),%ecx
1063
movl CAST_S_table1(,%ebx,4),%ebx
1064
subl %ebx,%ecx
1065
movl CAST_S_table2(,%eax,4),%ebx
1066
addl %ebx,%ecx
1067
movl CAST_S_table3(,%edx,4),%ebx
1068
xorl %ebx,%ecx
1069
xorl %ecx,%esi
1070
1071
movl 16(%ebp),%edx
1072
movl 20(%ebp),%ecx
1073
subl %esi,%edx
1074
roll %cl,%edx
1075
xorl %ecx,%ecx
1076
movl $255,%ebx
1077
movb %dh,%cl
1078
andl %edx,%ebx
1079
shrl $16,%edx
1080
xorl %eax,%eax
1081
movb %dh,%al
1082
andl $255,%edx
1083
movl CAST_S_table0(,%ecx,4),%ecx
1084
movl CAST_S_table1(,%ebx,4),%ebx
1085
addl %ebx,%ecx
1086
movl CAST_S_table2(,%eax,4),%ebx
1087
xorl %ebx,%ecx
1088
movl CAST_S_table3(,%edx,4),%ebx
1089
subl %ebx,%ecx
1090
xorl %ecx,%edi
1091
1092
movl 24(%ebp),%edx
1093
movl 28(%ebp),%ecx
1094
addl %edi,%edx
1095
roll %cl,%edx
1096
xorl %ecx,%ecx
1097
movl $255,%ebx
1098
movb %dh,%cl
1099
andl %edx,%ebx
1100
shrl $16,%edx
1101
xorl %eax,%eax
1102
movb %dh,%al
1103
andl $255,%edx
1104
movl CAST_S_table0(,%ecx,4),%ecx
1105
movl CAST_S_table1(,%ebx,4),%ebx
1106
xorl %ebx,%ecx
1107
movl CAST_S_table2(,%eax,4),%ebx
1108
subl %ebx,%ecx
1109
movl CAST_S_table3(,%edx,4),%ebx
1110
addl %ebx,%ecx
1111
xorl %ecx,%esi
1112
1113
movl 32(%ebp),%edx
1114
movl 36(%ebp),%ecx
1115
xorl %esi,%edx
1116
roll %cl,%edx
1117
xorl %ecx,%ecx
1118
movl $255,%ebx
1119
movb %dh,%cl
1120
andl %edx,%ebx
1121
shrl $16,%edx
1122
xorl %eax,%eax
1123
movb %dh,%al
1124
andl $255,%edx
1125
movl CAST_S_table0(,%ecx,4),%ecx
1126
movl CAST_S_table1(,%ebx,4),%ebx
1127
subl %ebx,%ecx
1128
movl CAST_S_table2(,%eax,4),%ebx
1129
addl %ebx,%ecx
1130
movl CAST_S_table3(,%edx,4),%ebx
1131
xorl %ebx,%ecx
1132
xorl %ecx,%edi
1133
1134
movl 40(%ebp),%edx
1135
movl 44(%ebp),%ecx
1136
subl %edi,%edx
1137
roll %cl,%edx
1138
xorl %ecx,%ecx
1139
movl $255,%ebx
1140
movb %dh,%cl
1141
andl %edx,%ebx
1142
shrl $16,%edx
1143
xorl %eax,%eax
1144
movb %dh,%al
1145
andl $255,%edx
1146
movl CAST_S_table0(,%ecx,4),%ecx
1147
movl CAST_S_table1(,%ebx,4),%ebx
1148
addl %ebx,%ecx
1149
movl CAST_S_table2(,%eax,4),%ebx
1150
xorl %ebx,%ecx
1151
movl CAST_S_table3(,%edx,4),%ebx
1152
subl %ebx,%ecx
1153
xorl %ecx,%esi
1154
1155
movl 48(%ebp),%edx
1156
movl 52(%ebp),%ecx
1157
addl %esi,%edx
1158
roll %cl,%edx
1159
xorl %ecx,%ecx
1160
movl $255,%ebx
1161
movb %dh,%cl
1162
andl %edx,%ebx
1163
shrl $16,%edx
1164
xorl %eax,%eax
1165
movb %dh,%al
1166
andl $255,%edx
1167
movl CAST_S_table0(,%ecx,4),%ecx
1168
movl CAST_S_table1(,%ebx,4),%ebx
1169
xorl %ebx,%ecx
1170
movl CAST_S_table2(,%eax,4),%ebx
1171
subl %ebx,%ecx
1172
movl CAST_S_table3(,%edx,4),%ebx
1173
addl %ebx,%ecx
1174
xorl %ecx,%edi
1175
1176
movl 56(%ebp),%edx
1177
movl 60(%ebp),%ecx
1178
xorl %edi,%edx
1179
roll %cl,%edx
1180
xorl %ecx,%ecx
1181
movl $255,%ebx
1182
movb %dh,%cl
1183
andl %edx,%ebx
1184
shrl $16,%edx
1185
xorl %eax,%eax
1186
movb %dh,%al
1187
andl $255,%edx
1188
movl CAST_S_table0(,%ecx,4),%ecx
1189
movl CAST_S_table1(,%ebx,4),%ebx
1190
subl %ebx,%ecx
1191
movl CAST_S_table2(,%eax,4),%ebx
1192
addl %ebx,%ecx
1193
movl CAST_S_table3(,%edx,4),%ebx
1194
xorl %ebx,%ecx
1195
xorl %ecx,%esi
1196
1197
movl 64(%ebp),%edx
1198
movl 68(%ebp),%ecx
1199
subl %esi,%edx
1200
roll %cl,%edx
1201
xorl %ecx,%ecx
1202
movl $255,%ebx
1203
movb %dh,%cl
1204
andl %edx,%ebx
1205
shrl $16,%edx
1206
xorl %eax,%eax
1207
movb %dh,%al
1208
andl $255,%edx
1209
movl CAST_S_table0(,%ecx,4),%ecx
1210
movl CAST_S_table1(,%ebx,4),%ebx
1211
addl %ebx,%ecx
1212
movl CAST_S_table2(,%eax,4),%ebx
1213
xorl %ebx,%ecx
1214
movl CAST_S_table3(,%edx,4),%ebx
1215
subl %ebx,%ecx
1216
xorl %ecx,%edi
1217
1218
movl 72(%ebp),%edx
1219
movl 76(%ebp),%ecx
1220
addl %edi,%edx
1221
roll %cl,%edx
1222
xorl %ecx,%ecx
1223
movl $255,%ebx
1224
movb %dh,%cl
1225
andl %edx,%ebx
1226
shrl $16,%edx
1227
xorl %eax,%eax
1228
movb %dh,%al
1229
andl $255,%edx
1230
movl CAST_S_table0(,%ecx,4),%ecx
1231
movl CAST_S_table1(,%ebx,4),%ebx
1232
xorl %ebx,%ecx
1233
movl CAST_S_table2(,%eax,4),%ebx
1234
subl %ebx,%ecx
1235
movl CAST_S_table3(,%edx,4),%ebx
1236
addl %ebx,%ecx
1237
xorl %ecx,%esi
1238
1239
movl 80(%ebp),%edx
1240
movl 84(%ebp),%ecx
1241
xorl %esi,%edx
1242
roll %cl,%edx
1243
xorl %ecx,%ecx
1244
movl $255,%ebx
1245
movb %dh,%cl
1246
andl %edx,%ebx
1247
shrl $16,%edx
1248
xorl %eax,%eax
1249
movb %dh,%al
1250
andl $255,%edx
1251
movl CAST_S_table0(,%ecx,4),%ecx
1252
movl CAST_S_table1(,%ebx,4),%ebx
1253
subl %ebx,%ecx
1254
movl CAST_S_table2(,%eax,4),%ebx
1255
addl %ebx,%ecx
1256
movl CAST_S_table3(,%edx,4),%ebx
1257
xorl %ebx,%ecx
1258
xorl %ecx,%edi
1259
1260
movl 88(%ebp),%edx
1261
movl 92(%ebp),%ecx
1262
subl %edi,%edx
1263
roll %cl,%edx
1264
xorl %ecx,%ecx
1265
movl $255,%ebx
1266
movb %dh,%cl
1267
andl %edx,%ebx
1268
shrl $16,%edx
1269
xorl %eax,%eax
1270
movb %dh,%al
1271
andl $255,%edx
1272
movl CAST_S_table0(,%ecx,4),%ecx
1273
movl CAST_S_table1(,%ebx,4),%ebx
1274
addl %ebx,%ecx
1275
movl CAST_S_table2(,%eax,4),%ebx
1276
xorl %ebx,%ecx
1277
movl CAST_S_table3(,%edx,4),%ebx
1278
subl %ebx,%ecx
1279
xorl %ecx,%esi
1280
1281
popl %edx
1282
orl %edx,%edx
1283
jnz .L000cast_enc_done
1284
1285
movl 96(%ebp),%edx
1286
movl 100(%ebp),%ecx
1287
addl %esi,%edx
1288
roll %cl,%edx
1289
xorl %ecx,%ecx
1290
movl $255,%ebx
1291
movb %dh,%cl
1292
andl %edx,%ebx
1293
shrl $16,%edx
1294
xorl %eax,%eax
1295
movb %dh,%al
1296
andl $255,%edx
1297
movl CAST_S_table0(,%ecx,4),%ecx
1298
movl CAST_S_table1(,%ebx,4),%ebx
1299
xorl %ebx,%ecx
1300
movl CAST_S_table2(,%eax,4),%ebx
1301
subl %ebx,%ecx
1302
movl CAST_S_table3(,%edx,4),%ebx
1303
addl %ebx,%ecx
1304
xorl %ecx,%edi
1305
1306
movl 104(%ebp),%edx
1307
movl 108(%ebp),%ecx
1308
xorl %edi,%edx
1309
roll %cl,%edx
1310
xorl %ecx,%ecx
1311
movl $255,%ebx
1312
movb %dh,%cl
1313
andl %edx,%ebx
1314
shrl $16,%edx
1315
xorl %eax,%eax
1316
movb %dh,%al
1317
andl $255,%edx
1318
movl CAST_S_table0(,%ecx,4),%ecx
1319
movl CAST_S_table1(,%ebx,4),%ebx
1320
subl %ebx,%ecx
1321
movl CAST_S_table2(,%eax,4),%ebx
1322
addl %ebx,%ecx
1323
movl CAST_S_table3(,%edx,4),%ebx
1324
xorl %ebx,%ecx
1325
xorl %ecx,%esi
1326
1327
movl 112(%ebp),%edx
1328
movl 116(%ebp),%ecx
1329
subl %esi,%edx
1330
roll %cl,%edx
1331
xorl %ecx,%ecx
1332
movl $255,%ebx
1333
movb %dh,%cl
1334
andl %edx,%ebx
1335
shrl $16,%edx
1336
xorl %eax,%eax
1337
movb %dh,%al
1338
andl $255,%edx
1339
movl CAST_S_table0(,%ecx,4),%ecx
1340
movl CAST_S_table1(,%ebx,4),%ebx
1341
addl %ebx,%ecx
1342
movl CAST_S_table2(,%eax,4),%ebx
1343
xorl %ebx,%ecx
1344
movl CAST_S_table3(,%edx,4),%ebx
1345
subl %ebx,%ecx
1346
xorl %ecx,%edi
1347
1348
movl 120(%ebp),%edx
1349
movl 124(%ebp),%ecx
1350
addl %edi,%edx
1351
roll %cl,%edx
1352
xorl %ecx,%ecx
1353
movl $255,%ebx
1354
movb %dh,%cl
1355
andl %edx,%ebx
1356
shrl $16,%edx
1357
xorl %eax,%eax
1358
movb %dh,%al
1359
andl $255,%edx
1360
movl CAST_S_table0(,%ecx,4),%ecx
1361
movl CAST_S_table1(,%ebx,4),%ebx
1362
xorl %ebx,%ecx
1363
movl CAST_S_table2(,%eax,4),%ebx
1364
subl %ebx,%ecx
1365
movl CAST_S_table3(,%edx,4),%ebx
1366
addl %ebx,%ecx
1367
xorl %ecx,%esi
1368
.L000cast_enc_done:
1369
nop
1370
movl 20(%esp),%eax
1371
movl %edi,4(%eax)
1372
movl %esi,(%eax)
1373
popl %edi
1374
popl %esi
1375
popl %ebx
1376
popl %ebp
1377
ret
1378
.size CAST_encrypt,.-.L_CAST_encrypt_begin
1379
.globl CAST_decrypt
1380
.type CAST_decrypt,@function
1381
.align 16
1382
CAST_decrypt:
1383
.L_CAST_decrypt_begin:
1384
#ifdef __CET__
1385
1386
.byte 243,15,30,251
1387
#endif
1388
1389
1390
pushl %ebp
1391
pushl %ebx
1392
movl 12(%esp),%ebx
1393
movl 16(%esp),%ebp
1394
pushl %esi
1395
pushl %edi
1396
1397
movl (%ebx),%edi
1398
movl 4(%ebx),%esi
1399
1400
movl 128(%ebp),%eax
1401
orl %eax,%eax
1402
jnz .L001cast_dec_skip
1403
xorl %eax,%eax
1404
1405
movl 120(%ebp),%edx
1406
movl 124(%ebp),%ecx
1407
addl %esi,%edx
1408
roll %cl,%edx
1409
xorl %ecx,%ecx
1410
movl $255,%ebx
1411
movb %dh,%cl
1412
andl %edx,%ebx
1413
shrl $16,%edx
1414
xorl %eax,%eax
1415
movb %dh,%al
1416
andl $255,%edx
1417
movl CAST_S_table0(,%ecx,4),%ecx
1418
movl CAST_S_table1(,%ebx,4),%ebx
1419
xorl %ebx,%ecx
1420
movl CAST_S_table2(,%eax,4),%ebx
1421
subl %ebx,%ecx
1422
movl CAST_S_table3(,%edx,4),%ebx
1423
addl %ebx,%ecx
1424
xorl %ecx,%edi
1425
1426
movl 112(%ebp),%edx
1427
movl 116(%ebp),%ecx
1428
subl %edi,%edx
1429
roll %cl,%edx
1430
xorl %ecx,%ecx
1431
movl $255,%ebx
1432
movb %dh,%cl
1433
andl %edx,%ebx
1434
shrl $16,%edx
1435
xorl %eax,%eax
1436
movb %dh,%al
1437
andl $255,%edx
1438
movl CAST_S_table0(,%ecx,4),%ecx
1439
movl CAST_S_table1(,%ebx,4),%ebx
1440
addl %ebx,%ecx
1441
movl CAST_S_table2(,%eax,4),%ebx
1442
xorl %ebx,%ecx
1443
movl CAST_S_table3(,%edx,4),%ebx
1444
subl %ebx,%ecx
1445
xorl %ecx,%esi
1446
1447
movl 104(%ebp),%edx
1448
movl 108(%ebp),%ecx
1449
xorl %esi,%edx
1450
roll %cl,%edx
1451
xorl %ecx,%ecx
1452
movl $255,%ebx
1453
movb %dh,%cl
1454
andl %edx,%ebx
1455
shrl $16,%edx
1456
xorl %eax,%eax
1457
movb %dh,%al
1458
andl $255,%edx
1459
movl CAST_S_table0(,%ecx,4),%ecx
1460
movl CAST_S_table1(,%ebx,4),%ebx
1461
subl %ebx,%ecx
1462
movl CAST_S_table2(,%eax,4),%ebx
1463
addl %ebx,%ecx
1464
movl CAST_S_table3(,%edx,4),%ebx
1465
xorl %ebx,%ecx
1466
xorl %ecx,%edi
1467
1468
movl 96(%ebp),%edx
1469
movl 100(%ebp),%ecx
1470
addl %edi,%edx
1471
roll %cl,%edx
1472
xorl %ecx,%ecx
1473
movl $255,%ebx
1474
movb %dh,%cl
1475
andl %edx,%ebx
1476
shrl $16,%edx
1477
xorl %eax,%eax
1478
movb %dh,%al
1479
andl $255,%edx
1480
movl CAST_S_table0(,%ecx,4),%ecx
1481
movl CAST_S_table1(,%ebx,4),%ebx
1482
xorl %ebx,%ecx
1483
movl CAST_S_table2(,%eax,4),%ebx
1484
subl %ebx,%ecx
1485
movl CAST_S_table3(,%edx,4),%ebx
1486
addl %ebx,%ecx
1487
xorl %ecx,%esi
1488
.L001cast_dec_skip:
1489
1490
movl 88(%ebp),%edx
1491
movl 92(%ebp),%ecx
1492
subl %esi,%edx
1493
roll %cl,%edx
1494
xorl %ecx,%ecx
1495
movl $255,%ebx
1496
movb %dh,%cl
1497
andl %edx,%ebx
1498
shrl $16,%edx
1499
xorl %eax,%eax
1500
movb %dh,%al
1501
andl $255,%edx
1502
movl CAST_S_table0(,%ecx,4),%ecx
1503
movl CAST_S_table1(,%ebx,4),%ebx
1504
addl %ebx,%ecx
1505
movl CAST_S_table2(,%eax,4),%ebx
1506
xorl %ebx,%ecx
1507
movl CAST_S_table3(,%edx,4),%ebx
1508
subl %ebx,%ecx
1509
xorl %ecx,%edi
1510
1511
movl 80(%ebp),%edx
1512
movl 84(%ebp),%ecx
1513
xorl %edi,%edx
1514
roll %cl,%edx
1515
xorl %ecx,%ecx
1516
movl $255,%ebx
1517
movb %dh,%cl
1518
andl %edx,%ebx
1519
shrl $16,%edx
1520
xorl %eax,%eax
1521
movb %dh,%al
1522
andl $255,%edx
1523
movl CAST_S_table0(,%ecx,4),%ecx
1524
movl CAST_S_table1(,%ebx,4),%ebx
1525
subl %ebx,%ecx
1526
movl CAST_S_table2(,%eax,4),%ebx
1527
addl %ebx,%ecx
1528
movl CAST_S_table3(,%edx,4),%ebx
1529
xorl %ebx,%ecx
1530
xorl %ecx,%esi
1531
1532
movl 72(%ebp),%edx
1533
movl 76(%ebp),%ecx
1534
addl %esi,%edx
1535
roll %cl,%edx
1536
xorl %ecx,%ecx
1537
movl $255,%ebx
1538
movb %dh,%cl
1539
andl %edx,%ebx
1540
shrl $16,%edx
1541
xorl %eax,%eax
1542
movb %dh,%al
1543
andl $255,%edx
1544
movl CAST_S_table0(,%ecx,4),%ecx
1545
movl CAST_S_table1(,%ebx,4),%ebx
1546
xorl %ebx,%ecx
1547
movl CAST_S_table2(,%eax,4),%ebx
1548
subl %ebx,%ecx
1549
movl CAST_S_table3(,%edx,4),%ebx
1550
addl %ebx,%ecx
1551
xorl %ecx,%edi
1552
1553
movl 64(%ebp),%edx
1554
movl 68(%ebp),%ecx
1555
subl %edi,%edx
1556
roll %cl,%edx
1557
xorl %ecx,%ecx
1558
movl $255,%ebx
1559
movb %dh,%cl
1560
andl %edx,%ebx
1561
shrl $16,%edx
1562
xorl %eax,%eax
1563
movb %dh,%al
1564
andl $255,%edx
1565
movl CAST_S_table0(,%ecx,4),%ecx
1566
movl CAST_S_table1(,%ebx,4),%ebx
1567
addl %ebx,%ecx
1568
movl CAST_S_table2(,%eax,4),%ebx
1569
xorl %ebx,%ecx
1570
movl CAST_S_table3(,%edx,4),%ebx
1571
subl %ebx,%ecx
1572
xorl %ecx,%esi
1573
1574
movl 56(%ebp),%edx
1575
movl 60(%ebp),%ecx
1576
xorl %esi,%edx
1577
roll %cl,%edx
1578
xorl %ecx,%ecx
1579
movl $255,%ebx
1580
movb %dh,%cl
1581
andl %edx,%ebx
1582
shrl $16,%edx
1583
xorl %eax,%eax
1584
movb %dh,%al
1585
andl $255,%edx
1586
movl CAST_S_table0(,%ecx,4),%ecx
1587
movl CAST_S_table1(,%ebx,4),%ebx
1588
subl %ebx,%ecx
1589
movl CAST_S_table2(,%eax,4),%ebx
1590
addl %ebx,%ecx
1591
movl CAST_S_table3(,%edx,4),%ebx
1592
xorl %ebx,%ecx
1593
xorl %ecx,%edi
1594
1595
movl 48(%ebp),%edx
1596
movl 52(%ebp),%ecx
1597
addl %edi,%edx
1598
roll %cl,%edx
1599
xorl %ecx,%ecx
1600
movl $255,%ebx
1601
movb %dh,%cl
1602
andl %edx,%ebx
1603
shrl $16,%edx
1604
xorl %eax,%eax
1605
movb %dh,%al
1606
andl $255,%edx
1607
movl CAST_S_table0(,%ecx,4),%ecx
1608
movl CAST_S_table1(,%ebx,4),%ebx
1609
xorl %ebx,%ecx
1610
movl CAST_S_table2(,%eax,4),%ebx
1611
subl %ebx,%ecx
1612
movl CAST_S_table3(,%edx,4),%ebx
1613
addl %ebx,%ecx
1614
xorl %ecx,%esi
1615
1616
movl 40(%ebp),%edx
1617
movl 44(%ebp),%ecx
1618
subl %esi,%edx
1619
roll %cl,%edx
1620
xorl %ecx,%ecx
1621
movl $255,%ebx
1622
movb %dh,%cl
1623
andl %edx,%ebx
1624
shrl $16,%edx
1625
xorl %eax,%eax
1626
movb %dh,%al
1627
andl $255,%edx
1628
movl CAST_S_table0(,%ecx,4),%ecx
1629
movl CAST_S_table1(,%ebx,4),%ebx
1630
addl %ebx,%ecx
1631
movl CAST_S_table2(,%eax,4),%ebx
1632
xorl %ebx,%ecx
1633
movl CAST_S_table3(,%edx,4),%ebx
1634
subl %ebx,%ecx
1635
xorl %ecx,%edi
1636
1637
movl 32(%ebp),%edx
1638
movl 36(%ebp),%ecx
1639
xorl %edi,%edx
1640
roll %cl,%edx
1641
xorl %ecx,%ecx
1642
movl $255,%ebx
1643
movb %dh,%cl
1644
andl %edx,%ebx
1645
shrl $16,%edx
1646
xorl %eax,%eax
1647
movb %dh,%al
1648
andl $255,%edx
1649
movl CAST_S_table0(,%ecx,4),%ecx
1650
movl CAST_S_table1(,%ebx,4),%ebx
1651
subl %ebx,%ecx
1652
movl CAST_S_table2(,%eax,4),%ebx
1653
addl %ebx,%ecx
1654
movl CAST_S_table3(,%edx,4),%ebx
1655
xorl %ebx,%ecx
1656
xorl %ecx,%esi
1657
1658
movl 24(%ebp),%edx
1659
movl 28(%ebp),%ecx
1660
addl %esi,%edx
1661
roll %cl,%edx
1662
xorl %ecx,%ecx
1663
movl $255,%ebx
1664
movb %dh,%cl
1665
andl %edx,%ebx
1666
shrl $16,%edx
1667
xorl %eax,%eax
1668
movb %dh,%al
1669
andl $255,%edx
1670
movl CAST_S_table0(,%ecx,4),%ecx
1671
movl CAST_S_table1(,%ebx,4),%ebx
1672
xorl %ebx,%ecx
1673
movl CAST_S_table2(,%eax,4),%ebx
1674
subl %ebx,%ecx
1675
movl CAST_S_table3(,%edx,4),%ebx
1676
addl %ebx,%ecx
1677
xorl %ecx,%edi
1678
1679
movl 16(%ebp),%edx
1680
movl 20(%ebp),%ecx
1681
subl %edi,%edx
1682
roll %cl,%edx
1683
xorl %ecx,%ecx
1684
movl $255,%ebx
1685
movb %dh,%cl
1686
andl %edx,%ebx
1687
shrl $16,%edx
1688
xorl %eax,%eax
1689
movb %dh,%al
1690
andl $255,%edx
1691
movl CAST_S_table0(,%ecx,4),%ecx
1692
movl CAST_S_table1(,%ebx,4),%ebx
1693
addl %ebx,%ecx
1694
movl CAST_S_table2(,%eax,4),%ebx
1695
xorl %ebx,%ecx
1696
movl CAST_S_table3(,%edx,4),%ebx
1697
subl %ebx,%ecx
1698
xorl %ecx,%esi
1699
1700
movl 8(%ebp),%edx
1701
movl 12(%ebp),%ecx
1702
xorl %esi,%edx
1703
roll %cl,%edx
1704
xorl %ecx,%ecx
1705
movl $255,%ebx
1706
movb %dh,%cl
1707
andl %edx,%ebx
1708
shrl $16,%edx
1709
xorl %eax,%eax
1710
movb %dh,%al
1711
andl $255,%edx
1712
movl CAST_S_table0(,%ecx,4),%ecx
1713
movl CAST_S_table1(,%ebx,4),%ebx
1714
subl %ebx,%ecx
1715
movl CAST_S_table2(,%eax,4),%ebx
1716
addl %ebx,%ecx
1717
movl CAST_S_table3(,%edx,4),%ebx
1718
xorl %ebx,%ecx
1719
xorl %ecx,%edi
1720
1721
movl (%ebp),%edx
1722
movl 4(%ebp),%ecx
1723
addl %edi,%edx
1724
roll %cl,%edx
1725
xorl %ecx,%ecx
1726
movl $255,%ebx
1727
movb %dh,%cl
1728
andl %edx,%ebx
1729
shrl $16,%edx
1730
xorl %eax,%eax
1731
movb %dh,%al
1732
andl $255,%edx
1733
movl CAST_S_table0(,%ecx,4),%ecx
1734
movl CAST_S_table1(,%ebx,4),%ebx
1735
xorl %ebx,%ecx
1736
movl CAST_S_table2(,%eax,4),%ebx
1737
subl %ebx,%ecx
1738
movl CAST_S_table3(,%edx,4),%ebx
1739
addl %ebx,%ecx
1740
xorl %ecx,%esi
1741
nop
1742
movl 20(%esp),%eax
1743
movl %edi,4(%eax)
1744
movl %esi,(%eax)
1745
popl %edi
1746
popl %esi
1747
popl %ebx
1748
popl %ebp
1749
ret
1750
.size CAST_decrypt,.-.L_CAST_decrypt_begin
1751
.globl CAST_cbc_encrypt
1752
.type CAST_cbc_encrypt,@function
1753
.align 16
1754
CAST_cbc_encrypt:
1755
.L_CAST_cbc_encrypt_begin:
1756
#ifdef __CET__
1757
1758
.byte 243,15,30,251
1759
#endif
1760
1761
1762
pushl %ebp
1763
pushl %ebx
1764
pushl %esi
1765
pushl %edi
1766
movl 28(%esp),%ebp
1767
1768
movl 36(%esp),%ebx
1769
movl (%ebx),%esi
1770
movl 4(%ebx),%edi
1771
pushl %edi
1772
pushl %esi
1773
pushl %edi
1774
pushl %esi
1775
movl %esp,%ebx
1776
movl 36(%esp),%esi
1777
movl 40(%esp),%edi
1778
1779
movl 56(%esp),%ecx
1780
1781
movl 48(%esp),%eax
1782
pushl %eax
1783
pushl %ebx
1784
cmpl $0,%ecx
1785
jz .L002decrypt
1786
andl $4294967288,%ebp
1787
movl 8(%esp),%eax
1788
movl 12(%esp),%ebx
1789
jz .L003encrypt_finish
1790
.L004encrypt_loop:
1791
movl (%esi),%ecx
1792
movl 4(%esi),%edx
1793
xorl %ecx,%eax
1794
xorl %edx,%ebx
1795
bswap %eax
1796
bswap %ebx
1797
movl %eax,8(%esp)
1798
movl %ebx,12(%esp)
1799
call .L_CAST_encrypt_begin
1800
movl 8(%esp),%eax
1801
movl 12(%esp),%ebx
1802
bswap %eax
1803
bswap %ebx
1804
movl %eax,(%edi)
1805
movl %ebx,4(%edi)
1806
addl $8,%esi
1807
addl $8,%edi
1808
subl $8,%ebp
1809
jnz .L004encrypt_loop
1810
.L003encrypt_finish:
1811
movl 52(%esp),%ebp
1812
andl $7,%ebp
1813
jz .L005finish
1814
call .L006PIC_point
1815
.L006PIC_point:
1816
popl %edx
1817
leal .L007cbc_enc_jmp_table-.L006PIC_point(%edx),%ecx
1818
movl (%ecx,%ebp,4),%ebp
1819
addl %edx,%ebp
1820
xorl %ecx,%ecx
1821
xorl %edx,%edx
1822
jmp *%ebp
1823
.L008ej7:
1824
#ifdef __CET__
1825
1826
.byte 243,15,30,251
1827
#endif
1828
1829
movb 6(%esi),%dh
1830
shll $8,%edx
1831
.L009ej6:
1832
#ifdef __CET__
1833
1834
.byte 243,15,30,251
1835
#endif
1836
1837
movb 5(%esi),%dh
1838
.L010ej5:
1839
#ifdef __CET__
1840
1841
.byte 243,15,30,251
1842
#endif
1843
1844
movb 4(%esi),%dl
1845
.L011ej4:
1846
#ifdef __CET__
1847
1848
.byte 243,15,30,251
1849
#endif
1850
1851
movl (%esi),%ecx
1852
jmp .L012ejend
1853
.L013ej3:
1854
#ifdef __CET__
1855
1856
.byte 243,15,30,251
1857
#endif
1858
1859
movb 2(%esi),%ch
1860
shll $8,%ecx
1861
.L014ej2:
1862
#ifdef __CET__
1863
1864
.byte 243,15,30,251
1865
#endif
1866
1867
movb 1(%esi),%ch
1868
.L015ej1:
1869
#ifdef __CET__
1870
1871
.byte 243,15,30,251
1872
#endif
1873
1874
movb (%esi),%cl
1875
.L012ejend:
1876
xorl %ecx,%eax
1877
xorl %edx,%ebx
1878
bswap %eax
1879
bswap %ebx
1880
movl %eax,8(%esp)
1881
movl %ebx,12(%esp)
1882
call .L_CAST_encrypt_begin
1883
movl 8(%esp),%eax
1884
movl 12(%esp),%ebx
1885
bswap %eax
1886
bswap %ebx
1887
movl %eax,(%edi)
1888
movl %ebx,4(%edi)
1889
jmp .L005finish
1890
.L002decrypt:
1891
andl $4294967288,%ebp
1892
movl 16(%esp),%eax
1893
movl 20(%esp),%ebx
1894
jz .L016decrypt_finish
1895
.L017decrypt_loop:
1896
movl (%esi),%eax
1897
movl 4(%esi),%ebx
1898
bswap %eax
1899
bswap %ebx
1900
movl %eax,8(%esp)
1901
movl %ebx,12(%esp)
1902
call .L_CAST_decrypt_begin
1903
movl 8(%esp),%eax
1904
movl 12(%esp),%ebx
1905
bswap %eax
1906
bswap %ebx
1907
movl 16(%esp),%ecx
1908
movl 20(%esp),%edx
1909
xorl %eax,%ecx
1910
xorl %ebx,%edx
1911
movl (%esi),%eax
1912
movl 4(%esi),%ebx
1913
movl %ecx,(%edi)
1914
movl %edx,4(%edi)
1915
movl %eax,16(%esp)
1916
movl %ebx,20(%esp)
1917
addl $8,%esi
1918
addl $8,%edi
1919
subl $8,%ebp
1920
jnz .L017decrypt_loop
1921
.L016decrypt_finish:
1922
movl 52(%esp),%ebp
1923
andl $7,%ebp
1924
jz .L005finish
1925
movl (%esi),%eax
1926
movl 4(%esi),%ebx
1927
bswap %eax
1928
bswap %ebx
1929
movl %eax,8(%esp)
1930
movl %ebx,12(%esp)
1931
call .L_CAST_decrypt_begin
1932
movl 8(%esp),%eax
1933
movl 12(%esp),%ebx
1934
bswap %eax
1935
bswap %ebx
1936
movl 16(%esp),%ecx
1937
movl 20(%esp),%edx
1938
xorl %eax,%ecx
1939
xorl %ebx,%edx
1940
movl (%esi),%eax
1941
movl 4(%esi),%ebx
1942
.L018dj7:
1943
rorl $16,%edx
1944
movb %dl,6(%edi)
1945
shrl $16,%edx
1946
.L019dj6:
1947
movb %dh,5(%edi)
1948
.L020dj5:
1949
movb %dl,4(%edi)
1950
.L021dj4:
1951
movl %ecx,(%edi)
1952
jmp .L022djend
1953
.L023dj3:
1954
rorl $16,%ecx
1955
movb %cl,2(%edi)
1956
shll $16,%ecx
1957
.L024dj2:
1958
movb %ch,1(%esi)
1959
.L025dj1:
1960
movb %cl,(%esi)
1961
.L022djend:
1962
jmp .L005finish
1963
.L005finish:
1964
movl 60(%esp),%ecx
1965
addl $24,%esp
1966
movl %eax,(%ecx)
1967
movl %ebx,4(%ecx)
1968
popl %edi
1969
popl %esi
1970
popl %ebx
1971
popl %ebp
1972
ret
1973
.align 64
1974
.L007cbc_enc_jmp_table:
1975
.long 0
1976
.long .L015ej1-.L006PIC_point
1977
.long .L014ej2-.L006PIC_point
1978
.long .L013ej3-.L006PIC_point
1979
.long .L011ej4-.L006PIC_point
1980
.long .L010ej5-.L006PIC_point
1981
.long .L009ej6-.L006PIC_point
1982
.long .L008ej7-.L006PIC_point
1983
.align 64
1984
.size CAST_cbc_encrypt,.-.L_CAST_cbc_encrypt_begin
1985
1986
.section ".note.gnu.property", "a"
1987
.p2align 2
1988
.long 1f - 0f
1989
.long 4f - 1f
1990
.long 5
1991
0:
1992
.asciz "GNU"
1993
1:
1994
.p2align 2
1995
.long 0xc0000002
1996
.long 3f - 2f
1997
2:
1998
.long 3
1999
3:
2000
.p2align 2
2001
4:
2002
#endif
2003
2004