	.file	"184518718.c"
	.intel_syntax noprefix
	.text
	.type	permute, @function
permute:
.LFB0:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	r14
	push	r13
	push	r12
	push	rbx
	.cfi_offset 14, -24
	.cfi_offset 13, -32
	.cfi_offset 12, -40
	.cfi_offset 3, -48
	mov	QWORD PTR -40[rbp], rdi
	mov	QWORD PTR -48[rbp], rsi
	mov	rax, rdx
	mov	DWORD PTR -52[rbp], ecx
	mov	r13d, 0
	mov	r12d, 0
.L2:
	mov	rdx, QWORD PTR -40[rbp]
	lea	rcx, 1[rdx]
	mov	QWORD PTR -40[rbp], rcx
	movzx	edx, BYTE PTR [rdx]
	movzx	r14d, dl
	movsx	rdx, r14d
	and	edx, 15
	sal	rdx, 4
	lea	rbx, [rax+rdx]
	mov	rdx, QWORD PTR [rbx]
	or	r13, rdx
	mov	rdx, QWORD PTR 8[rbx]
	or	r12, rdx
	add	rax, 256
	mov	edx, r14d
	sar	edx, 4
	movsx	rdx, edx
	sal	rdx, 4
	lea	rbx, [rax+rdx]
	mov	rdx, QWORD PTR [rbx]
	or	r13, rdx
	mov	rdx, QWORD PTR 8[rbx]
	or	r12, rdx
	add	rax, 256
	sub	DWORD PTR -52[rbp], 1
	cmp	DWORD PTR -52[rbp], 0
	jg	.L2
	mov	rax, QWORD PTR -48[rbp]
	mov	QWORD PTR [rax], r13
	mov	rax, QWORD PTR -48[rbp]
	mov	QWORD PTR 8[rax], r12
	nop
	pop	rbx
	pop	r12
	pop	r13
	pop	r14
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE0:
	.size	permute, .-permute
	.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"
	.align 32
	.type	ExpandTr, @object
	.size	ExpandTr, 48
ExpandTr:
	.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"
	.align 32
	.type	PC1, @object
	.size	PC1, 56
PC1:
	.ascii	"91)!\031\021\t\001:2*\"\032\022\n\002;3+#\033\023\013\003<4,"
	.ascii	"$?7/'\037\027\017\007>6.&\036\026\016\006=5-%\035\025\r\005\034"
	.ascii	"\024\f\004"
	.align 16
	.type	Rotates, @object
	.size	Rotates, 16
Rotates:
	.ascii	"\001\001\002\002\002\002\002\002\001\002\002\002\002\002\002"
	.ascii	"\001"
	.align 32
	.type	PC2, @object
	.size	PC2, 64
PC2:
	.string	"\t\022\016\021\013\030\001\005\026\031\003\034\017\006\025\n#&\027\023\f\004\032\b+6\020\007\033\024\r\002"
	.string	""
	.string	")4\037%/7"
	.string	""
	.string	"\036(3-!0"
	.string	""
	.string	",1'8\"5"
	.string	""
	.ascii	".*2$\035 "
	.align 32
	.type	S, @object
	.size	S, 512
S:
	.string	"\016\004\r\001\002\017\013\b\003\n\006\f\005\t"
	.string	"\007"
	.string	"\017\007\004\016\002\r\001\n\006\f\013\t\005\003\b\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"
	.string	"\005\n\003\r\004\007\017\002\b\016\f"
	.string	"\001\n\006\t\013\005"
	.string	"\016\007\013\n\004\r\001\005\b\f\006\t\003\002\017\r\b\n\001\003\017\004\002\013\006\007\f"
	.ascii	"\005\016\t"
	.string	"\n"
	.string	"\t\016\006\003\017\005\001\r\f\007\013\004\002\b\r\007"
	.string	"\t\003\004\006\n\002\b\005\016\f\013\017\001\r\006\004\t\b\017\003"
	.string	"\013\001\002\f\005\n\016\007\001\n\r"
	.ascii	"\006\t\b\007\004\017\016\003\013\005\002\f"
	.string	"\007\r\016\003"
	.string	"\006\t\n\001\002\b\005\013\f\004\017\r\b\013\005\006\017"
	.string	"\003\004\007\002\f\001\n\016\t\n\006\t"
	.string	"\f\013\007\r\017\001\003\016\005\002\b\004\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"
	.string	"\016\t\016\013\002\f\004\007\r\001\005"
	.string	"\017\n\003\t\b\006\004\002\001\013\n\r\007\b\017\t\f\005\006\003"
	.string	"\016\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"
	.string	"\r\003\004\016\007\005\013\n\017\004\002\007\f\t\005\006\001\r\016"
	.string	"\013\003\b\t\016\017\005\002\b\f\003\007"
	.string	"\004\n\001\r\013\006\004\003\002\f\t\005\017\n\013\016\001\007\006"
	.ascii	"\b\r"
	.string	"\004\013\002\016\017"
	.string	"\b\r\003\f\t\007\005\n\006\001\r"
	.string	"\013\007\004\t\001\n\016\003\005\f\002\017\b\006\001\004\013\r\f\003\007\016\n\017\006\b"
	.string	"\005\t\002\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"
	.string	"\f\007\001\017\r\b\n\003\007\004\f\005\006\013"
	.string	"\016\t\002\007\013\004\001\t\f\016\002"
	.string	"\006\n\r\017\003\005\b\002\001\016\007\004\n\b\r\017\f\t"
	.ascii	"\003\005\006\013"
	.align 32
	.type	P32Tr, @object
	.size	P32Tr, 32
P32Tr:
	.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"
	.align 32
	.type	CIFP, @object
	.size	CIFP, 64
CIFP:
	.ascii	"\001\002\003\004\021\022\023\024\005\006\007\b\025\026\027\030"
	.ascii	"\t\n\013\f\031\032\033\034\r\016\017\020\035\036\037 !\"#$12"
	.ascii	"34%&'(5678)*+,9:;<-./0=>?@"
	.align 32
	.type	itoa64, @object
	.size	itoa64, 65
itoa64:
	.string	"./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
	.local	a64toi
	.comm	a64toi,128,32
	.local	PC1ROT
	.comm	PC1ROT,4096,32
	.local	PC2ROT
	.comm	PC2ROT,8192,32
	.local	IE3264
	.comm	IE3264,2048,32
	.local	SPE
	.comm	SPE,8192,32
	.local	CF6464
	.comm	CF6464,4096,32
	.local	constdatablock
	.comm	constdatablock,16,16
	.local	cryptresult
	.comm	cryptresult,21,16
	.text
	.globl	crypt
	.type	crypt, @function
crypt:
.LFB1:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	r15
	push	r14
	push	r13
	push	r12
	push	rbx
	sub	rsp, 72
	.cfi_offset 15, -24
	.cfi_offset 14, -32
	.cfi_offset 13, -40
	.cfi_offset 12, -48
	.cfi_offset 3, -56
	mov	r14, rdi
	mov	r15, rsi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -56[rbp], rax
	xor	eax, eax
	mov	ebx, 0
	jmp	.L4
.L6:
	movzx	eax, BYTE PTR [r14]
	movzx	eax, al
	lea	r13d, [rax+rax]
	test	r13d, r13d
	je	.L5
	add	r14, 1
.L5:
	mov	eax, r13d
	mov	BYTE PTR -96[rbp+rbx], al
	add	rbx, 1
.L4:
	cmp	rbx, 7
	jle	.L6
	lea	rax, -96[rbp]
	mov	rdi, rax
	mov	eax, 0
	call	des_setkey
	test	eax, eax
	je	.L7
	mov	eax, 0
	jmp	.L24
.L7:
	lea	r12, cryptresult[rip]
	movzx	eax, BYTE PTR [r15]
	movsx	eax, al
	cmp	eax, 95
	jne	.L9
	jmp	.L10
.L15:
	lea	rsi, -96[rbp]
	lea	rax, -96[rbp]
	mov	ecx, 1
	mov	edx, 0
	mov	rdi, rax
	mov	eax, 0
	call	des_cipher
	test	eax, eax
	je	.L11
	mov	eax, 0
	jmp	.L24
.L11:
	mov	ebx, 0
	jmp	.L12
.L14:
	movzx	eax, BYTE PTR [r14]
	movzx	eax, al
	lea	r13d, [rax+rax]
	test	r13d, r13d
	je	.L13
	add	r14, 1
.L13:
	movzx	eax, BYTE PTR -96[rbp+rbx]
	mov	edx, eax
	mov	eax, r13d
	xor	eax, edx
	mov	BYTE PTR -96[rbp+rbx], al
	add	rbx, 1
.L12:
	cmp	rbx, 7
	jle	.L14
	lea	rax, -96[rbp]
	mov	rdi, rax
	mov	eax, 0
	call	des_setkey
	test	eax, eax
	je	.L10
	mov	eax, 0
	jmp	.L24
.L10:
	movzx	eax, BYTE PTR [r14]
	test	al, al
	jne	.L15
	mov	rdx, r15
	lea	r15, 1[rdx]
	mov	rax, r12
	lea	r12, 1[rax]
	movzx	edx, BYTE PTR [rdx]
	mov	BYTE PTR [rax], dl
	mov	DWORD PTR -112[rbp], 0
	mov	ebx, 4
	jmp	.L16
.L18:
	mov	rax, rbx
	add	rax, r15
	movzx	eax, BYTE PTR [rax]
	movzx	r13d, al
	test	r13d, r13d
	jne	.L17
	mov	r13d, 46
.L17:
	mov	rax, rbx
	add	rax, r12
	mov	edx, r13d
	mov	BYTE PTR [rax], dl
	mov	eax, DWORD PTR -112[rbp]
	sal	eax, 6
	mov	ecx, eax
	movsx	rax, r13d
	lea	rdx, a64toi[rip]
	movzx	eax, BYTE PTR [rax+rdx]
	movzx	eax, al
	or	eax, ecx
	mov	DWORD PTR -112[rbp], eax
.L16:
	sub	rbx, 1
	test	rbx, rbx
	jns	.L18
	add	r15, 4
	add	r12, 4
	mov	DWORD PTR -108[rbp], 4
	jmp	.L19
.L9:
	mov	DWORD PTR -112[rbp], 25
	mov	DWORD PTR -108[rbp], 2
.L19:
	mov	QWORD PTR -104[rbp], 0
	mov	eax, DWORD PTR -108[rbp]
	movsx	rbx, eax
	jmp	.L20
.L22:
	mov	rax, rbx
	add	rax, r15
	movzx	eax, BYTE PTR [rax]
	movzx	r13d, al
	test	r13d, r13d
	jne	.L21
	mov	r13d, 46
.L21:
	mov	rax, rbx
	add	rax, r12
	mov	edx, r13d
	mov	BYTE PTR [rax], dl
	mov	rax, QWORD PTR -104[rbp]
	sal	rax, 6
	mov	rcx, rax
	movsx	rax, r13d
	lea	rdx, a64toi[rip]
	movzx	eax, BYTE PTR [rax+rdx]
	movzx	eax, al
	or	rax, rcx
	mov	QWORD PTR -104[rbp], rax
.L20:
	sub	rbx, 1
	test	rbx, rbx
	jns	.L22
	mov	eax, DWORD PTR -108[rbp]
	cdqe
	add	r12, rax
	mov	ecx, DWORD PTR -112[rbp]
	mov	rdx, QWORD PTR -104[rbp]
	lea	rax, -80[rbp]
	mov	rsi, rax
	lea	rdi, constdatablock[rip]
	mov	eax, 0
	call	des_cipher
	test	eax, eax
	je	.L23
	mov	eax, 0
	jmp	.L24
.L23:
	movzx	eax, BYTE PTR -80[rbp]
	movzx	eax, al
	sal	eax, 8
	mov	edx, eax
	movzx	eax, BYTE PTR -79[rbp]
	movzx	eax, al
	or	eax, edx
	cdqe
	sal	rax, 8
	mov	rdx, rax
	movzx	eax, BYTE PTR -78[rbp]
	movzx	eax, al
	mov	rbx, rdx
	or	rbx, rax
	mov	rdx, rbx
	and	edx, 63
	lea	rax, itoa64[rip]
	movzx	edx, BYTE PTR [rdx+rax]
	lea	rax, 3[r12]
	mov	BYTE PTR [rax], dl
	sar	rbx, 6
	mov	rdx, rbx
	and	edx, 63
	lea	rax, itoa64[rip]
	movzx	edx, BYTE PTR [rdx+rax]
	lea	rax, 2[r12]
	mov	BYTE PTR [rax], dl
	sar	rbx, 6
	mov	rdx, rbx
	and	edx, 63
	lea	rax, itoa64[rip]
	movzx	edx, BYTE PTR [rdx+rax]
	lea	rax, 1[r12]
	mov	BYTE PTR [rax], dl
	sar	rbx, 6
	lea	rax, itoa64[rip]
	movzx	eax, BYTE PTR [rbx+rax]
	mov	BYTE PTR [r12], al
	add	r12, 4
	movzx	eax, BYTE PTR -77[rbp]
	movzx	eax, al
	sal	eax, 8
	mov	edx, eax
	movzx	eax, BYTE PTR -76[rbp]
	movzx	eax, al
	or	eax, edx
	cdqe
	sal	rax, 8
	mov	rdx, rax
	movzx	eax, BYTE PTR -75[rbp]
	movzx	eax, al
	mov	rbx, rdx
	or	rbx, rax
	mov	rdx, rbx
	and	edx, 63
	lea	rax, itoa64[rip]
	movzx	edx, BYTE PTR [rdx+rax]
	lea	rax, 3[r12]
	mov	BYTE PTR [rax], dl
	sar	rbx, 6
	mov	rdx, rbx
	and	edx, 63
	lea	rax, itoa64[rip]
	movzx	edx, BYTE PTR [rdx+rax]
	lea	rax, 2[r12]
	mov	BYTE PTR [rax], dl
	sar	rbx, 6
	mov	rdx, rbx
	and	edx, 63
	lea	rax, itoa64[rip]
	movzx	edx, BYTE PTR [rdx+rax]
	lea	rax, 1[r12]
	mov	BYTE PTR [rax], dl
	sar	rbx, 6
	lea	rax, itoa64[rip]
	movzx	eax, BYTE PTR [rbx+rax]
	mov	BYTE PTR [r12], al
	add	r12, 4
	movzx	eax, BYTE PTR -74[rbp]
	movzx	eax, al
	sal	eax, 8
	movsx	rdx, eax
	movzx	eax, BYTE PTR -73[rbp]
	movzx	eax, al
	or	rax, rdx
	lea	rbx, 0[0+rax*4]
	mov	rdx, rbx
	and	edx, 63
	lea	rax, itoa64[rip]
	movzx	edx, BYTE PTR [rdx+rax]
	lea	rax, 2[r12]
	mov	BYTE PTR [rax], dl
	sar	rbx, 6
	mov	rdx, rbx
	and	edx, 63
	lea	rax, itoa64[rip]
	movzx	edx, BYTE PTR [rdx+rax]
	lea	rax, 1[r12]
	mov	BYTE PTR [rax], dl
	sar	rbx, 6
	lea	rax, itoa64[rip]
	movzx	eax, BYTE PTR [rbx+rax]
	mov	BYTE PTR [r12], al
	lea	rax, 3[r12]
	mov	BYTE PTR [rax], 0
	lea	rax, cryptresult[rip]
.L24:
	mov	rsi, QWORD PTR -56[rbp]
	sub	rsi, QWORD PTR fs:40
	je	.L25
	call	__stack_chk_fail@PLT
.L25:
	add	rsp, 72
	pop	rbx
	pop	r12
	pop	r13
	pop	r14
	pop	r15
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE1:
	.size	crypt, .-crypt
	.local	KS
	.comm	KS,256,32
	.globl	des_setkey
	.type	des_setkey, @function
des_setkey:
.LFB2:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	r14
	push	r13
	push	r12
	push	rbx
	sub	rsp, 32
	.cfi_offset 14, -24
	.cfi_offset 13, -32
	.cfi_offset 12, -40
	.cfi_offset 3, -48
	mov	rbx, rdi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -40[rbp], rax
	xor	eax, eax
	mov	eax, DWORD PTR des_ready.2[rip]
	test	eax, eax
	jne	.L27
	mov	eax, 0
	call	init_des
	mov	DWORD PTR des_ready.2[rip], 1
.L27:
	lea	rax, -64[rbp]
	mov	ecx, 8
	lea	rdx, PC1ROT[rip]
	mov	rsi, rax
	mov	rdi, rbx
	mov	eax, 0
	call	permute
	mov	r13, QWORD PTR -64[rbp]
	mov	r12, QWORD PTR -56[rbp]
	lea	rbx, KS[rip]
	mov	rax, r13
	and	rax, -50529028
	mov	QWORD PTR [rbx], rax
	mov	QWORD PTR 8[rbx], r12
	mov	r14d, 1
	jmp	.L28
.L29:
	add	rbx, 16
	mov	QWORD PTR [rbx], r13
	mov	QWORD PTR 8[rbx], r12
	movsx	rax, r14d
	lea	rdx, Rotates[rip]
	movzx	eax, BYTE PTR [rax+rdx]
	movzx	eax, al
	sub	eax, 1
	cdqe
	sal	rax, 12
	mov	rdx, rax
	lea	rax, PC2ROT[rip]
	lea	r12, [rdx+rax]
	lea	rax, -64[rbp]
	mov	ecx, 8
	mov	rdx, r12
	mov	rsi, rax
	mov	rdi, rbx
	mov	eax, 0
	call	permute
	mov	r13, QWORD PTR -64[rbp]
	mov	r12, QWORD PTR -56[rbp]
	mov	rax, r13
	and	rax, -50529028
	mov	QWORD PTR [rbx], rax
	mov	QWORD PTR 8[rbx], r12
	add	r14d, 1
.L28:
	cmp	r14d, 15
	jle	.L29
	mov	eax, 0
	mov	rcx, QWORD PTR -40[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L31
	call	__stack_chk_fail@PLT
.L31:
	add	rsp, 32
	pop	rbx
	pop	r12
	pop	r13
	pop	r14
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE2:
	.size	des_setkey, .-des_setkey
	.globl	des_cipher
	.type	des_cipher, @function
des_cipher:
.LFB3:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	r15
	push	r14
	push	r13
	push	r12
	push	rbx
	sub	rsp, 88
	.cfi_offset 15, -24
	.cfi_offset 14, -32
	.cfi_offset 13, -40
	.cfi_offset 12, -48
	.cfi_offset 3, -56
	mov	QWORD PTR -104[rbp], rdi
	mov	QWORD PTR -112[rbp], rsi
	mov	QWORD PTR -120[rbp], rdx
	mov	DWORD PTR -124[rbp], ecx
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -56[rbp], rax
	xor	eax, eax
	mov	r12, QWORD PTR -120[rbp]
	mov	eax, r12d
	mov	BYTE PTR -80[rbp], al
	sar	r12, 6
	mov	eax, r12d
	mov	BYTE PTR -79[rbp], al
	sar	r12, 6
	mov	eax, r12d
	mov	BYTE PTR -78[rbp], al
	sar	r12, 6
	mov	eax, r12d
	mov	BYTE PTR -77[rbp], al
	mov	rax, QWORD PTR -80[rbp]
	sal	rax, 2
	and	eax, 4244438268
	mov	QWORD PTR -120[rbp], rax
	mov	rax, QWORD PTR -104[rbp]
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR -96[rbp], al
	mov	rax, QWORD PTR -104[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR -95[rbp], al
	mov	rax, QWORD PTR -104[rbp]
	add	rax, 2
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR -94[rbp], al
	mov	rax, QWORD PTR -104[rbp]
	add	rax, 3
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR -93[rbp], al
	mov	rax, QWORD PTR -104[rbp]
	add	rax, 4
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR -92[rbp], al
	mov	rax, QWORD PTR -104[rbp]
	add	rax, 5
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR -91[rbp], al
	mov	rax, QWORD PTR -104[rbp]
	add	rax, 6
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR -90[rbp], al
	mov	rax, QWORD PTR -104[rbp]
	add	rax, 7
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR -89[rbp], al
	mov	r12, QWORD PTR -96[rbp]
	mov	r13, QWORD PTR -88[rbp]
	mov	r14, r12
	mov	r15, r13
	and	r12d, 1431655765
	and	r13d, 1431655765
	lea	rax, [r12+r12]
	or	r13, rax
	mov	r12, r13
	and	r14d, 2863311530
	mov	rax, r15
	sar	rax
	and	eax, 1431655765
	mov	r15, rax
	or	r14, r15
	mov	r13, r14
	mov	QWORD PTR -96[rbp], r12
	mov	QWORD PTR -88[rbp], r13
	lea	rsi, -80[rbp]
	lea	rax, -96[rbp]
	mov	ecx, 4
	lea	rdx, IE3264[rip]
	mov	rdi, rax
	mov	eax, 0
	call	permute
	mov	r12, QWORD PTR -80[rbp]
	mov	r13, QWORD PTR -72[rbp]
	lea	rax, -96[rbp]
	add	rax, 4
	lea	rsi, -80[rbp]
	mov	ecx, 4
	lea	rdx, IE3264[rip]
	mov	rdi, rax
	mov	eax, 0
	call	permute
	mov	r14, QWORD PTR -80[rbp]
	mov	r15, QWORD PTR -72[rbp]
	cmp	DWORD PTR -124[rbp], 0
	js	.L33
	lea	rax, KS[rip]
	mov	rsi, rax
	mov	r8d, 16
	jmp	.L35
.L33:
	neg	DWORD PTR -124[rbp]
	lea	rax, KS[rip+240]
	mov	rsi, rax
	mov	r8d, -16
	jmp	.L35
.L37:
	mov	r9d, 8
.L36:
	mov	rax, r14
	xor	rax, r15
	and	rax, QWORD PTR -120[rbp]
	mov	rbx, rax
	mov	rdx, rbx
	xor	rdx, r14
	mov	rcx, rsi
	mov	rax, QWORD PTR [rcx]
	xor	rax, rdx
	mov	QWORD PTR -96[rbp], rax
	xor	rbx, r15
	mov	rdx, rbx
	mov	rax, QWORD PTR 8[rcx]
	xor	rax, rdx
	mov	QWORD PTR -88[rbp], rax
	mov	edi, r8d
	movsx	rax, edi
	add	rcx, rax
	movzx	eax, BYTE PTR -96[rbp]
	movzx	ebx, al
	mov	rax, rbx
	lea	rdx, [rax+rax]
	lea	rax, SPE[rip]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	xor	r12, rax
	mov	rax, rbx
	lea	rdx, [rax+rax]
	lea	rax, SPE[rip+4096]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	xor	r13, rax
	movzx	eax, BYTE PTR -95[rbp]
	movzx	ebx, al
	mov	rax, rbx
	lea	rdx, [rax+rax]
	lea	rax, SPE[rip+512]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	xor	r12, rax
	mov	rax, rbx
	lea	rdx, [rax+rax]
	lea	rax, SPE[rip+4608]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	xor	r13, rax
	movzx	eax, BYTE PTR -94[rbp]
	movzx	ebx, al
	mov	rax, rbx
	lea	rdx, [rax+rax]
	lea	rax, SPE[rip+1024]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	xor	r12, rax
	mov	rax, rbx
	lea	rdx, [rax+rax]
	lea	rax, SPE[rip+5120]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	xor	r13, rax
	movzx	eax, BYTE PTR -93[rbp]
	movzx	ebx, al
	mov	rax, rbx
	lea	rdx, [rax+rax]
	lea	rax, SPE[rip+1536]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	xor	r12, rax
	mov	rax, rbx
	lea	rdx, [rax+rax]
	lea	rax, SPE[rip+5632]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	xor	r13, rax
	movzx	eax, BYTE PTR -92[rbp]
	movzx	ebx, al
	mov	rax, rbx
	lea	rdx, [rax+rax]
	lea	rax, SPE[rip+2048]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	xor	r12, rax
	mov	rax, rbx
	lea	rdx, [rax+rax]
	lea	rax, SPE[rip+6144]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	xor	r13, rax
	movzx	eax, BYTE PTR -91[rbp]
	movzx	ebx, al
	mov	rax, rbx
	lea	rdx, [rax+rax]
	lea	rax, SPE[rip+2560]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	xor	r12, rax
	mov	rax, rbx
	lea	rdx, [rax+rax]
	lea	rax, SPE[rip+6656]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	xor	r13, rax
	movzx	eax, BYTE PTR -90[rbp]
	movzx	ebx, al
	mov	rax, rbx
	lea	rdx, [rax+rax]
	lea	rax, SPE[rip+3072]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	xor	r12, rax
	mov	rax, rbx
	lea	rdx, [rax+rax]
	lea	rax, SPE[rip+7168]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	xor	r13, rax
	movzx	eax, BYTE PTR -89[rbp]
	movzx	ebx, al
	mov	rax, rbx
	lea	rdx, [rax+rax]
	lea	rax, SPE[rip+3584]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	xor	r12, rax
	mov	rax, rbx
	lea	rdx, [rax+rax]
	lea	rax, SPE[rip+7680]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	xor	r13, rax
	mov	rax, r12
	xor	rax, r13
	and	rax, QWORD PTR -120[rbp]
	mov	rbx, rax
	mov	rdx, rbx
	xor	rdx, r12
	mov	rax, QWORD PTR [rcx]
	xor	rax, rdx
	mov	QWORD PTR -96[rbp], rax
	xor	rbx, r13
	mov	rdx, rbx
	mov	rax, QWORD PTR 8[rcx]
	xor	rax, rdx
	mov	QWORD PTR -88[rbp], rax
	movsx	rax, edi
	add	rcx, rax
	mov	rsi, rcx
	movzx	eax, BYTE PTR -96[rbp]
	movzx	ebx, al
	mov	rax, rbx
	lea	rdx, [rax+rax]
	lea	rax, SPE[rip]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	xor	r14, rax
	mov	rax, rbx
	lea	rdx, [rax+rax]
	lea	rax, SPE[rip+4096]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	xor	r15, rax
	movzx	eax, BYTE PTR -95[rbp]
	movzx	ebx, al
	mov	rax, rbx
	lea	rdx, [rax+rax]
	lea	rax, SPE[rip+512]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	xor	r14, rax
	mov	rax, rbx
	lea	rdx, [rax+rax]
	lea	rax, SPE[rip+4608]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	xor	r15, rax
	movzx	eax, BYTE PTR -94[rbp]
	movzx	ebx, al
	mov	rax, rbx
	lea	rdx, [rax+rax]
	lea	rax, SPE[rip+1024]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	xor	r14, rax
	mov	rax, rbx
	lea	rdx, [rax+rax]
	lea	rax, SPE[rip+5120]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	xor	r15, rax
	movzx	eax, BYTE PTR -93[rbp]
	movzx	ebx, al
	mov	rax, rbx
	lea	rdx, [rax+rax]
	lea	rax, SPE[rip+1536]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	xor	r14, rax
	mov	rax, rbx
	lea	rdx, [rax+rax]
	lea	rax, SPE[rip+5632]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	xor	r15, rax
	movzx	eax, BYTE PTR -92[rbp]
	movzx	ebx, al
	mov	rax, rbx
	lea	rdx, [rax+rax]
	lea	rax, SPE[rip+2048]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	xor	r14, rax
	mov	rax, rbx
	lea	rdx, [rax+rax]
	lea	rax, SPE[rip+6144]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	xor	r15, rax
	movzx	eax, BYTE PTR -91[rbp]
	movzx	ebx, al
	mov	rax, rbx
	lea	rdx, [rax+rax]
	lea	rax, SPE[rip+2560]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	xor	r14, rax
	mov	rax, rbx
	lea	rdx, [rax+rax]
	lea	rax, SPE[rip+6656]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	xor	r15, rax
	movzx	eax, BYTE PTR -90[rbp]
	movzx	ebx, al
	mov	rax, rbx
	lea	rdx, [rax+rax]
	lea	rax, SPE[rip+3072]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	xor	r14, rax
	mov	rax, rbx
	lea	rdx, [rax+rax]
	lea	rax, SPE[rip+7168]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	xor	r15, rax
	movzx	eax, BYTE PTR -89[rbp]
	movzx	ebx, al
	mov	rax, rbx
	lea	rdx, [rax+rax]
	lea	rax, SPE[rip+3584]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	xor	r14, rax
	mov	rax, rbx
	lea	rdx, [rax+rax]
	lea	rax, SPE[rip+7680]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	xor	r15, rax
	mov	eax, r9d
	sub	eax, 1
	mov	r9d, eax
	test	eax, eax
	jne	.L36
	sal	edi, 4
	mov	eax, edi
	cdqe
	neg	rax
	add	rcx, rax
	mov	rsi, rcx
	xor	r12, r14
	xor	r13, r15
	xor	r14, r12
	xor	r15, r13
	xor	r12, r14
	xor	r13, r15
.L35:
	sub	DWORD PTR -124[rbp], 1
	cmp	DWORD PTR -124[rbp], 0
	jns	.L37
	mov	rax, r12
	sar	rax, 3
	and	eax, 252645135
	mov	rdx, rax
	lea	rax, [r13+r13]
	and	eax, 4042322160
	or	rdx, rax
	mov	r12, rdx
	mov	rax, r14
	sar	rax, 3
	and	eax, 252645135
	mov	rdx, rax
	lea	rax, [r15+r15]
	and	eax, 4042322160
	or	rdx, rax
	mov	r13, rdx
	mov	QWORD PTR -96[rbp], r12
	mov	QWORD PTR -88[rbp], r13
	lea	rsi, -80[rbp]
	lea	rax, -96[rbp]
	mov	ecx, 8
	lea	rdx, CF6464[rip]
	mov	rdi, rax
	mov	eax, 0
	call	permute
	mov	r12, QWORD PTR -80[rbp]
	mov	r13, QWORD PTR -72[rbp]
	mov	QWORD PTR -96[rbp], r12
	mov	QWORD PTR -88[rbp], r13
	movzx	eax, BYTE PTR -96[rbp]
	mov	edx, eax
	mov	rax, QWORD PTR -112[rbp]
	mov	BYTE PTR [rax], dl
	movzx	edx, BYTE PTR -95[rbp]
	mov	rax, QWORD PTR -112[rbp]
	add	rax, 1
	mov	BYTE PTR [rax], dl
	movzx	edx, BYTE PTR -94[rbp]
	mov	rax, QWORD PTR -112[rbp]
	add	rax, 2
	mov	BYTE PTR [rax], dl
	movzx	edx, BYTE PTR -93[rbp]
	mov	rax, QWORD PTR -112[rbp]
	add	rax, 3
	mov	BYTE PTR [rax], dl
	movzx	edx, BYTE PTR -92[rbp]
	mov	rax, QWORD PTR -112[rbp]
	add	rax, 4
	mov	BYTE PTR [rax], dl
	movzx	edx, BYTE PTR -91[rbp]
	mov	rax, QWORD PTR -112[rbp]
	add	rax, 5
	mov	BYTE PTR [rax], dl
	movzx	edx, BYTE PTR -90[rbp]
	mov	rax, QWORD PTR -112[rbp]
	add	rax, 6
	mov	BYTE PTR [rax], dl
	movzx	edx, BYTE PTR -89[rbp]
	mov	rax, QWORD PTR -112[rbp]
	add	rax, 7
	mov	BYTE PTR [rax], dl
	mov	eax, 0
	mov	rsi, QWORD PTR -56[rbp]
	sub	rsi, QWORD PTR fs:40
	je	.L39
	call	__stack_chk_fail@PLT
.L39:
	add	rsp, 88
	pop	rbx
	pop	r12
	pop	r13
	pop	r14
	pop	r15
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE3:
	.size	des_cipher, .-des_cipher
	.type	init_des, @function
init_des:
.LFB4:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	r14
	push	r13
	push	r12
	push	rbx
	sub	rsp, 96
	.cfi_offset 14, -24
	.cfi_offset 13, -32
	.cfi_offset 12, -40
	.cfi_offset 3, -48
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -40[rbp], rax
	xor	eax, eax
	mov	r12d, 0
	jmp	.L41
.L42:
	movsx	rax, r12d
	lea	rdx, itoa64[rip]
	movzx	eax, BYTE PTR [rax+rdx]
	movzx	eax, al
	mov	ecx, r12d
	cdqe
	lea	rdx, a64toi[rip]
	mov	BYTE PTR [rax+rdx], cl
	add	r12d, 1
.L41:
	cmp	r12d, 63
	jle	.L42
	mov	r12d, 0
	jmp	.L43
.L44:
	movsx	rax, r12d
	lea	rdx, perm.1[rip]
	mov	BYTE PTR [rax+rdx], 0
	add	r12d, 1
.L43:
	cmp	r12d, 63
	jle	.L44
	mov	r12d, 0
	jmp	.L45
.L50:
	movsx	rax, r12d
	lea	rdx, PC2[rip]
	movzx	eax, BYTE PTR [rax+rdx]
	movzx	ebx, al
	test	rbx, rbx
	je	.L91
	movzx	eax, BYTE PTR Rotates[rip]
	movzx	eax, al
	sub	eax, 1
	cdqe
	add	rbx, rax
	movabs	rdx, 5270498306774157605
	mov	rax, rbx
	imul	rdx
	mov	rax, rdx
	sar	rax, 3
	mov	rcx, rbx
	sar	rcx, 63
	sub	rax, rcx
	mov	rdx, rax
	mov	rax, rdx
	sal	rax, 3
	sub	rax, rdx
	sal	rax, 2
	mov	rdx, rbx
	sub	rdx, rax
	movzx	eax, BYTE PTR Rotates[rip]
	movzx	eax, al
	cmp	rdx, rax
	jge	.L48
	sub	rbx, 28
.L48:
	lea	rax, PC1[rip]
	movzx	eax, BYTE PTR [rbx+rax]
	movzx	ebx, al
	test	rbx, rbx
	jle	.L49
	sub	rbx, 1
	xor	rbx, 7
	add	rbx, 1
.L49:
	mov	ecx, ebx
	movsx	rax, r12d
	lea	rdx, perm.1[rip]
	mov	BYTE PTR [rax+rdx], cl
	jmp	.L47
.L91:
	nop
.L47:
	add	r12d, 1
.L45:
	cmp	r12d, 63
	jle	.L50
	mov	ecx, 8
	mov	edx, 8
	lea	rsi, perm.1[rip]
	lea	rdi, PC1ROT[rip]
	mov	eax, 0
	call	init_perm
	mov	r13d, 0
	jmp	.L51
.L63:
	mov	r12d, 0
	jmp	.L52
.L53:
	movsx	rax, r12d
	mov	BYTE PTR -112[rbp+rax], 0
	movsx	rax, r12d
	movzx	edx, BYTE PTR -112[rbp+rax]
	movsx	rax, r12d
	lea	rcx, perm.1[rip]
	mov	BYTE PTR [rax+rcx], dl
	add	r12d, 1
.L52:
	cmp	r12d, 63
	jle	.L53
	mov	r12d, 0
	jmp	.L54
.L57:
	movsx	rax, r12d
	lea	rdx, PC2[rip]
	movzx	eax, BYTE PTR [rax+rdx]
	movzx	ebx, al
	test	rbx, rbx
	je	.L92
	mov	edx, r12d
	lea	rax, -1[rbx]
	add	edx, 1
	mov	BYTE PTR -112[rbp+rax], dl
	jmp	.L56
.L92:
	nop
.L56:
	add	r12d, 1
.L54:
	cmp	r12d, 63
	jle	.L57
	mov	r12d, 0
	jmp	.L58
.L62:
	movsx	rax, r12d
	lea	rdx, PC2[rip]
	movzx	eax, BYTE PTR [rax+rdx]
	movzx	ebx, al
	test	rbx, rbx
	je	.L93
	movsx	rax, r13d
	add	rbx, rax
	movabs	rdx, 5270498306774157605
	mov	rax, rbx
	imul	rdx
	mov	rax, rdx
	sar	rax, 3
	mov	rcx, rbx
	sar	rcx, 63
	sub	rax, rcx
	mov	rdx, rax
	mov	rax, rdx
	sal	rax, 3
	sub	rax, rdx
	sal	rax, 2
	mov	rdx, rbx
	sub	rdx, rax
	movsx	rax, r13d
	cmp	rdx, rax
	jg	.L61
	sub	rbx, 28
.L61:
	movzx	edx, BYTE PTR -112[rbp+rbx]
	movsx	rax, r12d
	lea	rcx, perm.1[rip]
	mov	BYTE PTR [rax+rcx], dl
	jmp	.L60
.L93:
	nop
.L60:
	add	r12d, 1
.L58:
	cmp	r12d, 63
	jle	.L62
	movsx	rax, r13d
	sal	rax, 12
	mov	rdx, rax
	lea	rax, PC2ROT[rip]
	add	rax, rdx
	mov	ecx, 8
	mov	edx, 8
	lea	rsi, perm.1[rip]
	mov	rdi, rax
	mov	eax, 0
	call	init_perm
	add	r13d, 1
.L51:
	cmp	r13d, 1
	jle	.L63
	mov	r12d, 0
	jmp	.L64
.L72:
	mov	r13d, 0
	jmp	.L65
.L71:
	cmp	r13d, 1
	jle	.L66
	mov	eax, r12d
	add	eax, eax
	add	eax, r12d
	add	eax, eax
	add	eax, r13d
	sub	eax, 2
	cdqe
	lea	rdx, ExpandTr[rip]
	movzx	eax, BYTE PTR [rax+rdx]
	movzx	eax, al
	sub	eax, 1
	cdqe
	lea	rdx, IP[rip]
	movzx	eax, BYTE PTR [rax+rdx]
	movzx	eax, al
	jmp	.L67
.L66:
	mov	eax, 0
.L67:
	mov	rbx, rax
	cmp	rbx, 32
	jle	.L68
	sub	rbx, 32
	jmp	.L69
.L68:
	test	rbx, rbx
	jle	.L69
	sub	rbx, 1
.L69:
	test	rbx, rbx
	jle	.L70
	sub	rbx, 1
	xor	rbx, 7
	add	rbx, 1
.L70:
	lea	eax, 0[0+r12*8]
	add	eax, r13d
	mov	ecx, ebx
	cdqe
	lea	rdx, perm.1[rip]
	mov	BYTE PTR [rax+rdx], cl
	add	r13d, 1
.L65:
	cmp	r13d, 7
	jle	.L71
	add	r12d, 1
.L64:
	cmp	r12d, 7
	jle	.L72
	mov	ecx, 8
	mov	edx, 4
	lea	rsi, perm.1[rip]
	lea	rdi, IE3264[rip]
	mov	eax, 0
	call	init_perm
	mov	r12d, 0
	jmp	.L73
.L75:
	movsx	rax, r12d
	lea	rdx, CIFP[rip]
	movzx	eax, BYTE PTR [rax+rdx]
	movzx	eax, al
	sub	eax, 1
	cdqe
	lea	rdx, IP[rip]
	movzx	eax, BYTE PTR [rax+rdx]
	movzx	ebx, al
	test	rbx, rbx
	jle	.L74
	sub	rbx, 1
	xor	rbx, 7
	add	rbx, 1
.L74:
	mov	eax, r12d
	lea	rdx, -1[rbx]
	lea	ecx, 1[rax]
	lea	rax, perm.1[rip]
	mov	BYTE PTR [rdx+rax], cl
	add	r12d, 1
.L73:
	cmp	r12d, 63
	jle	.L75
	mov	ecx, 8
	mov	edx, 8
	lea	rsi, perm.1[rip]
	lea	rdi, CF6464[rip]
	mov	eax, 0
	call	init_perm
	mov	r12d, 0
	jmp	.L76
.L77:
	movsx	rax, r12d
	lea	rdx, ExpandTr[rip]
	movzx	eax, BYTE PTR [rax+rdx]
	movzx	eax, al
	sub	eax, 1
	cdqe
	lea	rdx, P32Tr[rip]
	movzx	edx, BYTE PTR [rax+rdx]
	movsx	rax, r12d
	lea	rcx, perm.1[rip]
	mov	BYTE PTR [rax+rcx], dl
	add	r12d, 1
.L76:
	cmp	r12d, 47
	jle	.L77
	mov	r14d, 0
	jmp	.L78
.L89:
	mov	r13d, 0
	jmp	.L79
.L88:
	mov	eax, r13d
	sal	eax, 5
	and	eax, 32
	mov	edx, eax
	mov	eax, r13d
	sar	eax
	sal	eax, 3
	and	eax, 8
	or	edx, eax
	mov	eax, r13d
	and	eax, 4
	or	edx, eax
	mov	eax, r13d
	sar	eax, 3
	add	eax, eax
	and	eax, 2
	or	edx, eax
	mov	eax, r13d
	sar	eax, 4
	and	eax, 1
	or	edx, eax
	mov	eax, r13d
	sar	eax, 5
	sal	eax, 4
	and	eax, 16
	or	eax, edx
	movsx	rbx, eax
	movsx	rax, r14d
	sal	rax, 6
	lea	rdx, [rax+rbx]
	lea	rax, S[rip]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	ebx, al
	mov	rax, rbx
	sar	rax, 3
	and	eax, 1
	mov	rdx, rax
	mov	rax, rbx
	sar	rax, 2
	add	rax, rax
	and	eax, 2
	or	rdx, rax
	mov	rax, rbx
	sar	rax
	sal	rax, 2
	and	eax, 4
	or	rdx, rax
	lea	rax, 0[0+rbx*8]
	and	eax, 8
	mov	rbx, rdx
	or	rbx, rax
	mov	r12d, 0
	jmp	.L80
.L81:
	movsx	rax, r12d
	lea	rdx, tmp32.0[rip]
	mov	BYTE PTR [rax+rdx], 0
	add	r12d, 1
.L80:
	cmp	r12d, 31
	jle	.L81
	mov	r12d, 0
	jmp	.L82
.L83:
	mov	rax, rbx
	mov	ecx, r12d
	sar	rax, cl
	mov	edx, eax
	lea	eax, 0[0+r14*4]
	add	eax, r12d
	mov	ecx, edx
	and	ecx, 1
	cdqe
	lea	rdx, tmp32.0[rip]
	mov	BYTE PTR [rax+rdx], cl
	add	r12d, 1
.L82:
	cmp	r12d, 3
	jle	.L83
	mov	ebx, 0
	mov	r12d, 24
	jmp	.L84
.L85:
	lea	rcx, [rbx+rbx]
	movsx	rax, r12d
	lea	rdx, perm.1[rip]
	movzx	eax, BYTE PTR [rax+rdx]
	movzx	eax, al
	sub	eax, 1
	cdqe
	lea	rdx, tmp32.0[rip]
	movzx	eax, BYTE PTR [rax+rdx]
	movzx	eax, al
	or	rcx, rax
	mov	rbx, rcx
.L84:
	sub	r12d, 1
	test	r12d, r12d
	jns	.L85
	mov	eax, ebx
	mov	BYTE PTR -128[rbp], al
	sar	rbx, 6
	mov	eax, ebx
	mov	BYTE PTR -127[rbp], al
	sar	rbx, 6
	mov	eax, ebx
	mov	BYTE PTR -126[rbp], al
	sar	rbx, 6
	mov	eax, ebx
	mov	BYTE PTR -125[rbp], al
	mov	rax, QWORD PTR -128[rbp]
	sal	rax, 2
	and	eax, 4244438268
	movsx	rcx, r13d
	movsx	rdx, r14d
	sal	rdx, 6
	add	rdx, rcx
	lea	rcx, 0[0+rdx*8]
	lea	rdx, SPE[rip]
	mov	QWORD PTR [rcx+rdx], rax
	mov	ebx, 0
	mov	r12d, 24
	jmp	.L86
.L87:
	lea	rcx, [rbx+rbx]
	lea	eax, 24[r12]
	cdqe
	lea	rdx, perm.1[rip]
	movzx	eax, BYTE PTR [rax+rdx]
	movzx	eax, al
	sub	eax, 1
	cdqe
	lea	rdx, tmp32.0[rip]
	movzx	eax, BYTE PTR [rax+rdx]
	movzx	eax, al
	or	rcx, rax
	mov	rbx, rcx
.L86:
	sub	r12d, 1
	test	r12d, r12d
	jns	.L87
	mov	eax, ebx
	mov	BYTE PTR -128[rbp], al
	sar	rbx, 6
	mov	eax, ebx
	mov	BYTE PTR -127[rbp], al
	sar	rbx, 6
	mov	eax, ebx
	mov	BYTE PTR -126[rbp], al
	sar	rbx, 6
	mov	eax, ebx
	mov	BYTE PTR -125[rbp], al
	mov	rax, QWORD PTR -128[rbp]
	sal	rax, 2
	and	eax, 4244438268
	movsx	rcx, r13d
	movsx	rdx, r14d
	sal	rdx, 6
	add	rdx, rcx
	add	rdx, 512
	lea	rcx, 0[0+rdx*8]
	lea	rdx, SPE[rip]
	mov	QWORD PTR [rcx+rdx], rax
	add	r13d, 1
.L79:
	cmp	r13d, 63
	jle	.L88
	add	r14d, 1
.L78:
	cmp	r14d, 7
	jle	.L89
	nop
	mov	rax, QWORD PTR -40[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L90
	call	__stack_chk_fail@PLT
.L90:
	add	rsp, 96
	pop	rbx
	pop	r12
	pop	r13
	pop	r14
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE4:
	.size	init_des, .-init_des
	.type	init_perm, @function
init_perm:
.LFB5:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	r14
	push	r13
	push	r12
	push	rbx
	.cfi_offset 14, -24
	.cfi_offset 13, -32
	.cfi_offset 12, -40
	.cfi_offset 3, -48
	mov	QWORD PTR -40[rbp], rdi
	mov	QWORD PTR -48[rbp], rsi
	mov	DWORD PTR -52[rbp], edx
	mov	DWORD PTR -56[rbp], ecx
	mov	ebx, 0
	jmp	.L95
.L101:
	movsx	rdx, ebx
	mov	rax, QWORD PTR -48[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	lea	r13d, -1[rax]
	test	r13d, r13d
	js	.L102
	mov	r14d, r13d
	sar	r14d, 2
	mov	eax, r13d
	and	eax, 3
	mov	edx, 1
	mov	ecx, eax
	sal	edx, cl
	mov	r13d, edx
	mov	r12d, 0
	jmp	.L98
.L100:
	mov	eax, r12d
	and	eax, r13d
	test	eax, eax
	je	.L99
	movsx	rax, r14d
	sal	rax, 8
	mov	rdx, rax
	mov	rax, QWORD PTR -40[rbp]
	lea	rcx, [rdx+rax]
	mov	eax, ebx
	sar	eax, 3
	movsx	rdx, eax
	movsx	rax, r12d
	sal	rax, 4
	add	rax, rcx
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	mov	esi, eax
	mov	eax, ebx
	and	eax, 7
	mov	edx, 1
	mov	ecx, eax
	sal	edx, cl
	mov	eax, edx
	or	esi, eax
	mov	edx, esi
	movsx	rax, r14d
	sal	rax, 8
	mov	rcx, rax
	mov	rax, QWORD PTR -40[rbp]
	lea	rsi, [rcx+rax]
	mov	eax, ebx
	sar	eax, 3
	movsx	rcx, eax
	movsx	rax, r12d
	sal	rax, 4
	add	rax, rsi
	add	rax, rcx
	mov	BYTE PTR [rax], dl
.L99:
	add	r12d, 1
.L98:
	cmp	r12d, 15
	jle	.L100
	jmp	.L97
.L102:
	nop
.L97:
	add	ebx, 1
.L95:
	mov	eax, DWORD PTR -56[rbp]
	sal	eax, 3
	cmp	ebx, eax
	jl	.L101
	nop
	nop
	pop	rbx
	pop	r12
	pop	r13
	pop	r14
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE5:
	.size	init_perm, .-init_perm
	.globl	setkey
	.type	setkey, @function
setkey:
.LFB6:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	r13
	push	r12
	push	rbx
	sub	rsp, 40
	.cfi_offset 13, -24
	.cfi_offset 12, -32
	.cfi_offset 3, -40
	mov	rax, rdi
	mov	rsi, QWORD PTR fs:40
	mov	QWORD PTR -40[rbp], rsi
	xor	esi, esi
	mov	ebx, 0
	jmp	.L104
.L107:
	mov	r12d, 0
	mov	r13d, 0
	jmp	.L105
.L106:
	add	r12d, r12d
	mov	rdx, rax
	lea	rax, 1[rdx]
	movzx	edx, BYTE PTR [rdx]
	movzx	edx, dl
	or	r12d, edx
	add	r13d, 1
.L105:
	cmp	r13d, 7
	jle	.L106
	mov	ecx, r12d
	movsx	rdx, ebx
	mov	BYTE PTR -64[rbp+rdx], cl
	add	ebx, 1
.L104:
	cmp	ebx, 7
	jle	.L107
	lea	rax, -64[rbp]
	mov	rdi, rax
	mov	eax, 0
	call	des_setkey
	mov	rsi, QWORD PTR -40[rbp]
	sub	rsi, QWORD PTR fs:40
	je	.L109
	call	__stack_chk_fail@PLT
.L109:
	add	rsp, 40
	pop	rbx
	pop	r12
	pop	r13
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	setkey, .-setkey
	.globl	encrypt
	.type	encrypt, @function
encrypt:
.LFB7:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	r14
	push	r13
	push	r12
	push	rbx
	sub	rsp, 48
	.cfi_offset 14, -24
	.cfi_offset 13, -32
	.cfi_offset 12, -40
	.cfi_offset 3, -48
	mov	r14, rdi
	mov	DWORD PTR -68[rbp], esi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -40[rbp], rax
	xor	eax, eax
	mov	ebx, 0
	jmp	.L111
.L114:
	mov	r12d, 0
	mov	r13d, 0
	jmp	.L112
.L113:
	add	r12d, r12d
	mov	rax, r14
	lea	r14, 1[rax]
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	or	r12d, eax
	add	r13d, 1
.L112:
	cmp	r13d, 7
	jle	.L113
	mov	edx, r12d
	movsx	rax, ebx
	mov	BYTE PTR -64[rbp+rax], dl
	add	ebx, 1
.L111:
	cmp	ebx, 7
	jle	.L114
	cmp	DWORD PTR -68[rbp], 0
	je	.L115
	mov	edx, -1
	jmp	.L116
.L115:
	mov	edx, 1
.L116:
	lea	rsi, -64[rbp]
	lea	rax, -64[rbp]
	mov	ecx, edx
	mov	edx, 0
	mov	rdi, rax
	mov	eax, 0
	call	des_cipher
	test	eax, eax
	je	.L117
	mov	eax, 1
	jmp	.L123
.L117:
	mov	ebx, 7
	jmp	.L119
.L122:
	movsx	rax, ebx
	movzx	eax, BYTE PTR -64[rbp+rax]
	movzx	r12d, al
	mov	r13d, 7
	jmp	.L120
.L121:
	mov	eax, r12d
	sub	r14, 1
	and	eax, 1
	mov	BYTE PTR [r14], al
	sar	r12d
	sub	r13d, 1
.L120:
	test	r13d, r13d
	jns	.L121
	sub	ebx, 1
.L119:
	test	ebx, ebx
	jns	.L122
	mov	eax, 0
.L123:
	mov	rcx, QWORD PTR -40[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L124
	call	__stack_chk_fail@PLT
.L124:
	add	rsp, 48
	pop	rbx
	pop	r12
	pop	r13
	pop	r14
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	encrypt, .-encrypt
	.local	des_ready.2
	.comm	des_ready.2,4,4
	.local	perm.1
	.comm	perm.1,64,32
	.local	tmp32.0
	.comm	tmp32.0,32,32
	.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	"184518718.c"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	permute, %function
permute:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	push	{r4, r5, r6, r7, fp}
	add	fp, sp, #16
	sub	sp, sp, #20
	str	r0, [fp, #-24]
	str	r1, [fp, #-28]
	str	r3, [fp, #-32]
	mov	r6, #0
	mov	r5, #0
.L2:
	ldr	r3, [fp, #-24]
	add	r1, r3, #1
	str	r1, [fp, #-24]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r7, r3
	mov	r3, r7
	and	r3, r3, #15
	lsl	r3, r3, #3
	add	r4, r2, r3
	ldr	r3, [r4]
	orr	r6, r6, r3
	ldr	r3, [r4, #4]
	orr	r5, r5, r3
	add	r2, r2, #128
	asr	r3, r7, #4
	lsl	r3, r3, #3
	add	r4, r2, r3
	ldr	r3, [r4]
	orr	r6, r6, r3
	ldr	r3, [r4, #4]
	orr	r5, r5, r3
	add	r2, r2, #128
	ldr	r3, [fp, #-32]
	sub	r3, r3, #1
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-32]
	cmp	r3, #0
	bgt	.L2
	ldr	r3, [fp, #-28]
	str	r6, [r3]
	ldr	r3, [fp, #-28]
	str	r5, [r3, #4]
	nop
	sub	sp, fp, #16
	@ sp needed
	pop	{r4, r5, r6, r7, fp}
	bx	lr
	.size	permute, .-permute
	.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"
	.align	2
	.type	ExpandTr, %object
	.size	ExpandTr, 48
ExpandTr:
	.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"
	.align	2
	.type	PC1, %object
	.size	PC1, 56
PC1:
	.ascii	"91)!\031\021\011\001:2*\"\032\022\012\002;3+#\033\023"
	.ascii	"\013\003<4,$?7/'\037\027\017\007>6.&\036\026\016\006"
	.ascii	"=5-%\035\025\015\005\034\024\014\004"
	.align	2
	.type	Rotates, %object
	.size	Rotates, 16
Rotates:
	.ascii	"\001\001\002\002\002\002\002\002\001\002\002\002\002"
	.ascii	"\002\002\001"
	.align	2
	.type	PC2, %object
	.size	PC2, 64
PC2:
	.ascii	"\011\022\016\021\013\030\001\005\026\031\003\034\017"
	.ascii	"\006\025\012#&\027\023\014\004\032\010+6\020\007\033"
	.ascii	"\024\015\002\000\000)4\037%/7\000\000\036(3-!0\000\000"
	.ascii	",1'8\"5\000\000.*2$\035 "
	.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\000\017\007\004\016\002\015\001\012\006"
	.ascii	"\014\013\011\005\003\010\004\001\016\010\015\006\002"
	.ascii	"\013\017\014\011\007\003\012\005\000\017\014\010\002"
	.ascii	"\004\011\001\007\005\013\003\016\012\000\006\015"
	.ascii	"\017\001\010\016\006\013\003\004\011\007\002\015\014"
	.ascii	"\000\005\012\003\015\004\007\017\002\010\016\014\000"
	.ascii	"\001\012\006\011\013\005\000\016\007\013\012\004\015"
	.ascii	"\001\005\010\014\006\011\003\002\017\015\010\012\001"
	.ascii	"\003\017\004\002\013\006\007\014\000\005\016\011"
	.ascii	"\012\000\011\016\006\003\017\005\001\015\014\007\013"
	.ascii	"\004\002\010\015\007\000\011\003\004\006\012\002\010"
	.ascii	"\005\016\014\013\017\001\015\006\004\011\010\017\003"
	.ascii	"\000\013\001\002\014\005\012\016\007\001\012\015\000"
	.ascii	"\006\011\010\007\004\017\016\003\013\005\002\014"
	.ascii	"\007\015\016\003\000\006\011\012\001\002\010\005\013"
	.ascii	"\014\004\017\015\010\013\005\006\017\000\003\004\007"
	.ascii	"\002\014\001\012\016\011\012\006\011\000\014\013\007"
	.ascii	"\015\017\001\003\016\005\002\010\004\003\017\000\006"
	.ascii	"\012\001\015\010\011\004\005\013\014\007\002\016"
	.ascii	"\002\014\004\001\007\012\013\006\010\005\003\017\015"
	.ascii	"\000\016\011\016\013\002\014\004\007\015\001\005\000"
	.ascii	"\017\012\003\011\010\006\004\002\001\013\012\015\007"
	.ascii	"\010\017\011\014\005\006\003\000\016\013\010\014\007"
	.ascii	"\001\016\002\015\006\017\000\011\012\004\005\003"
	.ascii	"\014\001\012\017\011\002\006\010\000\015\003\004\016"
	.ascii	"\007\005\013\012\017\004\002\007\014\011\005\006\001"
	.ascii	"\015\016\000\013\003\010\011\016\017\005\002\010\014"
	.ascii	"\003\007\000\004\012\001\015\013\006\004\003\002\014"
	.ascii	"\011\005\017\012\013\016\001\007\006\000\010\015"
	.ascii	"\004\013\002\016\017\000\010\015\003\014\011\007\005"
	.ascii	"\012\006\001\015\000\013\007\004\011\001\012\016\003"
	.ascii	"\005\014\002\017\010\006\001\004\013\015\014\003\007"
	.ascii	"\016\012\017\006\010\000\005\011\002\006\013\015\010"
	.ascii	"\001\004\012\007\011\005\000\017\016\002\003\014"
	.ascii	"\015\002\010\004\006\017\013\001\012\011\003\016\005"
	.ascii	"\000\014\007\001\017\015\010\012\003\007\004\014\005"
	.ascii	"\006\013\000\016\011\002\007\013\004\001\011\014\016"
	.ascii	"\002\000\006\012\015\017\003\005\010\002\001\016\007"
	.ascii	"\004\012\010\015\017\014\011\000\003\005\006\013"
	.align	2
	.type	P32Tr, %object
	.size	P32Tr, 32
P32Tr:
	.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"
	.align	2
	.type	CIFP, %object
	.size	CIFP, 64
CIFP:
	.ascii	"\001\002\003\004\021\022\023\024\005\006\007\010\025"
	.ascii	"\026\027\030\011\012\013\014\031\032\033\034\015\016"
	.ascii	"\017\020\035\036\037 !\"#$1234%&'(5678)*+,9:;<-./0="
	.ascii	">?@"
	.align	2
	.type	itoa64, %object
	.size	itoa64, 65
itoa64:
	.ascii	"./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklm"
	.ascii	"nopqrstuvwxyz\000"
	.local	a64toi
	.comm	a64toi,128,4
	.local	PC1ROT
	.comm	PC1ROT,2048,4
	.local	PC2ROT
	.comm	PC2ROT,4096,4
	.local	IE3264
	.comm	IE3264,1024,4
	.local	SPE
	.comm	SPE,4096,4
	.local	CF6464
	.comm	CF6464,2048,4
	.local	constdatablock
	.comm	constdatablock,8,4
	.local	cryptresult
	.comm	cryptresult,21,4
	.section	.rodata
	.align	2
.LC0:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	crypt
	.syntax unified
	.arm
	.fpu softvfp
	.type	crypt, %function
crypt:
	@ args = 0, pretend = 0, frame = 32
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, fp, lr}
	add	fp, sp, #24
	sub	sp, sp, #36
	mov	r7, r0
	mov	r8, r1
	ldr	r3, .L26
	ldr	r3, [r3]
	str	r3, [fp, #-32]
	mov	r3,#0
	mov	r4, #0
	b	.L4
.L6:
	ldrb	r3, [r7]	@ zero_extendqisi2
	lsl	r6, r3, #1
	cmp	r6, #0
	beq	.L5
	add	r7, r7, #1
.L5:
	and	r2, r6, #255
	sub	r3, fp, #28
	add	r3, r3, r4
	strb	r2, [r3, #-20]
	add	r4, r4, #1
.L4:
	cmp	r4, #7
	ble	.L6
	sub	r3, fp, #48
	mov	r0, r3
	bl	des_setkey
	mov	r3, r0
	cmp	r3, #0
	beq	.L7
	mov	r3, #0
	b	.L24
.L7:
	ldr	r5, .L26+4
	ldrb	r3, [r8]	@ zero_extendqisi2
	cmp	r3, #95
	bne	.L9
	b	.L10
.L15:
	sub	r1, fp, #48
	sub	r0, fp, #48
	mov	r3, #1
	mov	r2, #0
	bl	des_cipher
	mov	r3, r0
	cmp	r3, #0
	beq	.L11
	mov	r3, #0
	b	.L24
.L11:
	mov	r4, #0
	b	.L12
.L14:
	ldrb	r3, [r7]	@ zero_extendqisi2
	lsl	r6, r3, #1
	cmp	r6, #0
	beq	.L13
	add	r7, r7, #1
.L13:
	sub	r3, fp, #28
	add	r3, r3, r4
	ldrb	r3, [r3, #-20]	@ zero_extendqisi2
	lsl	r3, r3, #24
	asr	r2, r3, #24
	lsl	r3, r6, #24
	asr	r3, r3, #24
	eor	r3, r3, r2
	lsl	r3, r3, #24
	asr	r3, r3, #24
	and	r2, r3, #255
	sub	r3, fp, #28
	add	r3, r3, r4
	strb	r2, [r3, #-20]
	add	r4, r4, #1
.L12:
	cmp	r4, #7
	ble	.L14
	sub	r3, fp, #48
	mov	r0, r3
	bl	des_setkey
	mov	r3, r0
	cmp	r3, #0
	beq	.L10
	mov	r3, #0
	b	.L24
.L10:
	ldrb	r3, [r7]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L15
	mov	r2, r8
	add	r8, r2, #1
	mov	r3, r5
	add	r5, r3, #1
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
	mov	r3, #0
	str	r3, [fp, #-56]
	mov	r4, #4
	b	.L16
.L18:
	mov	r3, r4
	add	r3, r8, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r6, r3
	cmp	r6, #0
	bne	.L17
	mov	r6, #46
.L17:
	mov	r3, r4
	add	r3, r5, r3
	and	r2, r6, #255
	strb	r2, [r3]
	ldr	r3, [fp, #-56]
	lsl	r3, r3, #6
	ldr	r2, .L26+8
	ldrb	r2, [r2, r6]	@ zero_extendqisi2
	orr	r3, r3, r2
	str	r3, [fp, #-56]
.L16:
	sub	r4, r4, #1
	cmp	r4, #0
	bge	.L18
	add	r8, r8, #4
	add	r5, r5, #4
	mov	r3, #4
	str	r3, [fp, #-52]
	b	.L19
.L9:
	mov	r3, #25
	str	r3, [fp, #-56]
	mov	r3, #2
	str	r3, [fp, #-52]
.L19:
	mov	r3, #0
	str	r3, [fp, #-60]
	ldr	r4, [fp, #-52]
	b	.L20
.L22:
	mov	r3, r4
	add	r3, r8, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r6, r3
	cmp	r6, #0
	bne	.L21
	mov	r6, #46
.L21:
	mov	r3, r4
	add	r3, r5, r3
	and	r2, r6, #255
	strb	r2, [r3]
	ldr	r3, [fp, #-60]
	lsl	r3, r3, #6
	ldr	r2, .L26+8
	ldrb	r2, [r2, r6]	@ zero_extendqisi2
	orr	r3, r3, r2
	str	r3, [fp, #-60]
.L20:
	sub	r4, r4, #1
	cmp	r4, #0
	bge	.L22
	ldr	r3, [fp, #-52]
	add	r5, r5, r3
	sub	r1, fp, #40
	ldr	r3, [fp, #-56]
	ldr	r2, [fp, #-60]
	ldr	r0, .L26+12
	bl	des_cipher
	mov	r3, r0
	cmp	r3, #0
	beq	.L23
	mov	r3, #0
	b	.L24
.L23:
	ldrb	r3, [fp, #-40]	@ zero_extendqisi2
	lsl	r3, r3, #8
	ldrb	r2, [fp, #-39]	@ zero_extendqisi2
	orr	r3, r3, r2
	lsl	r3, r3, #8
	ldrb	r2, [fp, #-38]	@ zero_extendqisi2
	orr	r4, r3, r2
	and	r2, r4, #63
	add	r3, r5, #3
	ldr	r1, .L26+16
	ldrb	r2, [r1, r2]	@ zero_extendqisi2
	strb	r2, [r3]
	asr	r4, r4, #6
	and	r2, r4, #63
	add	r3, r5, #2
	ldr	r1, .L26+16
	ldrb	r2, [r1, r2]	@ zero_extendqisi2
	strb	r2, [r3]
	asr	r4, r4, #6
	and	r2, r4, #63
	add	r3, r5, #1
	ldr	r1, .L26+16
	ldrb	r2, [r1, r2]	@ zero_extendqisi2
	strb	r2, [r3]
	asr	r4, r4, #6
	ldr	r3, .L26+16
	ldrb	r3, [r3, r4]	@ zero_extendqisi2
	strb	r3, [r5]
	add	r5, r5, #4
	ldrb	r3, [fp, #-37]	@ zero_extendqisi2
	lsl	r3, r3, #8
	ldrb	r2, [fp, #-36]	@ zero_extendqisi2
	orr	r3, r3, r2
	lsl	r3, r3, #8
	ldrb	r2, [fp, #-35]	@ zero_extendqisi2
	orr	r4, r3, r2
	and	r2, r4, #63
	add	r3, r5, #3
	ldr	r1, .L26+16
	ldrb	r2, [r1, r2]	@ zero_extendqisi2
	strb	r2, [r3]
	asr	r4, r4, #6
	and	r2, r4, #63
	add	r3, r5, #2
	ldr	r1, .L26+16
	ldrb	r2, [r1, r2]	@ zero_extendqisi2
	strb	r2, [r3]
	asr	r4, r4, #6
	and	r2, r4, #63
	add	r3, r5, #1
	ldr	r1, .L26+16
	ldrb	r2, [r1, r2]	@ zero_extendqisi2
	strb	r2, [r3]
	asr	r4, r4, #6
	ldr	r3, .L26+16
	ldrb	r3, [r3, r4]	@ zero_extendqisi2
	strb	r3, [r5]
	add	r5, r5, #4
	ldrb	r3, [fp, #-34]	@ zero_extendqisi2
	lsl	r3, r3, #8
	ldrb	r2, [fp, #-33]	@ zero_extendqisi2
	orr	r3, r3, r2
	lsl	r4, r3, #2
	and	r2, r4, #63
	add	r3, r5, #2
	ldr	r1, .L26+16
	ldrb	r2, [r1, r2]	@ zero_extendqisi2
	strb	r2, [r3]
	asr	r4, r4, #6
	and	r2, r4, #63
	add	r3, r5, #1
	ldr	r1, .L26+16
	ldrb	r2, [r1, r2]	@ zero_extendqisi2
	strb	r2, [r3]
	asr	r4, r4, #6
	ldr	r3, .L26+16
	ldrb	r3, [r3, r4]	@ zero_extendqisi2
	strb	r3, [r5]
	add	r3, r5, #3
	mov	r2, #0
	strb	r2, [r3]
	ldr	r3, .L26+4
.L24:
	ldr	r2, .L26
	ldr	r1, [r2]
	ldr	r2, [fp, #-32]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L25
	bl	__stack_chk_fail
.L25:
	mov	r0, r3
	sub	sp, fp, #24
	@ sp needed
	pop	{r4, r5, r6, r7, r8, fp, pc}
.L27:
	.align	2
.L26:
	.word	.LC0
	.word	cryptresult
	.word	a64toi
	.word	constdatablock
	.word	itoa64
	.size	crypt, .-crypt
	.local	KS
	.comm	KS,128,4
	.section	.rodata
	.align	2
.LC1:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	des_setkey
	.syntax unified
	.arm
	.fpu softvfp
	.type	des_setkey, %function
des_setkey:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #16
	mov	r4, r0
	ldr	r3, .L34
	ldr	r3, [r3]
	str	r3, [fp, #-24]
	mov	r3,#0
	ldr	r3, .L34+4
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L29
	bl	init_des
	ldr	r3, .L34+4
	mov	r2, #1
	str	r2, [r3]
.L29:
	sub	r1, fp, #32
	mov	r3, #8
	ldr	r2, .L34+8
	mov	r0, r4
	bl	permute
	ldr	r5, [fp, #-32]
	ldr	r6, [fp, #-28]
	ldr	r4, .L34+12
	ldr	r3, .L34+16
	and	r3, r3, r5
	str	r3, [r4]
	str	r6, [r4, #4]
	mov	r7, #1
	b	.L30
.L31:
	add	r4, r4, #8
	str	r5, [r4]
	str	r6, [r4, #4]
	ldr	r3, .L34+20
	ldrb	r3, [r3, r7]	@ zero_extendqisi2
	sub	r3, r3, #1
	lsl	r3, r3, #11
	ldr	r2, .L34+24
	add	r5, r3, r2
	sub	r1, fp, #32
	mov	r3, #8
	mov	r2, r5
	mov	r0, r4
	bl	permute
	ldr	r5, [fp, #-32]
	ldr	r6, [fp, #-28]
	ldr	r3, .L34+16
	and	r3, r3, r5
	str	r3, [r4]
	str	r6, [r4, #4]
	add	r7, r7, #1
.L30:
	cmp	r7, #15
	ble	.L31
	mov	r3, #0
	ldr	r2, .L34
	ldr	r1, [r2]
	ldr	r2, [fp, #-24]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L33
	bl	__stack_chk_fail
.L33:
	mov	r0, r3
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
.L35:
	.align	2
.L34:
	.word	.LC1
	.word	des_ready.4677
	.word	PC1ROT
	.word	KS
	.word	-50529028
	.word	Rotates
	.word	PC2ROT
	.size	des_setkey, .-des_setkey
	.section	.rodata
	.align	2
.LC2:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	des_cipher
	.syntax unified
	.arm
	.fpu softvfp
	.type	des_cipher, %function
des_cipher:
	@ args = 0, pretend = 0, frame = 40
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, r9, r10, fp, lr}
	add	fp, sp, #32
	sub	sp, sp, #44
	str	r0, [fp, #-64]
	str	r1, [fp, #-68]
	str	r2, [fp, #-72]
	str	r3, [fp, #-76]
	ldr	r3, .L44
	ldr	r3, [r3]
	str	r3, [fp, #-40]
	mov	r3,#0
	ldr	r4, [fp, #-72]
	and	r3, r4, #255
	strb	r3, [fp, #-48]
	asr	r4, r4, #6
	and	r3, r4, #255
	strb	r3, [fp, #-47]
	asr	r4, r4, #6
	and	r3, r4, #255
	strb	r3, [fp, #-46]
	asr	r4, r4, #6
	and	r3, r4, #255
	strb	r3, [fp, #-45]
	ldr	r3, [fp, #-48]
	lsl	r2, r3, #2
	ldr	r3, .L44+4
	and	r3, r3, r2
	str	r3, [fp, #-72]
	ldr	r3, [fp, #-64]
	ldrb	r3, [r3]	@ zero_extendqisi2
	strb	r3, [fp, #-56]
	ldr	r3, [fp, #-64]
	add	r3, r3, #1
	ldrb	r3, [r3]	@ zero_extendqisi2
	strb	r3, [fp, #-55]
	ldr	r3, [fp, #-64]
	add	r3, r3, #2
	ldrb	r3, [r3]	@ zero_extendqisi2
	strb	r3, [fp, #-54]
	ldr	r3, [fp, #-64]
	add	r3, r3, #3
	ldrb	r3, [r3]	@ zero_extendqisi2
	strb	r3, [fp, #-53]
	ldr	r3, [fp, #-64]
	add	r3, r3, #4
	ldrb	r3, [r3]	@ zero_extendqisi2
	strb	r3, [fp, #-52]
	ldr	r3, [fp, #-64]
	add	r3, r3, #5
	ldrb	r3, [r3]	@ zero_extendqisi2
	strb	r3, [fp, #-51]
	ldr	r3, [fp, #-64]
	add	r3, r3, #6
	ldrb	r3, [r3]	@ zero_extendqisi2
	strb	r3, [fp, #-50]
	ldr	r3, [fp, #-64]
	add	r3, r3, #7
	ldrb	r3, [r3]	@ zero_extendqisi2
	strb	r3, [fp, #-49]
	ldr	r4, [fp, #-56]
	ldr	r5, [fp, #-52]
	mov	r7, r4
	mov	r6, r5
	ldr	r3, .L44+8
	and	r3, r3, r4
	mov	r4, r3
	ldr	r3, .L44+8
	and	r3, r3, r5
	mov	r5, r3
	lsl	r3, r4, #1
	orr	r4, r5, r3
	ldr	r3, .L44+12
	and	r3, r3, r7
	mov	r7, r3
	asr	r3, r6, #1
	ldr	r6, .L44+8
	and	r6, r6, r3
	orr	r5, r7, r6
	str	r4, [fp, #-56]
	str	r5, [fp, #-52]
	sub	r1, fp, #48
	sub	r0, fp, #56
	mov	r3, #4
	ldr	r2, .L44+16
	bl	permute
	ldr	r4, [fp, #-48]
	ldr	r5, [fp, #-44]
	sub	r0, fp, #56
	add	r0, r0, #4
	sub	r1, fp, #48
	mov	r3, #4
	ldr	r2, .L44+16
	bl	permute
	ldr	r7, [fp, #-48]
	ldr	r6, [fp, #-44]
	ldr	r3, [fp, #-76]
	cmp	r3, #0
	blt	.L37
	ldr	r9, .L44+20
	mov	r3, #8
	mov	r1, r3
	b	.L39
.L37:
	ldr	r3, [fp, #-76]
	rsb	r3, r3, #0
	str	r3, [fp, #-76]
	ldr	r9, .L44+24
	mvn	r3, #7
	mov	r1, r3
	b	.L39
.L41:
	mov	r10, #8
.L40:
	eor	r2, r7, r6
	ldr	r3, [fp, #-72]
	and	r8, r2, r3
	eor	r2, r8, r7
	ldr	r3, [r9]
	eor	r3, r3, r2
	str	r3, [fp, #-56]
	eor	r2, r8, r6
	ldr	r3, [r9, #4]
	eor	r3, r3, r2
	str	r3, [fp, #-52]
	mov	r3, r1
	add	r9, r9, r3
	ldrb	r3, [fp, #-56]	@ zero_extendqisi2
	mov	r8, r3
	mov	r2, r8
	ldr	r3, .L44+28
	add	r3, r2, r3
	ldr	r3, [r3]
	eor	r4, r4, r3
	mov	r2, r8
	ldr	r3, .L44+32
	add	r3, r2, r3
	ldr	r3, [r3]
	eor	r5, r5, r3
	ldrb	r3, [fp, #-55]	@ zero_extendqisi2
	mov	r8, r3
	mov	r2, r8
	ldr	r3, .L44+36
	add	r3, r2, r3
	ldr	r3, [r3]
	eor	r4, r4, r3
	mov	r2, r8
	ldr	r3, .L44+40
	add	r3, r2, r3
	ldr	r3, [r3]
	eor	r5, r5, r3
	ldrb	r3, [fp, #-54]	@ zero_extendqisi2
	mov	r8, r3
	mov	r2, r8
	ldr	r3, .L44+44
	add	r3, r2, r3
	ldr	r3, [r3]
	eor	r4, r4, r3
	mov	r2, r8
	ldr	r3, .L44+48
	add	r3, r2, r3
	ldr	r3, [r3]
	eor	r5, r5, r3
	ldrb	r3, [fp, #-53]	@ zero_extendqisi2
	mov	r8, r3
	mov	r2, r8
	ldr	r3, .L44+52
	add	r3, r2, r3
	ldr	r3, [r3]
	eor	r4, r4, r3
	mov	r2, r8
	ldr	r3, .L44+56
	add	r3, r2, r3
	ldr	r3, [r3]
	eor	r5, r5, r3
	ldrb	r3, [fp, #-52]	@ zero_extendqisi2
	mov	r8, r3
	mov	r2, r8
	ldr	r3, .L44+60
	add	r3, r2, r3
	ldr	r3, [r3]
	eor	r4, r4, r3
	mov	r2, r8
	ldr	r3, .L44+64
	add	r3, r2, r3
	ldr	r3, [r3]
	eor	r5, r5, r3
	ldrb	r3, [fp, #-51]	@ zero_extendqisi2
	mov	r8, r3
	mov	r2, r8
	ldr	r3, .L44+68
	add	r3, r2, r3
	ldr	r3, [r3]
	eor	r4, r4, r3
	mov	r2, r8
	ldr	r3, .L44+72
	add	r3, r2, r3
	ldr	r3, [r3]
	eor	r5, r5, r3
	ldrb	r3, [fp, #-50]	@ zero_extendqisi2
	mov	r8, r3
	mov	r2, r8
	ldr	r3, .L44+76
	add	r3, r2, r3
	ldr	r3, [r3]
	eor	r4, r4, r3
	mov	r2, r8
	ldr	r3, .L44+80
	add	r3, r2, r3
	ldr	r3, [r3]
	eor	r5, r5, r3
	ldrb	r3, [fp, #-49]	@ zero_extendqisi2
	mov	r8, r3
	mov	r2, r8
	ldr	r3, .L44+84
	add	r3, r2, r3
	ldr	r3, [r3]
	eor	r4, r4, r3
	mov	r2, r8
	ldr	r3, .L44+88
	add	r3, r2, r3
	ldr	r3, [r3]
	eor	r5, r5, r3
	eor	r2, r4, r5
	ldr	r3, [fp, #-72]
	and	r8, r2, r3
	eor	r2, r8, r4
	ldr	r3, [r9]
	eor	r3, r3, r2
	str	r3, [fp, #-56]
	eor	r2, r8, r5
	ldr	r3, [r9, #4]
	eor	r3, r3, r2
	str	r3, [fp, #-52]
	mov	r3, r1
	add	r9, r9, r3
	ldrb	r3, [fp, #-56]	@ zero_extendqisi2
	mov	r8, r3
	mov	r2, r8
	ldr	r3, .L44+28
	add	r3, r2, r3
	ldr	r3, [r3]
	eor	r7, r7, r3
	mov	r2, r8
	ldr	r3, .L44+32
	add	r3, r2, r3
	ldr	r3, [r3]
	eor	r6, r6, r3
	ldrb	r3, [fp, #-55]	@ zero_extendqisi2
	mov	r8, r3
	mov	r2, r8
	ldr	r3, .L44+36
	add	r3, r2, r3
	ldr	r3, [r3]
	eor	r7, r7, r3
	mov	r2, r8
	ldr	r3, .L44+40
	add	r3, r2, r3
	ldr	r3, [r3]
	eor	r6, r6, r3
	ldrb	r3, [fp, #-54]	@ zero_extendqisi2
	mov	r8, r3
	mov	r2, r8
	ldr	r3, .L44+44
	add	r3, r2, r3
	ldr	r3, [r3]
	eor	r7, r7, r3
	mov	r2, r8
	ldr	r3, .L44+48
	add	r3, r2, r3
	ldr	r3, [r3]
	eor	r6, r6, r3
	ldrb	r3, [fp, #-53]	@ zero_extendqisi2
	mov	r8, r3
	mov	r2, r8
	ldr	r3, .L44+52
	add	r3, r2, r3
	ldr	r3, [r3]
	eor	r7, r7, r3
	mov	r2, r8
	ldr	r3, .L44+56
	add	r3, r2, r3
	ldr	r3, [r3]
	eor	r6, r6, r3
	ldrb	r3, [fp, #-52]	@ zero_extendqisi2
	mov	r8, r3
	mov	r2, r8
	ldr	r3, .L44+60
	add	r3, r2, r3
	ldr	r3, [r3]
	eor	r7, r7, r3
	mov	r2, r8
	ldr	r3, .L44+64
	add	r3, r2, r3
	ldr	r3, [r3]
	eor	r6, r6, r3
	ldrb	r3, [fp, #-51]	@ zero_extendqisi2
	mov	r8, r3
	mov	r2, r8
	ldr	r3, .L44+68
	add	r3, r2, r3
	ldr	r3, [r3]
	eor	r7, r7, r3
	mov	r2, r8
	ldr	r3, .L44+72
	add	r3, r2, r3
	ldr	r3, [r3]
	eor	r6, r6, r3
	ldrb	r3, [fp, #-50]	@ zero_extendqisi2
	mov	r8, r3
	mov	r2, r8
	ldr	r3, .L44+76
	add	r3, r2, r3
	ldr	r3, [r3]
	eor	r7, r7, r3
	mov	r2, r8
	ldr	r3, .L44+80
	add	r3, r2, r3
	ldr	r3, [r3]
	eor	r6, r6, r3
	ldrb	r3, [fp, #-49]	@ zero_extendqisi2
	mov	r8, r3
	mov	r2, r8
	ldr	r3, .L44+84
	add	r3, r2, r3
	ldr	r3, [r3]
	eor	r7, r7, r3
	mov	r2, r8
	ldr	r3, .L44+88
	add	r3, r2, r3
	ldr	r3, [r3]
	eor	r6, r6, r3
	sub	r10, r10, #1
	cmp	r10, #0
	bne	.L40
	lsl	r3, r1, #4
	rsb	r3, r3, #0
	add	r9, r9, r3
	eor	r4, r4, r7
	eor	r5, r5, r6
	eor	r7, r7, r4
	eor	r6, r6, r5
	eor	r4, r4, r7
	eor	r5, r5, r6
.L39:
	ldr	r3, [fp, #-76]
	sub	r3, r3, #1
	str	r3, [fp, #-76]
	ldr	r3, [fp, #-76]
	cmp	r3, #0
	bge	.L41
	asr	r3, r4, #3
	ldr	r2, .L44+92
	and	r2, r2, r3
	lsl	r3, r5, #1
	mov	r1, r3
	ldr	r3, .L44+96
	and	r3, r3, r1
	orr	r3, r2, r3
	mov	r4, r3
	asr	r3, r7, #3
	ldr	r2, .L44+92
	and	r2, r2, r3
	lsl	r3, r6, #1
	mov	r1, r3
	ldr	r3, .L44+96
	and	r3, r3, r1
	orr	r3, r2, r3
	mov	r5, r3
	str	r4, [fp, #-56]
	str	r5, [fp, #-52]
	sub	r1, fp, #48
	sub	r0, fp, #56
	mov	r3, #8
	ldr	r2, .L44+100
	bl	permute
	ldr	r4, [fp, #-48]
	ldr	r5, [fp, #-44]
	str	r4, [fp, #-56]
	str	r5, [fp, #-52]
	ldrb	r2, [fp, #-56]	@ zero_extendqisi2
	ldr	r3, [fp, #-68]
	strb	r2, [r3]
	ldr	r3, [fp, #-68]
	add	r3, r3, #1
	ldrb	r2, [fp, #-55]	@ zero_extendqisi2
	strb	r2, [r3]
	ldr	r3, [fp, #-68]
	add	r3, r3, #2
	ldrb	r2, [fp, #-54]	@ zero_extendqisi2
	strb	r2, [r3]
	ldr	r3, [fp, #-68]
	add	r3, r3, #3
	ldrb	r2, [fp, #-53]	@ zero_extendqisi2
	strb	r2, [r3]
	ldr	r3, [fp, #-68]
	add	r3, r3, #4
	ldrb	r2, [fp, #-52]	@ zero_extendqisi2
	strb	r2, [r3]
	ldr	r3, [fp, #-68]
	add	r3, r3, #5
	ldrb	r2, [fp, #-51]	@ zero_extendqisi2
	strb	r2, [r3]
	ldr	r3, [fp, #-68]
	add	r3, r3, #6
	ldrb	r2, [fp, #-50]	@ zero_extendqisi2
	strb	r2, [r3]
	ldr	r3, [fp, #-68]
	add	r3, r3, #7
	ldrb	r2, [fp, #-49]	@ zero_extendqisi2
	strb	r2, [r3]
	mov	r3, #0
	ldr	r2, .L44
	ldr	r1, [r2]
	ldr	r2, [fp, #-40]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L43
	bl	__stack_chk_fail
.L43:
	mov	r0, r3
	sub	sp, fp, #32
	@ sp needed
	pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
.L45:
	.align	2
.L44:
	.word	.LC2
	.word	-50529028
	.word	1431655765
	.word	-1431655766
	.word	IE3264
	.word	KS
	.word	KS+120
	.word	SPE
	.word	SPE+2048
	.word	SPE+256
	.word	SPE+2304
	.word	SPE+512
	.word	SPE+2560
	.word	SPE+768
	.word	SPE+2816
	.word	SPE+1024
	.word	SPE+3072
	.word	SPE+1280
	.word	SPE+3328
	.word	SPE+1536
	.word	SPE+3584
	.word	SPE+1792
	.word	SPE+3840
	.word	252645135
	.word	-252645136
	.word	CF6464
	.size	des_cipher, .-des_cipher
	.section	.rodata
	.align	2
.LC3:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	init_des, %function
init_des:
	@ args = 0, pretend = 0, frame = 80
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #80
	ldr	r3, .L100
	ldr	r3, [r3]
	str	r3, [fp, #-24]
	mov	r3,#0
	mov	r5, #0
	b	.L47
.L48:
	ldr	r3, .L100+4
	ldrb	r3, [r3, r5]	@ zero_extendqisi2
	mov	r2, r3
	and	r1, r5, #255
	ldr	r3, .L100+8
	strb	r1, [r3, r2]
	add	r5, r5, #1
.L47:
	cmp	r5, #63
	ble	.L48
	mov	r5, #0
	b	.L49
.L50:
	ldr	r3, .L100+12
	mov	r2, #0
	strb	r2, [r3, r5]
	add	r5, r5, #1
.L49:
	cmp	r5, #63
	ble	.L50
	mov	r5, #0
	b	.L51
.L56:
	ldr	r3, .L100+16
	ldrb	r3, [r3, r5]	@ zero_extendqisi2
	mov	r4, r3
	cmp	r4, #0
	beq	.L97
	ldr	r3, .L100+20
	ldrb	r3, [r3]	@ zero_extendqisi2
	sub	r3, r3, #1
	add	r4, r4, r3
	ldr	r3, .L100+24
	smull	r2, r3, r4, r3
	add	r3, r3, r4
	asr	r2, r3, #4
	asr	r3, r4, #31
	sub	r2, r2, r3
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #2
	sub	r2, r4, r3
	ldr	r3, .L100+20
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r2, r3
	bge	.L54
	sub	r4, r4, #28
.L54:
	ldr	r3, .L100+28
	ldrb	r3, [r3, r4]	@ zero_extendqisi2
	mov	r4, r3
	cmp	r4, #0
	ble	.L55
	sub	r4, r4, #1
	eor	r4, r4, #7
	add	r4, r4, #1
.L55:
	and	r2, r4, #255
	ldr	r3, .L100+12
	strb	r2, [r3, r5]
	b	.L53
.L97:
	nop
.L53:
	add	r5, r5, #1
.L51:
	cmp	r5, #63
	ble	.L56
	mov	r3, #8
	mov	r2, #8
	ldr	r1, .L100+12
	ldr	r0, .L100+32
	bl	init_perm
	mov	r6, #0
	b	.L57
.L69:
	mov	r5, #0
	b	.L58
.L59:
	sub	r3, fp, #20
	add	r3, r3, r5
	mov	r2, #0
	strb	r2, [r3, #-68]
	sub	r3, fp, #20
	add	r3, r3, r5
	ldrb	r2, [r3, #-68]	@ zero_extendqisi2
	ldr	r3, .L100+12
	strb	r2, [r3, r5]
	add	r5, r5, #1
.L58:
	cmp	r5, #63
	ble	.L59
	mov	r5, #0
	b	.L60
.L63:
	ldr	r3, .L100+16
	ldrb	r3, [r3, r5]	@ zero_extendqisi2
	mov	r4, r3
	cmp	r4, #0
	beq	.L98
	and	r2, r5, #255
	sub	r3, r4, #1
	add	r2, r2, #1
	and	r2, r2, #255
	sub	r1, fp, #20
	add	r3, r1, r3
	strb	r2, [r3, #-68]
	b	.L62
.L98:
	nop
.L62:
	add	r5, r5, #1
.L60:
	cmp	r5, #63
	ble	.L63
	mov	r5, #0
	b	.L64
.L68:
	ldr	r3, .L100+16
	ldrb	r3, [r3, r5]	@ zero_extendqisi2
	mov	r4, r3
	cmp	r4, #0
	beq	.L99
	add	r4, r4, r6
	ldr	r3, .L100+24
	smull	r2, r3, r4, r3
	add	r3, r3, r4
	asr	r2, r3, #4
	asr	r3, r4, #31
	sub	r2, r2, r3
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #2
	sub	r2, r4, r3
	cmp	r6, r2
	blt	.L67
	sub	r4, r4, #28
.L67:
	sub	r3, fp, #20
	add	r3, r3, r4
	ldrb	r2, [r3, #-68]	@ zero_extendqisi2
	ldr	r3, .L100+12
	strb	r2, [r3, r5]
	b	.L66
.L99:
	nop
.L66:
	add	r5, r5, #1
.L64:
	cmp	r5, #63
	ble	.L68
	lsl	r3, r6, #11
	ldr	r2, .L100+36
	add	r0, r3, r2
	mov	r3, #8
	mov	r2, #8
	ldr	r1, .L100+12
	bl	init_perm
	add	r6, r6, #1
.L57:
	cmp	r6, #1
	ble	.L69
	mov	r5, #0
	b	.L70
.L78:
	mov	r6, #0
	b	.L71
.L77:
	cmp	r6, #1
	ble	.L72
	mov	r3, r5
	lsl	r3, r3, #1
	add	r3, r3, r5
	lsl	r3, r3, #1
	add	r3, r6, r3
	sub	r3, r3, #2
	ldr	r2, .L100+40
	ldrb	r3, [r2, r3]	@ zero_extendqisi2
	sub	r3, r3, #1
	ldr	r2, .L100+44
	ldrb	r3, [r2, r3]	@ zero_extendqisi2
	b	.L73
.L72:
	mov	r3, #0
.L73:
	mov	r4, r3
	cmp	r4, #32
	ble	.L74
	sub	r4, r4, #32
	b	.L75
.L74:
	cmp	r4, #0
	ble	.L75
	sub	r4, r4, #1
.L75:
	cmp	r4, #0
	ble	.L76
	sub	r4, r4, #1
	eor	r4, r4, #7
	add	r4, r4, #1
.L76:
	lsl	r3, r5, #3
	add	r3, r6, r3
	and	r1, r4, #255
	ldr	r2, .L100+12
	strb	r1, [r2, r3]
	add	r6, r6, #1
.L71:
	cmp	r6, #7
	ble	.L77
	add	r5, r5, #1
.L70:
	cmp	r5, #7
	ble	.L78
	mov	r3, #8
	mov	r2, #4
	ldr	r1, .L100+12
	ldr	r0, .L100+48
	bl	init_perm
	mov	r5, #0
	b	.L79
.L81:
	ldr	r3, .L100+52
	ldrb	r3, [r3, r5]	@ zero_extendqisi2
	sub	r3, r3, #1
	ldr	r2, .L100+44
	ldrb	r3, [r2, r3]	@ zero_extendqisi2
	mov	r4, r3
	cmp	r4, #0
	ble	.L80
	sub	r4, r4, #1
	eor	r4, r4, #7
	add	r4, r4, #1
.L80:
	and	r2, r5, #255
	sub	r3, r4, #1
	add	r2, r2, #1
	and	r1, r2, #255
	ldr	r2, .L100+12
	strb	r1, [r2, r3]
	add	r5, r5, #1
.L79:
	cmp	r5, #63
	ble	.L81
	mov	r3, #8
	mov	r2, #8
	ldr	r1, .L100+12
	ldr	r0, .L100+56
	bl	init_perm
	mov	r5, #0
	b	.L82
.L83:
	ldr	r3, .L100+40
	ldrb	r3, [r3, r5]	@ zero_extendqisi2
	sub	r3, r3, #1
	ldr	r2, .L100+60
	ldrb	r2, [r2, r3]	@ zero_extendqisi2
	ldr	r3, .L100+12
	strb	r2, [r3, r5]
	add	r5, r5, #1
.L82:
	cmp	r5, #47
	ble	.L83
	mov	r7, #0
	b	.L84
.L95:
	mov	r6, #0
	b	.L85
.L94:
	lsl	r3, r6, #5
	and	r2, r3, #32
	asr	r3, r6, #1
	lsl	r3, r3, #3
	and	r3, r3, #8
	orr	r2, r2, r3
	and	r3, r6, #4
	orr	r2, r2, r3
	asr	r3, r6, #3
	lsl	r3, r3, #1
	and	r3, r3, #2
	orr	r2, r2, r3
	asr	r3, r6, #4
	and	r3, r3, #1
	orr	r2, r2, r3
	asr	r3, r6, #5
	lsl	r3, r3, #4
	and	r3, r3, #16
	orr	r4, r2, r3
	ldr	r2, .L100+64
	lsl	r3, r7, #6
	add	r3, r2, r3
	add	r3, r3, r4
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r4, r3
	asr	r3, r4, #3
	and	r2, r3, #1
	asr	r3, r4, #2
	lsl	r3, r3, #1
	and	r3, r3, #2
	orr	r2, r2, r3
	asr	r3, r4, #1
	lsl	r3, r3, #2
	and	r3, r3, #4
	orr	r2, r2, r3
	lsl	r3, r4, #3
	and	r3, r3, #8
	orr	r4, r2, r3
	mov	r5, #0
	b	.L86
.L87:
	ldr	r3, .L100+68
	mov	r2, #0
	strb	r2, [r3, r5]
	add	r5, r5, #1
.L86:
	cmp	r5, #31
	ble	.L87
	mov	r5, #0
	b	.L88
.L89:
	asr	r3, r4, r5
	and	r2, r3, #255
	lsl	r3, r7, #2
	add	r3, r5, r3
	and	r2, r2, #1
	and	r1, r2, #255
	ldr	r2, .L100+68
	strb	r1, [r2, r3]
	add	r5, r5, #1
.L88:
	cmp	r5, #3
	ble	.L89
	mov	r4, #0
	mov	r5, #24
	b	.L90
.L91:
	lsl	r3, r4, #1
	ldr	r2, .L100+12
	ldrb	r2, [r2, r5]	@ zero_extendqisi2
	sub	r2, r2, #1
	ldr	r1, .L100+68
	ldrb	r2, [r1, r2]	@ zero_extendqisi2
	orr	r4, r3, r2
.L90:
	sub	r5, r5, #1
	cmp	r5, #0
	bge	.L91
	and	r3, r4, #255
	strb	r3, [fp, #-96]
	asr	r4, r4, #6
	and	r3, r4, #255
	strb	r3, [fp, #-95]
	asr	r4, r4, #6
	and	r3, r4, #255
	strb	r3, [fp, #-94]
	asr	r4, r4, #6
	and	r3, r4, #255
	strb	r3, [fp, #-93]
	ldr	r3, [fp, #-96]
	lsl	r2, r3, #2
	ldr	r3, .L100+72
	and	r3, r3, r2
	ldr	r1, .L100+76
	lsl	r2, r7, #6
	add	r2, r2, r6
	str	r3, [r1, r2, lsl #2]
	mov	r4, #0
	mov	r5, #24
	b	.L92
.L93:
	lsl	r3, r4, #1
	add	r2, r5, #24
	ldr	r1, .L100+12
	ldrb	r2, [r1, r2]	@ zero_extendqisi2
	sub	r2, r2, #1
	ldr	r1, .L100+68
	ldrb	r2, [r1, r2]	@ zero_extendqisi2
	orr	r4, r3, r2
.L92:
	sub	r5, r5, #1
	cmp	r5, #0
	bge	.L93
	and	r3, r4, #255
	strb	r3, [fp, #-96]
	asr	r4, r4, #6
	and	r3, r4, #255
	strb	r3, [fp, #-95]
	asr	r4, r4, #6
	and	r3, r4, #255
	strb	r3, [fp, #-94]
	asr	r4, r4, #6
	and	r3, r4, #255
	strb	r3, [fp, #-93]
	ldr	r3, [fp, #-96]
	lsl	r2, r3, #2
	ldr	r3, .L100+72
	and	r3, r3, r2
	ldr	r1, .L100+76
	lsl	r2, r7, #6
	add	r2, r2, r6
	add	r2, r2, #512
	str	r3, [r1, r2, lsl #2]
	add	r6, r6, #1
.L85:
	cmp	r6, #63
	ble	.L94
	add	r7, r7, #1
.L84:
	cmp	r7, #7
	ble	.L95
	nop
	ldr	r3, .L100
	ldr	r2, [r3]
	ldr	r3, [fp, #-24]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L96
	bl	__stack_chk_fail
.L96:
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
.L101:
	.align	2
.L100:
	.word	.LC3
	.word	itoa64
	.word	a64toi
	.word	perm.4713
	.word	PC2
	.word	Rotates
	.word	-1840700269
	.word	PC1
	.word	PC1ROT
	.word	PC2ROT
	.word	ExpandTr
	.word	IP
	.word	IE3264
	.word	CIFP
	.word	CF6464
	.word	P32Tr
	.word	S
	.word	tmp32.4714
	.word	-50529028
	.word	SPE
	.size	init_des, .-init_des
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	init_perm, %function
init_perm:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	push	{r4, r5, r6, r7, fp}
	add	fp, sp, #16
	sub	sp, sp, #20
	str	r0, [fp, #-24]
	str	r1, [fp, #-28]
	str	r2, [fp, #-32]
	str	r3, [fp, #-36]
	mov	r4, #0
	b	.L103
.L109:
	mov	r2, r4
	ldr	r3, [fp, #-28]
	add	r3, r3, r2
	ldrb	r3, [r3]	@ zero_extendqisi2
	sub	r6, r3, #1
	cmp	r6, #0
	blt	.L110
	asr	r7, r6, #2
	and	r3, r6, #3
	mov	r2, #1
	lsl	r6, r2, r3
	mov	r5, #0
	b	.L106
.L108:
	and	r3, r5, r6
	cmp	r3, #0
	beq	.L107
	mov	r3, r7
	lsl	r3, r3, #7
	ldr	r2, [fp, #-24]
	add	r1, r2, r3
	asr	r3, r4, #3
	lsl	r2, r5, #3
	add	r2, r1, r2
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #24
	asr	r2, r3, #24
	and	r3, r4, #7
	mov	r1, #1
	lsl	r3, r1, r3
	lsl	r3, r3, #24
	asr	r3, r3, #24
	orr	r3, r2, r3
	lsl	r3, r3, #24
	asr	r2, r3, #24
	mov	r3, r7
	lsl	r3, r3, #7
	ldr	r1, [fp, #-24]
	add	r1, r1, r3
	asr	r3, r4, #3
	and	r0, r2, #255
	lsl	r2, r5, #3
	add	r2, r1, r2
	add	r3, r2, r3
	mov	r2, r0
	strb	r2, [r3]
.L107:
	add	r5, r5, #1
.L106:
	cmp	r5, #15
	ble	.L108
	b	.L105
.L110:
	nop
.L105:
	add	r4, r4, #1
.L103:
	ldr	r3, [fp, #-36]
	lsl	r3, r3, #3
	cmp	r4, r3
	blt	.L109
	nop
	nop
	sub	sp, fp, #16
	@ sp needed
	pop	{r4, r5, r6, r7, fp}
	bx	lr
	.size	init_perm, .-init_perm
	.section	.rodata
	.align	2
.LC4:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	setkey
	.syntax unified
	.arm
	.fpu softvfp
	.type	setkey, %function
setkey:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, fp, lr}
	add	fp, sp, #16
	sub	sp, sp, #20
	mov	r2, r0
	ldr	r3, .L118
	ldr	r3, [r3]
	str	r3, [fp, #-24]
	mov	r3,#0
	mov	r5, #0
	b	.L112
.L115:
	mov	r4, #0
	mov	r6, #0
	b	.L113
.L114:
	lsl	r4, r4, #1
	mov	r3, r2
	add	r2, r3, #1
	ldrb	r3, [r3]	@ zero_extendqisi2
	orr	r4, r4, r3
	add	r6, r6, #1
.L113:
	cmp	r6, #7
	ble	.L114
	and	r1, r4, #255
	sub	r3, fp, #20
	add	r3, r3, r5
	strb	r1, [r3, #-12]
	add	r5, r5, #1
.L112:
	cmp	r5, #7
	ble	.L115
	sub	r3, fp, #32
	mov	r0, r3
	bl	des_setkey
	mov	r3, r0
	ldr	r2, .L118
	ldr	r1, [r2]
	ldr	r2, [fp, #-24]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L117
	bl	__stack_chk_fail
.L117:
	mov	r0, r3
	sub	sp, fp, #16
	@ sp needed
	pop	{r4, r5, r6, fp, pc}
.L119:
	.align	2
.L118:
	.word	.LC4
	.size	setkey, .-setkey
	.section	.rodata
	.align	2
.LC5:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	encrypt
	.syntax unified
	.arm
	.fpu softvfp
	.type	encrypt, %function
encrypt:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, fp, lr}
	add	fp, sp, #20
	sub	sp, sp, #24
	mov	r7, r0
	str	r1, [fp, #-40]
	ldr	r3, .L135
	ldr	r3, [r3]
	str	r3, [fp, #-24]
	mov	r3,#0
	mov	r4, #0
	b	.L121
.L124:
	mov	r5, #0
	mov	r6, #0
	b	.L122
.L123:
	lsl	r5, r5, #1
	mov	r3, r7
	add	r7, r3, #1
	ldrb	r3, [r3]	@ zero_extendqisi2
	orr	r5, r5, r3
	add	r6, r6, #1
.L122:
	cmp	r6, #7
	ble	.L123
	and	r2, r5, #255
	sub	r3, fp, #20
	add	r3, r3, r4
	strb	r2, [r3, #-12]
	add	r4, r4, #1
.L121:
	cmp	r4, #7
	ble	.L124
	ldr	r3, [fp, #-40]
	cmp	r3, #0
	beq	.L125
	mvn	r3, #0
	b	.L126
.L125:
	mov	r3, #1
.L126:
	sub	r1, fp, #32
	sub	r0, fp, #32
	mov	r2, #0
	bl	des_cipher
	mov	r3, r0
	cmp	r3, #0
	beq	.L127
	mov	r3, #1
	b	.L133
.L127:
	mov	r4, #7
	b	.L129
.L132:
	sub	r3, fp, #20
	add	r3, r3, r4
	ldrb	r3, [r3, #-12]	@ zero_extendqisi2
	mov	r5, r3
	mov	r6, #7
	b	.L130
.L131:
	and	r3, r5, #255
	sub	r7, r7, #1
	and	r3, r3, #1
	and	r3, r3, #255
	strb	r3, [r7]
	asr	r5, r5, #1
	sub	r6, r6, #1
.L130:
	cmp	r6, #0
	bge	.L131
	sub	r4, r4, #1
.L129:
	cmp	r4, #0
	bge	.L132
	mov	r3, #0
.L133:
	ldr	r2, .L135
	ldr	r1, [r2]
	ldr	r2, [fp, #-24]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L134
	bl	__stack_chk_fail
.L134:
	mov	r0, r3
	sub	sp, fp, #20
	@ sp needed
	pop	{r4, r5, r6, r7, fp, pc}
.L136:
	.align	2
.L135:
	.word	.LC5
	.size	encrypt, .-encrypt
	.local	des_ready.4677
	.comm	des_ready.4677,4,4
	.local	perm.4713
	.comm	perm.4713,64,4
	.local	tmp32.4714
	.comm	tmp32.4714,32,4
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
