dx86-cpp.s

来自「openssl是ssl的开源项目」· S 代码 · 共 2,781 行 · 第 1/4 页

S
2,781
字号
	movl	0x200+des_SPtrans(%ecx),%ebp	xorl	%ebp,		%edi	movb	%dh,		%cl	shrl	$16,		%eax	movl	0x100+des_SPtrans(%ebx),%ebp	xorl	%ebp,		%edi	movb	%ah,		%bl	shrl	$16,		%edx	movl	0x300+des_SPtrans(%ecx),%ebp	xorl	%ebp,		%edi	movl	24(%esp),	%ebp	movb	%dh,		%cl	andl	$0xff,		%eax	andl	$0xff,		%edx	movl	0x600+des_SPtrans(%ebx),%ebx	xorl	%ebx,		%edi	movl	0x700+des_SPtrans(%ecx),%ebx	xorl	%ebx,		%edi	movl	0x400+des_SPtrans(%eax),%ebx	xorl	%ebx,		%edi	movl	0x500+des_SPtrans(%edx),%ebx	xorl	%ebx,		%edi	/* Round 10 */	movl	80(%ebp),	%eax	xorl	%ebx,		%ebx	movl	84(%ebp),	%edx	xorl	%edi,		%eax	xorl	%edi,		%edx	andl	$0xfcfcfcfc,	%eax	andl	$0xcfcfcfcf,	%edx	movb	%al,		%bl	movb	%ah,		%cl	rorl	$4,		%edx	movl	      des_SPtrans(%ebx),%ebp	movb	%dl,		%bl	xorl	%ebp,		%esi	movl	0x200+des_SPtrans(%ecx),%ebp	xorl	%ebp,		%esi	movb	%dh,		%cl	shrl	$16,		%eax	movl	0x100+des_SPtrans(%ebx),%ebp	xorl	%ebp,		%esi	movb	%ah,		%bl	shrl	$16,		%edx	movl	0x300+des_SPtrans(%ecx),%ebp	xorl	%ebp,		%esi	movl	24(%esp),	%ebp	movb	%dh,		%cl	andl	$0xff,		%eax	andl	$0xff,		%edx	movl	0x600+des_SPtrans(%ebx),%ebx	xorl	%ebx,		%esi	movl	0x700+des_SPtrans(%ecx),%ebx	xorl	%ebx,		%esi	movl	0x400+des_SPtrans(%eax),%ebx	xorl	%ebx,		%esi	movl	0x500+des_SPtrans(%edx),%ebx	xorl	%ebx,		%esi	/* Round 9 */	movl	72(%ebp),	%eax	xorl	%ebx,		%ebx	movl	76(%ebp),	%edx	xorl	%esi,		%eax	xorl	%esi,		%edx	andl	$0xfcfcfcfc,	%eax	andl	$0xcfcfcfcf,	%edx	movb	%al,		%bl	movb	%ah,		%cl	rorl	$4,		%edx	movl	      des_SPtrans(%ebx),%ebp	movb	%dl,		%bl	xorl	%ebp,		%edi	movl	0x200+des_SPtrans(%ecx),%ebp	xorl	%ebp,		%edi	movb	%dh,		%cl	shrl	$16,		%eax	movl	0x100+des_SPtrans(%ebx),%ebp	xorl	%ebp,		%edi	movb	%ah,		%bl	shrl	$16,		%edx	movl	0x300+des_SPtrans(%ecx),%ebp	xorl	%ebp,		%edi	movl	24(%esp),	%ebp	movb	%dh,		%cl	andl	$0xff,		%eax	andl	$0xff,		%edx	movl	0x600+des_SPtrans(%ebx),%ebx	xorl	%ebx,		%edi	movl	0x700+des_SPtrans(%ecx),%ebx	xorl	%ebx,		%edi	movl	0x400+des_SPtrans(%eax),%ebx	xorl	%ebx,		%edi	movl	0x500+des_SPtrans(%edx),%ebx	xorl	%ebx,		%edi	/* Round 8 */	movl	64(%ebp),	%eax	xorl	%ebx,		%ebx	movl	68(%ebp),	%edx	xorl	%edi,		%eax	xorl	%edi,		%edx	andl	$0xfcfcfcfc,	%eax	andl	$0xcfcfcfcf,	%edx	movb	%al,		%bl	movb	%ah,		%cl	rorl	$4,		%edx	movl	      des_SPtrans(%ebx),%ebp	movb	%dl,		%bl	xorl	%ebp,		%esi	movl	0x200+des_SPtrans(%ecx),%ebp	xorl	%ebp,		%esi	movb	%dh,		%cl	shrl	$16,		%eax	movl	0x100+des_SPtrans(%ebx),%ebp	xorl	%ebp,		%esi	movb	%ah,		%bl	shrl	$16,		%edx	movl	0x300+des_SPtrans(%ecx),%ebp	xorl	%ebp,		%esi	movl	24(%esp),	%ebp	movb	%dh,		%cl	andl	$0xff,		%eax	andl	$0xff,		%edx	movl	0x600+des_SPtrans(%ebx),%ebx	xorl	%ebx,		%esi	movl	0x700+des_SPtrans(%ecx),%ebx	xorl	%ebx,		%esi	movl	0x400+des_SPtrans(%eax),%ebx	xorl	%ebx,		%esi	movl	0x500+des_SPtrans(%edx),%ebx	xorl	%ebx,		%esi	/* Round 7 */	movl	56(%ebp),	%eax	xorl	%ebx,		%ebx	movl	60(%ebp),	%edx	xorl	%esi,		%eax	xorl	%esi,		%edx	andl	$0xfcfcfcfc,	%eax	andl	$0xcfcfcfcf,	%edx	movb	%al,		%bl	movb	%ah,		%cl	rorl	$4,		%edx	movl	      des_SPtrans(%ebx),%ebp	movb	%dl,		%bl	xorl	%ebp,		%edi	movl	0x200+des_SPtrans(%ecx),%ebp	xorl	%ebp,		%edi	movb	%dh,		%cl	shrl	$16,		%eax	movl	0x100+des_SPtrans(%ebx),%ebp	xorl	%ebp,		%edi	movb	%ah,		%bl	shrl	$16,		%edx	movl	0x300+des_SPtrans(%ecx),%ebp	xorl	%ebp,		%edi	movl	24(%esp),	%ebp	movb	%dh,		%cl	andl	$0xff,		%eax	andl	$0xff,		%edx	movl	0x600+des_SPtrans(%ebx),%ebx	xorl	%ebx,		%edi	movl	0x700+des_SPtrans(%ecx),%ebx	xorl	%ebx,		%edi	movl	0x400+des_SPtrans(%eax),%ebx	xorl	%ebx,		%edi	movl	0x500+des_SPtrans(%edx),%ebx	xorl	%ebx,		%edi	/* Round 6 */	movl	48(%ebp),	%eax	xorl	%ebx,		%ebx	movl	52(%ebp),	%edx	xorl	%edi,		%eax	xorl	%edi,		%edx	andl	$0xfcfcfcfc,	%eax	andl	$0xcfcfcfcf,	%edx	movb	%al,		%bl	movb	%ah,		%cl	rorl	$4,		%edx	movl	      des_SPtrans(%ebx),%ebp	movb	%dl,		%bl	xorl	%ebp,		%esi	movl	0x200+des_SPtrans(%ecx),%ebp	xorl	%ebp,		%esi	movb	%dh,		%cl	shrl	$16,		%eax	movl	0x100+des_SPtrans(%ebx),%ebp	xorl	%ebp,		%esi	movb	%ah,		%bl	shrl	$16,		%edx	movl	0x300+des_SPtrans(%ecx),%ebp	xorl	%ebp,		%esi	movl	24(%esp),	%ebp	movb	%dh,		%cl	andl	$0xff,		%eax	andl	$0xff,		%edx	movl	0x600+des_SPtrans(%ebx),%ebx	xorl	%ebx,		%esi	movl	0x700+des_SPtrans(%ecx),%ebx	xorl	%ebx,		%esi	movl	0x400+des_SPtrans(%eax),%ebx	xorl	%ebx,		%esi	movl	0x500+des_SPtrans(%edx),%ebx	xorl	%ebx,		%esi	/* Round 5 */	movl	40(%ebp),	%eax	xorl	%ebx,		%ebx	movl	44(%ebp),	%edx	xorl	%esi,		%eax	xorl	%esi,		%edx	andl	$0xfcfcfcfc,	%eax	andl	$0xcfcfcfcf,	%edx	movb	%al,		%bl	movb	%ah,		%cl	rorl	$4,		%edx	movl	      des_SPtrans(%ebx),%ebp	movb	%dl,		%bl	xorl	%ebp,		%edi	movl	0x200+des_SPtrans(%ecx),%ebp	xorl	%ebp,		%edi	movb	%dh,		%cl	shrl	$16,		%eax	movl	0x100+des_SPtrans(%ebx),%ebp	xorl	%ebp,		%edi	movb	%ah,		%bl	shrl	$16,		%edx	movl	0x300+des_SPtrans(%ecx),%ebp	xorl	%ebp,		%edi	movl	24(%esp),	%ebp	movb	%dh,		%cl	andl	$0xff,		%eax	andl	$0xff,		%edx	movl	0x600+des_SPtrans(%ebx),%ebx	xorl	%ebx,		%edi	movl	0x700+des_SPtrans(%ecx),%ebx	xorl	%ebx,		%edi	movl	0x400+des_SPtrans(%eax),%ebx	xorl	%ebx,		%edi	movl	0x500+des_SPtrans(%edx),%ebx	xorl	%ebx,		%edi	/* Round 4 */	movl	32(%ebp),	%eax	xorl	%ebx,		%ebx	movl	36(%ebp),	%edx	xorl	%edi,		%eax	xorl	%edi,		%edx	andl	$0xfcfcfcfc,	%eax	andl	$0xcfcfcfcf,	%edx	movb	%al,		%bl	movb	%ah,		%cl	rorl	$4,		%edx	movl	      des_SPtrans(%ebx),%ebp	movb	%dl,		%bl	xorl	%ebp,		%esi	movl	0x200+des_SPtrans(%ecx),%ebp	xorl	%ebp,		%esi	movb	%dh,		%cl	shrl	$16,		%eax	movl	0x100+des_SPtrans(%ebx),%ebp	xorl	%ebp,		%esi	movb	%ah,		%bl	shrl	$16,		%edx	movl	0x300+des_SPtrans(%ecx),%ebp	xorl	%ebp,		%esi	movl	24(%esp),	%ebp	movb	%dh,		%cl	andl	$0xff,		%eax	andl	$0xff,		%edx	movl	0x600+des_SPtrans(%ebx),%ebx	xorl	%ebx,		%esi	movl	0x700+des_SPtrans(%ecx),%ebx	xorl	%ebx,		%esi	movl	0x400+des_SPtrans(%eax),%ebx	xorl	%ebx,		%esi	movl	0x500+des_SPtrans(%edx),%ebx	xorl	%ebx,		%esi	/* Round 3 */	movl	24(%ebp),	%eax	xorl	%ebx,		%ebx	movl	28(%ebp),	%edx	xorl	%esi,		%eax	xorl	%esi,		%edx	andl	$0xfcfcfcfc,	%eax	andl	$0xcfcfcfcf,	%edx	movb	%al,		%bl	movb	%ah,		%cl	rorl	$4,		%edx	movl	      des_SPtrans(%ebx),%ebp	movb	%dl,		%bl	xorl	%ebp,		%edi	movl	0x200+des_SPtrans(%ecx),%ebp	xorl	%ebp,		%edi	movb	%dh,		%cl	shrl	$16,		%eax	movl	0x100+des_SPtrans(%ebx),%ebp	xorl	%ebp,		%edi	movb	%ah,		%bl	shrl	$16,		%edx	movl	0x300+des_SPtrans(%ecx),%ebp	xorl	%ebp,		%edi	movl	24(%esp),	%ebp	movb	%dh,		%cl	andl	$0xff,		%eax	andl	$0xff,		%edx	movl	0x600+des_SPtrans(%ebx),%ebx	xorl	%ebx,		%edi	movl	0x700+des_SPtrans(%ecx),%ebx	xorl	%ebx,		%edi	movl	0x400+des_SPtrans(%eax),%ebx	xorl	%ebx,		%edi	movl	0x500+des_SPtrans(%edx),%ebx	xorl	%ebx,		%edi	/* Round 2 */	movl	16(%ebp),	%eax	xorl	%ebx,		%ebx	movl	20(%ebp),	%edx	xorl	%edi,		%eax	xorl	%edi,		%edx	andl	$0xfcfcfcfc,	%eax	andl	$0xcfcfcfcf,	%edx	movb	%al,		%bl	movb	%ah,		%cl	rorl	$4,		%edx	movl	      des_SPtrans(%ebx),%ebp	movb	%dl,		%bl	xorl	%ebp,		%esi	movl	0x200+des_SPtrans(%ecx),%ebp	xorl	%ebp,		%esi	movb	%dh,		%cl	shrl	$16,		%eax	movl	0x100+des_SPtrans(%ebx),%ebp	xorl	%ebp,		%esi	movb	%ah,		%bl	shrl	$16,		%edx	movl	0x300+des_SPtrans(%ecx),%ebp	xorl	%ebp,		%esi	movl	24(%esp),	%ebp	movb	%dh,		%cl	andl	$0xff,		%eax	andl	$0xff,		%edx	movl	0x600+des_SPtrans(%ebx),%ebx	xorl	%ebx,		%esi	movl	0x700+des_SPtrans(%ecx),%ebx	xorl	%ebx,		%esi	movl	0x400+des_SPtrans(%eax),%ebx	xorl	%ebx,		%esi	movl	0x500+des_SPtrans(%edx),%ebx	xorl	%ebx,		%esi	/* Round 1 */	movl	8(%ebp),	%eax	xorl	%ebx,		%ebx	movl	12(%ebp),	%edx	xorl	%esi,		%eax	xorl	%esi,		%edx	andl	$0xfcfcfcfc,	%eax	andl	$0xcfcfcfcf,	%edx	movb	%al,		%bl	movb	%ah,		%cl	rorl	$4,		%edx	movl	      des_SPtrans(%ebx),%ebp	movb	%dl,		%bl	xorl	%ebp,		%edi	movl	0x200+des_SPtrans(%ecx),%ebp	xorl	%ebp,		%edi	movb	%dh,		%cl	shrl	$16,		%eax	movl	0x100+des_SPtrans(%ebx),%ebp	xorl	%ebp,		%edi	movb	%ah,		%bl	shrl	$16,		%edx	movl	0x300+des_SPtrans(%ecx),%ebp	xorl	%ebp,		%edi	movl	24(%esp),	%ebp	movb	%dh,		%cl	andl	$0xff,		%eax	andl	$0xff,		%edx	movl	0x600+des_SPtrans(%ebx),%ebx	xorl	%ebx,		%edi	movl	0x700+des_SPtrans(%ecx),%ebx	xorl	%ebx,		%edi	movl	0x400+des_SPtrans(%eax),%ebx	xorl	%ebx,		%edi	movl	0x500+des_SPtrans(%edx),%ebx	xorl	%ebx,		%edi	/* Round 0 */	movl	(%ebp),		%eax	xorl	%ebx,		%ebx	movl	4(%ebp),	%edx	xorl	%edi,		%eax	xorl	%edi,		%edx	andl	$0xfcfcfcfc,	%eax	andl	$0xcfcfcfcf,	%edx	movb	%al,		%bl	movb	%ah,		%cl	rorl	$4,		%edx	movl	      des_SPtrans(%ebx),%ebp	movb	%dl,		%bl	xorl	%ebp,		%esi	movl	0x200+des_SPtrans(%ecx),%ebp	xorl	%ebp,		%esi	movb	%dh,		%cl	shrl	$16,		%eax	movl	0x100+des_SPtrans(%ebx),%ebp	xorl	%ebp,		%esi	movb	%ah,		%bl	shrl	$16,		%edx	movl	0x300+des_SPtrans(%ecx),%ebp	xorl	%ebp,		%esi	movl	24(%esp),	%ebp	movb	%dh,		%cl	andl	$0xff,		%eax	andl	$0xff,		%edx	movl	0x600+des_SPtrans(%ebx),%ebx	xorl	%ebx,		%esi	movl	0x700+des_SPtrans(%ecx),%ebx	xorl	%ebx,		%esi	movl	0x400+des_SPtrans(%eax),%ebx	xorl	%ebx,		%esi	movl	0x500+des_SPtrans(%edx),%ebx	xorl	%ebx,		%esi.align ALIGN.L003end:	/* Fixup */	rorl	$3,		%edi	movl	20(%esp),	%eax	rorl	$3,		%esi	movl	%edi,		(%eax)	movl	%esi,		4(%eax)	popl	%edi	popl	%esi	popl	%ebx	popl	%ebp	ret.des_encrypt2_end:	SIZE(des_encrypt2,.des_encrypt2_end-des_encrypt2).ident	"desasm.pl".text	.align ALIGN.globl des_encrypt3	TYPE(des_encrypt3,@function)des_encrypt3:	pushl	%ebp	pushl	%ebx	pushl	%esi	pushl	%edi	/* Load the data words */	movl	20(%esp),	%ebx	movl	(%ebx),		%edi	movl	4(%ebx),	%esi	/* IP */	roll	$4,		%edi	movl	%edi,		%edx	xorl	%esi,		%edi	andl	$0xf0f0f0f0,	%edi	xorl	%edi,		%edx	xorl	%edi,		%esi	roll	$20,		%esi	movl	%esi,		%edi	xorl	%edx,		%esi	andl	$0xfff0000f,	%esi	xorl	%esi,		%edi	xorl	%esi,		%edx	roll	$14,		%edi	movl	%edi,		%esi	xorl	%edx,		%edi	andl	$0x33333333,	%edi	xorl	%edi,		%esi	xorl	%edi,		%edx	roll	$22,		%edx	movl	%edx,		%edi	xorl	%esi,		%edx	andl	$0x03fc03fc,	%edx	xorl	%edx,		%edi	xorl	%edx,		%esi	roll	$9,		%edi	movl	%edi,		%edx	xorl	%esi,		%edi	andl	$0xaaaaaaaa,	%edi	xorl	%edi,		%edx	xorl	%edi,		%esi	rorl	$3,		%edx	rorl	$2,		%esi	movl	%esi,		4(%ebx)	movl	24(%esp),	%eax	movl	%edx,		(%ebx)	movl	28(%esp),	%edi	movl	32(%esp),	%esi	pushl	$1	pushl	%eax	pushl	%ebx	call	des_encrypt2	pushl	$0	pushl	%edi	pushl	%ebx	call	des_encrypt2	pushl	$1	pushl	%esi	pushl	%ebx	call	des_encrypt2	movl	(%ebx),		%edi	addl	$36,		%esp	movl	4(%ebx),	%esi	/* FP */	roll	$2,		%esi	roll	$3,		%edi	movl	%edi,		%eax	xorl	%esi,		%edi	andl	$0xaaaaaaaa,	%edi	xorl	%edi,		%eax	xorl	%edi,		%esi	roll	$23,		%eax	movl	%eax,		%edi	xorl	%esi,		%eax	andl	$0x03fc03fc,	%eax	xorl	%eax,		%edi	xorl	%eax,		%esi	roll	$10,		%edi	movl	%edi,		%eax	xorl	%esi,		%edi	andl	$0x33333333,	%edi	xorl	%edi,		%eax	xorl	%edi,		%esi	roll	$18,		%esi	movl	%esi,		%edi	xorl	%eax,		%esi	andl	$0xfff0000f,	%esi	xorl	%esi,		%edi	xorl	%esi,		%eax	roll	$12,		%edi	movl	%edi,		%esi	xorl	%eax,		%edi	andl	$0xf0f0f0f0,	%edi	xorl	%edi,		%esi	xorl	%edi,		%eax	rorl	$4,		%eax	movl	%eax,		(%ebx)	movl	%esi,		4(%ebx)	popl	%edi	popl	%esi	popl	%ebx	popl	%ebp	ret.des_encrypt3_end:	SIZE(des_encrypt3,.des_encrypt3_end-des_encrypt3).ident	"desasm.pl".text	.align ALIGN.globl des_decrypt3	TYPE(des_decrypt3,@function)des_decrypt3:	pushl	%ebp	pushl	%ebx	pushl	%esi	pushl	%edi	/* Load the data words */	movl	20(%esp),	%ebx	movl	(%ebx),		%edi	movl	4(%ebx),	%esi	/* IP */	roll	$4,		%edi	movl	%edi,		%edx	xorl	%esi,		%edi	andl	$0xf0f0f0f0,	%edi	xorl	%edi,		%edx	xorl	%edi,		%esi	roll	$20,		%esi	movl	%esi,		%edi	xorl	%edx,		%esi	andl	$0xfff0000f,	%esi	xorl	%esi,		%edi	xorl	%esi,		%edx	roll	$14,		%edi	movl	%edi,		%esi	xorl	%edx,		%edi	andl	$0x33333333,	%edi	xorl	%edi,		%esi	xorl	%edi,		%edx	roll	$22,		%edx	movl	%edx,		%edi	xorl	%esi,		%edx	andl	$0x03fc03fc,	%edx	xorl	%edx,		%edi	xorl	%edx,		%esi	roll	$9,		%edi	movl	%edi,		%edx	xorl	%esi,		%edi	andl	$0xaaaaaaaa,	%edi	xorl	%edi,		%edx	xorl	%edi,		%esi	rorl	$3,		%edx	rorl	$2,		%esi	movl	%esi,		4(%ebx)	movl	24(%esp),	%esi	movl	%edx,		(%ebx)	movl	28(%esp),	%edi	movl	32(%esp),	%eax	pushl	$0	pushl	%eax	pushl	%ebx	call	des_encrypt2	pushl	$1	pushl	%edi	pushl	%ebx	call	des_encrypt2	pushl	$0	pushl	%esi	pushl	%ebx	call	des_encrypt2	movl	(%ebx),		%edi	addl	$36,		%esp	movl	4(%ebx),	%esi	/* FP */	roll	$2,		%esi	roll	$3,		%edi	movl	%edi,		%eax	xorl	%esi,		%edi	andl	$0xaaaaaaaa,	%edi	xorl	%edi,		%eax	xorl	%edi,		%esi	roll	$23,		%eax	movl	%eax,		%edi	xorl	%esi,		%eax	andl	$0x03fc03fc,	%eax	xorl	%eax,		%edi	xorl	%eax,		%esi	roll	$10,		%edi	movl	%edi,		%eax	xorl	%esi,		%edi	andl	$0x33333333,	%edi	xorl	%edi,		%eax	xorl	%edi,		%esi	roll	$18,		%esi	movl	%esi,		%edi	xorl	%eax,		%esi	andl	$0xfff0000f,	%esi	xorl	%esi,		%edi	xorl	%esi,		%eax	roll	$12,		%edi	movl	%edi,		%esi	xorl	%eax,		%edi	andl	$0xf0f0f0f0,	%edi	xorl	%edi,		%esi	xorl	%edi,		%eax	rorl	$4,		%eax	movl	%eax,		(%ebx)	movl	%esi,		4(%ebx)	popl	%edi	popl	%esi	popl	%ebx	popl	%ebp	ret.des_decrypt3_end:	SIZE(des_decrypt3,.des_decrypt3_end-des_decrypt3).ident	"desasm.pl"

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?