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