Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/sys/crypto/des/arch/i386/des_enc.S
39566 views
1
/* $NetBSD: des_enc.S,v 1.1 2001/09/09 11:01:02 tls Exp $ */
2
3
/* Copyright (C) 1995-1997 Eric Young ([email protected])
4
* All rights reserved.
5
*
6
* This package is an SSL implementation written
7
* by Eric Young ([email protected]).
8
* The implementation was written so as to conform with Netscapes SSL.
9
*
10
* This library is free for commercial and non-commercial use as long as
11
* the following conditions are aheared to. The following conditions
12
* apply to all code found in this distribution, be it the RC4, RSA,
13
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
14
* included with this distribution is covered by the same copyright terms
15
* except that the holder is Tim Hudson ([email protected]).
16
*
17
* Copyright remains Eric Young's, and as such any Copyright notices in
18
* the code are not to be removed.
19
* If this package is used in a product, Eric Young should be given attribution
20
* as the author of the parts of the library used.
21
* This can be in the form of a textual message at program startup or
22
* in documentation (online or textual) provided with the package.
23
*
24
* Redistribution and use in source and binary forms, with or without
25
* modification, are permitted provided that the following conditions
26
* are met:
27
* 1. Redistributions of source code must retain the copyright
28
* notice, this list of conditions and the following disclaimer.
29
* 2. Redistributions in binary form must reproduce the above copyright
30
* notice, this list of conditions and the following disclaimer in the
31
* documentation and/or other materials provided with the distribution.
32
* 3. All advertising materials mentioning features or use of this software
33
* must display the following acknowledgement:
34
* "This product includes cryptographic software written by
35
* Eric Young ([email protected])"
36
* The word 'cryptographic' can be left out if the rouines from the library
37
* being used are not cryptographic related :-).
38
* 4. If you include any Windows specific code (or a derivative thereof) from
39
* the apps directory (application code) you must include an acknowledgement:
40
* "This product includes software written by Tim Hudson ([email protected])"
41
*
42
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
43
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
44
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
45
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
46
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
47
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
48
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
49
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
50
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
51
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
52
* SUCH DAMAGE.
53
*
54
* The licence and distribution terms for any publically available version or
55
* derivative of this code cannot be changed. i.e. this code cannot simply be
56
* copied and put under another distribution licence
57
* [including the GNU Public Licence.]
58
*/
59
60
/*
61
* Modified from the output of `perl des686.pl elf' by
62
* Thor Lancelot Simon <[email protected]>
63
*/
64
65
#include <i386/include/asm.h>
66
#define _C_LABEL CNAME
67
68
ENTRY(des_encrypt1)
69
pushl %esi
70
pushl %edi
71
72
/* Load the 2 words */
73
movl 12(%esp), %esi
74
xorl %ecx, %ecx
75
pushl %ebx
76
pushl %ebp
77
movl (%esi), %eax
78
movl 28(%esp), %ebx
79
movl 4(%esi), %edi
80
81
/* IP */
82
roll $4, %eax
83
movl %eax, %esi
84
xorl %edi, %eax
85
andl $0xf0f0f0f0, %eax
86
xorl %eax, %esi
87
xorl %eax, %edi
88
89
roll $20, %edi
90
movl %edi, %eax
91
xorl %esi, %edi
92
andl $0xfff0000f, %edi
93
xorl %edi, %eax
94
xorl %edi, %esi
95
96
roll $14, %eax
97
movl %eax, %edi
98
xorl %esi, %eax
99
andl $0x33333333, %eax
100
xorl %eax, %edi
101
xorl %eax, %esi
102
103
roll $22, %esi
104
movl %esi, %eax
105
xorl %edi, %esi
106
andl $0x03fc03fc, %esi
107
xorl %esi, %eax
108
xorl %esi, %edi
109
110
roll $9, %eax
111
movl %eax, %esi
112
xorl %edi, %eax
113
andl $0xaaaaaaaa, %eax
114
xorl %eax, %esi
115
xorl %eax, %edi
116
117
.byte 209
118
.byte 199 # roll $1 %edi
119
movl 24(%esp), %ebp
120
cmpl $0, %ebx
121
je .L000start_decrypt
122
123
/* Round 0 */
124
movl (%ebp), %eax
125
xorl %ebx, %ebx
126
movl 4(%ebp), %edx
127
xorl %esi, %eax
128
xorl %esi, %edx
129
andl $0xfcfcfcfc, %eax
130
andl $0xcfcfcfcf, %edx
131
movb %al, %bl
132
movb %ah, %cl
133
rorl $4, %edx
134
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
135
movb %dl, %bl
136
xorl %ebp, %edi
137
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
138
xorl %ebp, %edi
139
movb %dh, %cl
140
shrl $16, %eax
141
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
142
xorl %ebp, %edi
143
movb %ah, %bl
144
shrl $16, %edx
145
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
146
xorl %ebp, %edi
147
movl 24(%esp), %ebp
148
movb %dh, %cl
149
andl $0xff, %eax
150
andl $0xff, %edx
151
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
152
xorl %ebx, %edi
153
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
154
xorl %ebx, %edi
155
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
156
xorl %ebx, %edi
157
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
158
xorl %ebx, %edi
159
160
/* Round 1 */
161
movl 8(%ebp), %eax
162
xorl %ebx, %ebx
163
movl 12(%ebp), %edx
164
xorl %edi, %eax
165
xorl %edi, %edx
166
andl $0xfcfcfcfc, %eax
167
andl $0xcfcfcfcf, %edx
168
movb %al, %bl
169
movb %ah, %cl
170
rorl $4, %edx
171
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
172
movb %dl, %bl
173
xorl %ebp, %esi
174
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
175
xorl %ebp, %esi
176
movb %dh, %cl
177
shrl $16, %eax
178
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
179
xorl %ebp, %esi
180
movb %ah, %bl
181
shrl $16, %edx
182
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
183
xorl %ebp, %esi
184
movl 24(%esp), %ebp
185
movb %dh, %cl
186
andl $0xff, %eax
187
andl $0xff, %edx
188
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
189
xorl %ebx, %esi
190
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
191
xorl %ebx, %esi
192
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
193
xorl %ebx, %esi
194
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
195
xorl %ebx, %esi
196
197
/* Round 2 */
198
movl 16(%ebp), %eax
199
xorl %ebx, %ebx
200
movl 20(%ebp), %edx
201
xorl %esi, %eax
202
xorl %esi, %edx
203
andl $0xfcfcfcfc, %eax
204
andl $0xcfcfcfcf, %edx
205
movb %al, %bl
206
movb %ah, %cl
207
rorl $4, %edx
208
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
209
movb %dl, %bl
210
xorl %ebp, %edi
211
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
212
xorl %ebp, %edi
213
movb %dh, %cl
214
shrl $16, %eax
215
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
216
xorl %ebp, %edi
217
movb %ah, %bl
218
shrl $16, %edx
219
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
220
xorl %ebp, %edi
221
movl 24(%esp), %ebp
222
movb %dh, %cl
223
andl $0xff, %eax
224
andl $0xff, %edx
225
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
226
xorl %ebx, %edi
227
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
228
xorl %ebx, %edi
229
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
230
xorl %ebx, %edi
231
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
232
xorl %ebx, %edi
233
234
/* Round 3 */
235
movl 24(%ebp), %eax
236
xorl %ebx, %ebx
237
movl 28(%ebp), %edx
238
xorl %edi, %eax
239
xorl %edi, %edx
240
andl $0xfcfcfcfc, %eax
241
andl $0xcfcfcfcf, %edx
242
movb %al, %bl
243
movb %ah, %cl
244
rorl $4, %edx
245
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
246
movb %dl, %bl
247
xorl %ebp, %esi
248
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
249
xorl %ebp, %esi
250
movb %dh, %cl
251
shrl $16, %eax
252
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
253
xorl %ebp, %esi
254
movb %ah, %bl
255
shrl $16, %edx
256
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
257
xorl %ebp, %esi
258
movl 24(%esp), %ebp
259
movb %dh, %cl
260
andl $0xff, %eax
261
andl $0xff, %edx
262
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
263
xorl %ebx, %esi
264
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
265
xorl %ebx, %esi
266
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
267
xorl %ebx, %esi
268
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
269
xorl %ebx, %esi
270
271
/* Round 4 */
272
movl 32(%ebp), %eax
273
xorl %ebx, %ebx
274
movl 36(%ebp), %edx
275
xorl %esi, %eax
276
xorl %esi, %edx
277
andl $0xfcfcfcfc, %eax
278
andl $0xcfcfcfcf, %edx
279
movb %al, %bl
280
movb %ah, %cl
281
rorl $4, %edx
282
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
283
movb %dl, %bl
284
xorl %ebp, %edi
285
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
286
xorl %ebp, %edi
287
movb %dh, %cl
288
shrl $16, %eax
289
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
290
xorl %ebp, %edi
291
movb %ah, %bl
292
shrl $16, %edx
293
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
294
xorl %ebp, %edi
295
movl 24(%esp), %ebp
296
movb %dh, %cl
297
andl $0xff, %eax
298
andl $0xff, %edx
299
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
300
xorl %ebx, %edi
301
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
302
xorl %ebx, %edi
303
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
304
xorl %ebx, %edi
305
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
306
xorl %ebx, %edi
307
308
/* Round 5 */
309
movl 40(%ebp), %eax
310
xorl %ebx, %ebx
311
movl 44(%ebp), %edx
312
xorl %edi, %eax
313
xorl %edi, %edx
314
andl $0xfcfcfcfc, %eax
315
andl $0xcfcfcfcf, %edx
316
movb %al, %bl
317
movb %ah, %cl
318
rorl $4, %edx
319
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
320
movb %dl, %bl
321
xorl %ebp, %esi
322
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
323
xorl %ebp, %esi
324
movb %dh, %cl
325
shrl $16, %eax
326
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
327
xorl %ebp, %esi
328
movb %ah, %bl
329
shrl $16, %edx
330
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
331
xorl %ebp, %esi
332
movl 24(%esp), %ebp
333
movb %dh, %cl
334
andl $0xff, %eax
335
andl $0xff, %edx
336
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
337
xorl %ebx, %esi
338
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
339
xorl %ebx, %esi
340
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
341
xorl %ebx, %esi
342
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
343
xorl %ebx, %esi
344
345
/* Round 6 */
346
movl 48(%ebp), %eax
347
xorl %ebx, %ebx
348
movl 52(%ebp), %edx
349
xorl %esi, %eax
350
xorl %esi, %edx
351
andl $0xfcfcfcfc, %eax
352
andl $0xcfcfcfcf, %edx
353
movb %al, %bl
354
movb %ah, %cl
355
rorl $4, %edx
356
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
357
movb %dl, %bl
358
xorl %ebp, %edi
359
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
360
xorl %ebp, %edi
361
movb %dh, %cl
362
shrl $16, %eax
363
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
364
xorl %ebp, %edi
365
movb %ah, %bl
366
shrl $16, %edx
367
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
368
xorl %ebp, %edi
369
movl 24(%esp), %ebp
370
movb %dh, %cl
371
andl $0xff, %eax
372
andl $0xff, %edx
373
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
374
xorl %ebx, %edi
375
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
376
xorl %ebx, %edi
377
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
378
xorl %ebx, %edi
379
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
380
xorl %ebx, %edi
381
382
/* Round 7 */
383
movl 56(%ebp), %eax
384
xorl %ebx, %ebx
385
movl 60(%ebp), %edx
386
xorl %edi, %eax
387
xorl %edi, %edx
388
andl $0xfcfcfcfc, %eax
389
andl $0xcfcfcfcf, %edx
390
movb %al, %bl
391
movb %ah, %cl
392
rorl $4, %edx
393
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
394
movb %dl, %bl
395
xorl %ebp, %esi
396
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
397
xorl %ebp, %esi
398
movb %dh, %cl
399
shrl $16, %eax
400
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
401
xorl %ebp, %esi
402
movb %ah, %bl
403
shrl $16, %edx
404
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
405
xorl %ebp, %esi
406
movl 24(%esp), %ebp
407
movb %dh, %cl
408
andl $0xff, %eax
409
andl $0xff, %edx
410
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
411
xorl %ebx, %esi
412
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
413
xorl %ebx, %esi
414
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
415
xorl %ebx, %esi
416
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
417
xorl %ebx, %esi
418
419
/* Round 8 */
420
movl 64(%ebp), %eax
421
xorl %ebx, %ebx
422
movl 68(%ebp), %edx
423
xorl %esi, %eax
424
xorl %esi, %edx
425
andl $0xfcfcfcfc, %eax
426
andl $0xcfcfcfcf, %edx
427
movb %al, %bl
428
movb %ah, %cl
429
rorl $4, %edx
430
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
431
movb %dl, %bl
432
xorl %ebp, %edi
433
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
434
xorl %ebp, %edi
435
movb %dh, %cl
436
shrl $16, %eax
437
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
438
xorl %ebp, %edi
439
movb %ah, %bl
440
shrl $16, %edx
441
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
442
xorl %ebp, %edi
443
movl 24(%esp), %ebp
444
movb %dh, %cl
445
andl $0xff, %eax
446
andl $0xff, %edx
447
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
448
xorl %ebx, %edi
449
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
450
xorl %ebx, %edi
451
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
452
xorl %ebx, %edi
453
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
454
xorl %ebx, %edi
455
456
/* Round 9 */
457
movl 72(%ebp), %eax
458
xorl %ebx, %ebx
459
movl 76(%ebp), %edx
460
xorl %edi, %eax
461
xorl %edi, %edx
462
andl $0xfcfcfcfc, %eax
463
andl $0xcfcfcfcf, %edx
464
movb %al, %bl
465
movb %ah, %cl
466
rorl $4, %edx
467
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
468
movb %dl, %bl
469
xorl %ebp, %esi
470
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
471
xorl %ebp, %esi
472
movb %dh, %cl
473
shrl $16, %eax
474
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
475
xorl %ebp, %esi
476
movb %ah, %bl
477
shrl $16, %edx
478
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
479
xorl %ebp, %esi
480
movl 24(%esp), %ebp
481
movb %dh, %cl
482
andl $0xff, %eax
483
andl $0xff, %edx
484
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
485
xorl %ebx, %esi
486
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
487
xorl %ebx, %esi
488
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
489
xorl %ebx, %esi
490
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
491
xorl %ebx, %esi
492
493
/* Round 10 */
494
movl 80(%ebp), %eax
495
xorl %ebx, %ebx
496
movl 84(%ebp), %edx
497
xorl %esi, %eax
498
xorl %esi, %edx
499
andl $0xfcfcfcfc, %eax
500
andl $0xcfcfcfcf, %edx
501
movb %al, %bl
502
movb %ah, %cl
503
rorl $4, %edx
504
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
505
movb %dl, %bl
506
xorl %ebp, %edi
507
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
508
xorl %ebp, %edi
509
movb %dh, %cl
510
shrl $16, %eax
511
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
512
xorl %ebp, %edi
513
movb %ah, %bl
514
shrl $16, %edx
515
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
516
xorl %ebp, %edi
517
movl 24(%esp), %ebp
518
movb %dh, %cl
519
andl $0xff, %eax
520
andl $0xff, %edx
521
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
522
xorl %ebx, %edi
523
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
524
xorl %ebx, %edi
525
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
526
xorl %ebx, %edi
527
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
528
xorl %ebx, %edi
529
530
/* Round 11 */
531
movl 88(%ebp), %eax
532
xorl %ebx, %ebx
533
movl 92(%ebp), %edx
534
xorl %edi, %eax
535
xorl %edi, %edx
536
andl $0xfcfcfcfc, %eax
537
andl $0xcfcfcfcf, %edx
538
movb %al, %bl
539
movb %ah, %cl
540
rorl $4, %edx
541
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
542
movb %dl, %bl
543
xorl %ebp, %esi
544
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
545
xorl %ebp, %esi
546
movb %dh, %cl
547
shrl $16, %eax
548
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
549
xorl %ebp, %esi
550
movb %ah, %bl
551
shrl $16, %edx
552
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
553
xorl %ebp, %esi
554
movl 24(%esp), %ebp
555
movb %dh, %cl
556
andl $0xff, %eax
557
andl $0xff, %edx
558
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
559
xorl %ebx, %esi
560
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
561
xorl %ebx, %esi
562
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
563
xorl %ebx, %esi
564
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
565
xorl %ebx, %esi
566
567
/* Round 12 */
568
movl 96(%ebp), %eax
569
xorl %ebx, %ebx
570
movl 100(%ebp), %edx
571
xorl %esi, %eax
572
xorl %esi, %edx
573
andl $0xfcfcfcfc, %eax
574
andl $0xcfcfcfcf, %edx
575
movb %al, %bl
576
movb %ah, %cl
577
rorl $4, %edx
578
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
579
movb %dl, %bl
580
xorl %ebp, %edi
581
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
582
xorl %ebp, %edi
583
movb %dh, %cl
584
shrl $16, %eax
585
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
586
xorl %ebp, %edi
587
movb %ah, %bl
588
shrl $16, %edx
589
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
590
xorl %ebp, %edi
591
movl 24(%esp), %ebp
592
movb %dh, %cl
593
andl $0xff, %eax
594
andl $0xff, %edx
595
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
596
xorl %ebx, %edi
597
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
598
xorl %ebx, %edi
599
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
600
xorl %ebx, %edi
601
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
602
xorl %ebx, %edi
603
604
/* Round 13 */
605
movl 104(%ebp), %eax
606
xorl %ebx, %ebx
607
movl 108(%ebp), %edx
608
xorl %edi, %eax
609
xorl %edi, %edx
610
andl $0xfcfcfcfc, %eax
611
andl $0xcfcfcfcf, %edx
612
movb %al, %bl
613
movb %ah, %cl
614
rorl $4, %edx
615
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
616
movb %dl, %bl
617
xorl %ebp, %esi
618
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
619
xorl %ebp, %esi
620
movb %dh, %cl
621
shrl $16, %eax
622
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
623
xorl %ebp, %esi
624
movb %ah, %bl
625
shrl $16, %edx
626
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
627
xorl %ebp, %esi
628
movl 24(%esp), %ebp
629
movb %dh, %cl
630
andl $0xff, %eax
631
andl $0xff, %edx
632
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
633
xorl %ebx, %esi
634
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
635
xorl %ebx, %esi
636
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
637
xorl %ebx, %esi
638
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
639
xorl %ebx, %esi
640
641
/* Round 14 */
642
movl 112(%ebp), %eax
643
xorl %ebx, %ebx
644
movl 116(%ebp), %edx
645
xorl %esi, %eax
646
xorl %esi, %edx
647
andl $0xfcfcfcfc, %eax
648
andl $0xcfcfcfcf, %edx
649
movb %al, %bl
650
movb %ah, %cl
651
rorl $4, %edx
652
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
653
movb %dl, %bl
654
xorl %ebp, %edi
655
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
656
xorl %ebp, %edi
657
movb %dh, %cl
658
shrl $16, %eax
659
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
660
xorl %ebp, %edi
661
movb %ah, %bl
662
shrl $16, %edx
663
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
664
xorl %ebp, %edi
665
movl 24(%esp), %ebp
666
movb %dh, %cl
667
andl $0xff, %eax
668
andl $0xff, %edx
669
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
670
xorl %ebx, %edi
671
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
672
xorl %ebx, %edi
673
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
674
xorl %ebx, %edi
675
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
676
xorl %ebx, %edi
677
678
/* Round 15 */
679
movl 120(%ebp), %eax
680
xorl %ebx, %ebx
681
movl 124(%ebp), %edx
682
xorl %edi, %eax
683
xorl %edi, %edx
684
andl $0xfcfcfcfc, %eax
685
andl $0xcfcfcfcf, %edx
686
movb %al, %bl
687
movb %ah, %cl
688
rorl $4, %edx
689
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
690
movb %dl, %bl
691
xorl %ebp, %esi
692
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
693
xorl %ebp, %esi
694
movb %dh, %cl
695
shrl $16, %eax
696
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
697
xorl %ebp, %esi
698
movb %ah, %bl
699
shrl $16, %edx
700
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
701
xorl %ebp, %esi
702
movl 24(%esp), %ebp
703
movb %dh, %cl
704
andl $0xff, %eax
705
andl $0xff, %edx
706
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
707
xorl %ebx, %esi
708
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
709
xorl %ebx, %esi
710
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
711
xorl %ebx, %esi
712
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
713
xorl %ebx, %esi
714
jmp .L001end
715
.L000start_decrypt:
716
717
/* Round 15 */
718
movl 120(%ebp), %eax
719
xorl %ebx, %ebx
720
movl 124(%ebp), %edx
721
xorl %esi, %eax
722
xorl %esi, %edx
723
andl $0xfcfcfcfc, %eax
724
andl $0xcfcfcfcf, %edx
725
movb %al, %bl
726
movb %ah, %cl
727
rorl $4, %edx
728
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
729
movb %dl, %bl
730
xorl %ebp, %edi
731
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
732
xorl %ebp, %edi
733
movb %dh, %cl
734
shrl $16, %eax
735
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
736
xorl %ebp, %edi
737
movb %ah, %bl
738
shrl $16, %edx
739
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
740
xorl %ebp, %edi
741
movl 24(%esp), %ebp
742
movb %dh, %cl
743
andl $0xff, %eax
744
andl $0xff, %edx
745
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
746
xorl %ebx, %edi
747
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
748
xorl %ebx, %edi
749
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
750
xorl %ebx, %edi
751
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
752
xorl %ebx, %edi
753
754
/* Round 14 */
755
movl 112(%ebp), %eax
756
xorl %ebx, %ebx
757
movl 116(%ebp), %edx
758
xorl %edi, %eax
759
xorl %edi, %edx
760
andl $0xfcfcfcfc, %eax
761
andl $0xcfcfcfcf, %edx
762
movb %al, %bl
763
movb %ah, %cl
764
rorl $4, %edx
765
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
766
movb %dl, %bl
767
xorl %ebp, %esi
768
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
769
xorl %ebp, %esi
770
movb %dh, %cl
771
shrl $16, %eax
772
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
773
xorl %ebp, %esi
774
movb %ah, %bl
775
shrl $16, %edx
776
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
777
xorl %ebp, %esi
778
movl 24(%esp), %ebp
779
movb %dh, %cl
780
andl $0xff, %eax
781
andl $0xff, %edx
782
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
783
xorl %ebx, %esi
784
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
785
xorl %ebx, %esi
786
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
787
xorl %ebx, %esi
788
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
789
xorl %ebx, %esi
790
791
/* Round 13 */
792
movl 104(%ebp), %eax
793
xorl %ebx, %ebx
794
movl 108(%ebp), %edx
795
xorl %esi, %eax
796
xorl %esi, %edx
797
andl $0xfcfcfcfc, %eax
798
andl $0xcfcfcfcf, %edx
799
movb %al, %bl
800
movb %ah, %cl
801
rorl $4, %edx
802
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
803
movb %dl, %bl
804
xorl %ebp, %edi
805
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
806
xorl %ebp, %edi
807
movb %dh, %cl
808
shrl $16, %eax
809
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
810
xorl %ebp, %edi
811
movb %ah, %bl
812
shrl $16, %edx
813
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
814
xorl %ebp, %edi
815
movl 24(%esp), %ebp
816
movb %dh, %cl
817
andl $0xff, %eax
818
andl $0xff, %edx
819
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
820
xorl %ebx, %edi
821
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
822
xorl %ebx, %edi
823
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
824
xorl %ebx, %edi
825
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
826
xorl %ebx, %edi
827
828
/* Round 12 */
829
movl 96(%ebp), %eax
830
xorl %ebx, %ebx
831
movl 100(%ebp), %edx
832
xorl %edi, %eax
833
xorl %edi, %edx
834
andl $0xfcfcfcfc, %eax
835
andl $0xcfcfcfcf, %edx
836
movb %al, %bl
837
movb %ah, %cl
838
rorl $4, %edx
839
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
840
movb %dl, %bl
841
xorl %ebp, %esi
842
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
843
xorl %ebp, %esi
844
movb %dh, %cl
845
shrl $16, %eax
846
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
847
xorl %ebp, %esi
848
movb %ah, %bl
849
shrl $16, %edx
850
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
851
xorl %ebp, %esi
852
movl 24(%esp), %ebp
853
movb %dh, %cl
854
andl $0xff, %eax
855
andl $0xff, %edx
856
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
857
xorl %ebx, %esi
858
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
859
xorl %ebx, %esi
860
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
861
xorl %ebx, %esi
862
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
863
xorl %ebx, %esi
864
865
/* Round 11 */
866
movl 88(%ebp), %eax
867
xorl %ebx, %ebx
868
movl 92(%ebp), %edx
869
xorl %esi, %eax
870
xorl %esi, %edx
871
andl $0xfcfcfcfc, %eax
872
andl $0xcfcfcfcf, %edx
873
movb %al, %bl
874
movb %ah, %cl
875
rorl $4, %edx
876
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
877
movb %dl, %bl
878
xorl %ebp, %edi
879
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
880
xorl %ebp, %edi
881
movb %dh, %cl
882
shrl $16, %eax
883
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
884
xorl %ebp, %edi
885
movb %ah, %bl
886
shrl $16, %edx
887
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
888
xorl %ebp, %edi
889
movl 24(%esp), %ebp
890
movb %dh, %cl
891
andl $0xff, %eax
892
andl $0xff, %edx
893
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
894
xorl %ebx, %edi
895
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
896
xorl %ebx, %edi
897
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
898
xorl %ebx, %edi
899
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
900
xorl %ebx, %edi
901
902
/* Round 10 */
903
movl 80(%ebp), %eax
904
xorl %ebx, %ebx
905
movl 84(%ebp), %edx
906
xorl %edi, %eax
907
xorl %edi, %edx
908
andl $0xfcfcfcfc, %eax
909
andl $0xcfcfcfcf, %edx
910
movb %al, %bl
911
movb %ah, %cl
912
rorl $4, %edx
913
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
914
movb %dl, %bl
915
xorl %ebp, %esi
916
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
917
xorl %ebp, %esi
918
movb %dh, %cl
919
shrl $16, %eax
920
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
921
xorl %ebp, %esi
922
movb %ah, %bl
923
shrl $16, %edx
924
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
925
xorl %ebp, %esi
926
movl 24(%esp), %ebp
927
movb %dh, %cl
928
andl $0xff, %eax
929
andl $0xff, %edx
930
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
931
xorl %ebx, %esi
932
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
933
xorl %ebx, %esi
934
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
935
xorl %ebx, %esi
936
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
937
xorl %ebx, %esi
938
939
/* Round 9 */
940
movl 72(%ebp), %eax
941
xorl %ebx, %ebx
942
movl 76(%ebp), %edx
943
xorl %esi, %eax
944
xorl %esi, %edx
945
andl $0xfcfcfcfc, %eax
946
andl $0xcfcfcfcf, %edx
947
movb %al, %bl
948
movb %ah, %cl
949
rorl $4, %edx
950
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
951
movb %dl, %bl
952
xorl %ebp, %edi
953
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
954
xorl %ebp, %edi
955
movb %dh, %cl
956
shrl $16, %eax
957
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
958
xorl %ebp, %edi
959
movb %ah, %bl
960
shrl $16, %edx
961
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
962
xorl %ebp, %edi
963
movl 24(%esp), %ebp
964
movb %dh, %cl
965
andl $0xff, %eax
966
andl $0xff, %edx
967
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
968
xorl %ebx, %edi
969
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
970
xorl %ebx, %edi
971
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
972
xorl %ebx, %edi
973
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
974
xorl %ebx, %edi
975
976
/* Round 8 */
977
movl 64(%ebp), %eax
978
xorl %ebx, %ebx
979
movl 68(%ebp), %edx
980
xorl %edi, %eax
981
xorl %edi, %edx
982
andl $0xfcfcfcfc, %eax
983
andl $0xcfcfcfcf, %edx
984
movb %al, %bl
985
movb %ah, %cl
986
rorl $4, %edx
987
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
988
movb %dl, %bl
989
xorl %ebp, %esi
990
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
991
xorl %ebp, %esi
992
movb %dh, %cl
993
shrl $16, %eax
994
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
995
xorl %ebp, %esi
996
movb %ah, %bl
997
shrl $16, %edx
998
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
999
xorl %ebp, %esi
1000
movl 24(%esp), %ebp
1001
movb %dh, %cl
1002
andl $0xff, %eax
1003
andl $0xff, %edx
1004
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1005
xorl %ebx, %esi
1006
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1007
xorl %ebx, %esi
1008
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1009
xorl %ebx, %esi
1010
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1011
xorl %ebx, %esi
1012
1013
/* Round 7 */
1014
movl 56(%ebp), %eax
1015
xorl %ebx, %ebx
1016
movl 60(%ebp), %edx
1017
xorl %esi, %eax
1018
xorl %esi, %edx
1019
andl $0xfcfcfcfc, %eax
1020
andl $0xcfcfcfcf, %edx
1021
movb %al, %bl
1022
movb %ah, %cl
1023
rorl $4, %edx
1024
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
1025
movb %dl, %bl
1026
xorl %ebp, %edi
1027
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1028
xorl %ebp, %edi
1029
movb %dh, %cl
1030
shrl $16, %eax
1031
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1032
xorl %ebp, %edi
1033
movb %ah, %bl
1034
shrl $16, %edx
1035
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1036
xorl %ebp, %edi
1037
movl 24(%esp), %ebp
1038
movb %dh, %cl
1039
andl $0xff, %eax
1040
andl $0xff, %edx
1041
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1042
xorl %ebx, %edi
1043
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1044
xorl %ebx, %edi
1045
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1046
xorl %ebx, %edi
1047
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1048
xorl %ebx, %edi
1049
1050
/* Round 6 */
1051
movl 48(%ebp), %eax
1052
xorl %ebx, %ebx
1053
movl 52(%ebp), %edx
1054
xorl %edi, %eax
1055
xorl %edi, %edx
1056
andl $0xfcfcfcfc, %eax
1057
andl $0xcfcfcfcf, %edx
1058
movb %al, %bl
1059
movb %ah, %cl
1060
rorl $4, %edx
1061
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
1062
movb %dl, %bl
1063
xorl %ebp, %esi
1064
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1065
xorl %ebp, %esi
1066
movb %dh, %cl
1067
shrl $16, %eax
1068
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1069
xorl %ebp, %esi
1070
movb %ah, %bl
1071
shrl $16, %edx
1072
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1073
xorl %ebp, %esi
1074
movl 24(%esp), %ebp
1075
movb %dh, %cl
1076
andl $0xff, %eax
1077
andl $0xff, %edx
1078
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1079
xorl %ebx, %esi
1080
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1081
xorl %ebx, %esi
1082
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1083
xorl %ebx, %esi
1084
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1085
xorl %ebx, %esi
1086
1087
/* Round 5 */
1088
movl 40(%ebp), %eax
1089
xorl %ebx, %ebx
1090
movl 44(%ebp), %edx
1091
xorl %esi, %eax
1092
xorl %esi, %edx
1093
andl $0xfcfcfcfc, %eax
1094
andl $0xcfcfcfcf, %edx
1095
movb %al, %bl
1096
movb %ah, %cl
1097
rorl $4, %edx
1098
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
1099
movb %dl, %bl
1100
xorl %ebp, %edi
1101
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1102
xorl %ebp, %edi
1103
movb %dh, %cl
1104
shrl $16, %eax
1105
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1106
xorl %ebp, %edi
1107
movb %ah, %bl
1108
shrl $16, %edx
1109
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1110
xorl %ebp, %edi
1111
movl 24(%esp), %ebp
1112
movb %dh, %cl
1113
andl $0xff, %eax
1114
andl $0xff, %edx
1115
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1116
xorl %ebx, %edi
1117
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1118
xorl %ebx, %edi
1119
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1120
xorl %ebx, %edi
1121
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1122
xorl %ebx, %edi
1123
1124
/* Round 4 */
1125
movl 32(%ebp), %eax
1126
xorl %ebx, %ebx
1127
movl 36(%ebp), %edx
1128
xorl %edi, %eax
1129
xorl %edi, %edx
1130
andl $0xfcfcfcfc, %eax
1131
andl $0xcfcfcfcf, %edx
1132
movb %al, %bl
1133
movb %ah, %cl
1134
rorl $4, %edx
1135
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
1136
movb %dl, %bl
1137
xorl %ebp, %esi
1138
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1139
xorl %ebp, %esi
1140
movb %dh, %cl
1141
shrl $16, %eax
1142
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1143
xorl %ebp, %esi
1144
movb %ah, %bl
1145
shrl $16, %edx
1146
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1147
xorl %ebp, %esi
1148
movl 24(%esp), %ebp
1149
movb %dh, %cl
1150
andl $0xff, %eax
1151
andl $0xff, %edx
1152
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1153
xorl %ebx, %esi
1154
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1155
xorl %ebx, %esi
1156
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1157
xorl %ebx, %esi
1158
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1159
xorl %ebx, %esi
1160
1161
/* Round 3 */
1162
movl 24(%ebp), %eax
1163
xorl %ebx, %ebx
1164
movl 28(%ebp), %edx
1165
xorl %esi, %eax
1166
xorl %esi, %edx
1167
andl $0xfcfcfcfc, %eax
1168
andl $0xcfcfcfcf, %edx
1169
movb %al, %bl
1170
movb %ah, %cl
1171
rorl $4, %edx
1172
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
1173
movb %dl, %bl
1174
xorl %ebp, %edi
1175
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1176
xorl %ebp, %edi
1177
movb %dh, %cl
1178
shrl $16, %eax
1179
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1180
xorl %ebp, %edi
1181
movb %ah, %bl
1182
shrl $16, %edx
1183
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1184
xorl %ebp, %edi
1185
movl 24(%esp), %ebp
1186
movb %dh, %cl
1187
andl $0xff, %eax
1188
andl $0xff, %edx
1189
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1190
xorl %ebx, %edi
1191
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1192
xorl %ebx, %edi
1193
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1194
xorl %ebx, %edi
1195
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1196
xorl %ebx, %edi
1197
1198
/* Round 2 */
1199
movl 16(%ebp), %eax
1200
xorl %ebx, %ebx
1201
movl 20(%ebp), %edx
1202
xorl %edi, %eax
1203
xorl %edi, %edx
1204
andl $0xfcfcfcfc, %eax
1205
andl $0xcfcfcfcf, %edx
1206
movb %al, %bl
1207
movb %ah, %cl
1208
rorl $4, %edx
1209
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
1210
movb %dl, %bl
1211
xorl %ebp, %esi
1212
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1213
xorl %ebp, %esi
1214
movb %dh, %cl
1215
shrl $16, %eax
1216
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1217
xorl %ebp, %esi
1218
movb %ah, %bl
1219
shrl $16, %edx
1220
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1221
xorl %ebp, %esi
1222
movl 24(%esp), %ebp
1223
movb %dh, %cl
1224
andl $0xff, %eax
1225
andl $0xff, %edx
1226
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1227
xorl %ebx, %esi
1228
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1229
xorl %ebx, %esi
1230
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1231
xorl %ebx, %esi
1232
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1233
xorl %ebx, %esi
1234
1235
/* Round 1 */
1236
movl 8(%ebp), %eax
1237
xorl %ebx, %ebx
1238
movl 12(%ebp), %edx
1239
xorl %esi, %eax
1240
xorl %esi, %edx
1241
andl $0xfcfcfcfc, %eax
1242
andl $0xcfcfcfcf, %edx
1243
movb %al, %bl
1244
movb %ah, %cl
1245
rorl $4, %edx
1246
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
1247
movb %dl, %bl
1248
xorl %ebp, %edi
1249
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1250
xorl %ebp, %edi
1251
movb %dh, %cl
1252
shrl $16, %eax
1253
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1254
xorl %ebp, %edi
1255
movb %ah, %bl
1256
shrl $16, %edx
1257
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1258
xorl %ebp, %edi
1259
movl 24(%esp), %ebp
1260
movb %dh, %cl
1261
andl $0xff, %eax
1262
andl $0xff, %edx
1263
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1264
xorl %ebx, %edi
1265
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1266
xorl %ebx, %edi
1267
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1268
xorl %ebx, %edi
1269
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1270
xorl %ebx, %edi
1271
1272
/* Round 0 */
1273
movl (%ebp), %eax
1274
xorl %ebx, %ebx
1275
movl 4(%ebp), %edx
1276
xorl %edi, %eax
1277
xorl %edi, %edx
1278
andl $0xfcfcfcfc, %eax
1279
andl $0xcfcfcfcf, %edx
1280
movb %al, %bl
1281
movb %ah, %cl
1282
rorl $4, %edx
1283
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
1284
movb %dl, %bl
1285
xorl %ebp, %esi
1286
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1287
xorl %ebp, %esi
1288
movb %dh, %cl
1289
shrl $16, %eax
1290
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1291
xorl %ebp, %esi
1292
movb %ah, %bl
1293
shrl $16, %edx
1294
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1295
xorl %ebp, %esi
1296
movl 24(%esp), %ebp
1297
movb %dh, %cl
1298
andl $0xff, %eax
1299
andl $0xff, %edx
1300
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1301
xorl %ebx, %esi
1302
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1303
xorl %ebx, %esi
1304
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1305
xorl %ebx, %esi
1306
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1307
xorl %ebx, %esi
1308
.L001end:
1309
1310
/* FP */
1311
movl 20(%esp), %edx
1312
.byte 209
1313
.byte 206 # rorl $1 %esi
1314
movl %edi, %eax
1315
xorl %esi, %edi
1316
andl $0xaaaaaaaa, %edi
1317
xorl %edi, %eax
1318
xorl %edi, %esi
1319
1320
roll $23, %eax
1321
movl %eax, %edi
1322
xorl %esi, %eax
1323
andl $0x03fc03fc, %eax
1324
xorl %eax, %edi
1325
xorl %eax, %esi
1326
1327
roll $10, %edi
1328
movl %edi, %eax
1329
xorl %esi, %edi
1330
andl $0x33333333, %edi
1331
xorl %edi, %eax
1332
xorl %edi, %esi
1333
1334
roll $18, %esi
1335
movl %esi, %edi
1336
xorl %eax, %esi
1337
andl $0xfff0000f, %esi
1338
xorl %esi, %edi
1339
xorl %esi, %eax
1340
1341
roll $12, %edi
1342
movl %edi, %esi
1343
xorl %eax, %edi
1344
andl $0xf0f0f0f0, %edi
1345
xorl %edi, %esi
1346
xorl %edi, %eax
1347
1348
rorl $4, %eax
1349
movl %eax, (%edx)
1350
movl %esi, 4(%edx)
1351
popl %ebp
1352
popl %ebx
1353
popl %edi
1354
popl %esi
1355
ret
1356
END(des_encrypt1)
1357
1358
ENTRY(des_encrypt2)
1359
pushl %esi
1360
pushl %edi
1361
1362
/* Load the 2 words */
1363
movl 12(%esp), %eax
1364
xorl %ecx, %ecx
1365
pushl %ebx
1366
pushl %ebp
1367
movl (%eax), %esi
1368
movl 28(%esp), %ebx
1369
roll $3, %esi
1370
movl 4(%eax), %edi
1371
roll $3, %edi
1372
movl 24(%esp), %ebp
1373
cmpl $0, %ebx
1374
je .L002start_decrypt
1375
1376
/* Round 0 */
1377
movl (%ebp), %eax
1378
xorl %ebx, %ebx
1379
movl 4(%ebp), %edx
1380
xorl %esi, %eax
1381
xorl %esi, %edx
1382
andl $0xfcfcfcfc, %eax
1383
andl $0xcfcfcfcf, %edx
1384
movb %al, %bl
1385
movb %ah, %cl
1386
rorl $4, %edx
1387
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
1388
movb %dl, %bl
1389
xorl %ebp, %edi
1390
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1391
xorl %ebp, %edi
1392
movb %dh, %cl
1393
shrl $16, %eax
1394
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1395
xorl %ebp, %edi
1396
movb %ah, %bl
1397
shrl $16, %edx
1398
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1399
xorl %ebp, %edi
1400
movl 24(%esp), %ebp
1401
movb %dh, %cl
1402
andl $0xff, %eax
1403
andl $0xff, %edx
1404
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1405
xorl %ebx, %edi
1406
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1407
xorl %ebx, %edi
1408
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1409
xorl %ebx, %edi
1410
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1411
xorl %ebx, %edi
1412
1413
/* Round 1 */
1414
movl 8(%ebp), %eax
1415
xorl %ebx, %ebx
1416
movl 12(%ebp), %edx
1417
xorl %edi, %eax
1418
xorl %edi, %edx
1419
andl $0xfcfcfcfc, %eax
1420
andl $0xcfcfcfcf, %edx
1421
movb %al, %bl
1422
movb %ah, %cl
1423
rorl $4, %edx
1424
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
1425
movb %dl, %bl
1426
xorl %ebp, %esi
1427
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1428
xorl %ebp, %esi
1429
movb %dh, %cl
1430
shrl $16, %eax
1431
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1432
xorl %ebp, %esi
1433
movb %ah, %bl
1434
shrl $16, %edx
1435
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1436
xorl %ebp, %esi
1437
movl 24(%esp), %ebp
1438
movb %dh, %cl
1439
andl $0xff, %eax
1440
andl $0xff, %edx
1441
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1442
xorl %ebx, %esi
1443
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1444
xorl %ebx, %esi
1445
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1446
xorl %ebx, %esi
1447
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1448
xorl %ebx, %esi
1449
1450
/* Round 2 */
1451
movl 16(%ebp), %eax
1452
xorl %ebx, %ebx
1453
movl 20(%ebp), %edx
1454
xorl %esi, %eax
1455
xorl %esi, %edx
1456
andl $0xfcfcfcfc, %eax
1457
andl $0xcfcfcfcf, %edx
1458
movb %al, %bl
1459
movb %ah, %cl
1460
rorl $4, %edx
1461
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
1462
movb %dl, %bl
1463
xorl %ebp, %edi
1464
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1465
xorl %ebp, %edi
1466
movb %dh, %cl
1467
shrl $16, %eax
1468
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1469
xorl %ebp, %edi
1470
movb %ah, %bl
1471
shrl $16, %edx
1472
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1473
xorl %ebp, %edi
1474
movl 24(%esp), %ebp
1475
movb %dh, %cl
1476
andl $0xff, %eax
1477
andl $0xff, %edx
1478
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1479
xorl %ebx, %edi
1480
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1481
xorl %ebx, %edi
1482
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1483
xorl %ebx, %edi
1484
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1485
xorl %ebx, %edi
1486
1487
/* Round 3 */
1488
movl 24(%ebp), %eax
1489
xorl %ebx, %ebx
1490
movl 28(%ebp), %edx
1491
xorl %edi, %eax
1492
xorl %edi, %edx
1493
andl $0xfcfcfcfc, %eax
1494
andl $0xcfcfcfcf, %edx
1495
movb %al, %bl
1496
movb %ah, %cl
1497
rorl $4, %edx
1498
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
1499
movb %dl, %bl
1500
xorl %ebp, %esi
1501
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1502
xorl %ebp, %esi
1503
movb %dh, %cl
1504
shrl $16, %eax
1505
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1506
xorl %ebp, %esi
1507
movb %ah, %bl
1508
shrl $16, %edx
1509
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1510
xorl %ebp, %esi
1511
movl 24(%esp), %ebp
1512
movb %dh, %cl
1513
andl $0xff, %eax
1514
andl $0xff, %edx
1515
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1516
xorl %ebx, %esi
1517
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1518
xorl %ebx, %esi
1519
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1520
xorl %ebx, %esi
1521
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1522
xorl %ebx, %esi
1523
1524
/* Round 4 */
1525
movl 32(%ebp), %eax
1526
xorl %ebx, %ebx
1527
movl 36(%ebp), %edx
1528
xorl %esi, %eax
1529
xorl %esi, %edx
1530
andl $0xfcfcfcfc, %eax
1531
andl $0xcfcfcfcf, %edx
1532
movb %al, %bl
1533
movb %ah, %cl
1534
rorl $4, %edx
1535
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
1536
movb %dl, %bl
1537
xorl %ebp, %edi
1538
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1539
xorl %ebp, %edi
1540
movb %dh, %cl
1541
shrl $16, %eax
1542
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1543
xorl %ebp, %edi
1544
movb %ah, %bl
1545
shrl $16, %edx
1546
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1547
xorl %ebp, %edi
1548
movl 24(%esp), %ebp
1549
movb %dh, %cl
1550
andl $0xff, %eax
1551
andl $0xff, %edx
1552
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1553
xorl %ebx, %edi
1554
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1555
xorl %ebx, %edi
1556
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1557
xorl %ebx, %edi
1558
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1559
xorl %ebx, %edi
1560
1561
/* Round 5 */
1562
movl 40(%ebp), %eax
1563
xorl %ebx, %ebx
1564
movl 44(%ebp), %edx
1565
xorl %edi, %eax
1566
xorl %edi, %edx
1567
andl $0xfcfcfcfc, %eax
1568
andl $0xcfcfcfcf, %edx
1569
movb %al, %bl
1570
movb %ah, %cl
1571
rorl $4, %edx
1572
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
1573
movb %dl, %bl
1574
xorl %ebp, %esi
1575
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1576
xorl %ebp, %esi
1577
movb %dh, %cl
1578
shrl $16, %eax
1579
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1580
xorl %ebp, %esi
1581
movb %ah, %bl
1582
shrl $16, %edx
1583
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1584
xorl %ebp, %esi
1585
movl 24(%esp), %ebp
1586
movb %dh, %cl
1587
andl $0xff, %eax
1588
andl $0xff, %edx
1589
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1590
xorl %ebx, %esi
1591
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1592
xorl %ebx, %esi
1593
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1594
xorl %ebx, %esi
1595
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1596
xorl %ebx, %esi
1597
1598
/* Round 6 */
1599
movl 48(%ebp), %eax
1600
xorl %ebx, %ebx
1601
movl 52(%ebp), %edx
1602
xorl %esi, %eax
1603
xorl %esi, %edx
1604
andl $0xfcfcfcfc, %eax
1605
andl $0xcfcfcfcf, %edx
1606
movb %al, %bl
1607
movb %ah, %cl
1608
rorl $4, %edx
1609
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
1610
movb %dl, %bl
1611
xorl %ebp, %edi
1612
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1613
xorl %ebp, %edi
1614
movb %dh, %cl
1615
shrl $16, %eax
1616
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1617
xorl %ebp, %edi
1618
movb %ah, %bl
1619
shrl $16, %edx
1620
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1621
xorl %ebp, %edi
1622
movl 24(%esp), %ebp
1623
movb %dh, %cl
1624
andl $0xff, %eax
1625
andl $0xff, %edx
1626
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1627
xorl %ebx, %edi
1628
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1629
xorl %ebx, %edi
1630
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1631
xorl %ebx, %edi
1632
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1633
xorl %ebx, %edi
1634
1635
/* Round 7 */
1636
movl 56(%ebp), %eax
1637
xorl %ebx, %ebx
1638
movl 60(%ebp), %edx
1639
xorl %edi, %eax
1640
xorl %edi, %edx
1641
andl $0xfcfcfcfc, %eax
1642
andl $0xcfcfcfcf, %edx
1643
movb %al, %bl
1644
movb %ah, %cl
1645
rorl $4, %edx
1646
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
1647
movb %dl, %bl
1648
xorl %ebp, %esi
1649
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1650
xorl %ebp, %esi
1651
movb %dh, %cl
1652
shrl $16, %eax
1653
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1654
xorl %ebp, %esi
1655
movb %ah, %bl
1656
shrl $16, %edx
1657
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1658
xorl %ebp, %esi
1659
movl 24(%esp), %ebp
1660
movb %dh, %cl
1661
andl $0xff, %eax
1662
andl $0xff, %edx
1663
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1664
xorl %ebx, %esi
1665
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1666
xorl %ebx, %esi
1667
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1668
xorl %ebx, %esi
1669
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1670
xorl %ebx, %esi
1671
1672
/* Round 8 */
1673
movl 64(%ebp), %eax
1674
xorl %ebx, %ebx
1675
movl 68(%ebp), %edx
1676
xorl %esi, %eax
1677
xorl %esi, %edx
1678
andl $0xfcfcfcfc, %eax
1679
andl $0xcfcfcfcf, %edx
1680
movb %al, %bl
1681
movb %ah, %cl
1682
rorl $4, %edx
1683
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
1684
movb %dl, %bl
1685
xorl %ebp, %edi
1686
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1687
xorl %ebp, %edi
1688
movb %dh, %cl
1689
shrl $16, %eax
1690
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1691
xorl %ebp, %edi
1692
movb %ah, %bl
1693
shrl $16, %edx
1694
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1695
xorl %ebp, %edi
1696
movl 24(%esp), %ebp
1697
movb %dh, %cl
1698
andl $0xff, %eax
1699
andl $0xff, %edx
1700
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1701
xorl %ebx, %edi
1702
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1703
xorl %ebx, %edi
1704
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1705
xorl %ebx, %edi
1706
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1707
xorl %ebx, %edi
1708
1709
/* Round 9 */
1710
movl 72(%ebp), %eax
1711
xorl %ebx, %ebx
1712
movl 76(%ebp), %edx
1713
xorl %edi, %eax
1714
xorl %edi, %edx
1715
andl $0xfcfcfcfc, %eax
1716
andl $0xcfcfcfcf, %edx
1717
movb %al, %bl
1718
movb %ah, %cl
1719
rorl $4, %edx
1720
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
1721
movb %dl, %bl
1722
xorl %ebp, %esi
1723
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1724
xorl %ebp, %esi
1725
movb %dh, %cl
1726
shrl $16, %eax
1727
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1728
xorl %ebp, %esi
1729
movb %ah, %bl
1730
shrl $16, %edx
1731
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1732
xorl %ebp, %esi
1733
movl 24(%esp), %ebp
1734
movb %dh, %cl
1735
andl $0xff, %eax
1736
andl $0xff, %edx
1737
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1738
xorl %ebx, %esi
1739
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1740
xorl %ebx, %esi
1741
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1742
xorl %ebx, %esi
1743
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1744
xorl %ebx, %esi
1745
1746
/* Round 10 */
1747
movl 80(%ebp), %eax
1748
xorl %ebx, %ebx
1749
movl 84(%ebp), %edx
1750
xorl %esi, %eax
1751
xorl %esi, %edx
1752
andl $0xfcfcfcfc, %eax
1753
andl $0xcfcfcfcf, %edx
1754
movb %al, %bl
1755
movb %ah, %cl
1756
rorl $4, %edx
1757
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
1758
movb %dl, %bl
1759
xorl %ebp, %edi
1760
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1761
xorl %ebp, %edi
1762
movb %dh, %cl
1763
shrl $16, %eax
1764
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1765
xorl %ebp, %edi
1766
movb %ah, %bl
1767
shrl $16, %edx
1768
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1769
xorl %ebp, %edi
1770
movl 24(%esp), %ebp
1771
movb %dh, %cl
1772
andl $0xff, %eax
1773
andl $0xff, %edx
1774
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1775
xorl %ebx, %edi
1776
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1777
xorl %ebx, %edi
1778
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1779
xorl %ebx, %edi
1780
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1781
xorl %ebx, %edi
1782
1783
/* Round 11 */
1784
movl 88(%ebp), %eax
1785
xorl %ebx, %ebx
1786
movl 92(%ebp), %edx
1787
xorl %edi, %eax
1788
xorl %edi, %edx
1789
andl $0xfcfcfcfc, %eax
1790
andl $0xcfcfcfcf, %edx
1791
movb %al, %bl
1792
movb %ah, %cl
1793
rorl $4, %edx
1794
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
1795
movb %dl, %bl
1796
xorl %ebp, %esi
1797
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1798
xorl %ebp, %esi
1799
movb %dh, %cl
1800
shrl $16, %eax
1801
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1802
xorl %ebp, %esi
1803
movb %ah, %bl
1804
shrl $16, %edx
1805
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1806
xorl %ebp, %esi
1807
movl 24(%esp), %ebp
1808
movb %dh, %cl
1809
andl $0xff, %eax
1810
andl $0xff, %edx
1811
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1812
xorl %ebx, %esi
1813
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1814
xorl %ebx, %esi
1815
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1816
xorl %ebx, %esi
1817
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1818
xorl %ebx, %esi
1819
1820
/* Round 12 */
1821
movl 96(%ebp), %eax
1822
xorl %ebx, %ebx
1823
movl 100(%ebp), %edx
1824
xorl %esi, %eax
1825
xorl %esi, %edx
1826
andl $0xfcfcfcfc, %eax
1827
andl $0xcfcfcfcf, %edx
1828
movb %al, %bl
1829
movb %ah, %cl
1830
rorl $4, %edx
1831
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
1832
movb %dl, %bl
1833
xorl %ebp, %edi
1834
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1835
xorl %ebp, %edi
1836
movb %dh, %cl
1837
shrl $16, %eax
1838
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1839
xorl %ebp, %edi
1840
movb %ah, %bl
1841
shrl $16, %edx
1842
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1843
xorl %ebp, %edi
1844
movl 24(%esp), %ebp
1845
movb %dh, %cl
1846
andl $0xff, %eax
1847
andl $0xff, %edx
1848
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1849
xorl %ebx, %edi
1850
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1851
xorl %ebx, %edi
1852
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1853
xorl %ebx, %edi
1854
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1855
xorl %ebx, %edi
1856
1857
/* Round 13 */
1858
movl 104(%ebp), %eax
1859
xorl %ebx, %ebx
1860
movl 108(%ebp), %edx
1861
xorl %edi, %eax
1862
xorl %edi, %edx
1863
andl $0xfcfcfcfc, %eax
1864
andl $0xcfcfcfcf, %edx
1865
movb %al, %bl
1866
movb %ah, %cl
1867
rorl $4, %edx
1868
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
1869
movb %dl, %bl
1870
xorl %ebp, %esi
1871
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1872
xorl %ebp, %esi
1873
movb %dh, %cl
1874
shrl $16, %eax
1875
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1876
xorl %ebp, %esi
1877
movb %ah, %bl
1878
shrl $16, %edx
1879
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1880
xorl %ebp, %esi
1881
movl 24(%esp), %ebp
1882
movb %dh, %cl
1883
andl $0xff, %eax
1884
andl $0xff, %edx
1885
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1886
xorl %ebx, %esi
1887
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1888
xorl %ebx, %esi
1889
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1890
xorl %ebx, %esi
1891
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1892
xorl %ebx, %esi
1893
1894
/* Round 14 */
1895
movl 112(%ebp), %eax
1896
xorl %ebx, %ebx
1897
movl 116(%ebp), %edx
1898
xorl %esi, %eax
1899
xorl %esi, %edx
1900
andl $0xfcfcfcfc, %eax
1901
andl $0xcfcfcfcf, %edx
1902
movb %al, %bl
1903
movb %ah, %cl
1904
rorl $4, %edx
1905
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
1906
movb %dl, %bl
1907
xorl %ebp, %edi
1908
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1909
xorl %ebp, %edi
1910
movb %dh, %cl
1911
shrl $16, %eax
1912
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1913
xorl %ebp, %edi
1914
movb %ah, %bl
1915
shrl $16, %edx
1916
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1917
xorl %ebp, %edi
1918
movl 24(%esp), %ebp
1919
movb %dh, %cl
1920
andl $0xff, %eax
1921
andl $0xff, %edx
1922
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1923
xorl %ebx, %edi
1924
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1925
xorl %ebx, %edi
1926
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1927
xorl %ebx, %edi
1928
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1929
xorl %ebx, %edi
1930
1931
/* Round 15 */
1932
movl 120(%ebp), %eax
1933
xorl %ebx, %ebx
1934
movl 124(%ebp), %edx
1935
xorl %edi, %eax
1936
xorl %edi, %edx
1937
andl $0xfcfcfcfc, %eax
1938
andl $0xcfcfcfcf, %edx
1939
movb %al, %bl
1940
movb %ah, %cl
1941
rorl $4, %edx
1942
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
1943
movb %dl, %bl
1944
xorl %ebp, %esi
1945
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1946
xorl %ebp, %esi
1947
movb %dh, %cl
1948
shrl $16, %eax
1949
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1950
xorl %ebp, %esi
1951
movb %ah, %bl
1952
shrl $16, %edx
1953
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1954
xorl %ebp, %esi
1955
movl 24(%esp), %ebp
1956
movb %dh, %cl
1957
andl $0xff, %eax
1958
andl $0xff, %edx
1959
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1960
xorl %ebx, %esi
1961
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
1962
xorl %ebx, %esi
1963
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
1964
xorl %ebx, %esi
1965
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
1966
xorl %ebx, %esi
1967
jmp .L003end
1968
.L002start_decrypt:
1969
1970
/* Round 15 */
1971
movl 120(%ebp), %eax
1972
xorl %ebx, %ebx
1973
movl 124(%ebp), %edx
1974
xorl %esi, %eax
1975
xorl %esi, %edx
1976
andl $0xfcfcfcfc, %eax
1977
andl $0xcfcfcfcf, %edx
1978
movb %al, %bl
1979
movb %ah, %cl
1980
rorl $4, %edx
1981
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
1982
movb %dl, %bl
1983
xorl %ebp, %edi
1984
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
1985
xorl %ebp, %edi
1986
movb %dh, %cl
1987
shrl $16, %eax
1988
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
1989
xorl %ebp, %edi
1990
movb %ah, %bl
1991
shrl $16, %edx
1992
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
1993
xorl %ebp, %edi
1994
movl 24(%esp), %ebp
1995
movb %dh, %cl
1996
andl $0xff, %eax
1997
andl $0xff, %edx
1998
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
1999
xorl %ebx, %edi
2000
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
2001
xorl %ebx, %edi
2002
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
2003
xorl %ebx, %edi
2004
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
2005
xorl %ebx, %edi
2006
2007
/* Round 14 */
2008
movl 112(%ebp), %eax
2009
xorl %ebx, %ebx
2010
movl 116(%ebp), %edx
2011
xorl %edi, %eax
2012
xorl %edi, %edx
2013
andl $0xfcfcfcfc, %eax
2014
andl $0xcfcfcfcf, %edx
2015
movb %al, %bl
2016
movb %ah, %cl
2017
rorl $4, %edx
2018
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
2019
movb %dl, %bl
2020
xorl %ebp, %esi
2021
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
2022
xorl %ebp, %esi
2023
movb %dh, %cl
2024
shrl $16, %eax
2025
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
2026
xorl %ebp, %esi
2027
movb %ah, %bl
2028
shrl $16, %edx
2029
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
2030
xorl %ebp, %esi
2031
movl 24(%esp), %ebp
2032
movb %dh, %cl
2033
andl $0xff, %eax
2034
andl $0xff, %edx
2035
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
2036
xorl %ebx, %esi
2037
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
2038
xorl %ebx, %esi
2039
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
2040
xorl %ebx, %esi
2041
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
2042
xorl %ebx, %esi
2043
2044
/* Round 13 */
2045
movl 104(%ebp), %eax
2046
xorl %ebx, %ebx
2047
movl 108(%ebp), %edx
2048
xorl %esi, %eax
2049
xorl %esi, %edx
2050
andl $0xfcfcfcfc, %eax
2051
andl $0xcfcfcfcf, %edx
2052
movb %al, %bl
2053
movb %ah, %cl
2054
rorl $4, %edx
2055
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
2056
movb %dl, %bl
2057
xorl %ebp, %edi
2058
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
2059
xorl %ebp, %edi
2060
movb %dh, %cl
2061
shrl $16, %eax
2062
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
2063
xorl %ebp, %edi
2064
movb %ah, %bl
2065
shrl $16, %edx
2066
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
2067
xorl %ebp, %edi
2068
movl 24(%esp), %ebp
2069
movb %dh, %cl
2070
andl $0xff, %eax
2071
andl $0xff, %edx
2072
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
2073
xorl %ebx, %edi
2074
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
2075
xorl %ebx, %edi
2076
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
2077
xorl %ebx, %edi
2078
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
2079
xorl %ebx, %edi
2080
2081
/* Round 12 */
2082
movl 96(%ebp), %eax
2083
xorl %ebx, %ebx
2084
movl 100(%ebp), %edx
2085
xorl %edi, %eax
2086
xorl %edi, %edx
2087
andl $0xfcfcfcfc, %eax
2088
andl $0xcfcfcfcf, %edx
2089
movb %al, %bl
2090
movb %ah, %cl
2091
rorl $4, %edx
2092
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
2093
movb %dl, %bl
2094
xorl %ebp, %esi
2095
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
2096
xorl %ebp, %esi
2097
movb %dh, %cl
2098
shrl $16, %eax
2099
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
2100
xorl %ebp, %esi
2101
movb %ah, %bl
2102
shrl $16, %edx
2103
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
2104
xorl %ebp, %esi
2105
movl 24(%esp), %ebp
2106
movb %dh, %cl
2107
andl $0xff, %eax
2108
andl $0xff, %edx
2109
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
2110
xorl %ebx, %esi
2111
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
2112
xorl %ebx, %esi
2113
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
2114
xorl %ebx, %esi
2115
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
2116
xorl %ebx, %esi
2117
2118
/* Round 11 */
2119
movl 88(%ebp), %eax
2120
xorl %ebx, %ebx
2121
movl 92(%ebp), %edx
2122
xorl %esi, %eax
2123
xorl %esi, %edx
2124
andl $0xfcfcfcfc, %eax
2125
andl $0xcfcfcfcf, %edx
2126
movb %al, %bl
2127
movb %ah, %cl
2128
rorl $4, %edx
2129
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
2130
movb %dl, %bl
2131
xorl %ebp, %edi
2132
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
2133
xorl %ebp, %edi
2134
movb %dh, %cl
2135
shrl $16, %eax
2136
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
2137
xorl %ebp, %edi
2138
movb %ah, %bl
2139
shrl $16, %edx
2140
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
2141
xorl %ebp, %edi
2142
movl 24(%esp), %ebp
2143
movb %dh, %cl
2144
andl $0xff, %eax
2145
andl $0xff, %edx
2146
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
2147
xorl %ebx, %edi
2148
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
2149
xorl %ebx, %edi
2150
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
2151
xorl %ebx, %edi
2152
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
2153
xorl %ebx, %edi
2154
2155
/* Round 10 */
2156
movl 80(%ebp), %eax
2157
xorl %ebx, %ebx
2158
movl 84(%ebp), %edx
2159
xorl %edi, %eax
2160
xorl %edi, %edx
2161
andl $0xfcfcfcfc, %eax
2162
andl $0xcfcfcfcf, %edx
2163
movb %al, %bl
2164
movb %ah, %cl
2165
rorl $4, %edx
2166
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
2167
movb %dl, %bl
2168
xorl %ebp, %esi
2169
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
2170
xorl %ebp, %esi
2171
movb %dh, %cl
2172
shrl $16, %eax
2173
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
2174
xorl %ebp, %esi
2175
movb %ah, %bl
2176
shrl $16, %edx
2177
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
2178
xorl %ebp, %esi
2179
movl 24(%esp), %ebp
2180
movb %dh, %cl
2181
andl $0xff, %eax
2182
andl $0xff, %edx
2183
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
2184
xorl %ebx, %esi
2185
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
2186
xorl %ebx, %esi
2187
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
2188
xorl %ebx, %esi
2189
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
2190
xorl %ebx, %esi
2191
2192
/* Round 9 */
2193
movl 72(%ebp), %eax
2194
xorl %ebx, %ebx
2195
movl 76(%ebp), %edx
2196
xorl %esi, %eax
2197
xorl %esi, %edx
2198
andl $0xfcfcfcfc, %eax
2199
andl $0xcfcfcfcf, %edx
2200
movb %al, %bl
2201
movb %ah, %cl
2202
rorl $4, %edx
2203
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
2204
movb %dl, %bl
2205
xorl %ebp, %edi
2206
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
2207
xorl %ebp, %edi
2208
movb %dh, %cl
2209
shrl $16, %eax
2210
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
2211
xorl %ebp, %edi
2212
movb %ah, %bl
2213
shrl $16, %edx
2214
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
2215
xorl %ebp, %edi
2216
movl 24(%esp), %ebp
2217
movb %dh, %cl
2218
andl $0xff, %eax
2219
andl $0xff, %edx
2220
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
2221
xorl %ebx, %edi
2222
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
2223
xorl %ebx, %edi
2224
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
2225
xorl %ebx, %edi
2226
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
2227
xorl %ebx, %edi
2228
2229
/* Round 8 */
2230
movl 64(%ebp), %eax
2231
xorl %ebx, %ebx
2232
movl 68(%ebp), %edx
2233
xorl %edi, %eax
2234
xorl %edi, %edx
2235
andl $0xfcfcfcfc, %eax
2236
andl $0xcfcfcfcf, %edx
2237
movb %al, %bl
2238
movb %ah, %cl
2239
rorl $4, %edx
2240
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
2241
movb %dl, %bl
2242
xorl %ebp, %esi
2243
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
2244
xorl %ebp, %esi
2245
movb %dh, %cl
2246
shrl $16, %eax
2247
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
2248
xorl %ebp, %esi
2249
movb %ah, %bl
2250
shrl $16, %edx
2251
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
2252
xorl %ebp, %esi
2253
movl 24(%esp), %ebp
2254
movb %dh, %cl
2255
andl $0xff, %eax
2256
andl $0xff, %edx
2257
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
2258
xorl %ebx, %esi
2259
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
2260
xorl %ebx, %esi
2261
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
2262
xorl %ebx, %esi
2263
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
2264
xorl %ebx, %esi
2265
2266
/* Round 7 */
2267
movl 56(%ebp), %eax
2268
xorl %ebx, %ebx
2269
movl 60(%ebp), %edx
2270
xorl %esi, %eax
2271
xorl %esi, %edx
2272
andl $0xfcfcfcfc, %eax
2273
andl $0xcfcfcfcf, %edx
2274
movb %al, %bl
2275
movb %ah, %cl
2276
rorl $4, %edx
2277
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
2278
movb %dl, %bl
2279
xorl %ebp, %edi
2280
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
2281
xorl %ebp, %edi
2282
movb %dh, %cl
2283
shrl $16, %eax
2284
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
2285
xorl %ebp, %edi
2286
movb %ah, %bl
2287
shrl $16, %edx
2288
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
2289
xorl %ebp, %edi
2290
movl 24(%esp), %ebp
2291
movb %dh, %cl
2292
andl $0xff, %eax
2293
andl $0xff, %edx
2294
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
2295
xorl %ebx, %edi
2296
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
2297
xorl %ebx, %edi
2298
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
2299
xorl %ebx, %edi
2300
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
2301
xorl %ebx, %edi
2302
2303
/* Round 6 */
2304
movl 48(%ebp), %eax
2305
xorl %ebx, %ebx
2306
movl 52(%ebp), %edx
2307
xorl %edi, %eax
2308
xorl %edi, %edx
2309
andl $0xfcfcfcfc, %eax
2310
andl $0xcfcfcfcf, %edx
2311
movb %al, %bl
2312
movb %ah, %cl
2313
rorl $4, %edx
2314
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
2315
movb %dl, %bl
2316
xorl %ebp, %esi
2317
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
2318
xorl %ebp, %esi
2319
movb %dh, %cl
2320
shrl $16, %eax
2321
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
2322
xorl %ebp, %esi
2323
movb %ah, %bl
2324
shrl $16, %edx
2325
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
2326
xorl %ebp, %esi
2327
movl 24(%esp), %ebp
2328
movb %dh, %cl
2329
andl $0xff, %eax
2330
andl $0xff, %edx
2331
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
2332
xorl %ebx, %esi
2333
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
2334
xorl %ebx, %esi
2335
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
2336
xorl %ebx, %esi
2337
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
2338
xorl %ebx, %esi
2339
2340
/* Round 5 */
2341
movl 40(%ebp), %eax
2342
xorl %ebx, %ebx
2343
movl 44(%ebp), %edx
2344
xorl %esi, %eax
2345
xorl %esi, %edx
2346
andl $0xfcfcfcfc, %eax
2347
andl $0xcfcfcfcf, %edx
2348
movb %al, %bl
2349
movb %ah, %cl
2350
rorl $4, %edx
2351
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
2352
movb %dl, %bl
2353
xorl %ebp, %edi
2354
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
2355
xorl %ebp, %edi
2356
movb %dh, %cl
2357
shrl $16, %eax
2358
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
2359
xorl %ebp, %edi
2360
movb %ah, %bl
2361
shrl $16, %edx
2362
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
2363
xorl %ebp, %edi
2364
movl 24(%esp), %ebp
2365
movb %dh, %cl
2366
andl $0xff, %eax
2367
andl $0xff, %edx
2368
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
2369
xorl %ebx, %edi
2370
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
2371
xorl %ebx, %edi
2372
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
2373
xorl %ebx, %edi
2374
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
2375
xorl %ebx, %edi
2376
2377
/* Round 4 */
2378
movl 32(%ebp), %eax
2379
xorl %ebx, %ebx
2380
movl 36(%ebp), %edx
2381
xorl %edi, %eax
2382
xorl %edi, %edx
2383
andl $0xfcfcfcfc, %eax
2384
andl $0xcfcfcfcf, %edx
2385
movb %al, %bl
2386
movb %ah, %cl
2387
rorl $4, %edx
2388
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
2389
movb %dl, %bl
2390
xorl %ebp, %esi
2391
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
2392
xorl %ebp, %esi
2393
movb %dh, %cl
2394
shrl $16, %eax
2395
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
2396
xorl %ebp, %esi
2397
movb %ah, %bl
2398
shrl $16, %edx
2399
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
2400
xorl %ebp, %esi
2401
movl 24(%esp), %ebp
2402
movb %dh, %cl
2403
andl $0xff, %eax
2404
andl $0xff, %edx
2405
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
2406
xorl %ebx, %esi
2407
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
2408
xorl %ebx, %esi
2409
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
2410
xorl %ebx, %esi
2411
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
2412
xorl %ebx, %esi
2413
2414
/* Round 3 */
2415
movl 24(%ebp), %eax
2416
xorl %ebx, %ebx
2417
movl 28(%ebp), %edx
2418
xorl %esi, %eax
2419
xorl %esi, %edx
2420
andl $0xfcfcfcfc, %eax
2421
andl $0xcfcfcfcf, %edx
2422
movb %al, %bl
2423
movb %ah, %cl
2424
rorl $4, %edx
2425
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
2426
movb %dl, %bl
2427
xorl %ebp, %edi
2428
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
2429
xorl %ebp, %edi
2430
movb %dh, %cl
2431
shrl $16, %eax
2432
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
2433
xorl %ebp, %edi
2434
movb %ah, %bl
2435
shrl $16, %edx
2436
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
2437
xorl %ebp, %edi
2438
movl 24(%esp), %ebp
2439
movb %dh, %cl
2440
andl $0xff, %eax
2441
andl $0xff, %edx
2442
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
2443
xorl %ebx, %edi
2444
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
2445
xorl %ebx, %edi
2446
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
2447
xorl %ebx, %edi
2448
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
2449
xorl %ebx, %edi
2450
2451
/* Round 2 */
2452
movl 16(%ebp), %eax
2453
xorl %ebx, %ebx
2454
movl 20(%ebp), %edx
2455
xorl %edi, %eax
2456
xorl %edi, %edx
2457
andl $0xfcfcfcfc, %eax
2458
andl $0xcfcfcfcf, %edx
2459
movb %al, %bl
2460
movb %ah, %cl
2461
rorl $4, %edx
2462
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
2463
movb %dl, %bl
2464
xorl %ebp, %esi
2465
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
2466
xorl %ebp, %esi
2467
movb %dh, %cl
2468
shrl $16, %eax
2469
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
2470
xorl %ebp, %esi
2471
movb %ah, %bl
2472
shrl $16, %edx
2473
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
2474
xorl %ebp, %esi
2475
movl 24(%esp), %ebp
2476
movb %dh, %cl
2477
andl $0xff, %eax
2478
andl $0xff, %edx
2479
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
2480
xorl %ebx, %esi
2481
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
2482
xorl %ebx, %esi
2483
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
2484
xorl %ebx, %esi
2485
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
2486
xorl %ebx, %esi
2487
2488
/* Round 1 */
2489
movl 8(%ebp), %eax
2490
xorl %ebx, %ebx
2491
movl 12(%ebp), %edx
2492
xorl %esi, %eax
2493
xorl %esi, %edx
2494
andl $0xfcfcfcfc, %eax
2495
andl $0xcfcfcfcf, %edx
2496
movb %al, %bl
2497
movb %ah, %cl
2498
rorl $4, %edx
2499
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
2500
movb %dl, %bl
2501
xorl %ebp, %edi
2502
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
2503
xorl %ebp, %edi
2504
movb %dh, %cl
2505
shrl $16, %eax
2506
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
2507
xorl %ebp, %edi
2508
movb %ah, %bl
2509
shrl $16, %edx
2510
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
2511
xorl %ebp, %edi
2512
movl 24(%esp), %ebp
2513
movb %dh, %cl
2514
andl $0xff, %eax
2515
andl $0xff, %edx
2516
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
2517
xorl %ebx, %edi
2518
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
2519
xorl %ebx, %edi
2520
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
2521
xorl %ebx, %edi
2522
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
2523
xorl %ebx, %edi
2524
2525
/* Round 0 */
2526
movl (%ebp), %eax
2527
xorl %ebx, %ebx
2528
movl 4(%ebp), %edx
2529
xorl %edi, %eax
2530
xorl %edi, %edx
2531
andl $0xfcfcfcfc, %eax
2532
andl $0xcfcfcfcf, %edx
2533
movb %al, %bl
2534
movb %ah, %cl
2535
rorl $4, %edx
2536
movl _C_LABEL(des_SPtrans)(%ebx),%ebp
2537
movb %dl, %bl
2538
xorl %ebp, %esi
2539
movl 0x200+_C_LABEL(des_SPtrans)(%ecx),%ebp
2540
xorl %ebp, %esi
2541
movb %dh, %cl
2542
shrl $16, %eax
2543
movl 0x100+_C_LABEL(des_SPtrans)(%ebx),%ebp
2544
xorl %ebp, %esi
2545
movb %ah, %bl
2546
shrl $16, %edx
2547
movl 0x300+_C_LABEL(des_SPtrans)(%ecx),%ebp
2548
xorl %ebp, %esi
2549
movl 24(%esp), %ebp
2550
movb %dh, %cl
2551
andl $0xff, %eax
2552
andl $0xff, %edx
2553
movl 0x600+_C_LABEL(des_SPtrans)(%ebx),%ebx
2554
xorl %ebx, %esi
2555
movl 0x700+_C_LABEL(des_SPtrans)(%ecx),%ebx
2556
xorl %ebx, %esi
2557
movl 0x400+_C_LABEL(des_SPtrans)(%eax),%ebx
2558
xorl %ebx, %esi
2559
movl 0x500+_C_LABEL(des_SPtrans)(%edx),%ebx
2560
xorl %ebx, %esi
2561
.L003end:
2562
2563
/* Fixup */
2564
rorl $3, %edi
2565
movl 20(%esp), %eax
2566
rorl $3, %esi
2567
movl %edi, (%eax)
2568
movl %esi, 4(%eax)
2569
popl %ebp
2570
popl %ebx
2571
popl %edi
2572
popl %esi
2573
ret
2574
END(des_encrypt2)
2575
2576
ENTRY(des_encrypt3)
2577
pushl %ebx
2578
movl 8(%esp), %ebx
2579
pushl %ebp
2580
pushl %esi
2581
pushl %edi
2582
2583
/* Load the data words */
2584
movl (%ebx), %edi
2585
movl 4(%ebx), %esi
2586
subl $12, %esp
2587
2588
/* IP */
2589
roll $4, %edi
2590
movl %edi, %edx
2591
xorl %esi, %edi
2592
andl $0xf0f0f0f0, %edi
2593
xorl %edi, %edx
2594
xorl %edi, %esi
2595
2596
roll $20, %esi
2597
movl %esi, %edi
2598
xorl %edx, %esi
2599
andl $0xfff0000f, %esi
2600
xorl %esi, %edi
2601
xorl %esi, %edx
2602
2603
roll $14, %edi
2604
movl %edi, %esi
2605
xorl %edx, %edi
2606
andl $0x33333333, %edi
2607
xorl %edi, %esi
2608
xorl %edi, %edx
2609
2610
roll $22, %edx
2611
movl %edx, %edi
2612
xorl %esi, %edx
2613
andl $0x03fc03fc, %edx
2614
xorl %edx, %edi
2615
xorl %edx, %esi
2616
2617
roll $9, %edi
2618
movl %edi, %edx
2619
xorl %esi, %edi
2620
andl $0xaaaaaaaa, %edi
2621
xorl %edi, %edx
2622
xorl %edi, %esi
2623
2624
rorl $3, %edx
2625
rorl $2, %esi
2626
movl %esi, 4(%ebx)
2627
movl 36(%esp), %eax
2628
movl %edx, (%ebx)
2629
movl 40(%esp), %edi
2630
movl 44(%esp), %esi
2631
movl $1, 8(%esp)
2632
movl %eax, 4(%esp)
2633
movl %ebx, (%esp)
2634
call _C_LABEL(des_encrypt2)
2635
movl $0, 8(%esp)
2636
movl %edi, 4(%esp)
2637
movl %ebx, (%esp)
2638
call _C_LABEL(des_encrypt2)
2639
movl $1, 8(%esp)
2640
movl %esi, 4(%esp)
2641
movl %ebx, (%esp)
2642
call _C_LABEL(des_encrypt2)
2643
addl $12, %esp
2644
movl (%ebx), %edi
2645
movl 4(%ebx), %esi
2646
2647
/* FP */
2648
roll $2, %esi
2649
roll $3, %edi
2650
movl %edi, %eax
2651
xorl %esi, %edi
2652
andl $0xaaaaaaaa, %edi
2653
xorl %edi, %eax
2654
xorl %edi, %esi
2655
2656
roll $23, %eax
2657
movl %eax, %edi
2658
xorl %esi, %eax
2659
andl $0x03fc03fc, %eax
2660
xorl %eax, %edi
2661
xorl %eax, %esi
2662
2663
roll $10, %edi
2664
movl %edi, %eax
2665
xorl %esi, %edi
2666
andl $0x33333333, %edi
2667
xorl %edi, %eax
2668
xorl %edi, %esi
2669
2670
roll $18, %esi
2671
movl %esi, %edi
2672
xorl %eax, %esi
2673
andl $0xfff0000f, %esi
2674
xorl %esi, %edi
2675
xorl %esi, %eax
2676
2677
roll $12, %edi
2678
movl %edi, %esi
2679
xorl %eax, %edi
2680
andl $0xf0f0f0f0, %edi
2681
xorl %edi, %esi
2682
xorl %edi, %eax
2683
2684
rorl $4, %eax
2685
movl %eax, (%ebx)
2686
movl %esi, 4(%ebx)
2687
popl %edi
2688
popl %esi
2689
popl %ebp
2690
popl %ebx
2691
ret
2692
END(des_encrypt3)
2693
2694
ENTRY(des_decrypt3)
2695
pushl %ebx
2696
movl 8(%esp), %ebx
2697
pushl %ebp
2698
pushl %esi
2699
pushl %edi
2700
2701
/* Load the data words */
2702
movl (%ebx), %edi
2703
movl 4(%ebx), %esi
2704
subl $12, %esp
2705
2706
/* IP */
2707
roll $4, %edi
2708
movl %edi, %edx
2709
xorl %esi, %edi
2710
andl $0xf0f0f0f0, %edi
2711
xorl %edi, %edx
2712
xorl %edi, %esi
2713
2714
roll $20, %esi
2715
movl %esi, %edi
2716
xorl %edx, %esi
2717
andl $0xfff0000f, %esi
2718
xorl %esi, %edi
2719
xorl %esi, %edx
2720
2721
roll $14, %edi
2722
movl %edi, %esi
2723
xorl %edx, %edi
2724
andl $0x33333333, %edi
2725
xorl %edi, %esi
2726
xorl %edi, %edx
2727
2728
roll $22, %edx
2729
movl %edx, %edi
2730
xorl %esi, %edx
2731
andl $0x03fc03fc, %edx
2732
xorl %edx, %edi
2733
xorl %edx, %esi
2734
2735
roll $9, %edi
2736
movl %edi, %edx
2737
xorl %esi, %edi
2738
andl $0xaaaaaaaa, %edi
2739
xorl %edi, %edx
2740
xorl %edi, %esi
2741
2742
rorl $3, %edx
2743
rorl $2, %esi
2744
movl %esi, 4(%ebx)
2745
movl 36(%esp), %esi
2746
movl %edx, (%ebx)
2747
movl 40(%esp), %edi
2748
movl 44(%esp), %eax
2749
movl $0, 8(%esp)
2750
movl %eax, 4(%esp)
2751
movl %ebx, (%esp)
2752
call _C_LABEL(des_encrypt2)
2753
movl $1, 8(%esp)
2754
movl %edi, 4(%esp)
2755
movl %ebx, (%esp)
2756
call _C_LABEL(des_encrypt2)
2757
movl $0, 8(%esp)
2758
movl %esi, 4(%esp)
2759
movl %ebx, (%esp)
2760
call _C_LABEL(des_encrypt2)
2761
addl $12, %esp
2762
movl (%ebx), %edi
2763
movl 4(%ebx), %esi
2764
2765
/* FP */
2766
roll $2, %esi
2767
roll $3, %edi
2768
movl %edi, %eax
2769
xorl %esi, %edi
2770
andl $0xaaaaaaaa, %edi
2771
xorl %edi, %eax
2772
xorl %edi, %esi
2773
2774
roll $23, %eax
2775
movl %eax, %edi
2776
xorl %esi, %eax
2777
andl $0x03fc03fc, %eax
2778
xorl %eax, %edi
2779
xorl %eax, %esi
2780
2781
roll $10, %edi
2782
movl %edi, %eax
2783
xorl %esi, %edi
2784
andl $0x33333333, %edi
2785
xorl %edi, %eax
2786
xorl %edi, %esi
2787
2788
roll $18, %esi
2789
movl %esi, %edi
2790
xorl %eax, %esi
2791
andl $0xfff0000f, %esi
2792
xorl %esi, %edi
2793
xorl %esi, %eax
2794
2795
roll $12, %edi
2796
movl %edi, %esi
2797
xorl %eax, %edi
2798
andl $0xf0f0f0f0, %edi
2799
xorl %edi, %esi
2800
xorl %edi, %eax
2801
2802
rorl $4, %eax
2803
movl %eax, (%ebx)
2804
movl %esi, 4(%ebx)
2805
popl %edi
2806
popl %esi
2807
popl %ebp
2808
popl %ebx
2809
ret
2810
END(des_decrypt3)
2811
2812