; Listing generated by Microsoft (R) Optimizing Compiler Version 15.00.30729.01 

include listing.inc

INCLUDELIB LIBCMT
INCLUDELIB OLDNAMES

PUBLIC	qlz_get_setting
EXTRN	__ImageBase:BYTE
; Function compile flags: /Ogtpy
_TEXT	SEGMENT
setting$ = 8
qlz_get_setting PROC
; File d:\_kaze_kazuya_r17_lasse-ariya-oberhumer-okumura_(on_osho)_32_bit_64_bit\kazuya17\quicklz.c
; Line 30
	cmp	ecx, 9
	ja	SHORT $LN9@qlz_get_se
	lea	rdx, OFFSET FLAT:__ImageBase
	movsxd	rax, ecx
	mov	ecx, DWORD PTR $LN13@qlz_get_se[rdx+rax*4]
	add	rcx, rdx
	jmp	rcx
$LN8@qlz_get_se:
; Line 32
	mov	eax, 3
; Line 46
	ret	0
$LN7@qlz_get_se:
; Line 33
	mov	eax, 528400				; 00081010H
; Line 46
	ret	0
$LN6@qlz_get_se:
; Line 34
	mov	eax, 16
; Line 46
	ret	0
$LN5@qlz_get_se:
; Line 35
	xor	eax, eax
; Line 46
	ret	0
$LN3@qlz_get_se:
; Line 41
	mov	eax, 1
; Line 46
	ret	0
$LN2@qlz_get_se:
; Line 42
	mov	eax, 4
; Line 46
	ret	0
$LN9@qlz_get_se:
; Line 45
	or	eax, -1
; Line 46
	ret	0
$LN13@qlz_get_se:
	DD	$LN8@qlz_get_se
	DD	$LN7@qlz_get_se
	DD	$LN6@qlz_get_se
	DD	$LN5@qlz_get_se
	DD	$LN9@qlz_get_se
	DD	$LN9@qlz_get_se
	DD	$LN5@qlz_get_se
	DD	$LN3@qlz_get_se
	DD	$LN2@qlz_get_se
	DD	$LN5@qlz_get_se
qlz_get_setting ENDP
_TEXT	ENDS
EXTRN	memset:PROC
; Function compile flags: /Ogtpy
_TEXT	SEGMENT
hash_counter$ = 8
reset_state PROC
; Line 50
	xor	edx, edx
	mov	r8d, 4096				; 00001000H
; Line 51
	jmp	memset
reset_state ENDP
; Function compile flags: /Ogtpy
i$ = 8
hash_func PROC
; Line 58
	mov	eax, ecx
	shr	eax, 12
	xor	eax, ecx
	and	eax, 4095				; 00000fffH
; Line 60
	ret	0
hash_func ENDP
; Function compile flags: /Ogtpy
src$ = 8
bytes$ = 16
fast_read PROC
; Line 79
	lea	eax, DWORD PTR [rdx-1]
	cmp	eax, 3
	ja	SHORT $LN2@fast_read
; Line 80
	mov	eax, DWORD PTR [rcx]
; Line 84
	ret	0
$LN2@fast_read:
; Line 82
	xor	eax, eax
; Line 84
	ret	0
fast_read ENDP
; Function compile flags: /Ogtpy
f$ = 8
dst$ = 16
bytes$ = 24
fast_write PROC
; Line 113
	sub	r8, 1
	je	SHORT $LN1@fast_write
	sub	r8, 1
	je	SHORT $LN2@fast_write
	sub	r8, 1
	je	SHORT $LN3@fast_write
	cmp	r8, 1
	jne	SHORT $LN5@fast_write
$LN3@fast_write:
; Line 116
	mov	DWORD PTR [rdx], ecx
; Line 129
	ret	0
$LN2@fast_write:
; Line 122
	mov	WORD PTR [rdx], cx
; Line 129
	ret	0
$LN1@fast_write:
; Line 125
	mov	BYTE PTR [rdx], cl
$LN5@fast_write:
; Line 129
	fatret	0
fast_write ENDP
; Function compile flags: /Ogtpy
dst$ = 8
src$ = 16
n$ = 24
memcpy_up PROC
; Line 143
	xor	r9d, r9d
; Line 149
	sub	rdx, rcx
	npad	10
$LL3@memcpy_up:
	mov	eax, DWORD PTR [rdx+rcx]
	add	r9d, 3
	add	rcx, 3
	mov	DWORD PTR [rcx-3], eax
	cmp	r9d, r8d
	jb	SHORT $LL3@memcpy_up
; Line 151
	fatret	0
memcpy_up ENDP
_TEXT	ENDS
pdata	SEGMENT
$pdata$qlz_compress_core DD imagerel qlz_compress_core
	DD	imagerel qlz_compress_core+1143
	DD	imagerel $unwind$qlz_compress_core
pdata	ENDS
xdata	SEGMENT
$unwind$qlz_compress_core DD 092401H
	DD	0f0208224H
	DD	0d01ce01eH
	DD	07018c01aH
	DD	050166017H
	DD	03015H
; Function compile flags: /Ogtpy
xdata	ENDS
_TEXT	SEGMENT
c$1$ = 0
cword_val$1$ = 4
dst$1$ = 8
tv702 = 16
cword_ptr$1$ = 24
last_byte$1$ = 32
tv782 = 40
tv717 = 48
last_matchstart$1$ = 56
source$ = 144
destination$ = 152
size$ = 160
hashtable$ = 168
hash_counter$ = 176
qlz_compress_core PROC
; Line 186
	mov	QWORD PTR [rsp+32], r9
	mov	QWORD PTR [rsp+24], r8
	mov	QWORD PTR [rsp+16], rdx
	mov	QWORD PTR [rsp+8], rcx
	push	rbx
	push	rbp
	push	rsi
	push	rdi
	push	r12
	push	r13
	push	r14
	push	r15
	sub	rsp, 72					; 00000048H
	mov	r11, r8
; Line 187
	lea	r8, QWORD PTR [rcx+r8-1]
; Line 190
	lea	rdi, QWORD PTR [rdx+4]
; Line 192
	lea	rax, QWORD PTR [r8-10]
	mov	r10d, -2147483648			; 80000000H
	mov	r12, r9
	mov	rbx, rdx
	mov	QWORD PTR last_byte$1$[rsp], r8
	mov	rsi, rcx
	mov	r9, rcx
	mov	QWORD PTR cword_ptr$1$[rsp], rdx
	mov	QWORD PTR dst$1$[rsp], rdi
	mov	DWORD PTR cword_val$1$[rsp], r10d
	mov	QWORD PTR last_matchstart$1$[rsp], rax
; Line 198
	cmp	rcx, rax
	ja	$LN132@qlz_compre
	mov	r14, rdi
	sub	r14, rdx
	mov	QWORD PTR tv702[rsp], r14
$LL35@qlz_compre:
; Line 200
	test	r10b, 1
	je	SHORT $LN55@qlz_compre
; Line 203
	mov	rcx, r11
	shr	rcx, 2
	lea	rax, QWORD PTR [r9+rcx*2]
	add	rcx, rax
	cmp	rsi, rcx
	jbe	SHORT $LN32@qlz_compre
	mov	rcx, rsi
	mov	rax, rsi
	sub	rcx, r9
	sar	rcx, 5
	sub	rax, rcx
	sub	rax, r9
	cmp	r14, rax
	jg	$LN134@qlz_compre
$LN32@qlz_compre:
; Line 206
	shr	r10d, 1
; Line 208
	mov	QWORD PTR cword_ptr$1$[rsp], rdi
; Line 209
	add	rdi, 4
	bts	r10d, 31
	add	r14, 4
	mov	QWORD PTR dst$1$[rsp], rdi
	mov	DWORD PTR [rdx], r10d
; Line 210
	mov	r10d, -2147483648			; 80000000H
	mov	QWORD PTR tv702[rsp], r14
	mov	DWORD PTR cword_val$1$[rsp], r10d
; Line 211
$LN55@qlz_compre:
; Line 293
	mov	rax, r8
	sub	rax, rsi
	sub	rax, 3
	cmp	rax, 255				; 000000ffH
	jle	SHORT $LN39@qlz_compre
	mov	r11d, 255				; 000000ffH
	jmp	SHORT $LN40@qlz_compre
$LN39@qlz_compre:
	mov	r11, r8
	sub	r11, rsi
	sub	r11, 3
$LN40@qlz_compre:
; Line 295
	mov	ecx, DWORD PTR [rsi]
; Line 298
	mov	rdx, QWORD PTR hash_counter$[rsp]
	mov	r8d, ecx
	shr	r8d, 12
	xor	r8d, ecx
	and	r8d, 4095				; 00000fffH
	mov	eax, r8d
	add	rdx, rax
	mov	QWORD PTR tv782[rsp], rax
; Line 301
	shl	rax, 7
	mov	r13, QWORD PTR [rax+r12]
	movzx	r9d, BYTE PTR [rdx]
; Line 302
	lea	rax, QWORD PTR [rsi-2]
	mov	QWORD PTR tv717[rsp], rdx
	mov	BYTE PTR c$1$[rsp], r9b
	cmp	r13, rax
	jae	$LN31@qlz_compre
	test	r9b, r9b
	je	$LN31@qlz_compre
	mov	eax, DWORD PTR [r13]
	xor	eax, ecx
	test	eax, 16777215				; 00ffffffH
	jne	$LN31@qlz_compre
; Line 305
	movzx	eax, BYTE PTR [rsi+3]
	mov	ebp, 3
	cmp	BYTE PTR [r13+3], al
	jne	SHORT $LN27@qlz_compre
; Line 308
	movzx	eax, BYTE PTR [rsi+4]
	lea	rcx, QWORD PTR [rsi+4]
	mov	ebp, 4
	cmp	BYTE PTR [r13+4], al
	jne	SHORT $LN148@qlz_compre
	mov	rdx, r13
	sub	rdx, rsi
$LL29@qlz_compre:
	mov	eax, ebp
	cmp	rax, r11
	jae	SHORT $LN148@qlz_compre
	movzx	eax, BYTE PTR [rcx+1]
; Line 309
	inc	rcx
	inc	ebp
	cmp	BYTE PTR [rdx+rcx], al
	je	SHORT $LL29@qlz_compre
$LN148@qlz_compre:
; Line 313
	mov	ecx, DWORD PTR [rsi]
$LN27@qlz_compre:
	mov	rdi, QWORD PTR hashtable$[rsp]
; Line 314
	mov	ebx, 1
	movsxd	r10, r8d
	movzx	r15d, r9b
	lea	r14, QWORD PTR [rsi-2]
	mov	r12, rbx
$LL26@qlz_compre:
	cmp	r15d, ebx
	jbe	SHORT $LN24@qlz_compre
; Line 316
	mov	rax, r10
	shl	rax, 4
	add	rax, r12
	mov	r9, QWORD PTR [rdi+rax*8]
; Line 318
	mov	eax, DWORD PTR [r9]
	xor	eax, ecx
	test	eax, 16777215				; 00ffffffH
	jne	SHORT $LN25@qlz_compre
	cmp	r9, r14
	jae	SHORT $LN25@qlz_compre
; Line 324
	movzx	eax, BYTE PTR [rsi+3]
	lea	rdx, QWORD PTR [rsi+3]
	mov	ecx, 3
	cmp	BYTE PTR [r9+3], al
	jne	SHORT $LN144@qlz_compre
	mov	r8, r9
	sub	r8, rsi
$LL22@qlz_compre:
	mov	eax, ecx
	cmp	rax, r11
	jae	SHORT $LN144@qlz_compre
	movzx	eax, BYTE PTR [rdx+1]
; Line 325
	inc	rdx
	inc	ecx
	cmp	BYTE PTR [r8+rdx], al
	je	SHORT $LL22@qlz_compre
$LN144@qlz_compre:
; Line 327
	cmp	ecx, ebp
	ja	SHORT $LN19@qlz_compre
	jne	SHORT $LN146@qlz_compre
	cmp	r9, r13
	jbe	SHORT $LN146@qlz_compre
$LN19@qlz_compre:
; Line 332
	mov	r13, r9
; Line 333
	mov	ebp, ecx
$LN146@qlz_compre:
; Line 339
	mov	ecx, DWORD PTR [rsi]
$LN25@qlz_compre:
; Line 314
	inc	ebx
	inc	r12
	cmp	ebx, 16
	jb	SHORT $LL26@qlz_compre
$LN24@qlz_compre:
; Line 339
	movzx	r9d, BYTE PTR c$1$[rsp]
	mov	rcx, QWORD PTR tv782[rsp]
	mov	r12, QWORD PTR hashtable$[rsp]
; Line 344
	mov	r10d, DWORD PTR cword_val$1$[rsp]
	mov	rdi, QWORD PTR dst$1$[rsp]
	mov	r14, QWORD PTR tv702[rsp]
	mov	rax, r9
	shl	rcx, 4
	inc	r9b
	and	eax, 15
	add	rax, rcx
	mov	QWORD PTR [r12+rax*8], rsi
	mov	rax, QWORD PTR tv717[rsp]
	mov	BYTE PTR [rax], r9b
	cmp	ebp, 2
	jbe	$LN18@qlz_compre
	mov	r8, rsi
	sub	r8, r13
	cmp	r8, 131071				; 0001ffffH
	jge	$LN18@qlz_compre
; Line 349
	cmp	ebp, 1
	jbe	SHORT $LN15@qlz_compre
	mov	r13, QWORD PTR hash_counter$[rsp]
	lea	r9, QWORD PTR [rsi+1]
	lea	ebx, DWORD PTR [rbp-1]
	mov	r11, r9
	npad	12
$LL17@qlz_compre:
; Line 351
	mov	eax, DWORD PTR [r9]
	inc	r9
; Line 352
	mov	ecx, eax
	shr	ecx, 12
	xor	ecx, eax
	and	ecx, 4095				; 00000fffH
; Line 353
	mov	edx, ecx
	movzx	ecx, BYTE PTR [rcx+r13]
	lea	eax, DWORD PTR [rcx+1]
	mov	BYTE PTR [rdx+r13], al
; Line 354
	mov	rax, rcx
	shl	rdx, 4
	and	eax, 15
	add	rax, rdx
	mov	QWORD PTR [r12+rax*8], r11
	inc	r11
	sub	rbx, 1
	jne	SHORT $LL17@qlz_compre
$LN15@qlz_compre:
; Line 357
	shr	r10d, 1
; Line 358
	mov	eax, ebp
	bts	r10d, 31
	add	rsi, rax
	mov	DWORD PTR cword_val$1$[rsp], r10d
; Line 360
	cmp	ebp, 3
	jne	SHORT $LN12@qlz_compre
	cmp	r8, 63					; 0000003fH
	ja	SHORT $LN141@qlz_compre
; Line 362
	shl	r8b, 2
; Line 363
	inc	rdi
	inc	r14
	mov	BYTE PTR [rdi-1], r8b
	jmp	$LN149@qlz_compre
$LN31@qlz_compre:
; Line 313
	xor	ebp, ebp
	jmp	$LN27@qlz_compre
$LN141@qlz_compre:
; Line 365
	cmp	r8, 16383				; 00003fffH
	ja	SHORT $LN142@qlz_compre
; Line 367
	lea	rax, QWORD PTR [r8*4]
; Line 369
	add	rdi, 2
	or	eax, 1
	add	r14, 2
	mov	WORD PTR [rdi-2], ax
	jmp	$LN149@qlz_compre
$LN12@qlz_compre:
; Line 371
	cmp	ebp, 18
	ja	SHORT $LN10@qlz_compre
$LN142@qlz_compre:
	cmp	r8, 1023				; 000003ffH
	ja	SHORT $LN10@qlz_compre
; Line 373
	shl	r8, 6
	lea	eax, DWORD PTR [rbp*4-12]
; Line 375
	add	rdi, 2
	or	r8d, eax
	or	r8d, 2
	add	r14, 2
	mov	WORD PTR [rdi-2], r8w
	jmp	SHORT $LN149@qlz_compre
$LN10@qlz_compre:
; Line 378
	cmp	ebp, 33					; 00000021H
	ja	SHORT $LN8@qlz_compre
; Line 380
	shl	r8, 7
	lea	eax, DWORD PTR [rbp*4-8]
; Line 382
	add	rdi, 3
	or	r8d, eax
	or	r8d, 3
	add	r14, 3
	mov	DWORD PTR [rdi-3], r8d
; Line 384
	jmp	SHORT $LN149@qlz_compre
$LN8@qlz_compre:
; Line 386
	shl	r8, 15
	lea	eax, DWORD PTR [rbp-3]
; Line 388
	add	rdi, 4
	shl	eax, 7
	or	r8d, eax
	or	r8d, 3
	add	r14, 4
	mov	DWORD PTR [rdi-4], r8d
; Line 391
	jmp	SHORT $LN149@qlz_compre
$LN18@qlz_compre:
; Line 393
	movzx	eax, BYTE PTR [rsi]
; Line 395
	inc	rdi
	inc	rsi
	mov	BYTE PTR [rdi-1], al
	inc	r14
; Line 396
	shr	r10d, 1
	mov	DWORD PTR cword_val$1$[rsp], r10d
$LN149@qlz_compre:
	mov	rdx, QWORD PTR cword_ptr$1$[rsp]
	mov	r8, QWORD PTR last_byte$1$[rsp]
	mov	QWORD PTR tv702[rsp], r14
	mov	QWORD PTR dst$1$[rsp], rdi
	cmp	rsi, QWORD PTR last_matchstart$1$[rsp]
	ja	SHORT $LN143@qlz_compre
	mov	r9, QWORD PTR source$[rsp]
	mov	r11, QWORD PTR size$[rsp]
	jmp	$LL35@qlz_compre
$LN134@qlz_compre:
; Line 204
	xor	eax, eax
	jmp	SHORT $LN37@qlz_compre
$LN143@qlz_compre:
	mov	rbx, QWORD PTR destination$[rsp]
$LN132@qlz_compre:
; Line 433
	cmp	rsi, r8
	ja	SHORT $LN133@qlz_compre
$LL5@qlz_compre:
; Line 435
	test	r10b, 1
	je	SHORT $LN3@qlz_compre
; Line 437
	shr	r10d, 1
	bts	r10d, 31
	mov	DWORD PTR [rdx], r10d
; Line 438
	mov	rdx, rdi
; Line 439
	add	rdi, 4
; Line 440
	mov	r10d, -2147483648			; 80000000H
$LN3@qlz_compre:
; Line 464
	movzx	eax, BYTE PTR [rsi]
; Line 465
	inc	rsi
; Line 466
	inc	rdi
	mov	BYTE PTR [rdi-1], al
; Line 468
	shr	r10d, 1
	cmp	rsi, r8
	jbe	SHORT $LL5@qlz_compre
$LN133@qlz_compre:
; Line 471
	test	r10b, 1
	jne	SHORT $LN1@qlz_compre
	npad	6
$LL2@qlz_compre:
; Line 472
	shr	r10d, 1
	test	r10b, 1
	je	SHORT $LL2@qlz_compre
$LN1@qlz_compre:
; Line 477
	mov	eax, 9
	shr	r10d, 1
	sub	rdi, rbx
	bts	r10d, 31
	cmp	rdi, rax
	cmovl	rdi, rax
	mov	DWORD PTR [rdx], r10d
	mov	rax, rdi
$LN37@qlz_compre:
; Line 478
	add	rsp, 72					; 00000048H
	pop	r15
	pop	r14
	pop	r13
	pop	r12
	pop	rdi
	pop	rsi
	pop	rbp
	pop	rbx
	ret	0
qlz_compress_core ENDP
_TEXT	ENDS
PUBLIC	qlz_size_decompressed
; Function compile flags: /Ogtpy
_TEXT	SEGMENT
source$ = 8
qlz_size_decompressed PROC
; Line 661
	movzx	eax, BYTE PTR [rcx]
	mov	edx, 1
	mov	r9d, 4
	and	al, 2
	cmp	al, 2
	cmove	edx, r9d
; Line 662
	lea	eax, DWORD PTR [rdx-1]
	cmp	eax, 3
	ja	SHORT $LN4@qlz_size_d
	mov	r8d, DWORD PTR [rdx+rcx+1]
	jmp	SHORT $LN3@qlz_size_d
$LN4@qlz_size_d:
	xor	r8d, r8d
$LN3@qlz_size_d:
; Line 664
	sub	r9d, edx
	mov	eax, -1					; ffffffffH
	mov	ecx, r9d
	shl	ecx, 3
	shr	rax, cl
	mov	ecx, r8d
	and	rax, rcx
; Line 665
	ret	0
qlz_size_decompressed ENDP
_TEXT	ENDS
PUBLIC	qlz_size_compressed
; Function compile flags: /Ogtpy
_TEXT	SEGMENT
source$ = 8
qlz_size_compressed PROC
; Line 670
	movzx	eax, BYTE PTR [rcx]
	mov	r8d, 1
	mov	r9d, 4
	and	al, 2
	cmp	al, 2
	cmove	r8d, r9d
; Line 671
	lea	eax, DWORD PTR [r8-1]
	cmp	eax, 3
	ja	SHORT $LN4@qlz_size_c
	mov	edx, DWORD PTR [rcx+1]
	jmp	SHORT $LN3@qlz_size_c
$LN4@qlz_size_c:
	xor	edx, edx
$LN3@qlz_size_c:
; Line 673
	sub	r9d, r8d
	mov	eax, -1					; ffffffffH
	mov	ecx, r9d
	shl	ecx, 3
	shr	rax, cl
	mov	ecx, edx
	and	rax, rcx
; Line 674
	ret	0
qlz_size_compressed ENDP
_TEXT	ENDS
PUBLIC	qlz_compress
EXTRN	memcpy:PROC
pdata	SEGMENT
$pdata$qlz_compress DD imagerel $LN29
	DD	imagerel $LN29+68
	DD	imagerel $unwind$qlz_compress
$pdata$1$qlz_compress DD imagerel $LN29+68
	DD	imagerel $LN29+203
	DD	imagerel $chain$1$qlz_compress
$pdata$2$qlz_compress DD imagerel $LN29+203
	DD	imagerel $LN29+292
	DD	imagerel $chain$2$qlz_compress
pdata	ENDS
xdata	SEGMENT
$unwind$qlz_compress DD 081101H
	DD	0e3411H
	DD	0f00d5211H
	DD	0c009d00bH
	DD	060067007H
$chain$1$qlz_compress DD 042a21H
	DD	0de42aH
	DD	0c5405H
	DD	imagerel $LN29
	DD	imagerel $LN29+68
	DD	imagerel $unwind$qlz_compress
$chain$2$qlz_compress DD 021H
	DD	imagerel $LN29
	DD	imagerel $LN29+68
	DD	imagerel $unwind$qlz_compress
; Function compile flags: /Ogtpy
xdata	ENDS
_TEXT	SEGMENT
source$ = 96
destination$ = 104
size$ = 112
scratch_compress$ = 120
qlz_compress PROC
; Line 677
$LN29:
	mov	QWORD PTR [rsp+24], rbx
	push	rsi
	push	rdi
	push	r12
	push	r13
	push	r15
	sub	rsp, 48					; 00000030H
; Line 678
	mov	rax, r9
	mov	rsi, r9
	mov	rdi, r8
	and	eax, 7
	mov	rbx, rdx
	mov	r12, rcx
	sub	rsi, rax
; Line 681
	lea	r15, QWORD PTR [rsi+524304]
; Line 689
	test	r8, r8
	je	$LN7@qlz_compre@2
	mov	eax, -401				; fffffe6fH
	cmp	r8, rax
	ja	$LN7@qlz_compre@2
	mov	QWORD PTR [rsp+96], rbp
; Line 692
	cmp	r8, 216					; 000000d8H
	mov	eax, 3
	mov	ebp, 9
; Line 701
	mov	r8d, 4096				; 00001000H
	mov	rcx, r15
	cmovb	rbp, rax
	xor	edx, edx
	mov	QWORD PTR [rsp+104], r14
	call	memset
; Line 702
	lea	r14, QWORD PTR [rbx+rbp]
	lea	r9, QWORD PTR [rsi+16]
	mov	rdx, r14
	mov	r8, rdi
	mov	rcx, r12
	mov	QWORD PTR [rsp+32], r15
	call	qlz_compress_core
	lea	r11, QWORD PTR [rbp+rax]
; Line 706
	cmp	r11, rbp
	jne	SHORT $LN4@qlz_compre@2
; Line 708
	mov	r8, rdi
	mov	rdx, r12
	mov	rcx, r14
	call	memcpy
; Line 709
	lea	r11, QWORD PTR [rdi+rbp]
; Line 710
	xor	eax, eax
; Line 712
	jmp	SHORT $LN3@qlz_compre@2
$LN4@qlz_compre@2:
; Line 714
	mov	eax, 1
$LN3@qlz_compre@2:
	mov	r14, QWORD PTR [rsp+104]
; Line 738
	cmp	rbp, 3
	mov	rbp, QWORD PTR [rsp+96]
	mov	QWORD PTR [rsi+8], 0
	jne	SHORT $LN2@qlz_compre@2
; Line 740
	mov	BYTE PTR [rbx], al
; Line 752
	or	BYTE PTR [rbx], 76			; 0000004cH
	mov	BYTE PTR [rbx+1], r11b
; Line 758
	mov	rax, r11
	mov	BYTE PTR [rbx+2], dil
; Line 759
	mov	rbx, QWORD PTR [rsp+112]
	add	rsp, 48					; 00000030H
	pop	r15
	pop	r13
	pop	r12
	pop	rdi
	pop	rsi
	ret	0
$LN2@qlz_compre@2:
; Line 746
	or	al, 2
	mov	BYTE PTR [rbx], al
; Line 747
	mov	DWORD PTR [rbx+1], r11d
; Line 748
	mov	DWORD PTR [rbx+5], edi
; Line 752
	or	BYTE PTR [rbx], 76			; 0000004cH
; Line 758
	mov	rax, r11
; Line 759
	mov	rbx, QWORD PTR [rsp+112]
	add	rsp, 48					; 00000030H
	pop	r15
	pop	r13
	pop	r12
	pop	rdi
	pop	rsi
	ret	0
$LN7@qlz_compre@2:
; Line 690
	xor	eax, eax
; Line 759
	mov	rbx, QWORD PTR [rsp+112]
	add	rsp, 48					; 00000030H
	pop	r15
	pop	r13
	pop	r12
	pop	rdi
	pop	rsi
	ret	0
qlz_compress ENDP
_TEXT	ENDS
pdata	SEGMENT
$pdata$qlz_decompress_core DD imagerel qlz_decompress_core
	DD	imagerel qlz_decompress_core+437
	DD	imagerel $unwind$qlz_decompress_core
pdata	ENDS
xdata	SEGMENT
$unwind$qlz_decompress_core DD 0a1901H
	DD	0d7419H
	DD	0c6419H
	DD	0b5419H
	DD	0a3419H
	DD	0c0157219H
; Function compile flags: /Ogtpy
xdata	ENDS
_TEXT	SEGMENT
bitlut$ = 0
source$ = 80
destination$ = 88
size$ = 96
hashtable$ = 104
hash_counter$ = 112
history$ = 120
source_2$ = 128
qlz_decompress_core PROC
; Line 481
	mov	rax, rsp
	mov	QWORD PTR [rax+8], rbx
	mov	QWORD PTR [rax+16], rbp
	mov	QWORD PTR [rax+24], rsi
	mov	QWORD PTR [rax+32], rdi
	push	r12
	sub	rsp, 64					; 00000040H
; Line 486
	mov	DWORD PTR bitlut$[rsp], 4
	xor	r12d, r12d
	mov	r10d, 1
	lea	rdi, QWORD PTR [rdx+r8-1]
	mov	rbp, r8
	mov	r11, rdx
	mov	r9, rcx
	mov	DWORD PTR [rax-68], r12d
	mov	DWORD PTR [rax-64], r10d
; Line 487
	lea	rsi, QWORD PTR [rdi-10]
	mov	DWORD PTR [rax-60], r12d
	mov	DWORD PTR [rax-56], 2
	mov	DWORD PTR [rax-52], r12d
	mov	DWORD PTR [rax-48], r10d
	mov	DWORD PTR [rax-44], r12d
	mov	DWORD PTR [rax-40], 3
	mov	DWORD PTR [rax-36], r12d
	mov	DWORD PTR [rax-32], r10d
	mov	DWORD PTR [rax-28], r12d
	mov	DWORD PTR [rax-24], 2
	mov	DWORD PTR [rax-20], r12d
	mov	DWORD PTR [rax-16], r10d
	mov	DWORD PTR [rax-12], r12d
$LL18@qlz_decomp:
; Line 501
	cmp	r10d, 1
	jne	SHORT $LN16@qlz_decomp
; Line 507
	mov	r10d, DWORD PTR [r9]
; Line 508
	add	r9, 4
$LN16@qlz_decomp:
; Line 516
	mov	ecx, DWORD PTR [r9]
; Line 518
	test	r10b, 1
	je	$LN15@qlz_decomp
; Line 562
	shr	r10d, 1
; Line 563
	test	cl, 3
	jne	SHORT $LN14@qlz_decomp
; Line 565
	shr	ecx, 2
	and	ecx, 63					; 0000003fH
; Line 567
	inc	r9
	mov	eax, ecx
	mov	ecx, 3
	jmp	SHORT $LN7@qlz_decomp
$LN14@qlz_decomp:
; Line 571
	mov	eax, ecx
	test	cl, 2
	jne	SHORT $LN12@qlz_decomp
	shr	eax, 2
; Line 572
	mov	ecx, 3
	and	eax, 16383				; 00003fffH
; Line 573
	add	r9, 2
	jmp	SHORT $LN7@qlz_decomp
$LN12@qlz_decomp:
; Line 575
	test	cl, 1
	jne	SHORT $LN10@qlz_decomp
; Line 578
	shr	ecx, 2
	shr	eax, 6
	and	ecx, 15
	and	eax, 1023				; 000003ffH
	add	ecx, 3
; Line 579
	add	r9, 2
	jmp	SHORT $LN7@qlz_decomp
$LN10@qlz_decomp:
; Line 581
	and	eax, 127				; 0000007fH
	cmp	al, 3
; Line 583
	mov	eax, ecx
	je	SHORT $LN8@qlz_decomp
; Line 584
	shr	ecx, 2
	shr	eax, 7
	and	ecx, 31
	and	eax, 131071				; 0001ffffH
	add	ecx, 2
; Line 585
	add	r9, 3
; Line 587
	jmp	SHORT $LN7@qlz_decomp
$LN8@qlz_decomp:
; Line 590
	shr	ecx, 7
	shr	eax, 15
	movzx	ecx, cl
	add	ecx, 3
; Line 591
	add	r9, 4
$LN7@qlz_decomp:
; Line 594
	mov	rbx, r11
; Line 604
	mov	r8d, r12d
	mov	rdx, r11
	sub	rbx, rax
	sub	rbx, r11
	npad	7
$LL37@qlz_decomp:
	mov	eax, DWORD PTR [rbx+rdx]
	add	r8d, 3
	add	rdx, 3
	mov	DWORD PTR [rdx-3], eax
	cmp	r8d, ecx
	jb	SHORT $LL37@qlz_decomp
; Line 605
	mov	eax, ecx
	add	r11, rax
; Line 613
	jmp	$LL18@qlz_decomp
$LN15@qlz_decomp:
; Line 615
	cmp	r11, rsi
	jae	SHORT $LN42@qlz_decomp
; Line 622
	mov	eax, r10d
	mov	DWORD PTR [r11], ecx
	and	eax, 15
	mov	ecx, DWORD PTR bitlut$[rsp+rax*4]
	add	r11, rcx
; Line 623
	add	r9, rcx
; Line 624
	shr	r10d, cl
; Line 655
	jmp	$LL18@qlz_decomp
$LN42@qlz_decomp:
; Line 631
	cmp	r11, rdi
	ja	SHORT $LN47@qlz_decomp
$LL3@qlz_decomp:
; Line 633
	cmp	r10d, 1
	jne	SHORT $LN1@qlz_decomp
; Line 635
	add	r9, 4
; Line 636
	mov	r10d, -2147483648			; 80000000H
$LN1@qlz_decomp:
; Line 642
	movzx	eax, BYTE PTR [r9]
; Line 643
	inc	r11
; Line 644
	inc	r9
	mov	BYTE PTR [r11-1], al
; Line 645
	shr	r10d, 1
	cmp	r11, rdi
	jbe	SHORT $LL3@qlz_decomp
$LN47@qlz_decomp:
; Line 656
	mov	rbx, QWORD PTR [rsp+80]
	mov	rsi, QWORD PTR [rsp+96]
	mov	rdi, QWORD PTR [rsp+104]
	mov	rax, rbp
	mov	rbp, QWORD PTR [rsp+88]
	add	rsp, 64					; 00000040H
	pop	r12
	ret	0
qlz_decompress_core ENDP
_TEXT	ENDS
PUBLIC	qlz_decompress
pdata	SEGMENT
$pdata$qlz_decompress DD imagerel $LN12
	DD	imagerel $LN12+197
	DD	imagerel $unwind$qlz_decompress
pdata	ENDS
xdata	SEGMENT
$unwind$qlz_decompress DD 040a01H
	DD	0a340aH
	DD	07006720aH
; Function compile flags: /Ogtpy
xdata	ENDS
_TEXT	SEGMENT
source$ = 80
destination$ = 88
scratch_compress$ = 96
qlz_decompress PROC
; Line 762
$LN12:
	mov	QWORD PTR [rsp+8], rbx
	push	rdi
	sub	rsp, 64					; 00000040H
; Line 763
	mov	rax, r8
	mov	rdi, r8
	mov	r9, rcx
	and	eax, 7
; Line 778
	mov	r11d, 4
	mov	r10, rdx
	sub	rdi, rax
	movzx	eax, BYTE PTR [rcx]
	mov	ecx, 1
	and	al, 2
	cmp	al, 2
	cmove	ecx, r11d
; Line 779
	lea	eax, DWORD PTR [rcx-1]
	lea	r8d, DWORD PTR [rcx+rcx+1]
	cmp	eax, 3
	ja	SHORT $LN8@qlz_decomp@2
	mov	edx, DWORD PTR [rcx+r9+1]
	jmp	SHORT $LN7@qlz_decomp@2
$LN8@qlz_decomp@2:
	xor	edx, edx
$LN7@qlz_decomp@2:
	sub	r11d, ecx
	mov	ebx, -1					; ffffffffH
	mov	eax, edx
	mov	ecx, r11d
	shl	ecx, 3
	shr	rbx, cl
	and	rbx, rax
; Line 785
	test	BYTE PTR [r9], 1
	je	SHORT $LN2@qlz_decomp@2
; Line 790
	mov	QWORD PTR [rsp+48], r9
	mov	ecx, r8d
	mov	QWORD PTR [rsp+40], r10
	add	rcx, r9
	mov	r8, rbx
	mov	rdx, r10
	xor	r9d, r9d
	mov	QWORD PTR [rsp+32], 0
	call	qlz_decompress_core
; Line 796
	mov	QWORD PTR [rdi+8], 0
; Line 820
	mov	rbx, QWORD PTR [rsp+80]
	add	rsp, 64					; 00000040H
	pop	rdi
	ret	0
$LN2@qlz_decomp@2:
; Line 794
	mov	edx, r8d
	mov	rcx, r10
	mov	r8, rbx
	add	rdx, r9
	call	memcpy
; Line 819
	mov	rax, rbx
; Line 820
	mov	rbx, QWORD PTR [rsp+80]
	mov	QWORD PTR [rdi+8], 0
	add	rsp, 64					; 00000040H
	pop	rdi
	ret	0
qlz_decompress ENDP
_TEXT	ENDS
END
