	.file	"212643887.c"
	.intel_syntax noprefix
	.text
	.data
	.align 32
	.type	perm1, @object
	.size	perm1, 56
perm1:
	.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 32
	.type	perm2, @object
	.size	perm2, 48
perm2:
	.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	" "
	.align 32
	.type	perm3, @object
	.size	perm3, 64
perm3:
	.ascii	":2*\"\032\022\n\002<4,$\034\024\f\004>6.&\036\026\016\006@80"
	.ascii	"( \030\020\b91)!\031\021\t\001;3+#\033\023\013\003=5-%\035\025"
	.ascii	"\r\005?7/'\037\027\017\007"
	.align 32
	.type	perm4, @object
	.size	perm4, 48
perm4:
	.ascii	" \001\002\003\004\005\004\005\006\007\b\t\b\t\n\013\f\r\f\r\016"
	.ascii	"\017\020\021\020\021\022\023\024\025\024\025\026\027\030\031"
	.ascii	"\030\031\032\033\034\035\034\035\036\037 \001"
	.align 32
	.type	perm5, @object
	.size	perm5, 32
perm5:
	.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	perm6, @object
	.size	perm6, 64
perm6:
	.ascii	"(\b0\0208\030@ '\007/\0177\027?\037&\006.\0166\026>\036%\005"
	.ascii	"-\r5\025=\035$\004,\f4\024<\034#\003+\0133\023;\033\"\002*\n"
	.ascii	"2\022:\032!\001)\t1\0219\031"
	.align 16
	.type	sc, @object
	.size	sc, 16
sc:
	.ascii	"\001\001\002\002\002\002\002\002\001\002\002\002\002\002\002"
	.ascii	"\001"
	.align 32
	.type	sbox, @object
	.size	sbox, 512
sbox:
	.string	"\016\004\r\001\002\017\013\b\003\n\006\f\005\t"
	.ascii	"\007"
	.string	""
	.ascii	"\017\007\004\016\002\r\001\n\006\f\013\t\005\003\b"
	.string	"\004\001\016\b\r\006\002\013\017\f\t\007\003\n\005"
	.string	"\017\f\b\002\004\t\001\007\005\013\003\016\n"
	.ascii	"\006\r"
	.string	"\017\001\b\016\006\013\003\004\t\007\002\r\f"
	.ascii	"\005\n"
	.string	"\003\r\004\007\017\002\b\016\f"
	.ascii	"\001\n\006\t\013\005"
	.string	""
	.ascii	"\016\007\013\n\004\r\001\005\b\f\006\t\003\002\017"
	.string	"\r\b\n\001\003\017\004\002\013\006\007\f"
	.ascii	"\005\016\t"
	.string	"\n"
	.ascii	"\t\016\006\003\017\005\001\r\f\007\013\004\002\b"
	.string	"\r\007"
	.ascii	"\t\003\004\006\n\002\b\005\016\f\013\017\001"
	.string	"\r\006\004\t\b\017\003"
	.ascii	"\013\001\002\f\005\n\016\007"
	.string	"\001\n\r"
	.ascii	"\006\t\b\007\004\017\016\003\013\005\002\f"
	.string	"\007\r\016\003"
	.ascii	"\006\t\n\001\002\b\005\013\f\004\017"
	.string	"\r\b\013\005\006\017"
	.ascii	"\003\004\007\002\f\001\n\016\t"
	.string	"\n\006\t"
	.ascii	"\f\013\007\r\017\001\003\016\005\002\b\004"
	.string	"\003\017"
	.ascii	"\006\n\001\r\b\t\004\005\013\f\007\002\016"
	.string	"\002\f\004\001\007\n\013\006\b\005\003\017\r"
	.ascii	"\016\t"
	.string	"\016\013\002\f\004\007\r\001\005"
	.ascii	"\017\n\003\t\b\006"
	.string	"\004\002\001\013\n\r\007\b\017\t\f\005\006\003"
	.ascii	"\016"
	.string	"\013\b\f\007\001\016\002\r\006\017"
	.ascii	"\t\n\004\005\003"
	.string	"\f\001\n\017\t\002\006\b"
	.ascii	"\r\003\004\016\007\005\013"
	.string	"\n\017\004\002\007\f\t\005\006\001\r\016"
	.ascii	"\013\003\b"
	.string	"\t\016\017\005\002\b\f\003\007"
	.ascii	"\004\n\001\r\013\006"
	.string	"\004\003\002\f\t\005\017\n\013\016\001\007\006"
	.ascii	"\b\r"
	.string	"\004\013\002\016\017"
	.ascii	"\b\r\003\f\t\007\005\n\006\001"
	.string	"\r"
	.ascii	"\013\007\004\t\001\n\016\003\005\f\002\017\b\006"
	.string	"\001\004\013\r\f\003\007\016\n\017\006\b"
	.ascii	"\005\t\002"
	.string	"\006\013\r\b\001\004\n\007\t\005"
	.ascii	"\017\016\002\003\f"
	.string	"\r\002\b\004\006\017\013\001\n\t\003\016\005"
	.ascii	"\f\007"
	.string	"\001\017\r\b\n\003\007\004\f\005\006\013"
	.ascii	"\016\t\002"
	.string	"\007\013\004\001\t\f\016\002"
	.ascii	"\006\n\r\017\003\005\b"
	.string	"\002\001\016\007\004\n\b\r\017\f\t"
	.ascii	"\003\005\006\013"
	.text
	.type	permute, @function
permute:
.LFB0:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	QWORD PTR -40[rbp], rdx
	mov	DWORD PTR -44[rbp], ecx
	mov	DWORD PTR -4[rbp], 0
	jmp	.L2
.L3:
	mov	eax, DWORD PTR -4[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	lea	rdx, -1[rax]
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rdx
	mov	edx, DWORD PTR -4[rbp]
	movsx	rcx, edx
	mov	rdx, QWORD PTR -24[rbp]
	add	rdx, rcx
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR [rdx], al
	add	DWORD PTR -4[rbp], 1
.L2:
	mov	eax, DWORD PTR -4[rbp]
	cmp	eax, DWORD PTR -44[rbp]
	jl	.L3
	nop
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE0:
	.size	permute, .-permute
	.type	lshift, @function
lshift:
.LFB1:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 112
	mov	QWORD PTR -104[rbp], rdi
	mov	DWORD PTR -108[rbp], esi
	mov	DWORD PTR -112[rbp], edx
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	DWORD PTR -84[rbp], 0
	jmp	.L5
.L6:
	mov	edx, DWORD PTR -84[rbp]
	mov	eax, DWORD PTR -108[rbp]
	add	eax, edx
	cdq
	idiv	DWORD PTR -112[rbp]
	mov	eax, edx
	movsx	rdx, eax
	mov	rax, QWORD PTR -104[rbp]
	add	rax, rdx
	movzx	edx, BYTE PTR [rax]
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	mov	BYTE PTR -80[rbp+rax], dl
	add	DWORD PTR -84[rbp], 1
.L5:
	mov	eax, DWORD PTR -84[rbp]
	cmp	eax, DWORD PTR -112[rbp]
	jl	.L6
	mov	DWORD PTR -84[rbp], 0
	jmp	.L7
.L8:
	mov	eax, DWORD PTR -84[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -104[rbp]
	add	rdx, rax
	mov	eax, DWORD PTR -84[rbp]
	cdqe
	movzx	eax, BYTE PTR -80[rbp+rax]
	mov	BYTE PTR [rdx], al
	add	DWORD PTR -84[rbp], 1
.L7:
	mov	eax, DWORD PTR -84[rbp]
	cmp	eax, DWORD PTR -112[rbp]
	jl	.L8
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L9
	call	__stack_chk_fail@PLT
.L9:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE1:
	.size	lshift, .-lshift
	.type	concat, @function
concat:
.LFB2:
	.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 -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	QWORD PTR -24[rbp], rdx
	mov	DWORD PTR -28[rbp], ecx
	mov	DWORD PTR -32[rbp], r8d
	jmp	.L11
.L12:
	mov	rdx, QWORD PTR -16[rbp]
	lea	rax, 1[rdx]
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	lea	rcx, 1[rax]
	mov	QWORD PTR -8[rbp], rcx
	movzx	edx, BYTE PTR [rdx]
	mov	BYTE PTR [rax], dl
.L11:
	mov	eax, DWORD PTR -28[rbp]
	lea	edx, -1[rax]
	mov	DWORD PTR -28[rbp], edx
	test	eax, eax
	jne	.L12
	jmp	.L13
.L14:
	mov	rdx, QWORD PTR -24[rbp]
	lea	rax, 1[rdx]
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	lea	rcx, 1[rax]
	mov	QWORD PTR -8[rbp], rcx
	movzx	edx, BYTE PTR [rdx]
	mov	BYTE PTR [rax], dl
.L13:
	mov	eax, DWORD PTR -32[rbp]
	lea	edx, -1[rax]
	mov	DWORD PTR -32[rbp], edx
	test	eax, eax
	jne	.L14
	nop
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE2:
	.size	concat, .-concat
	.type	xor, @function
xor:
.LFB3:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	QWORD PTR -40[rbp], rdx
	mov	DWORD PTR -44[rbp], ecx
	mov	DWORD PTR -4[rbp], 0
	jmp	.L16
.L17:
	mov	eax, DWORD PTR -4[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rdx
	movzx	ecx, BYTE PTR [rax]
	mov	eax, DWORD PTR -4[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rdx
	movzx	edx, BYTE PTR [rax]
	mov	eax, DWORD PTR -4[rbp]
	movsx	rsi, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rsi
	xor	edx, ecx
	mov	BYTE PTR [rax], dl
	add	DWORD PTR -4[rbp], 1
.L16:
	mov	eax, DWORD PTR -4[rbp]
	cmp	eax, DWORD PTR -44[rbp]
	jl	.L17
	nop
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE3:
	.size	xor, .-xor
	.type	dohash, @function
dohash:
.LFB4:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 1424
	mov	QWORD PTR -1400[rbp], rdi
	mov	QWORD PTR -1408[rbp], rsi
	mov	QWORD PTR -1416[rbp], rdx
	mov	DWORD PTR -1420[rbp], ecx
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	rsi, QWORD PTR -1416[rbp]
	lea	rax, -272[rbp]
	mov	ecx, 56
	lea	rdx, perm1[rip]
	mov	rdi, rax
	call	permute
	mov	DWORD PTR -1380[rbp], 0
	jmp	.L19
.L20:
	mov	eax, DWORD PTR -1380[rbp]
	cdqe
	movzx	edx, BYTE PTR -272[rbp+rax]
	mov	eax, DWORD PTR -1380[rbp]
	cdqe
	mov	BYTE PTR -544[rbp+rax], dl
	add	DWORD PTR -1380[rbp], 1
.L19:
	cmp	DWORD PTR -1380[rbp], 27
	jle	.L20
	mov	DWORD PTR -1380[rbp], 0
	jmp	.L21
.L22:
	mov	eax, DWORD PTR -1380[rbp]
	add	eax, 28
	cdqe
	movzx	edx, BYTE PTR -272[rbp+rax]
	mov	eax, DWORD PTR -1380[rbp]
	cdqe
	mov	BYTE PTR -512[rbp+rax], dl
	add	DWORD PTR -1380[rbp], 1
.L21:
	cmp	DWORD PTR -1380[rbp], 27
	jle	.L22
	mov	DWORD PTR -1380[rbp], 0
	jmp	.L23
.L24:
	mov	eax, DWORD PTR -1380[rbp]
	cdqe
	lea	rdx, sc[rip]
	movzx	eax, BYTE PTR [rax+rdx]
	movzx	ecx, al
	lea	rax, -544[rbp]
	mov	edx, 28
	mov	esi, ecx
	mov	rdi, rax
	call	lshift
	mov	eax, DWORD PTR -1380[rbp]
	cdqe
	lea	rdx, sc[rip]
	movzx	eax, BYTE PTR [rax+rdx]
	movzx	ecx, al
	lea	rax, -512[rbp]
	mov	edx, 28
	mov	esi, ecx
	mov	rdi, rax
	call	lshift
	lea	rdx, -512[rbp]
	lea	rsi, -544[rbp]
	lea	rax, -208[rbp]
	mov	r8d, 28
	mov	ecx, 28
	mov	rdi, rax
	call	concat
	lea	rcx, -1312[rbp]
	mov	eax, DWORD PTR -1380[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	lea	rdi, [rcx+rax]
	lea	rax, -208[rbp]
	mov	ecx, 48
	lea	rdx, perm2[rip]
	mov	rsi, rax
	call	permute
	add	DWORD PTR -1380[rbp], 1
.L23:
	cmp	DWORD PTR -1380[rbp], 15
	jle	.L24
	mov	rsi, QWORD PTR -1408[rbp]
	lea	rax, -144[rbp]
	mov	ecx, 64
	lea	rdx, perm3[rip]
	mov	rdi, rax
	call	permute
	mov	DWORD PTR -1376[rbp], 0
	jmp	.L25
.L26:
	mov	eax, DWORD PTR -1376[rbp]
	cdqe
	movzx	edx, BYTE PTR -144[rbp+rax]
	mov	eax, DWORD PTR -1376[rbp]
	cdqe
	mov	BYTE PTR -480[rbp+rax], dl
	mov	eax, DWORD PTR -1376[rbp]
	add	eax, 32
	cdqe
	movzx	edx, BYTE PTR -144[rbp+rax]
	mov	eax, DWORD PTR -1376[rbp]
	cdqe
	mov	BYTE PTR -448[rbp+rax], dl
	add	DWORD PTR -1376[rbp], 1
.L25:
	cmp	DWORD PTR -1376[rbp], 31
	jle	.L26
	mov	DWORD PTR -1380[rbp], 0
	jmp	.L27
.L46:
	lea	rsi, -448[rbp]
	lea	rax, -320[rbp]
	mov	ecx, 48
	lea	rdx, perm4[rip]
	mov	rdi, rax
	call	permute
	cmp	DWORD PTR -1420[rbp], 0
	jne	.L28
	mov	eax, 15
	sub	eax, DWORD PTR -1380[rbp]
	jmp	.L29
.L28:
	mov	eax, DWORD PTR -1380[rbp]
.L29:
	lea	rcx, -1312[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	lea	rdx, [rcx+rax]
	lea	rsi, -320[rbp]
	lea	rax, -80[rbp]
	mov	ecx, 48
	mov	rdi, rax
	call	xor
	mov	DWORD PTR -1376[rbp], 0
	jmp	.L30
.L33:
	mov	DWORD PTR -1372[rbp], 0
	jmp	.L31
.L32:
	mov	edx, DWORD PTR -1376[rbp]
	mov	eax, edx
	add	eax, eax
	add	eax, edx
	add	eax, eax
	mov	edx, eax
	mov	eax, DWORD PTR -1372[rbp]
	add	eax, edx
	cdqe
	movzx	edx, BYTE PTR -80[rbp+rax]
	mov	eax, DWORD PTR -1372[rbp]
	movsx	rsi, eax
	mov	eax, DWORD PTR -1376[rbp]
	movsx	rcx, eax
	mov	rax, rcx
	add	rax, rax
	add	rax, rcx
	add	rax, rax
	add	rax, rbp
	add	rax, rsi
	sub	rax, 1360
	mov	BYTE PTR [rax], dl
	add	DWORD PTR -1372[rbp], 1
.L31:
	cmp	DWORD PTR -1372[rbp], 5
	jle	.L32
	add	DWORD PTR -1376[rbp], 1
.L30:
	cmp	DWORD PTR -1376[rbp], 7
	jle	.L33
	mov	DWORD PTR -1376[rbp], 0
	jmp	.L34
.L37:
	mov	eax, DWORD PTR -1376[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	add	rax, rax
	add	rax, rbp
	sub	rax, 1360
	movzx	eax, BYTE PTR [rax]
	movsx	eax, al
	lea	ecx, [rax+rax]
	mov	eax, DWORD PTR -1376[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	add	rax, rax
	add	rax, rbp
	sub	rax, 1355
	movzx	eax, BYTE PTR [rax]
	movsx	eax, al
	or	eax, ecx
	mov	DWORD PTR -1368[rbp], eax
	mov	eax, DWORD PTR -1376[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	add	rax, rax
	add	rax, rbp
	sub	rax, 1359
	movzx	eax, BYTE PTR [rax]
	movsx	eax, al
	lea	ecx, 0[0+rax*8]
	mov	eax, DWORD PTR -1376[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	add	rax, rax
	add	rax, rbp
	sub	rax, 1358
	movzx	eax, BYTE PTR [rax]
	movsx	eax, al
	sal	eax, 2
	or	ecx, eax
	mov	eax, DWORD PTR -1376[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	add	rax, rax
	add	rax, rbp
	sub	rax, 1357
	movzx	eax, BYTE PTR [rax]
	movsx	eax, al
	add	eax, eax
	or	ecx, eax
	mov	eax, DWORD PTR -1376[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	add	rax, rax
	add	rax, rbp
	sub	rax, 1356
	movzx	eax, BYTE PTR [rax]
	movsx	eax, al
	or	eax, ecx
	mov	DWORD PTR -1364[rbp], eax
	mov	DWORD PTR -1372[rbp], 0
	jmp	.L35
.L36:
	mov	eax, DWORD PTR -1364[rbp]
	movsx	rcx, eax
	mov	eax, DWORD PTR -1376[rbp]
	cdqe
	mov	edx, DWORD PTR -1368[rbp]
	movsx	rdx, edx
	sal	rax, 2
	add	rax, rdx
	sal	rax, 4
	lea	rdx, [rax+rcx]
	lea	rax, sbox[rip]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	eax, 3
	sub	eax, DWORD PTR -1372[rbp]
	mov	ecx, eax
	sar	edx, cl
	mov	eax, edx
	and	eax, 1
	mov	ecx, eax
	mov	eax, DWORD PTR -1372[rbp]
	movsx	rsi, eax
	mov	eax, DWORD PTR -1376[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	add	rax, rax
	add	rax, rbp
	add	rax, rsi
	sub	rax, 1360
	mov	BYTE PTR [rax], cl
	add	DWORD PTR -1372[rbp], 1
.L35:
	cmp	DWORD PTR -1372[rbp], 3
	jle	.L36
	add	DWORD PTR -1376[rbp], 1
.L34:
	cmp	DWORD PTR -1376[rbp], 7
	jle	.L37
	mov	DWORD PTR -1376[rbp], 0
	jmp	.L38
.L41:
	mov	DWORD PTR -1372[rbp], 0
	jmp	.L39
.L40:
	mov	eax, DWORD PTR -1376[rbp]
	lea	edx, 0[0+rax*4]
	mov	eax, DWORD PTR -1372[rbp]
	lea	ecx, [rdx+rax]
	mov	eax, DWORD PTR -1372[rbp]
	movsx	rsi, eax
	mov	eax, DWORD PTR -1376[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	add	rax, rax
	add	rax, rbp
	add	rax, rsi
	sub	rax, 1360
	movzx	edx, BYTE PTR [rax]
	movsx	rax, ecx
	mov	BYTE PTR -416[rbp+rax], dl
	add	DWORD PTR -1372[rbp], 1
.L39:
	cmp	DWORD PTR -1372[rbp], 3
	jle	.L40
	add	DWORD PTR -1376[rbp], 1
.L38:
	cmp	DWORD PTR -1376[rbp], 7
	jle	.L41
	lea	rsi, -416[rbp]
	lea	rax, -384[rbp]
	mov	ecx, 32
	lea	rdx, perm5[rip]
	mov	rdi, rax
	call	permute
	lea	rdx, -384[rbp]
	lea	rsi, -480[rbp]
	lea	rax, -352[rbp]
	mov	ecx, 32
	mov	rdi, rax
	call	xor
	mov	DWORD PTR -1376[rbp], 0
	jmp	.L42
.L43:
	mov	eax, DWORD PTR -1376[rbp]
	cdqe
	movzx	edx, BYTE PTR -448[rbp+rax]
	mov	eax, DWORD PTR -1376[rbp]
	cdqe
	mov	BYTE PTR -480[rbp+rax], dl
	add	DWORD PTR -1376[rbp], 1
.L42:
	cmp	DWORD PTR -1376[rbp], 31
	jle	.L43
	mov	DWORD PTR -1376[rbp], 0
	jmp	.L44
.L45:
	mov	eax, DWORD PTR -1376[rbp]
	cdqe
	movzx	edx, BYTE PTR -352[rbp+rax]
	mov	eax, DWORD PTR -1376[rbp]
	cdqe
	mov	BYTE PTR -448[rbp+rax], dl
	add	DWORD PTR -1376[rbp], 1
.L44:
	cmp	DWORD PTR -1376[rbp], 31
	jle	.L45
	add	DWORD PTR -1380[rbp], 1
.L27:
	cmp	DWORD PTR -1380[rbp], 15
	jle	.L46
	lea	rdx, -480[rbp]
	lea	rsi, -448[rbp]
	lea	rax, -80[rbp]
	mov	r8d, 32
	mov	ecx, 32
	mov	rdi, rax
	call	concat
	lea	rsi, -80[rbp]
	mov	rax, QWORD PTR -1400[rbp]
	mov	ecx, 64
	lea	rdx, perm6[rip]
	mov	rdi, rax
	call	permute
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L47
	call	__stack_chk_fail@PLT
.L47:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE4:
	.size	dohash, .-dohash
	.type	str_to_key, @function
str_to_key:
.LFB5:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	shr	al
	mov	edx, eax
	mov	rax, QWORD PTR -32[rbp]
	mov	BYTE PTR [rax], dl
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 6
	and	eax, 64
	mov	edx, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	shr	al, 2
	or	edx, eax
	mov	rax, QWORD PTR -32[rbp]
	add	rax, 1
	mov	BYTE PTR [rax], dl
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 5
	and	eax, 96
	mov	edx, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 2
	movzx	eax, BYTE PTR [rax]
	shr	al, 3
	or	edx, eax
	mov	rax, QWORD PTR -32[rbp]
	add	rax, 2
	mov	BYTE PTR [rax], dl
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 2
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 4
	and	eax, 112
	mov	edx, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 3
	movzx	eax, BYTE PTR [rax]
	shr	al, 4
	or	edx, eax
	mov	rax, QWORD PTR -32[rbp]
	add	rax, 3
	mov	BYTE PTR [rax], dl
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 3
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 3
	and	eax, 120
	mov	edx, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 4
	movzx	eax, BYTE PTR [rax]
	shr	al, 5
	or	edx, eax
	mov	rax, QWORD PTR -32[rbp]
	add	rax, 4
	mov	BYTE PTR [rax], dl
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 4
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 2
	and	eax, 124
	mov	edx, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 5
	movzx	eax, BYTE PTR [rax]
	shr	al, 6
	or	edx, eax
	mov	rax, QWORD PTR -32[rbp]
	add	rax, 5
	mov	BYTE PTR [rax], dl
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 5
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	add	eax, eax
	and	eax, 126
	mov	edx, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 6
	movzx	eax, BYTE PTR [rax]
	shr	al, 7
	or	edx, eax
	mov	rax, QWORD PTR -32[rbp]
	add	rax, 6
	mov	BYTE PTR [rax], dl
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 6
	movzx	edx, BYTE PTR [rax]
	mov	rax, QWORD PTR -32[rbp]
	add	rax, 7
	and	edx, 127
	mov	BYTE PTR [rax], dl
	mov	DWORD PTR -4[rbp], 0
	jmp	.L49
.L50:
	mov	eax, DWORD PTR -4[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rdx
	movzx	edx, BYTE PTR [rax]
	mov	eax, DWORD PTR -4[rbp]
	movsx	rcx, eax
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rcx
	add	edx, edx
	mov	BYTE PTR [rax], dl
	add	DWORD PTR -4[rbp], 1
.L49:
	cmp	DWORD PTR -4[rbp], 7
	jle	.L50
	nop
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE5:
	.size	str_to_key, .-str_to_key
	.type	smbhash, @function
smbhash:
.LFB6:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 256
	mov	QWORD PTR -232[rbp], rdi
	mov	QWORD PTR -240[rbp], rsi
	mov	QWORD PTR -248[rbp], rdx
	mov	DWORD PTR -252[rbp], ecx
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	lea	rdx, -216[rbp]
	mov	rax, QWORD PTR -248[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	str_to_key
	mov	DWORD PTR -220[rbp], 0
	jmp	.L52
.L53:
	mov	eax, DWORD PTR -220[rbp]
	lea	edx, 7[rax]
	test	eax, eax
	cmovs	eax, edx
	sar	eax, 3
	movsx	rdx, eax
	mov	rax, QWORD PTR -240[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	eax, DWORD PTR -220[rbp]
	mov	ecx, eax
	sar	ecx, 31
	shr	ecx, 29
	add	eax, ecx
	and	eax, 7
	sub	eax, ecx
	mov	ecx, eax
	mov	eax, 7
	sub	eax, ecx
	mov	ecx, eax
	sar	edx, cl
	mov	eax, edx
	and	eax, 1
	mov	edx, eax
	mov	eax, DWORD PTR -220[rbp]
	cdqe
	mov	BYTE PTR -144[rbp+rax], dl
	mov	eax, DWORD PTR -220[rbp]
	lea	edx, 7[rax]
	test	eax, eax
	cmovs	eax, edx
	sar	eax, 3
	cdqe
	movzx	eax, BYTE PTR -216[rbp+rax]
	movzx	edx, al
	mov	eax, DWORD PTR -220[rbp]
	mov	ecx, eax
	sar	ecx, 31
	shr	ecx, 29
	add	eax, ecx
	and	eax, 7
	sub	eax, ecx
	mov	ecx, eax
	mov	eax, 7
	sub	eax, ecx
	mov	ecx, eax
	sar	edx, cl
	mov	eax, edx
	and	eax, 1
	mov	edx, eax
	mov	eax, DWORD PTR -220[rbp]
	cdqe
	mov	BYTE PTR -80[rbp+rax], dl
	mov	eax, DWORD PTR -220[rbp]
	cdqe
	mov	BYTE PTR -208[rbp+rax], 0
	add	DWORD PTR -220[rbp], 1
.L52:
	cmp	DWORD PTR -220[rbp], 63
	jle	.L53
	mov	ecx, DWORD PTR -252[rbp]
	lea	rdx, -80[rbp]
	lea	rsi, -144[rbp]
	lea	rax, -208[rbp]
	mov	rdi, rax
	call	dohash
	mov	DWORD PTR -220[rbp], 0
	jmp	.L54
.L55:
	mov	eax, DWORD PTR -220[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -232[rbp]
	add	rax, rdx
	mov	BYTE PTR [rax], 0
	add	DWORD PTR -220[rbp], 1
.L54:
	cmp	DWORD PTR -220[rbp], 7
	jle	.L55
	mov	DWORD PTR -220[rbp], 0
	jmp	.L56
.L58:
	mov	eax, DWORD PTR -220[rbp]
	cdqe
	movzx	eax, BYTE PTR -208[rbp+rax]
	test	al, al
	je	.L57
	mov	eax, DWORD PTR -220[rbp]
	lea	edx, 7[rax]
	test	eax, eax
	cmovs	eax, edx
	sar	eax, 3
	mov	edx, eax
	movsx	rcx, edx
	mov	rax, QWORD PTR -232[rbp]
	add	rax, rcx
	movzx	eax, BYTE PTR [rax]
	mov	edi, eax
	mov	eax, DWORD PTR -220[rbp]
	mov	ecx, eax
	sar	ecx, 31
	shr	ecx, 29
	add	eax, ecx
	and	eax, 7
	sub	eax, ecx
	mov	ecx, eax
	mov	eax, 7
	sub	eax, ecx
	mov	esi, 1
	mov	ecx, eax
	sal	esi, cl
	mov	eax, esi
	or	edi, eax
	mov	ecx, edi
	movsx	rdx, edx
	mov	rax, QWORD PTR -232[rbp]
	add	rax, rdx
	mov	edx, ecx
	mov	BYTE PTR [rax], dl
.L57:
	add	DWORD PTR -220[rbp], 1
.L56:
	cmp	DWORD PTR -220[rbp], 63
	jle	.L58
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L59
	call	__stack_chk_fail@PLT
.L59:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	smbhash, .-smbhash
	.globl	E_P16
	.type	E_P16, @function
E_P16:
.LFB7:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	movabs	rax, 2676302836908902219
	mov	QWORD PTR -16[rbp], rax
	mov	rdx, QWORD PTR -24[rbp]
	lea	rsi, -16[rbp]
	mov	rax, QWORD PTR -32[rbp]
	mov	ecx, 1
	mov	rdi, rax
	call	smbhash
	mov	rax, QWORD PTR -24[rbp]
	lea	rdx, 7[rax]
	mov	rax, QWORD PTR -32[rbp]
	lea	rdi, 8[rax]
	lea	rax, -16[rbp]
	mov	ecx, 1
	mov	rsi, rax
	call	smbhash
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L61
	call	__stack_chk_fail@PLT
.L61:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	E_P16, .-E_P16
	.globl	E_P24
	.type	E_P24, @function
E_P24:
.LFB8:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	QWORD PTR -24[rbp], rdx
	mov	rdx, QWORD PTR -8[rbp]
	mov	rsi, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, 1
	mov	rdi, rax
	call	smbhash
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 7[rax]
	mov	rax, QWORD PTR -24[rbp]
	lea	rdi, 8[rax]
	mov	rax, QWORD PTR -16[rbp]
	mov	ecx, 1
	mov	rsi, rax
	call	smbhash
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 14[rax]
	mov	rax, QWORD PTR -24[rbp]
	lea	rdi, 16[rax]
	mov	rax, QWORD PTR -16[rbp]
	mov	ecx, 1
	mov	rsi, rax
	call	smbhash
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	E_P24, .-E_P24
	.globl	D_P16
	.type	D_P16, @function
D_P16:
.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, 32
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	QWORD PTR -24[rbp], rdx
	mov	rdx, QWORD PTR -8[rbp]
	mov	rsi, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, 0
	mov	rdi, rax
	call	smbhash
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 7[rax]
	mov	rax, QWORD PTR -16[rbp]
	lea	rsi, 8[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 8
	mov	ecx, 0
	mov	rdi, rax
	call	smbhash
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE9:
	.size	D_P16, .-D_P16
	.globl	E_old_pw_hash
	.type	E_old_pw_hash, @function
E_old_pw_hash:
.LFB10:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	QWORD PTR -24[rbp], rdx
	mov	rdx, QWORD PTR -8[rbp]
	mov	rsi, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, 1
	mov	rdi, rax
	call	smbhash
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 7[rax]
	mov	rax, QWORD PTR -16[rbp]
	lea	rsi, 8[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 8
	mov	ecx, 1
	mov	rdi, rax
	call	smbhash
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE10:
	.size	E_old_pw_hash, .-E_old_pw_hash
	.globl	cred_hash1
	.type	cred_hash1, @function
cred_hash1:
.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, 48
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	QWORD PTR -40[rbp], rdx
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	rdx, QWORD PTR -40[rbp]
	mov	rsi, QWORD PTR -32[rbp]
	lea	rax, -16[rbp]
	mov	ecx, 1
	mov	rdi, rax
	call	smbhash
	mov	rax, QWORD PTR -40[rbp]
	lea	rdx, 9[rax]
	lea	rsi, -16[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, 1
	mov	rdi, rax
	call	smbhash
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L66
	call	__stack_chk_fail@PLT
.L66:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE11:
	.size	cred_hash1, .-cred_hash1
	.globl	cred_hash2
	.type	cred_hash2, @function
cred_hash2:
.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, 48
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	QWORD PTR -40[rbp], rdx
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	rdx, QWORD PTR -40[rbp]
	mov	rsi, QWORD PTR -32[rbp]
	lea	rax, -16[rbp]
	mov	ecx, 1
	mov	rdi, rax
	call	smbhash
	mov	rax, QWORD PTR -40[rbp]
	movzx	eax, BYTE PTR 7[rax]
	mov	BYTE PTR key2.1[rip], al
	lea	rsi, -16[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	ecx, 1
	lea	rdx, key2.1[rip]
	mov	rdi, rax
	call	smbhash
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L68
	call	__stack_chk_fail@PLT
.L68:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE12:
	.size	cred_hash2, .-cred_hash2
	.globl	cred_hash3
	.type	cred_hash3, @function
cred_hash3:
.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, 32
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	QWORD PTR -24[rbp], rdx
	mov	DWORD PTR -28[rbp], ecx
	mov	ecx, DWORD PTR -28[rbp]
	mov	rdx, QWORD PTR -24[rbp]
	mov	rsi, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	smbhash
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR 7[rax]
	mov	BYTE PTR key2.0[rip], al
	mov	rax, QWORD PTR -16[rbp]
	lea	rsi, 8[rax]
	mov	rax, QWORD PTR -8[rbp]
	lea	rdi, 8[rax]
	mov	eax, DWORD PTR -28[rbp]
	mov	ecx, eax
	lea	rdx, key2.0[rip]
	call	smbhash
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE13:
	.size	cred_hash3, .-cred_hash3
	.local	key2.1
	.comm	key2.1,8,8
	.local	key2.0
	.comm	key2.0,8,8
	.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	"212643887.c"
	.text
	.data
	.align	2
	.type	perm1, %object
	.size	perm1, 56
perm1:
	.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	perm2, %object
	.size	perm2, 48
perm2:
	.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 "
	.align	2
	.type	perm3, %object
	.size	perm3, 64
perm3:
	.ascii	":2*\"\032\022\012\002<4,$\034\024\014\004>6.&\036\026"
	.ascii	"\016\006@80( \030\020\01091)!\031\021\011\001;3+#\033"
	.ascii	"\023\013\003=5-%\035\025\015\005?7/'\037\027\017\007"
	.align	2
	.type	perm4, %object
	.size	perm4, 48
perm4:
	.ascii	" \001\002\003\004\005\004\005\006\007\010\011\010\011"
	.ascii	"\012\013\014\015\014\015\016\017\020\021\020\021\022"
	.ascii	"\023\024\025\024\025\026\027\030\031\030\031\032\033"
	.ascii	"\034\035\034\035\036\037 \001"
	.align	2
	.type	perm5, %object
	.size	perm5, 32
perm5:
	.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	perm6, %object
	.size	perm6, 64
perm6:
	.ascii	"(\0100\0208\030@ '\007/\0177\027?\037&\006.\0166\026"
	.ascii	">\036%\005-\0155\025=\035$\004,\0144\024<\034#\003+"
	.ascii	"\0133\023;\033\"\002*\0122\022:\032!\001)\0111\0219"
	.ascii	"\031"
	.align	2
	.type	sc, %object
	.size	sc, 16
sc:
	.ascii	"\001\001\002\002\002\002\002\002\001\002\002\002\002"
	.ascii	"\002\002\001"
	.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"
	.ascii	"\000\017\007\004\016\002\015\001\012\006\014\013\011"
	.ascii	"\005\003\010"
	.ascii	"\004\001\016\010\015\006\002\013\017\014\011\007\003"
	.ascii	"\012\005\000"
	.ascii	"\017\014\010\002\004\011\001\007\005\013\003\016\012"
	.ascii	"\000\006\015"
	.ascii	"\017\001\010\016\006\013\003\004\011\007\002\015\014"
	.ascii	"\000\005\012"
	.ascii	"\003\015\004\007\017\002\010\016\014\000\001\012\006"
	.ascii	"\011\013\005"
	.ascii	"\000\016\007\013\012\004\015\001\005\010\014\006\011"
	.ascii	"\003\002\017"
	.ascii	"\015\010\012\001\003\017\004\002\013\006\007\014\000"
	.ascii	"\005\016\011"
	.ascii	"\012\000\011\016\006\003\017\005\001\015\014\007\013"
	.ascii	"\004\002\010"
	.ascii	"\015\007\000\011\003\004\006\012\002\010\005\016\014"
	.ascii	"\013\017\001"
	.ascii	"\015\006\004\011\010\017\003\000\013\001\002\014\005"
	.ascii	"\012\016\007"
	.ascii	"\001\012\015\000\006\011\010\007\004\017\016\003\013"
	.ascii	"\005\002\014"
	.ascii	"\007\015\016\003\000\006\011\012\001\002\010\005\013"
	.ascii	"\014\004\017"
	.ascii	"\015\010\013\005\006\017\000\003\004\007\002\014\001"
	.ascii	"\012\016\011"
	.ascii	"\012\006\011\000\014\013\007\015\017\001\003\016\005"
	.ascii	"\002\010\004"
	.ascii	"\003\017\000\006\012\001\015\010\011\004\005\013\014"
	.ascii	"\007\002\016"
	.ascii	"\002\014\004\001\007\012\013\006\010\005\003\017\015"
	.ascii	"\000\016\011"
	.ascii	"\016\013\002\014\004\007\015\001\005\000\017\012\003"
	.ascii	"\011\010\006"
	.ascii	"\004\002\001\013\012\015\007\010\017\011\014\005\006"
	.ascii	"\003\000\016"
	.ascii	"\013\010\014\007\001\016\002\015\006\017\000\011\012"
	.ascii	"\004\005\003"
	.ascii	"\014\001\012\017\011\002\006\010\000\015\003\004\016"
	.ascii	"\007\005\013"
	.ascii	"\012\017\004\002\007\014\011\005\006\001\015\016\000"
	.ascii	"\013\003\010"
	.ascii	"\011\016\017\005\002\010\014\003\007\000\004\012\001"
	.ascii	"\015\013\006"
	.ascii	"\004\003\002\014\011\005\017\012\013\016\001\007\006"
	.ascii	"\000\010\015"
	.ascii	"\004\013\002\016\017\000\010\015\003\014\011\007\005"
	.ascii	"\012\006\001"
	.ascii	"\015\000\013\007\004\011\001\012\016\003\005\014\002"
	.ascii	"\017\010\006"
	.ascii	"\001\004\013\015\014\003\007\016\012\017\006\010\000"
	.ascii	"\005\011\002"
	.ascii	"\006\013\015\010\001\004\012\007\011\005\000\017\016"
	.ascii	"\002\003\014"
	.ascii	"\015\002\010\004\006\017\013\001\012\011\003\016\005"
	.ascii	"\000\014\007"
	.ascii	"\001\017\015\010\012\003\007\004\014\005\006\013\000"
	.ascii	"\016\011\002"
	.ascii	"\007\013\004\001\011\014\016\002\000\006\012\015\017"
	.ascii	"\003\005\010"
	.ascii	"\002\001\016\007\004\012\010\015\017\014\011\000\003"
	.ascii	"\005\006\013"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	permute, %function
permute:
	@ 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, #-16]
	str	r1, [fp, #-20]
	str	r2, [fp, #-24]
	str	r3, [fp, #-28]
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L2
.L3:
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	sub	r3, r3, #1
	ldr	r2, [fp, #-20]
	add	r2, r2, r3
	ldr	r3, [fp, #-8]
	ldr	r1, [fp, #-16]
	add	r3, r1, r3
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L2:
	ldr	r2, [fp, #-8]
	ldr	r3, [fp, #-28]
	cmp	r2, r3
	blt	.L3
	nop
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	permute, .-permute
	.global	__aeabi_idivmod
	.section	.rodata
	.align	2
.LC0:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	lshift, %function
lshift:
	@ args = 0, pretend = 0, frame = 88
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #88
	str	r0, [fp, #-80]
	str	r1, [fp, #-84]
	str	r2, [fp, #-88]
	ldr	r3, .L10
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	mov	r3, #0
	str	r3, [fp, #-76]
	b	.L5
.L6:
	ldr	r2, [fp, #-76]
	ldr	r3, [fp, #-84]
	add	r3, r2, r3
	ldr	r1, [fp, #-88]
	mov	r0, r3
	bl	__aeabi_idivmod
	mov	r3, r1
	mov	r2, r3
	ldr	r3, [fp, #-80]
	add	r3, r3, r2
	ldrb	r1, [r3]	@ zero_extendqisi2
	sub	r2, fp, #72
	ldr	r3, [fp, #-76]
	add	r3, r2, r3
	mov	r2, r1
	strb	r2, [r3]
	ldr	r3, [fp, #-76]
	add	r3, r3, #1
	str	r3, [fp, #-76]
.L5:
	ldr	r2, [fp, #-76]
	ldr	r3, [fp, #-88]
	cmp	r2, r3
	blt	.L6
	mov	r3, #0
	str	r3, [fp, #-76]
	b	.L7
.L8:
	ldr	r3, [fp, #-76]
	ldr	r2, [fp, #-80]
	add	r3, r2, r3
	sub	r1, fp, #72
	ldr	r2, [fp, #-76]
	add	r2, r1, r2
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
	ldr	r3, [fp, #-76]
	add	r3, r3, #1
	str	r3, [fp, #-76]
.L7:
	ldr	r2, [fp, #-76]
	ldr	r3, [fp, #-88]
	cmp	r2, r3
	blt	.L8
	nop
	ldr	r3, .L10
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L9
	bl	__stack_chk_fail
.L9:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L11:
	.align	2
.L10:
	.word	.LC0
	.size	lshift, .-lshift
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	concat, %function
concat:
	@ args = 4, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #20
	str	r0, [fp, #-8]
	str	r1, [fp, #-12]
	str	r2, [fp, #-16]
	str	r3, [fp, #-20]
	b	.L13
.L14:
	ldr	r2, [fp, #-12]
	add	r3, r2, #1
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-8]
	add	r1, r3, #1
	str	r1, [fp, #-8]
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
.L13:
	ldr	r3, [fp, #-20]
	sub	r2, r3, #1
	str	r2, [fp, #-20]
	cmp	r3, #0
	bne	.L14
	b	.L15
.L16:
	ldr	r2, [fp, #-16]
	add	r3, r2, #1
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-8]
	add	r1, r3, #1
	str	r1, [fp, #-8]
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
.L15:
	ldr	r3, [fp, #4]
	sub	r2, r3, #1
	str	r2, [fp, #4]
	cmp	r3, #0
	bne	.L16
	nop
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	concat, .-concat
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	xor, %function
xor:
	@ 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, #-16]
	str	r1, [fp, #-20]
	str	r2, [fp, #-24]
	str	r3, [fp, #-28]
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L18
.L19:
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-20]
	add	r3, r2, r3
	ldrb	r1, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-8]
	ldr	r0, [fp, #-16]
	add	r3, r0, r3
	eor	r2, r2, r1
	and	r2, r2, #255
	strb	r2, [r3]
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L18:
	ldr	r2, [fp, #-8]
	ldr	r3, [fp, #-28]
	cmp	r2, r3
	blt	.L19
	nop
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	xor, .-xor
	.section	.rodata
	.align	2
.LC1:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	dohash, %function
dohash:
	@ args = 0, pretend = 0, frame = 1360
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #1360
	sub	sp, sp, #8
	str	r0, [fp, #-1352]
	str	r1, [fp, #-1356]
	str	r2, [fp, #-1360]
	str	r3, [fp, #-1364]
	ldr	r3, .L50
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	sub	r0, fp, #248
	mov	r3, #56
	ldr	r2, .L50+4
	ldr	r1, [fp, #-1360]
	bl	permute
	mov	r3, #0
	str	r3, [fp, #-1348]
	b	.L21
.L22:
	sub	r2, fp, #248
	ldr	r3, [fp, #-1348]
	add	r3, r2, r3
	ldrb	r1, [r3]	@ zero_extendqisi2
	sub	r2, fp, #512
	ldr	r3, [fp, #-1348]
	add	r3, r2, r3
	mov	r2, r1
	strb	r2, [r3]
	ldr	r3, [fp, #-1348]
	add	r3, r3, #1
	str	r3, [fp, #-1348]
.L21:
	ldr	r3, [fp, #-1348]
	cmp	r3, #27
	ble	.L22
	mov	r3, #0
	str	r3, [fp, #-1348]
	b	.L23
.L24:
	ldr	r3, [fp, #-1348]
	add	r3, r3, #28
	sub	r2, fp, #4
	add	r3, r2, r3
	ldrb	r1, [r3, #-244]	@ zero_extendqisi2
	sub	r2, fp, #484
	ldr	r3, [fp, #-1348]
	add	r3, r2, r3
	mov	r2, r1
	strb	r2, [r3]
	ldr	r3, [fp, #-1348]
	add	r3, r3, #1
	str	r3, [fp, #-1348]
.L23:
	ldr	r3, [fp, #-1348]
	cmp	r3, #27
	ble	.L24
	mov	r3, #0
	str	r3, [fp, #-1348]
	b	.L25
.L26:
	ldr	r2, .L50+8
	ldr	r3, [fp, #-1348]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	sub	r3, fp, #512
	mov	r2, #28
	mov	r0, r3
	bl	lshift
	ldr	r2, .L50+8
	ldr	r3, [fp, #-1348]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	sub	r3, fp, #484
	mov	r2, #28
	mov	r0, r3
	bl	lshift
	sub	r2, fp, #484
	sub	r1, fp, #512
	sub	r0, fp, #192
	mov	r3, #28
	str	r3, [sp]
	mov	r3, #28
	bl	concat
	sub	r2, fp, #1264
	sub	r2, r2, #4
	sub	r2, r2, #12
	ldr	r1, [fp, #-1348]
	mov	r3, r1
	lsl	r3, r3, #1
	add	r3, r3, r1
	lsl	r3, r3, #4
	add	r0, r2, r3
	sub	r1, fp, #192
	mov	r3, #48
	ldr	r2, .L50+12
	bl	permute
	ldr	r3, [fp, #-1348]
	add	r3, r3, #1
	str	r3, [fp, #-1348]
.L25:
	ldr	r3, [fp, #-1348]
	cmp	r3, #15
	ble	.L26
	sub	r0, fp, #136
	mov	r3, #64
	ldr	r2, .L50+16
	ldr	r1, [fp, #-1356]
	bl	permute
	mov	r3, #0
	str	r3, [fp, #-1344]
	b	.L27
.L28:
	sub	r2, fp, #136
	ldr	r3, [fp, #-1344]
	add	r3, r2, r3
	ldrb	r1, [r3]	@ zero_extendqisi2
	sub	r2, fp, #456
	ldr	r3, [fp, #-1344]
	add	r3, r2, r3
	mov	r2, r1
	strb	r2, [r3]
	ldr	r3, [fp, #-1344]
	add	r3, r3, #32
	sub	r2, fp, #4
	add	r3, r2, r3
	ldrb	r1, [r3, #-132]	@ zero_extendqisi2
	sub	r2, fp, #424
	ldr	r3, [fp, #-1344]
	add	r3, r2, r3
	mov	r2, r1
	strb	r2, [r3]
	ldr	r3, [fp, #-1344]
	add	r3, r3, #1
	str	r3, [fp, #-1344]
.L27:
	ldr	r3, [fp, #-1344]
	cmp	r3, #31
	ble	.L28
	mov	r3, #0
	str	r3, [fp, #-1348]
	b	.L29
.L48:
	sub	r1, fp, #424
	sub	r0, fp, #296
	mov	r3, #48
	ldr	r2, .L50+20
	bl	permute
	ldr	r3, [fp, #-1364]
	cmp	r3, #0
	bne	.L30
	ldr	r3, [fp, #-1348]
	rsb	r1, r3, #15
	b	.L31
.L30:
	ldr	r1, [fp, #-1348]
.L31:
	sub	r2, fp, #1264
	sub	r2, r2, #4
	sub	r2, r2, #12
	mov	r3, r1
	lsl	r3, r3, #1
	add	r3, r3, r1
	lsl	r3, r3, #4
	add	r2, r2, r3
	sub	r1, fp, #296
	sub	r0, fp, #72
	mov	r3, #48
	bl	xor
	mov	r3, #0
	str	r3, [fp, #-1344]
	b	.L32
.L35:
	mov	r3, #0
	str	r3, [fp, #-1340]
	b	.L33
.L34:
	ldr	r2, [fp, #-1344]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r3, r3, #1
	mov	r2, r3
	ldr	r3, [fp, #-1340]
	add	r3, r2, r3
	sub	r2, fp, #4
	add	r3, r2, r3
	ldrb	r1, [r3, #-68]	@ zero_extendqisi2
	ldr	r2, [fp, #-1344]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r3, r3, #1
	sub	r2, fp, #4
	add	r2, r2, r3
	ldr	r3, [fp, #-1340]
	add	r3, r2, r3
	sub	r3, r3, #1312
	sub	r3, r3, #12
	mov	r2, r1
	strb	r2, [r3]
	ldr	r3, [fp, #-1340]
	add	r3, r3, #1
	str	r3, [fp, #-1340]
.L33:
	ldr	r3, [fp, #-1340]
	cmp	r3, #5
	ble	.L34
	ldr	r3, [fp, #-1344]
	add	r3, r3, #1
	str	r3, [fp, #-1344]
.L32:
	ldr	r3, [fp, #-1344]
	cmp	r3, #7
	ble	.L35
	mov	r3, #0
	str	r3, [fp, #-1344]
	b	.L36
.L39:
	ldr	r2, [fp, #-1344]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r3, r3, #1
	sub	r2, fp, #4
	add	r3, r2, r3
	sub	r3, r3, #1312
	sub	r3, r3, #12
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r1, r3, #1
	ldr	r2, [fp, #-1344]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r3, r3, #1
	sub	r2, fp, #4
	add	r3, r2, r3
	sub	r3, r3, #1312
	sub	r3, r3, #7
	ldrb	r3, [r3]	@ zero_extendqisi2
	orr	r3, r1, r3
	str	r3, [fp, #-1336]
	ldr	r2, [fp, #-1344]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r3, r3, #1
	sub	r2, fp, #4
	add	r3, r2, r3
	sub	r3, r3, #1312
	sub	r3, r3, #11
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r1, r3, #3
	ldr	r2, [fp, #-1344]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r3, r3, #1
	sub	r2, fp, #4
	add	r3, r2, r3
	sub	r3, r3, #1312
	sub	r3, r3, #10
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #2
	orr	r1, r1, r3
	ldr	r2, [fp, #-1344]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r3, r3, #1
	sub	r2, fp, #4
	add	r3, r2, r3
	sub	r3, r3, #1312
	sub	r3, r3, #9
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #1
	orr	r1, r1, r3
	ldr	r2, [fp, #-1344]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r3, r3, #1
	sub	r2, fp, #4
	add	r3, r2, r3
	sub	r3, r3, #1312
	sub	r3, r3, #8
	ldrb	r3, [r3]	@ zero_extendqisi2
	orr	r3, r1, r3
	str	r3, [fp, #-1332]
	mov	r3, #0
	str	r3, [fp, #-1340]
	b	.L37
.L38:
	ldr	r1, .L50+24
	ldr	r3, [fp, #-1344]
	lsl	r2, r3, #2
	ldr	r3, [fp, #-1336]
	add	r3, r2, r3
	lsl	r3, r3, #4
	add	r2, r1, r3
	ldr	r3, [fp, #-1332]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r3, [fp, #-1340]
	rsb	r3, r3, #3
	asr	r3, r2, r3
	and	r3, r3, #255
	and	r3, r3, #1
	and	r1, r3, #255
	ldr	r2, [fp, #-1344]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r3, r3, #1
	sub	r2, fp, #4
	add	r2, r2, r3
	ldr	r3, [fp, #-1340]
	add	r3, r2, r3
	sub	r3, r3, #1312
	sub	r3, r3, #12
	mov	r2, r1
	strb	r2, [r3]
	ldr	r3, [fp, #-1340]
	add	r3, r3, #1
	str	r3, [fp, #-1340]
.L37:
	ldr	r3, [fp, #-1340]
	cmp	r3, #3
	ble	.L38
	ldr	r3, [fp, #-1344]
	add	r3, r3, #1
	str	r3, [fp, #-1344]
.L36:
	ldr	r3, [fp, #-1344]
	cmp	r3, #7
	ble	.L39
	mov	r3, #0
	str	r3, [fp, #-1344]
	b	.L40
.L43:
	mov	r3, #0
	str	r3, [fp, #-1340]
	b	.L41
.L42:
	ldr	r3, [fp, #-1344]
	lsl	r2, r3, #2
	ldr	r3, [fp, #-1340]
	add	r1, r2, r3
	ldr	r2, [fp, #-1344]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r3, r3, r2
	lsl	r3, r3, #1
	sub	r2, fp, #4
	add	r2, r2, r3
	ldr	r3, [fp, #-1340]
	add	r3, r2, r3
	sub	r3, r3, #1312
	sub	r3, r3, #12
	ldrb	r2, [r3]	@ zero_extendqisi2
	sub	r3, fp, #4
	add	r3, r3, r1
	strb	r2, [r3, #-388]
	ldr	r3, [fp, #-1340]
	add	r3, r3, #1
	str	r3, [fp, #-1340]
.L41:
	ldr	r3, [fp, #-1340]
	cmp	r3, #3
	ble	.L42
	ldr	r3, [fp, #-1344]
	add	r3, r3, #1
	str	r3, [fp, #-1344]
.L40:
	ldr	r3, [fp, #-1344]
	cmp	r3, #7
	ble	.L43
	sub	r1, fp, #392
	sub	r0, fp, #360
	mov	r3, #32
	ldr	r2, .L50+28
	bl	permute
	sub	r2, fp, #360
	sub	r1, fp, #456
	sub	r0, fp, #328
	mov	r3, #32
	bl	xor
	mov	r3, #0
	str	r3, [fp, #-1344]
	b	.L44
.L45:
	sub	r2, fp, #424
	ldr	r3, [fp, #-1344]
	add	r3, r2, r3
	ldrb	r1, [r3]	@ zero_extendqisi2
	sub	r2, fp, #456
	ldr	r3, [fp, #-1344]
	add	r3, r2, r3
	mov	r2, r1
	strb	r2, [r3]
	ldr	r3, [fp, #-1344]
	add	r3, r3, #1
	str	r3, [fp, #-1344]
.L44:
	ldr	r3, [fp, #-1344]
	cmp	r3, #31
	ble	.L45
	mov	r3, #0
	str	r3, [fp, #-1344]
	b	.L46
.L47:
	sub	r2, fp, #328
	ldr	r3, [fp, #-1344]
	add	r3, r2, r3
	ldrb	r1, [r3]	@ zero_extendqisi2
	sub	r2, fp, #424
	ldr	r3, [fp, #-1344]
	add	r3, r2, r3
	mov	r2, r1
	strb	r2, [r3]
	ldr	r3, [fp, #-1344]
	add	r3, r3, #1
	str	r3, [fp, #-1344]
.L46:
	ldr	r3, [fp, #-1344]
	cmp	r3, #31
	ble	.L47
	ldr	r3, [fp, #-1348]
	add	r3, r3, #1
	str	r3, [fp, #-1348]
.L29:
	ldr	r3, [fp, #-1348]
	cmp	r3, #15
	ble	.L48
	sub	r2, fp, #456
	sub	r1, fp, #424
	sub	r0, fp, #72
	mov	r3, #32
	str	r3, [sp]
	mov	r3, #32
	bl	concat
	sub	r1, fp, #72
	mov	r3, #64
	ldr	r2, .L50+32
	ldr	r0, [fp, #-1352]
	bl	permute
	nop
	ldr	r3, .L50
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L49
	bl	__stack_chk_fail
.L49:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L51:
	.align	2
.L50:
	.word	.LC1
	.word	perm1
	.word	sc
	.word	perm2
	.word	perm3
	.word	perm4
	.word	sbox
	.word	perm5
	.word	perm6
	.size	dohash, .-dohash
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	str_to_key, %function
str_to_key:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #20
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	ldr	r3, [fp, #-16]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsr	r3, r3, #1
	and	r2, r3, #255
	ldr	r3, [fp, #-20]
	strb	r2, [r3]
	ldr	r3, [fp, #-16]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #6
	lsl	r3, r3, #24
	asr	r3, r3, #24
	and	r3, r3, #64
	lsl	r3, r3, #24
	asr	r2, r3, #24
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsr	r3, r3, #2
	and	r3, r3, #255
	lsl	r3, r3, #24
	asr	r3, r3, #24
	orr	r3, r2, r3
	lsl	r3, r3, #24
	asr	r2, r3, #24
	ldr	r3, [fp, #-20]
	add	r3, r3, #1
	and	r2, r2, #255
	strb	r2, [r3]
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #5
	lsl	r3, r3, #24
	asr	r3, r3, #24
	and	r3, r3, #96
	lsl	r3, r3, #24
	asr	r2, r3, #24
	ldr	r3, [fp, #-16]
	add	r3, r3, #2
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsr	r3, r3, #3
	and	r3, r3, #255
	lsl	r3, r3, #24
	asr	r3, r3, #24
	orr	r3, r2, r3
	lsl	r3, r3, #24
	asr	r2, r3, #24
	ldr	r3, [fp, #-20]
	add	r3, r3, #2
	and	r2, r2, #255
	strb	r2, [r3]
	ldr	r3, [fp, #-16]
	add	r3, r3, #2
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #4
	lsl	r3, r3, #24
	asr	r3, r3, #24
	and	r3, r3, #112
	lsl	r3, r3, #24
	asr	r2, r3, #24
	ldr	r3, [fp, #-16]
	add	r3, r3, #3
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsr	r3, r3, #4
	and	r3, r3, #255
	lsl	r3, r3, #24
	asr	r3, r3, #24
	orr	r3, r2, r3
	lsl	r3, r3, #24
	asr	r2, r3, #24
	ldr	r3, [fp, #-20]
	add	r3, r3, #3
	and	r2, r2, #255
	strb	r2, [r3]
	ldr	r3, [fp, #-16]
	add	r3, r3, #3
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #3
	lsl	r3, r3, #24
	asr	r3, r3, #24
	and	r3, r3, #120
	lsl	r3, r3, #24
	asr	r2, r3, #24
	ldr	r3, [fp, #-16]
	add	r3, r3, #4
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsr	r3, r3, #5
	and	r3, r3, #255
	lsl	r3, r3, #24
	asr	r3, r3, #24
	orr	r3, r2, r3
	lsl	r3, r3, #24
	asr	r2, r3, #24
	ldr	r3, [fp, #-20]
	add	r3, r3, #4
	and	r2, r2, #255
	strb	r2, [r3]
	ldr	r3, [fp, #-16]
	add	r3, r3, #4
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #2
	lsl	r3, r3, #24
	asr	r3, r3, #24
	and	r3, r3, #124
	lsl	r3, r3, #24
	asr	r2, r3, #24
	ldr	r3, [fp, #-16]
	add	r3, r3, #5
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsr	r3, r3, #6
	and	r3, r3, #255
	lsl	r3, r3, #24
	asr	r3, r3, #24
	orr	r3, r2, r3
	lsl	r3, r3, #24
	asr	r2, r3, #24
	ldr	r3, [fp, #-20]
	add	r3, r3, #5
	and	r2, r2, #255
	strb	r2, [r3]
	ldr	r3, [fp, #-16]
	add	r3, r3, #5
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #1
	lsl	r3, r3, #24
	asr	r3, r3, #24
	and	r3, r3, #126
	lsl	r3, r3, #24
	asr	r2, r3, #24
	ldr	r3, [fp, #-16]
	add	r3, r3, #6
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsr	r3, r3, #7
	and	r3, r3, #255
	lsl	r3, r3, #24
	asr	r3, r3, #24
	orr	r3, r2, r3
	lsl	r3, r3, #24
	asr	r2, r3, #24
	ldr	r3, [fp, #-20]
	add	r3, r3, #6
	and	r2, r2, #255
	strb	r2, [r3]
	ldr	r3, [fp, #-16]
	add	r3, r3, #6
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-20]
	add	r3, r3, #7
	and	r2, r2, #127
	and	r2, r2, #255
	strb	r2, [r3]
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L53
.L54:
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-20]
	add	r3, r2, r3
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-8]
	ldr	r1, [fp, #-20]
	add	r3, r1, r3
	lsl	r2, r2, #1
	and	r2, r2, #255
	strb	r2, [r3]
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L53:
	ldr	r3, [fp, #-8]
	cmp	r3, #7
	ble	.L54
	nop
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	str_to_key, .-str_to_key
	.section	.rodata
	.align	2
.LC2:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	smbhash, %function
smbhash:
	@ args = 0, pretend = 0, frame = 224
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #224
	str	r0, [fp, #-216]
	str	r1, [fp, #-220]
	str	r2, [fp, #-224]
	str	r3, [fp, #-228]
	ldr	r3, .L64
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	sub	r3, fp, #208
	mov	r1, r3
	ldr	r0, [fp, #-224]
	bl	str_to_key
	mov	r3, #0
	str	r3, [fp, #-212]
	b	.L56
.L57:
	ldr	r3, [fp, #-212]
	add	r2, r3, #7
	cmp	r3, #0
	movlt	r3, r2
	movge	r3, r3
	asr	r3, r3, #3
	mov	r2, r3
	ldr	r3, [fp, #-220]
	add	r3, r3, r2
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r3, [fp, #-212]
	rsbs	r2, r3, #0
	and	r3, r3, #7
	and	r2, r2, #7
	rsbpl	r3, r2, #0
	rsb	r3, r3, #7
	asr	r3, r1, r3
	and	r3, r3, #255
	and	r3, r3, #1
	and	r1, r3, #255
	sub	r2, fp, #136
	ldr	r3, [fp, #-212]
	add	r3, r2, r3
	mov	r2, r1
	strb	r2, [r3]
	ldr	r3, [fp, #-212]
	add	r2, r3, #7
	cmp	r3, #0
	movlt	r3, r2
	movge	r3, r3
	asr	r3, r3, #3
	sub	r2, fp, #4
	add	r3, r2, r3
	ldrb	r3, [r3, #-204]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r3, [fp, #-212]
	rsbs	r2, r3, #0
	and	r3, r3, #7
	and	r2, r2, #7
	rsbpl	r3, r2, #0
	rsb	r3, r3, #7
	asr	r3, r1, r3
	and	r3, r3, #255
	and	r3, r3, #1
	and	r1, r3, #255
	sub	r2, fp, #72
	ldr	r3, [fp, #-212]
	add	r3, r2, r3
	mov	r2, r1
	strb	r2, [r3]
	sub	r2, fp, #200
	ldr	r3, [fp, #-212]
	add	r3, r2, r3
	mov	r2, #0
	strb	r2, [r3]
	ldr	r3, [fp, #-212]
	add	r3, r3, #1
	str	r3, [fp, #-212]
.L56:
	ldr	r3, [fp, #-212]
	cmp	r3, #63
	ble	.L57
	sub	r2, fp, #72
	sub	r1, fp, #136
	sub	r0, fp, #200
	ldr	r3, [fp, #-228]
	bl	dohash
	mov	r3, #0
	str	r3, [fp, #-212]
	b	.L58
.L59:
	ldr	r3, [fp, #-212]
	ldr	r2, [fp, #-216]
	add	r3, r2, r3
	mov	r2, #0
	strb	r2, [r3]
	ldr	r3, [fp, #-212]
	add	r3, r3, #1
	str	r3, [fp, #-212]
.L58:
	ldr	r3, [fp, #-212]
	cmp	r3, #7
	ble	.L59
	mov	r3, #0
	str	r3, [fp, #-212]
	b	.L60
.L62:
	sub	r2, fp, #200
	ldr	r3, [fp, #-212]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L61
	ldr	r3, [fp, #-212]
	add	r2, r3, #7
	cmp	r3, #0
	movlt	r3, r2
	movge	r3, r3
	asr	r3, r3, #3
	mov	r0, r3
	mov	r2, r0
	ldr	r3, [fp, #-216]
	add	r3, r3, r2
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #24
	asr	r2, r3, #24
	ldr	r3, [fp, #-212]
	rsbs	r1, r3, #0
	and	r3, r3, #7
	and	r1, r1, #7
	rsbpl	r3, r1, #0
	rsb	r3, r3, #7
	mov	r1, #1
	lsl	r3, r1, r3
	lsl	r3, r3, #24
	asr	r3, r3, #24
	orr	r3, r2, r3
	lsl	r3, r3, #24
	asr	r2, r3, #24
	mov	r1, r0
	ldr	r3, [fp, #-216]
	add	r3, r3, r1
	and	r2, r2, #255
	strb	r2, [r3]
.L61:
	ldr	r3, [fp, #-212]
	add	r3, r3, #1
	str	r3, [fp, #-212]
.L60:
	ldr	r3, [fp, #-212]
	cmp	r3, #63
	ble	.L62
	nop
	ldr	r3, .L64
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L63
	bl	__stack_chk_fail
.L63:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L65:
	.align	2
.L64:
	.word	.LC2
	.size	smbhash, .-smbhash
	.section	.rodata
	.align	2
.LC3:
	.ascii	"KGS!@#$%"
	.align	2
.LC4:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	E_P16
	.syntax unified
	.arm
	.fpu softvfp
	.type	E_P16, %function
E_P16:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	str	r0, [fp, #-24]
	str	r1, [fp, #-28]
	ldr	r3, .L68
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r2, .L68+4
	sub	r3, fp, #16
	ldm	r2, {r0, r1}
	stm	r3, {r0, r1}
	sub	r1, fp, #16
	mov	r3, #1
	ldr	r2, [fp, #-24]
	ldr	r0, [fp, #-28]
	bl	smbhash
	ldr	r3, [fp, #-28]
	add	r0, r3, #8
	ldr	r3, [fp, #-24]
	add	r2, r3, #7
	sub	r1, fp, #16
	mov	r3, #1
	bl	smbhash
	nop
	ldr	r3, .L68
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L67
	bl	__stack_chk_fail
.L67:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L69:
	.align	2
.L68:
	.word	.LC4
	.word	.LC3
	.size	E_P16, .-E_P16
	.align	2
	.global	E_P24
	.syntax unified
	.arm
	.fpu softvfp
	.type	E_P24, %function
E_P24:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-8]
	str	r1, [fp, #-12]
	str	r2, [fp, #-16]
	mov	r3, #1
	ldr	r2, [fp, #-8]
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-16]
	bl	smbhash
	ldr	r3, [fp, #-16]
	add	r0, r3, #8
	ldr	r3, [fp, #-8]
	add	r2, r3, #7
	mov	r3, #1
	ldr	r1, [fp, #-12]
	bl	smbhash
	ldr	r3, [fp, #-16]
	add	r0, r3, #16
	ldr	r3, [fp, #-8]
	add	r2, r3, #14
	mov	r3, #1
	ldr	r1, [fp, #-12]
	bl	smbhash
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	E_P24, .-E_P24
	.align	2
	.global	D_P16
	.syntax unified
	.arm
	.fpu softvfp
	.type	D_P16, %function
D_P16:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-8]
	str	r1, [fp, #-12]
	str	r2, [fp, #-16]
	mov	r3, #0
	ldr	r2, [fp, #-8]
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-16]
	bl	smbhash
	ldr	r3, [fp, #-16]
	add	r0, r3, #8
	ldr	r3, [fp, #-12]
	add	r1, r3, #8
	ldr	r3, [fp, #-8]
	add	r2, r3, #7
	mov	r3, #0
	bl	smbhash
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	D_P16, .-D_P16
	.align	2
	.global	E_old_pw_hash
	.syntax unified
	.arm
	.fpu softvfp
	.type	E_old_pw_hash, %function
E_old_pw_hash:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-8]
	str	r1, [fp, #-12]
	str	r2, [fp, #-16]
	mov	r3, #1
	ldr	r2, [fp, #-8]
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-16]
	bl	smbhash
	ldr	r3, [fp, #-16]
	add	r0, r3, #8
	ldr	r3, [fp, #-12]
	add	r1, r3, #8
	ldr	r3, [fp, #-8]
	add	r2, r3, #7
	mov	r3, #1
	bl	smbhash
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	E_old_pw_hash, .-E_old_pw_hash
	.section	.rodata
	.align	2
.LC5:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	cred_hash1
	.syntax unified
	.arm
	.fpu softvfp
	.type	cred_hash1, %function
cred_hash1:
	@ 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, #-24]
	str	r1, [fp, #-28]
	str	r2, [fp, #-32]
	ldr	r3, .L75
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	sub	r0, fp, #16
	mov	r3, #1
	ldr	r2, [fp, #-32]
	ldr	r1, [fp, #-28]
	bl	smbhash
	ldr	r3, [fp, #-32]
	add	r2, r3, #9
	sub	r1, fp, #16
	mov	r3, #1
	ldr	r0, [fp, #-24]
	bl	smbhash
	nop
	ldr	r3, .L75
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L74
	bl	__stack_chk_fail
.L74:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L76:
	.align	2
.L75:
	.word	.LC5
	.size	cred_hash1, .-cred_hash1
	.section	.rodata
	.align	2
.LC6:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	cred_hash2
	.syntax unified
	.arm
	.fpu softvfp
	.type	cred_hash2, %function
cred_hash2:
	@ 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, #-24]
	str	r1, [fp, #-28]
	str	r2, [fp, #-32]
	ldr	r3, .L79
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	sub	r0, fp, #16
	mov	r3, #1
	ldr	r2, [fp, #-32]
	ldr	r1, [fp, #-28]
	bl	smbhash
	ldr	r3, [fp, #-32]
	ldrb	r2, [r3, #7]	@ zero_extendqisi2
	ldr	r3, .L79+4
	strb	r2, [r3]
	sub	r1, fp, #16
	mov	r3, #1
	ldr	r2, .L79+4
	ldr	r0, [fp, #-24]
	bl	smbhash
	nop
	ldr	r3, .L79
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L78
	bl	__stack_chk_fail
.L78:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L80:
	.align	2
.L79:
	.word	.LC6
	.word	key2.4373
	.size	cred_hash2, .-cred_hash2
	.align	2
	.global	cred_hash3
	.syntax unified
	.arm
	.fpu softvfp
	.type	cred_hash3, %function
cred_hash3:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-8]
	str	r1, [fp, #-12]
	str	r2, [fp, #-16]
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-20]
	ldr	r2, [fp, #-16]
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-8]
	bl	smbhash
	ldr	r3, [fp, #-16]
	ldrb	r2, [r3, #7]	@ zero_extendqisi2
	ldr	r3, .L82
	strb	r2, [r3]
	ldr	r3, [fp, #-8]
	add	r0, r3, #8
	ldr	r3, [fp, #-12]
	add	r1, r3, #8
	ldr	r3, [fp, #-20]
	ldr	r2, .L82
	bl	smbhash
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L83:
	.align	2
.L82:
	.word	key2.4380
	.size	cred_hash3, .-cred_hash3
	.local	key2.4373
	.comm	key2.4373,8,4
	.local	key2.4380
	.comm	key2.4380,8,4
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
