	.file	"638826.c"
	.intel_syntax noprefix
	.text
	.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"
	.local	inv_key_perm
	.comm	inv_key_perm,64,32
	.local	u_key_perm
	.comm	u_key_perm,56,32
	.align 32
	.type	key_perm, @object
	.size	key_perm, 56
key_perm:
	.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	key_shifts, @object
	.size	key_shifts, 16
key_shifts:
	.ascii	"\001\001\002\002\002\002\002\002\001\002\002\002\002\002\002"
	.ascii	"\001"
	.local	inv_comp_perm
	.comm	inv_comp_perm,56,32
	.align 32
	.type	comp_perm, @object
	.size	comp_perm, 48
comp_perm:
	.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	" "
	.local	u_sbox
	.comm	u_sbox,512,32
	.align 32
	.type	sbox, @object
	.size	sbox, 512
sbox:
	.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"
	.local	un_pbox
	.comm	un_pbox,32,32
	.align 32
	.type	pbox, @object
	.size	pbox, 32
pbox:
	.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	bits32, @object
	.size	bits32, 256
bits32:
	.quad	2147483648
	.quad	1073741824
	.quad	536870912
	.quad	268435456
	.quad	134217728
	.quad	67108864
	.quad	33554432
	.quad	16777216
	.quad	8388608
	.quad	4194304
	.quad	2097152
	.quad	1048576
	.quad	524288
	.quad	262144
	.quad	131072
	.quad	65536
	.quad	32768
	.quad	16384
	.quad	8192
	.quad	4096
	.quad	2048
	.quad	1024
	.quad	512
	.quad	256
	.quad	128
	.quad	64
	.quad	32
	.quad	16
	.quad	8
	.quad	4
	.quad	2
	.quad	1
	.align 8
	.type	bits8, @object
	.size	bits8, 8
bits8:
	.ascii	"\200@ \020\b\004\002\001"
	.local	saltbits
	.comm	saltbits,8,8
	.local	old_salt
	.comm	old_salt,8,8
	.local	bits28
	.comm	bits28,8,8
	.local	bits24
	.comm	bits24,8,8
	.local	init_perm
	.comm	init_perm,64,32
	.local	final_perm
	.comm	final_perm,64,32
	.local	en_keysl
	.comm	en_keysl,128,32
	.local	en_keysr
	.comm	en_keysr,128,32
	.local	de_keysl
	.comm	de_keysl,128,32
	.local	de_keysr
	.comm	de_keysr,128,32
	.local	des_initialised
	.comm	des_initialised,4,4
	.local	m_sbox
	.comm	m_sbox,16384,32
	.local	psbox
	.comm	psbox,8192,32
	.local	ip_maskl
	.comm	ip_maskl,16384,32
	.local	ip_maskr
	.comm	ip_maskr,16384,32
	.local	fp_maskl
	.comm	fp_maskl,16384,32
	.local	fp_maskr
	.comm	fp_maskr,16384,32
	.local	key_perm_maskl
	.comm	key_perm_maskl,8192,32
	.local	key_perm_maskr
	.comm	key_perm_maskr,8192,32
	.local	comp_maskl
	.comm	comp_maskl,8192,32
	.local	comp_maskr
	.comm	comp_maskr,8192,32
	.local	old_rawkey0
	.comm	old_rawkey0,8,8
	.local	old_rawkey1
	.comm	old_rawkey1,8,8
	.text
	.type	des_init, @function
des_init:
.LFB7:
	.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 old_rawkey1[rip], 0
	mov	rax, QWORD PTR old_rawkey1[rip]
	mov	QWORD PTR old_rawkey0[rip], rax
	mov	QWORD PTR saltbits[rip], 0
	mov	QWORD PTR old_salt[rip], 0
	lea	rax, bits32[rip+32]
	mov	QWORD PTR bits28[rip], rax
	mov	rax, QWORD PTR bits28[rip]
	add	rax, 32
	mov	QWORD PTR bits24[rip], rax
	mov	DWORD PTR -64[rbp], 0
	jmp	.L2
.L5:
	mov	DWORD PTR -60[rbp], 0
	jmp	.L3
.L4:
	mov	eax, DWORD PTR -60[rbp]
	and	eax, 32
	mov	edx, eax
	mov	eax, DWORD PTR -60[rbp]
	sal	eax, 4
	and	eax, 16
	or	edx, eax
	mov	eax, DWORD PTR -60[rbp]
	sar	eax
	and	eax, 15
	or	eax, edx
	mov	DWORD PTR -56[rbp], eax
	mov	eax, DWORD PTR -56[rbp]
	movsx	rdx, eax
	mov	eax, DWORD PTR -64[rbp]
	cdqe
	sal	rax, 6
	add	rdx, rax
	lea	rax, sbox[rip]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	mov	edx, DWORD PTR -60[rbp]
	movsx	rcx, edx
	mov	edx, DWORD PTR -64[rbp]
	movsx	rdx, edx
	sal	rdx, 6
	add	rcx, rdx
	lea	rdx, u_sbox[rip]
	add	rdx, rcx
	mov	BYTE PTR [rdx], al
	add	DWORD PTR -60[rbp], 1
.L3:
	cmp	DWORD PTR -60[rbp], 63
	jle	.L4
	add	DWORD PTR -64[rbp], 1
.L2:
	cmp	DWORD PTR -64[rbp], 7
	jle	.L5
	mov	DWORD PTR -56[rbp], 0
	jmp	.L6
.L11:
	mov	DWORD PTR -64[rbp], 0
	jmp	.L7
.L10:
	mov	DWORD PTR -60[rbp], 0
	jmp	.L8
.L9:
	mov	eax, DWORD PTR -56[rbp]
	lea	edx, [rax+rax]
	mov	eax, DWORD PTR -64[rbp]
	movsx	rcx, eax
	movsx	rax, edx
	sal	rax, 6
	lea	rdx, [rax+rcx]
	lea	rax, u_sbox[rip]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 4
	mov	esi, eax
	mov	eax, DWORD PTR -56[rbp]
	add	eax, eax
	lea	edx, 1[rax]
	mov	eax, DWORD PTR -60[rbp]
	movsx	rcx, eax
	movsx	rax, edx
	sal	rax, 6
	lea	rdx, [rax+rcx]
	lea	rax, u_sbox[rip]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	or	esi, eax
	mov	edx, esi
	mov	eax, DWORD PTR -64[rbp]
	sal	eax, 6
	or	eax, DWORD PTR -60[rbp]
	movsx	rcx, eax
	mov	eax, DWORD PTR -56[rbp]
	cdqe
	sal	rax, 12
	add	rcx, rax
	lea	rax, m_sbox[rip]
	add	rax, rcx
	mov	BYTE PTR [rax], dl
	add	DWORD PTR -60[rbp], 1
.L8:
	cmp	DWORD PTR -60[rbp], 63
	jle	.L9
	add	DWORD PTR -64[rbp], 1
.L7:
	cmp	DWORD PTR -64[rbp], 63
	jle	.L10
	add	DWORD PTR -56[rbp], 1
.L6:
	cmp	DWORD PTR -56[rbp], 3
	jle	.L11
	mov	DWORD PTR -64[rbp], 0
	jmp	.L12
.L13:
	mov	eax, DWORD PTR -64[rbp]
	cdqe
	lea	rdx, IP[rip]
	movzx	eax, BYTE PTR [rax+rdx]
	lea	ecx, -1[rax]
	mov	eax, DWORD PTR -64[rbp]
	cdqe
	lea	rdx, final_perm[rip]
	mov	BYTE PTR [rax+rdx], cl
	mov	eax, DWORD PTR -64[rbp]
	cdqe
	lea	rdx, final_perm[rip]
	movzx	eax, BYTE PTR [rax+rdx]
	movzx	eax, al
	mov	edx, DWORD PTR -64[rbp]
	mov	ecx, edx
	cdqe
	lea	rdx, init_perm[rip]
	mov	BYTE PTR [rax+rdx], cl
	mov	eax, DWORD PTR -64[rbp]
	cdqe
	lea	rdx, inv_key_perm[rip]
	mov	BYTE PTR [rax+rdx], -1
	add	DWORD PTR -64[rbp], 1
.L12:
	cmp	DWORD PTR -64[rbp], 63
	jle	.L13
	mov	DWORD PTR -64[rbp], 0
	jmp	.L14
.L15:
	mov	eax, DWORD PTR -64[rbp]
	cdqe
	lea	rdx, key_perm[rip]
	movzx	eax, BYTE PTR [rax+rdx]
	lea	ecx, -1[rax]
	mov	eax, DWORD PTR -64[rbp]
	cdqe
	lea	rdx, u_key_perm[rip]
	mov	BYTE PTR [rax+rdx], cl
	mov	eax, DWORD PTR -64[rbp]
	cdqe
	lea	rdx, key_perm[rip]
	movzx	eax, BYTE PTR [rax+rdx]
	movzx	eax, al
	sub	eax, 1
	mov	edx, DWORD PTR -64[rbp]
	mov	ecx, edx
	cdqe
	lea	rdx, inv_key_perm[rip]
	mov	BYTE PTR [rax+rdx], cl
	mov	eax, DWORD PTR -64[rbp]
	cdqe
	lea	rdx, inv_comp_perm[rip]
	mov	BYTE PTR [rax+rdx], -1
	add	DWORD PTR -64[rbp], 1
.L14:
	cmp	DWORD PTR -64[rbp], 55
	jle	.L15
	mov	DWORD PTR -64[rbp], 0
	jmp	.L16
.L17:
	mov	eax, DWORD PTR -64[rbp]
	cdqe
	lea	rdx, comp_perm[rip]
	movzx	eax, BYTE PTR [rax+rdx]
	movzx	eax, al
	sub	eax, 1
	mov	edx, DWORD PTR -64[rbp]
	mov	ecx, edx
	cdqe
	lea	rdx, inv_comp_perm[rip]
	mov	BYTE PTR [rax+rdx], cl
	add	DWORD PTR -64[rbp], 1
.L16:
	cmp	DWORD PTR -64[rbp], 47
	jle	.L17
	mov	DWORD PTR -52[rbp], 0
	jmp	.L18
.L39:
	mov	DWORD PTR -64[rbp], 0
	jmp	.L19
.L26:
	mov	eax, DWORD PTR -64[rbp]
	movsx	rdx, eax
	mov	eax, DWORD PTR -52[rbp]
	cdqe
	sal	rax, 8
	add	rax, rdx
	lea	rdx, 0[0+rax*8]
	lea	rax, ip_maskl[rip]
	add	rax, rdx
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR -32[rbp]
	mov	QWORD PTR [rax], 0
	mov	eax, DWORD PTR -64[rbp]
	movsx	rdx, eax
	mov	eax, DWORD PTR -52[rbp]
	cdqe
	sal	rax, 8
	add	rax, rdx
	lea	rdx, 0[0+rax*8]
	lea	rax, ip_maskr[rip]
	add	rax, rdx
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR [rax], 0
	mov	eax, DWORD PTR -64[rbp]
	movsx	rdx, eax
	mov	eax, DWORD PTR -52[rbp]
	cdqe
	sal	rax, 8
	add	rax, rdx
	lea	rdx, 0[0+rax*8]
	lea	rax, fp_maskl[rip]
	add	rax, rdx
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	mov	QWORD PTR [rax], 0
	mov	eax, DWORD PTR -64[rbp]
	movsx	rdx, eax
	mov	eax, DWORD PTR -52[rbp]
	cdqe
	sal	rax, 8
	add	rax, rdx
	lea	rdx, 0[0+rax*8]
	lea	rax, fp_maskr[rip]
	add	rax, rdx
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR [rax], 0
	mov	DWORD PTR -60[rbp], 0
	jmp	.L20
.L25:
	mov	eax, DWORD PTR -52[rbp]
	lea	edx, 0[0+rax*8]
	mov	eax, DWORD PTR -60[rbp]
	add	eax, edx
	mov	DWORD PTR -48[rbp], eax
	mov	eax, DWORD PTR -60[rbp]
	cdqe
	lea	rdx, bits8[rip]
	movzx	eax, BYTE PTR [rax+rdx]
	movzx	eax, al
	and	eax, DWORD PTR -64[rbp]
	test	eax, eax
	je	.L21
	mov	eax, DWORD PTR -48[rbp]
	cdqe
	lea	rdx, init_perm[rip]
	movzx	eax, BYTE PTR [rax+rdx]
	movzx	eax, al
	mov	DWORD PTR -44[rbp], eax
	cmp	DWORD PTR -44[rbp], 31
	jg	.L22
	mov	rax, QWORD PTR -32[rbp]
	mov	rcx, QWORD PTR [rax]
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, bits32[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rdx, rcx
	mov	rax, QWORD PTR -32[rbp]
	mov	QWORD PTR [rax], rdx
	jmp	.L23
.L22:
	mov	rax, QWORD PTR -24[rbp]
	mov	rcx, QWORD PTR [rax]
	mov	eax, DWORD PTR -44[rbp]
	sub	eax, 32
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, bits32[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rdx, rcx
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR [rax], rdx
.L23:
	mov	eax, DWORD PTR -48[rbp]
	cdqe
	lea	rdx, final_perm[rip]
	movzx	eax, BYTE PTR [rax+rdx]
	movzx	eax, al
	mov	DWORD PTR -44[rbp], eax
	cmp	DWORD PTR -44[rbp], 31
	jg	.L24
	mov	rax, QWORD PTR -16[rbp]
	mov	rcx, QWORD PTR [rax]
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, bits32[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rdx, rcx
	mov	rax, QWORD PTR -16[rbp]
	mov	QWORD PTR [rax], rdx
	jmp	.L21
.L24:
	mov	rax, QWORD PTR -8[rbp]
	mov	rcx, QWORD PTR [rax]
	mov	eax, DWORD PTR -44[rbp]
	sub	eax, 32
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, bits32[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rdx, rcx
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR [rax], rdx
.L21:
	add	DWORD PTR -60[rbp], 1
.L20:
	cmp	DWORD PTR -60[rbp], 7
	jle	.L25
	add	DWORD PTR -64[rbp], 1
.L19:
	cmp	DWORD PTR -64[rbp], 255
	jle	.L26
	mov	DWORD PTR -64[rbp], 0
	jmp	.L27
.L38:
	mov	eax, DWORD PTR -64[rbp]
	movsx	rdx, eax
	mov	eax, DWORD PTR -52[rbp]
	cdqe
	sal	rax, 7
	add	rax, rdx
	lea	rdx, 0[0+rax*8]
	lea	rax, key_perm_maskl[rip]
	add	rax, rdx
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR -32[rbp]
	mov	QWORD PTR [rax], 0
	mov	eax, DWORD PTR -64[rbp]
	movsx	rdx, eax
	mov	eax, DWORD PTR -52[rbp]
	cdqe
	sal	rax, 7
	add	rax, rdx
	lea	rdx, 0[0+rax*8]
	lea	rax, key_perm_maskr[rip]
	add	rax, rdx
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR [rax], 0
	mov	DWORD PTR -60[rbp], 0
	jmp	.L28
.L32:
	mov	eax, DWORD PTR -52[rbp]
	lea	edx, 0[0+rax*8]
	mov	eax, DWORD PTR -60[rbp]
	add	eax, edx
	mov	DWORD PTR -48[rbp], eax
	mov	eax, DWORD PTR -60[rbp]
	add	eax, 1
	cdqe
	lea	rdx, bits8[rip]
	movzx	eax, BYTE PTR [rax+rdx]
	movzx	eax, al
	and	eax, DWORD PTR -64[rbp]
	test	eax, eax
	je	.L29
	mov	eax, DWORD PTR -48[rbp]
	cdqe
	lea	rdx, inv_key_perm[rip]
	movzx	eax, BYTE PTR [rax+rdx]
	movzx	eax, al
	mov	DWORD PTR -44[rbp], eax
	cmp	DWORD PTR -44[rbp], 255
	je	.L49
	cmp	DWORD PTR -44[rbp], 27
	jg	.L31
	mov	rax, QWORD PTR -32[rbp]
	mov	rdx, QWORD PTR [rax]
	mov	rcx, QWORD PTR bits28[rip]
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	sal	rax, 3
	add	rax, rcx
	mov	rax, QWORD PTR [rax]
	or	rdx, rax
	mov	rax, QWORD PTR -32[rbp]
	mov	QWORD PTR [rax], rdx
	jmp	.L29
.L31:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR [rax]
	mov	rcx, QWORD PTR bits28[rip]
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	sal	rax, 3
	sub	rax, 224
	add	rax, rcx
	mov	rax, QWORD PTR [rax]
	or	rdx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR [rax], rdx
	jmp	.L29
.L49:
	nop
.L29:
	add	DWORD PTR -60[rbp], 1
.L28:
	cmp	DWORD PTR -60[rbp], 6
	jle	.L32
	mov	eax, DWORD PTR -64[rbp]
	movsx	rdx, eax
	mov	eax, DWORD PTR -52[rbp]
	cdqe
	sal	rax, 7
	add	rax, rdx
	lea	rdx, 0[0+rax*8]
	lea	rax, comp_maskl[rip]
	add	rax, rdx
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR -32[rbp]
	mov	QWORD PTR [rax], 0
	mov	eax, DWORD PTR -64[rbp]
	movsx	rdx, eax
	mov	eax, DWORD PTR -52[rbp]
	cdqe
	sal	rax, 7
	add	rax, rdx
	lea	rdx, 0[0+rax*8]
	lea	rax, comp_maskr[rip]
	add	rax, rdx
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR [rax], 0
	mov	DWORD PTR -60[rbp], 0
	jmp	.L33
.L37:
	mov	edx, DWORD PTR -52[rbp]
	mov	eax, edx
	sal	eax, 3
	sub	eax, edx
	mov	ecx, eax
	mov	eax, DWORD PTR -60[rbp]
	add	eax, ecx
	mov	DWORD PTR -48[rbp], eax
	mov	eax, DWORD PTR -60[rbp]
	add	eax, 1
	cdqe
	lea	rdx, bits8[rip]
	movzx	eax, BYTE PTR [rax+rdx]
	movzx	eax, al
	and	eax, DWORD PTR -64[rbp]
	test	eax, eax
	je	.L34
	mov	eax, DWORD PTR -48[rbp]
	cdqe
	lea	rdx, inv_comp_perm[rip]
	movzx	eax, BYTE PTR [rax+rdx]
	movzx	eax, al
	mov	DWORD PTR -44[rbp], eax
	cmp	DWORD PTR -44[rbp], 255
	je	.L50
	cmp	DWORD PTR -44[rbp], 23
	jg	.L36
	mov	rax, QWORD PTR -32[rbp]
	mov	rdx, QWORD PTR [rax]
	mov	rcx, QWORD PTR bits24[rip]
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	sal	rax, 3
	add	rax, rcx
	mov	rax, QWORD PTR [rax]
	or	rdx, rax
	mov	rax, QWORD PTR -32[rbp]
	mov	QWORD PTR [rax], rdx
	jmp	.L34
.L36:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR [rax]
	mov	rcx, QWORD PTR bits24[rip]
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	sal	rax, 3
	sub	rax, 192
	add	rax, rcx
	mov	rax, QWORD PTR [rax]
	or	rdx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR [rax], rdx
	jmp	.L34
.L50:
	nop
.L34:
	add	DWORD PTR -60[rbp], 1
.L33:
	cmp	DWORD PTR -60[rbp], 6
	jle	.L37
	add	DWORD PTR -64[rbp], 1
.L27:
	cmp	DWORD PTR -64[rbp], 127
	jle	.L38
	add	DWORD PTR -52[rbp], 1
.L18:
	cmp	DWORD PTR -52[rbp], 7
	jle	.L39
	mov	DWORD PTR -64[rbp], 0
	jmp	.L40
.L41:
	mov	eax, DWORD PTR -64[rbp]
	cdqe
	lea	rdx, pbox[rip]
	movzx	eax, BYTE PTR [rax+rdx]
	movzx	eax, al
	sub	eax, 1
	mov	edx, DWORD PTR -64[rbp]
	mov	ecx, edx
	cdqe
	lea	rdx, un_pbox[rip]
	mov	BYTE PTR [rax+rdx], cl
	add	DWORD PTR -64[rbp], 1
.L40:
	cmp	DWORD PTR -64[rbp], 31
	jle	.L41
	mov	DWORD PTR -56[rbp], 0
	jmp	.L42
.L48:
	mov	DWORD PTR -64[rbp], 0
	jmp	.L43
.L47:
	mov	eax, DWORD PTR -64[rbp]
	movsx	rdx, eax
	mov	eax, DWORD PTR -56[rbp]
	cdqe
	sal	rax, 8
	add	rax, rdx
	lea	rdx, 0[0+rax*8]
	lea	rax, psbox[rip]
	add	rax, rdx
	mov	QWORD PTR -40[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	mov	QWORD PTR [rax], 0
	mov	DWORD PTR -60[rbp], 0
	jmp	.L44
.L46:
	mov	eax, DWORD PTR -60[rbp]
	cdqe
	lea	rdx, bits8[rip]
	movzx	eax, BYTE PTR [rax+rdx]
	movzx	eax, al
	and	eax, DWORD PTR -64[rbp]
	test	eax, eax
	je	.L45
	mov	rax, QWORD PTR -40[rbp]
	mov	rcx, QWORD PTR [rax]
	mov	eax, DWORD PTR -56[rbp]
	lea	edx, 0[0+rax*8]
	mov	eax, DWORD PTR -60[rbp]
	add	eax, edx
	cdqe
	lea	rdx, un_pbox[rip]
	movzx	eax, BYTE PTR [rax+rdx]
	movzx	eax, al
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, bits32[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rdx, rcx
	mov	rax, QWORD PTR -40[rbp]
	mov	QWORD PTR [rax], rdx
.L45:
	add	DWORD PTR -60[rbp], 1
.L44:
	cmp	DWORD PTR -60[rbp], 7
	jle	.L46
	add	DWORD PTR -64[rbp], 1
.L43:
	cmp	DWORD PTR -64[rbp], 255
	jle	.L47
	add	DWORD PTR -56[rbp], 1
.L42:
	cmp	DWORD PTR -56[rbp], 3
	jle	.L48
	mov	DWORD PTR des_initialised[rip], 1
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	des_init, .-des_init
	.type	setup_salt, @function
setup_salt:
.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	rax, QWORD PTR old_salt[rip]
	cmp	QWORD PTR -40[rbp], rax
	je	.L57
	mov	rax, QWORD PTR -40[rbp]
	mov	QWORD PTR old_salt[rip], rax
	mov	QWORD PTR saltbits[rip], 0
	mov	QWORD PTR -8[rbp], 1
	mov	QWORD PTR -16[rbp], 8388608
	mov	DWORD PTR -20[rbp], 0
	jmp	.L54
.L56:
	mov	rax, QWORD PTR -40[rbp]
	and	rax, QWORD PTR -8[rbp]
	test	rax, rax
	je	.L55
	mov	rax, QWORD PTR saltbits[rip]
	or	rax, QWORD PTR -16[rbp]
	mov	QWORD PTR saltbits[rip], rax
.L55:
	sal	QWORD PTR -8[rbp]
	shr	QWORD PTR -16[rbp]
	add	DWORD PTR -20[rbp], 1
.L54:
	cmp	DWORD PTR -20[rbp], 23
	jle	.L56
	jmp	.L51
.L57:
	nop
.L51:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	setup_salt, .-setup_salt
	.globl	des_setkey
	.type	des_setkey, @function
des_setkey:
.LFB9:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 80
	mov	QWORD PTR -72[rbp], rdi
	mov	eax, DWORD PTR des_initialised[rip]
	test	eax, eax
	jne	.L59
	call	des_init
.L59:
	mov	rax, QWORD PTR -72[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rdi, rax
	mov	eax, 0
	call	ntohl@PLT
	cdqe
	mov	QWORD PTR -48[rbp], rax
	mov	rax, QWORD PTR -72[rbp]
	add	rax, 4
	mov	rax, QWORD PTR [rax]
	mov	rdi, rax
	mov	eax, 0
	call	ntohl@PLT
	cdqe
	mov	QWORD PTR -40[rbp], rax
	mov	rax, QWORD PTR -48[rbp]
	or	rax, QWORD PTR -40[rbp]
	test	rax, rax
	je	.L60
	mov	rax, QWORD PTR old_rawkey0[rip]
	cmp	QWORD PTR -48[rbp], rax
	jne	.L60
	mov	rax, QWORD PTR old_rawkey1[rip]
	cmp	QWORD PTR -40[rbp], rax
	jne	.L60
	mov	eax, 0
	jmp	.L61
.L60:
	mov	rax, QWORD PTR -48[rbp]
	mov	QWORD PTR old_rawkey0[rip], rax
	mov	rax, QWORD PTR -40[rbp]
	mov	QWORD PTR old_rawkey1[rip], rax
	mov	rax, QWORD PTR -48[rbp]
	shr	rax, 25
	lea	rdx, 0[0+rax*8]
	lea	rax, key_perm_maskl[rip]
	mov	rcx, QWORD PTR [rdx+rax]
	mov	rax, QWORD PTR -48[rbp]
	shr	rax, 17
	and	eax, 127
	sub	rax, -128
	lea	rdx, 0[0+rax*8]
	lea	rax, key_perm_maskl[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rax, QWORD PTR -48[rbp]
	shr	rax, 9
	and	eax, 127
	add	rax, 256
	lea	rdx, 0[0+rax*8]
	lea	rax, key_perm_maskl[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rax, QWORD PTR -48[rbp]
	shr	rax
	and	eax, 127
	add	rax, 384
	lea	rdx, 0[0+rax*8]
	lea	rax, key_perm_maskl[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rax, QWORD PTR -40[rbp]
	shr	rax, 25
	add	rax, 512
	lea	rdx, 0[0+rax*8]
	lea	rax, key_perm_maskl[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rax, QWORD PTR -40[rbp]
	shr	rax, 17
	and	eax, 127
	add	rax, 640
	lea	rdx, 0[0+rax*8]
	lea	rax, key_perm_maskl[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rax, QWORD PTR -40[rbp]
	shr	rax, 9
	and	eax, 127
	add	rax, 768
	lea	rdx, 0[0+rax*8]
	lea	rax, key_perm_maskl[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rax, QWORD PTR -40[rbp]
	shr	rax
	and	eax, 127
	add	rax, 896
	lea	rdx, 0[0+rax*8]
	lea	rax, key_perm_maskl[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rax, rcx
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR -48[rbp]
	shr	rax, 25
	lea	rdx, 0[0+rax*8]
	lea	rax, key_perm_maskr[rip]
	mov	rcx, QWORD PTR [rdx+rax]
	mov	rax, QWORD PTR -48[rbp]
	shr	rax, 17
	and	eax, 127
	sub	rax, -128
	lea	rdx, 0[0+rax*8]
	lea	rax, key_perm_maskr[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rax, QWORD PTR -48[rbp]
	shr	rax, 9
	and	eax, 127
	add	rax, 256
	lea	rdx, 0[0+rax*8]
	lea	rax, key_perm_maskr[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rax, QWORD PTR -48[rbp]
	shr	rax
	and	eax, 127
	add	rax, 384
	lea	rdx, 0[0+rax*8]
	lea	rax, key_perm_maskr[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rax, QWORD PTR -40[rbp]
	shr	rax, 25
	add	rax, 512
	lea	rdx, 0[0+rax*8]
	lea	rax, key_perm_maskr[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rax, QWORD PTR -40[rbp]
	shr	rax, 17
	and	eax, 127
	add	rax, 640
	lea	rdx, 0[0+rax*8]
	lea	rax, key_perm_maskr[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rax, QWORD PTR -40[rbp]
	shr	rax, 9
	and	eax, 127
	add	rax, 768
	lea	rdx, 0[0+rax*8]
	lea	rax, key_perm_maskr[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rax, QWORD PTR -40[rbp]
	shr	rax
	and	eax, 127
	add	rax, 896
	lea	rdx, 0[0+rax*8]
	lea	rax, key_perm_maskr[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rax, rcx
	mov	QWORD PTR -24[rbp], rax
	mov	DWORD PTR -56[rbp], 0
	mov	DWORD PTR -52[rbp], 0
	jmp	.L62
.L63:
	mov	eax, DWORD PTR -52[rbp]
	cdqe
	lea	rdx, key_shifts[rip]
	movzx	eax, BYTE PTR [rax+rdx]
	movzx	eax, al
	add	DWORD PTR -56[rbp], eax
	mov	eax, DWORD PTR -56[rbp]
	mov	rdx, QWORD PTR -32[rbp]
	mov	rsi, rdx
	mov	ecx, eax
	sal	rsi, cl
	mov	eax, 28
	sub	eax, DWORD PTR -56[rbp]
	mov	rdx, QWORD PTR -32[rbp]
	mov	ecx, eax
	shr	rdx, cl
	mov	rax, rdx
	or	rax, rsi
	mov	QWORD PTR -16[rbp], rax
	mov	eax, DWORD PTR -56[rbp]
	mov	rdx, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	ecx, eax
	sal	rsi, cl
	mov	eax, 28
	sub	eax, DWORD PTR -56[rbp]
	mov	rdx, QWORD PTR -24[rbp]
	mov	ecx, eax
	shr	rdx, cl
	mov	rax, rdx
	or	rax, rsi
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	shr	rax, 21
	and	eax, 127
	lea	rdx, 0[0+rax*8]
	lea	rax, comp_maskl[rip]
	mov	rcx, QWORD PTR [rdx+rax]
	mov	rax, QWORD PTR -16[rbp]
	shr	rax, 14
	and	eax, 127
	sub	rax, -128
	lea	rdx, 0[0+rax*8]
	lea	rax, comp_maskl[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rax, QWORD PTR -16[rbp]
	shr	rax, 7
	and	eax, 127
	add	rax, 256
	lea	rdx, 0[0+rax*8]
	lea	rax, comp_maskl[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rax, QWORD PTR -16[rbp]
	and	eax, 127
	add	rax, 384
	lea	rdx, 0[0+rax*8]
	lea	rax, comp_maskl[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rax, QWORD PTR -8[rbp]
	shr	rax, 21
	and	eax, 127
	add	rax, 512
	lea	rdx, 0[0+rax*8]
	lea	rax, comp_maskl[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rax, QWORD PTR -8[rbp]
	shr	rax, 14
	and	eax, 127
	add	rax, 640
	lea	rdx, 0[0+rax*8]
	lea	rax, comp_maskl[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rax, QWORD PTR -8[rbp]
	shr	rax, 7
	and	eax, 127
	add	rax, 768
	lea	rdx, 0[0+rax*8]
	lea	rax, comp_maskl[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rax, QWORD PTR -8[rbp]
	and	eax, 127
	add	rax, 896
	lea	rdx, 0[0+rax*8]
	lea	rax, comp_maskl[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	eax, DWORD PTR -52[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, en_keysl[rip]
	mov	QWORD PTR [rdx+rax], rcx
	mov	eax, 15
	sub	eax, DWORD PTR -52[rbp]
	mov	edx, eax
	mov	eax, DWORD PTR -52[rbp]
	cdqe
	lea	rcx, 0[0+rax*8]
	lea	rax, en_keysl[rip]
	mov	rax, QWORD PTR [rcx+rax]
	movsx	rdx, edx
	lea	rcx, 0[0+rdx*8]
	lea	rdx, de_keysl[rip]
	mov	QWORD PTR [rcx+rdx], rax
	mov	rax, QWORD PTR -16[rbp]
	shr	rax, 21
	and	eax, 127
	lea	rdx, 0[0+rax*8]
	lea	rax, comp_maskr[rip]
	mov	rcx, QWORD PTR [rdx+rax]
	mov	rax, QWORD PTR -16[rbp]
	shr	rax, 14
	and	eax, 127
	sub	rax, -128
	lea	rdx, 0[0+rax*8]
	lea	rax, comp_maskr[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rax, QWORD PTR -16[rbp]
	shr	rax, 7
	and	eax, 127
	add	rax, 256
	lea	rdx, 0[0+rax*8]
	lea	rax, comp_maskr[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rax, QWORD PTR -16[rbp]
	and	eax, 127
	add	rax, 384
	lea	rdx, 0[0+rax*8]
	lea	rax, comp_maskr[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rax, QWORD PTR -8[rbp]
	shr	rax, 21
	and	eax, 127
	add	rax, 512
	lea	rdx, 0[0+rax*8]
	lea	rax, comp_maskr[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rax, QWORD PTR -8[rbp]
	shr	rax, 14
	and	eax, 127
	add	rax, 640
	lea	rdx, 0[0+rax*8]
	lea	rax, comp_maskr[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rax, QWORD PTR -8[rbp]
	shr	rax, 7
	and	eax, 127
	add	rax, 768
	lea	rdx, 0[0+rax*8]
	lea	rax, comp_maskr[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rax, QWORD PTR -8[rbp]
	and	eax, 127
	add	rax, 896
	lea	rdx, 0[0+rax*8]
	lea	rax, comp_maskr[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	eax, DWORD PTR -52[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, en_keysr[rip]
	mov	QWORD PTR [rdx+rax], rcx
	mov	eax, 15
	sub	eax, DWORD PTR -52[rbp]
	mov	edx, eax
	mov	eax, DWORD PTR -52[rbp]
	cdqe
	lea	rcx, 0[0+rax*8]
	lea	rax, en_keysr[rip]
	mov	rax, QWORD PTR [rcx+rax]
	movsx	rdx, edx
	lea	rcx, 0[0+rdx*8]
	lea	rdx, de_keysr[rip]
	mov	QWORD PTR [rcx+rdx], rax
	add	DWORD PTR -52[rbp], 1
.L62:
	cmp	DWORD PTR -52[rbp], 15
	jle	.L63
	mov	eax, 0
.L61:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE9:
	.size	des_setkey, .-des_setkey
	.type	do_des, @function
do_des:
.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 -88[rbp], rdi
	mov	QWORD PTR -96[rbp], rsi
	mov	QWORD PTR -104[rbp], rdx
	mov	QWORD PTR -112[rbp], rcx
	mov	DWORD PTR -116[rbp], r8d
	cmp	DWORD PTR -116[rbp], 0
	jne	.L65
	mov	eax, 1
	jmp	.L66
.L65:
	cmp	DWORD PTR -116[rbp], 0
	jle	.L67
	lea	rax, en_keysl[rip]
	mov	QWORD PTR -40[rbp], rax
	lea	rax, en_keysr[rip]
	mov	QWORD PTR -32[rbp], rax
	jmp	.L68
.L67:
	neg	DWORD PTR -116[rbp]
	lea	rax, de_keysl[rip]
	mov	QWORD PTR -40[rbp], rax
	lea	rax, de_keysr[rip]
	mov	QWORD PTR -32[rbp], rax
.L68:
	mov	rax, QWORD PTR -88[rbp]
	shr	rax, 24
	lea	rdx, 0[0+rax*8]
	lea	rax, ip_maskl[rip]
	mov	rcx, QWORD PTR [rdx+rax]
	mov	rax, QWORD PTR -88[rbp]
	shr	rax, 16
	movzx	eax, al
	add	rax, 256
	lea	rdx, 0[0+rax*8]
	lea	rax, ip_maskl[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rax, QWORD PTR -88[rbp]
	shr	rax, 8
	movzx	eax, al
	add	rax, 512
	lea	rdx, 0[0+rax*8]
	lea	rax, ip_maskl[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rax, QWORD PTR -88[rbp]
	movzx	eax, al
	add	rax, 768
	lea	rdx, 0[0+rax*8]
	lea	rax, ip_maskl[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rax, QWORD PTR -96[rbp]
	shr	rax, 24
	add	rax, 1024
	lea	rdx, 0[0+rax*8]
	lea	rax, ip_maskl[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rax, QWORD PTR -96[rbp]
	shr	rax, 16
	movzx	eax, al
	add	rax, 1280
	lea	rdx, 0[0+rax*8]
	lea	rax, ip_maskl[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rax, QWORD PTR -96[rbp]
	shr	rax, 8
	movzx	eax, al
	add	rax, 1536
	lea	rdx, 0[0+rax*8]
	lea	rax, ip_maskl[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rax, QWORD PTR -96[rbp]
	movzx	eax, al
	add	rax, 1792
	lea	rdx, 0[0+rax*8]
	lea	rax, ip_maskl[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rax, rcx
	mov	QWORD PTR -72[rbp], rax
	mov	rax, QWORD PTR -88[rbp]
	shr	rax, 24
	lea	rdx, 0[0+rax*8]
	lea	rax, ip_maskr[rip]
	mov	rcx, QWORD PTR [rdx+rax]
	mov	rax, QWORD PTR -88[rbp]
	shr	rax, 16
	movzx	eax, al
	add	rax, 256
	lea	rdx, 0[0+rax*8]
	lea	rax, ip_maskr[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rax, QWORD PTR -88[rbp]
	shr	rax, 8
	movzx	eax, al
	add	rax, 512
	lea	rdx, 0[0+rax*8]
	lea	rax, ip_maskr[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rax, QWORD PTR -88[rbp]
	movzx	eax, al
	add	rax, 768
	lea	rdx, 0[0+rax*8]
	lea	rax, ip_maskr[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rax, QWORD PTR -96[rbp]
	shr	rax, 24
	add	rax, 1024
	lea	rdx, 0[0+rax*8]
	lea	rax, ip_maskr[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rax, QWORD PTR -96[rbp]
	shr	rax, 16
	movzx	eax, al
	add	rax, 1280
	lea	rdx, 0[0+rax*8]
	lea	rax, ip_maskr[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rax, QWORD PTR -96[rbp]
	shr	rax, 8
	movzx	eax, al
	add	rax, 1536
	lea	rdx, 0[0+rax*8]
	lea	rax, ip_maskr[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rax, QWORD PTR -96[rbp]
	movzx	eax, al
	add	rax, 1792
	lea	rdx, 0[0+rax*8]
	lea	rax, ip_maskr[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rax, rcx
	mov	QWORD PTR -64[rbp], rax
	jmp	.L69
.L72:
	mov	rax, QWORD PTR -40[rbp]
	mov	QWORD PTR -56[rbp], rax
	mov	rax, QWORD PTR -32[rbp]
	mov	QWORD PTR -48[rbp], rax
	mov	DWORD PTR -76[rbp], 16
	jmp	.L70
.L71:
	mov	rax, QWORD PTR -64[rbp]
	sal	rax, 23
	and	eax, 8388608
	mov	rdx, rax
	mov	rax, QWORD PTR -64[rbp]
	shr	rax, 9
	and	eax, 8126464
	or	rdx, rax
	mov	rax, QWORD PTR -64[rbp]
	shr	rax, 11
	and	eax, 258048
	or	rdx, rax
	mov	rax, QWORD PTR -64[rbp]
	shr	rax, 13
	and	eax, 4032
	or	rdx, rax
	mov	rax, QWORD PTR -64[rbp]
	shr	rax, 15
	and	eax, 63
	or	rax, rdx
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -64[rbp]
	sal	rax, 7
	and	eax, 16515072
	mov	rdx, rax
	mov	rax, QWORD PTR -64[rbp]
	sal	rax, 5
	and	eax, 258048
	or	rdx, rax
	mov	rax, QWORD PTR -64[rbp]
	sal	rax, 3
	and	eax, 4032
	or	rdx, rax
	mov	rax, QWORD PTR -64[rbp]
	add	rax, rax
	and	eax, 62
	or	rdx, rax
	mov	rax, QWORD PTR -64[rbp]
	shr	rax, 31
	and	eax, 1
	or	rax, rdx
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	xor	rax, QWORD PTR -8[rbp]
	mov	rdx, rax
	mov	rax, QWORD PTR saltbits[rip]
	and	rax, rdx
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -56[rbp]
	lea	rdx, 8[rax]
	mov	QWORD PTR -56[rbp], rdx
	mov	rax, QWORD PTR [rax]
	xor	rax, QWORD PTR -24[rbp]
	xor	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -48[rbp]
	lea	rdx, 8[rax]
	mov	QWORD PTR -48[rbp], rdx
	mov	rax, QWORD PTR [rax]
	xor	rax, QWORD PTR -24[rbp]
	xor	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	shr	rax, 12
	mov	rdx, rax
	lea	rax, m_sbox[rip]
	movzx	eax, BYTE PTR [rdx+rax]
	movzx	eax, al
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, psbox[rip]
	mov	rcx, QWORD PTR [rdx+rax]
	mov	rax, QWORD PTR -16[rbp]
	and	eax, 4095
	mov	rdx, rax
	lea	rax, m_sbox[rip+4096]
	movzx	eax, BYTE PTR [rdx+rax]
	movzx	eax, al
	cdqe
	add	rax, 256
	lea	rdx, 0[0+rax*8]
	lea	rax, psbox[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rax, QWORD PTR -8[rbp]
	shr	rax, 12
	mov	rdx, rax
	lea	rax, m_sbox[rip+8192]
	movzx	eax, BYTE PTR [rdx+rax]
	movzx	eax, al
	cdqe
	add	rax, 512
	lea	rdx, 0[0+rax*8]
	lea	rax, psbox[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rax, QWORD PTR -8[rbp]
	and	eax, 4095
	mov	rdx, rax
	lea	rax, m_sbox[rip+12288]
	movzx	eax, BYTE PTR [rdx+rax]
	movzx	eax, al
	cdqe
	add	rax, 768
	lea	rdx, 0[0+rax*8]
	lea	rax, psbox[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rax, rcx
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -72[rbp]
	xor	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -64[rbp]
	mov	QWORD PTR -72[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR -64[rbp], rax
.L70:
	mov	eax, DWORD PTR -76[rbp]
	lea	edx, -1[rax]
	mov	DWORD PTR -76[rbp], edx
	test	eax, eax
	jne	.L71
	mov	rax, QWORD PTR -72[rbp]
	mov	QWORD PTR -64[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR -72[rbp], rax
.L69:
	mov	eax, DWORD PTR -116[rbp]
	lea	edx, -1[rax]
	mov	DWORD PTR -116[rbp], edx
	test	eax, eax
	jne	.L72
	mov	rax, QWORD PTR -72[rbp]
	shr	rax, 24
	lea	rdx, 0[0+rax*8]
	lea	rax, fp_maskl[rip]
	mov	rcx, QWORD PTR [rdx+rax]
	mov	rax, QWORD PTR -72[rbp]
	shr	rax, 16
	movzx	eax, al
	add	rax, 256
	lea	rdx, 0[0+rax*8]
	lea	rax, fp_maskl[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rax, QWORD PTR -72[rbp]
	shr	rax, 8
	movzx	eax, al
	add	rax, 512
	lea	rdx, 0[0+rax*8]
	lea	rax, fp_maskl[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rax, QWORD PTR -72[rbp]
	movzx	eax, al
	add	rax, 768
	lea	rdx, 0[0+rax*8]
	lea	rax, fp_maskl[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rax, QWORD PTR -64[rbp]
	shr	rax, 24
	add	rax, 1024
	lea	rdx, 0[0+rax*8]
	lea	rax, fp_maskl[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rax, QWORD PTR -64[rbp]
	shr	rax, 16
	movzx	eax, al
	add	rax, 1280
	lea	rdx, 0[0+rax*8]
	lea	rax, fp_maskl[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rax, QWORD PTR -64[rbp]
	shr	rax, 8
	movzx	eax, al
	add	rax, 1536
	lea	rdx, 0[0+rax*8]
	lea	rax, fp_maskl[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rax, QWORD PTR -64[rbp]
	movzx	eax, al
	add	rax, 1792
	lea	rdx, 0[0+rax*8]
	lea	rax, fp_maskl[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rdx, rcx
	mov	rax, QWORD PTR -104[rbp]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -72[rbp]
	shr	rax, 24
	lea	rdx, 0[0+rax*8]
	lea	rax, fp_maskr[rip]
	mov	rcx, QWORD PTR [rdx+rax]
	mov	rax, QWORD PTR -72[rbp]
	shr	rax, 16
	movzx	eax, al
	add	rax, 256
	lea	rdx, 0[0+rax*8]
	lea	rax, fp_maskr[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rax, QWORD PTR -72[rbp]
	shr	rax, 8
	movzx	eax, al
	add	rax, 512
	lea	rdx, 0[0+rax*8]
	lea	rax, fp_maskr[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rax, QWORD PTR -72[rbp]
	movzx	eax, al
	add	rax, 768
	lea	rdx, 0[0+rax*8]
	lea	rax, fp_maskr[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rax, QWORD PTR -64[rbp]
	shr	rax, 24
	add	rax, 1024
	lea	rdx, 0[0+rax*8]
	lea	rax, fp_maskr[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rax, QWORD PTR -64[rbp]
	shr	rax, 16
	movzx	eax, al
	add	rax, 1280
	lea	rdx, 0[0+rax*8]
	lea	rax, fp_maskr[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rax, QWORD PTR -64[rbp]
	shr	rax, 8
	movzx	eax, al
	add	rax, 1536
	lea	rdx, 0[0+rax*8]
	lea	rax, fp_maskr[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rax, QWORD PTR -64[rbp]
	movzx	eax, al
	add	rax, 1792
	lea	rdx, 0[0+rax*8]
	lea	rax, fp_maskr[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rdx, rcx
	mov	rax, QWORD PTR -112[rbp]
	mov	QWORD PTR [rax], rdx
	mov	eax, 0
.L66:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE10:
	.size	do_des, .-do_des
	.globl	des_cipher
	.type	des_cipher, @function
des_cipher:
.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, 80
	mov	QWORD PTR -56[rbp], rdi
	mov	QWORD PTR -64[rbp], rsi
	mov	QWORD PTR -72[rbp], rdx
	mov	DWORD PTR -76[rbp], ecx
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	eax, DWORD PTR des_initialised[rip]
	test	eax, eax
	jne	.L74
	call	des_init
.L74:
	mov	rax, QWORD PTR -72[rbp]
	mov	rdi, rax
	call	setup_salt
	mov	rax, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rdi, rax
	mov	eax, 0
	call	ntohl@PLT
	cdqe
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -56[rbp]
	add	rax, 8
	mov	rax, QWORD PTR [rax]
	mov	rdi, rax
	mov	eax, 0
	call	ntohl@PLT
	cdqe
	mov	QWORD PTR -16[rbp], rax
	mov	edi, DWORD PTR -76[rbp]
	lea	rcx, -32[rbp]
	lea	rdx, -40[rbp]
	mov	rsi, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	r8d, edi
	mov	rdi, rax
	call	do_des
	mov	DWORD PTR -44[rbp], eax
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	mov	eax, 0
	call	htonl@PLT
	movsx	rdx, eax
	mov	rax, QWORD PTR -64[rbp]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -32[rbp]
	mov	rdi, rax
	mov	eax, 0
	call	htonl@PLT
	mov	rdx, QWORD PTR -64[rbp]
	add	rdx, 8
	cdqe
	mov	QWORD PTR [rdx], rax
	mov	eax, DWORD PTR -44[rbp]
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L76
	call	__stack_chk_fail@PLT
.L76:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE11:
	.size	des_cipher, .-des_cipher
	.globl	setkey
	.type	setkey, @function
setkey:
.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, 64
	mov	QWORD PTR -56[rbp], rdi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	lea	rax, -32[rbp]
	mov	QWORD PTR -40[rbp], rax
	mov	DWORD PTR -48[rbp], 0
	jmp	.L78
.L82:
	mov	eax, DWORD PTR -48[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rdx
	mov	BYTE PTR [rax], 0
	mov	DWORD PTR -44[rbp], 0
	jmp	.L79
.L81:
	mov	rax, QWORD PTR -56[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -56[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movsx	eax, al
	and	eax, 1
	test	eax, eax
	je	.L80
	mov	eax, DWORD PTR -48[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rdx
	movzx	ecx, BYTE PTR [rax]
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	lea	rdx, bits8[rip]
	movzx	edx, BYTE PTR [rax+rdx]
	mov	eax, DWORD PTR -48[rbp]
	movsx	rsi, eax
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rsi
	or	edx, ecx
	mov	BYTE PTR [rax], dl
.L80:
	add	DWORD PTR -44[rbp], 1
.L79:
	cmp	DWORD PTR -44[rbp], 7
	jle	.L81
	add	DWORD PTR -48[rbp], 1
.L78:
	cmp	DWORD PTR -48[rbp], 7
	jle	.L82
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	des_setkey
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L84
	call	__stack_chk_fail@PLT
.L84:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE12:
	.size	setkey, .-setkey
	.globl	encrypt
	.type	encrypt, @function
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, 80
	mov	QWORD PTR -72[rbp], rdi
	mov	DWORD PTR -76[rbp], esi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	eax, DWORD PTR des_initialised[rip]
	test	eax, eax
	jne	.L86
	call	des_init
.L86:
	mov	edi, 0
	call	setup_salt
	mov	rax, QWORD PTR -72[rbp]
	mov	QWORD PTR -40[rbp], rax
	mov	DWORD PTR -52[rbp], 0
	jmp	.L87
.L91:
	mov	eax, DWORD PTR -52[rbp]
	cdqe
	mov	QWORD PTR -32[rbp+rax*8], 0
	mov	DWORD PTR -48[rbp], 0
	jmp	.L88
.L90:
	mov	rax, QWORD PTR -40[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -40[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	and	eax, 1
	test	eax, eax
	je	.L89
	mov	eax, DWORD PTR -52[rbp]
	cdqe
	mov	rcx, QWORD PTR -32[rbp+rax*8]
	mov	eax, DWORD PTR -48[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, bits32[rip]
	mov	rax, QWORD PTR [rdx+rax]
	or	rcx, rax
	mov	rdx, rcx
	mov	eax, DWORD PTR -52[rbp]
	cdqe
	mov	QWORD PTR -32[rbp+rax*8], rdx
.L89:
	add	DWORD PTR -48[rbp], 1
.L88:
	cmp	DWORD PTR -48[rbp], 31
	jle	.L90
	add	DWORD PTR -52[rbp], 1
.L87:
	cmp	DWORD PTR -52[rbp], 1
	jle	.L91
	cmp	DWORD PTR -76[rbp], 0
	je	.L92
	mov	ecx, -1
	jmp	.L93
.L92:
	mov	ecx, 1
.L93:
	lea	rax, -32[rbp]
	add	rax, 8
	mov	rsi, QWORD PTR -24[rbp]
	mov	rdi, QWORD PTR -32[rbp]
	lea	rdx, -32[rbp]
	mov	r8d, ecx
	mov	rcx, rax
	call	do_des
	mov	DWORD PTR -44[rbp], eax
	mov	DWORD PTR -52[rbp], 0
	jmp	.L94
.L97:
	mov	DWORD PTR -48[rbp], 0
	jmp	.L95
.L96:
	mov	eax, DWORD PTR -52[rbp]
	cdqe
	mov	rcx, QWORD PTR -32[rbp+rax*8]
	mov	eax, DWORD PTR -48[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, bits32[rip]
	mov	rax, QWORD PTR [rdx+rax]
	and	rax, rcx
	test	rax, rax
	setne	cl
	mov	eax, DWORD PTR -52[rbp]
	sal	eax, 5
	or	eax, DWORD PTR -48[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -72[rbp]
	add	rax, rdx
	mov	edx, ecx
	mov	BYTE PTR [rax], dl
	add	DWORD PTR -48[rbp], 1
.L95:
	cmp	DWORD PTR -48[rbp], 31
	jle	.L96
	add	DWORD PTR -52[rbp], 1
.L94:
	cmp	DWORD PTR -52[rbp], 1
	jle	.L97
	mov	eax, DWORD PTR -44[rbp]
	mov	rsi, QWORD PTR -8[rbp]
	sub	rsi, QWORD PTR fs:40
	je	.L99
	call	__stack_chk_fail@PLT
.L99:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE13:
	.size	encrypt, .-encrypt
	.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	"638826.c"
	.text
	.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"
	.local	inv_key_perm
	.comm	inv_key_perm,64,4
	.local	u_key_perm
	.comm	u_key_perm,56,4
	.align	2
	.type	key_perm, %object
	.size	key_perm, 56
key_perm:
	.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	key_shifts, %object
	.size	key_shifts, 16
key_shifts:
	.ascii	"\001\001\002\002\002\002\002\002\001\002\002\002\002"
	.ascii	"\002\002\001"
	.local	inv_comp_perm
	.comm	inv_comp_perm,56,4
	.align	2
	.type	comp_perm, %object
	.size	comp_perm, 48
comp_perm:
	.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 "
	.local	u_sbox
	.comm	u_sbox,512,4
	.align	2
	.type	sbox, %object
	.size	sbox, 512
sbox:
	.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"
	.local	un_pbox
	.comm	un_pbox,32,4
	.align	2
	.type	pbox, %object
	.size	pbox, 32
pbox:
	.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	bits32, %object
	.size	bits32, 128
bits32:
	.word	-2147483648
	.word	1073741824
	.word	536870912
	.word	268435456
	.word	134217728
	.word	67108864
	.word	33554432
	.word	16777216
	.word	8388608
	.word	4194304
	.word	2097152
	.word	1048576
	.word	524288
	.word	262144
	.word	131072
	.word	65536
	.word	32768
	.word	16384
	.word	8192
	.word	4096
	.word	2048
	.word	1024
	.word	512
	.word	256
	.word	128
	.word	64
	.word	32
	.word	16
	.word	8
	.word	4
	.word	2
	.word	1
	.align	2
	.type	bits8, %object
	.size	bits8, 8
bits8:
	.ascii	"\200@ \020\010\004\002\001"
	.local	saltbits
	.comm	saltbits,4,4
	.local	old_salt
	.comm	old_salt,4,4
	.local	bits28
	.comm	bits28,4,4
	.local	bits24
	.comm	bits24,4,4
	.local	init_perm
	.comm	init_perm,64,4
	.local	final_perm
	.comm	final_perm,64,4
	.local	en_keysl
	.comm	en_keysl,64,4
	.local	en_keysr
	.comm	en_keysr,64,4
	.local	de_keysl
	.comm	de_keysl,64,4
	.local	de_keysr
	.comm	de_keysr,64,4
	.local	des_initialised
	.comm	des_initialised,4,4
	.local	m_sbox
	.comm	m_sbox,16384,4
	.local	psbox
	.comm	psbox,4096,4
	.local	ip_maskl
	.comm	ip_maskl,8192,4
	.local	ip_maskr
	.comm	ip_maskr,8192,4
	.local	fp_maskl
	.comm	fp_maskl,8192,4
	.local	fp_maskr
	.comm	fp_maskr,8192,4
	.local	key_perm_maskl
	.comm	key_perm_maskl,4096,4
	.local	key_perm_maskr
	.comm	key_perm_maskr,4096,4
	.local	comp_maskl
	.comm	comp_maskl,4096,4
	.local	comp_maskr
	.comm	comp_maskr,4096,4
	.local	old_rawkey0
	.comm	old_rawkey0,4,4
	.local	old_rawkey1
	.comm	old_rawkey1,4,4
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	des_init, %function
des_init:
	@ args = 0, pretend = 0, frame = 48
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #52
	ldr	r3, .L51
	mov	r2, #0
	str	r2, [r3]
	ldr	r3, .L51
	ldr	r3, [r3]
	ldr	r2, .L51+4
	str	r3, [r2]
	ldr	r3, .L51+8
	mov	r2, #0
	str	r2, [r3]
	ldr	r3, .L51+12
	mov	r2, #0
	str	r2, [r3]
	ldr	r2, .L51+16
	ldr	r3, .L51+20
	str	r2, [r3]
	ldr	r3, .L51+20
	ldr	r3, [r3]
	add	r3, r3, #16
	ldr	r2, .L51+24
	str	r3, [r2]
	mov	r3, #0
	str	r3, [fp, #-48]
	b	.L2
.L5:
	mov	r3, #0
	str	r3, [fp, #-44]
	b	.L3
.L4:
	ldr	r3, [fp, #-44]
	and	r2, r3, #32
	ldr	r3, [fp, #-44]
	lsl	r3, r3, #4
	and	r3, r3, #16
	orr	r2, r2, r3
	ldr	r3, [fp, #-44]
	asr	r3, r3, #1
	and	r3, r3, #15
	orr	r3, r2, r3
	str	r3, [fp, #-40]
	ldr	r2, .L51+28
	ldr	r3, [fp, #-48]
	lsl	r3, r3, #6
	add	r2, r2, r3
	ldr	r3, [fp, #-40]
	add	r3, r2, r3
	ldrb	r1, [r3]	@ zero_extendqisi2
	ldr	r2, .L51+32
	ldr	r3, [fp, #-48]
	lsl	r3, r3, #6
	add	r2, r2, r3
	ldr	r3, [fp, #-44]
	add	r3, r2, r3
	mov	r2, r1
	strb	r2, [r3]
	ldr	r3, [fp, #-44]
	add	r3, r3, #1
	str	r3, [fp, #-44]
.L3:
	ldr	r3, [fp, #-44]
	cmp	r3, #63
	ble	.L4
	ldr	r3, [fp, #-48]
	add	r3, r3, #1
	str	r3, [fp, #-48]
.L2:
	ldr	r3, [fp, #-48]
	cmp	r3, #7
	ble	.L5
	mov	r3, #0
	str	r3, [fp, #-40]
	b	.L6
.L11:
	mov	r3, #0
	str	r3, [fp, #-48]
	b	.L7
.L10:
	mov	r3, #0
	str	r3, [fp, #-44]
	b	.L8
.L9:
	ldr	r3, [fp, #-40]
	lsl	r3, r3, #1
	ldr	r2, .L51+32
	lsl	r3, r3, #6
	add	r2, r2, r3
	ldr	r3, [fp, #-48]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #4
	lsl	r3, r3, #24
	asr	r2, r3, #24
	ldr	r3, [fp, #-40]
	lsl	r3, r3, #1
	add	r3, r3, #1
	ldr	r1, .L51+32
	lsl	r3, r3, #6
	add	r1, r1, r3
	ldr	r3, [fp, #-44]
	add	r3, r1, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #24
	asr	r3, r3, #24
	orr	r3, r2, r3
	lsl	r3, r3, #24
	asr	r2, r3, #24
	ldr	r3, [fp, #-48]
	lsl	r1, r3, #6
	ldr	r3, [fp, #-44]
	orr	r3, r1, r3
	and	r0, r2, #255
	ldr	r1, .L51+36
	ldr	r2, [fp, #-40]
	lsl	r2, r2, #12
	add	r2, r1, r2
	add	r3, r2, r3
	mov	r2, r0
	strb	r2, [r3]
	ldr	r3, [fp, #-44]
	add	r3, r3, #1
	str	r3, [fp, #-44]
.L8:
	ldr	r3, [fp, #-44]
	cmp	r3, #63
	ble	.L9
	ldr	r3, [fp, #-48]
	add	r3, r3, #1
	str	r3, [fp, #-48]
.L7:
	ldr	r3, [fp, #-48]
	cmp	r3, #63
	ble	.L10
	ldr	r3, [fp, #-40]
	add	r3, r3, #1
	str	r3, [fp, #-40]
.L6:
	ldr	r3, [fp, #-40]
	cmp	r3, #3
	ble	.L11
	mov	r3, #0
	str	r3, [fp, #-48]
	b	.L12
.L13:
	ldr	r2, .L51+40
	ldr	r3, [fp, #-48]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	sub	r3, r3, #1
	and	r1, r3, #255
	ldr	r2, .L51+44
	ldr	r3, [fp, #-48]
	add	r3, r2, r3
	mov	r2, r1
	strb	r2, [r3]
	ldr	r2, .L51+44
	ldr	r3, [fp, #-48]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r3, [fp, #-48]
	and	r1, r3, #255
	ldr	r3, .L51+48
	strb	r1, [r3, r2]
	ldr	r2, .L51+52
	ldr	r3, [fp, #-48]
	add	r3, r2, r3
	mvn	r2, #0
	strb	r2, [r3]
	ldr	r3, [fp, #-48]
	add	r3, r3, #1
	str	r3, [fp, #-48]
.L12:
	ldr	r3, [fp, #-48]
	cmp	r3, #63
	ble	.L13
	mov	r3, #0
	str	r3, [fp, #-48]
	b	.L14
.L15:
	ldr	r2, .L51+56
	ldr	r3, [fp, #-48]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	sub	r3, r3, #1
	and	r1, r3, #255
	ldr	r2, .L51+60
	ldr	r3, [fp, #-48]
	add	r3, r2, r3
	mov	r2, r1
	strb	r2, [r3]
	ldr	r2, .L51+56
	ldr	r3, [fp, #-48]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	sub	r3, r3, #1
	ldr	r2, [fp, #-48]
	and	r1, r2, #255
	ldr	r2, .L51+52
	strb	r1, [r2, r3]
	ldr	r2, .L51+64
	ldr	r3, [fp, #-48]
	add	r3, r2, r3
	mvn	r2, #0
	strb	r2, [r3]
	ldr	r3, [fp, #-48]
	add	r3, r3, #1
	str	r3, [fp, #-48]
.L14:
	ldr	r3, [fp, #-48]
	cmp	r3, #55
	ble	.L15
	mov	r3, #0
	str	r3, [fp, #-48]
	b	.L16
.L17:
	ldr	r2, .L51+68
	ldr	r3, [fp, #-48]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	sub	r3, r3, #1
	ldr	r2, [fp, #-48]
	and	r1, r2, #255
	ldr	r2, .L51+64
	strb	r1, [r2, r3]
	ldr	r3, [fp, #-48]
	add	r3, r3, #1
	str	r3, [fp, #-48]
.L16:
	ldr	r3, [fp, #-48]
	cmp	r3, #47
	ble	.L17
	mov	r3, #0
	str	r3, [fp, #-36]
	b	.L18
.L39:
	mov	r3, #0
	str	r3, [fp, #-48]
	b	.L19
.L26:
	ldr	r3, [fp, #-36]
	lsl	r2, r3, #8
	ldr	r3, [fp, #-48]
	add	r3, r2, r3
	lsl	r3, r3, #2
	ldr	r2, .L51+72
	add	r3, r3, r2
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-28]
	mov	r2, #0
	str	r2, [r3]
	ldr	r3, [fp, #-36]
	lsl	r2, r3, #8
	ldr	r3, [fp, #-48]
	add	r3, r2, r3
	lsl	r3, r3, #2
	ldr	r2, .L51+76
	add	r3, r3, r2
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-24]
	mov	r2, #0
	str	r2, [r3]
	ldr	r3, [fp, #-36]
	lsl	r2, r3, #8
	ldr	r3, [fp, #-48]
	add	r3, r2, r3
	lsl	r3, r3, #2
	ldr	r2, .L51+80
	add	r3, r3, r2
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-12]
	mov	r2, #0
	str	r2, [r3]
	ldr	r3, [fp, #-36]
	lsl	r2, r3, #8
	ldr	r3, [fp, #-48]
	add	r3, r2, r3
	lsl	r3, r3, #2
	ldr	r2, .L51+84
	add	r3, r3, r2
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	mov	r2, #0
	str	r2, [r3]
	mov	r3, #0
	str	r3, [fp, #-44]
	b	.L20
.L25:
	ldr	r3, [fp, #-36]
	lsl	r3, r3, #3
	ldr	r2, [fp, #-44]
	add	r3, r2, r3
	str	r3, [fp, #-20]
	ldr	r2, .L51+88
	ldr	r3, [fp, #-44]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r3, [fp, #-48]
	and	r3, r3, r2
	cmp	r3, #0
	beq	.L21
	ldr	r2, .L51+48
	ldr	r3, [fp, #-20]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-16]
	cmp	r3, #31
	bgt	.L22
	ldr	r3, [fp, #-28]
	ldr	r2, [r3]
	ldr	r1, .L51+92
	ldr	r3, [fp, #-16]
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-28]
	str	r2, [r3]
	b	.L23
.L22:
	ldr	r3, [fp, #-24]
	ldr	r2, [r3]
	ldr	r3, [fp, #-16]
	sub	r3, r3, #32
	ldr	r1, .L51+92
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-24]
	str	r2, [r3]
.L23:
	ldr	r2, .L51+44
	ldr	r3, [fp, #-20]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-16]
	cmp	r3, #31
	bgt	.L24
	ldr	r3, [fp, #-12]
	ldr	r2, [r3]
	ldr	r1, .L51+92
	ldr	r3, [fp, #-16]
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-12]
	str	r2, [r3]
	b	.L21
.L24:
	ldr	r3, [fp, #-8]
	ldr	r2, [r3]
	ldr	r3, [fp, #-16]
	sub	r3, r3, #32
	ldr	r1, .L51+92
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-8]
	str	r2, [r3]
.L21:
	ldr	r3, [fp, #-44]
	add	r3, r3, #1
	str	r3, [fp, #-44]
.L20:
	ldr	r3, [fp, #-44]
	cmp	r3, #7
	ble	.L25
	ldr	r3, [fp, #-48]
	add	r3, r3, #1
	str	r3, [fp, #-48]
.L19:
	ldr	r3, [fp, #-48]
	cmp	r3, #255
	ble	.L26
	mov	r3, #0
	str	r3, [fp, #-48]
	b	.L27
.L38:
	ldr	r3, [fp, #-36]
	lsl	r2, r3, #7
	ldr	r3, [fp, #-48]
	add	r3, r2, r3
	lsl	r3, r3, #2
	ldr	r2, .L51+96
	add	r3, r3, r2
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-28]
	mov	r2, #0
	str	r2, [r3]
	ldr	r3, [fp, #-36]
	lsl	r2, r3, #7
	ldr	r3, [fp, #-48]
	add	r3, r2, r3
	lsl	r3, r3, #2
	ldr	r2, .L51+100
	add	r3, r3, r2
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-24]
	mov	r2, #0
	str	r2, [r3]
	mov	r3, #0
	str	r3, [fp, #-44]
	b	.L28
.L32:
	ldr	r3, [fp, #-36]
	lsl	r3, r3, #3
	ldr	r2, [fp, #-44]
	add	r3, r2, r3
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-44]
	add	r3, r3, #1
	ldr	r2, .L51+88
	ldrb	r3, [r2, r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r3, [fp, #-48]
	and	r3, r3, r2
	cmp	r3, #0
	beq	.L29
	ldr	r2, .L51+52
	ldr	r3, [fp, #-20]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-16]
	cmp	r3, #255
	beq	.L49
	ldr	r3, [fp, #-16]
	cmp	r3, #27
	bgt	.L31
	ldr	r3, [fp, #-28]
	ldr	r2, [r3]
	ldr	r3, .L51+20
	ldr	r1, [r3]
	ldr	r3, [fp, #-16]
	lsl	r3, r3, #2
	add	r3, r1, r3
	ldr	r3, [r3]
	orr	r2, r2, r3
	ldr	r3, [fp, #-28]
	str	r2, [r3]
	b	.L29
.L31:
	ldr	r3, [fp, #-24]
	ldr	r2, [r3]
	ldr	r3, .L51+20
	ldr	r1, [r3]
	ldr	r3, [fp, #-16]
	sub	r3, r3, #-1073741796
	lsl	r3, r3, #2
	add	r3, r1, r3
	ldr	r3, [r3]
	orr	r2, r2, r3
	ldr	r3, [fp, #-24]
	str	r2, [r3]
	b	.L29
.L49:
	nop
.L29:
	ldr	r3, [fp, #-44]
	add	r3, r3, #1
	str	r3, [fp, #-44]
.L28:
	ldr	r3, [fp, #-44]
	cmp	r3, #6
	ble	.L32
	ldr	r3, [fp, #-36]
	lsl	r2, r3, #7
	ldr	r3, [fp, #-48]
	add	r3, r2, r3
	lsl	r3, r3, #2
	ldr	r2, .L51+104
	add	r3, r3, r2
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-28]
	mov	r2, #0
	str	r2, [r3]
	ldr	r3, [fp, #-36]
	lsl	r2, r3, #7
	ldr	r3, [fp, #-48]
	add	r3, r2, r3
	lsl	r3, r3, #2
	ldr	r2, .L51+108
	add	r3, r3, r2
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-24]
	mov	r2, #0
	str	r2, [r3]
	mov	r3, #0
	str	r3, [fp, #-44]
	b	.L33
.L37:
	ldr	r2, [fp, #-36]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	ldr	r2, [fp, #-44]
	add	r3, r2, r3
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-44]
	add	r3, r3, #1
	ldr	r2, .L51+88
	ldrb	r3, [r2, r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r3, [fp, #-48]
	and	r3, r3, r2
	cmp	r3, #0
	beq	.L34
	ldr	r2, .L51+64
	ldr	r3, [fp, #-20]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-16]
	cmp	r3, #255
	beq	.L50
	ldr	r3, [fp, #-16]
	cmp	r3, #23
	bgt	.L36
	ldr	r3, [fp, #-28]
	ldr	r2, [r3]
	ldr	r3, .L51+24
	ldr	r1, [r3]
	ldr	r3, [fp, #-16]
	lsl	r3, r3, #2
	add	r3, r1, r3
	ldr	r3, [r3]
	orr	r2, r2, r3
	ldr	r3, [fp, #-28]
	str	r2, [r3]
	b	.L34
.L36:
	ldr	r3, [fp, #-24]
	ldr	r2, [r3]
	ldr	r3, .L51+24
	ldr	r1, [r3]
	ldr	r3, [fp, #-16]
	sub	r3, r3, #-1073741800
	lsl	r3, r3, #2
	add	r3, r1, r3
	ldr	r3, [r3]
	orr	r2, r2, r3
	ldr	r3, [fp, #-24]
	str	r2, [r3]
	b	.L34
.L50:
	nop
.L34:
	ldr	r3, [fp, #-44]
	add	r3, r3, #1
	str	r3, [fp, #-44]
.L33:
	ldr	r3, [fp, #-44]
	cmp	r3, #6
	ble	.L37
	ldr	r3, [fp, #-48]
	add	r3, r3, #1
	str	r3, [fp, #-48]
.L27:
	ldr	r3, [fp, #-48]
	cmp	r3, #127
	ble	.L38
	ldr	r3, [fp, #-36]
	add	r3, r3, #1
	str	r3, [fp, #-36]
.L18:
	ldr	r3, [fp, #-36]
	cmp	r3, #7
	ble	.L39
	mov	r3, #0
	str	r3, [fp, #-48]
	b	.L40
.L41:
	ldr	r2, .L51+112
	ldr	r3, [fp, #-48]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	sub	r3, r3, #1
	ldr	r2, [fp, #-48]
	and	r1, r2, #255
	ldr	r2, .L51+116
	strb	r1, [r2, r3]
	ldr	r3, [fp, #-48]
	add	r3, r3, #1
	str	r3, [fp, #-48]
.L40:
	ldr	r3, [fp, #-48]
	cmp	r3, #31
	ble	.L41
	mov	r3, #0
	str	r3, [fp, #-40]
	b	.L42
.L48:
	mov	r3, #0
	str	r3, [fp, #-48]
	b	.L43
.L47:
	ldr	r3, [fp, #-40]
	lsl	r2, r3, #8
	ldr	r3, [fp, #-48]
	add	r3, r2, r3
	lsl	r3, r3, #2
	ldr	r2, .L51+120
	add	r3, r3, r2
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-32]
	mov	r2, #0
	str	r2, [r3]
	mov	r3, #0
	str	r3, [fp, #-44]
	b	.L44
.L46:
	ldr	r2, .L51+88
	ldr	r3, [fp, #-44]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r3, [fp, #-48]
	and	r3, r3, r2
	cmp	r3, #0
	beq	.L45
	ldr	r3, [fp, #-32]
	ldr	r2, [r3]
	ldr	r3, [fp, #-40]
	lsl	r1, r3, #3
	ldr	r3, [fp, #-44]
	add	r3, r1, r3
	ldr	r1, .L51+116
	ldrb	r3, [r1, r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r3, .L51+92
	ldr	r3, [r3, r1, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-32]
	str	r2, [r3]
.L45:
	ldr	r3, [fp, #-44]
	add	r3, r3, #1
	str	r3, [fp, #-44]
.L44:
	ldr	r3, [fp, #-44]
	cmp	r3, #7
	ble	.L46
	ldr	r3, [fp, #-48]
	add	r3, r3, #1
	str	r3, [fp, #-48]
.L43:
	ldr	r3, [fp, #-48]
	cmp	r3, #255
	ble	.L47
	ldr	r3, [fp, #-40]
	add	r3, r3, #1
	str	r3, [fp, #-40]
.L42:
	ldr	r3, [fp, #-40]
	cmp	r3, #3
	ble	.L48
	ldr	r3, .L51+124
	mov	r2, #1
	str	r2, [r3]
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L52:
	.align	2
.L51:
	.word	old_rawkey1
	.word	old_rawkey0
	.word	saltbits
	.word	old_salt
	.word	bits32+16
	.word	bits28
	.word	bits24
	.word	sbox
	.word	u_sbox
	.word	m_sbox
	.word	IP
	.word	final_perm
	.word	init_perm
	.word	inv_key_perm
	.word	key_perm
	.word	u_key_perm
	.word	inv_comp_perm
	.word	comp_perm
	.word	ip_maskl
	.word	ip_maskr
	.word	fp_maskl
	.word	fp_maskr
	.word	bits8
	.word	bits32
	.word	key_perm_maskl
	.word	key_perm_maskr
	.word	comp_maskl
	.word	comp_maskr
	.word	pbox
	.word	un_pbox
	.word	psbox
	.word	des_initialised
	.size	des_init, .-des_init
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	setup_salt, %function
setup_salt:
	@ 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]
	ldr	r3, .L60
	ldr	r3, [r3]
	ldr	r2, [fp, #-24]
	cmp	r2, r3
	beq	.L59
	ldr	r2, .L60
	ldr	r3, [fp, #-24]
	str	r3, [r2]
	ldr	r3, .L60+4
	mov	r2, #0
	str	r2, [r3]
	mov	r3, #1
	str	r3, [fp, #-12]
	mov	r3, #8388608
	str	r3, [fp, #-16]
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L56
.L58:
	ldr	r2, [fp, #-24]
	ldr	r3, [fp, #-12]
	and	r3, r3, r2
	cmp	r3, #0
	beq	.L57
	ldr	r3, .L60+4
	ldr	r2, [r3]
	ldr	r3, [fp, #-16]
	orr	r3, r2, r3
	ldr	r2, .L60+4
	str	r3, [r2]
.L57:
	ldr	r3, [fp, #-12]
	lsl	r3, r3, #1
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-16]
	lsr	r3, r3, #1
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L56:
	ldr	r3, [fp, #-8]
	cmp	r3, #23
	ble	.L58
	b	.L53
.L59:
	nop
.L53:
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L61:
	.align	2
.L60:
	.word	old_salt
	.word	saltbits
	.size	setup_salt, .-setup_salt
	.align	2
	.global	des_setkey
	.syntax unified
	.arm
	.fpu softvfp
	.type	des_setkey, %function
des_setkey:
	@ args = 0, pretend = 0, frame = 40
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #40
	str	r0, [fp, #-40]
	ldr	r3, .L68
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L63
	bl	des_init
.L63:
	ldr	r3, [fp, #-40]
	ldr	r3, [r3]
	mov	r0, r3
	bl	ntohl
	mov	r3, r0
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-40]
	add	r3, r3, #4
	ldr	r3, [r3]
	mov	r0, r3
	bl	ntohl
	mov	r3, r0
	str	r3, [fp, #-24]
	ldr	r2, [fp, #-28]
	ldr	r3, [fp, #-24]
	orr	r3, r2, r3
	cmp	r3, #0
	beq	.L64
	ldr	r3, .L68+4
	ldr	r3, [r3]
	ldr	r2, [fp, #-28]
	cmp	r2, r3
	bne	.L64
	ldr	r3, .L68+8
	ldr	r3, [r3]
	ldr	r2, [fp, #-24]
	cmp	r2, r3
	bne	.L64
	mov	r3, #0
	b	.L65
.L64:
	ldr	r2, .L68+4
	ldr	r3, [fp, #-28]
	str	r3, [r2]
	ldr	r2, .L68+8
	ldr	r3, [fp, #-24]
	str	r3, [r2]
	ldr	r3, [fp, #-28]
	lsr	r3, r3, #25
	ldr	r2, .L68+12
	ldr	r2, [r2, r3, lsl #2]
	ldr	r3, [fp, #-28]
	lsr	r3, r3, #17
	and	r3, r3, #127
	ldr	r1, .L68+12
	add	r3, r3, #128
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-28]
	lsr	r3, r3, #9
	and	r3, r3, #127
	ldr	r1, .L68+12
	add	r3, r3, #256
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-28]
	lsr	r3, r3, #1
	and	r3, r3, #127
	ldr	r1, .L68+12
	add	r3, r3, #384
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-24]
	lsr	r3, r3, #25
	ldr	r1, .L68+12
	add	r3, r3, #512
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-24]
	lsr	r3, r3, #17
	and	r3, r3, #127
	ldr	r1, .L68+12
	add	r3, r3, #640
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-24]
	lsr	r3, r3, #9
	and	r3, r3, #127
	ldr	r1, .L68+12
	add	r3, r3, #768
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-24]
	lsr	r3, r3, #1
	and	r3, r3, #127
	ldr	r1, .L68+12
	add	r3, r3, #896
	ldr	r3, [r1, r3, lsl #2]
	orr	r3, r2, r3
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-28]
	lsr	r3, r3, #25
	ldr	r2, .L68+16
	ldr	r2, [r2, r3, lsl #2]
	ldr	r3, [fp, #-28]
	lsr	r3, r3, #17
	and	r3, r3, #127
	ldr	r1, .L68+16
	add	r3, r3, #128
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-28]
	lsr	r3, r3, #9
	and	r3, r3, #127
	ldr	r1, .L68+16
	add	r3, r3, #256
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-28]
	lsr	r3, r3, #1
	and	r3, r3, #127
	ldr	r1, .L68+16
	add	r3, r3, #384
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-24]
	lsr	r3, r3, #25
	ldr	r1, .L68+16
	add	r3, r3, #512
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-24]
	lsr	r3, r3, #17
	and	r3, r3, #127
	ldr	r1, .L68+16
	add	r3, r3, #640
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-24]
	lsr	r3, r3, #9
	and	r3, r3, #127
	ldr	r1, .L68+16
	add	r3, r3, #768
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-24]
	lsr	r3, r3, #1
	and	r3, r3, #127
	ldr	r1, .L68+16
	add	r3, r3, #896
	ldr	r3, [r1, r3, lsl #2]
	orr	r3, r2, r3
	str	r3, [fp, #-16]
	mov	r3, #0
	str	r3, [fp, #-36]
	mov	r3, #0
	str	r3, [fp, #-32]
	b	.L66
.L67:
	ldr	r2, .L68+20
	ldr	r3, [fp, #-32]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r3, [fp, #-36]
	add	r3, r3, r2
	str	r3, [fp, #-36]
	ldr	r2, [fp, #-20]
	ldr	r3, [fp, #-36]
	lsl	r2, r2, r3
	ldr	r3, [fp, #-36]
	rsb	r3, r3, #28
	ldr	r1, [fp, #-20]
	lsr	r3, r1, r3
	orr	r3, r2, r3
	str	r3, [fp, #-12]
	ldr	r2, [fp, #-16]
	ldr	r3, [fp, #-36]
	lsl	r2, r2, r3
	ldr	r3, [fp, #-36]
	rsb	r3, r3, #28
	ldr	r1, [fp, #-16]
	lsr	r3, r1, r3
	orr	r3, r2, r3
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-12]
	lsr	r3, r3, #21
	and	r3, r3, #127
	ldr	r2, .L68+24
	ldr	r2, [r2, r3, lsl #2]
	ldr	r3, [fp, #-12]
	lsr	r3, r3, #14
	and	r3, r3, #127
	ldr	r1, .L68+24
	add	r3, r3, #128
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-12]
	lsr	r3, r3, #7
	and	r3, r3, #127
	ldr	r1, .L68+24
	add	r3, r3, #256
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-12]
	and	r3, r3, #127
	ldr	r1, .L68+24
	add	r3, r3, #384
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-8]
	lsr	r3, r3, #21
	and	r3, r3, #127
	ldr	r1, .L68+24
	add	r3, r3, #512
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-8]
	lsr	r3, r3, #14
	and	r3, r3, #127
	ldr	r1, .L68+24
	add	r3, r3, #640
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-8]
	lsr	r3, r3, #7
	and	r3, r3, #127
	ldr	r1, .L68+24
	add	r3, r3, #768
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-8]
	and	r3, r3, #127
	ldr	r1, .L68+24
	add	r3, r3, #896
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r1, .L68+28
	ldr	r3, [fp, #-32]
	str	r2, [r1, r3, lsl #2]
	ldr	r3, [fp, #-32]
	rsb	r3, r3, #15
	ldr	r1, .L68+28
	ldr	r2, [fp, #-32]
	ldr	r2, [r1, r2, lsl #2]
	ldr	r1, .L68+32
	str	r2, [r1, r3, lsl #2]
	ldr	r3, [fp, #-12]
	lsr	r3, r3, #21
	and	r3, r3, #127
	ldr	r2, .L68+36
	ldr	r2, [r2, r3, lsl #2]
	ldr	r3, [fp, #-12]
	lsr	r3, r3, #14
	and	r3, r3, #127
	ldr	r1, .L68+36
	add	r3, r3, #128
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-12]
	lsr	r3, r3, #7
	and	r3, r3, #127
	ldr	r1, .L68+36
	add	r3, r3, #256
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-12]
	and	r3, r3, #127
	ldr	r1, .L68+36
	add	r3, r3, #384
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-8]
	lsr	r3, r3, #21
	and	r3, r3, #127
	ldr	r1, .L68+36
	add	r3, r3, #512
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-8]
	lsr	r3, r3, #14
	and	r3, r3, #127
	ldr	r1, .L68+36
	add	r3, r3, #640
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-8]
	lsr	r3, r3, #7
	and	r3, r3, #127
	ldr	r1, .L68+36
	add	r3, r3, #768
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-8]
	and	r3, r3, #127
	ldr	r1, .L68+36
	add	r3, r3, #896
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r1, .L68+40
	ldr	r3, [fp, #-32]
	str	r2, [r1, r3, lsl #2]
	ldr	r3, [fp, #-32]
	rsb	r3, r3, #15
	ldr	r1, .L68+40
	ldr	r2, [fp, #-32]
	ldr	r2, [r1, r2, lsl #2]
	ldr	r1, .L68+44
	str	r2, [r1, r3, lsl #2]
	ldr	r3, [fp, #-32]
	add	r3, r3, #1
	str	r3, [fp, #-32]
.L66:
	ldr	r3, [fp, #-32]
	cmp	r3, #15
	ble	.L67
	mov	r3, #0
.L65:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L69:
	.align	2
.L68:
	.word	des_initialised
	.word	old_rawkey0
	.word	old_rawkey1
	.word	key_perm_maskl
	.word	key_perm_maskr
	.word	key_shifts
	.word	comp_maskl
	.word	en_keysl
	.word	de_keysl
	.word	comp_maskr
	.word	en_keysr
	.word	de_keysr
	.size	des_setkey, .-des_setkey
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	do_des, %function
do_des:
	@ args = 4, pretend = 0, frame = 56
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #60
	str	r0, [fp, #-48]
	str	r1, [fp, #-52]
	str	r2, [fp, #-56]
	str	r3, [fp, #-60]
	ldr	r3, [fp, #4]
	cmp	r3, #0
	bne	.L71
	mov	r3, #1
	b	.L72
.L71:
	ldr	r3, [fp, #4]
	cmp	r3, #0
	ble	.L73
	ldr	r3, .L79
	str	r3, [fp, #-28]
	ldr	r3, .L79+4
	str	r3, [fp, #-24]
	b	.L74
.L73:
	ldr	r3, [fp, #4]
	rsb	r3, r3, #0
	str	r3, [fp, #4]
	ldr	r3, .L79+8
	str	r3, [fp, #-28]
	ldr	r3, .L79+12
	str	r3, [fp, #-24]
.L74:
	ldr	r3, [fp, #-48]
	lsr	r3, r3, #24
	ldr	r2, .L79+16
	ldr	r2, [r2, r3, lsl #2]
	ldr	r3, [fp, #-48]
	lsr	r3, r3, #16
	and	r3, r3, #255
	ldr	r1, .L79+16
	add	r3, r3, #256
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-48]
	lsr	r3, r3, #8
	and	r3, r3, #255
	ldr	r1, .L79+16
	add	r3, r3, #512
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-48]
	and	r3, r3, #255
	ldr	r1, .L79+16
	add	r3, r3, #768
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-52]
	lsr	r3, r3, #24
	ldr	r1, .L79+16
	add	r3, r3, #1024
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-52]
	lsr	r3, r3, #16
	and	r3, r3, #255
	ldr	r1, .L79+16
	add	r3, r3, #1280
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-52]
	lsr	r3, r3, #8
	and	r3, r3, #255
	ldr	r1, .L79+16
	add	r3, r3, #1536
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-52]
	and	r3, r3, #255
	ldr	r1, .L79+16
	add	r3, r3, #1792
	ldr	r3, [r1, r3, lsl #2]
	orr	r3, r2, r3
	str	r3, [fp, #-44]
	ldr	r3, [fp, #-48]
	lsr	r3, r3, #24
	ldr	r2, .L79+20
	ldr	r2, [r2, r3, lsl #2]
	ldr	r3, [fp, #-48]
	lsr	r3, r3, #16
	and	r3, r3, #255
	ldr	r1, .L79+20
	add	r3, r3, #256
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-48]
	lsr	r3, r3, #8
	and	r3, r3, #255
	ldr	r1, .L79+20
	add	r3, r3, #512
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-48]
	and	r3, r3, #255
	ldr	r1, .L79+20
	add	r3, r3, #768
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-52]
	lsr	r3, r3, #24
	ldr	r1, .L79+20
	add	r3, r3, #1024
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-52]
	lsr	r3, r3, #16
	and	r3, r3, #255
	ldr	r1, .L79+20
	add	r3, r3, #1280
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-52]
	lsr	r3, r3, #8
	and	r3, r3, #255
	ldr	r1, .L79+20
	add	r3, r3, #1536
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-52]
	and	r3, r3, #255
	ldr	r1, .L79+20
	add	r3, r3, #1792
	ldr	r3, [r1, r3, lsl #2]
	orr	r3, r2, r3
	str	r3, [fp, #-40]
	b	.L75
.L78:
	ldr	r3, [fp, #-28]
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-24]
	str	r3, [fp, #-32]
	mov	r3, #16
	str	r3, [fp, #-16]
	b	.L76
.L77:
	ldr	r3, [fp, #-40]
	lsl	r3, r3, #23
	and	r2, r3, #8388608
	ldr	r3, [fp, #-40]
	lsr	r3, r3, #9
	and	r3, r3, #8126464
	orr	r2, r2, r3
	ldr	r3, [fp, #-40]
	lsr	r3, r3, #11
	and	r3, r3, #258048
	orr	r2, r2, r3
	ldr	r3, [fp, #-40]
	lsr	r3, r3, #13
	and	r3, r3, #4032
	orr	r2, r2, r3
	ldr	r3, [fp, #-40]
	lsr	r3, r3, #15
	and	r3, r3, #63
	orr	r3, r2, r3
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-40]
	lsl	r3, r3, #7
	and	r2, r3, #16515072
	ldr	r3, [fp, #-40]
	lsl	r3, r3, #5
	and	r3, r3, #258048
	orr	r2, r2, r3
	ldr	r3, [fp, #-40]
	lsl	r3, r3, #3
	and	r3, r3, #4032
	orr	r2, r2, r3
	ldr	r3, [fp, #-40]
	lsl	r3, r3, #1
	and	r3, r3, #62
	orr	r2, r2, r3
	ldr	r3, [fp, #-40]
	lsr	r3, r3, #31
	orr	r3, r2, r3
	str	r3, [fp, #-8]
	ldr	r2, [fp, #-12]
	ldr	r3, [fp, #-8]
	eor	r2, r2, r3
	ldr	r3, .L79+24
	ldr	r3, [r3]
	and	r3, r3, r2
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-36]
	add	r2, r3, #4
	str	r2, [fp, #-36]
	ldr	r2, [r3]
	ldr	r3, [fp, #-20]
	eor	r3, r3, r2
	ldr	r2, [fp, #-12]
	eor	r3, r3, r2
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-32]
	add	r2, r3, #4
	str	r2, [fp, #-32]
	ldr	r2, [r3]
	ldr	r3, [fp, #-20]
	eor	r3, r3, r2
	ldr	r2, [fp, #-8]
	eor	r3, r3, r2
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-12]
	lsr	r3, r3, #12
	ldr	r2, .L79+28
	ldrb	r3, [r2, r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r3, .L79+32
	ldr	r2, [r3, r2, lsl #2]
	ldr	r3, [fp, #-12]
	lsl	r3, r3, #20
	lsr	r3, r3, #20
	ldr	r1, .L79+28
	add	r3, r1, r3
	add	r3, r3, #4096
	ldrb	r3, [r3]	@ zero_extendqisi2
	ldr	r1, .L79+32
	add	r3, r3, #256
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-8]
	lsr	r3, r3, #12
	ldr	r1, .L79+28
	add	r3, r1, r3
	add	r3, r3, #8192
	ldrb	r3, [r3]	@ zero_extendqisi2
	ldr	r1, .L79+32
	add	r3, r3, #512
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-8]
	lsl	r3, r3, #20
	lsr	r3, r3, #20
	ldr	r1, .L79+28
	add	r3, r1, r3
	add	r3, r3, #12288
	ldrb	r3, [r3]	@ zero_extendqisi2
	ldr	r1, .L79+32
	add	r3, r3, #768
	ldr	r3, [r1, r3, lsl #2]
	orr	r3, r2, r3
	str	r3, [fp, #-20]
	ldr	r2, [fp, #-20]
	ldr	r3, [fp, #-44]
	eor	r3, r3, r2
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-40]
	str	r3, [fp, #-44]
	ldr	r3, [fp, #-20]
	str	r3, [fp, #-40]
.L76:
	ldr	r3, [fp, #-16]
	sub	r2, r3, #1
	str	r2, [fp, #-16]
	cmp	r3, #0
	bne	.L77
	ldr	r3, [fp, #-44]
	str	r3, [fp, #-40]
	ldr	r3, [fp, #-20]
	str	r3, [fp, #-44]
.L75:
	ldr	r3, [fp, #4]
	sub	r2, r3, #1
	str	r2, [fp, #4]
	cmp	r3, #0
	bne	.L78
	ldr	r3, [fp, #-44]
	lsr	r3, r3, #24
	ldr	r2, .L79+36
	ldr	r2, [r2, r3, lsl #2]
	ldr	r3, [fp, #-44]
	lsr	r3, r3, #16
	and	r3, r3, #255
	ldr	r1, .L79+36
	add	r3, r3, #256
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-44]
	lsr	r3, r3, #8
	and	r3, r3, #255
	ldr	r1, .L79+36
	add	r3, r3, #512
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-44]
	and	r3, r3, #255
	ldr	r1, .L79+36
	add	r3, r3, #768
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-40]
	lsr	r3, r3, #24
	ldr	r1, .L79+36
	add	r3, r3, #1024
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-40]
	lsr	r3, r3, #16
	and	r3, r3, #255
	ldr	r1, .L79+36
	add	r3, r3, #1280
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-40]
	lsr	r3, r3, #8
	and	r3, r3, #255
	ldr	r1, .L79+36
	add	r3, r3, #1536
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-40]
	and	r3, r3, #255
	ldr	r1, .L79+36
	add	r3, r3, #1792
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-56]
	str	r2, [r3]
	ldr	r3, [fp, #-44]
	lsr	r3, r3, #24
	ldr	r2, .L79+40
	ldr	r2, [r2, r3, lsl #2]
	ldr	r3, [fp, #-44]
	lsr	r3, r3, #16
	and	r3, r3, #255
	ldr	r1, .L79+40
	add	r3, r3, #256
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-44]
	lsr	r3, r3, #8
	and	r3, r3, #255
	ldr	r1, .L79+40
	add	r3, r3, #512
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-44]
	and	r3, r3, #255
	ldr	r1, .L79+40
	add	r3, r3, #768
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-40]
	lsr	r3, r3, #24
	ldr	r1, .L79+40
	add	r3, r3, #1024
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-40]
	lsr	r3, r3, #16
	and	r3, r3, #255
	ldr	r1, .L79+40
	add	r3, r3, #1280
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-40]
	lsr	r3, r3, #8
	and	r3, r3, #255
	ldr	r1, .L79+40
	add	r3, r3, #1536
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-40]
	and	r3, r3, #255
	ldr	r1, .L79+40
	add	r3, r3, #1792
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-60]
	str	r2, [r3]
	mov	r3, #0
.L72:
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L80:
	.align	2
.L79:
	.word	en_keysl
	.word	en_keysr
	.word	de_keysl
	.word	de_keysr
	.word	ip_maskl
	.word	ip_maskr
	.word	saltbits
	.word	m_sbox
	.word	psbox
	.word	fp_maskl
	.word	fp_maskr
	.size	do_des, .-do_des
	.section	.rodata
	.align	2
.LC0:
	.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	{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, .L85
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r3, .L85+4
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L82
	bl	des_init
.L82:
	ldr	r0, [fp, #-40]
	bl	setup_salt
	ldr	r3, [fp, #-32]
	ldr	r3, [r3]
	mov	r0, r3
	bl	ntohl
	mov	r3, r0
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-32]
	add	r3, r3, #4
	ldr	r3, [r3]
	mov	r0, r3
	bl	ntohl
	mov	r3, r0
	str	r3, [fp, #-16]
	sub	r1, fp, #24
	sub	r2, fp, #28
	ldr	r3, [fp, #-44]
	str	r3, [sp]
	mov	r3, r1
	ldr	r1, [fp, #-16]
	ldr	r0, [fp, #-20]
	bl	do_des
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-28]
	mov	r0, r3
	bl	htonl
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-36]
	str	r2, [r3]
	ldr	r3, [fp, #-24]
	mov	r0, r3
	bl	htonl
	mov	r2, r0
	ldr	r3, [fp, #-36]
	add	r3, r3, #4
	str	r2, [r3]
	ldr	r3, [fp, #-12]
	ldr	r2, .L85
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L84
	bl	__stack_chk_fail
.L84:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L86:
	.align	2
.L85:
	.word	.LC0
	.word	des_initialised
	.size	des_cipher, .-des_cipher
	.section	.rodata
	.align	2
.LC1:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	setkey
	.syntax unified
	.arm
	.fpu softvfp
	.type	setkey, %function
setkey:
	@ args = 0, pretend = 0, frame = 32
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #32
	str	r0, [fp, #-32]
	ldr	r3, .L95
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	sub	r3, fp, #16
	str	r3, [fp, #-20]
	mov	r3, #0
	str	r3, [fp, #-28]
	b	.L88
.L92:
	ldr	r3, [fp, #-28]
	ldr	r2, [fp, #-20]
	add	r3, r2, r3
	mov	r2, #0
	strb	r2, [r3]
	mov	r3, #0
	str	r3, [fp, #-24]
	b	.L89
.L91:
	ldr	r3, [fp, #-32]
	add	r2, r3, #1
	str	r2, [fp, #-32]
	ldrb	r3, [r3]	@ zero_extendqisi2
	and	r3, r3, #1
	cmp	r3, #0
	beq	.L90
	ldr	r3, [fp, #-28]
	ldr	r2, [fp, #-20]
	add	r3, r2, r3
	ldrb	r1, [r3]	@ zero_extendqisi2
	ldr	r2, .L95+4
	ldr	r3, [fp, #-24]
	add	r3, r2, r3
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-28]
	ldr	r0, [fp, #-20]
	add	r3, r0, r3
	orr	r2, r1, r2
	and	r2, r2, #255
	strb	r2, [r3]
.L90:
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
.L89:
	ldr	r3, [fp, #-24]
	cmp	r3, #7
	ble	.L91
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L88:
	ldr	r3, [fp, #-28]
	cmp	r3, #7
	ble	.L92
	ldr	r0, [fp, #-20]
	bl	des_setkey
	mov	r3, r0
	ldr	r2, .L95
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L94
	bl	__stack_chk_fail
.L94:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L96:
	.align	2
.L95:
	.word	.LC1
	.word	bits8
	.size	setkey, .-setkey
	.section	.rodata
	.align	2
.LC2:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	encrypt
	.syntax unified
	.arm
	.fpu softvfp
	.type	encrypt, %function
encrypt:
	@ args = 0, pretend = 0, frame = 40
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #48
	str	r0, [fp, #-40]
	str	r1, [fp, #-44]
	ldr	r3, .L112
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r3, .L112+4
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L98
	bl	des_init
.L98:
	mov	r0, #0
	bl	setup_salt
	ldr	r3, [fp, #-40]
	str	r3, [fp, #-32]
	mov	r3, #0
	str	r3, [fp, #-28]
	b	.L99
.L103:
	ldr	r3, [fp, #-28]
	lsl	r3, r3, #2
	sub	r2, fp, #4
	add	r3, r2, r3
	mov	r2, #0
	str	r2, [r3, #-12]
	mov	r3, #0
	str	r3, [fp, #-24]
	b	.L100
.L102:
	ldr	r3, [fp, #-32]
	add	r2, r3, #1
	str	r2, [fp, #-32]
	ldrb	r3, [r3]	@ zero_extendqisi2
	and	r3, r3, #1
	cmp	r3, #0
	beq	.L101
	ldr	r3, [fp, #-28]
	lsl	r3, r3, #2
	sub	r2, fp, #4
	add	r3, r2, r3
	ldr	r2, [r3, #-12]
	ldr	r1, .L112+8
	ldr	r3, [fp, #-24]
	ldr	r3, [r1, r3, lsl #2]
	orr	r2, r2, r3
	ldr	r3, [fp, #-28]
	lsl	r3, r3, #2
	sub	r1, fp, #4
	add	r3, r1, r3
	str	r2, [r3, #-12]
.L101:
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
.L100:
	ldr	r3, [fp, #-24]
	cmp	r3, #31
	ble	.L102
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L99:
	ldr	r3, [fp, #-28]
	cmp	r3, #1
	ble	.L103
	ldr	r0, [fp, #-16]
	ldr	r1, [fp, #-12]
	sub	r3, fp, #16
	add	r3, r3, #4
	ldr	r2, [fp, #-44]
	cmp	r2, #0
	beq	.L104
	mvn	r2, #0
	b	.L105
.L104:
	mov	r2, #1
.L105:
	sub	ip, fp, #16
	str	r2, [sp]
	mov	r2, ip
	bl	do_des
	str	r0, [fp, #-20]
	mov	r3, #0
	str	r3, [fp, #-28]
	b	.L106
.L109:
	mov	r3, #0
	str	r3, [fp, #-24]
	b	.L107
.L108:
	ldr	r3, [fp, #-28]
	lsl	r3, r3, #2
	sub	r2, fp, #4
	add	r3, r2, r3
	ldr	r2, [r3, #-12]
	ldr	r1, .L112+8
	ldr	r3, [fp, #-24]
	ldr	r3, [r1, r3, lsl #2]
	and	r3, r3, r2
	cmp	r3, #0
	movne	r3, #1
	moveq	r3, #0
	and	r1, r3, #255
	ldr	r3, [fp, #-28]
	lsl	r2, r3, #5
	ldr	r3, [fp, #-24]
	orr	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-40]
	add	r3, r3, r2
	mov	r2, r1
	strb	r2, [r3]
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
.L107:
	ldr	r3, [fp, #-24]
	cmp	r3, #31
	ble	.L108
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L106:
	ldr	r3, [fp, #-28]
	cmp	r3, #1
	ble	.L109
	ldr	r3, [fp, #-20]
	ldr	r2, .L112
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L111
	bl	__stack_chk_fail
.L111:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L113:
	.align	2
.L112:
	.word	.LC2
	.word	des_initialised
	.word	bits32
	.size	encrypt, .-encrypt
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
