bf-686.s revision 95967
156293Sjkh	# $FreeBSD: head/secure/lib/libcrypto/i386/bf-686.s 95967 2002-05-03 00:14:39Z peter $
256293Sjkh	# Dont even think of reading this code
356293Sjkh	# It was automatically generated by bf-686.pl
456293Sjkh	# Which is a perl program used to generate the x86 assember for
556293Sjkh	# any of elf, a.out, BSDI, Win32, gaswin (for GNU as on Win32) or Solaris
656293Sjkh	# eric <eay@cryptsoft.com>
756293Sjkh
856293Sjkh	.file	"bf-686.s"
956293Sjkh	.version	"01.01"
1056293Sjkhgcc2_compiled.:
1156293Sjkh.text
1256293Sjkh	.align 16
1356293Sjkh.globl BF_encrypt
1456293Sjkh	.type	BF_encrypt,@function
1556293SjkhBF_encrypt:
1677837Sphk	pushl	%ebp
1756293Sjkh	pushl	%ebx
1856293Sjkh	pushl	%esi
1956293Sjkh	pushl	%edi
2056293Sjkh
2156293Sjkh
2256293Sjkh	# Load the 2 words
2356293Sjkh	movl	20(%esp),	%eax
2456293Sjkh	movl	(%eax),		%ecx
2556293Sjkh	movl	4(%eax),	%edx
2656293Sjkh
27119418Sobrien	# P pointer, s and enc flag
28119418Sobrien	movl	24(%esp),	%edi
29119418Sobrien	xorl	%eax,		%eax
3056293Sjkh	xorl	%ebx,		%ebx
3156293Sjkh	xorl	(%edi),		%ecx
3256293Sjkh
3356293Sjkh	# Round 0
3456293Sjkh	rorl	$16,		%ecx
3556293Sjkh	movl	4(%edi),	%esi
3656293Sjkh	movb	%ch,		%al
3756293Sjkh	movb	%cl,		%bl
38129879Sphk	rorl	$16,		%ecx
3956293Sjkh	xorl	%esi,		%edx
4056293Sjkh	movl	72(%edi,%eax,4),%esi
4156293Sjkh	movl	1096(%edi,%ebx,4),%ebp
4256293Sjkh	movb	%ch,		%al
4356293Sjkh	movb	%cl,		%bl
4456293Sjkh	addl	%ebp,		%esi
4556293Sjkh	movl	2120(%edi,%eax,4),%eax
4656293Sjkh	xorl	%eax,		%esi
4756293Sjkh	movl	3144(%edi,%ebx,4),%ebp
4856293Sjkh	addl	%ebp,		%esi
4956293Sjkh	xorl	%eax,		%eax
5056293Sjkh	xorl	%esi,		%edx
5156293Sjkh
5256293Sjkh	# Round 1
5356293Sjkh	rorl	$16,		%edx
5456293Sjkh	movl	8(%edi),	%esi
5556293Sjkh	movb	%dh,		%al
5656293Sjkh	movb	%dl,		%bl
5756293Sjkh	rorl	$16,		%edx
5856293Sjkh	xorl	%esi,		%ecx
5956293Sjkh	movl	72(%edi,%eax,4),%esi
6056293Sjkh	movl	1096(%edi,%ebx,4),%ebp
6156293Sjkh	movb	%dh,		%al
6256293Sjkh	movb	%dl,		%bl
6356293Sjkh	addl	%ebp,		%esi
6456293Sjkh	movl	2120(%edi,%eax,4),%eax
6556293Sjkh	xorl	%eax,		%esi
6656293Sjkh	movl	3144(%edi,%ebx,4),%ebp
6756293Sjkh	addl	%ebp,		%esi
6856293Sjkh	xorl	%eax,		%eax
6956293Sjkh	xorl	%esi,		%ecx
7056293Sjkh
7156293Sjkh	# Round 2
72126080Sphk	rorl	$16,		%ecx
73126080Sphk	movl	12(%edi),	%esi
74111815Sphk	movb	%ch,		%al
75111815Sphk	movb	%cl,		%bl
76111815Sphk	rorl	$16,		%ecx
77111815Sphk	xorl	%esi,		%edx
7856293Sjkh	movl	72(%edi,%eax,4),%esi
7956293Sjkh	movl	1096(%edi,%ebx,4),%ebp
8056293Sjkh	movb	%ch,		%al
8156293Sjkh	movb	%cl,		%bl
8256293Sjkh	addl	%ebp,		%esi
8356293Sjkh	movl	2120(%edi,%eax,4),%eax
8456293Sjkh	xorl	%eax,		%esi
8556293Sjkh	movl	3144(%edi,%ebx,4),%ebp
8656293Sjkh	addl	%ebp,		%esi
8756293Sjkh	xorl	%eax,		%eax
8856293Sjkh	xorl	%esi,		%edx
8956293Sjkh
9056293Sjkh	# Round 3
9156293Sjkh	rorl	$16,		%edx
9256293Sjkh	movl	16(%edi),	%esi
9356293Sjkh	movb	%dh,		%al
9456293Sjkh	movb	%dl,		%bl
9556293Sjkh	rorl	$16,		%edx
9656293Sjkh	xorl	%esi,		%ecx
9756293Sjkh	movl	72(%edi,%eax,4),%esi
9856293Sjkh	movl	1096(%edi,%ebx,4),%ebp
9956293Sjkh	movb	%dh,		%al
10056293Sjkh	movb	%dl,		%bl
10156293Sjkh	addl	%ebp,		%esi
10256293Sjkh	movl	2120(%edi,%eax,4),%eax
10356293Sjkh	xorl	%eax,		%esi
10456293Sjkh	movl	3144(%edi,%ebx,4),%ebp
10556293Sjkh	addl	%ebp,		%esi
10656293Sjkh	xorl	%eax,		%eax
10756293Sjkh	xorl	%esi,		%ecx
10856293Sjkh
10956293Sjkh	# Round 4
11056293Sjkh	rorl	$16,		%ecx
11156293Sjkh	movl	20(%edi),	%esi
11256293Sjkh	movb	%ch,		%al
11356293Sjkh	movb	%cl,		%bl
11456293Sjkh	rorl	$16,		%ecx
11556293Sjkh	xorl	%esi,		%edx
11656293Sjkh	movl	72(%edi,%eax,4),%esi
11756455Speter	movl	1096(%edi,%ebx,4),%ebp
11856455Speter	movb	%ch,		%al
11956455Speter	movb	%cl,		%bl
12056455Speter	addl	%ebp,		%esi
121127189Sguido	movl	2120(%edi,%eax,4),%eax
122127189Sguido	xorl	%eax,		%esi
123127189Sguido	movl	3144(%edi,%ebx,4),%ebp
124127189Sguido	addl	%ebp,		%esi
125127189Sguido	xorl	%eax,		%eax
12656455Speter	xorl	%esi,		%edx
12756455Speter
12856293Sjkh	# Round 5
12956293Sjkh	rorl	$16,		%edx
13056293Sjkh	movl	24(%edi),	%esi
13156293Sjkh	movb	%dh,		%al
13256293Sjkh	movb	%dl,		%bl
13356293Sjkh	rorl	$16,		%edx
13456293Sjkh	xorl	%esi,		%ecx
13556293Sjkh	movl	72(%edi,%eax,4),%esi
13656293Sjkh	movl	1096(%edi,%ebx,4),%ebp
13756293Sjkh	movb	%dh,		%al
13856293Sjkh	movb	%dl,		%bl
13956293Sjkh	addl	%ebp,		%esi
14056293Sjkh	movl	2120(%edi,%eax,4),%eax
14156293Sjkh	xorl	%eax,		%esi
14256293Sjkh	movl	3144(%edi,%ebx,4),%ebp
14356293Sjkh	addl	%ebp,		%esi
14456293Sjkh	xorl	%eax,		%eax
14556293Sjkh	xorl	%esi,		%ecx
14656293Sjkh
14756293Sjkh	# Round 6
14856293Sjkh	rorl	$16,		%ecx
149108321Srwatson	movl	28(%edi),	%esi
15056293Sjkh	movb	%ch,		%al
15156293Sjkh	movb	%cl,		%bl
15256293Sjkh	rorl	$16,		%ecx
15356293Sjkh	xorl	%esi,		%edx
15456293Sjkh	movl	72(%edi,%eax,4),%esi
155130585Sphk	movl	1096(%edi,%ebx,4),%ebp
15656293Sjkh	movb	%ch,		%al
15756293Sjkh	movb	%cl,		%bl
15856293Sjkh	addl	%ebp,		%esi
15956293Sjkh	movl	2120(%edi,%eax,4),%eax
16056293Sjkh	xorl	%eax,		%esi
16156293Sjkh	movl	3144(%edi,%ebx,4),%ebp
16256293Sjkh	addl	%ebp,		%esi
16356293Sjkh	xorl	%eax,		%eax
16456293Sjkh	xorl	%esi,		%edx
16556293Sjkh
16656293Sjkh	# Round 7
16756293Sjkh	rorl	$16,		%edx
16856293Sjkh	movl	32(%edi),	%esi
16956293Sjkh	movb	%dh,		%al
17056293Sjkh	movb	%dl,		%bl
17156293Sjkh	rorl	$16,		%edx
17256293Sjkh	xorl	%esi,		%ecx
17356293Sjkh	movl	72(%edi,%eax,4),%esi
17456293Sjkh	movl	1096(%edi,%ebx,4),%ebp
17556293Sjkh	movb	%dh,		%al
176130585Sphk	movb	%dl,		%bl
17756293Sjkh	addl	%ebp,		%esi
17856293Sjkh	movl	2120(%edi,%eax,4),%eax
17956293Sjkh	xorl	%eax,		%esi
18056293Sjkh	movl	3144(%edi,%ebx,4),%ebp
18156293Sjkh	addl	%ebp,		%esi
18256293Sjkh	xorl	%eax,		%eax
18356293Sjkh	xorl	%esi,		%ecx
18477837Sphk
18556293Sjkh	# Round 8
18656293Sjkh	rorl	$16,		%ecx
18756293Sjkh	movl	36(%edi),	%esi
18856293Sjkh	movb	%ch,		%al
18956293Sjkh	movb	%cl,		%bl
19056293Sjkh	rorl	$16,		%ecx
191130585Sphk	xorl	%esi,		%edx
19256293Sjkh	movl	72(%edi,%eax,4),%esi
19356293Sjkh	movl	1096(%edi,%ebx,4),%ebp
19456293Sjkh	movb	%ch,		%al
19556293Sjkh	movb	%cl,		%bl
19656293Sjkh	addl	%ebp,		%esi
19756293Sjkh	movl	2120(%edi,%eax,4),%eax
19856293Sjkh	xorl	%eax,		%esi
19956293Sjkh	movl	3144(%edi,%ebx,4),%ebp
20056293Sjkh	addl	%ebp,		%esi
20156293Sjkh	xorl	%eax,		%eax
20256293Sjkh	xorl	%esi,		%edx
20356293Sjkh
20456293Sjkh	# Round 9
20556293Sjkh	rorl	$16,		%edx
20656293Sjkh	movl	40(%edi),	%esi
20756293Sjkh	movb	%dh,		%al
20856293Sjkh	movb	%dl,		%bl
20956293Sjkh	rorl	$16,		%edx
21056293Sjkh	xorl	%esi,		%ecx
211130585Sphk	movl	72(%edi,%eax,4),%esi
21256293Sjkh	movl	1096(%edi,%ebx,4),%ebp
21356293Sjkh	movb	%dh,		%al
21456293Sjkh	movb	%dl,		%bl
21556293Sjkh	addl	%ebp,		%esi
21656293Sjkh	movl	2120(%edi,%eax,4),%eax
21756293Sjkh	xorl	%eax,		%esi
21856293Sjkh	movl	3144(%edi,%ebx,4),%ebp
21956293Sjkh	addl	%ebp,		%esi
22077837Sphk	xorl	%eax,		%eax
22156293Sjkh	xorl	%esi,		%ecx
22256293Sjkh
22356293Sjkh	# Round 10
22456293Sjkh	rorl	$16,		%ecx
22556293Sjkh	movl	44(%edi),	%esi
22656293Sjkh	movb	%ch,		%al
22756293Sjkh	movb	%cl,		%bl
22856293Sjkh	rorl	$16,		%ecx
22956293Sjkh	xorl	%esi,		%edx
23056293Sjkh	movl	72(%edi,%eax,4),%esi
23156293Sjkh	movl	1096(%edi,%ebx,4),%ebp
23256293Sjkh	movb	%ch,		%al
23356293Sjkh	movb	%cl,		%bl
23456293Sjkh	addl	%ebp,		%esi
235130585Sphk	movl	2120(%edi,%eax,4),%eax
23656293Sjkh	xorl	%eax,		%esi
23756293Sjkh	movl	3144(%edi,%ebx,4),%ebp
23856293Sjkh	addl	%ebp,		%esi
23956293Sjkh	xorl	%eax,		%eax
24056293Sjkh	xorl	%esi,		%edx
24156293Sjkh
24256293Sjkh	# Round 11
24356293Sjkh	rorl	$16,		%edx
24456293Sjkh	movl	48(%edi),	%esi
24556293Sjkh	movb	%dh,		%al
24656293Sjkh	movb	%dl,		%bl
24756293Sjkh	rorl	$16,		%edx
24856293Sjkh	xorl	%esi,		%ecx
24956293Sjkh	movl	72(%edi,%eax,4),%esi
25056293Sjkh	movl	1096(%edi,%ebx,4),%ebp
25156293Sjkh	movb	%dh,		%al
25256293Sjkh	movb	%dl,		%bl
25356293Sjkh	addl	%ebp,		%esi
25456293Sjkh	movl	2120(%edi,%eax,4),%eax
25556293Sjkh	xorl	%eax,		%esi
25656293Sjkh	movl	3144(%edi,%ebx,4),%ebp
25756293Sjkh	addl	%ebp,		%esi
25856293Sjkh	xorl	%eax,		%eax
25956293Sjkh	xorl	%esi,		%ecx
26056293Sjkh
26156293Sjkh	# Round 12
26256293Sjkh	rorl	$16,		%ecx
26356293Sjkh	movl	52(%edi),	%esi
26456293Sjkh	movb	%ch,		%al
26556293Sjkh	movb	%cl,		%bl
26656293Sjkh	rorl	$16,		%ecx
26756293Sjkh	xorl	%esi,		%edx
26856293Sjkh	movl	72(%edi,%eax,4),%esi
26956293Sjkh	movl	1096(%edi,%ebx,4),%ebp
27056293Sjkh	movb	%ch,		%al
27156293Sjkh	movb	%cl,		%bl
27256293Sjkh	addl	%ebp,		%esi
27356293Sjkh	movl	2120(%edi,%eax,4),%eax
274130585Sphk	xorl	%eax,		%esi
27556293Sjkh	movl	3144(%edi,%ebx,4),%ebp
27656293Sjkh	addl	%ebp,		%esi
27756293Sjkh	xorl	%eax,		%eax
27856293Sjkh	xorl	%esi,		%edx
27956293Sjkh
28056293Sjkh	# Round 13
28156293Sjkh	rorl	$16,		%edx
28256293Sjkh	movl	56(%edi),	%esi
28356293Sjkh	movb	%dh,		%al
28456293Sjkh	movb	%dl,		%bl
28556293Sjkh	rorl	$16,		%edx
28656293Sjkh	xorl	%esi,		%ecx
28756293Sjkh	movl	72(%edi,%eax,4),%esi
28856293Sjkh	movl	1096(%edi,%ebx,4),%ebp
28956293Sjkh	movb	%dh,		%al
29056293Sjkh	movb	%dl,		%bl
29156293Sjkh	addl	%ebp,		%esi
29256293Sjkh	movl	2120(%edi,%eax,4),%eax
29356293Sjkh	xorl	%eax,		%esi
29456293Sjkh	movl	3144(%edi,%ebx,4),%ebp
29556293Sjkh	addl	%ebp,		%esi
29656293Sjkh	xorl	%eax,		%eax
29756293Sjkh	xorl	%esi,		%ecx
29856293Sjkh
29956293Sjkh	# Round 14
30056293Sjkh	rorl	$16,		%ecx
30156293Sjkh	movl	60(%edi),	%esi
30256293Sjkh	movb	%ch,		%al
303106564Sjhb	movb	%cl,		%bl
304130585Sphk	rorl	$16,		%ecx
30556293Sjkh	xorl	%esi,		%edx
30656293Sjkh	movl	72(%edi,%eax,4),%esi
30756293Sjkh	movl	1096(%edi,%ebx,4),%ebp
30856293Sjkh	movb	%ch,		%al
30956293Sjkh	movb	%cl,		%bl
31057352Ssheldonh	addl	%ebp,		%esi
31157352Ssheldonh	movl	2120(%edi,%eax,4),%eax
31257352Ssheldonh	xorl	%eax,		%esi
31356293Sjkh	movl	3144(%edi,%ebx,4),%ebp
31456293Sjkh	addl	%ebp,		%esi
31556293Sjkh	xorl	%eax,		%eax
31656293Sjkh	xorl	%esi,		%edx
31756293Sjkh
31856293Sjkh	# Round 15
31956293Sjkh	rorl	$16,		%edx
32056293Sjkh	movl	64(%edi),	%esi
32156293Sjkh	movb	%dh,		%al
32256293Sjkh	movb	%dl,		%bl
32356293Sjkh	rorl	$16,		%edx
32456293Sjkh	xorl	%esi,		%ecx
32556293Sjkh	movl	72(%edi,%eax,4),%esi
32656455Speter	movl	1096(%edi,%ebx,4),%ebp
32756455Speter	movb	%dh,		%al
32856455Speter	movb	%dl,		%bl
32956455Speter	addl	%ebp,		%esi
33056455Speter	movl	2120(%edi,%eax,4),%eax
33156455Speter	xorl	%eax,		%esi
33256455Speter	movl	3144(%edi,%ebx,4),%ebp
33356455Speter	addl	%ebp,		%esi
33456455Speter	xorl	%eax,		%eax
33556455Speter	xorl	%esi,		%ecx
33656455Speter	xorl	68(%edi),	%edx
33756455Speter	movl	20(%esp),	%eax
33856455Speter	movl	%edx,		(%eax)
33956455Speter	movl	%ecx,		4(%eax)
34056455Speter	popl	%edi
34156293Sjkh	popl	%esi
342	popl	%ebx
343	popl	%ebp
344	ret
345.L_BF_encrypt_end:
346	.size	BF_encrypt,.L_BF_encrypt_end-BF_encrypt
347.ident	"desasm.pl"
348.text
349	.align 16
350.globl BF_decrypt
351	.type	BF_decrypt,@function
352BF_decrypt:
353	pushl	%ebp
354	pushl	%ebx
355	pushl	%esi
356	pushl	%edi
357
358
359	# Load the 2 words
360	movl	20(%esp),	%eax
361	movl	(%eax),		%ecx
362	movl	4(%eax),	%edx
363
364	# P pointer, s and enc flag
365	movl	24(%esp),	%edi
366	xorl	%eax,		%eax
367	xorl	%ebx,		%ebx
368	xorl	68(%edi),	%ecx
369
370	# Round 16
371	rorl	$16,		%ecx
372	movl	64(%edi),	%esi
373	movb	%ch,		%al
374	movb	%cl,		%bl
375	rorl	$16,		%ecx
376	xorl	%esi,		%edx
377	movl	72(%edi,%eax,4),%esi
378	movl	1096(%edi,%ebx,4),%ebp
379	movb	%ch,		%al
380	movb	%cl,		%bl
381	addl	%ebp,		%esi
382	movl	2120(%edi,%eax,4),%eax
383	xorl	%eax,		%esi
384	movl	3144(%edi,%ebx,4),%ebp
385	addl	%ebp,		%esi
386	xorl	%eax,		%eax
387	xorl	%esi,		%edx
388
389	# Round 15
390	rorl	$16,		%edx
391	movl	60(%edi),	%esi
392	movb	%dh,		%al
393	movb	%dl,		%bl
394	rorl	$16,		%edx
395	xorl	%esi,		%ecx
396	movl	72(%edi,%eax,4),%esi
397	movl	1096(%edi,%ebx,4),%ebp
398	movb	%dh,		%al
399	movb	%dl,		%bl
400	addl	%ebp,		%esi
401	movl	2120(%edi,%eax,4),%eax
402	xorl	%eax,		%esi
403	movl	3144(%edi,%ebx,4),%ebp
404	addl	%ebp,		%esi
405	xorl	%eax,		%eax
406	xorl	%esi,		%ecx
407
408	# Round 14
409	rorl	$16,		%ecx
410	movl	56(%edi),	%esi
411	movb	%ch,		%al
412	movb	%cl,		%bl
413	rorl	$16,		%ecx
414	xorl	%esi,		%edx
415	movl	72(%edi,%eax,4),%esi
416	movl	1096(%edi,%ebx,4),%ebp
417	movb	%ch,		%al
418	movb	%cl,		%bl
419	addl	%ebp,		%esi
420	movl	2120(%edi,%eax,4),%eax
421	xorl	%eax,		%esi
422	movl	3144(%edi,%ebx,4),%ebp
423	addl	%ebp,		%esi
424	xorl	%eax,		%eax
425	xorl	%esi,		%edx
426
427	# Round 13
428	rorl	$16,		%edx
429	movl	52(%edi),	%esi
430	movb	%dh,		%al
431	movb	%dl,		%bl
432	rorl	$16,		%edx
433	xorl	%esi,		%ecx
434	movl	72(%edi,%eax,4),%esi
435	movl	1096(%edi,%ebx,4),%ebp
436	movb	%dh,		%al
437	movb	%dl,		%bl
438	addl	%ebp,		%esi
439	movl	2120(%edi,%eax,4),%eax
440	xorl	%eax,		%esi
441	movl	3144(%edi,%ebx,4),%ebp
442	addl	%ebp,		%esi
443	xorl	%eax,		%eax
444	xorl	%esi,		%ecx
445
446	# Round 12
447	rorl	$16,		%ecx
448	movl	48(%edi),	%esi
449	movb	%ch,		%al
450	movb	%cl,		%bl
451	rorl	$16,		%ecx
452	xorl	%esi,		%edx
453	movl	72(%edi,%eax,4),%esi
454	movl	1096(%edi,%ebx,4),%ebp
455	movb	%ch,		%al
456	movb	%cl,		%bl
457	addl	%ebp,		%esi
458	movl	2120(%edi,%eax,4),%eax
459	xorl	%eax,		%esi
460	movl	3144(%edi,%ebx,4),%ebp
461	addl	%ebp,		%esi
462	xorl	%eax,		%eax
463	xorl	%esi,		%edx
464
465	# Round 11
466	rorl	$16,		%edx
467	movl	44(%edi),	%esi
468	movb	%dh,		%al
469	movb	%dl,		%bl
470	rorl	$16,		%edx
471	xorl	%esi,		%ecx
472	movl	72(%edi,%eax,4),%esi
473	movl	1096(%edi,%ebx,4),%ebp
474	movb	%dh,		%al
475	movb	%dl,		%bl
476	addl	%ebp,		%esi
477	movl	2120(%edi,%eax,4),%eax
478	xorl	%eax,		%esi
479	movl	3144(%edi,%ebx,4),%ebp
480	addl	%ebp,		%esi
481	xorl	%eax,		%eax
482	xorl	%esi,		%ecx
483
484	# Round 10
485	rorl	$16,		%ecx
486	movl	40(%edi),	%esi
487	movb	%ch,		%al
488	movb	%cl,		%bl
489	rorl	$16,		%ecx
490	xorl	%esi,		%edx
491	movl	72(%edi,%eax,4),%esi
492	movl	1096(%edi,%ebx,4),%ebp
493	movb	%ch,		%al
494	movb	%cl,		%bl
495	addl	%ebp,		%esi
496	movl	2120(%edi,%eax,4),%eax
497	xorl	%eax,		%esi
498	movl	3144(%edi,%ebx,4),%ebp
499	addl	%ebp,		%esi
500	xorl	%eax,		%eax
501	xorl	%esi,		%edx
502
503	# Round 9
504	rorl	$16,		%edx
505	movl	36(%edi),	%esi
506	movb	%dh,		%al
507	movb	%dl,		%bl
508	rorl	$16,		%edx
509	xorl	%esi,		%ecx
510	movl	72(%edi,%eax,4),%esi
511	movl	1096(%edi,%ebx,4),%ebp
512	movb	%dh,		%al
513	movb	%dl,		%bl
514	addl	%ebp,		%esi
515	movl	2120(%edi,%eax,4),%eax
516	xorl	%eax,		%esi
517	movl	3144(%edi,%ebx,4),%ebp
518	addl	%ebp,		%esi
519	xorl	%eax,		%eax
520	xorl	%esi,		%ecx
521
522	# Round 8
523	rorl	$16,		%ecx
524	movl	32(%edi),	%esi
525	movb	%ch,		%al
526	movb	%cl,		%bl
527	rorl	$16,		%ecx
528	xorl	%esi,		%edx
529	movl	72(%edi,%eax,4),%esi
530	movl	1096(%edi,%ebx,4),%ebp
531	movb	%ch,		%al
532	movb	%cl,		%bl
533	addl	%ebp,		%esi
534	movl	2120(%edi,%eax,4),%eax
535	xorl	%eax,		%esi
536	movl	3144(%edi,%ebx,4),%ebp
537	addl	%ebp,		%esi
538	xorl	%eax,		%eax
539	xorl	%esi,		%edx
540
541	# Round 7
542	rorl	$16,		%edx
543	movl	28(%edi),	%esi
544	movb	%dh,		%al
545	movb	%dl,		%bl
546	rorl	$16,		%edx
547	xorl	%esi,		%ecx
548	movl	72(%edi,%eax,4),%esi
549	movl	1096(%edi,%ebx,4),%ebp
550	movb	%dh,		%al
551	movb	%dl,		%bl
552	addl	%ebp,		%esi
553	movl	2120(%edi,%eax,4),%eax
554	xorl	%eax,		%esi
555	movl	3144(%edi,%ebx,4),%ebp
556	addl	%ebp,		%esi
557	xorl	%eax,		%eax
558	xorl	%esi,		%ecx
559
560	# Round 6
561	rorl	$16,		%ecx
562	movl	24(%edi),	%esi
563	movb	%ch,		%al
564	movb	%cl,		%bl
565	rorl	$16,		%ecx
566	xorl	%esi,		%edx
567	movl	72(%edi,%eax,4),%esi
568	movl	1096(%edi,%ebx,4),%ebp
569	movb	%ch,		%al
570	movb	%cl,		%bl
571	addl	%ebp,		%esi
572	movl	2120(%edi,%eax,4),%eax
573	xorl	%eax,		%esi
574	movl	3144(%edi,%ebx,4),%ebp
575	addl	%ebp,		%esi
576	xorl	%eax,		%eax
577	xorl	%esi,		%edx
578
579	# Round 5
580	rorl	$16,		%edx
581	movl	20(%edi),	%esi
582	movb	%dh,		%al
583	movb	%dl,		%bl
584	rorl	$16,		%edx
585	xorl	%esi,		%ecx
586	movl	72(%edi,%eax,4),%esi
587	movl	1096(%edi,%ebx,4),%ebp
588	movb	%dh,		%al
589	movb	%dl,		%bl
590	addl	%ebp,		%esi
591	movl	2120(%edi,%eax,4),%eax
592	xorl	%eax,		%esi
593	movl	3144(%edi,%ebx,4),%ebp
594	addl	%ebp,		%esi
595	xorl	%eax,		%eax
596	xorl	%esi,		%ecx
597
598	# Round 4
599	rorl	$16,		%ecx
600	movl	16(%edi),	%esi
601	movb	%ch,		%al
602	movb	%cl,		%bl
603	rorl	$16,		%ecx
604	xorl	%esi,		%edx
605	movl	72(%edi,%eax,4),%esi
606	movl	1096(%edi,%ebx,4),%ebp
607	movb	%ch,		%al
608	movb	%cl,		%bl
609	addl	%ebp,		%esi
610	movl	2120(%edi,%eax,4),%eax
611	xorl	%eax,		%esi
612	movl	3144(%edi,%ebx,4),%ebp
613	addl	%ebp,		%esi
614	xorl	%eax,		%eax
615	xorl	%esi,		%edx
616
617	# Round 3
618	rorl	$16,		%edx
619	movl	12(%edi),	%esi
620	movb	%dh,		%al
621	movb	%dl,		%bl
622	rorl	$16,		%edx
623	xorl	%esi,		%ecx
624	movl	72(%edi,%eax,4),%esi
625	movl	1096(%edi,%ebx,4),%ebp
626	movb	%dh,		%al
627	movb	%dl,		%bl
628	addl	%ebp,		%esi
629	movl	2120(%edi,%eax,4),%eax
630	xorl	%eax,		%esi
631	movl	3144(%edi,%ebx,4),%ebp
632	addl	%ebp,		%esi
633	xorl	%eax,		%eax
634	xorl	%esi,		%ecx
635
636	# Round 2
637	rorl	$16,		%ecx
638	movl	8(%edi),	%esi
639	movb	%ch,		%al
640	movb	%cl,		%bl
641	rorl	$16,		%ecx
642	xorl	%esi,		%edx
643	movl	72(%edi,%eax,4),%esi
644	movl	1096(%edi,%ebx,4),%ebp
645	movb	%ch,		%al
646	movb	%cl,		%bl
647	addl	%ebp,		%esi
648	movl	2120(%edi,%eax,4),%eax
649	xorl	%eax,		%esi
650	movl	3144(%edi,%ebx,4),%ebp
651	addl	%ebp,		%esi
652	xorl	%eax,		%eax
653	xorl	%esi,		%edx
654
655	# Round 1
656	rorl	$16,		%edx
657	movl	4(%edi),	%esi
658	movb	%dh,		%al
659	movb	%dl,		%bl
660	rorl	$16,		%edx
661	xorl	%esi,		%ecx
662	movl	72(%edi,%eax,4),%esi
663	movl	1096(%edi,%ebx,4),%ebp
664	movb	%dh,		%al
665	movb	%dl,		%bl
666	addl	%ebp,		%esi
667	movl	2120(%edi,%eax,4),%eax
668	xorl	%eax,		%esi
669	movl	3144(%edi,%ebx,4),%ebp
670	addl	%ebp,		%esi
671	xorl	%eax,		%eax
672	xorl	%esi,		%ecx
673	xorl	(%edi),		%edx
674	movl	20(%esp),	%eax
675	movl	%edx,		(%eax)
676	movl	%ecx,		4(%eax)
677	popl	%edi
678	popl	%esi
679	popl	%ebx
680	popl	%ebp
681	ret
682.L_BF_decrypt_end:
683	.size	BF_decrypt,.L_BF_decrypt_end-BF_decrypt
684.ident	"desasm.pl"
685.text
686	.align 16
687.globl BF_cbc_encrypt
688	.type	BF_cbc_encrypt,@function
689BF_cbc_encrypt:
690
691	pushl	%ebp
692	pushl	%ebx
693	pushl	%esi
694	pushl	%edi
695	movl	28(%esp),	%ebp
696	# getting iv ptr from parameter 4
697	movl	36(%esp),	%ebx
698	movl	(%ebx),		%esi
699	movl	4(%ebx),	%edi
700	pushl	%edi
701	pushl	%esi
702	pushl	%edi
703	pushl	%esi
704	movl	%esp,		%ebx
705	movl	36(%esp),	%esi
706	movl	40(%esp),	%edi
707	# getting encrypt flag from parameter 5
708	movl	56(%esp),	%ecx
709	# get and push parameter 3
710	movl	48(%esp),	%eax
711	pushl	%eax
712	pushl	%ebx
713	cmpl	$0,		%ecx
714	jz	.L000decrypt
715	andl	$4294967288,	%ebp
716	movl	8(%esp),	%eax
717	movl	12(%esp),	%ebx
718	jz	.L001encrypt_finish
719.L002encrypt_loop:
720	movl	(%esi),		%ecx
721	movl	4(%esi),	%edx
722	xorl	%ecx,		%eax
723	xorl	%edx,		%ebx
724.byte 15
725.byte 200		# bswapl  %eax
726.byte 15
727.byte 203		# bswapl  %ebx
728	movl	%eax,		8(%esp)
729	movl	%ebx,		12(%esp)
730	call	BF_encrypt
731	movl	8(%esp),	%eax
732	movl	12(%esp),	%ebx
733.byte 15
734.byte 200		# bswapl  %eax
735.byte 15
736.byte 203		# bswapl  %ebx
737	movl	%eax,		(%edi)
738	movl	%ebx,		4(%edi)
739	addl	$8,		%esi
740	addl	$8,		%edi
741	subl	$8,		%ebp
742	jnz	.L002encrypt_loop
743.L001encrypt_finish:
744	movl	52(%esp),	%ebp
745	andl	$7,		%ebp
746	jz	.L003finish
747	xorl	%ecx,		%ecx
748	xorl	%edx,		%edx
749	movl	.L004cbc_enc_jmp_table(,%ebp,4),%ebp
750	jmp	*%ebp
751.L005ej7:
752	movb	6(%esi),	%dh
753	sall	$8,		%edx
754.L006ej6:
755	movb	5(%esi),	%dh
756.L007ej5:
757	movb	4(%esi),	%dl
758.L008ej4:
759	movl	(%esi),		%ecx
760	jmp	.L009ejend
761.L010ej3:
762	movb	2(%esi),	%ch
763	sall	$8,		%ecx
764.L011ej2:
765	movb	1(%esi),	%ch
766.L012ej1:
767	movb	(%esi),		%cl
768.L009ejend:
769	xorl	%ecx,		%eax
770	xorl	%edx,		%ebx
771.byte 15
772.byte 200		# bswapl  %eax
773.byte 15
774.byte 203		# bswapl  %ebx
775	movl	%eax,		8(%esp)
776	movl	%ebx,		12(%esp)
777	call	BF_encrypt
778	movl	8(%esp),	%eax
779	movl	12(%esp),	%ebx
780.byte 15
781.byte 200		# bswapl  %eax
782.byte 15
783.byte 203		# bswapl  %ebx
784	movl	%eax,		(%edi)
785	movl	%ebx,		4(%edi)
786	jmp	.L003finish
787.align 16
788.L000decrypt:
789	andl	$4294967288,	%ebp
790	movl	16(%esp),	%eax
791	movl	20(%esp),	%ebx
792	jz	.L013decrypt_finish
793.L014decrypt_loop:
794	movl	(%esi),		%eax
795	movl	4(%esi),	%ebx
796.byte 15
797.byte 200		# bswapl  %eax
798.byte 15
799.byte 203		# bswapl  %ebx
800	movl	%eax,		8(%esp)
801	movl	%ebx,		12(%esp)
802	call	BF_decrypt
803	movl	8(%esp),	%eax
804	movl	12(%esp),	%ebx
805.byte 15
806.byte 200		# bswapl  %eax
807.byte 15
808.byte 203		# bswapl  %ebx
809	movl	16(%esp),	%ecx
810	movl	20(%esp),	%edx
811	xorl	%eax,		%ecx
812	xorl	%ebx,		%edx
813	movl	(%esi),		%eax
814	movl	4(%esi),	%ebx
815	movl	%ecx,		(%edi)
816	movl	%edx,		4(%edi)
817	movl	%eax,		16(%esp)
818	movl	%ebx,		20(%esp)
819	addl	$8,		%esi
820	addl	$8,		%edi
821	subl	$8,		%ebp
822	jnz	.L014decrypt_loop
823.L013decrypt_finish:
824	movl	52(%esp),	%ebp
825	andl	$7,		%ebp
826	jz	.L003finish
827	movl	(%esi),		%eax
828	movl	4(%esi),	%ebx
829.byte 15
830.byte 200		# bswapl  %eax
831.byte 15
832.byte 203		# bswapl  %ebx
833	movl	%eax,		8(%esp)
834	movl	%ebx,		12(%esp)
835	call	BF_decrypt
836	movl	8(%esp),	%eax
837	movl	12(%esp),	%ebx
838.byte 15
839.byte 200		# bswapl  %eax
840.byte 15
841.byte 203		# bswapl  %ebx
842	movl	16(%esp),	%ecx
843	movl	20(%esp),	%edx
844	xorl	%eax,		%ecx
845	xorl	%ebx,		%edx
846	movl	(%esi),		%eax
847	movl	4(%esi),	%ebx
848.L015dj7:
849	rorl	$16,		%edx
850	movb	%dl,		6(%edi)
851	shrl	$16,		%edx
852.L016dj6:
853	movb	%dh,		5(%edi)
854.L017dj5:
855	movb	%dl,		4(%edi)
856.L018dj4:
857	movl	%ecx,		(%edi)
858	jmp	.L019djend
859.L020dj3:
860	rorl	$16,		%ecx
861	movb	%cl,		2(%edi)
862	sall	$16,		%ecx
863.L021dj2:
864	movb	%ch,		1(%esi)
865.L022dj1:
866	movb	%cl,		(%esi)
867.L019djend:
868	jmp	.L003finish
869.align 16
870.L003finish:
871	movl	60(%esp),	%ecx
872	addl	$24,		%esp
873	movl	%eax,		(%ecx)
874	movl	%ebx,		4(%ecx)
875	popl	%edi
876	popl	%esi
877	popl	%ebx
878	popl	%ebp
879	ret
880.align 16
881.L004cbc_enc_jmp_table:
882	.long 0
883	.long .L012ej1
884	.long .L011ej2
885	.long .L010ej3
886	.long .L008ej4
887	.long .L007ej5
888	.long .L006ej6
889	.long .L005ej7
890.align 16
891.L023cbc_dec_jmp_table:
892	.long 0
893	.long .L022dj1
894	.long .L021dj2
895	.long .L020dj3
896	.long .L018dj4
897	.long .L017dj5
898	.long .L016dj6
899	.long .L015dj7
900.L_BF_cbc_encrypt_end:
901	.size	BF_cbc_encrypt,.L_BF_cbc_encrypt_end-BF_cbc_encrypt
902.ident	"desasm.pl"
903