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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x7c
mov ecx, dword [esp + 0x90]
mov edx, dword [ecx]
mov eax, dword [ecx + 4]
mov ebx, dword [ecx + 0x1c]
lea eax, [edx + eax - 5]
mov dword [esp + 0xc], edx
mov edx, dword [ecx + 0xc]
mov edi, dword [ebx + 0x38]
mov ebp, dword [ebx + 0x2c]
mov dword [esp + 0x30], ebx
mov dword [esp + 0x3c], eax
mov eax, dword [ecx + 0x10]
mov dword [esp + 4], edx
mov dword [esp + 0x6c], ebp
mov dword [esp + 0x14], edi
lea ecx, [edx + eax - 0x101]
sub eax, dword [esp + 0x94]
mov dword [esp + 0x40], ecx
mov cl, byte [ebx + 0x58]
add eax, edx
mov edx, 0xffffffff
shl edx, cl
mov cl, byte [ebx + 0x5c]
mov dword [esp + 0x2c], eax
not edx
mov dword [esp + 0x78], edx
mov edx, 0xffffffff
shl edx, cl
mov ecx, eax
not edx
mov dword [esp + 0x74], edx
mov edx, dword [ebx + 0x34]
mov esi, edx
sub ecx, edx
mov dword [esp + 0x24], edx
mov dword [esp + 0x64], ecx
and esi, 0xffffffe0
mov ecx, edx
sub ecx, esi
mov dword [esp + 0x28], esi
lea esi, [ebp + 0x10]
mov dword [esp + 0x54], ecx
lea ecx, [edx + 0x10]
sub esi, eax
sub ecx, eax
add esi, edi
add ecx, edi
mov dword [esp + 0x60], esi
mov esi, dword [ebx + 0x3c]
mov dword [esp + 0x5c], ecx
lea ecx, [edx + ebp + 0x10]
sub ecx, eax
add ecx, edi
mov dword [esp + 0x58], ecx
mov ecx, eax
mov ecx, dword [ebx + 0x50]
mov eax, dword [ebx + 0x30]
mov dword [esp + 0x48], ecx
mov ecx, dword [ebx + 0x54]
mov dword [esp + 0x70], eax
mov eax, dword [ebx + 0x40]
mov dword [esp + 0x44], ecx
lea ecx, [edx + ebp]
mov dword [esp + 0x68], ecx
lea ecx, [edi + ebp]
mov ebp, dword [esp + 4]
mov dword [esp + 0x38], ecx
lea ecx, [edi + edx]
mov dword [esp + 0x34], ecx
mov ecx, dword [esp + 0x28]
lea ecx, [edi + ecx]
mov dword [esp + 0x50], ecx
cmp eax, 0xe
mov dword [esp + 4], ebp
ja 0x4a4470
mov ebp, dword [esp + 0xc]
mov ecx, eax
add eax, 0x10
movzx edx, byte [ebp]
shl edx, cl
add cl, 8
add edx, esi
movzx esi, byte [ebp + 1]
add ebp, 2
shl esi, cl
add esi, edx
jmp 0x4a4474
mov ebp, dword [esp + 0xc]
mov edi, esi
mov ebx, dword [esp + 0x48]
and edi, dword [esp + 0x78]
mov dl, byte [ebx + edi*4]
movzx ecx, byte [ebx + edi*4 + 1]
movzx ebx, word [ebx + edi*4 + 2]
jmp 0x4a44b4
movzx edi, bx
mov ebx, 0xffffffff
mov ecx, edx
shl ebx, cl
not ebx
and ebx, esi
add ebx, edi
mov edi, dword [esp + 0x48]
movzx edx, byte [edi + ebx*4]
movzx ecx, byte [edi + ebx*4 + 1]
movzx ebx, word [edi + ebx*4 + 2]
shr esi, cl
sub eax, ecx
test dl, dl
je 0x4a44d0
movzx edx, dl
test dl, 0x10
jne 0x4a4500
test dl, 0x40
je 0x4a4490
jmp 0x4a4aa6
mov ecx, dword [esp + 4]
mov dword [esp + 0xc], ebp
mov byte [ecx], bl
inc ecx
mov ebp, ecx
cmp ebp, dword [esp + 0x40]
jae 0x4a4ae2
mov ecx, dword [esp + 0xc]
cmp ecx, dword [esp + 0x3c]
jb 0x4a4439
jmp 0x4a4ae2
movzx ebx, bx
and edx, 0xf
je 0x4a4535
cmp eax, edx
jae 0x4a4522
movzx edi, byte [ebp]
mov dword [esp], ebx
lea ebx, [eax + 8]
mov ecx, eax
inc ebp
mov eax, ebx
mov ebx, dword [esp]
shl edi, cl
add esi, edi
mov edi, 0xffffffff
mov ecx, edx
sub eax, edx
shl edi, cl
not edi
and edi, esi
shr esi, cl
add ebx, edi
cmp eax, 0xe
mov dword [esp], ebx
ja 0x4a455e
movzx edx, byte [ebp]
mov ecx, eax
add eax, 0x10
shl edx, cl
add cl, 8
add edx, esi
movzx esi, byte [ebp + 1]
add ebp, 2
mov dword [esp + 0xc], ebp
shl esi, cl
add esi, edx
jmp 0x4a4562
mov dword [esp + 0xc], ebp
mov edi, esi
mov ebx, dword [esp + 0x44]
and edi, dword [esp + 0x74]
movzx ecx, byte [ebx + edi*4 + 1]
movzx edx, byte [ebx + edi*4]
movzx ebp, word [ebx + edi*4 + 2]
sub eax, ecx
shr esi, cl
test dl, 0x10
mov edi, esi
mov ebx, eax
jne 0x4a45c6
nop word [eax + eax]
test dl, 0x40
jne 0x4a4abf
mov esi, 0xffffffff
mov ecx, edx
movzx eax, bp
shl esi, cl
not esi
and esi, edi
add esi, eax
mov eax, dword [esp + 0x44]
movzx ecx, byte [eax + esi*4 + 1]
movzx edx, byte [eax + esi*4]
movzx ebp, word [eax + esi*4 + 2]
shr edi, cl
sub ebx, ecx
test dl, 0x10
je 0x4a4590
and edx, 0xf
movzx eax, bp
cmp ebx, edx
mov dword [esp + 8], eax
jae 0x4a4601
mov ebp, dword [esp + 0xc]
mov ecx, ebx
lea eax, [ebx + 8]
movzx esi, byte [ebp]
shl esi, cl
add esi, edi
cmp eax, edx
jae 0x4a4607
movzx edi, byte [ebp + 1]
mov ecx, eax
add ebx, 0x10
add ebp, 2
mov eax, ebx
mov dword [esp + 0xc], ebp
shl edi, cl
add esi, edi
jmp 0x4a460c
mov eax, ebx
mov esi, edi
jmp 0x4a460c
inc ebp
mov dword [esp + 0xc], ebp
mov ebp, dword [esp + 4]
mov edi, 0xffffffff
mov ecx, edx
mov ebx, dword [esp + 8]
sub eax, edx
shl edi, cl
not edi
and edi, esi
shr esi, cl
mov ecx, ebp
lea ebx, [edi + ebx]
sub ecx, dword [esp + 0x2c]
mov edx, ebx
sub edx, ecx
jbe 0x4a46f3
cmp edx, dword [esp + 0x70]
mov dword [esp + 0x10], ebx
mov ebx, edx
mov dword [esp + 0x20], edi
jbe 0x4a4659
mov ecx, dword [esp + 0x30]
cmp dword [ecx + 0x1bc4], 0
jne 0x4a4b36
mov edx, dword [esp + 0x24]
test edx, edx
je 0x4a4777
mov ecx, edx
sub ecx, ebx
jae 0x4a47fd
mov ecx, dword [esp + 0x68]
mov edi, dword [esp + 0x14]
sub ecx, ebx
sub ebx, edx
mov edx, dword [esp]
add ecx, edi
sub edx, ebx
jbe 0x4a4856
cmp ebx, 0x20
mov dword [esp + 0x4c], edx
jb 0x4a46b3
cmp ebp, dword [esp + 0x38]
jae 0x4a4948
mov edx, dword [esp + 0x64]
mov edi, dword [esp + 0x10]
lea edx, [ebp + edx]
sub edi, ebp
add edi, edx
cmp ecx, edi
jae 0x4a4948
mov edi, dword [esp + 0x28]
mov edx, ebx
nop dword [eax]
movzx ebx, byte [ecx]
inc ecx
mov byte [ebp], bl
inc ebp
dec edx
jne 0x4a46c0
mov ebx, dword [esp + 0x4c]
mov ecx, dword [esp + 0x24]
mov edx, ebx
sub edx, ecx
jbe 0x4a48d0
cmp ecx, 0x20
mov dword [esp + 0x1c], edx
jae 0x4a49b8
mov edi, dword [esp + 0x14]
jmp 0x4a4a90
neg edi
xor ecx, ecx
sub edi, dword [esp + 8]
mov dword [esp + 0x20], edi
lea edx, [ebp + edi + 2]
mov edi, dword [esp]
nop word cs:[eax + eax]
movzx ebx, byte [edx + ecx - 2]
add edi, 0xfffffffd
mov byte [ebp + ecx], bl
movzx ebx, byte [edx + ecx - 1]
mov byte [ebp + ecx + 1], bl
movzx ebx, byte [edx + ecx]
mov byte [ebp + ecx + 2], bl
add ecx, 3
cmp edi, 2
ja 0x4a4710
mov edi, ecx
sub edi, dword [esp]
je 0x4a4762
mov dl, byte [edx + ecx - 2]
mov ebp, dword [esp + 4]
inc edi
mov byte [ebp + ecx], dl
jne 0x4a47dc
lea ebp, [ebp + ecx + 1]
cmp ebp, dword [esp + 0x40]
jb 0x4a44e7
jmp 0x4a4ae2
mov ebp, dword [esp + 4]
add ebp, ecx
cmp ebp, dword [esp + 0x40]
jb 0x4a44e7
jmp 0x4a4ae2
mov ecx, dword [esp + 0x6c]
mov edi, dword [esp + 0x14]
mov edx, dword [esp]
sub ecx, ebx
add ecx, edi
sub edx, ebx
mov dword [esp + 0x1c], edx
jbe 0x4a4856
cmp ebx, 0x20
jb 0x4a47bd
cmp ebp, dword [esp + 0x38]
jae 0x4a48d8
mov edx, dword [esp + 0x2c]
lea edi, [ebp + edx]
mov edx, ebx
mov ebx, dword [esp + 0x10]
sub ebx, ebp
add ebx, edi
cmp ecx, ebx
mov ebx, edx
jae 0x4a48d8
mov edi, ebp
mov ebp, dword [esp + 0x10]
nop word cs:[eax + eax]
nop dword [eax]
movzx edx, byte [ecx]
inc ecx
mov byte [edi], dl
inc edi
dec ebx
jne 0x4a47d0
jmp 0x4a484a
mov edx, dword [esp + 0x20]
add edx, ebp
mov dl, byte [ecx + edx + 1]
mov byte [ebp + ecx + 1], dl
lea ebp, [ebp + ecx + 2]
cmp ebp, dword [esp + 0x40]
jb 0x4a44e7
jmp 0x4a4ae2
mov edi, dword [esp + 0x14]
mov edx, dword [esp]
add ecx, edi
sub edx, ebx
jbe 0x4a4856
cmp ebx, 0x20
mov dword [esp + 0x1c], edx
jb 0x4a4835
cmp ebp, dword [esp + 0x34]
jae 0x4a49dd
mov edx, dword [esp + 0x2c]
mov edi, dword [esp + 0x10]
lea edx, [ebp + edx]
sub edi, ebp
add edi, edx
cmp ecx, edi
jae 0x4a49dd
mov edi, ebp
mov ebp, dword [esp + 0x10]
nop dword [eax + eax]
movzx edx, byte [ecx]
inc ecx
mov byte [edi], dl
inc edi
dec ebx
jne 0x4a4840
mov ecx, edi
sub ecx, ebp
mov ebp, edi
mov ebx, dword [esp + 0x1c]
jmp 0x4a4859
mov ebx, dword [esp]
mov edx, ebx
cmp ebx, 3
jb 0x4a4894
mov ebx, edx
nop word cs:[eax + eax]
nop dword [eax]
movzx edx, byte [ecx]
add ebx, 0xfffffffd
mov byte [ebp], dl
movzx edx, byte [ecx + 1]
mov byte [ebp + 1], dl
movzx edx, byte [ecx + 2]
add ecx, 3
mov byte [ebp + 2], dl
add ebp, 3
cmp ebx, 2
ja 0x4a4870
mov edx, ebx
test edx, edx
je 0x4a44dd
mov ebx, edx
mov dh, byte [ecx]
cmp ebx, 1
mov byte [ebp], dh
jne 0x4a48b8
inc ebp
cmp ebp, dword [esp + 0x40]
jb 0x4a44e7
jmp 0x4a4ae2
mov cl, byte [ecx + 1]
mov byte [ebp + 1], cl
add ebp, 2
cmp ebp, dword [esp + 0x40]
jb 0x4a44e7
jmp 0x4a4ae2
mov edi, dword [esp + 0x14]
mov ecx, edi
jmp 0x4a4859
mov edx, ebx
mov dword [esp + 0x18], ebx
and edx, 0xffffffe0
mov dword [esp], edx
lea edi, [ebp + edx]
mov edx, ebp
xor ebp, ebp
sub edx, dword [esp + 0x20]
sub ebx, dword [esp]
add ecx, dword [esp]
sub edx, dword [esp + 8]
add edx, dword [esp + 0x60]
mov dword [esp + 8], edx
nop word cs:[eax + eax]
nop dword [eax]
mov edx, dword [esp + 8]
movups xmm0, xmmword [edx + ebp - 0x10]
movups xmm1, xmmword [edx + ebp]
mov edx, dword [esp + 4]
movups xmmword [edx + ebp], xmm0
movups xmmword [edx + ebp + 0x10], xmm1
add ebp, 0x20
cmp dword [esp], ebp
jne 0x4a4910
mov edx, dword [esp]
mov ebp, dword [esp + 0x10]
cmp dword [esp + 0x18], edx
jne 0x4a47d0
jmp 0x4a484a
mov edx, ebp
mov edi, ebx
mov dword [esp + 0x18], ebx
mov ebx, edx
mov edx, dword [esp + 0x18]
and edi, 0xffffffe0
sub ebx, dword [esp + 0x20]
lea ebp, [ebp + edi]
mov dword [esp], edi
add ecx, edi
sub edx, edi
xor edi, edi
sub ebx, dword [esp + 8]
add ebx, dword [esp + 0x58]
mov dword [esp + 8], ebx
nop word cs:[eax + eax]
mov ebx, dword [esp + 8]
movups xmm0, xmmword [ebx + edi - 0x10]
movups xmm1, xmmword [ebx + edi]
mov ebx, dword [esp + 4]
movups xmmword [ebx + edi], xmm0
movups xmmword [ebx + edi + 0x10], xmm1
add edi, 0x20
cmp dword [esp], edi
jne 0x4a4980
mov edi, dword [esp]
cmp dword [esp + 0x18], edi
mov edi, dword [esp + 0x28]
jne 0x4a46c0
jmp 0x4a46cb
cmp ebp, dword [esp + 0x34]
jae 0x4a4a48
mov ecx, dword [esp + 0x24]
lea ecx, [ebp + ecx]
cmp dword [esp + 0x14], ecx
jae 0x4a4a48
mov ecx, dword [esp + 0x24]
mov edi, dword [esp + 0x14]
jmp 0x4a4a90
mov edx, ebx
mov dword [esp + 0x18], ebx
and edx, 0xffffffe0
mov dword [esp], edx
lea edi, [ebp + edx]
mov edx, ebp
xor ebp, ebp
sub edx, dword [esp + 0x20]
sub ebx, dword [esp]
add ecx, dword [esp]
sub edx, dword [esp + 8]
add edx, dword [esp + 0x5c]
mov dword [esp + 8], edx
nop word [eax + eax]
mov edx, dword [esp + 8]
movups xmm0, xmmword [edx + ebp - 0x10]
movups xmm1, xmmword [edx + ebp]
mov edx, dword [esp + 4]
movups xmmword [edx + ebp], xmm0
movups xmmword [edx + ebp + 0x10], xmm1
add ebp, 0x20
cmp dword [esp], ebp
jne 0x4a4a10
mov edx, dword [esp]
mov ebp, dword [esp + 0x10]
cmp dword [esp + 0x18], edx
jne 0x4a4840
jmp 0x4a484a
mov edx, dword [esp + 0x14]
lea ecx, [ebp + edi]
mov dword [esp + 4], ecx
xor ecx, ecx
movups xmm0, xmmword [edx + ecx]
movups xmm1, xmmword [edx + ecx + 0x10]
movups xmmword [ebp + ecx], xmm0
movups xmmword [ebp + ecx + 0x10], xmm1
add ecx, 0x20
cmp edi, ecx
jne 0x4a4a56
cmp dword [esp + 0x24], edi
mov ecx, dword [esp + 0x54]
mov edi, dword [esp + 0x50]
mov ebp, dword [esp + 4]
je 0x4a4a9b
nop word cs:[eax + eax]
nop dword [eax]
movzx edx, byte [edi]
inc edi
mov byte [ebp], dl
inc ebp
dec ecx
jne 0x4a4a90
mov ecx, ebp
sub ecx, dword [esp + 0x10]
jmp 0x4a4850
mov dword [esp + 0xc], ebp
mov ebp, dword [esp + 4]
mov edi, 0x3f3f
mov ecx, str.invalid_literal_length_code
test dl, 0x20
je 0x4a4acc
jmp 0x4a4adb
mov ebp, dword [esp + 4]
mov ecx, str.invalid_distance_code
mov eax, ebx
mov esi, edi
mov edx, dword [esp + 0x90]
mov edi, 0x3f51
mov dword [edx + 0x18], ecx
mov ecx, dword [esp + 0x30]
mov dword [ecx + 4], edi
mov edi, dword [esp + 0xc]
mov ecx, eax
mov edx, dword [esp + 0x3c]
and eax, 7
shr ecx, 3
sub edi, ecx
mov ecx, dword [esp + 0x90]
add edx, 5
sub edx, edi
mov dword [ecx], edi
mov dword [ecx + 0xc], ebp
mov dword [ecx + 4], edx
mov edx, dword [esp + 0x40]
add edx, 0x101
sub edx, ebp
mov dword [ecx + 0x10], edx
mov edx, 0xffffffff
mov ecx, eax
shl edx, cl
not edx
and edx, esi
mov esi, dword [esp + 0x30]
mov dword [esi + 0x3c], edx
mov dword [esi + 0x40], eax
add esp, 0x7c
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, str.invalid_distance_too_far_back
jmp 0x4a4acc