	.file	"3423.c"
	.intel_syntax noprefix
	.text
	.globl	IP
	.data
	.align 32
	.type	IP, @object
	.size	IP, 64
IP:
	.ascii	":2*\"\032\022\n\002<4,$\034\024\f\004>6.&\036\026\016\006@80"
	.ascii	"( \030\020\b91)!\031\021\t\001;3+#\033\023\013\003=5-%\035\025"
	.ascii	"\r\005?7/'\037\027\017\007"
	.globl	IPI
	.align 32
	.type	IPI, @object
	.size	IPI, 64
IPI:
	.ascii	"(\b0\0208\030@ '\007/\0177\027?\037&\006.\0166\026>\036%\005"
	.ascii	"-\r5\025=\035$\004,\f4\024<\034#\003+\0133\023;\033\"\002*\n"
	.ascii	"2\022:\032!\001)\t1\0219\031"
	.globl	E
	.align 32
	.type	E, @object
	.size	E, 48
E:
	.ascii	" \001\002\003\004\005\004\005\006\007\b\t\b\t\n\013\f\r\f\r\016"
	.ascii	"\017\020\021\020\021\022\023\024\025\024\025\026\027\030\031"
	.ascii	"\030\031\032\033\034\035\034\035\036\037 \001"
	.globl	P
	.align 32
	.type	P, @object
	.size	P, 32
P:
	.ascii	"\020\007\024\025\035\f\034\021\001\017\027\032\005\022\037\n"
	.ascii	"\002\b\030\016 \033\003\t\023\r\036\006\026\013\004\031"
	.globl	S
	.align 32
	.type	S, @object
	.size	S, 512
S:
	.string	"\016\004\r\001\002\017\013\b\003\n\006\f\005\t"
	.ascii	"\007"
	.string	""
	.ascii	"\017\007\004\016\002\r\001\n\006\f\013\t\005\003\b"
	.string	"\004\001\016\b\r\006\002\013\017\f\t\007\003\n\005"
	.string	"\017\f\b\002\004\t\001\007\005\013\003\016\n"
	.ascii	"\006\r"
	.string	"\017\001\b\016\006\013\003\004\t\007\002\r\f"
	.ascii	"\005\n"
	.string	"\003\r\004\007\017\002\b\016\f"
	.ascii	"\001\n\006\t\013\005"
	.string	""
	.ascii	"\016\007\013\n\004\r\001\005\b\f\006\t\003\002\017"
	.string	"\r\b\n\001\003\017\004\002\013\006\007\f"
	.ascii	"\005\016\t"
	.string	"\n"
	.ascii	"\t\016\006\003\017\005\001\r\f\007\013\004\002\b"
	.string	"\r\007"
	.ascii	"\t\003\004\006\n\002\b\005\016\f\013\017\001"
	.string	"\r\006\004\t\b\017\003"
	.ascii	"\013\001\002\f\005\n\016\007"
	.string	"\001\n\r"
	.ascii	"\006\t\b\007\004\017\016\003\013\005\002\f"
	.string	"\007\r\016\003"
	.ascii	"\006\t\n\001\002\b\005\013\f\004\017"
	.string	"\r\b\013\005\006\017"
	.ascii	"\003\004\007\002\f\001\n\016\t"
	.string	"\n\006\t"
	.ascii	"\f\013\007\r\017\001\003\016\005\002\b\004"
	.string	"\003\017"
	.ascii	"\006\n\001\r\b\t\004\005\013\f\007\002\016"
	.string	"\002\f\004\001\007\n\013\006\b\005\003\017\r"
	.ascii	"\016\t"
	.string	"\016\013\002\f\004\007\r\001\005"
	.ascii	"\017\n\003\t\b\006"
	.string	"\004\002\001\013\n\r\007\b\017\t\f\005\006\003"
	.ascii	"\016"
	.string	"\013\b\f\007\001\016\002\r\006\017"
	.ascii	"\t\n\004\005\003"
	.string	"\f\001\n\017\t\002\006\b"
	.ascii	"\r\003\004\016\007\005\013"
	.string	"\n\017\004\002\007\f\t\005\006\001\r\016"
	.ascii	"\013\003\b"
	.string	"\t\016\017\005\002\b\f\003\007"
	.ascii	"\004\n\001\r\013\006"
	.string	"\004\003\002\f\t\005\017\n\013\016\001\007\006"
	.ascii	"\b\r"
	.string	"\004\013\002\016\017"
	.ascii	"\b\r\003\f\t\007\005\n\006\001"
	.string	"\r"
	.ascii	"\013\007\004\t\001\n\016\003\005\f\002\017\b\006"
	.string	"\001\004\013\r\f\003\007\016\n\017\006\b"
	.ascii	"\005\t\002"
	.string	"\006\013\r\b\001\004\n\007\t\005"
	.ascii	"\017\016\002\003\f"
	.string	"\r\002\b\004\006\017\013\001\n\t\003\016\005"
	.ascii	"\f\007"
	.string	"\001\017\r\b\n\003\007\004\f\005\006\013"
	.ascii	"\016\t\002"
	.string	"\007\013\004\001\t\f\016\002"
	.ascii	"\006\n\r\017\003\005\b"
	.string	"\002\001\016\007\004\n\b\r\017\f\t"
	.ascii	"\003\005\006\013"
	.globl	PC1_C
	.align 16
	.type	PC1_C, @object
	.size	PC1_C, 28
PC1_C:
	.ascii	"91)!\031\021\t\001:2*\"\032\022\n\002;3+#\033\023\013\003<4,"
	.ascii	"$"
	.globl	PC1_D
	.align 16
	.type	PC1_D, @object
	.size	PC1_D, 28
PC1_D:
	.ascii	"?7/'\037\027\017\007>6.&\036\026\016\006=5-%\035\025\r\005\034"
	.ascii	"\024\f\004"
	.globl	PC2
	.align 32
	.type	PC2, @object
	.size	PC2, 48
PC2:
	.ascii	"\016\021\013\030\001\005\003\034\017\006\025\n\027\023\f\004"
	.ascii	"\032\b\020\007\033\024\r\002)4\037%/7\036(3-!0,1'8\"5.*2$\035"
	.ascii	" "
	.text
	.globl	get_bit
	.type	get_bit, @function
get_bit:
.LFB6:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	DWORD PTR -20[rbp], edi
	mov	QWORD PTR -32[rbp], rsi
	mov	eax, DWORD PTR -20[rbp]
	sub	eax, 1
	sar	eax, 5
	mov	DWORD PTR -8[rbp], eax
	cmp	DWORD PTR -20[rbp], 32
	jg	.L2
	mov	eax, 32
	sub	eax, DWORD PTR -20[rbp]
	jmp	.L3
.L2:
	mov	eax, 64
	sub	eax, DWORD PTR -20[rbp]
.L3:
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -8[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	mov	eax, DWORD PTR -4[rbp]
	mov	ecx, eax
	sar	rdx, cl
	mov	rax, rdx
	and	eax, 1
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	get_bit, .-get_bit
	.globl	set_bit
	.type	set_bit, @function
set_bit:
.LFB7:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	DWORD PTR -20[rbp], edi
	mov	QWORD PTR -32[rbp], rsi
	mov	QWORD PTR -40[rbp], rdx
	mov	eax, DWORD PTR -20[rbp]
	sub	eax, 1
	sar	eax, 5
	mov	DWORD PTR -16[rbp], eax
	cmp	DWORD PTR -20[rbp], 32
	jg	.L6
	mov	eax, 32
	sub	eax, DWORD PTR -20[rbp]
	jmp	.L7
.L6:
	mov	eax, 64
	sub	eax, DWORD PTR -20[rbp]
.L7:
	mov	DWORD PTR -12[rbp], eax
	cmp	QWORD PTR -32[rbp], 1
	jne	.L8
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	mov	eax, DWORD PTR -12[rbp]
	mov	esi, 1
	mov	ecx, eax
	sal	rsi, cl
	mov	rcx, rsi
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	lea	rsi, 0[0+rax*8]
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rsi
	or	rdx, rcx
	mov	QWORD PTR [rax], rdx
	jmp	.L10
.L8:
	mov	eax, DWORD PTR -12[rbp]
	mov	edx, 1
	mov	ecx, eax
	sal	rdx, cl
	mov	rax, rdx
	mov	QWORD PTR -8[rbp], rax
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rdx
	mov	rdx, QWORD PTR [rax]
	mov	rax, QWORD PTR -8[rbp]
	not	rax
	mov	rcx, rax
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	lea	rsi, 0[0+rax*8]
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rsi
	and	rdx, rcx
	mov	QWORD PTR [rax], rdx
.L10:
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	set_bit, .-set_bit
	.globl	left_shift_28
	.type	left_shift_28, @function
left_shift_28:
.LFB8:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -40[rbp], rdi
	mov	DWORD PTR -44[rbp], esi
	mov	QWORD PTR -16[rbp], 1
	mov	QWORD PTR -8[rbp], 3
	cmp	DWORD PTR -44[rbp], 1
	jne	.L12
	mov	eax, 32
	sub	eax, DWORD PTR -44[rbp]
	mov	rdx, QWORD PTR -40[rbp]
	mov	ecx, eax
	sar	rdx, cl
	mov	rax, rdx
	and	rax, QWORD PTR -16[rbp]
	mov	QWORD PTR -24[rbp], rax
	jmp	.L13
.L12:
	mov	eax, 32
	sub	eax, DWORD PTR -44[rbp]
	mov	rdx, QWORD PTR -40[rbp]
	mov	ecx, eax
	sar	rdx, cl
	mov	rax, rdx
	and	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR -24[rbp], rax
.L13:
	mov	eax, DWORD PTR -44[rbp]
	mov	rdx, QWORD PTR -40[rbp]
	mov	ecx, eax
	sal	rdx, cl
	mov	rax, rdx
	and	eax, 4294967280
	mov	rdx, rax
	mov	rax, QWORD PTR -24[rbp]
	sal	rax, 4
	or	rax, rdx
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	left_shift_28, .-left_shift_28
	.globl	DES_key_schedule
	.type	DES_key_schedule, @function
DES_key_schedule:
.LFB9:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	rbx
	sub	rsp, 216
	.cfi_offset 3, -24
	mov	QWORD PTR -216[rbp], rdi
	mov	QWORD PTR -224[rbp], rsi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -24[rbp], rax
	xor	eax, eax
	mov	DWORD PTR -196[rbp], 1
	jmp	.L16
.L20:
	mov	eax, DWORD PTR -196[rbp]
	sub	eax, 1
	mov	DWORD PTR -188[rbp], eax
	cmp	DWORD PTR -196[rbp], 1
	je	.L17
	cmp	DWORD PTR -196[rbp], 2
	je	.L17
	cmp	DWORD PTR -196[rbp], 9
	je	.L17
	cmp	DWORD PTR -196[rbp], 16
	jne	.L18
.L17:
	mov	eax, DWORD PTR -188[rbp]
	cdqe
	mov	DWORD PTR -96[rbp+rax*4], 1
	jmp	.L19
.L18:
	mov	eax, DWORD PTR -188[rbp]
	cdqe
	mov	DWORD PTR -96[rbp+rax*4], 2
.L19:
	add	DWORD PTR -196[rbp], 1
.L16:
	cmp	DWORD PTR -196[rbp], 16
	jle	.L20
	mov	QWORD PTR -128[rbp], 0
	mov	rax, QWORD PTR -128[rbp]
	mov	QWORD PTR -144[rbp], rax
	mov	rax, QWORD PTR -144[rbp]
	mov	QWORD PTR -168[rbp], rax
	mov	rax, QWORD PTR -168[rbp]
	mov	QWORD PTR -176[rbp], rax
	mov	DWORD PTR -196[rbp], 1
	jmp	.L21
.L22:
	mov	eax, DWORD PTR -196[rbp]
	sub	eax, 1
	mov	DWORD PTR -188[rbp], eax
	mov	eax, 32
	sub	eax, DWORD PTR -196[rbp]
	mov	DWORD PTR -180[rbp], eax
	mov	eax, DWORD PTR -188[rbp]
	cdqe
	lea	rdx, PC1_C[rip]
	movzx	eax, BYTE PTR [rax+rdx]
	movsx	eax, al
	mov	rdx, QWORD PTR -224[rbp]
	mov	rsi, rdx
	mov	edi, eax
	call	get_bit
	mov	rdx, rax
	mov	eax, DWORD PTR -180[rbp]
	mov	ecx, eax
	sal	rdx, cl
	mov	rax, QWORD PTR -176[rbp]
	or	rax, rdx
	mov	QWORD PTR -176[rbp], rax
	mov	eax, DWORD PTR -188[rbp]
	cdqe
	lea	rdx, PC1_D[rip]
	movzx	eax, BYTE PTR [rax+rdx]
	movsx	eax, al
	mov	rdx, QWORD PTR -224[rbp]
	mov	rsi, rdx
	mov	edi, eax
	call	get_bit
	mov	rdx, rax
	mov	eax, DWORD PTR -180[rbp]
	mov	ecx, eax
	sal	rdx, cl
	mov	rax, QWORD PTR -144[rbp]
	or	rax, rdx
	mov	QWORD PTR -144[rbp], rax
	add	DWORD PTR -196[rbp], 1
.L21:
	cmp	DWORD PTR -196[rbp], 28
	jle	.L22
	mov	DWORD PTR -196[rbp], 1
	jmp	.L23
.L28:
	mov	eax, DWORD PTR -196[rbp]
	sub	eax, 1
	mov	DWORD PTR -188[rbp], eax
	mov	eax, DWORD PTR -188[rbp]
	cdqe
	mov	edx, DWORD PTR -96[rbp+rax*4]
	mov	rax, QWORD PTR -176[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	left_shift_28
	mov	QWORD PTR -160[rbp], rax
	mov	eax, DWORD PTR -188[rbp]
	cdqe
	mov	edx, DWORD PTR -96[rbp+rax*4]
	mov	rax, QWORD PTR -144[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	left_shift_28
	mov	QWORD PTR -128[rbp], rax
	mov	rax, QWORD PTR -160[rbp]
	mov	QWORD PTR -176[rbp], rax
	mov	rax, QWORD PTR -152[rbp]
	mov	QWORD PTR -168[rbp], rax
	mov	rax, QWORD PTR -128[rbp]
	mov	QWORD PTR -144[rbp], rax
	mov	rax, QWORD PTR -120[rbp]
	mov	QWORD PTR -136[rbp], rax
	mov	QWORD PTR -104[rbp], 0
	mov	rax, QWORD PTR -104[rbp]
	mov	QWORD PTR -112[rbp], rax
	mov	DWORD PTR -192[rbp], 1
	jmp	.L24
.L25:
	lea	rdx, -176[rbp]
	mov	eax, DWORD PTR -192[rbp]
	mov	rsi, rdx
	mov	edi, eax
	call	get_bit
	mov	rcx, rax
	lea	rdx, -112[rbp]
	mov	eax, DWORD PTR -192[rbp]
	mov	rsi, rcx
	mov	edi, eax
	call	set_bit
	mov	eax, DWORD PTR -192[rbp]
	add	eax, 28
	mov	DWORD PTR -184[rbp], eax
	lea	rdx, -144[rbp]
	mov	eax, DWORD PTR -192[rbp]
	mov	rsi, rdx
	mov	edi, eax
	call	get_bit
	mov	rcx, rax
	lea	rdx, -112[rbp]
	mov	eax, DWORD PTR -184[rbp]
	mov	rsi, rcx
	mov	edi, eax
	call	set_bit
	add	DWORD PTR -192[rbp], 1
.L24:
	cmp	DWORD PTR -192[rbp], 28
	jle	.L25
	mov	eax, DWORD PTR -188[rbp]
	cdqe
	sal	rax, 4
	mov	rdx, rax
	mov	rax, QWORD PTR -216[rbp]
	add	rax, rdx
	mov	QWORD PTR 8[rax], 0
	mov	DWORD PTR -192[rbp], 1
	jmp	.L26
.L27:
	mov	eax, DWORD PTR -188[rbp]
	cdqe
	sal	rax, 4
	mov	rdx, rax
	mov	rax, QWORD PTR -216[rbp]
	lea	rbx, [rdx+rax]
	mov	eax, DWORD PTR -192[rbp]
	sub	eax, 1
	cdqe
	lea	rdx, PC2[rip]
	movzx	eax, BYTE PTR [rax+rdx]
	movsx	eax, al
	lea	rdx, -112[rbp]
	mov	rsi, rdx
	mov	edi, eax
	call	get_bit
	mov	rcx, rax
	mov	eax, DWORD PTR -192[rbp]
	mov	rdx, rbx
	mov	rsi, rcx
	mov	edi, eax
	call	set_bit
	add	DWORD PTR -192[rbp], 1
.L26:
	cmp	DWORD PTR -192[rbp], 48
	jle	.L27
	add	DWORD PTR -196[rbp], 1
.L23:
	cmp	DWORD PTR -196[rbp], 16
	jle	.L28
	nop
	mov	rax, QWORD PTR -24[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L29
	call	__stack_chk_fail@PLT
.L29:
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE9:
	.size	DES_key_schedule, .-DES_key_schedule
	.globl	DES_reverse_key
	.type	DES_reverse_key, @function
DES_reverse_key:
.LFB10:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	DWORD PTR -8[rbp], 0
	jmp	.L31
.L32:
	mov	eax, 15
	sub	eax, DWORD PTR -8[rbp]
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -8[rbp]
	cdqe
	sal	rax, 4
	mov	rdx, rax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	mov	edx, DWORD PTR -4[rbp]
	movsx	rdx, edx
	mov	rcx, rdx
	sal	rcx, 4
	mov	rdx, QWORD PTR -32[rbp]
	add	rdx, rcx
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR [rdx], rax
	mov	eax, DWORD PTR -8[rbp]
	cdqe
	sal	rax, 4
	mov	rdx, rax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	mov	edx, DWORD PTR -4[rbp]
	movsx	rdx, edx
	mov	rcx, rdx
	sal	rcx, 4
	mov	rdx, QWORD PTR -32[rbp]
	add	rdx, rcx
	mov	rax, QWORD PTR 8[rax]
	mov	QWORD PTR 8[rdx], rax
	add	DWORD PTR -8[rbp], 1
.L31:
	cmp	DWORD PTR -8[rbp], 15
	jle	.L32
	nop
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE10:
	.size	DES_reverse_key, .-DES_reverse_key
	.globl	DES
	.type	DES, @function
DES:
.LFB11:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 384
	mov	QWORD PTR -360[rbp], rdi
	mov	QWORD PTR -368[rbp], rsi
	mov	QWORD PTR -376[rbp], rdx
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	DWORD PTR -344[rbp], 1
	jmp	.L34
.L35:
	mov	eax, DWORD PTR -344[rbp]
	sub	eax, 1
	cdqe
	lea	rdx, IP[rip]
	movzx	eax, BYTE PTR [rax+rdx]
	movsx	eax, al
	mov	rdx, QWORD PTR -368[rbp]
	mov	rsi, rdx
	mov	edi, eax
	call	get_bit
	mov	rcx, rax
	lea	rdx, -160[rbp]
	mov	eax, DWORD PTR -344[rbp]
	mov	rsi, rcx
	mov	edi, eax
	call	set_bit
	add	DWORD PTR -344[rbp], 1
.L34:
	cmp	DWORD PTR -344[rbp], 64
	jle	.L35
	mov	rax, QWORD PTR -160[rbp]
	mov	QWORD PTR -288[rbp], rax
	mov	rax, QWORD PTR -152[rbp]
	mov	QWORD PTR -272[rbp], rax
	mov	QWORD PTR -264[rbp], 0
	mov	rax, QWORD PTR -264[rbp]
	mov	QWORD PTR -280[rbp], rax
	mov	DWORD PTR -344[rbp], 1
	jmp	.L36
.L43:
	mov	rax, QWORD PTR -272[rbp]
	mov	QWORD PTR -256[rbp], rax
	mov	rax, QWORD PTR -264[rbp]
	mov	QWORD PTR -248[rbp], rax
	mov	DWORD PTR -340[rbp], 1
	jmp	.L37
.L38:
	mov	eax, DWORD PTR -340[rbp]
	sub	eax, 1
	cdqe
	lea	rdx, E[rip]
	movzx	eax, BYTE PTR [rax+rdx]
	movsx	eax, al
	lea	rdx, -272[rbp]
	mov	rsi, rdx
	mov	edi, eax
	call	get_bit
	mov	rcx, rax
	lea	rdx, -224[rbp]
	mov	eax, DWORD PTR -340[rbp]
	mov	rsi, rcx
	mov	edi, eax
	call	set_bit
	add	DWORD PTR -340[rbp], 1
.L37:
	cmp	DWORD PTR -340[rbp], 48
	jle	.L38
	mov	eax, DWORD PTR -344[rbp]
	sub	eax, 1
	mov	DWORD PTR -336[rbp], eax
	mov	rdx, QWORD PTR -224[rbp]
	mov	eax, DWORD PTR -336[rbp]
	cdqe
	sal	rax, 4
	mov	rcx, rax
	mov	rax, QWORD PTR -360[rbp]
	add	rax, rcx
	mov	rax, QWORD PTR [rax]
	xor	rax, rdx
	mov	QWORD PTR -208[rbp], rax
	mov	rdx, QWORD PTR -216[rbp]
	mov	eax, DWORD PTR -336[rbp]
	cdqe
	sal	rax, 4
	mov	rcx, rax
	mov	rax, QWORD PTR -360[rbp]
	add	rax, rcx
	mov	rax, QWORD PTR 8[rax]
	xor	rax, rdx
	and	eax, 4294901760
	mov	QWORD PTR -200[rbp], rax
	mov	rax, QWORD PTR -208[rbp]
	sar	rax, 26
	and	eax, 63
	mov	QWORD PTR -144[rbp], rax
	mov	rax, QWORD PTR -208[rbp]
	sar	rax, 20
	and	eax, 63
	mov	QWORD PTR -136[rbp], rax
	mov	rax, QWORD PTR -208[rbp]
	sar	rax, 14
	and	eax, 63
	mov	QWORD PTR -128[rbp], rax
	mov	rax, QWORD PTR -208[rbp]
	sar	rax, 8
	and	eax, 63
	mov	QWORD PTR -120[rbp], rax
	mov	rax, QWORD PTR -208[rbp]
	sar	rax, 2
	and	eax, 63
	mov	QWORD PTR -112[rbp], rax
	mov	rax, QWORD PTR -208[rbp]
	sal	rax, 4
	and	eax, 48
	mov	rdx, rax
	mov	rax, QWORD PTR -200[rbp]
	sar	rax, 28
	and	eax, 15
	or	rax, rdx
	mov	QWORD PTR -104[rbp], rax
	mov	rax, QWORD PTR -200[rbp]
	sar	rax, 22
	and	eax, 63
	mov	QWORD PTR -96[rbp], rax
	mov	rax, QWORD PTR -200[rbp]
	sar	rax, 16
	and	eax, 63
	mov	QWORD PTR -88[rbp], rax
	mov	DWORD PTR -340[rbp], 0
	jmp	.L39
.L40:
	mov	eax, DWORD PTR -340[rbp]
	cdqe
	mov	rax, QWORD PTR -144[rbp+rax*8]
	mov	DWORD PTR -332[rbp], eax
	mov	eax, DWORD PTR -332[rbp]
	sar	eax, 5
	mov	DWORD PTR -328[rbp], eax
	mov	eax, DWORD PTR -332[rbp]
	sar	eax, 4
	and	eax, 1
	mov	DWORD PTR -324[rbp], eax
	mov	eax, DWORD PTR -332[rbp]
	sar	eax, 3
	and	eax, 1
	mov	DWORD PTR -320[rbp], eax
	mov	eax, DWORD PTR -332[rbp]
	sar	eax, 2
	and	eax, 1
	mov	DWORD PTR -316[rbp], eax
	mov	eax, DWORD PTR -332[rbp]
	sar	eax
	and	eax, 1
	mov	DWORD PTR -312[rbp], eax
	mov	eax, DWORD PTR -332[rbp]
	and	eax, 1
	mov	DWORD PTR -308[rbp], eax
	mov	eax, DWORD PTR -328[rbp]
	lea	edx, [rax+rax]
	mov	eax, DWORD PTR -308[rbp]
	add	eax, edx
	mov	DWORD PTR -304[rbp], eax
	mov	eax, DWORD PTR -324[rbp]
	lea	edx, [rax+rax]
	mov	eax, DWORD PTR -320[rbp]
	add	eax, edx
	lea	edx, [rax+rax]
	mov	eax, DWORD PTR -316[rbp]
	add	eax, edx
	lea	edx, [rax+rax]
	mov	eax, DWORD PTR -312[rbp]
	add	eax, edx
	mov	DWORD PTR -300[rbp], eax
	mov	eax, DWORD PTR -300[rbp]
	movsx	rcx, eax
	mov	eax, DWORD PTR -340[rbp]
	cdqe
	mov	edx, DWORD PTR -304[rbp]
	movsx	rdx, edx
	sal	rax, 2
	add	rax, rdx
	sal	rax, 4
	lea	rdx, [rax+rcx]
	lea	rax, S[rip]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movsx	rdx, al
	mov	eax, DWORD PTR -340[rbp]
	cdqe
	mov	QWORD PTR -80[rbp+rax*8], rdx
	add	DWORD PTR -340[rbp], 1
.L39:
	cmp	DWORD PTR -340[rbp], 7
	jle	.L40
	mov	rax, QWORD PTR -80[rbp]
	sal	rax, 28
	mov	rdx, rax
	mov	rax, QWORD PTR -72[rbp]
	sal	rax, 24
	or	rdx, rax
	mov	rax, QWORD PTR -64[rbp]
	sal	rax, 20
	or	rdx, rax
	mov	rax, QWORD PTR -56[rbp]
	sal	rax, 16
	or	rdx, rax
	mov	rax, QWORD PTR -48[rbp]
	sal	rax, 12
	or	rdx, rax
	mov	rax, QWORD PTR -40[rbp]
	sal	rax, 8
	or	rdx, rax
	mov	rax, QWORD PTR -32[rbp]
	sal	rax, 4
	or	rdx, rax
	mov	rax, QWORD PTR -24[rbp]
	or	rax, rdx
	mov	QWORD PTR -296[rbp], rax
	mov	rax, QWORD PTR -296[rbp]
	mov	QWORD PTR -192[rbp], rax
	mov	QWORD PTR -184[rbp], 0
	mov	DWORD PTR -340[rbp], 1
	jmp	.L41
.L42:
	mov	eax, DWORD PTR -340[rbp]
	sub	eax, 1
	cdqe
	lea	rdx, P[rip]
	movzx	eax, BYTE PTR [rax+rdx]
	movsx	eax, al
	lea	rdx, -192[rbp]
	mov	rsi, rdx
	mov	edi, eax
	call	get_bit
	mov	rcx, rax
	lea	rdx, -176[rbp]
	mov	eax, DWORD PTR -340[rbp]
	mov	rsi, rcx
	mov	edi, eax
	call	set_bit
	add	DWORD PTR -340[rbp], 1
.L41:
	cmp	DWORD PTR -340[rbp], 32
	jle	.L42
	mov	rdx, QWORD PTR -288[rbp]
	mov	rax, QWORD PTR -176[rbp]
	xor	rax, rdx
	mov	QWORD PTR -240[rbp], rax
	mov	rax, QWORD PTR -256[rbp]
	mov	QWORD PTR -288[rbp], rax
	mov	rax, QWORD PTR -240[rbp]
	mov	QWORD PTR -272[rbp], rax
	mov	QWORD PTR -232[rbp], 0
	mov	rax, QWORD PTR -232[rbp]
	mov	QWORD PTR -248[rbp], rax
	add	DWORD PTR -344[rbp], 1
.L36:
	cmp	DWORD PTR -344[rbp], 16
	jle	.L43
	mov	DWORD PTR -344[rbp], 1
	jmp	.L44
.L45:
	lea	rdx, -240[rbp]
	mov	eax, DWORD PTR -344[rbp]
	mov	rsi, rdx
	mov	edi, eax
	call	get_bit
	mov	rcx, rax
	lea	rdx, -160[rbp]
	mov	eax, DWORD PTR -344[rbp]
	mov	rsi, rcx
	mov	edi, eax
	call	set_bit
	mov	eax, DWORD PTR -344[rbp]
	add	eax, 32
	mov	DWORD PTR -340[rbp], eax
	lea	rdx, -256[rbp]
	mov	eax, DWORD PTR -344[rbp]
	mov	rsi, rdx
	mov	edi, eax
	call	get_bit
	mov	rcx, rax
	lea	rdx, -160[rbp]
	mov	eax, DWORD PTR -340[rbp]
	mov	rsi, rcx
	mov	edi, eax
	call	set_bit
	add	DWORD PTR -344[rbp], 1
.L44:
	cmp	DWORD PTR -344[rbp], 32
	jle	.L45
	mov	DWORD PTR -344[rbp], 1
	jmp	.L46
.L47:
	mov	eax, DWORD PTR -344[rbp]
	sub	eax, 1
	cdqe
	lea	rdx, IPI[rip]
	movzx	eax, BYTE PTR [rax+rdx]
	movsx	eax, al
	lea	rdx, -160[rbp]
	mov	rsi, rdx
	mov	edi, eax
	call	get_bit
	mov	rcx, rax
	mov	rdx, QWORD PTR -376[rbp]
	mov	eax, DWORD PTR -344[rbp]
	mov	rsi, rcx
	mov	edi, eax
	call	set_bit
	add	DWORD PTR -344[rbp], 1
.L46:
	cmp	DWORD PTR -344[rbp], 64
	jle	.L47
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L48
	call	__stack_chk_fail@PLT
.L48:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE11:
	.size	DES, .-DES
	.globl	triple_DES_decrypt
	.type	triple_DES_decrypt, @function
triple_DES_decrypt:
.LFB12:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 96
	mov	QWORD PTR -56[rbp], rdi
	mov	QWORD PTR -64[rbp], rsi
	mov	QWORD PTR -72[rbp], rdx
	mov	QWORD PTR -80[rbp], rcx
	mov	QWORD PTR -88[rbp], r8
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	lea	rdx, -48[rbp]
	mov	rcx, QWORD PTR -88[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	DES
	lea	rdx, -32[rbp]
	lea	rcx, -48[rbp]
	mov	rax, QWORD PTR -64[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	DES
	mov	rdx, QWORD PTR -80[rbp]
	lea	rcx, -32[rbp]
	mov	rax, QWORD PTR -56[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	DES
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L50
	call	__stack_chk_fail@PLT
.L50:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE12:
	.size	triple_DES_decrypt, .-triple_DES_decrypt
	.globl	triple_DES_encrypt
	.type	triple_DES_encrypt, @function
triple_DES_encrypt:
.LFB13:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 96
	mov	QWORD PTR -56[rbp], rdi
	mov	QWORD PTR -64[rbp], rsi
	mov	QWORD PTR -72[rbp], rdx
	mov	QWORD PTR -80[rbp], rcx
	mov	QWORD PTR -88[rbp], r8
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	lea	rdx, -48[rbp]
	mov	rcx, QWORD PTR -80[rbp]
	mov	rax, QWORD PTR -56[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	DES
	lea	rdx, -32[rbp]
	lea	rcx, -48[rbp]
	mov	rax, QWORD PTR -64[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	DES
	mov	rdx, QWORD PTR -88[rbp]
	lea	rcx, -32[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	DES
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L52
	call	__stack_chk_fail@PLT
.L52:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE13:
	.size	triple_DES_encrypt, .-triple_DES_encrypt
	.section	.rodata
.LC0:
	.string	"plaintext[0]: %ld\n"
.LC1:
	.string	"plaintext[1]: %ld\n"
.LC2:
	.string	"ciphertext[0]: %ld\n"
.LC3:
	.string	"ciphertext[1]: %ld\n"
	.text
	.globl	test_triple_DES
	.type	test_triple_DES, @function
test_triple_DES:
.LFB14:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 1632
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	QWORD PTR -1632[rbp], 0
	mov	QWORD PTR -1624[rbp], 1
	mov	QWORD PTR -1616[rbp], 2
	mov	QWORD PTR -1608[rbp], 3
	mov	QWORD PTR -1600[rbp], 4
	mov	QWORD PTR -1592[rbp], 5
	mov	QWORD PTR -1584[rbp], 0
	mov	QWORD PTR -1576[rbp], 1
	lea	rdx, -1632[rbp]
	lea	rax, -784[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	DES_key_schedule
	lea	rdx, -1616[rbp]
	lea	rax, -528[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	DES_key_schedule
	lea	rdx, -1600[rbp]
	lea	rax, -272[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	DES_key_schedule
	lea	rdx, -1552[rbp]
	lea	rax, -784[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	DES_reverse_key
	lea	rdx, -1296[rbp]
	lea	rax, -528[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	DES_reverse_key
	lea	rdx, -1040[rbp]
	lea	rax, -272[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	DES_reverse_key
	mov	rax, QWORD PTR -1584[rbp]
	mov	rsi, rax
	lea	rdi, .LC0[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rax, QWORD PTR -1576[rbp]
	mov	rsi, rax
	lea	rdi, .LC1[rip]
	mov	eax, 0
	call	printf@PLT
	lea	rdi, -1568[rbp]
	lea	rcx, -1584[rbp]
	lea	rdx, -272[rbp]
	lea	rsi, -1296[rbp]
	lea	rax, -784[rbp]
	mov	r8, rdi
	mov	rdi, rax
	call	triple_DES_encrypt
	mov	rax, QWORD PTR -1568[rbp]
	mov	rsi, rax
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rax, QWORD PTR -1560[rbp]
	mov	rsi, rax
	lea	rdi, .LC3[rip]
	mov	eax, 0
	call	printf@PLT
	lea	rdi, -1568[rbp]
	lea	rcx, -1584[rbp]
	lea	rdx, -1040[rbp]
	lea	rsi, -528[rbp]
	lea	rax, -1552[rbp]
	mov	r8, rdi
	mov	rdi, rax
	call	triple_DES_decrypt
	mov	rax, QWORD PTR -1584[rbp]
	mov	rsi, rax
	lea	rdi, .LC0[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rax, QWORD PTR -1576[rbp]
	mov	rsi, rax
	lea	rdi, .LC1[rip]
	mov	eax, 0
	call	printf@PLT
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L54
	call	__stack_chk_fail@PLT
.L54:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE14:
	.size	test_triple_DES, .-test_triple_DES
	.globl	triple_DES_CBC_decrypt
	.type	triple_DES_CBC_decrypt, @function
triple_DES_CBC_decrypt:
.LFB15:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 1424
	mov	QWORD PTR -1368[rbp], rdi
	mov	QWORD PTR -1376[rbp], rsi
	mov	QWORD PTR -1384[rbp], rdx
	mov	QWORD PTR -1392[rbp], rcx
	mov	QWORD PTR -1400[rbp], r8
	mov	QWORD PTR -1408[rbp], r9
	mov	rax, QWORD PTR 16[rbp]
	mov	QWORD PTR -1416[rbp], rax
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	rdx, QWORD PTR -1376[rbp]
	lea	rax, -784[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	DES_key_schedule
	mov	rdx, QWORD PTR -1384[rbp]
	lea	rax, -528[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	DES_key_schedule
	mov	rdx, QWORD PTR -1392[rbp]
	lea	rax, -272[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	DES_key_schedule
	lea	rdx, -1296[rbp]
	lea	rax, -784[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	DES_reverse_key
	lea	rdx, -1040[rbp]
	lea	rax, -272[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	DES_reverse_key
	mov	rax, QWORD PTR -1368[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -1344[rbp], rax
	mov	rax, QWORD PTR -1368[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	QWORD PTR -1336[rbp], rax
	mov	QWORD PTR -1352[rbp], 0
	jmp	.L56
.L57:
	mov	rax, QWORD PTR -1352[rbp]
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -1416[rbp]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -1328[rbp], rax
	mov	rax, QWORD PTR -1352[rbp]
	add	rax, 1
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -1416[rbp]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -1320[rbp], rax
	lea	rdi, -1328[rbp]
	lea	rcx, -1312[rbp]
	lea	rdx, -1040[rbp]
	lea	rsi, -528[rbp]
	lea	rax, -1296[rbp]
	mov	r8, rdi
	mov	rdi, rax
	call	triple_DES_decrypt
	mov	rcx, QWORD PTR -1344[rbp]
	mov	rdx, QWORD PTR -1312[rbp]
	mov	rax, QWORD PTR -1352[rbp]
	lea	rsi, 0[0+rax*8]
	mov	rax, QWORD PTR -1408[rbp]
	add	rax, rsi
	xor	rdx, rcx
	mov	QWORD PTR [rax], rdx
	mov	rcx, QWORD PTR -1336[rbp]
	mov	rdx, QWORD PTR -1304[rbp]
	mov	rax, QWORD PTR -1352[rbp]
	add	rax, 1
	lea	rsi, 0[0+rax*8]
	mov	rax, QWORD PTR -1408[rbp]
	add	rax, rsi
	xor	rdx, rcx
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -1328[rbp]
	mov	QWORD PTR -1344[rbp], rax
	mov	rax, QWORD PTR -1320[rbp]
	mov	QWORD PTR -1336[rbp], rax
	add	QWORD PTR -1352[rbp], 2
.L56:
	mov	rax, QWORD PTR -1352[rbp]
	cmp	rax, QWORD PTR -1400[rbp]
	jl	.L57
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L58
	call	__stack_chk_fail@PLT
.L58:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE15:
	.size	triple_DES_CBC_decrypt, .-triple_DES_CBC_decrypt
	.globl	triple_DES_CBC_encrypt
	.type	triple_DES_CBC_encrypt, @function
triple_DES_CBC_encrypt:
.LFB16:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 1152
	mov	QWORD PTR -1096[rbp], rdi
	mov	QWORD PTR -1104[rbp], rsi
	mov	QWORD PTR -1112[rbp], rdx
	mov	QWORD PTR -1120[rbp], rcx
	mov	QWORD PTR -1128[rbp], r8
	mov	QWORD PTR -1136[rbp], r9
	mov	rax, QWORD PTR 16[rbp]
	mov	QWORD PTR -1144[rbp], rax
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	rdx, QWORD PTR -1104[rbp]
	lea	rax, -784[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	DES_key_schedule
	mov	rdx, QWORD PTR -1112[rbp]
	lea	rax, -528[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	DES_key_schedule
	mov	rdx, QWORD PTR -1120[rbp]
	lea	rax, -272[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	DES_key_schedule
	lea	rdx, -1040[rbp]
	lea	rax, -528[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	DES_reverse_key
	mov	rax, QWORD PTR -1096[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -1072[rbp], rax
	mov	rax, QWORD PTR -1096[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	QWORD PTR -1064[rbp], rax
	mov	QWORD PTR -1080[rbp], 0
	jmp	.L60
.L61:
	mov	rdx, QWORD PTR -1072[rbp]
	mov	rax, QWORD PTR -1080[rbp]
	lea	rcx, 0[0+rax*8]
	mov	rax, QWORD PTR -1136[rbp]
	add	rax, rcx
	mov	rax, QWORD PTR [rax]
	xor	rax, rdx
	mov	QWORD PTR -1056[rbp], rax
	mov	rdx, QWORD PTR -1064[rbp]
	mov	rax, QWORD PTR -1080[rbp]
	add	rax, 1
	lea	rcx, 0[0+rax*8]
	mov	rax, QWORD PTR -1136[rbp]
	add	rax, rcx
	mov	rax, QWORD PTR [rax]
	xor	rax, rdx
	mov	QWORD PTR -1048[rbp], rax
	lea	rdi, -1072[rbp]
	lea	rcx, -1056[rbp]
	lea	rdx, -272[rbp]
	lea	rsi, -1040[rbp]
	lea	rax, -784[rbp]
	mov	r8, rdi
	mov	rdi, rax
	call	triple_DES_encrypt
	mov	rax, QWORD PTR -1080[rbp]
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -1144[rbp]
	add	rdx, rax
	mov	rax, QWORD PTR -1072[rbp]
	mov	QWORD PTR [rdx], rax
	mov	rax, QWORD PTR -1080[rbp]
	add	rax, 1
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -1144[rbp]
	add	rdx, rax
	mov	rax, QWORD PTR -1064[rbp]
	mov	QWORD PTR [rdx], rax
	add	QWORD PTR -1080[rbp], 2
.L60:
	mov	rax, QWORD PTR -1080[rbp]
	cmp	rax, QWORD PTR -1128[rbp]
	jl	.L61
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L62
	call	__stack_chk_fail@PLT
.L62:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE16:
	.size	triple_DES_CBC_encrypt, .-triple_DES_CBC_encrypt
	.section	.rodata
.LC4:
	.string	"plaintext[%ld]: %ld  "
.LC5:
	.string	"plaintext[%ld]: %ld\n"
	.text
	.globl	test_triple_DES_CBC
	.type	test_triple_DES_CBC, @function
test_triple_DES_CBC:
.LFB17:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 288
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	QWORD PTR -272[rbp], 6
	mov	QWORD PTR -264[rbp], 7
	mov	QWORD PTR -256[rbp], 0
	mov	QWORD PTR -248[rbp], 1
	mov	QWORD PTR -240[rbp], 2
	mov	QWORD PTR -232[rbp], 3
	mov	QWORD PTR -224[rbp], 4
	mov	QWORD PTR -216[rbp], 5
	mov	QWORD PTR -280[rbp], 8
	lea	r9, -208[rbp]
	mov	r8, QWORD PTR -280[rbp]
	lea	rcx, -224[rbp]
	lea	rdx, -240[rbp]
	lea	rsi, -256[rbp]
	lea	rax, -272[rbp]
	sub	rsp, 8
	lea	rdi, -144[rbp]
	push	rdi
	mov	rdi, rax
	call	triple_DES_CBC_encrypt
	add	rsp, 16
	lea	r9, -80[rbp]
	mov	r8, QWORD PTR -280[rbp]
	lea	rcx, -224[rbp]
	lea	rdx, -240[rbp]
	lea	rsi, -256[rbp]
	lea	rax, -272[rbp]
	sub	rsp, 8
	lea	rdi, -144[rbp]
	push	rdi
	mov	rdi, rax
	call	triple_DES_CBC_decrypt
	add	rsp, 16
	mov	QWORD PTR -288[rbp], 0
	jmp	.L64
.L65:
	mov	rax, QWORD PTR -288[rbp]
	mov	rdx, QWORD PTR -208[rbp+rax*8]
	mov	rax, QWORD PTR -288[rbp]
	mov	rsi, rax
	lea	rdi, .LC4[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rax, QWORD PTR -288[rbp]
	mov	rdx, QWORD PTR -80[rbp+rax*8]
	mov	rax, QWORD PTR -288[rbp]
	mov	rsi, rax
	lea	rdi, .LC5[rip]
	mov	eax, 0
	call	printf@PLT
	add	QWORD PTR -288[rbp], 1
.L64:
	mov	rax, QWORD PTR -288[rbp]
	cmp	rax, QWORD PTR -280[rbp]
	jl	.L65
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L66
	call	__stack_chk_fail@PLT
.L66:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE17:
	.size	test_triple_DES_CBC, .-test_triple_DES_CBC
	.globl	main
	.type	main, @function
main:
.LFB18:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	call	test_triple_DES
	call	test_triple_DES_CBC
	mov	eax, 0
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE18:
	.size	main, .-main
	.ident	"GCC: (Ubuntu 10.5.0-1ubuntu1~20.04) 10.5.0"
	.section	.note.GNU-stack,"",@progbits
	.section	.note.gnu.property,"a"
	.align 8
	.long	 1f - 0f
	.long	 4f - 1f
	.long	 5
0:
	.string	 "GNU"
1:
	.align 8
	.long	 0xc0000002
	.long	 3f - 2f
2:
	.long	 0x3
3:
	.align 8
4:

	.arch armv5t
	.eabi_attribute 20, 1
	.eabi_attribute 21, 1
	.eabi_attribute 23, 3
	.eabi_attribute 24, 1
	.eabi_attribute 25, 1
	.eabi_attribute 26, 2
	.eabi_attribute 30, 6
	.eabi_attribute 34, 0
	.eabi_attribute 18, 4
	.file	"3423.c"
	.text
	.global	IP
	.data
	.align	2
	.type	IP, %object
	.size	IP, 64
IP:
	.ascii	":2*\"\032\022\012\002<4,$\034\024\014\004>6.&\036\026"
	.ascii	"\016\006@80( \030\020\01091)!\031\021\011\001;3+#\033"
	.ascii	"\023\013\003=5-%\035\025\015\005?7/'\037\027\017\007"
	.global	IPI
	.align	2
	.type	IPI, %object
	.size	IPI, 64
IPI:
	.ascii	"(\0100\0208\030@ '\007/\0177\027?\037&\006.\0166\026"
	.ascii	">\036%\005-\0155\025=\035$\004,\0144\024<\034#\003+"
	.ascii	"\0133\023;\033\"\002*\0122\022:\032!\001)\0111\0219"
	.ascii	"\031"
	.global	E
	.align	2
	.type	E, %object
	.size	E, 48
E:
	.ascii	" \001\002\003\004\005\004\005\006\007\010\011\010\011"
	.ascii	"\012\013\014\015\014\015\016\017\020\021\020\021\022"
	.ascii	"\023\024\025\024\025\026\027\030\031\030\031\032\033"
	.ascii	"\034\035\034\035\036\037 \001"
	.global	P
	.align	2
	.type	P, %object
	.size	P, 32
P:
	.ascii	"\020\007\024\025\035\014\034\021\001\017\027\032\005"
	.ascii	"\022\037\012\002\010\030\016 \033\003\011\023\015\036"
	.ascii	"\006\026\013\004\031"
	.global	S
	.align	2
	.type	S, %object
	.size	S, 512
S:
	.ascii	"\016\004\015\001\002\017\013\010\003\012\006\014\005"
	.ascii	"\011\000\007"
	.ascii	"\000\017\007\004\016\002\015\001\012\006\014\013\011"
	.ascii	"\005\003\010"
	.ascii	"\004\001\016\010\015\006\002\013\017\014\011\007\003"
	.ascii	"\012\005\000"
	.ascii	"\017\014\010\002\004\011\001\007\005\013\003\016\012"
	.ascii	"\000\006\015"
	.ascii	"\017\001\010\016\006\013\003\004\011\007\002\015\014"
	.ascii	"\000\005\012"
	.ascii	"\003\015\004\007\017\002\010\016\014\000\001\012\006"
	.ascii	"\011\013\005"
	.ascii	"\000\016\007\013\012\004\015\001\005\010\014\006\011"
	.ascii	"\003\002\017"
	.ascii	"\015\010\012\001\003\017\004\002\013\006\007\014\000"
	.ascii	"\005\016\011"
	.ascii	"\012\000\011\016\006\003\017\005\001\015\014\007\013"
	.ascii	"\004\002\010"
	.ascii	"\015\007\000\011\003\004\006\012\002\010\005\016\014"
	.ascii	"\013\017\001"
	.ascii	"\015\006\004\011\010\017\003\000\013\001\002\014\005"
	.ascii	"\012\016\007"
	.ascii	"\001\012\015\000\006\011\010\007\004\017\016\003\013"
	.ascii	"\005\002\014"
	.ascii	"\007\015\016\003\000\006\011\012\001\002\010\005\013"
	.ascii	"\014\004\017"
	.ascii	"\015\010\013\005\006\017\000\003\004\007\002\014\001"
	.ascii	"\012\016\011"
	.ascii	"\012\006\011\000\014\013\007\015\017\001\003\016\005"
	.ascii	"\002\010\004"
	.ascii	"\003\017\000\006\012\001\015\010\011\004\005\013\014"
	.ascii	"\007\002\016"
	.ascii	"\002\014\004\001\007\012\013\006\010\005\003\017\015"
	.ascii	"\000\016\011"
	.ascii	"\016\013\002\014\004\007\015\001\005\000\017\012\003"
	.ascii	"\011\010\006"
	.ascii	"\004\002\001\013\012\015\007\010\017\011\014\005\006"
	.ascii	"\003\000\016"
	.ascii	"\013\010\014\007\001\016\002\015\006\017\000\011\012"
	.ascii	"\004\005\003"
	.ascii	"\014\001\012\017\011\002\006\010\000\015\003\004\016"
	.ascii	"\007\005\013"
	.ascii	"\012\017\004\002\007\014\011\005\006\001\015\016\000"
	.ascii	"\013\003\010"
	.ascii	"\011\016\017\005\002\010\014\003\007\000\004\012\001"
	.ascii	"\015\013\006"
	.ascii	"\004\003\002\014\011\005\017\012\013\016\001\007\006"
	.ascii	"\000\010\015"
	.ascii	"\004\013\002\016\017\000\010\015\003\014\011\007\005"
	.ascii	"\012\006\001"
	.ascii	"\015\000\013\007\004\011\001\012\016\003\005\014\002"
	.ascii	"\017\010\006"
	.ascii	"\001\004\013\015\014\003\007\016\012\017\006\010\000"
	.ascii	"\005\011\002"
	.ascii	"\006\013\015\010\001\004\012\007\011\005\000\017\016"
	.ascii	"\002\003\014"
	.ascii	"\015\002\010\004\006\017\013\001\012\011\003\016\005"
	.ascii	"\000\014\007"
	.ascii	"\001\017\015\010\012\003\007\004\014\005\006\013\000"
	.ascii	"\016\011\002"
	.ascii	"\007\013\004\001\011\014\016\002\000\006\012\015\017"
	.ascii	"\003\005\010"
	.ascii	"\002\001\016\007\004\012\010\015\017\014\011\000\003"
	.ascii	"\005\006\013"
	.global	PC1_C
	.align	2
	.type	PC1_C, %object
	.size	PC1_C, 28
PC1_C:
	.ascii	"91)!\031\021\011\001:2*\"\032\022\012\002;3+#\033\023"
	.ascii	"\013\003<4,$"
	.global	PC1_D
	.align	2
	.type	PC1_D, %object
	.size	PC1_D, 28
PC1_D:
	.ascii	"?7/'\037\027\017\007>6.&\036\026\016\006=5-%\035\025"
	.ascii	"\015\005\034\024\014\004"
	.global	PC2
	.align	2
	.type	PC2, %object
	.size	PC2, 48
PC2:
	.ascii	"\016\021\013\030\001\005\003\034\017\006\025\012\027"
	.ascii	"\023\014\004\032\010\020\007\033\024\015\002)4\037%"
	.ascii	"/7\036(3-!0,1'8\"5.*2$\035 "
	.text
	.align	2
	.global	get_bit
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_bit, %function
get_bit:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #20
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	ldr	r3, [fp, #-16]
	sub	r3, r3, #1
	asr	r3, r3, #5
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-16]
	cmp	r3, #32
	bgt	.L2
	ldr	r3, [fp, #-16]
	rsb	r3, r3, #32
	b	.L3
.L2:
	ldr	r3, [fp, #-16]
	rsb	r3, r3, #64
.L3:
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-12]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-20]
	add	r3, r2, r3
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	asr	r3, r2, r3
	and	r3, r3, #1
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	get_bit, .-get_bit
	.align	2
	.global	set_bit
	.syntax unified
	.arm
	.fpu softvfp
	.type	set_bit, %function
set_bit:
	@ args = 0, pretend = 0, frame = 32
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #36
	str	r0, [fp, #-24]
	str	r1, [fp, #-28]
	str	r2, [fp, #-32]
	ldr	r3, [fp, #-24]
	sub	r3, r3, #1
	asr	r3, r3, #5
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-24]
	cmp	r3, #32
	bgt	.L6
	ldr	r3, [fp, #-24]
	rsb	r3, r3, #32
	b	.L7
.L6:
	ldr	r3, [fp, #-24]
	rsb	r3, r3, #64
.L7:
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-28]
	cmp	r3, #1
	bne	.L8
	ldr	r3, [fp, #-16]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-32]
	add	r3, r2, r3
	ldr	r1, [r3]
	mov	r2, #1
	ldr	r3, [fp, #-12]
	lsl	r2, r2, r3
	ldr	r3, [fp, #-16]
	lsl	r3, r3, #2
	ldr	r0, [fp, #-32]
	add	r3, r0, r3
	orr	r2, r1, r2
	str	r2, [r3]
	b	.L10
.L8:
	mov	r2, #1
	ldr	r3, [fp, #-12]
	lsl	r3, r2, r3
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-16]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-32]
	add	r3, r2, r3
	ldr	r1, [r3]
	ldr	r3, [fp, #-8]
	mvn	r2, r3
	ldr	r3, [fp, #-16]
	lsl	r3, r3, #2
	ldr	r0, [fp, #-32]
	add	r3, r0, r3
	and	r2, r2, r1
	str	r2, [r3]
.L10:
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	set_bit, .-set_bit
	.align	2
	.global	left_shift_28
	.syntax unified
	.arm
	.fpu softvfp
	.type	left_shift_28, %function
left_shift_28:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #28
	str	r0, [fp, #-24]
	str	r1, [fp, #-28]
	mov	r3, #1
	str	r3, [fp, #-12]
	mov	r3, #3
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-28]
	cmp	r3, #1
	bne	.L12
	ldr	r3, [fp, #-28]
	rsb	r3, r3, #32
	ldr	r2, [fp, #-24]
	asr	r3, r2, r3
	ldr	r2, [fp, #-12]
	and	r3, r3, r2
	str	r3, [fp, #-16]
	b	.L13
.L12:
	ldr	r3, [fp, #-28]
	rsb	r3, r3, #32
	ldr	r2, [fp, #-24]
	asr	r3, r2, r3
	ldr	r2, [fp, #-8]
	and	r3, r3, r2
	str	r3, [fp, #-16]
.L13:
	ldr	r2, [fp, #-24]
	ldr	r3, [fp, #-28]
	lsl	r3, r2, r3
	bic	r3, r3, #15
	ldr	r2, [fp, #-16]
	lsl	r2, r2, #4
	orr	r3, r3, r2
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	left_shift_28, .-left_shift_28
	.section	.rodata
	.align	2
.LC3:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	DES_key_schedule
	.syntax unified
	.arm
	.fpu softvfp
	.type	DES_key_schedule, %function
DES_key_schedule:
	@ args = 0, pretend = 0, frame = 136
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #136
	str	r0, [fp, #-136]
	str	r1, [fp, #-140]
	ldr	r3, .L30
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	mov	r3, #1
	str	r3, [fp, #-132]
	b	.L16
.L20:
	ldr	r3, [fp, #-132]
	sub	r3, r3, #1
	str	r3, [fp, #-124]
	ldr	r3, [fp, #-132]
	cmp	r3, #1
	beq	.L17
	ldr	r3, [fp, #-132]
	cmp	r3, #2
	beq	.L17
	ldr	r3, [fp, #-132]
	cmp	r3, #9
	beq	.L17
	ldr	r3, [fp, #-132]
	cmp	r3, #16
	bne	.L18
.L17:
	ldr	r3, [fp, #-124]
	lsl	r3, r3, #2
	sub	r2, fp, #4
	add	r3, r2, r3
	mov	r2, #1
	str	r2, [r3, #-68]
	b	.L19
.L18:
	ldr	r3, [fp, #-124]
	lsl	r3, r3, #2
	sub	r2, fp, #4
	add	r3, r2, r3
	mov	r2, #2
	str	r2, [r3, #-68]
.L19:
	ldr	r3, [fp, #-132]
	add	r3, r3, #1
	str	r3, [fp, #-132]
.L16:
	ldr	r3, [fp, #-132]
	cmp	r3, #16
	ble	.L20
	mov	r3, #0
	str	r3, [fp, #-88]
	ldr	r3, [fp, #-88]
	str	r3, [fp, #-96]
	ldr	r3, [fp, #-96]
	str	r3, [fp, #-108]
	ldr	r3, [fp, #-108]
	str	r3, [fp, #-112]
	mov	r3, #1
	str	r3, [fp, #-132]
	b	.L21
.L22:
	ldr	r3, [fp, #-132]
	sub	r3, r3, #1
	str	r3, [fp, #-124]
	ldr	r3, [fp, #-132]
	rsb	r3, r3, #32
	str	r3, [fp, #-116]
	ldr	r2, .L30+4
	ldr	r3, [fp, #-124]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	ldr	r1, [fp, #-140]
	mov	r0, r3
	bl	get_bit
	mov	r2, r0
	ldr	r3, [fp, #-116]
	lsl	r2, r2, r3
	ldr	r3, [fp, #-112]
	orr	r3, r2, r3
	str	r3, [fp, #-112]
	ldr	r2, .L30+8
	ldr	r3, [fp, #-124]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	ldr	r1, [fp, #-140]
	mov	r0, r3
	bl	get_bit
	mov	r2, r0
	ldr	r3, [fp, #-116]
	lsl	r2, r2, r3
	ldr	r3, [fp, #-96]
	orr	r3, r2, r3
	str	r3, [fp, #-96]
	ldr	r3, [fp, #-132]
	add	r3, r3, #1
	str	r3, [fp, #-132]
.L21:
	ldr	r3, [fp, #-132]
	cmp	r3, #28
	ble	.L22
	mov	r3, #1
	str	r3, [fp, #-132]
	b	.L23
.L28:
	ldr	r3, [fp, #-132]
	sub	r3, r3, #1
	str	r3, [fp, #-124]
	ldr	r2, [fp, #-112]
	ldr	r3, [fp, #-124]
	lsl	r3, r3, #2
	sub	r1, fp, #4
	add	r3, r1, r3
	ldr	r3, [r3, #-68]
	mov	r1, r3
	mov	r0, r2
	bl	left_shift_28
	mov	r3, r0
	str	r3, [fp, #-104]
	ldr	r2, [fp, #-96]
	ldr	r3, [fp, #-124]
	lsl	r3, r3, #2
	sub	r1, fp, #4
	add	r3, r1, r3
	ldr	r3, [r3, #-68]
	mov	r1, r3
	mov	r0, r2
	bl	left_shift_28
	mov	r3, r0
	str	r3, [fp, #-88]
	ldr	r3, [fp, #-104]
	str	r3, [fp, #-112]
	ldr	r3, [fp, #-100]
	str	r3, [fp, #-108]
	ldr	r3, [fp, #-88]
	str	r3, [fp, #-96]
	ldr	r3, [fp, #-84]
	str	r3, [fp, #-92]
	mov	r3, #0
	str	r3, [fp, #-76]
	ldr	r3, [fp, #-76]
	str	r3, [fp, #-80]
	mov	r3, #1
	str	r3, [fp, #-128]
	b	.L24
.L25:
	sub	r3, fp, #112
	mov	r1, r3
	ldr	r0, [fp, #-128]
	bl	get_bit
	mov	r1, r0
	sub	r3, fp, #80
	mov	r2, r3
	ldr	r0, [fp, #-128]
	bl	set_bit
	ldr	r3, [fp, #-128]
	add	r3, r3, #28
	str	r3, [fp, #-120]
	sub	r3, fp, #96
	mov	r1, r3
	ldr	r0, [fp, #-128]
	bl	get_bit
	mov	r1, r0
	sub	r3, fp, #80
	mov	r2, r3
	ldr	r0, [fp, #-120]
	bl	set_bit
	ldr	r3, [fp, #-128]
	add	r3, r3, #1
	str	r3, [fp, #-128]
.L24:
	ldr	r3, [fp, #-128]
	cmp	r3, #28
	ble	.L25
	ldr	r3, [fp, #-124]
	lsl	r3, r3, #3
	ldr	r2, [fp, #-136]
	add	r3, r2, r3
	mov	r2, #0
	str	r2, [r3, #4]
	mov	r3, #1
	str	r3, [fp, #-128]
	b	.L26
.L27:
	ldr	r3, [fp, #-128]
	sub	r3, r3, #1
	ldr	r2, .L30+12
	ldrb	r3, [r2, r3]	@ zero_extendqisi2
	mov	r2, r3
	sub	r3, fp, #80
	mov	r1, r3
	mov	r0, r2
	bl	get_bit
	mov	r1, r0
	ldr	r3, [fp, #-124]
	lsl	r3, r3, #3
	ldr	r2, [fp, #-136]
	add	r3, r2, r3
	mov	r2, r3
	ldr	r0, [fp, #-128]
	bl	set_bit
	ldr	r3, [fp, #-128]
	add	r3, r3, #1
	str	r3, [fp, #-128]
.L26:
	ldr	r3, [fp, #-128]
	cmp	r3, #48
	ble	.L27
	ldr	r3, [fp, #-132]
	add	r3, r3, #1
	str	r3, [fp, #-132]
.L23:
	ldr	r3, [fp, #-132]
	cmp	r3, #16
	ble	.L28
	nop
	ldr	r3, .L30
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L29
	bl	__stack_chk_fail
.L29:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L31:
	.align	2
.L30:
	.word	.LC3
	.word	PC1_C
	.word	PC1_D
	.word	PC2
	.size	DES_key_schedule, .-DES_key_schedule
	.align	2
	.global	DES_reverse_key
	.syntax unified
	.arm
	.fpu softvfp
	.type	DES_reverse_key, %function
DES_reverse_key:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #20
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	mov	r3, #0
	str	r3, [fp, #-12]
	b	.L33
.L34:
	ldr	r3, [fp, #-12]
	rsb	r3, r3, #15
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-12]
	lsl	r3, r3, #3
	ldr	r2, [fp, #-16]
	add	r2, r2, r3
	ldr	r3, [fp, #-8]
	lsl	r3, r3, #3
	ldr	r1, [fp, #-20]
	add	r3, r1, r3
	ldr	r2, [r2]
	str	r2, [r3]
	ldr	r3, [fp, #-12]
	lsl	r3, r3, #3
	ldr	r2, [fp, #-16]
	add	r2, r2, r3
	ldr	r3, [fp, #-8]
	lsl	r3, r3, #3
	ldr	r1, [fp, #-20]
	add	r3, r1, r3
	ldr	r2, [r2, #4]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
.L33:
	ldr	r3, [fp, #-12]
	cmp	r3, #15
	ble	.L34
	nop
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	DES_reverse_key, .-DES_reverse_key
	.section	.rodata
	.align	2
.LC4:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	DES
	.syntax unified
	.arm
	.fpu softvfp
	.type	DES, %function
DES:
	@ args = 0, pretend = 0, frame = 208
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #208
	str	r0, [fp, #-200]
	str	r1, [fp, #-204]
	str	r2, [fp, #-208]
	ldr	r3, .L51
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	mov	r3, #1
	str	r3, [fp, #-196]
	b	.L36
.L37:
	ldr	r3, [fp, #-196]
	sub	r3, r3, #1
	ldr	r2, .L51+4
	ldrb	r3, [r2, r3]	@ zero_extendqisi2
	ldr	r1, [fp, #-204]
	mov	r0, r3
	bl	get_bit
	mov	r1, r0
	sub	r3, fp, #80
	mov	r2, r3
	ldr	r0, [fp, #-196]
	bl	set_bit
	ldr	r3, [fp, #-196]
	add	r3, r3, #1
	str	r3, [fp, #-196]
.L36:
	ldr	r3, [fp, #-196]
	cmp	r3, #64
	ble	.L37
	ldr	r3, [fp, #-80]
	str	r3, [fp, #-144]
	ldr	r3, [fp, #-76]
	str	r3, [fp, #-136]
	mov	r3, #0
	str	r3, [fp, #-132]
	ldr	r3, [fp, #-132]
	str	r3, [fp, #-140]
	mov	r3, #1
	str	r3, [fp, #-196]
	b	.L38
.L45:
	ldr	r3, [fp, #-136]
	str	r3, [fp, #-128]
	ldr	r3, [fp, #-132]
	str	r3, [fp, #-124]
	mov	r3, #1
	str	r3, [fp, #-192]
	b	.L39
.L40:
	ldr	r3, [fp, #-192]
	sub	r3, r3, #1
	ldr	r2, .L51+8
	ldrb	r3, [r2, r3]	@ zero_extendqisi2
	mov	r2, r3
	sub	r3, fp, #136
	mov	r1, r3
	mov	r0, r2
	bl	get_bit
	mov	r1, r0
	sub	r3, fp, #112
	mov	r2, r3
	ldr	r0, [fp, #-192]
	bl	set_bit
	ldr	r3, [fp, #-192]
	add	r3, r3, #1
	str	r3, [fp, #-192]
.L39:
	ldr	r3, [fp, #-192]
	cmp	r3, #48
	ble	.L40
	ldr	r3, [fp, #-196]
	sub	r3, r3, #1
	str	r3, [fp, #-188]
	ldr	r2, [fp, #-112]
	ldr	r3, [fp, #-188]
	lsl	r3, r3, #3
	ldr	r1, [fp, #-200]
	add	r3, r1, r3
	ldr	r3, [r3]
	eor	r3, r3, r2
	str	r3, [fp, #-104]
	ldr	r2, [fp, #-108]
	ldr	r3, [fp, #-188]
	lsl	r3, r3, #3
	ldr	r1, [fp, #-200]
	add	r3, r1, r3
	ldr	r3, [r3, #4]
	eor	r3, r3, r2
	lsr	r3, r3, #16
	lsl	r3, r3, #16
	str	r3, [fp, #-100]
	ldr	r3, [fp, #-104]
	lsr	r3, r3, #26
	str	r3, [fp, #-72]
	ldr	r3, [fp, #-104]
	asr	r3, r3, #20
	and	r3, r3, #63
	str	r3, [fp, #-68]
	ldr	r3, [fp, #-104]
	asr	r3, r3, #14
	and	r3, r3, #63
	str	r3, [fp, #-64]
	ldr	r3, [fp, #-104]
	asr	r3, r3, #8
	and	r3, r3, #63
	str	r3, [fp, #-60]
	ldr	r3, [fp, #-104]
	asr	r3, r3, #2
	and	r3, r3, #63
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-104]
	lsl	r3, r3, #4
	and	r3, r3, #48
	ldr	r2, [fp, #-100]
	lsr	r2, r2, #28
	orr	r3, r3, r2
	str	r3, [fp, #-52]
	ldr	r3, [fp, #-100]
	asr	r3, r3, #22
	and	r3, r3, #63
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-100]
	asr	r3, r3, #16
	and	r3, r3, #63
	str	r3, [fp, #-44]
	mov	r3, #0
	str	r3, [fp, #-192]
	b	.L41
.L42:
	ldr	r3, [fp, #-192]
	lsl	r3, r3, #2
	sub	r2, fp, #4
	add	r3, r2, r3
	ldr	r3, [r3, #-68]
	str	r3, [fp, #-180]
	ldr	r3, [fp, #-180]
	asr	r3, r3, #5
	str	r3, [fp, #-176]
	ldr	r3, [fp, #-180]
	asr	r3, r3, #4
	and	r3, r3, #1
	str	r3, [fp, #-172]
	ldr	r3, [fp, #-180]
	asr	r3, r3, #3
	and	r3, r3, #1
	str	r3, [fp, #-168]
	ldr	r3, [fp, #-180]
	asr	r3, r3, #2
	and	r3, r3, #1
	str	r3, [fp, #-164]
	ldr	r3, [fp, #-180]
	asr	r3, r3, #1
	and	r3, r3, #1
	str	r3, [fp, #-160]
	ldr	r3, [fp, #-180]
	and	r3, r3, #1
	str	r3, [fp, #-156]
	ldr	r3, [fp, #-176]
	lsl	r3, r3, #1
	ldr	r2, [fp, #-156]
	add	r3, r2, r3
	str	r3, [fp, #-152]
	ldr	r3, [fp, #-172]
	lsl	r2, r3, #1
	ldr	r3, [fp, #-168]
	add	r3, r2, r3
	lsl	r2, r3, #1
	ldr	r3, [fp, #-164]
	add	r3, r2, r3
	lsl	r3, r3, #1
	ldr	r2, [fp, #-160]
	add	r3, r2, r3
	str	r3, [fp, #-148]
	ldr	r1, .L51+12
	ldr	r3, [fp, #-192]
	lsl	r2, r3, #2
	ldr	r3, [fp, #-152]
	add	r3, r2, r3
	lsl	r3, r3, #4
	add	r2, r1, r3
	ldr	r3, [fp, #-148]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r3, [fp, #-192]
	lsl	r3, r3, #2
	sub	r1, fp, #4
	add	r3, r1, r3
	str	r2, [r3, #-36]
	ldr	r3, [fp, #-192]
	add	r3, r3, #1
	str	r3, [fp, #-192]
.L41:
	ldr	r3, [fp, #-192]
	cmp	r3, #7
	ble	.L42
	ldr	r3, [fp, #-40]
	lsl	r2, r3, #28
	ldr	r3, [fp, #-36]
	lsl	r3, r3, #24
	orr	r2, r2, r3
	ldr	r3, [fp, #-32]
	lsl	r3, r3, #20
	orr	r2, r2, r3
	ldr	r3, [fp, #-28]
	lsl	r3, r3, #16
	orr	r2, r2, r3
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #12
	orr	r2, r2, r3
	ldr	r3, [fp, #-20]
	lsl	r3, r3, #8
	orr	r2, r2, r3
	ldr	r3, [fp, #-16]
	lsl	r3, r3, #4
	orr	r2, r2, r3
	ldr	r3, [fp, #-12]
	orr	r3, r2, r3
	str	r3, [fp, #-184]
	ldr	r3, [fp, #-184]
	str	r3, [fp, #-96]
	mov	r3, #0
	str	r3, [fp, #-92]
	mov	r3, #1
	str	r3, [fp, #-192]
	b	.L43
.L44:
	ldr	r3, [fp, #-192]
	sub	r3, r3, #1
	ldr	r2, .L51+16
	ldrb	r3, [r2, r3]	@ zero_extendqisi2
	mov	r2, r3
	sub	r3, fp, #96
	mov	r1, r3
	mov	r0, r2
	bl	get_bit
	mov	r1, r0
	sub	r3, fp, #88
	mov	r2, r3
	ldr	r0, [fp, #-192]
	bl	set_bit
	ldr	r3, [fp, #-192]
	add	r3, r3, #1
	str	r3, [fp, #-192]
.L43:
	ldr	r3, [fp, #-192]
	cmp	r3, #32
	ble	.L44
	ldr	r2, [fp, #-144]
	ldr	r3, [fp, #-88]
	eor	r3, r3, r2
	str	r3, [fp, #-120]
	ldr	r3, [fp, #-128]
	str	r3, [fp, #-144]
	ldr	r3, [fp, #-120]
	str	r3, [fp, #-136]
	mov	r3, #0
	str	r3, [fp, #-116]
	ldr	r3, [fp, #-116]
	str	r3, [fp, #-124]
	ldr	r3, [fp, #-196]
	add	r3, r3, #1
	str	r3, [fp, #-196]
.L38:
	ldr	r3, [fp, #-196]
	cmp	r3, #16
	ble	.L45
	mov	r3, #1
	str	r3, [fp, #-196]
	b	.L46
.L47:
	sub	r3, fp, #120
	mov	r1, r3
	ldr	r0, [fp, #-196]
	bl	get_bit
	mov	r1, r0
	sub	r3, fp, #80
	mov	r2, r3
	ldr	r0, [fp, #-196]
	bl	set_bit
	ldr	r3, [fp, #-196]
	add	r3, r3, #32
	str	r3, [fp, #-192]
	sub	r3, fp, #128
	mov	r1, r3
	ldr	r0, [fp, #-196]
	bl	get_bit
	mov	r1, r0
	sub	r3, fp, #80
	mov	r2, r3
	ldr	r0, [fp, #-192]
	bl	set_bit
	ldr	r3, [fp, #-196]
	add	r3, r3, #1
	str	r3, [fp, #-196]
.L46:
	ldr	r3, [fp, #-196]
	cmp	r3, #32
	ble	.L47
	mov	r3, #1
	str	r3, [fp, #-196]
	b	.L48
.L49:
	ldr	r3, [fp, #-196]
	sub	r3, r3, #1
	ldr	r2, .L51+20
	ldrb	r3, [r2, r3]	@ zero_extendqisi2
	mov	r2, r3
	sub	r3, fp, #80
	mov	r1, r3
	mov	r0, r2
	bl	get_bit
	mov	r3, r0
	ldr	r2, [fp, #-208]
	mov	r1, r3
	ldr	r0, [fp, #-196]
	bl	set_bit
	ldr	r3, [fp, #-196]
	add	r3, r3, #1
	str	r3, [fp, #-196]
.L48:
	ldr	r3, [fp, #-196]
	cmp	r3, #64
	ble	.L49
	nop
	ldr	r3, .L51
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L50
	bl	__stack_chk_fail
.L50:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L52:
	.align	2
.L51:
	.word	.LC4
	.word	IP
	.word	E
	.word	S
	.word	P
	.word	IPI
	.size	DES, .-DES
	.section	.rodata
	.align	2
.LC5:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	triple_DES_decrypt
	.syntax unified
	.arm
	.fpu softvfp
	.type	triple_DES_decrypt, %function
triple_DES_decrypt:
	@ args = 4, pretend = 0, frame = 48
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #48
	str	r0, [fp, #-32]
	str	r1, [fp, #-36]
	str	r2, [fp, #-40]
	str	r3, [fp, #-44]
	ldr	r3, [fp, #4]
	str	r3, [fp, #-48]
	ldr	r3, .L55
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	sub	r3, fp, #24
	mov	r2, r3
	ldr	r1, [fp, #-48]
	ldr	r0, [fp, #-40]
	bl	DES
	sub	r2, fp, #16
	sub	r3, fp, #24
	mov	r1, r3
	ldr	r0, [fp, #-36]
	bl	DES
	sub	r3, fp, #16
	ldr	r2, [fp, #-44]
	mov	r1, r3
	ldr	r0, [fp, #-32]
	bl	DES
	nop
	ldr	r3, .L55
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L54
	bl	__stack_chk_fail
.L54:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L56:
	.align	2
.L55:
	.word	.LC5
	.size	triple_DES_decrypt, .-triple_DES_decrypt
	.section	.rodata
	.align	2
.LC6:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	triple_DES_encrypt
	.syntax unified
	.arm
	.fpu softvfp
	.type	triple_DES_encrypt, %function
triple_DES_encrypt:
	@ args = 4, pretend = 0, frame = 48
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #48
	str	r0, [fp, #-32]
	str	r1, [fp, #-36]
	str	r2, [fp, #-40]
	str	r3, [fp, #-44]
	ldr	r3, [fp, #4]
	str	r3, [fp, #-48]
	ldr	r3, .L59
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	sub	r3, fp, #24
	mov	r2, r3
	ldr	r1, [fp, #-44]
	ldr	r0, [fp, #-32]
	bl	DES
	sub	r2, fp, #16
	sub	r3, fp, #24
	mov	r1, r3
	ldr	r0, [fp, #-36]
	bl	DES
	sub	r3, fp, #16
	ldr	r2, [fp, #-48]
	mov	r1, r3
	ldr	r0, [fp, #-40]
	bl	DES
	nop
	ldr	r3, .L59
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L58
	bl	__stack_chk_fail
.L58:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L60:
	.align	2
.L59:
	.word	.LC6
	.size	triple_DES_encrypt, .-triple_DES_encrypt
	.section	.rodata
	.align	2
.LC7:
	.ascii	"plaintext[0]: %ld\012\000"
	.align	2
.LC8:
	.ascii	"plaintext[1]: %ld\012\000"
	.align	2
.LC9:
	.ascii	"ciphertext[0]: %ld\012\000"
	.align	2
.LC10:
	.ascii	"ciphertext[1]: %ld\012\000"
	.align	2
.LC0:
	.word	2
	.word	3
	.align	2
.LC1:
	.word	4
	.word	5
	.align	2
.LC11:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	test_triple_DES
	.syntax unified
	.arm
	.fpu softvfp
	.type	test_triple_DES, %function
test_triple_DES:
	@ args = 0, pretend = 0, frame = 816
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #824
	ldr	r3, .L63
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	mov	r3, #0
	str	r3, [fp, #-816]
	mov	r3, #1
	str	r3, [fp, #-812]
	ldr	r2, .L63+4
	sub	r3, fp, #808
	ldm	r2, {r0, r1}
	stm	r3, {r0, r1}
	ldr	r2, .L63+8
	sub	r3, fp, #800
	ldm	r2, {r0, r1}
	stm	r3, {r0, r1}
	mov	r3, #0
	str	r3, [fp, #-792]
	mov	r3, #1
	str	r3, [fp, #-788]
	sub	r2, fp, #816
	sub	r3, fp, #392
	mov	r1, r2
	mov	r0, r3
	bl	DES_key_schedule
	sub	r2, fp, #808
	sub	r3, fp, #264
	mov	r1, r2
	mov	r0, r3
	bl	DES_key_schedule
	sub	r2, fp, #800
	sub	r3, fp, #136
	mov	r1, r2
	mov	r0, r3
	bl	DES_key_schedule
	sub	r2, fp, #776
	sub	r3, fp, #392
	mov	r1, r2
	mov	r0, r3
	bl	DES_reverse_key
	sub	r2, fp, #648
	sub	r3, fp, #264
	mov	r1, r2
	mov	r0, r3
	bl	DES_reverse_key
	sub	r2, fp, #520
	sub	r3, fp, #136
	mov	r1, r2
	mov	r0, r3
	bl	DES_reverse_key
	ldr	r3, [fp, #-792]
	mov	r1, r3
	ldr	r0, .L63+12
	bl	printf
	ldr	r3, [fp, #-788]
	mov	r1, r3
	ldr	r0, .L63+16
	bl	printf
	sub	ip, fp, #792
	sub	r2, fp, #136
	sub	r1, fp, #648
	sub	r0, fp, #392
	sub	r3, fp, #784
	str	r3, [sp]
	mov	r3, ip
	bl	triple_DES_encrypt
	ldr	r3, [fp, #-784]
	mov	r1, r3
	ldr	r0, .L63+20
	bl	printf
	ldr	r3, [fp, #-780]
	mov	r1, r3
	ldr	r0, .L63+24
	bl	printf
	sub	ip, fp, #792
	sub	r2, fp, #520
	sub	r1, fp, #264
	sub	r0, fp, #776
	sub	r3, fp, #784
	str	r3, [sp]
	mov	r3, ip
	bl	triple_DES_decrypt
	ldr	r3, [fp, #-792]
	mov	r1, r3
	ldr	r0, .L63+12
	bl	printf
	ldr	r3, [fp, #-788]
	mov	r1, r3
	ldr	r0, .L63+16
	bl	printf
	nop
	ldr	r3, .L63
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L62
	bl	__stack_chk_fail
.L62:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L64:
	.align	2
.L63:
	.word	.LC11
	.word	.LC0
	.word	.LC1
	.word	.LC7
	.word	.LC8
	.word	.LC9
	.word	.LC10
	.size	test_triple_DES, .-test_triple_DES
	.section	.rodata
	.align	2
.LC12:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	triple_DES_CBC_decrypt
	.syntax unified
	.arm
	.fpu softvfp
	.type	triple_DES_CBC_decrypt, %function
triple_DES_CBC_decrypt:
	@ args = 12, pretend = 0, frame = 696
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #704
	str	r0, [fp, #-680]
	str	r1, [fp, #-684]
	str	r2, [fp, #-688]
	str	r3, [fp, #-692]
	ldr	r3, [fp, #8]
	str	r3, [fp, #-696]
	ldr	r3, [fp, #12]
	str	r3, [fp, #-700]
	ldr	r3, .L69
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	sub	r3, fp, #392
	ldr	r1, [fp, #-684]
	mov	r0, r3
	bl	DES_key_schedule
	sub	r3, fp, #264
	ldr	r1, [fp, #-688]
	mov	r0, r3
	bl	DES_key_schedule
	sub	r3, fp, #136
	ldr	r1, [fp, #-692]
	mov	r0, r3
	bl	DES_key_schedule
	sub	r2, fp, #648
	sub	r3, fp, #392
	mov	r1, r2
	mov	r0, r3
	bl	DES_reverse_key
	sub	r2, fp, #520
	sub	r3, fp, #136
	mov	r1, r2
	mov	r0, r3
	bl	DES_reverse_key
	ldr	r3, [fp, #-680]
	ldr	r3, [r3]
	str	r3, [fp, #-672]
	ldr	r3, [fp, #-680]
	ldr	r3, [r3, #4]
	str	r3, [fp, #-668]
	mov	r3, #0
	str	r3, [fp, #-676]
	b	.L66
.L67:
	ldr	r3, [fp, #-676]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-700]
	add	r3, r2, r3
	ldr	r3, [r3]
	str	r3, [fp, #-664]
	ldr	r3, [fp, #-676]
	add	r3, r3, #1
	lsl	r3, r3, #2
	ldr	r2, [fp, #-700]
	add	r3, r2, r3
	ldr	r3, [r3]
	str	r3, [fp, #-660]
	sub	ip, fp, #656
	sub	r2, fp, #520
	sub	r1, fp, #264
	sub	r0, fp, #648
	sub	r3, fp, #664
	str	r3, [sp]
	mov	r3, ip
	bl	triple_DES_decrypt
	ldr	r1, [fp, #-672]
	ldr	r2, [fp, #-656]
	ldr	r3, [fp, #-676]
	lsl	r3, r3, #2
	ldr	r0, [fp, #-696]
	add	r3, r0, r3
	eor	r2, r2, r1
	str	r2, [r3]
	ldr	r1, [fp, #-668]
	ldr	r2, [fp, #-652]
	ldr	r3, [fp, #-676]
	add	r3, r3, #1
	lsl	r3, r3, #2
	ldr	r0, [fp, #-696]
	add	r3, r0, r3
	eor	r2, r2, r1
	str	r2, [r3]
	ldr	r3, [fp, #-664]
	str	r3, [fp, #-672]
	ldr	r3, [fp, #-660]
	str	r3, [fp, #-668]
	ldr	r3, [fp, #-676]
	add	r3, r3, #2
	str	r3, [fp, #-676]
.L66:
	ldr	r2, [fp, #-676]
	ldr	r3, [fp, #4]
	cmp	r2, r3
	blt	.L67
	nop
	ldr	r3, .L69
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L68
	bl	__stack_chk_fail
.L68:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L70:
	.align	2
.L69:
	.word	.LC12
	.size	triple_DES_CBC_decrypt, .-triple_DES_CBC_decrypt
	.section	.rodata
	.align	2
.LC13:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	triple_DES_CBC_encrypt
	.syntax unified
	.arm
	.fpu softvfp
	.type	triple_DES_CBC_encrypt, %function
triple_DES_CBC_encrypt:
	@ args = 12, pretend = 0, frame = 560
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #568
	str	r0, [fp, #-544]
	str	r1, [fp, #-548]
	str	r2, [fp, #-552]
	str	r3, [fp, #-556]
	ldr	r3, [fp, #8]
	str	r3, [fp, #-560]
	ldr	r3, [fp, #12]
	str	r3, [fp, #-564]
	ldr	r3, .L75
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	sub	r3, fp, #392
	ldr	r1, [fp, #-548]
	mov	r0, r3
	bl	DES_key_schedule
	sub	r3, fp, #264
	ldr	r1, [fp, #-552]
	mov	r0, r3
	bl	DES_key_schedule
	sub	r3, fp, #136
	ldr	r1, [fp, #-556]
	mov	r0, r3
	bl	DES_key_schedule
	sub	r2, fp, #520
	sub	r3, fp, #264
	mov	r1, r2
	mov	r0, r3
	bl	DES_reverse_key
	ldr	r3, [fp, #-544]
	ldr	r3, [r3]
	str	r3, [fp, #-536]
	ldr	r3, [fp, #-544]
	ldr	r3, [r3, #4]
	str	r3, [fp, #-532]
	mov	r3, #0
	str	r3, [fp, #-540]
	b	.L72
.L73:
	ldr	r2, [fp, #-536]
	ldr	r3, [fp, #-540]
	lsl	r3, r3, #2
	ldr	r1, [fp, #-560]
	add	r3, r1, r3
	ldr	r3, [r3]
	eor	r3, r3, r2
	str	r3, [fp, #-528]
	ldr	r2, [fp, #-532]
	ldr	r3, [fp, #-540]
	add	r3, r3, #1
	lsl	r3, r3, #2
	ldr	r1, [fp, #-560]
	add	r3, r1, r3
	ldr	r3, [r3]
	eor	r3, r3, r2
	str	r3, [fp, #-524]
	sub	ip, fp, #528
	sub	r2, fp, #136
	sub	r1, fp, #520
	sub	r0, fp, #392
	sub	r3, fp, #536
	str	r3, [sp]
	mov	r3, ip
	bl	triple_DES_encrypt
	ldr	r3, [fp, #-540]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-564]
	add	r3, r2, r3
	ldr	r2, [fp, #-536]
	str	r2, [r3]
	ldr	r3, [fp, #-540]
	add	r3, r3, #1
	lsl	r3, r3, #2
	ldr	r2, [fp, #-564]
	add	r3, r2, r3
	ldr	r2, [fp, #-532]
	str	r2, [r3]
	ldr	r3, [fp, #-540]
	add	r3, r3, #2
	str	r3, [fp, #-540]
.L72:
	ldr	r2, [fp, #-540]
	ldr	r3, [fp, #4]
	cmp	r2, r3
	blt	.L73
	nop
	ldr	r3, .L75
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L74
	bl	__stack_chk_fail
.L74:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L76:
	.align	2
.L75:
	.word	.LC13
	.size	triple_DES_CBC_encrypt, .-triple_DES_CBC_encrypt
	.section	.rodata
	.align	2
.LC14:
	.ascii	"plaintext[%ld]: %ld  \000"
	.align	2
.LC15:
	.ascii	"plaintext[%ld]: %ld\012\000"
	.align	2
.LC2:
	.word	6
	.word	7
	.align	2
.LC16:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	test_triple_DES_CBC
	.syntax unified
	.arm
	.fpu softvfp
	.type	test_triple_DES_CBC, %function
test_triple_DES_CBC:
	@ args = 0, pretend = 0, frame = 144
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #160
	ldr	r3, .L81
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r2, .L81+4
	sub	r3, fp, #136
	ldm	r2, {r0, r1}
	stm	r3, {r0, r1}
	mov	r3, #0
	str	r3, [fp, #-128]
	mov	r3, #1
	str	r3, [fp, #-124]
	ldr	r2, .L81+8
	sub	r3, fp, #120
	ldm	r2, {r0, r1}
	stm	r3, {r0, r1}
	ldr	r2, .L81+12
	sub	r3, fp, #112
	ldm	r2, {r0, r1}
	stm	r3, {r0, r1}
	mov	r3, #8
	str	r3, [fp, #-140]
	sub	ip, fp, #112
	sub	r2, fp, #120
	sub	r1, fp, #128
	sub	r0, fp, #136
	sub	r3, fp, #72
	str	r3, [sp, #8]
	sub	r3, fp, #104
	str	r3, [sp, #4]
	ldr	r3, [fp, #-140]
	str	r3, [sp]
	mov	r3, ip
	bl	triple_DES_CBC_encrypt
	sub	ip, fp, #112
	sub	r2, fp, #120
	sub	r1, fp, #128
	sub	r0, fp, #136
	sub	r3, fp, #72
	str	r3, [sp, #8]
	sub	r3, fp, #40
	str	r3, [sp, #4]
	ldr	r3, [fp, #-140]
	str	r3, [sp]
	mov	r3, ip
	bl	triple_DES_CBC_decrypt
	mov	r3, #0
	str	r3, [fp, #-144]
	b	.L78
.L79:
	ldr	r3, [fp, #-144]
	lsl	r3, r3, #2
	sub	r2, fp, #4
	add	r3, r2, r3
	ldr	r3, [r3, #-100]
	mov	r2, r3
	ldr	r1, [fp, #-144]
	ldr	r0, .L81+16
	bl	printf
	ldr	r3, [fp, #-144]
	lsl	r3, r3, #2
	sub	r2, fp, #4
	add	r3, r2, r3
	ldr	r3, [r3, #-36]
	mov	r2, r3
	ldr	r1, [fp, #-144]
	ldr	r0, .L81+20
	bl	printf
	ldr	r3, [fp, #-144]
	add	r3, r3, #1
	str	r3, [fp, #-144]
.L78:
	ldr	r2, [fp, #-144]
	ldr	r3, [fp, #-140]
	cmp	r2, r3
	blt	.L79
	nop
	ldr	r3, .L81
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L80
	bl	__stack_chk_fail
.L80:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L82:
	.align	2
.L81:
	.word	.LC16
	.word	.LC2
	.word	.LC0
	.word	.LC1
	.word	.LC14
	.word	.LC15
	.size	test_triple_DES_CBC, .-test_triple_DES_CBC
	.align	2
	.global	main
	.syntax unified
	.arm
	.fpu softvfp
	.type	main, %function
main:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	bl	test_triple_DES
	bl	test_triple_DES_CBC
	mov	r3, #0
	mov	r0, r3
	pop	{fp, pc}
	.size	main, .-main
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
