Function at 0x6961f780
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0xd8
mov rbx, rcx
test edx, edx
jne 0x696211e0
mov qword [rbx + 0x10], 0
xor eax, eax
xor r8d, r8d
nop dword [rax + rax]
test r8d, r8d
jg 0x6961f806
mov r10, qword [rbx + 8]
mov rdx, qword [rbx]
mov ecx, r8d
cmp r10, rdx
jbe 0x6961f7e8
lea r9, [rdx + 1]
mov qword [rbx], r9
movzx edx, byte [rdx]
shl edx, cl
add ecx, 8
or eax, edx
mov dword [rbx + 0x10], ecx
mov dword [rbx + 0x14], eax
cmp ecx, 0x18
jg 0x6961f7f6
mov rdx, r9
cmp r10, rdx
ja 0x6961f7c4
add ecx, 8
mov dword [rbx + 0x14], eax
mov dword [rbx + 0x10], ecx
cmp ecx, 0x18
jle 0x6961f7bf
mov edx, 0x18
sub edx, r8d
and edx, 0xfffffff8
lea r8d, [r8 + rdx + 8]
mov esi, eax
lea edx, [r8 - 1]
shr eax, 1
and esi, 1
mov dword [rbx + 0x14], eax
mov dword [rsp + 0x28], esi
mov dword [rbx + 0x10], edx
cmp edx, 1
jg 0x6961f873
mov r11, qword [rbx + 8]
mov rcx, qword [rbx]
cmp r11, rcx
jbe 0x6961f855
lea r10, [rcx + 1]
mov qword [rbx], r10
movzx r9d, byte [rcx]
mov ecx, edx
add edx, 8
mov dword [rbx + 0x10], edx
shl r9d, cl
or eax, r9d
mov dword [rbx + 0x14], eax
cmp edx, 0x18
jg 0x6961f863
mov rcx, r10
cmp r11, rcx
ja 0x6961f82c
add edx, 8
mov dword [rbx + 0x14], eax
mov dword [rbx + 0x10], edx
cmp edx, 0x18
jle 0x6961f827
mov edx, 0x19
sub edx, r8d
and edx, 0xfffffff8
lea edx, [r8 + rdx + 7]
mov r9d, eax
lea r8d, [rdx - 2]
shr r9d, 2
mov dword [rbx + 0x10], r8d
mov dword [rbx + 0x14], r9d
and eax, 3
je 0x6961feb8
cmp eax, 3
je 0x69621190
cmp eax, 1
jne 0x69620610
cmp byte [0x696336df], 0
je 0x69620d90
lea rdi, [rbx + 0x3c]
mov eax, ebx
lea r9, [0x69633580]
mov qword [rsp + 0x80], 0
and rdi, 0xfffffffffffffff8
mov qword [rsp + 0x88], 0
lea r8, [rsp + 0x80]
sub eax, edi
mov qword [rsp + 0x90], 0
lea ecx, [rax + 0x434]
xor eax, eax
mov qword [rsp + 0x98], 0
shr ecx, 3
mov qword [rsp + 0xa0], 0
mov qword [rsp + 0xa8], 0
mov qword [rsp + 0xb0], 0
mov qword [rsp + 0xb8], 0
mov dword [rsp + 0xc0], 0
mov qword [rbx + 0x34], 0
mov qword [rbx + 0x42c], 0
rep stosq qword [rdi], rax
mov rax, r9
lea rcx, [r9 + 0x120]
nop
movzx edx, byte [rax]
add rax, 1
add dword [rsp + rdx*4 + 0x80], 1
cmp rcx, rax
jne 0x6961f960
mov ecx, dword [rsp + 0x84]
mov dword [rsp + 0x80], 0
cmp ecx, 2
jg 0x69620c80
mov edx, dword [rsp + 0x88]
cmp edx, 4
jg 0x69620c80
mov r10d, dword [rsp + 0x8c]
cmp r10d, 8
jg 0x69620c80
mov r11d, dword [rsp + 0x90]
cmp r11d, 0x10
jg 0x69620c80
mov edi, dword [rsp + 0x94]
cmp edi, 0x20
jg 0x69620c80
mov esi, dword [rsp + 0x98]
cmp esi, 0x40
jg 0x69620c80
mov r12d, dword [rsp + 0x9c]
cmp r12d, 0x80
jg 0x69620c80
mov r13d, dword [rsp + 0xa0]
cmp r13d, 0x100
jg 0x69620c80
mov ebp, dword [rsp + 0xa4]
cmp ebp, 0x200
jg 0x69620c80
mov eax, dword [rsp + 0xa8]
mov dword [rsp + 0x2c], eax
cmp eax, 0x400
jg 0x69620c80
mov eax, dword [rsp + 0xac]
mov dword [rsp + 0x30], eax
cmp eax, 0x800
jg 0x69620c80
mov r14d, dword [rsp + 0xb0]
cmp r14d, 0x1000
jg 0x69620c80
mov eax, dword [rsp + 0xb4]
mov dword [rsp + 0x34], eax
cmp eax, 0x2000
jg 0x69620c80
mov eax, dword [rsp + 0xb8]
mov dword [rsp + 0x38], eax
cmp eax, 0x4000
jg 0x69620c80
mov eax, dword [rsp + 0xbc]
mov dword [rsp + 0x3c], eax
cmp eax, 0x8000
jg 0x69620c80
xor eax, eax
mov dword [rsp + 0x44], 0
mov word [rbx + 0x436], ax
xor eax, eax
mov word [rbx + 0x49a], ax
mov eax, ecx
shl eax, 0xf
mov word [rbx + 0x49c], cx
mov dword [rbx + 0x458], eax
lea eax, [rcx + rcx]
mov dword [rsp + 0x48], eax
mov word [rbx + 0x438], ax
add eax, edx
cmp eax, 4
jle 0x6961faec
test edx, edx
jne 0x69620d30
mov r15d, eax
add edx, ecx
add eax, eax
shl r15d, 0xe
mov dword [rsp + 0x4c], eax
mov word [rbx + 0x43a], ax
add eax, r10d
mov dword [rbx + 0x45c], r15d
mov word [rbx + 0x49e], dx
test r10d, r10d
je 0x6961fb21
cmp eax, 8
jg 0x69620d30
mov ecx, eax
add eax, eax
add edx, r10d
mov dword [rsp + 0x50], eax
shl ecx, 0xd
mov word [rbx + 0x43c], ax
add eax, r11d
mov dword [rbx + 0x460], ecx
mov word [rbx + 0x4a0], dx
cmp eax, 0x10
jle 0x6961fb54
test r11d, r11d
jne 0x69620d30
mov ecx, eax
add eax, eax
add edx, r11d
mov dword [rsp + 0x54], eax
shl ecx, 0xc
mov word [rbx + 0x43e], ax
add eax, edi
mov dword [rbx + 0x464], ecx
mov word [rbx + 0x4a2], dx
cmp eax, 0x20
jle 0x6961fb85
test edi, edi
jne 0x69620d30
mov ecx, eax
add edx, edi
add eax, eax
shl ecx, 0xb
mov dword [rsp + 0x58], eax
mov word [rbx + 0x440], ax
add eax, esi
mov dword [rbx + 0x468], ecx
mov word [rbx + 0x4a4], dx
test esi, esi
je 0x6961fbb5
cmp eax, 0x40
jg 0x69620d30
mov ecx, eax
add eax, eax
add edx, esi
mov dword [rsp + 0x5c], eax
shl ecx, 0xa
mov word [rbx + 0x442], ax
add eax, r12d
mov dword [rbx + 0x46c], ecx
mov word [rbx + 0x4a6], dx
cmp eax, 0x80
jle 0x6961fbe9
test r12d, r12d
jne 0x69620d30
mov ecx, eax
add eax, eax
add edx, r12d
mov dword [rsp + 0x60], eax
shl ecx, 9
mov word [rbx + 0x444], ax
add eax, r13d
mov dword [rbx + 0x470], ecx
mov word [rbx + 0x4a8], dx
cmp eax, 0x100
jle 0x6961fc1e
test r13d, r13d
jne 0x69620d30
mov ecx, eax
add edx, r13d
add eax, eax
shl ecx, 8
mov dword [rsp + 0x64], eax
mov word [rbx + 0x446], ax
add eax, ebp
mov dword [rbx + 0x474], ecx
mov word [rbx + 0x4aa], dx
test ebp, ebp
je 0x6961fc51
cmp eax, 0x200
jg 0x69620d30
mov esi, dword [rsp + 0x2c]
mov ecx, eax
add eax, eax
add edx, ebp
mov dword [rsp + 0x68], eax
shl ecx, 7
mov word [rbx + 0x448], ax
add eax, esi
mov dword [rbx + 0x478], ecx
mov word [rbx + 0x4ac], dx
cmp eax, 0x400
jle 0x6961fc87
test esi, esi
jne 0x69620d30
mov esi, dword [rsp + 0x30]
mov ecx, eax
add eax, eax
add edx, dword [rsp + 0x2c]
mov dword [rsp + 0x6c], eax
shl ecx, 6
mov word [rbx + 0x44a], ax
add eax, esi
mov dword [rbx + 0x47c], ecx
mov word [rbx + 0x4ae], dx
cmp eax, 0x800
jle 0x6961fcbf
test esi, esi
jne 0x69620d30
mov ecx, eax
add edx, dword [rsp + 0x30]
add eax, eax
shl ecx, 5
mov dword [rsp + 0x70], eax
mov word [rbx + 0x44c], ax
add eax, r14d
mov dword [rbx + 0x480], ecx
mov word [rbx + 0x4b0], dx
test r14d, r14d
je 0x6961fcf5
cmp eax, 0x1000
jg 0x69620d30
mov ecx, eax
mov esi, dword [rsp + 0x34]
add eax, eax
add edx, r14d
shl ecx, 4
mov dword [rsp + 0x74], eax
mov word [rbx + 0x44e], ax
add eax, esi
mov dword [rbx + 0x484], ecx
mov word [rbx + 0x4b2], dx
test esi, esi
je 0x6961fd2c
cmp eax, 0x2000
jg 0x69620d30
mov edi, dword [rsp + 0x38]
lea ecx, [rax*8]
add edx, dword [rsp + 0x34]
add eax, eax
mov dword [rsp + 0x78], eax
mov word [rbx + 0x450], ax
add eax, edi
mov dword [rbx + 0x488], ecx
mov word [rbx + 0x4b4], dx
test edi, edi
je 0x6961fd66
cmp eax, 0x4000
jg 0x69620d30
mov edi, dword [rsp + 0x3c]
lea ecx, [rax*4]
add eax, eax
add edx, dword [rsp + 0x38]
mov dword [rsp + 0x7c], eax
mov word [rbx + 0x452], ax
add eax, edi
mov dword [rbx + 0x48c], ecx
mov word [rbx + 0x4b6], dx
cmp eax, 0x8000
jle 0x6961fda0
test edi, edi
jne 0x69620d30
add eax, eax
xor edx, edx
mov r14d, 1
mov r13d, 0x10
mov dword [rbx + 0x490], eax
mov dword [rbx + 0x494], 0x10000
jmp 0x6961fde2
add r10d, 1
mov dword [rsp + r11*4 + 0x40], r10d
add rdx, 1
cmp rdx, 0x120
je 0x69620058
movzx ebp, byte [r9 + rdx]
mov ecx, ebp
test ebp, ebp
je 0x6961fdd1
movzx eax, bpl
movsxd r11, ebp
lea rsi, [rbx + rax*2]
mov r10d, dword [rsp + r11*4 + 0x40]
movzx eax, word [rsi + 0x434]
movzx esi, word [rsi + 0x498]
mov edi, r10d
sub edi, eax
mov eax, edi
add eax, esi
cdqe
mov byte [rbx + rax + 0x4b8], bpl
mov word [rbx + rax*2 + 0x5d8], dx
cmp ebp, 9
jg 0x6961fdc8
mov esi, r10d
lea eax, [r10 + r10]
mov edi, ebp
sar esi, 1
and eax, 0xaaaa
shl edi, 9
and esi, 0x5555
or edi, edx
or esi, eax
mov eax, esi
shl esi, 2
sar eax, 2
and esi, 0xcccc
and eax, 0x3333
or esi, eax
mov r12d, esi
shl esi, 4
sar r12d, 4
and esi, 0xf0f0
and r12d, 0xf0f
or r12d, esi
mov esi, r14d
mov eax, r12d
shl r12d, 8
shl esi, cl
sar eax, 8
movzx r12d, r12w
mov ecx, r13d
or eax, r12d
sub ecx, ebp
movsxd rsi, esi
sar eax, cl
cdqe
nop dword [rax]
mov word [rbx + rax*2 + 0x34], di
add rax, rsi
cmp eax, 0x1ff
jle 0x6961fea0
jmp 0x6961fdc8
mov edi, r8d
and edi, 7
jne 0x69620f18
test r8d, r8d
jle 0x69620f91
mov edx, r9d
lea ecx, [r8 - 8]
mov byte [rsp + 0x80], r9b
shr edx, 8
test ecx, ecx
jle 0x69620fd0
mov byte [rsp + 0x81], dl
lea r10d, [r8 - 0x10]
mov edx, r9d
shr edx, 0x10
test r10d, r10d
jle 0x69620fd0
mov byte [rsp + 0x82], dl
shr r9d, 0x18
cmp r8d, 0x18
jle 0x696211a0
mov byte [rsp + 0x83], r9b
lea edx, [r8 - 1]
mov r10d, 1
mov dword [rbx + 0x14], eax
mov eax, 0
shr edx, 3
test r8d, r8d
lea r9d, [rdx + 1]
cmovle r9d, r10d
neg edx
shl edx, 3
test r8d, r8d
cmovle edx, eax
mov r10d, r9d
add edx, ecx
mov dword [rbx + 0x10], edx
cmp r9d, 3
jg 0x6961fff0
mov r11, qword [rbx + 8]
mov rax, qword [rbx]
cmp r11, rax
jbe 0x69620fe3
lea rcx, [rax + 1]
movsxd r8, r9d
lea edx, [r9 + 1]
mov qword [rbx], rcx
movzx eax, byte [rax]
mov byte [rsp + r8 + 0x80], al
cmp r9d, 3
je 0x6961fff0
cmp r11, rcx
jbe 0x69621302
lea rax, [rcx + 1]
mov qword [rbx], rax
movzx r8d, byte [rcx]
movsxd r9, edx
lea ecx, [rdx + 1]
mov byte [rsp + r9 + 0x80], r8b
cmp edx, 3
je 0x6961fff0
cmp rax, r11
jae 0x69621090
lea rdx, [rax + 1]
movsxd r8, ecx
mov qword [rbx], rdx
movzx r9d, byte [rax]
mov byte [rsp + r8 + 0x80], r9b
cmp ecx, 2
jne 0x6961fff0
cmp rdx, r11
jae 0x696210a4
lea rdx, [rax + 2]
mov qword [rbx], rdx
movzx eax, byte [rax + 1]
mov byte [rsp + 0x83], al
movzx eax, byte [rsp + 0x81]
movzx edx, byte [rsp + 0x80]
movzx ecx, byte [rsp + 0x82]
shl eax, 8
add eax, edx
movzx edx, byte [rsp + 0x83]
shl edx, 8
add edx, ecx
mov ecx, eax
xor ecx, 0xffff
cmp edx, ecx
je 0x69620d60
lea rax, str.zlib_corrupt
xor r9d, r9d
mov qword [0x696336a0], rax
mov eax, r9d
add rsp, 0xd8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
lea rdx, [rbx + 0x818]
xor eax, eax
mov ecx, pe_nt_image_headers64
mov qword [r8], 0
mov rdi, rdx
mov qword [r8 + 8], 0
mov qword [r8 + 0x10], 0
mov qword [r8 + 0x18], 0
mov qword [r8 + 0x20], 0
mov qword [r8 + 0x28], 0
rep stosq qword [rdi], rax
mov qword [r8 + 0x30], 0
lea rax, [0x696336c0]
mov qword [r8 + 0x38], 0
lea rcx, [rax + 0x20]
mov dword [r8 + 0x40], 0
nop
movzx edx, byte [rax]
add rax, 1
add dword [rsp + rdx*4 + 0x80], 1
cmp rcx, rax
jne 0x696200c0
mov ecx, dword [rsp + 0x84]
mov dword [rsp + 0x80], 0
cmp ecx, 2
jg 0x69620c80
mov edx, dword [rsp + 0x88]
cmp edx, 4
jg 0x69620c80
mov r10d, dword [rsp + 0x8c]
cmp r10d, 8
jg 0x69620c80
mov r8d, dword [rsp + 0x90]
cmp r8d, 0x10
jg 0x69620c80
mov r9d, dword [rsp + 0x94]
cmp r9d, 0x20
jg 0x69620c80
mov r11d, dword [rsp + 0x98]
cmp r11d, 0x40
jg 0x69620c80
mov esi, dword [rsp + 0x9c]
cmp esi, 0x80
jg 0x69620c80
mov edi, dword [rsp + 0xa0]
cmp edi, 0x100
jg 0x69620c80
mov r12d, dword [rsp + 0xa4]
cmp r12d, 0x200
jg 0x69620c80
mov ebp, dword [rsp + 0xa8]
cmp ebp, 0x400
jg 0x69620c80
mov eax, dword [rsp + 0xac]
mov dword [rsp + 0x2c], eax
cmp eax, 0x800
jg 0x69620c80
mov r13d, dword [rsp + 0xb0]
cmp r13d, 0x1000
jg 0x69620c80
mov r14d, dword [rsp + 0xb4]
cmp r14d, 0x2000
jg 0x69620c80
mov eax, dword [rsp + 0xb8]
mov dword [rsp + 0x30], eax
cmp eax, 0x4000
jg 0x69620c80
mov eax, dword [rsp + 0xbc]
mov dword [rsp + 0x34], eax
cmp eax, 0x8000
jg 0x69620c80
xor eax, eax
xor r15d, r15d
mov dword [rsp + 0x44], 0
mov word [rbx + 0xc7e], ax
mov eax, ecx
shl eax, 0xf
mov word [rbx + 0xc1a], r15w
mov dword [rbx + 0xc3c], eax
lea eax, [rcx + rcx]
mov dword [rsp + 0x48], eax
mov word [rbx + 0xc1c], ax
add eax, edx
mov word [rbx + 0xc80], cx
test edx, edx
je 0x6962024c
cmp eax, 4
jg 0x69620d30
mov r15d, eax
add eax, eax
add edx, ecx
mov dword [rsp + 0x4c], eax
shl r15d, 0xe
mov word [rbx + 0xc1e], ax
add eax, r10d
mov dword [rbx + 0xc40], r15d
mov word [rbx + 0xc82], dx
cmp eax, 8
jle 0x69620281
test r10d, r10d
jne 0x69620d30
mov ecx, eax
add edx, r10d
add eax, eax
shl ecx, 0xd
mov dword [rsp + 0x50], eax
mov word [rbx + 0xc20], ax
add eax, r8d
mov dword [rbx + 0xc44], ecx
mov word [rbx + 0xc84], dx
test r8d, r8d
je 0x696202b4
cmp eax, 0x10
jg 0x69620d30
mov ecx, eax
add edx, r8d
add eax, eax
shl ecx, 0xc
mov dword [rsp + 0x54], eax
mov word [rbx + 0xc22], ax
add eax, r9d
mov dword [rbx + 0xc48], ecx
mov word [rbx + 0xc86], dx
test r9d, r9d
je 0x696202e7
cmp eax, 0x20
jg 0x69620d30
mov ecx, eax
add edx, r9d
add eax, eax
shl ecx, 0xb
mov dword [rsp + 0x58], eax
mov word [rbx + 0xc24], ax
add eax, r11d
mov dword [rbx + 0xc4c], ecx
mov word [rbx + 0xc88], dx
test r11d, r11d
je 0x6962031a
cmp eax, 0x40
jg 0x69620d30
mov ecx, eax
add edx, r11d
add eax, eax
shl ecx, 0xa
mov dword [rsp + 0x5c], eax
mov word [rbx + 0xc26], ax
add eax, esi
mov dword [rbx + 0xc50], ecx
mov word [rbx + 0xc8a], dx
test esi, esi
je 0x6962034d
cmp eax, 0x80
jg 0x69620d30
mov ecx, eax
add edx, esi
add eax, eax
shl ecx, 9
mov dword [rsp + 0x60], eax
mov word [rbx + 0xc28], ax
add eax, edi
mov dword [rbx + 0xc54], ecx
mov word [rbx + 0xc8c], dx
test edi, edi
je 0x6962037f
cmp eax, 0x100
jg 0x69620d30
mov ecx, eax
add eax, eax
add edx, edi
mov dword [rsp + 0x64], eax
shl ecx, 8
mov word [rbx + 0xc2a], ax
add eax, r12d
mov dword [rbx + 0xc58], ecx
mov word [rbx + 0xc8e], dx
cmp eax, 0x200
jle 0x696203b3
test r12d, r12d
jne 0x69620d30
mov ecx, eax
add edx, r12d
add eax, eax
shl ecx, 7
mov dword [rsp + 0x68], eax
mov word [rbx + 0xc2c], ax
add eax, ebp
mov dword [rbx + 0xc5c], ecx
mov word [rbx + 0xc90], dx
test ebp, ebp
je 0x696203e6
cmp eax, 0x400
jg 0x69620d30
mov edi, dword [rsp + 0x2c]
mov ecx, eax
add eax, eax
add edx, ebp
mov dword [rsp + 0x6c], eax
shl ecx, 6
mov word [rbx + 0xc2e], ax
add eax, edi
mov dword [rbx + 0xc60], ecx
mov word [rbx + 0xc92], dx
cmp eax, 0x800
jle 0x6962041c
test edi, edi
jne 0x69620d30
mov ecx, eax
add edx, dword [rsp + 0x2c]
add eax, eax
shl ecx, 5
mov dword [rsp + 0x70], eax
mov word [rbx + 0xc30], ax
add eax, r13d
mov dword [rbx + 0xc64], ecx
mov word [rbx + 0xc94], dx
test r13d, r13d
je 0x69620452
cmp eax, 0x1000
jg 0x69620d30
mov ecx, eax
add edx, r13d
add eax, eax
shl ecx, 4
mov dword [rsp + 0x74], eax
mov word [rbx + 0xc32], ax
add eax, r14d
mov dword [rbx + 0xc68], ecx
mov word [rbx + 0xc96], dx
test r14d, r14d
je 0x69620487
cmp eax, 0x2000
jg 0x69620d30
mov esi, dword [rsp + 0x30]
lea ecx, [rax*8]
add eax, eax
add edx, r14d
mov dword [rsp + 0x78], eax
mov word [rbx + 0xc34], ax
add eax, esi
mov dword [rbx + 0xc6c], ecx
mov word [rbx + 0xc98], dx
cmp eax, 0x4000
jle 0x696204c0
test esi, esi
jne 0x69620d30
mov esi, dword [rsp + 0x34]
lea ecx, [rax*4]
add eax, eax
add edx, dword [rsp + 0x30]
mov dword [rsp + 0x7c], eax
mov word [rbx + 0xc36], ax
add eax, esi
mov dword [rbx + 0xc70], ecx
mov word [rbx + 0xc9a], dx
cmp eax, 0x8000
jle 0x696204fa
test esi, esi
jne 0x69620d30
add eax, eax
xor edx, edx
mov esi, 1
mov r11d, 0x10
mov dword [rbx + 0xc74], eax
mov dword [rbx + 0xc78], 0x10000
jmp 0x69620537
add r8d, 1
mov dword [rsp + r9*4 + 0x40], r8d
add rdx, 1
cmp rdx, 0x20
je 0x69620620
lea rax, [0x696336c0]
movzx r10d, byte [rax + rdx]
mov ecx, r10d
test r10d, r10d
je 0x69620529
movzx eax, r10b
movsxd r9, r10d
lea rdi, [rbx + rax*2]
mov r8d, dword [rsp + r9*4 + 0x40]
movzx eax, word [rdi + 0xc18]
movzx edi, word [rdi + 0xc7c]
mov r14d, r8d
sub r14d, eax
mov eax, r14d
add eax, edi
cdqe
mov byte [rbx + rax + 0xc9c], r10b
mov word [rbx + rax*2 + 0xdbc], dx
cmp r10d, 9
jg 0x69620520
mov ebp, r8d
lea eax, [r8 + r8]
mov r12d, esi
mov edi, r10d
sar ebp, 1
and eax, 0xaaaa
shl r12d, cl
mov ecx, r11d
and ebp, 0x5555
sub ecx, r10d
shl edi, 9
movsxd r12, r12d
or ebp, eax
or edi, edx
mov eax, ebp
shl ebp, 2
sar eax, 2
and ebp, 0xcccc
and eax, 0x3333
or eax, ebp
mov ebp, eax
shl eax, 4
sar ebp, 4
and eax, 0xf0f0
and ebp, 0xf0f
or ebp, eax
mov eax, ebp
shl ebp, 8
sar eax, 8
movzx ebp, bp
or eax, ebp
sar eax, cl
cdqe
nop dword [rax]
mov word [rbx + rax*2 + 0x818], di
add rax, r12
cmp eax, 0x1ff
jle 0x696205f8
jmp 0x69620520
mov rcx, rbx
call fcn.69609780
test eax, eax
je 0x69621190
mov r9, qword [rbx + 0x18]
lea rdi, [0x6963cbc0]
lea rsi, [0x6963c9e0]
mov r8d, dword [rbx + 0x10]
mov eax, dword [rbx + 0x14]
cmp r8d, 0xf
jg 0x69620690
mov r11, qword [rbx + 8]
mov rdx, qword [rbx]
mov ecx, r8d
cmp r11, rdx
jbe 0x69620672
lea r10, [rdx + 1]
mov qword [rbx], r10
movzx edx, byte [rdx]
shl edx, cl
add ecx, 8
or eax, edx
mov dword [rbx + 0x10], ecx
mov dword [rbx + 0x14], eax
cmp ecx, 0x18
jg 0x69620680
mov rdx, r10
cmp r11, rdx
ja 0x6962064e
add ecx, 8
mov dword [rbx + 0x14], eax
mov dword [rbx + 0x10], ecx
cmp ecx, 0x18
jle 0x69620649
mov edx, 0x18
sub edx, r8d
and edx, 0xfffffff8
lea r8d, [r8 + rdx + 8]
mov edx, eax
and edx, 0x1ff
movzx ecx, word [rbx + rdx*2 + 0x34]
mov ebp, ecx
test ecx, ecx
je 0x696209f0
sar ecx, 9
and ebp, 0x1ff
shr eax, cl
sub r8d, ecx
mov dword [rbx + 0x14], eax
mov dword [rbx + 0x10], r8d
cmp ebp, 0xff
jg 0x69620740
mov rax, qword [rbx + 0x28]
cmp rax, r9
ja 0x6962072a
mov r10d, dword [rbx + 0x30]
mov qword [rbx + 0x18], r9
test r10d, r10d
je 0x69620aa0
mov r8, qword [rbx + 0x20]
sub r9, r8
sub rax, r8
mov r13, r9
mov ecx, r9d
cmp r9d, eax
jl 0x696206fe
nop dword [rax + rax]
add eax, eax
cmp ecx, eax
jge 0x696206f8
movsxd r12, eax
mov rcx, r8
mov rdx, r12
call sub.msvcrt.dll_realloc
test rax, rax
je 0x696212cd
movsxd r9, r13d
mov qword [rbx + 0x20], rax
add r9, rax
add rax, r12
mov qword [rbx + 0x18], r9
mov qword [rbx + 0x28], rax
mov byte [r9], bpl
add r9, 1
jmp 0x69620632
cmp ebp, 0x100
je 0x69621270
sub ebp, 0x101
lea rcx, [0x6963cae0]
movsxd rbp, ebp
mov r10d, dword [rdi + rbp*4]
mov r12d, dword [rcx + rbp*4]
test r10d, r10d
jne 0x69620b68
cmp r8d, 0xf
jg 0x696207c4
mov r11, qword [rbx + 8]
mov rdx, qword [rbx]
mov ecx, r8d
cmp r11, rdx
jbe 0x696207a6
lea r10, [rdx + 1]
mov qword [rbx], r10
movzx edx, byte [rdx]
shl edx, cl
add ecx, 8
or eax, edx
mov dword [rbx + 0x10], ecx
mov dword [rbx + 0x14], eax
cmp ecx, 0x18
jg 0x696207b4
mov rdx, r10
cmp r11, rdx
ja 0x69620782
add ecx, 8
mov dword [rbx + 0x14], eax
mov dword [rbx + 0x10], ecx
cmp ecx, 0x18
jle 0x6962077d
mov edx, 0x18
sub edx, r8d
and edx, 0xfffffff8
lea r8d, [r8 + rdx + 8]
mov edx, eax
and edx, 0x1ff
movzx ecx, word [rbx + rdx*2 + 0x818]
mov edx, ecx
test ecx, ecx
je 0x69620ac0
sar ecx, 9
and edx, 0x1ff
shr eax, cl
sub r8d, ecx
mov dword [rbx + 0x14], eax
mov dword [rbx + 0x10], r8d
movsxd rdx, edx
lea rcx, [0x6963ca60]
mov r10d, dword [rcx + rdx*4]
mov r13d, dword [rsi + rdx*4]
test r10d, r10d
jne 0x69620bf0
mov rcx, qword [rbx + 0x20]
mov r14, r9
movsxd r15, r13d
sub r14, rcx
cmp r14, r15
jl 0x69621290
movsxd rax, r12d
mov rdx, qword [rbx + 0x28]
add rax, r9
cmp rdx, rax
jae 0x69620888
mov r8d, dword [rbx + 0x30]
mov qword [rbx + 0x18], r9
test r8d, r8d
je 0x69620aa0
sub rdx, rcx
lea r8d, [r12 + r14]
mov eax, edx
cmp edx, r8d
jge 0x6962085f
nop word [rax + rax]
add eax, eax
cmp eax, r8d
jl 0x69620858
movsxd rbp, eax
mov rdx, rbp
call sub.msvcrt.dll_realloc
test rax, rax
je 0x696212cd
movsxd r9, r14d
mov qword [rbx + 0x20], rax
add r9, rax
add rax, rbp
mov qword [rbx + 0x18], r9
mov qword [rbx + 0x28], rax
mov rdx, r9
sub rdx, r15
cmp r13d, 1
je 0x69620ca0
test r12d, r12d
je 0x69620632
mov eax, 0x10
lea r8d, [r12 - 1]
sub rax, r15
test rax, rax
lea rax, [r9 + 0x10]
setle cl
cmp rdx, rax
setae al
or cl, al
je 0x696211b0
cmp r8d, 0xe
jbe 0x696211b0
mov ecx, r12d
xor eax, eax
shr ecx, 4
shl rcx, 4
nop dword [rax]
movdqu xmm0, xmmword [rdx + rax]
movups xmmword [r9 + rax], xmm0
add rax, 0x10
cmp rcx, rax
jne 0x696208e0
mov eax, r12d
and eax, 0xfffffff0
mov ecx, eax
lea r10, [r9 + rcx]
add rdx, rcx
mov ecx, r12d
sub ecx, eax
cmp r12d, eax
je 0x696209e0
movzx eax, byte [rdx]
mov byte [r10], al
cmp ecx, 1
je 0x696209e0
movzx eax, byte [rdx + 1]
mov byte [r10 + 1], al
cmp ecx, 2
je 0x696209e0
movzx eax, byte [rdx + 2]
mov byte [r10 + 2], al
cmp ecx, 3
je 0x696209e0
movzx eax, byte [rdx + 3]
mov byte [r10 + 3], al
cmp ecx, 4
je 0x696209e0
movzx eax, byte [rdx + 4]
mov byte [r10 + 4], al
cmp ecx, 5
je 0x696209e0
movzx eax, byte [rdx + 5]
mov byte [r10 + 5], al
cmp ecx, 6
je 0x696209e0
movzx eax, byte [rdx + 6]
mov byte [r10 + 6], al
cmp ecx, 7
je 0x696209e0
movzx eax, byte [rdx + 7]
mov byte [r10 + 7], al
cmp ecx, 8
je 0x696209e0
movzx eax, byte [rdx + 8]
mov byte [r10 + 8], al
cmp ecx, 9
je 0x696209e0
movzx eax, byte [rdx + 9]
mov byte [r10 + 9], al
cmp ecx, 0xa
je 0x696209e0
movzx eax, byte [rdx + 0xa]
mov byte [r10 + 0xa], al
cmp ecx, 0xb
je 0x696209e0
movzx eax, byte [rdx + 0xb]
mov byte [r10 + 0xb], al
cmp ecx, 0xc
je 0x696209e0
movzx eax, byte [rdx + 0xc]
mov byte [r10 + 0xc], al
cmp ecx, 0xd
je 0x696209e0
movzx eax, byte [rdx + 0xd]
mov byte [r10 + 0xd], al
cmp ecx, 0xe
je 0x696209e0
movzx eax, byte [rdx + 0xe]
mov byte [r10 + 0xe], al
lea r9, [r9 + r8 + 1]
jmp 0x69620632
mov ecx, eax
lea edx, [rax + rax]
sar ecx, 1
and edx, 0xaaaa
and ecx, 0x5555
or ecx, edx
mov edx, ecx
shl ecx, 2
sar edx, 2
and ecx, 0xcccc
and edx, 0x3333
or edx, ecx
mov ecx, edx
shl edx, 4
sar ecx, 4
and edx, 0xf0f0
and ecx, 0xf0f
or ecx, edx
mov edx, ecx
shl ecx, 8
sar edx, 8
movzx ecx, cx
or edx, ecx
cmp edx, dword [rbx + 0x47c]
jl 0x69620cd0
cmp dword [rbx + 0x480], edx
jg 0x69620d20
cmp dword [rbx + 0x484], edx
jg 0x69620d50
cmp dword [rbx + 0x488], edx
jg 0x69620fc0
cmp dword [rbx + 0x48c], edx
jg 0x69621008
cmp dword [rbx + 0x490], edx
jg 0x69621068
lea rax, str.bad_huffman_code
xor r9d, r9d
mov qword [0x696336a0], rax
jmp 0x6962003b
lea rax, str.output_buffer_limit
xor r9d, r9d
mov qword [0x696336a0], rax
jmp 0x6962003b
mov ecx, eax
lea edx, [rax + rax]
sar ecx, 1
and edx, 0xaaaa
and ecx, 0x5555
or ecx, edx
mov edx, ecx
shl ecx, 2
sar edx, 2
and ecx, 0xcccc
and edx, 0x3333
or edx, ecx
mov ecx, edx
shl edx, 4
sar ecx, 4
and edx, 0xf0f0
and ecx, 0xf0f
or ecx, edx
mov edx, ecx
shl ecx, 8
sar edx, 8
movzx ecx, cx
or edx, ecx
cmp edx, dword [rbx + 0xc60]
jl 0x69621018
cmp dword [rbx + 0xc64], edx
jg 0x69621078
cmp dword [rbx + 0xc68], edx
jg 0x696210b0
cmp dword [rbx + 0xc6c], edx
jg 0x696210f8
cmp dword [rbx + 0xc70], edx
jg 0x69621108
cmp dword [rbx + 0xc74], edx
jle 0x69620a86
mov r10d, 0xf
jmp 0x6962107e
cmp r10d, r8d
jle 0x69620bca
mov rbp, qword [rbx + 8]
mov rdx, qword [rbx]
mov ecx, r8d
cmp rbp, rdx
jbe 0x69620ba0
lea r11, [rdx + 1]
mov qword [rbx], r11
movzx edx, byte [rdx]
shl edx, cl
add ecx, 8
or eax, edx
mov dword [rbx + 0x10], ecx
mov dword [rbx + 0x14], eax
cmp ecx, 0x18
jg 0x69620bae
mov rdx, r11
cmp rbp, rdx
ja 0x69620b7c
add ecx, 8
mov dword [rbx + 0x14], eax
mov dword [rbx + 0x10], ecx
cmp ecx, 0x18
jle 0x69620b77
mov edx, 0x18
mov ecx, 0
sub edx, r8d
and edx, 0xfffffff8
cmp r8d, 0x18
cmovg edx, ecx
lea r8d, [r8 + rdx + 8]
mov ecx, r10d
mov edx, 1
sub r8d, r10d
shl edx, cl
mov dword [rbx + 0x10], r8d
sub edx, 1
and edx, eax
shr eax, cl
mov dword [rbx + 0x14], eax
add r12d, edx
jmp 0x6962076d
cmp r10d, r8d
jle 0x69620c52
mov rbp, qword [rbx + 8]
mov rdx, qword [rbx]
mov ecx, r8d
cmp rbp, rdx
jbe 0x69620c28
lea r11, [rdx + 1]
mov qword [rbx], r11
movzx edx, byte [rdx]
shl edx, cl
add ecx, 8
or eax, edx
mov dword [rbx + 0x10], ecx
mov dword [rbx + 0x14], eax
cmp ecx, 0x18
jg 0x69620c36
mov rdx, r11
cmp rbp, rdx
ja 0x69620c04
add ecx, 8
mov dword [rbx + 0x14], eax
mov dword [rbx + 0x10], ecx
cmp ecx, 0x18
jle 0x69620bff
mov edx, 0x18
mov ecx, 0
sub edx, r8d
and edx, 0xfffffff8
cmp r8d, 0x18
cmovg edx, ecx
lea r8d, [r8 + rdx + 8]
mov edx, eax
mov ecx, r10d
sub r8d, r10d
shr edx, cl
mov dword [rbx + 0x10], r8d
mov dword [rbx + 0x14], edx
mov edx, 1
shl edx, cl
sub edx, 1
and eax, edx
add r13d, eax
jmp 0x6962080e
lea rax, str.bad_sizes
xor r9d, r9d
mov qword [0x696336a0], rax
jmp 0x6962003b
test r12d, r12d
je 0x69620632
lea ebp, [r12 - 1]
movsx edx, byte [rdx]
mov rcx, r9
add rbp, 1
mov r8, rbp
call sub.msvcrt.dll_memset
mov r9, rax
add r9, rbp
jmp 0x69620632
mov ecx, 6
mov r10d, 0xa
nop dword [rax + rax]
movsxd r11, r10d
sar edx, cl
sub r8d, r10d
lea r11, [rbx + r11*2]
movzx ecx, word [r11 + 0x434]
sub edx, ecx
movzx ecx, word [r11 + 0x498]
mov dword [rbx + 0x10], r8d
add edx, ecx
mov ecx, r10d
shr eax, cl
movsxd rdx, edx
mov dword [rbx + 0x14], eax
movzx ebp, word [rbx + rdx*2 + 0x5d8]
jmp 0x696206bc
mov r10d, 0xb
mov ecx, 0x10
sub ecx, r10d
jmp 0x69620ce0
lea rax, str.bad_codelengths
xor r9d, r9d
mov qword [0x696336a0], rax
jmp 0x6962003b
mov r10d, 0xc
jmp 0x69620d26
mov rdx, qword [rbx]
movsxd rdi, eax
lea rcx, [rdx + rdi]
cmp qword [rbx + 8], rcx
jae 0x696210c0
lea rax, str.read_past_buffer
xor r9d, r9d
mov qword [0x696336a0], rax
jmp 0x6962003b
movabs rax, 0x808080808080808
movabs rdx, 0x808080808080808
mov qword [0x69633580], rax
mov qword [0x69633590], rax
mov qword [0x696335a0], rax
mov qword [0x696335b0], rax
mov qword [0x696335c0], rax
mov qword [0x696335d0], rax
mov qword [0x696335e0], rax
mov qword [0x696335f0], rax
mov qword [0x69633600], rax
movabs rax, 0x909090909090909
mov qword [0x69633588], rdx
mov qword [0x69633598], rdx
mov qword [0x696335a8], rdx
mov qword [0x696335b8], rdx
mov qword [0x696335c8], rdx
mov qword [0x696335d8], rdx
mov qword [0x696335e8], rdx
mov qword [0x696335f8], rdx
mov qword [0x69633608], rdx
movabs rdx, 0x909090909090909
mov qword [0x69633610], rax
mov qword [0x69633620], rax
mov qword [0x69633630], rax
mov qword [0x69633640], rax
mov qword [0x69633650], rax
mov qword [0x69633660], rax
mov qword [0x69633670], rax
movabs rax, 0x707070707070707
mov qword [0x69633618], rdx
mov qword [0x69633628], rdx
mov qword [0x69633638], rdx
mov qword [0x69633648], rdx
mov qword [0x69633658], rdx
mov qword [0x69633668], rdx
mov qword [0x69633678], rdx
movabs rdx, 0x707070707070707
mov qword [0x69633680], rax
movabs rax, 0x707070707070707
mov qword [0x69633690], rax
movabs rax, 0x808080808080808
mov qword [0x69633688], rdx
movabs rdx, 0x505050505050505
mov qword [0x69633698], rax
movabs rax, 0x505050505050505
mov qword [0x696336c0], rax
mov qword [0x696336c8], rdx
mov qword [0x696336d0], rax
mov qword [0x696336d8], rdx
jmp 0x6961f8ae
cmp r8d, edi
jge 0x69620f78
mov rsi, qword [rbx + 8]
mov rcx, qword [rbx]
cmp rsi, rcx
jbe 0x69620f57
lea r11, [rcx + 1]
mov qword [rbx], r11
movzx r10d, byte [rcx]
mov ecx, r8d
add r8d, 8
mov dword [rbx + 0x10], r8d
shl r10d, cl
or r9d, r10d
mov dword [rbx + 0x14], r9d
cmp r8d, 0x18
jg 0x69620f69
mov rcx, r11
cmp rsi, rcx
ja 0x69620f29
add r8d, 8
mov dword [rbx + 0x14], r9d
mov dword [rbx + 0x10], r8d
cmp r8d, 0x18
jle 0x69620f24
mov ecx, 0x1a
sub ecx, edx
and ecx, 0xfffffff8
lea r8d, [rdx + rcx + 6]
mov ecx, edi
sub r8d, edi
shr r9d, cl
mov dword [rbx + 0x10], r8d
mov dword [rbx + 0x14], r9d
test r8d, r8d
jg 0x6961fecd
mov r11, qword [rbx + 8]
mov rax, qword [rbx]
cmp r11, rax
jbe 0x69620fe0
lea rcx, [rax + 1]
mov edx, 1
mov qword [rbx], rcx
movzx eax, byte [rax]
mov byte [rsp + 0x80], al
jmp 0x6961ff8a
mov r10d, 0xd
jmp 0x69620d26
mov eax, edx
jmp 0x6961ff1e
xor r10d, r10d
movsxd rcx, r10d
lea edx, [r10 + 1]
mov byte [rsp + rcx + 0x80], 0
cmp r10d, 3
je 0x6961fff0
xor r8d, r8d
jmp 0x6961ff9e
mov r10d, 0xe
jmp 0x69620d26
mov ecx, 6
mov r10d, 0xa
nop dword [rax + rax]
movsxd r11, r10d
sar edx, cl
sub r8d, r10d
lea r11, [rbx + r11*2]
movzx ecx, word [r11 + 0xc18]
sub edx, ecx
movzx ecx, word [r11 + 0xc7c]
mov dword [rbx + 0x10], r8d
add edx, ecx
mov ecx, r10d
shr eax, cl
movsxd rdx, edx
mov dword [rbx + 0x14], eax
movzx edx, word [rbx + rdx*2 + 0xdbc]
jmp 0x696207f3
mov r10d, 0xf
jmp 0x69620d26
mov r10d, 0xb
mov ecx, 0x10
sub ecx, r10d
jmp 0x69621028
movsxd rax, ecx
mov byte [rsp + rax + 0x80], 0
cmp ecx, 2
jne 0x6961fff0
xor eax, eax
jmp 0x6961ffe9
mov r10d, 0xc
jmp 0x6962107e
mov rcx, qword [rbx + 0x18]
mov r8, qword [rbx + 0x28]
lea r9, [rcx + rdi]
cmp r8, r9
jae 0x69621165
mov r9d, dword [rbx + 0x30]
test r9d, r9d
jne 0x69621118
lea rax, str.output_buffer_limit
mov qword [0x696336a0], rax
jmp 0x6962003b
mov r10d, 0xd
jmp 0x6962107e
mov r10d, 0xe
jmp 0x6962107e
mov r9, qword [rbx + 0x20]
sub rcx, r9
sub r8, r9
add eax, ecx
mov rbp, rcx
mov edx, r8d
cmp r8d, eax
jge 0x69621136
nop
add edx, edx
cmp edx, eax
jl 0x69621130
movsxd rsi, edx
mov rcx, r9
mov rdx, rsi
call sub.msvcrt.dll_realloc
test rax, rax
je 0x696212cd
movsxd rcx, ebp
mov qword [rbx + 0x20], rax
mov rdx, qword [rbx]
add rcx, rax
add rax, rsi
mov qword [rbx + 0x18], rcx
mov qword [rbx + 0x28], rax
mov r8, rdi
call sub.msvcrt.dll_memcpy
mov eax, dword [rsp + 0x28]
add qword [rbx], rdi
add qword [rbx + 0x18], rdi
test eax, eax
jne 0x69621280
mov r8d, dword [rbx + 0x10]
mov eax, dword [rbx + 0x14]
jmp 0x6961f7b0
xor r9d, r9d
jmp 0x6962003b
mov eax, r9d
jmp 0x6961ff1e
mov r10d, r8d
xor eax, eax
nop dword [rax]
movzx ecx, byte [rdx + rax]
mov byte [r9 + rax], cl
mov rcx, rax
add rax, 1
cmp r10, rcx
jne 0x696211b8
lea r9, [r9 + r8 + 1]
jmp 0x69620632
mov r8, qword [rcx + 8]
mov rdx, qword [rcx]
cmp r8, rdx
jbe 0x696212ec
lea r9, [rdx + 1]
mov qword [rcx], r9
movzx eax, byte [rdx]
mov ecx, eax
and ecx, 0xf
cmp r8, r9
jbe 0x696212a6
lea r8, [rdx + 2]
shl eax, 8
mov qword [rbx], r8
movzx edx, byte [rdx + 1]
lea r9d, [rax + rdx]
mov r8d, edx
mov rax, r9
imul r9, r9, 0x8421085
mov rdx, r9
mov r9d, eax
shr rdx, 0x20
sub r9d, edx
shr r9d, 1
add r9d, edx
shr r9d, 4
mov edx, r9d
shl edx, 5
sub edx, r9d
sub eax, edx
mov r9d, eax
jne 0x696212b7
and r8d, 0x20
je 0x696212e3
lea rax, str.no_preset_dict
mov qword [0x696336a0], rax
jmp 0x6962003b
mov eax, dword [rsp + 0x28]
mov qword [rbx + 0x18], r9
test eax, eax
je 0x69621180
mov r9d, 1
jmp 0x6962003b
lea rax, str.bad_dist
xor r9d, r9d
mov qword [0x696336a0], rax
jmp 0x6962003b
shl eax, 8
mov r8d, 0x1f
cdq
idiv r8d
test edx, edx
je 0x696212e3
lea rax, str.bad_zlib_header
xor r9d, r9d
mov qword [0x696336a0], rax
jmp 0x6962003b
lea rax, str.outofmem
xor r9d, r9d
mov qword [0x696336a0], rax
jmp 0x6962003b
cmp cl, 8
je 0x6961f79e
lea rax, str.bad_compression
xor r9d, r9d
mov qword [0x696336a0], rax
jmp 0x6962003b
mov rax, rcx
jmp 0x69620ffc