Function at 0x465150
Capabilities:
Compress data via zlib inflate or deflate

Disassembly:
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x28
mov eax, 0xfffffffe
test rcx, rcx
mov rsi, rcx
mov ebp, edx
je 0x465e54
mov rbx, qword [rcx + 0x28]
test rbx, rbx
je 0x465e54
cmp edx, 5
ja 0x465e54
cmp qword [rcx + 0x10], 0
je 0x4651ae
cmp dword [rcx + 8], 0
je 0x465198
cmp qword [rcx], 0
je 0x4651ae
mov eax, dword [rbx + 8]
cmp ebp, 4
setne dil
cmp eax, 0x29a
jne 0x4651c7
test dil, dil
je 0x4651c7
mov rax, qword [0x0048e570]
mov rax, qword [rax + 0x20]
mov qword [rsi + 0x20], rax
mov eax, 0xfffffffe
jmp 0x465e54
cmp dword [rsi + 0x18], 0
je 0x465801
cmp eax, 0x2a
mov r12d, dword [rbx + 0x40]
mov qword [rbx], rsi
mov dword [rbx + 0x40], ebp
jne 0x4654e2
cmp dword [rbx + 0x2c], 2
jne 0x465445
xor r8d, r8d
xor edx, edx
xor ecx, ecx
call sym.crc32
mov dword [rsi + 0x4c], eax
mov eax, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x10]
lea ecx, [rax + 1]
mov dword [rbx + 0x28], ecx
mov byte [rdx + rax], 0x1f
mov eax, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x10]
lea ecx, [rax + 1]
mov dword [rbx + 0x28], ecx
mov byte [rdx + rax], 0x8b
mov eax, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x10]
lea ecx, [rax + 1]
mov dword [rbx + 0x28], ecx
mov byte [rdx + rax], 8
mov rdx, qword [rbx + 0x30]
mov r8, qword [rbx + 0x10]
mov eax, dword [rbx + 0x28]
test rdx, rdx
jne 0x4652df
lea edx, [rax + 1]
mov dword [rbx + 0x28], edx
mov byte [r8 + rax], 0
mov eax, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x10]
lea ecx, [rax + 1]
mov dword [rbx + 0x28], ecx
mov byte [rdx + rax], 0
mov eax, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x10]
lea ecx, [rax + 1]
mov dword [rbx + 0x28], ecx
mov byte [rdx + rax], 0
mov eax, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x10]
lea ecx, [rax + 1]
mov dword [rbx + 0x28], ecx
mov byte [rdx + rax], 0
mov eax, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x10]
lea ecx, [rax + 1]
mov dword [rbx + 0x28], ecx
mov byte [rdx + rax], 0
mov eax, dword [rbx + 0x28]
mov ecx, dword [rbx + 0xac]
lea edx, [rax + 1]
add rax, qword [rbx + 0x10]
cmp ecx, 9
mov dword [rbx + 0x28], edx
mov dl, 2
je 0x4652c0
cmp dword [rbx + 0xb0], 1
jg 0x4652be
dec ecx
jle 0x4652be
xor edx, edx
jmp 0x4652c0
mov dl, 4
mov byte [rax], dl
mov eax, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x10]
lea ecx, [rax + 1]
mov dword [rbx + 0x28], ecx
mov byte [rdx + rax], 3
mov dword [rbx + 8], 0x71
jmp 0x4654e2
cmp dword [rdx], 0
lea ecx, [rax + 1]
mov dword [rbx + 0x28], ecx
mov ecx, eax
setne al
cmp dword [rdx + 0x3c], 1
sbb r9d, r9d
not r9d
and r9d, 2
add eax, r9d
cmp qword [rdx + 0x10], 1
sbb r9d, r9d
not r9d
and r9d, 4
add eax, r9d
cmp qword [rdx + 0x20], 1
sbb r9d, r9d
not r9d
and r9d, 8
add eax, r9d
cmp qword [rdx + 0x30], 1
sbb edx, edx
not edx
and edx, 0x10
add eax, edx
mov byte [r8 + rcx], al
mov eax, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x10]
lea ecx, [rax + 1]
mov dword [rbx + 0x28], ecx
mov rcx, qword [rbx + 0x30]
mov ecx, dword [rcx + 4]
mov byte [rdx + rax], cl
mov eax, dword [rbx + 0x28]
mov rcx, qword [rbx + 0x10]
lea edx, [rax + 1]
mov dword [rbx + 0x28], edx
mov rdx, qword [rbx + 0x30]
mov edx, dword [rdx + 4]
shr edx, 8
mov byte [rcx + rax], dl
mov eax, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x10]
lea ecx, [rax + 1]
mov dword [rbx + 0x28], ecx
mov rcx, qword [rbx + 0x30]
movzx ecx, word [rcx + 6]
mov byte [rdx + rax], cl
mov eax, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x10]
lea ecx, [rax + 1]
mov dword [rbx + 0x28], ecx
mov rcx, qword [rbx + 0x30]
movzx ecx, byte [rcx + 7]
mov byte [rdx + rax], cl
mov eax, dword [rbx + 0x28]
lea edx, [rax + 1]
mov dword [rbx + 0x28], edx
mov ecx, dword [rbx + 0xac]
mov dl, 2
add rax, qword [rbx + 0x10]
cmp ecx, 9
je 0x4653c2
cmp dword [rbx + 0xb0], 1
jg 0x4653c0
dec ecx
jle 0x4653c0
xor edx, edx
jmp 0x4653c2
mov dl, 4
mov byte [rax], dl
mov eax, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x10]
lea ecx, [rax + 1]
mov dword [rbx + 0x28], ecx
mov rcx, qword [rbx + 0x30]
mov ecx, dword [rcx + 0xc]
mov byte [rdx + rax], cl
mov rdx, qword [rbx + 0x30]
cmp qword [rdx + 0x10], 0
je 0x465415
mov eax, dword [rbx + 0x28]
mov edx, dword [rdx + 0x18]
mov rcx, qword [rbx + 0x10]
lea r8d, [rax + 1]
mov dword [rbx + 0x28], r8d
mov byte [rcx + rax], dl
mov eax, dword [rbx + 0x28]
mov rcx, qword [rbx + 0x10]
lea edx, [rax + 1]
mov dword [rbx + 0x28], edx
mov rdx, qword [rbx + 0x30]
mov edx, dword [rdx + 0x18]
shr edx, 8
mov byte [rcx + rax], dl
mov rax, qword [rbx + 0x30]
cmp dword [rax + 0x3c], 0
je 0x465432
mov rdx, qword [rbx + 0x10]
mov ecx, dword [rsi + 0x4c]
mov r8d, dword [rbx + 0x28]
call sym.crc32
mov dword [rsi + 0x4c], eax
mov dword [rbx + 0x38], 0
mov dword [rbx + 8], 0x45
jmp 0x4654e2
mov eax, dword [rbx + 0x48]
xor ecx, ecx
shl eax, 0xc
sub eax, 0x7800
cmp dword [rbx + 0xb0], 1
jg 0x46547b
mov edx, dword [rbx + 0xac]
cmp edx, 1
jle 0x46547b
cmp edx, 5
mov ecx, 1
jle 0x46547b
xor ecx, ecx
cmp edx, 6
setne cl
add ecx, 2
shl ecx, 6
mov r8d, 0x1f
mov dword [rbx + 8], 0x71
or ecx, eax
mov eax, ecx
or eax, 0x20
cmp dword [rbx + 0x94], 0
cmovne ecx, eax
xor edx, edx
mov eax, ecx
add ecx, 0x1f
div r8d
sub ecx, edx
mov edx, ecx
mov rcx, rbx
call sym.putShortMSB
cmp dword [rbx + 0x94], 0
je 0x4654d3
movzx edx, word [rsi + 0x4e]
mov rcx, rbx
call sym.putShortMSB
movzx edx, word [rsi + 0x4c]
mov rcx, rbx
call sym.putShortMSB
xor r8d, r8d
xor edx, edx
xor ecx, ecx
call sym.adler32
mov dword [rsi + 0x4c], eax
cmp dword [rbx + 8], 0x45
jne 0x4655ad
mov rax, qword [rbx + 0x30]
cmp qword [rax + 0x10], 0
je 0x4655a6
mov eax, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x30]
movzx ecx, word [rdx + 0x18]
cmp dword [rbx + 0x38], ecx
jae 0x46556c
mov r8d, dword [rbx + 0x28]
cmp r8d, dword [rbx + 0x18]
jne 0x465544
cmp dword [rdx + 0x3c], 0
je 0x465534
cmp eax, r8d
jae 0x465534
mov edx, eax
add rdx, qword [rbx + 0x10]
mov ecx, dword [rsi + 0x4c]
sub r8d, eax
call sym.crc32
mov dword [rsi + 0x4c], eax
mov rcx, rsi
call sym.flush_pending
mov eax, dword [rbx + 0x28]
cmp eax, dword [rbx + 0x18]
je 0x46556c
mov edx, dword [rbx + 0x28]
mov r9, qword [rbx + 0x30]
mov rcx, qword [rbx + 0x10]
mov r9, qword [r9 + 0x10]
lea r8d, [rdx + 1]
mov dword [rbx + 0x28], r8d
mov r8d, dword [rbx + 0x38]
mov r8b, byte [r9 + r8]
mov byte [rcx + rdx], r8b
inc dword [rbx + 0x38]
jmp 0x4654fe
mov rdx, qword [rbx + 0x30]
cmp dword [rdx + 0x3c], 0
je 0x465593
mov r8d, dword [rbx + 0x28]
cmp eax, r8d
jae 0x465593
mov edx, eax
add rdx, qword [rbx + 0x10]
mov ecx, dword [rsi + 0x4c]
sub r8d, eax
call sym.crc32
mov dword [rsi + 0x4c], eax
mov rax, qword [rbx + 0x30]
mov eax, dword [rax + 0x18]
cmp dword [rbx + 0x38], eax
jne 0x4655ad
mov dword [rbx + 0x38], 0
mov dword [rbx + 8], 0x49
cmp dword [rbx + 8], 0x49
jne 0x465678
mov rax, qword [rbx + 0x30]
cmp qword [rax + 0x20], 0
je 0x465671
mov eax, dword [rbx + 0x28]
mov r8d, dword [rbx + 0x28]
cmp r8d, dword [rbx + 0x18]
jne 0x465606
mov rdx, qword [rbx + 0x30]
cmp dword [rdx + 0x3c], 0
je 0x4655f6
cmp eax, r8d
jae 0x4655f6
mov edx, eax
add rdx, qword [rbx + 0x10]
mov ecx, dword [rsi + 0x4c]
sub r8d, eax
call sym.crc32
mov dword [rsi + 0x4c], eax
mov rcx, rsi
call sym.flush_pending
mov eax, dword [rbx + 0x28]
cmp eax, dword [rbx + 0x18]
je 0x465638
mov rdx, qword [rbx + 0x30]
mov rcx, qword [rdx + 0x20]
mov edx, dword [rbx + 0x38]
lea r8d, [rdx + 1]
mov dword [rbx + 0x38], r8d
mov cl, byte [rcx + rdx]
mov edx, dword [rbx + 0x28]
mov r8, qword [rbx + 0x10]
test cl, cl
lea r9d, [rdx + 1]
mov dword [rbx + 0x28], r9d
mov byte [r8 + rdx], cl
jne 0x4655c9
xor r13d, r13d
jmp 0x46563e
mov r13d, 1
mov rdx, qword [rbx + 0x30]
cmp dword [rdx + 0x3c], 0
je 0x465665
mov r8d, dword [rbx + 0x28]
cmp eax, r8d
jae 0x465665
mov edx, eax
add rdx, qword [rbx + 0x10]
mov ecx, dword [rsi + 0x4c]
sub r8d, eax
call sym.crc32
mov dword [rsi + 0x4c], eax
test r13d, r13d
jne 0x465678
mov dword [rbx + 0x38], 0
mov dword [rbx + 8], 0x5b
cmp dword [rbx + 8], 0x5b
jne 0x46573c
mov rax, qword [rbx + 0x30]
cmp qword [rax + 0x30], 0
je 0x465735
mov eax, dword [rbx + 0x28]
mov r8d, dword [rbx + 0x28]
cmp r8d, dword [rbx + 0x18]
jne 0x4656d1
mov rdx, qword [rbx + 0x30]
cmp dword [rdx + 0x3c], 0
je 0x4656c1
cmp eax, r8d
jae 0x4656c1
mov edx, eax
add rdx, qword [rbx + 0x10]
mov ecx, dword [rsi + 0x4c]
sub r8d, eax
call sym.crc32
mov dword [rsi + 0x4c], eax
mov rcx, rsi
call sym.flush_pending
mov eax, dword [rbx + 0x28]
cmp eax, dword [rbx + 0x18]
je 0x465703
mov rdx, qword [rbx + 0x30]
mov rcx, qword [rdx + 0x30]
mov edx, dword [rbx + 0x38]
lea r8d, [rdx + 1]
mov dword [rbx + 0x38], r8d
mov cl, byte [rcx + rdx]
mov edx, dword [rbx + 0x28]
mov r8, qword [rbx + 0x10]
test cl, cl
lea r9d, [rdx + 1]
mov dword [rbx + 0x28], r9d
mov byte [r8 + rdx], cl
jne 0x465694
xor r13d, r13d
jmp 0x465709
mov r13d, 1
mov rdx, qword [rbx + 0x30]
cmp dword [rdx + 0x3c], 0
je 0x465730
mov r8d, dword [rbx + 0x28]
cmp eax, r8d
jae 0x465730
mov edx, eax
add rdx, qword [rbx + 0x10]
mov ecx, dword [rsi + 0x4c]
sub r8d, eax
call sym.crc32
mov dword [rsi + 0x4c], eax
test r13d, r13d
jne 0x46573c
mov dword [rbx + 8], 0x67
cmp dword [rbx + 8], 0x67
jne 0x4657a6
mov rax, qword [rbx + 0x30]
cmp dword [rax + 0x3c], 0
je 0x46579f
mov eax, dword [rbx + 0x28]
add eax, 2
cmp eax, dword [rbx + 0x18]
jbe 0x46575f
mov rcx, rsi
call sym.flush_pending
mov eax, dword [rbx + 0x28]
lea edx, [rax + 2]
cmp edx, dword [rbx + 0x18]
ja 0x4657a6
lea ecx, [rax + 1]
mov rdx, qword [rbx + 0x10]
xor r8d, r8d
mov dword [rbx + 0x28], ecx
mov ecx, dword [rsi + 0x4c]
mov byte [rdx + rax], cl
mov eax, dword [rbx + 0x28]
mov rcx, qword [rbx + 0x10]
lea edx, [rax + 1]
mov dword [rbx + 0x28], edx
mov edx, dword [rsi + 0x4c]
shr edx, 8
mov byte [rcx + rax], dl
xor edx, edx
xor ecx, ecx
call sym.crc32
mov dword [rsi + 0x4c], eax
mov dword [rbx + 8], 0x71
cmp dword [rbx + 0x28], 0
je 0x4657bf
mov rcx, rsi
call sym.flush_pending
cmp dword [rsi + 0x18], 0
jne 0x4657f1
jmp 0x465d4e
cmp dword [rsi + 8], 0
jne 0x4657f1
xor eax, eax
cmp ebp, 5
lea ecx, [rbp + rbp]
sete al
lea edx, [r12 + r12]
lea eax, [rax + rax*8]
sub ecx, eax
xor eax, eax
cmp r12d, 4
setg al
lea eax, [rax + rax*8]
sub edx, eax
cmp ecx, edx
jg 0x4657f1
test dil, dil
jne 0x465801
mov eax, dword [rbx + 8]
cmp eax, 0x29a
jne 0x46581a
cmp dword [rsi + 8], 0
je 0x46581a
mov rax, qword [0x0048e570]
mov rax, qword [rax + 0x38]
mov qword [rsi + 0x20], rax
mov eax, 0xfffffffb
jmp 0x465e54
cmp dword [rsi + 8], 0
jne 0x46583c
cmp dword [rbx + 0x9c], 0
jne 0x46583c
test ebp, ebp
je 0x465d55
cmp eax, 0x29a
je 0x465d5c
mov eax, dword [rbx + 0xb0]
cmp eax, 2
jne 0x465931
cmp dword [rbx + 0x9c], 0
jne 0x465874
mov rcx, rbx
call sym.fill_window
cmp dword [rbx + 0x9c], 0
jne 0x465874
test ebp, ebp
jne 0x465978
xor eax, eax
jmp 0x465ca9
mov eax, dword [rbx + 0x94]
mov rdx, qword [rbx + 0x50]
mov ecx, dword [rbx + 0x16f4]
mov r8, qword [rbx + 0x16f8]
mov dword [rbx + 0x88], 0
movzx eax, byte [rdx + rax]
mov word [r8 + rcx*2], 0
mov r8, qword [rbx + 0x16e8]
mov rdx, rcx
inc edx
mov dword [rbx + 0x16f4], edx
mov byte [r8 + rcx], al
inc word [rbx + rax*4 + 0xbc]
mov eax, dword [rbx + 0x16f0]
mov edi, dword [rbx + 0x94]
dec dword [rbx + 0x9c]
dec eax
cmp dword [rbx + 0x16f4], eax
lea r8d, [rdi + 1]
mov dword [rbx + 0x94], r8d
jne 0x46584b
movsxd rax, dword [rbx + 0x84]
xor edx, edx
sub r8d, eax
test eax, eax
js 0x465900
add rax, qword [rbx + 0x50]
mov rdx, rax
xor r9d, r9d
mov rcx, rbx
call sym._tr_flush_block
mov eax, dword [rbx + 0x94]
mov rcx, qword [rbx]
mov dword [rbx + 0x84], eax
call sym.flush_pending
mov rax, qword [rbx]
cmp dword [rax + 0x18], 0
jne 0x46584b
jmp 0x46586d
cmp eax, 3
jne 0x465c8d
mov edi, 0x102
cmp dword [rbx + 0x9c], 0x102
ja 0x4659fb
mov rcx, rbx
call sym.fill_window
mov eax, dword [rbx + 0x9c]
cmp eax, 0x102
ja 0x4659fb
test ebp, ebp
je 0x46586d
test eax, eax
jne 0x4659fb
cmp ebp, 4
mov dword [rbx + 0x170c], 0
jne 0x4659e4
movsxd rax, dword [rbx + 0x84]
mov r8d, dword [rbx + 0x94]
xor edx, edx
sub r8d, eax
test eax, eax
js 0x4659a5
add rax, qword [rbx + 0x50]
mov rdx, rax
mov r9d, 1
mov rcx, rbx
call sym._tr_flush_block
mov eax, dword [rbx + 0x94]
mov rcx, qword [rbx]
mov dword [rbx + 0x84], eax
call sym.flush_pending
mov rax, qword [rbx]
cmp dword [rax + 0x18], 0
jne 0x4659da
mov eax, 2
jmp 0x465ca9
mov eax, 3
jmp 0x465ca9
cmp dword [rbx + 0x16f4], 0
mov eax, 1
jne 0x465c41
jmp 0x465ca9
mov edx, dword [rbx + 0x9c]
mov dword [rbx + 0x88], 0
mov r9, qword [rbx + 0x50]
cmp edx, 2
jbe 0x465b8d
mov r8d, dword [rbx + 0x94]
test r8d, r8d
je 0x465b8d
lea rax, [r9 + r8 - 1]
mov r11b, byte [rax]
cmp byte [rax + 1], r11b
movzx ecx, byte [rax]
jne 0x465b8d
movzx r10d, byte [rax + 2]
cmp ecx, r10d
jne 0x465b8d
movzx r10d, byte [rax + 3]
cmp ecx, r10d
jne 0x465b8d
lea r8, [r9 + r8 + 0x102]
add rax, 3
movzx r10d, byte [rax + 1]
cmp ecx, r10d
je 0x465a74
inc rax
jmp 0x465aea
movzx r10d, byte [rax + 2]
cmp ecx, r10d
je 0x465a84
add rax, 2
jmp 0x465aea
movzx r10d, byte [rax + 3]
cmp ecx, r10d
je 0x465a94
add rax, 3
jmp 0x465aea
movzx r10d, byte [rax + 4]
cmp ecx, r10d
je 0x465aa4
add rax, 4
jmp 0x465aea
movzx r10d, byte [rax + 5]
cmp ecx, r10d
je 0x465ab4
add rax, 5
jmp 0x465aea
movzx r10d, byte [rax + 6]
cmp ecx, r10d
je 0x465ac4
add rax, 6
jmp 0x465aea
movzx r10d, byte [rax + 7]
cmp ecx, r10d
je 0x465ad4
add rax, 7
jmp 0x465aea
add rax, 8
movzx r10d, byte [rax]
cmp r10d, ecx
jne 0x465aea
cmp rax, r8
jb 0x465a65
sub r8, rax
mov eax, edi
sub eax, r8d
cmp edx, eax
cmovb eax, edx
cmp eax, 2
mov dword [rbx + 0x88], eax
jbe 0x465b8d
mov ecx, dword [rbx + 0x16f4]
mov r8, qword [rbx + 0x16f8]
sub eax, 3
mov word [r8 + rcx*2], 1
mov r8, qword [rbx + 0x16e8]
mov rdx, rcx
inc edx
mov dword [rbx + 0x16f4], edx
mov byte [r8 + rcx], al
mov rcx, qword [0x0048e3d0]
movzx eax, al
movzx eax, byte [rcx + rax]
inc word [rbx + rax*4 + 0x4c0]
mov rax, qword [0x0048e390]
movzx eax, byte [rax]
inc word [rbx + rax*4 + 0x9b0]
mov eax, dword [rbx + 0x16f0]
mov edx, dword [rbx + 0x88]
mov dword [rbx + 0x88], 0
dec eax
cmp eax, dword [rbx + 0x16f4]
sete al
sub dword [rbx + 0x9c], edx
add dword [rbx + 0x94], edx
movzx eax, al
jmp 0x465bea
mov eax, dword [rbx + 0x94]
mov ecx, dword [rbx + 0x16f4]
mov r8, qword [rbx + 0x16f8]
movzx eax, byte [r9 + rax]
mov word [r8 + rcx*2], 0
mov rdx, rcx
mov r8, qword [rbx + 0x16e8]
inc edx
mov dword [rbx + 0x16f4], edx
mov byte [r8 + rcx], al
inc word [rbx + rax*4 + 0xbc]
mov eax, dword [rbx + 0x16f0]
dec eax
cmp eax, dword [rbx + 0x16f4]
sete al
dec dword [rbx + 0x9c]
inc dword [rbx + 0x94]
movzx eax, al
test eax, eax
je 0x46593f
movsxd rax, dword [rbx + 0x84]
mov r8d, dword [rbx + 0x94]
xor edx, edx
sub r8d, eax
test eax, eax
js 0x465c10
add rax, qword [rbx + 0x50]
mov rdx, rax
xor r9d, r9d
mov rcx, rbx
call sym._tr_flush_block
mov eax, dword [rbx + 0x94]
mov rcx, qword [rbx]
mov dword [rbx + 0x84], eax
call sym.flush_pending
mov rax, qword [rbx]
cmp dword [rax + 0x18], 0
jne 0x46593f
jmp 0x46586d
movsxd rax, dword [rbx + 0x84]
mov r8d, dword [rbx + 0x94]
xor edx, edx
sub r8d, eax
test eax, eax
js 0x465c5f
add rax, qword [rbx + 0x50]
mov rdx, rax
xor r9d, r9d
mov rcx, rbx
call sym._tr_flush_block
mov eax, dword [rbx + 0x94]
mov rcx, qword [rbx]
mov dword [rbx + 0x84], eax
call sym.flush_pending
mov rax, qword [rbx]
cmp dword [rax + 0x18], 0
setne al
movzx eax, al
jmp 0x465ca9
movsxd rax, dword [rbx + 0xac]
lea r8, [0x00489cc0]
mov edx, ebp
mov rcx, rbx
shl rax, 4
call qword [r8 + rax + 8]
lea edx, [rax - 2]
cmp edx, 1
ja 0x465cb8
mov dword [rbx + 8], 0x29a
test eax, 0xfffffffd
jne 0x465cce
cmp dword [rsi + 0x18], 0
jne 0x465d55
jmp 0x465d4e
dec eax
jne 0x465d5c
cmp ebp, 1
jne 0x465ce5
mov rcx, rbx
call sym._tr_align
jmp 0x465d40
cmp ebp, 5
je 0x465d40
xor r9d, r9d
xor r8d, r8d
xor edx, edx
mov rcx, rbx
call sym._tr_stored_block
cmp ebp, 3
jne 0x465d40
mov eax, dword [rbx + 0x74]
mov rdx, qword [rbx + 0x68]
lea ecx, [rax - 1]
mov rdi, rdx
xor eax, eax
add rcx, rcx
mov word [rdx + rcx], 0
rep stosb byte [rdi], al
cmp dword [rbx + 0x9c], 0
jne 0x465d40
mov dword [rbx + 0x94], 0
mov dword [rbx + 0x84], 0
mov dword [rbx + 0x170c], 0
mov rcx, rsi
call sym.flush_pending
cmp dword [rsi + 0x18], 0
jne 0x465d5c
mov dword [rbx + 0x40], 0xffffffff
xor eax, eax
jmp 0x465e54
cmp ebp, 4
jne 0x465d55
mov edx, dword [rbx + 0x2c]
mov eax, 1
test edx, edx
jle 0x465e54
cmp edx, 2
mov edx, dword [rsi + 0x4c]
jne 0x465e20
mov eax, dword [rbx + 0x28]
mov rcx, qword [rbx + 0x10]
lea r8d, [rax + 1]
mov dword [rbx + 0x28], r8d
mov byte [rcx + rax], dl
mov eax, dword [rbx + 0x28]
mov rcx, qword [rbx + 0x10]
lea edx, [rax + 1]
mov dword [rbx + 0x28], edx
mov edx, dword [rsi + 0x4c]
shr edx, 8
mov byte [rcx + rax], dl
mov eax, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x10]
lea ecx, [rax + 1]
mov dword [rbx + 0x28], ecx
movzx ecx, word [rsi + 0x4e]
mov byte [rdx + rax], cl
mov eax, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x10]
lea ecx, [rax + 1]
mov dword [rbx + 0x28], ecx
movzx ecx, byte [rsi + 0x4f]
mov byte [rdx + rax], cl
mov eax, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x10]
lea ecx, [rax + 1]
mov dword [rbx + 0x28], ecx
mov ecx, dword [rsi + 0xc]
mov byte [rdx + rax], cl
mov eax, dword [rbx + 0x28]
mov rcx, qword [rbx + 0x10]
lea edx, [rax + 1]
mov dword [rbx + 0x28], edx
mov edx, dword [rsi + 0xc]
shr edx, 8
mov byte [rcx + rax], dl
mov eax, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x10]
lea ecx, [rax + 1]
mov dword [rbx + 0x28], ecx
movzx ecx, word [rsi + 0xe]
mov byte [rdx + rax], cl
mov eax, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x10]
lea ecx, [rax + 1]
mov dword [rbx + 0x28], ecx
movzx ecx, byte [rsi + 0xf]
mov byte [rdx + rax], cl
jmp 0x465e37
shr edx, 0x10
mov rcx, rbx
call sym.putShortMSB
movzx edx, word [rsi + 0x4c]
mov rcx, rbx
call sym.putShortMSB
mov rcx, rsi
call sym.flush_pending
mov eax, dword [rbx + 0x2c]
test eax, eax
jle 0x465e4b
neg eax
mov dword [rbx + 0x2c], eax
xor eax, eax
cmp dword [rbx + 0x28], 0
sete al
add rsp, 0x28
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
ret