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

Disassembly:
mov qword [rsp + 8], rcx
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x38
mov rdi, qword [rcx + 0x28]
mov r13d, dword [rcx + 8]
mov rsi, qword [rcx]
mov r8, qword [rcx + 0x10]
mov ecx, dword [rcx + 0x18]
mov r9, qword [rdi + 0x58]
mov r14d, dword [rdi + 0x28]
mov ebx, dword [rdi + 0x38]
mov r11d, dword [rdi + 0x3c]
mov r12, qword [rdi + 0x50]
sub edx, ecx
dec r8
mov eax, edx
lea r15d, [rcx - 0x101]
mov ecx, dword [rdi + 0x60]
mov qword [rsp], rdi
mov ebp, 1
dec rsi
sub r13d, 5
mov rdx, r8
add r15, r8
sub rdx, rax
mov eax, dword [rdi + 0x20]
add r13, rsi
mov qword [rsp + 0x10], rdx
mov dword [rsp + 0x90], eax
mov eax, dword [rdi + 0x24]
mov edx, ebp
mov dword [rsp + 0x98], eax
mov rax, qword [rdi + 0x30]
shl edx, cl
mov ecx, dword [rdi + 0x64]
mov edi, ebp
dec edx
shl edi, cl
mov qword [rsp + 0x18], rax
dec edi
mov qword [rsp + 8], r9
mov qword [rsp + 0x20], rdx
mov dword [rsp + 0x88], edi
nop dword [rax]
cmp r11d, 0xf
jae 0x1402316f4
movzx eax, byte [rsi + 1]
mov ecx, r11d
add rsi, 2
shl eax, cl
lea ecx, [r11 + 8]
add ebx, eax
movzx eax, byte [rsi]
shl eax, cl
add ebx, eax
add r11d, 0x10
mov eax, ebx
and rax, rdx
mov r10d, dword [r12 + rax*4]
mov eax, r10d
movzx edx, r10b
shr eax, 8
movzx ecx, al
shr ebx, cl
sub r11d, ecx
test r10b, r10b
je 0x14023174e
test dl, 0x10
jne 0x14023175d
test dl, 0x40
jne 0x140231a1f
mov ecx, edx
shr r10d, 0x10
mov eax, ebp
shl eax, cl
dec eax
and eax, ebx
add eax, r10d
mov r10d, dword [r12 + rax*4]
mov eax, r10d
movzx edx, r10b
shr eax, 8
movzx ecx, al
shr ebx, cl
sub r11d, ecx
test r10b, r10b
jne 0x140231714
inc r8
shr r10d, 0x10
mov byte [r8], r10b
jmp 0x140231a0b
shr r10d, 0x10
and edx, 0xf
je 0x14023178f
cmp r11d, edx
jae 0x14023177d
movzx eax, byte [rsi + 1]
inc rsi
mov ecx, r11d
shl eax, cl
add ebx, eax
add r11d, 8
mov ecx, edx
mov eax, ebp
shl eax, cl
dec eax
and eax, ebx
shr ebx, cl
add r10d, eax
sub r11d, edx
cmp r11d, 0xf
jae 0x1402317b3
movzx eax, byte [rsi + 1]
mov ecx, r11d
add rsi, 2
shl eax, cl
lea ecx, [r11 + 8]
add ebx, eax
movzx eax, byte [rsi]
shl eax, cl
add ebx, eax
add r11d, 0x10
mov eax, ebx
mov ecx, edi
and rcx, rax
mov edi, dword [r9 + rcx*4]
mov eax, edi
movzx edx, dil
shr eax, 8
movzx ecx, al
shr ebx, cl
sub r11d, ecx
test dl, 0x10
jne 0x140231806
test dl, 0x40
jne 0x140231a4b
mov ecx, edx
shr edi, 0x10
mov eax, ebp
shl eax, cl
dec eax
and eax, ebx
add eax, edi
mov edi, dword [r9 + rax*4]
mov eax, edi
movzx edx, dil
shr eax, 8
movzx ecx, al
shr ebx, cl
sub r11d, ecx
test dl, 0x10
je 0x1402317d4
and edx, 0xf
shr edi, 0x10
cmp r11d, edx
jae 0x14023183a
movzx eax, byte [rsi + 1]
inc rsi
mov ecx, r11d
shl eax, cl
add r11d, 8
add ebx, eax
cmp r11d, edx
jae 0x14023183a
movzx eax, byte [rsi + 1]
inc rsi
mov ecx, r11d
shl eax, cl
add ebx, eax
add r11d, 8
mov ecx, edx
mov eax, ebp
sub r11d, edx
shl eax, cl
dec eax
and eax, ebx
shr ebx, cl
add edi, eax
mov eax, r8d
sub eax, dword [rsp + 0x10]
cmp edi, eax
jbe 0x14023199d
mov ecx, edi
sub ecx, eax
cmp ecx, dword [rsp + 0x98]
ja 0x140231a6a
mov rdx, qword [rsp + 0x18]
lea r9, [rdx - 1]
test r14d, r14d
jne 0x1402318a9
mov eax, dword [rsp + 0x90]
sub eax, ecx
add r9, rax
cmp ecx, r10d
jae 0x14023192b
sub r10d, ecx
movzx eax, byte [r9 + 1]
inc r8
lea r9, [r9 + 1]
mov byte [r8], al
dec ecx
jne 0x140231891
jmp 0x140231923
mov eax, r14d
sub eax, ecx
cmp r14d, ecx
jae 0x140231905
add eax, dword [rsp + 0x90]
sub ecx, r14d
add r9, rax
cmp ecx, r10d
jae 0x14023192b
sub r10d, ecx
sub r9, r8
nop dword [rax + rax]
movzx eax, byte [r9 + r8 + 1]
inc r8
mov byte [r8], al
dec ecx
jne 0x1402318d0
lea r9, [rdx - 1]
cmp r14d, r10d
jae 0x14023192b
mov ecx, r14d
sub r10d, r14d
nop
movzx eax, byte [r9 + 1]
inc r8
lea r9, [r9 + 1]
mov byte [r8], al
dec ecx
jne 0x1402318f0
jmp 0x140231923
add r9, rax
cmp ecx, r10d
jae 0x14023192b
sub r10d, ecx
movzx eax, byte [r9 + 1]
inc r8
lea r9, [r9 + 1]
mov byte [r8], al
dec ecx
jne 0x140231910
mov eax, edi
mov r9, r8
sub r9, rax
cmp r10d, 2
jbe 0x14023196b
lea ecx, [r10 - 3]
mov eax, 0xaaaaaaab
mul ecx
shr edx, 1
lea ecx, [rdx + 1]
movzx eax, byte [r9 + 1]
add r9, 3
add r8, 3
mov byte [r8 - 2], al
movzx eax, byte [r9 - 1]
add r10d, 0xfffffffd
mov byte [r8 - 1], al
movzx eax, byte [r9]
mov byte [r8], al
dec rcx
jne 0x140231941
test r10d, r10d
je 0x1402319ff
movzx eax, byte [r9 + 1]
mov edi, dword [rsp + 0x88]
inc r8
mov byte [r8], al
cmp r10d, ebp
jbe 0x140231996
movzx eax, byte [r9 + 2]
inc r8
mov byte [r8], al
mov r9, qword [rsp + 8]
jmp 0x140231a0b
mov eax, edi
mov rcx, r8
sub rcx, rax
nop word [rax + rax]
movzx eax, byte [rcx + 1]
add r8, 3
lea rcx, [rcx + 3]
mov byte [r8 - 2], al
movzx eax, byte [rcx - 1]
add r10d, 0xfffffffd
mov byte [r8 - 1], al
movzx eax, byte [rcx]
mov byte [r8], al
cmp r10d, 2
ja 0x1402319b0
test r10d, r10d
je 0x140231a04
movzx eax, byte [rcx + 1]
mov edi, dword [rsp + 0x88]
inc r8
mov byte [r8], al
cmp r10d, ebp
jbe 0x140231a0b
movzx eax, byte [rcx + 2]
inc r8
mov byte [r8], al
jmp 0x140231a0b
mov r9, qword [rsp + 8]
mov edi, dword [rsp + 0x88]
cmp rsi, r13
jae 0x140231a73
cmp r8, r15
jae 0x140231a73
mov rdx, qword [rsp + 0x20]
jmp 0x1402316d0
mov rdi, qword [rsp]
test dl, 0x20
mov rdx, qword [rsp + 0x80]
je 0x140231a38
mov dword [rdi], SafeArrayGetDim
jmp 0x140231a7f
lea rax, str.invalid_literal_length_code
mov qword [rdx + 0x20], rax
mov dword [rdi], 0x1b
jmp 0x140231a7f
lea rax, str.invalid_distance_code
mov rdx, qword [rsp + 0x80]
mov rdi, qword [rsp]
mov qword [rdx + 0x20], rax
mov dword [rdi], 0x1b
jmp 0x140231a7f
lea rax, str.invalid_distance_too_far_back
jmp 0x140231a52
mov rdx, qword [rsp + 0x80]
mov rdi, qword [rsp]
mov ecx, r11d
shr ecx, 3
mov eax, ecx
sub rsi, rax
lea eax, [rcx*8]
sub r11d, eax
lea rax, [rsi + 1]
sub r13, rsi
mov qword [rdx], rax
lea rax, [r8 + 1]
mov ecx, r11d
mov qword [rdx + 0x10], rax
shl ebp, cl
lea rax, [r13 + 5]
mov dword [rdx + 8], eax
dec ebp
and ebx, ebp
sub r15, r8
lea rax, [r15 + 0x101]
mov dword [rdx + 0x18], eax
mov dword [rdi + 0x38], ebx
mov dword [rdi + 0x3c], r11d
add rsp, 0x38
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret