Function at 0x2e3c56780
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 rsi, rcx
test edx, edx
jne 0x2e3c57aae
mov qword [rsi + 0x10], 0
xor edx, edx
xor ecx, ecx
nop word [rax + rax]
test ecx, ecx
jle 0x2e3c56c90
mov ebp, edx
sub ecx, 1
shr edx, 1
mov dword [rsi + 0x14], edx
and ebp, 1
mov dword [rsi + 0x10], ecx
cmp ecx, 1
jle 0x2e3c56ce0
mov r8d, edx
lea eax, [rcx - 2]
shr r8d, 2
mov dword [rsi + 0x10], eax
mov dword [rsi + 0x14], r8d
and edx, 3
je 0x2e3c56a40
cmp edx, 3
je 0x2e3c57ad4
cmp edx, 1
je 0x2e3c56d30
mov rcx, rsi
call fcn.2e3c55c00
test eax, eax
je 0x2e3c57ad4
lea rbx, [rsi + 0x34]
mov r13, qword [rsi + 0x18]
lea r12, [0x2e3ed4540]
mov rdx, rbx
mov rcx, rsi
call fcn.2e3c4f050
mov edi, eax
cmp eax, 0xff
jg 0x2e3c56878
test eax, eax
js 0x2e3c57a90
cmp qword [rsi + 0x28], r13
ja 0x2e3c5686a
mov eax, dword [rsi + 0x30]
mov qword [rsi + 0x18], r13
test eax, eax
je 0x2e3c56b88
mov r8d, 1
mov rdx, r13
mov rcx, rsi
call fcn.2e3c79d80
test eax, eax
je 0x2e3c57ad4
mov r13, qword [rsi + 0x18]
mov byte [r13], dil
add r13, 1
jmp 0x2e3c5681c
cmp eax, 0x100
je 0x2e3c57d28
sub edi, 0x101
lea rax, [0x2e3ed4640]
movsxd rdi, edi
mov r14d, dword [rax + rdi*4]
lea rax, [0x2e3ed45c0]
mov r8d, dword [rax + rdi*4]
test r8d, r8d
jne 0x2e3c56bc0
lea rdx, [rsi + 0x818]
mov rcx, rsi
call fcn.2e3c4f050
test eax, eax
js 0x2e3c57a90
cdqe
lea rdx, [0x2e3ed44c0]
mov r8d, dword [rdx + rax*4]
mov edi, dword [r12 + rax*4]
test r8d, r8d
jne 0x2e3c56bf8
mov rax, r13
movsxd r15, edi
sub rax, qword [rsi + 0x20]
cmp rax, r15
jl 0x2e3c56c3b
movsxd rax, r14d
add rax, r13
cmp qword [rsi + 0x28], rax
jae 0x2e3c56924
mov eax, dword [rsi + 0x30]
mov qword [rsi + 0x18], r13
test eax, eax
je 0x2e3c56b88
mov r8d, r14d
mov rdx, r13
mov rcx, rsi
call fcn.2e3c79d80
test eax, eax
je 0x2e3c57ad4
mov r13, qword [rsi + 0x18]
mov rdx, r13
sub rdx, r15
cmp edi, 1
je 0x2e3c56c60
test r14d, r14d
je 0x2e3c5681c
lea rax, [r15 - 1]
lea r8d, [r14 - 1]
cmp rax, 0xe
jbe 0x2e3c57be0
cmp r8d, 6
jbe 0x2e3c57be0
mov r9d, r14d
cmp r8d, 0xe
jbe 0x2e3c57d46
mov ecx, r14d
xor eax, eax
shr ecx, 4
shl rcx, 4
nop dword [rax]
movdqu xmm0, xmmword [rdx + rax]
movups xmmword [r13 + rax], xmm0
add rax, 0x10
cmp rcx, rax
jne 0x2e3c56978
mov eax, r14d
and eax, 0xfffffff0
mov r10d, eax
sub r14d, eax
lea rcx, [r13 + r10]
add rdx, r10
cmp eax, r9d
je 0x2e3c56a30
sub r9d, eax
lea r10d, [r9 - 1]
cmp r10d, 6
jbe 0x2e3c569dd
mov r10, rax
sub r10, r15
mov r10, qword [r13 + r10]
mov qword [r13 + rax], r10
mov eax, r9d
and eax, 0xfffffff8
mov r10d, eax
sub r14d, eax
add rcx, r10
add rdx, r10
cmp eax, r9d
je 0x2e3c56a30
movzx eax, byte [rdx]
mov byte [rcx], al
cmp r14d, 1
je 0x2e3c56a30
movzx eax, byte [rdx + 1]
mov byte [rcx + 1], al
cmp r14d, 2
je 0x2e3c56a30
movzx eax, byte [rdx + 2]
mov byte [rcx + 2], al
cmp r14d, 3
je 0x2e3c56a30
movzx eax, byte [rdx + 3]
mov byte [rcx + 3], al
cmp r14d, 4
je 0x2e3c56a30
movzx eax, byte [rdx + 4]
mov byte [rcx + 4], al
cmp r14d, 5
je 0x2e3c56a30
movzx eax, byte [rdx + 5]
mov byte [rcx + 5], al
cmp r14d, 6
je 0x2e3c56a30
movzx eax, byte [rdx + 6]
mov byte [rcx + 6], al
lea r13, [r13 + r8 + 1]
jmp 0x2e3c5681c
mov r9d, eax
and r9d, 7
jne 0x2e3c579c8
test eax, eax
jle 0x2e3c579e9
mov ecx, r8d
lea r9d, [rax - 8]
mov byte [rsp + 0x80], r8b
shr ecx, 8
test r9d, r9d
jle 0x2e3c57b80
mov byte [rsp + 0x81], cl
mov r10d, r8d
lea ecx, [rax - 0x10]
shr r10d, 0x10
test ecx, ecx
jle 0x2e3c57bd0
mov byte [rsp + 0x82], r10b
shr r8d, 0x18
cmp eax, 0x18
jle 0x2e3c57d20
mov byte [rsp + 0x83], r8b
lea ecx, [rax - 1]
mov r10d, 1
mov dword [rsi + 0x14], edx
shr ecx, 3
test eax, eax
lea r8d, [rcx + 1]
cmovle r8d, r10d
neg ecx
shl ecx, 3
test eax, eax
mov eax, 0
cmovg eax, ecx
movsxd r10, r8d
add eax, r9d
mov dword [rsi + 0x10], eax
jne 0x2e3c578d8
cmp r8d, 4
je 0x2e3c56b15
mov rdx, qword [rsi + 8]
mov rcx, qword [rsi]
lea eax, [r8 + 1]
cmp rdx, rcx
jbe 0x2e3c57a38
lea r9, [rcx + 1]
movsxd r8, r8d
mov qword [rsi], r9
movzx ecx, byte [rcx]
mov byte [rsp + r8 + 0x80], cl
cmp eax, 4
jne 0x2e3c57bff
movzx eax, byte [rsp + 0x80]
movzx edx, byte [rsp + 0x82]
movzx r8d, byte [rsp + 0x81]
shl r8d, 8
add r8d, eax
movzx eax, byte [rsp + 0x83]
shl eax, 8
add eax, edx
mov edx, r8d
xor edx, 0xffff
cmp eax, edx
jne 0x2e3c578d8
mov rdx, qword [rsi]
movsxd rbx, r8d
lea rax, [rdx + rbx]
cmp qword [rsi + 8], rax
jb 0x2e3c57ca8
mov rcx, qword [rsi + 0x18]
lea rax, [rcx + rbx]
cmp qword [rsi + 0x28], rax
jae 0x2e3c57baa
mov eax, dword [rsi + 0x30]
test eax, eax
jne 0x2e3c57b90
nop dword [rax]
lea rcx, [0x2e3e69480]
mov r15d, eax
lea rbx, str.output_buffer_limit
call fcn.2e3e59960
mov qword [rax], rbx
mov eax, r15d
add rsp, 0xd8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov eax, dword [rsi + 0x10]
mov edx, dword [rsi + 0x14]
cmp r8d, eax
jg 0x2e3c57920
sub eax, r8d
mov ecx, r8d
mov edi, edx
mov dword [rsi + 0x10], eax
mov eax, 1
shr edi, cl
shl eax, cl
mov dword [rsi + 0x14], edi
sub eax, 1
and eax, edx
add r14d, eax
jmp 0x2e3c568ab
mov eax, dword [rsi + 0x10]
mov edx, dword [rsi + 0x14]
cmp r8d, eax
jg 0x2e3c57970
sub eax, r8d
mov ecx, r8d
mov r11d, edx
mov dword [rsi + 0x10], eax
mov eax, 1
shr r11d, cl
shl eax, cl
mov dword [rsi + 0x14], r11d
sub eax, 1
and eax, edx
add edi, eax
mov rax, r13
sub rax, qword [rsi + 0x20]
movsxd r15, edi
cmp rax, r15
jge 0x2e3c568ef
lea rcx, [0x2e3e69480]
lea rbx, str.bad_dist
xor r15d, r15d
call fcn.2e3e59960
mov qword [rax], rbx
jmp 0x2e3c56ba1
test r14d, r14d
je 0x2e3c5681c
lea edi, [r14 - 1]
movsx edx, byte [rdx]
mov rcx, r13
add rdi, 1
mov r8, rdi
add r13, rdi
call sub.msvcrt.dll_memset
jmp 0x2e3c5681c
mov r8, qword [rsi + 8]
jmp 0x2e3c56cc8
mov rax, qword [rsi]
cmp rax, r8
jae 0x2e3c56cb6
lea r9, [rax + 1]
mov qword [rsi], r9
movzx eax, byte [rax]
shl eax, cl
or edx, eax
add ecx, 8
mov dword [rsi + 0x14], edx
mov dword [rsi + 0x10], ecx
cmp ecx, 0x18
jg 0x2e3c567b8
mov eax, edx
shr eax, cl
test eax, eax
je 0x2e3c56ca0
mov qword [rsi], r8
jmp 0x2e3c567b8
mov r8, qword [rsi + 8]
jmp 0x2e3c56d18
mov rax, qword [rsi]
cmp rax, r8
jae 0x2e3c56d06
lea r9, [rax + 1]
mov qword [rsi], r9
movzx eax, byte [rax]
shl eax, cl
or edx, eax
add ecx, 8
mov dword [rsi + 0x14], edx
mov dword [rsi + 0x10], ecx
cmp ecx, 0x18
jg 0x2e3c567d1
mov eax, edx
shr eax, cl
test eax, eax
je 0x2e3c56cf0
mov qword [rsi], r8
jmp 0x2e3c567d1
lea rbx, [rsi + 0x34]
lea rdi, [rsi + 0x3c]
xor eax, eax
mov qword [rsp + 0xa0], 0
and rdi, 0xfffffffffffffff8
mov rcx, rbx
mov qword [rsp + 0x80], 0
sub rcx, rdi
mov qword [rsp + 0x88], 0
add ecx, 0x400
mov qword [rsp + 0x90], 0
shr ecx, 3
mov qword [rsp + 0x98], 0
mov qword [rsp + 0xa8], 0
mov qword [rsp + 0xb0], 0
mov qword [rsp + 0xb8], 0
mov dword [rsp + 0xc0], 0
mov qword [rsi + 0x34], 0
mov qword [rsi + 0x42c], 0
rep stosq qword [rdi], rax
lea rax, [0x2e3ed46e1]
mov dword [rsp + 0xa0], 1
lea rcx, [rax + 0x11f]
nop word [rax + rax]
movzx edx, byte [rax]
add rax, 1
add dword [rsp + rdx*4 + 0x80], 1
cmp rcx, rax
jne 0x2e3c56df0
mov ecx, dword [rsp + 0x84]
mov dword [rsp + 0x80], 0
cmp ecx, 2
jg 0x2e3c57900
mov edx, dword [rsp + 0x88]
cmp edx, 4
jg 0x2e3c57900
mov r8d, dword [rsp + 0x8c]
cmp r8d, 8
jg 0x2e3c57900
mov r11d, dword [rsp + 0x90]
cmp r11d, 0x10
jg 0x2e3c57900
mov r9d, dword [rsp + 0x94]
cmp r9d, 0x20
jg 0x2e3c57900
mov r10d, dword [rsp + 0x98]
cmp r10d, 0x40
jg 0x2e3c57900
mov edi, dword [rsp + 0x9c]
cmp edi, 0x80
jg 0x2e3c57900
mov r13d, dword [rsp + 0xa0]
cmp r13d, 0x100
jg 0x2e3c57900
mov r12d, dword [rsp + 0xa4]
cmp r12d, 0x200
jg 0x2e3c57900
mov eax, dword [rsp + 0xa8]
mov dword [rsp + 0x2c], eax
cmp eax, 0x400
jg 0x2e3c57900
mov r14d, dword [rsp + 0xac]
cmp r14d, 0x800
jg 0x2e3c57900
mov eax, dword [rsp + 0xb0]
mov dword [rsp + 0x30], eax
cmp eax, 0x1000
jg 0x2e3c57900
mov eax, dword [rsp + 0xb4]
mov dword [rsp + 0x34], eax
cmp eax, 0x2000
jg 0x2e3c57900
mov eax, dword [rsp + 0xb8]
mov dword [rsp + 0x38], eax
cmp eax, 0x4000
jg 0x2e3c57900
mov eax, dword [rsp + 0xbc]
mov dword [rsp + 0x3c], eax
cmp eax, 0x8000
jg 0x2e3c57900
xor eax, eax
mov dword [rsp + 0x44], 0
mov word [rsi + 0x436], ax
xor eax, eax
mov word [rsi + 0x49a], ax
mov eax, ecx
shl eax, 0xf
mov word [rsi + 0x49c], cx
mov dword [rsi + 0x458], eax
lea eax, [rcx + rcx]
mov dword [rsp + 0x48], eax
mov word [rsi + 0x438], ax
add eax, edx
test edx, edx
je 0x2e3c56f80
cmp eax, 4
jg 0x2e3c57a70
mov r15d, eax
add eax, eax
add edx, ecx
mov dword [rsp + 0x4c], eax
shl r15d, 0xe
mov word [rsi + 0x43a], ax
add eax, r8d
mov dword [rsi + 0x45c], r15d
mov word [rsi + 0x49e], dx
cmp eax, 8
jle 0x2e3c56fb5
test r8d, r8d
jne 0x2e3c57a70
mov ecx, eax
add eax, eax
add edx, r8d
mov dword [rsp + 0x50], eax
shl ecx, 0xd
mov word [rsi + 0x43c], ax
add eax, r11d
mov dword [rsi + 0x460], ecx
mov word [rsi + 0x4a0], dx
cmp eax, 0x10
jle 0x2e3c56fe8
test r11d, r11d
jne 0x2e3c57a70
mov ecx, eax
add edx, r11d
add eax, eax
shl ecx, 0xc
mov dword [rsp + 0x54], eax
mov word [rsi + 0x43e], ax
add eax, r9d
mov dword [rsi + 0x464], ecx
mov word [rsi + 0x4a2], dx
test r9d, r9d
je 0x2e3c5701b
cmp eax, 0x20
jg 0x2e3c57a70
mov ecx, eax
add edx, r9d
add eax, eax
shl ecx, 0xb
mov dword [rsp + 0x58], eax
mov word [rsi + 0x440], ax
add eax, r10d
mov dword [rsi + 0x468], ecx
mov word [rsi + 0x4a4], dx
test r10d, r10d
je 0x2e3c5704e
cmp eax, 0x40
jg 0x2e3c57a70
mov ecx, eax
add edx, r10d
add eax, eax
shl ecx, 0xa
mov dword [rsp + 0x5c], eax
mov word [rsi + 0x442], ax
add eax, edi
mov dword [rsi + 0x46c], ecx
mov word [rsi + 0x4a6], dx
test edi, edi
je 0x2e3c57081
cmp eax, 0x80
jg 0x2e3c57a70
mov ecx, eax
add eax, eax
add edx, edi
mov dword [rsp + 0x60], eax
shl ecx, 9
mov word [rsi + 0x444], ax
add eax, r13d
mov dword [rsi + 0x470], ecx
mov word [rsi + 0x4a8], dx
cmp eax, 0x100
jle 0x2e3c570b5
test r13d, r13d
jne 0x2e3c57a70
mov ecx, eax
add edx, r13d
add eax, eax
shl ecx, 8
mov dword [rsp + 0x64], eax
mov word [rsi + 0x446], ax
add eax, r12d
mov dword [rsi + 0x474], ecx
mov word [rsi + 0x4aa], dx
test r12d, r12d
je 0x2e3c570ea
cmp eax, 0x200
jg 0x2e3c57a70
mov edi, dword [rsp + 0x2c]
mov ecx, eax
add eax, eax
add edx, r12d
mov dword [rsp + 0x68], eax
shl ecx, 7
mov word [rsi + 0x448], ax
add eax, edi
mov dword [rsi + 0x478], ecx
mov word [rsi + 0x4ac], dx
cmp eax, 0x400
jle 0x2e3c57121
test edi, edi
jne 0x2e3c57a70
mov ecx, eax
add edx, dword [rsp + 0x2c]
add eax, eax
shl ecx, 6
mov dword [rsp + 0x6c], eax
mov word [rsi + 0x44a], ax
add eax, r14d
mov dword [rsi + 0x47c], ecx
mov word [rsi + 0x4ae], dx
test r14d, r14d
je 0x2e3c57157
cmp eax, 0x800
jg 0x2e3c57a70
mov edi, dword [rsp + 0x30]
mov ecx, eax
add eax, eax
add edx, r14d
mov dword [rsp + 0x70], eax
shl ecx, 5
mov word [rsi + 0x44c], ax
add eax, edi
mov dword [rsi + 0x480], ecx
mov word [rsi + 0x4b0], dx
cmp eax, 0x1000
jle 0x2e3c5718e
test edi, edi
jne 0x2e3c57a70
mov ecx, eax
mov edi, dword [rsp + 0x34]
add eax, eax
add edx, dword [rsp + 0x30]
shl ecx, 4
mov dword [rsp + 0x74], eax
mov word [rsi + 0x44e], ax
add eax, edi
mov dword [rsi + 0x484], ecx
mov word [rsi + 0x4b2], dx
test edi, edi
je 0x2e3c571c6
cmp eax, 0x2000
jg 0x2e3c57a70
mov edi, dword [rsp + 0x38]
lea ecx, [rax*8]
add eax, eax
add edx, dword [rsp + 0x34]
mov dword [rsp + 0x78], eax
mov word [rsi + 0x450], ax
add eax, edi
mov dword [rsi + 0x488], ecx
mov word [rsi + 0x4b4], dx
cmp eax, 0x4000
jle 0x2e3c57200
test edi, edi
jne 0x2e3c57a70
mov edi, dword [rsp + 0x3c]
lea ecx, [rax*4]
add eax, eax
add edx, dword [rsp + 0x38]
mov dword [rsp + 0x7c], eax
mov word [rsi + 0x452], ax
add eax, edi
mov dword [rsi + 0x48c], ecx
mov word [rsi + 0x4b6], dx
cmp eax, 0x8000
jle 0x2e3c5723a
test edi, edi
jne 0x2e3c57a70
add eax, eax
lea r11, str._b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_b_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_t_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_b_b_b_b_b_b_b_b
mov edi, 0x10
mov dword [rsi + 0x494], 0x10000
mov dword [rsi + 0x490], eax
mov r12d, 1
xor eax, eax
movzx r8d, byte [r11 + rax]
mov ecx, r8d
test r8d, r8d
je 0x2e3c572b6
movsxd r10, r8d
movzx r13d, word [rsi + r10*2 + 0x434]
mov r9d, dword [rsp + r10*4 + 0x40]
mov edx, r9d
sub edx, r13d
movzx r13d, word [rsi + r10*2 + 0x498]
add edx, r13d
movsxd rdx, edx
mov byte [rsi + rdx + 0x4b8], r8b
mov word [rsi + rdx*2 + 0x5d8], ax
cmp r8d, 9
jle 0x2e3c57ae0
add r9d, 1
mov dword [rsp + r10*4 + 0x40], r9d
add rax, 1
cmp rax, 0x120
jne 0x2e3c57260
lea rdx, [rsi + 0x818]
xor eax, eax
mov ecx, pe_nt_image_headers64
mov qword [rsp + 0x90], 0
mov qword [rsp + 0x80], 0
mov rdi, rdx
mov qword [rsp + 0x88], 0
mov qword [rsp + 0x98], 0
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 dword [rsp + 0x94], 1
rep stosq qword [rdi], rax
lea rax, [0x2e3ed46c1]
lea rcx, [rax + 0x1f]
nop word [rax + rax]
movzx edx, byte [rax]
add rax, 1
add dword [rsp + rdx*4 + 0x80], 1
cmp rcx, rax
jne 0x2e3c57360
mov ecx, dword [rsp + 0x84]
mov dword [rsp + 0x80], 0
cmp ecx, 2
jg 0x2e3c57900
mov edx, dword [rsp + 0x88]
cmp edx, 4
jg 0x2e3c57900
mov r8d, dword [rsp + 0x8c]
cmp r8d, 8
jg 0x2e3c57900
mov r10d, dword [rsp + 0x90]
cmp r10d, 0x10
jg 0x2e3c57900
mov r11d, dword [rsp + 0x94]
cmp r11d, 0x20
jg 0x2e3c57900
mov r9d, dword [rsp + 0x98]
cmp r9d, 0x40
jg 0x2e3c57900
mov r12d, dword [rsp + 0x9c]
cmp r12d, 0x80
jg 0x2e3c57900
mov r13d, dword [rsp + 0xa0]
cmp r13d, 0x100
jg 0x2e3c57900
mov edi, dword [rsp + 0xa4]
cmp edi, 0x200
jg 0x2e3c57900
mov eax, dword [rsp + 0xa8]
mov dword [rsp + 0x2c], eax
cmp eax, 0x400
jg 0x2e3c57900
mov eax, dword [rsp + 0xac]
mov dword [rsp + 0x30], eax
cmp eax, 0x800
jg 0x2e3c57900
mov r14d, dword [rsp + 0xb0]
cmp r14d, 0x1000
jg 0x2e3c57900
mov eax, dword [rsp + 0xb4]
mov dword [rsp + 0x34], eax
cmp eax, 0x2000
jg 0x2e3c57900
mov eax, dword [rsp + 0xb8]
mov dword [rsp + 0x38], eax
cmp eax, 0x4000
jg 0x2e3c57900
mov eax, dword [rsp + 0xbc]
mov dword [rsp + 0x3c], eax
cmp eax, 0x8000
jg 0x2e3c57900
xor eax, eax
xor r15d, r15d
mov dword [rsp + 0x44], 0
mov word [rsi + 0xc1a], ax
mov eax, ecx
shl eax, 0xf
mov word [rsi + 0xc7e], r15w
mov dword [rsi + 0xc3c], eax
lea eax, [rcx + rcx]
mov dword [rsp + 0x48], eax
mov word [rsi + 0xc1c], ax
add eax, edx
mov word [rsi + 0xc80], cx
test edx, edx
je 0x2e3c574f2
cmp eax, 4
jg 0x2e3c57a70
mov r15d, eax
add edx, ecx
add eax, eax
shl r15d, 0xe
mov dword [rsp + 0x4c], eax
mov word [rsi + 0xc1e], ax
add eax, r8d
mov dword [rsi + 0xc40], r15d
mov word [rsi + 0xc82], dx
test r8d, r8d
je 0x2e3c57527
cmp eax, 8
jg 0x2e3c57a70
mov ecx, eax
add eax, eax
add edx, r8d
mov dword [rsp + 0x50], eax
shl ecx, 0xd
mov word [rsi + 0xc20], ax
add eax, r10d
mov dword [rsi + 0xc44], ecx
mov word [rsi + 0xc84], dx
cmp eax, 0x10
jle 0x2e3c5755a
test r10d, r10d
jne 0x2e3c57a70
mov ecx, eax
add eax, eax
add edx, r10d
mov dword [rsp + 0x54], eax
shl ecx, 0xc
mov word [rsi + 0xc22], ax
add eax, r11d
mov dword [rsi + 0xc48], ecx
mov word [rsi + 0xc86], dx
cmp eax, 0x20
jle 0x2e3c5758d
test r11d, r11d
jne 0x2e3c57a70
mov ecx, eax
add edx, r11d
add eax, eax
shl ecx, 0xb
mov dword [rsp + 0x58], eax
mov word [rsi + 0xc24], ax
add eax, r9d
mov dword [rsi + 0xc4c], ecx
mov word [rsi + 0xc88], dx
test r9d, r9d
je 0x2e3c575c0
cmp eax, 0x40
jg 0x2e3c57a70
mov ecx, eax
add eax, eax
add edx, r9d
mov dword [rsp + 0x5c], eax
shl ecx, 0xa
mov word [rsi + 0xc26], ax
add eax, r12d
mov dword [rsi + 0xc50], ecx
mov word [rsi + 0xc8a], dx
cmp eax, 0x80
jle 0x2e3c575f5
test r12d, r12d
jne 0x2e3c57a70
mov ecx, eax
add eax, eax
add edx, r12d
mov dword [rsp + 0x60], eax
shl ecx, 9
mov word [rsi + 0xc28], ax
add eax, r13d
mov dword [rsi + 0xc54], ecx
mov word [rsi + 0xc8c], dx
cmp eax, 0x100
jle 0x2e3c5762a
test r13d, r13d
jne 0x2e3c57a70
mov ecx, eax
add edx, r13d
add eax, eax
shl ecx, 8
mov dword [rsp + 0x64], eax
mov word [rsi + 0xc2a], ax
add eax, edi
mov dword [rsi + 0xc58], ecx
mov word [rsi + 0xc8e], dx
test edi, edi
je 0x2e3c5765d
cmp eax, 0x200
jg 0x2e3c57a70
add edx, edi
mov edi, dword [rsp + 0x2c]
mov ecx, eax
add eax, eax
mov dword [rsp + 0x68], eax
shl ecx, 7
mov word [rsi + 0xc2c], ax
add eax, edi
mov dword [rsi + 0xc5c], ecx
mov word [rsi + 0xc90], dx
cmp eax, 0x400
jle 0x2e3c57693
test edi, edi
jne 0x2e3c57a70
mov edi, dword [rsp + 0x30]
mov ecx, eax
add eax, eax
add edx, dword [rsp + 0x2c]
mov dword [rsp + 0x6c], eax
shl ecx, 6
mov word [rsi + 0xc2e], ax
add eax, edi
mov dword [rsi + 0xc60], ecx
mov word [rsi + 0xc92], dx
cmp eax, 0x800
jle 0x2e3c576cb
test edi, edi
jne 0x2e3c57a70
mov ecx, eax
add edx, dword [rsp + 0x30]
add eax, eax
shl ecx, 5
mov dword [rsp + 0x70], eax
mov word [rsi + 0xc30], ax
add eax, r14d
mov dword [rsi + 0xc64], ecx
mov word [rsi + 0xc94], dx
test r14d, r14d
je 0x2e3c57701
cmp eax, 0x1000
jg 0x2e3c57a70
mov edi, dword [rsp + 0x34]
mov ecx, eax
add eax, eax
add edx, r14d
mov dword [rsp + 0x74], eax
shl ecx, 4
mov word [rsi + 0xc32], ax
add eax, edi
mov dword [rsi + 0xc68], ecx
mov word [rsi + 0xc96], dx
cmp eax, 0x2000
jle 0x2e3c57738
test edi, edi
jne 0x2e3c57a70
mov edi, dword [rsp + 0x38]
lea ecx, [rax*8]
add eax, eax
add edx, dword [rsp + 0x34]
mov dword [rsp + 0x78], eax
mov word [rsi + 0xc34], ax
add eax, edi
mov dword [rsi + 0xc6c], ecx
mov word [rsi + 0xc98], dx
cmp eax, 0x4000
jle 0x2e3c57772
test edi, edi
jne 0x2e3c57a70
mov edi, dword [rsp + 0x3c]
lea ecx, [rax*4]
add eax, eax
add edx, dword [rsp + 0x38]
mov dword [rsp + 0x7c], eax
mov word [rsi + 0xc36], ax
add eax, edi
mov dword [rsi + 0xc70], ecx
mov word [rsi + 0xc9a], dx
cmp eax, 0x8000
jle 0x2e3c577ac
test edi, edi
jne 0x2e3c57a70
add eax, eax
lea r11, [0x2e3ed46c0]
mov edi, 0x10
mov dword [rsi + 0xc78], 0x10000
mov dword [rsi + 0xc74], eax
mov r12d, 1
xor eax, eax
jmp 0x2e3c577ef
add r9d, 1
mov dword [rsp + r10*4 + 0x40], r9d
add rax, 1
cmp rax, 0x20
je 0x2e3c56811
movzx r8d, byte [r11 + rax]
mov ecx, r8d
test r8d, r8d
je 0x2e3c577e1
movsxd r10, r8d
movzx r13d, word [rsi + r10*2 + 0xc18]
mov r9d, dword [rsp + r10*4 + 0x40]
mov edx, r9d
sub edx, r13d
movzx r13d, word [rsi + r10*2 + 0xc7c]
add edx, r13d
movsxd rdx, edx
mov byte [rsi + rdx + 0xc9c], r8b
mov word [rsi + rdx*2 + 0xdbc], ax
cmp r8d, 9
jg 0x2e3c577d8
mov r14d, r9d
lea edx, [r9 + r9]
mov r15d, r12d
mov r13d, r8d
sar r14d, 1
and edx, 0xaaaa
shl r15d, cl
mov ecx, edi
and r14d, 0x5555
sub ecx, r8d
shl r13d, 9
movsxd r15, r15d
or r14d, edx
or r13d, eax
mov edx, r14d
shl r14d, 2
sar edx, 2
and r14d, 0xcccc
and edx, 0x3333
or edx, r14d
mov r14d, edx
shl edx, 4
sar r14d, 4
and edx, 0xf0f0
and r14d, 0xf0f
or r14d, edx
mov edx, r14d
shl r14d, 8
sar edx, 8
movzx r14d, r14w
or edx, r14d
sar edx, cl
movsxd rdx, edx
nop dword [rax]
mov word [rsi + rdx*2 + 0x818], r13w
add rdx, r15
cmp edx, 0x1ff
jle 0x2e3c578b8
jmp 0x2e3c577d8
lea rcx, [0x2e3e69480]
lea rbx, str.zlib_corrupt
xor r15d, r15d
call fcn.2e3e59960
mov qword [rax], rbx
jmp 0x2e3c56ba1
lea rcx, [0x2e3e69480]
lea rbx, str.bad_sizes
xor r15d, r15d
call fcn.2e3e59960
mov qword [rax], rbx
jmp 0x2e3c56ba1
mov r10, qword [rsi + 8]
jmp 0x2e3c5795d
mov rcx, qword [rsi]
cmp rcx, r10
jae 0x2e3c5794b
lea r9, [rcx + 1]
mov qword [rsi], r9
movzx r9d, byte [rcx]
mov ecx, eax
shl r9d, cl
or edx, r9d
add eax, 8
mov dword [rsi + 0x14], edx
mov dword [rsi + 0x10], eax
cmp eax, 0x18
jg 0x2e3c56bcf
mov edi, edx
mov ecx, eax
shr edi, cl
test edi, edi
je 0x2e3c57930
mov qword [rsi], r10
jmp 0x2e3c56bcf
mov r10, qword [rsi + 8]
jmp 0x2e3c579ad
mov rcx, qword [rsi]
cmp rcx, r10
jae 0x2e3c5799b
lea r9, [rcx + 1]
mov qword [rsi], r9
movzx r9d, byte [rcx]
mov ecx, eax
shl r9d, cl
or edx, r9d
add eax, 8
mov dword [rsi + 0x14], edx
mov dword [rsi + 0x10], eax
cmp eax, 0x18
jg 0x2e3c56c07
mov r11d, edx
mov ecx, eax
shr r11d, cl
test r11d, r11d
je 0x2e3c57980
mov qword [rsi], r10
jmp 0x2e3c56c07
cmp eax, r9d
jl 0x2e3c57cd0
mov ecx, r9d
sub eax, r9d
shr r8d, cl
mov dword [rsi + 0x10], eax
mov dword [rsi + 0x14], r8d
test eax, eax
jg 0x2e3c56a55
jne 0x2e3c578d8
mov rdx, qword [rsi + 8]
mov rax, qword [rsi]
cmp rax, rdx
jae 0x2e3c57a30
lea r9, [rax + 1]
mov ecx, 1
mov qword [rsi], r9
movzx eax, byte [rax]
mov byte [rsp + 0x80], al
lea eax, [rcx + 1]
cmp r9, rdx
jb 0x2e3c57c0e
mov byte [rsp + rcx + 0x80], 0
cmp eax, 4
jne 0x2e3c57a4a
jmp 0x2e3c56b15
xor r10d, r10d
mov eax, 1
mov byte [rsp + r10 + 0x80], 0
cmp eax, 4
je 0x2e3c56b15
mov edx, 3
sub edx, eax
cdqe
lea r8, [rdx + 1]
lea rcx, [rsp + rax + 0x80]
xor edx, edx
call sub.msvcrt.dll_memset
jmp 0x2e3c56b15
lea rcx, [0x2e3e69480]
lea rbx, str.bad_codelengths
xor r15d, r15d
call fcn.2e3e59960
mov qword [rax], rbx
jmp 0x2e3c56ba1
lea rcx, [0x2e3e69480]
lea rbx, str.bad_huffman_code
xor r15d, r15d
call fcn.2e3e59960
mov qword [rax], rbx
jmp 0x2e3c56ba1
mov rdx, qword [rcx]
mov r9, qword [rcx + 8]
cmp rdx, r9
jb 0x2e3c57d50
lea rcx, [0x2e3e69480]
lea rbx, str.bad_zlib_header
call fcn.2e3e59960
mov qword [rax], rbx
xor r15d, r15d
jmp 0x2e3c56ba1
mov r14d, r9d
lea edx, [r9 + r9]
mov r15d, r12d
mov r13d, r8d
sar r14d, 1
and edx, 0xaaaa
shl r15d, cl
mov ecx, edi
and r14d, 0x5555
sub ecx, r8d
shl r13d, 9
movsxd r15, r15d
or r14d, edx
or r13d, eax
mov edx, r14d
shl r14d, 2
sar edx, 2
and r14d, 0xcccc
and edx, 0x3333
or edx, r14d
mov r14d, edx
shl edx, 4
sar r14d, 4
and edx, 0xf0f0
and r14d, 0xf0f
or r14d, edx
mov edx, r14d
shl r14d, 8
sar edx, 8
movzx r14d, r14w
or edx, r14d
sar edx, cl
movsxd rdx, edx
nop dword [rax]
mov word [rsi + rdx*2 + 0x34], r13w
add rdx, r15
cmp edx, 0x1ff
jle 0x2e3c57b60
jmp 0x2e3c572ad
mov edx, ecx
jmp 0x2e3c56aa6
mov rdx, rcx
mov rcx, rsi
call fcn.2e3c79d80
test eax, eax
je 0x2e3c57de0
mov rdx, qword [rsi]
mov rcx, qword [rsi + 0x18]
mov r8, rbx
call sub.msvcrt.dll_memcpy
add qword [rsi], rbx
add qword [rsi + 0x18], rbx
test ebp, ebp
jne 0x2e3c57d34
mov ecx, dword [rsi + 0x10]
mov edx, dword [rsi + 0x14]
jmp 0x2e3c567b0
mov edx, r10d
jmp 0x2e3c56aa6
mov r14d, r14d
xor eax, eax
nop dword [rax]
movzx ecx, byte [rdx + rax]
mov byte [r13 + rax], cl
add rax, 1
cmp r14, rax
jne 0x2e3c57be8
jmp 0x2e3c56a30
movsxd rcx, eax
lea eax, [rcx + 1]
cmp r9, rdx
jae 0x2e3c57a1d
lea r10, [r9 + 1]
movsxd r8, ecx
mov qword [rsi], r10
movzx r11d, byte [r9]
mov byte [rsp + r8 + 0x80], r11b
cmp eax, 4
je 0x2e3c56b15
lea r8d, [rcx + 2]
cmp r10, rdx
jae 0x2e3c57c88
lea r10, [r9 + 2]
cdqe
mov qword [rsi], r10
movzx r11d, byte [r9 + 1]
mov byte [rsp + rax + 0x80], r11b
cmp r8d, 4
je 0x2e3c56b15
lea eax, [rcx + 3]
xor ecx, ecx
cmp r10, rdx
jae 0x2e3c57c6c
lea rdx, [r9 + 3]
mov qword [rsi], rdx
movzx ecx, byte [r9 + 2]
movsxd r8, r8d
mov byte [rsp + r8 + 0x80], cl
cmp eax, 4
jne 0x2e3c57a4a
jmp 0x2e3c56b15
cdqe
mov byte [rsp + rax + 0x80], 0
cmp r8d, 4
je 0x2e3c56b15
mov eax, r8d
jmp 0x2e3c57a4a
lea rcx, [0x2e3e69480]
lea rbx, str.read_past_buffer
xor r15d, r15d
call fcn.2e3e59960
mov qword [rax], rbx
jmp 0x2e3c56ba1
mov r11, qword [rsi + 8]
mov ecx, eax
jmp 0x2e3c57d06
mov rax, qword [rsi]
cmp rax, r11
jae 0x2e3c57cf7
lea r10, [rax + 1]
mov qword [rsi], r10
movzx eax, byte [rax]
shl eax, cl
or r8d, eax
add ecx, 8
mov dword [rsi + 0x14], r8d
mov dword [rsi + 0x10], ecx
cmp ecx, 0x18
jg 0x2e3c57d3f
mov eax, r8d
shr eax, cl
test eax, eax
je 0x2e3c57ce0
mov qword [rsi], r11
mov eax, ecx
jmp 0x2e3c579d1
mov edx, r8d
jmp 0x2e3c56aa6
mov qword [rsi + 0x18], r13
test ebp, ebp
je 0x2e3c57bc1
mov r15d, 1
jmp 0x2e3c56ba1
mov eax, ecx
jmp 0x2e3c579d1
mov rcx, r13
xor eax, eax
jmp 0x2e3c569a9
lea r8, [rdx + 1]
mov qword [rcx], r8
movzx eax, byte [rdx]
mov ecx, eax
cmp r9, r8
jbe 0x2e3c57abe
lea r10, [rdx + 2]
mov qword [rsi], r10
movzx edx, byte [rdx + 1]
mov r8d, edx
cmp r9, r10
jbe 0x2e3c57abe
shl eax, 8
add edx, eax
mov rax, rdx
imul rdx, rdx, 0x8421085
mov r15d, eax
shr rdx, 0x20
sub r15d, edx
shr r15d, 1
add r15d, edx
shr r15d, 4
mov edx, r15d
shl edx, 5
sub edx, r15d
sub eax, edx
mov r15d, eax
jne 0x2e3c57abe
and r8d, 0x20
jne 0x2e3c57de8
and ecx, 0xf
cmp cl, 8
je 0x2e3c5679e
lea rcx, [0x2e3e69480]
lea rbx, str.bad_compression
call fcn.2e3e59960
mov qword [rax], rbx
jmp 0x2e3c56ba1
mov r15d, eax
jmp 0x2e3c56ba1
lea rcx, [0x2e3e69480]
lea rbx, str.no_preset_dict
call fcn.2e3e59960
mov qword [rax], rbx
jmp 0x2e3c56ba1