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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x9c
mov esi, dword [esp + 0xb0]
mov eax, dword [esi + 0x1c]
mov edx, dword [esi]
mov dword [esp + 4], edx
mov ecx, dword [esi + 4]
lea ecx, [ecx + edx - 5]
mov dword [esp + 0x4c], ecx
mov ebx, dword [esi + 0x10]
mov edi, ebx
sub edi, dword [esp + 0xb4]
mov cl, byte [eax + 0x58]
mov ebp, 0xffffffff
shl ebp, cl
mov ecx, dword [esi + 0xc]
add edi, ecx
mov dword [esp], ecx
mov dword [esp + 0x38], edi
mov edx, dword [eax + 0x34]
mov edi, eax
mov dword [esp + 0x30], eax
add ecx, ebx
mov eax, dword [esp + 0xb4]
lea esi, [edx + eax]
mov dword [esp + 0x24], edx
sub ecx, esi
mov dword [esp + 0x88], ecx
sub esi, ebx
mov ecx, dword [edi + 0x2c]
lea edi, [edx + ecx]
mov dword [esp + 0x44], ecx
mov dword [esp + 0x8c], edi
add edi, eax
sub edi, ebx
add eax, ecx
sub eax, ebx
mov dword [esp + 0x34], eax
mov ecx, dword [esp]
lea eax, [ebx + ecx]
add eax, 0xfffffeff
mov dword [esp + 0x48], eax
not ebp
mov dword [esp + 0x98], ebp
mov eax, ecx
mov edx, dword [esp + 0x30]
mov cl, byte [edx + 0x5c]
mov ebp, 0xffffffff
shl ebp, cl
not ebp
mov dword [esp + 0x94], ebp
mov ebx, dword [esp + 0x24]
lea ecx, [ebx - 0x20]
mov dword [esp + 0x74], ecx
shr ecx, 5
add ecx, 1
mov ebp, ebx
and ebp, 0xffffffe0
and ebx, 0x1f
mov dword [esp + 0x6c], ebx
mov ebx, ecx
and ebx, 3
and ecx, 0xfffffffc
mov dword [esp + 0x54], ecx
sub esi, eax
mov ecx, dword [edx + 0x38]
lea edx, [esi + ecx]
add edx, 0x70
mov dword [esp + 0x64], edx
lea edx, [esi + ecx]
add edx, 0x10
mov dword [esp + 0x80], edx
sub edi, eax
lea edx, [edi + ecx]
add edx, 0x70
mov dword [esp + 0x60], edx
lea edx, [edi + ecx + 0x10]
mov dword [esp + 0x7c], edx
mov dword [esp + 0x68], ebx
mov edx, ebx
shl edx, 5
mov esi, dword [esp + 0x34]
sub esi, eax
lea eax, [esi + ecx]
add eax, 0x70
mov dword [esp + 0x78], eax
lea eax, [esi + ecx + 0x10]
mov dword [esp + 0x84], eax
mov ebx, dword [esp + 0x30]
mov eax, dword [ebx + 0x30]
mov dword [esp + 0x90], eax
mov edi, dword [ebx + 0x3c]
mov eax, dword [ebx + 0x40]
mov esi, dword [ebx + 0x50]
mov dword [esp + 0x34], esi
mov esi, dword [ebx + 0x54]
mov dword [esp + 0x50], esi
mov esi, dword [esp + 0x44]
lea esi, [ecx + esi]
mov dword [esp + 0x40], esi
mov esi, dword [esp + 0x24]
lea esi, [ecx + esi]
mov dword [esp + 0x3c], esi
mov ebx, eax
mov dword [esp + 0x70], ebp
lea eax, [ecx + ebp]
mov dword [esp + 0x5c], eax
mov ebp, edx
mov edx, dword [esp + 4]
mov dword [esp + 0x20], ecx
lea eax, [ecx + 0x10]
mov dword [esp + 0x58], eax
cmp ebx, 0xe
ja 0x4a9860
movzx eax, byte [edx]
mov ecx, ebx
shl eax, cl
add eax, edi
movzx edi, byte [edx + 1]
add cl, 8
shl edi, cl
add edx, 2
mov dword [esp + 4], edx
add edi, eax
add ebx, 0x10
jmp 0x4a9864
mov dword [esp + 4], edx
mov eax, edi
and eax, dword [esp + 0x98]
mov esi, dword [esp + 0x34]
movzx ecx, byte [esi + eax*4 + 1]
shr edi, cl
movzx edx, word [esi + eax*4 + 2]
mov al, byte [esi + eax*4]
sub ebx, ecx
test al, al
je 0x4a98cb
nop word cs:[eax + eax]
movzx eax, al
test al, 0x10
jne 0x4a9900
test al, 0x40
jne 0x4aa3d0
mov esi, 0xffffffff
mov ecx, eax
shl esi, cl
movzx eax, dx
not esi
and esi, edi
add esi, eax
mov eax, dword [esp + 0x34]
movzx ecx, byte [eax + esi*4 + 1]
shr edi, cl
movzx edx, word [eax + esi*4 + 2]
movzx eax, byte [eax + esi*4]
sub ebx, ecx
test al, al
jne 0x4a9890
mov eax, dword [esp]
mov byte [eax], dl
add eax, 1
mov dword [esp], eax
mov edx, dword [esp + 4]
cmp edx, dword [esp + 0x4c]
jae 0x4aa403
mov eax, dword [esp + 0x48]
cmp dword [esp], eax
jb 0x4a982c
jmp 0x4aa403
movzx ecx, dx
mov dword [esp + 8], ecx
test al, 0xf
je 0x4a993e
and eax, 0xf
cmp ebx, eax
jae 0x4a9929
mov esi, dword [esp + 4]
movzx edx, byte [esi]
mov ecx, ebx
shl edx, cl
add esi, 1
mov dword [esp + 4], esi
add edi, edx
add ebx, 8
mov edx, 0xffffffff
mov ecx, eax
shl edx, cl
not edx
and edx, edi
add dword [esp + 8], edx
shr edi, cl
sub ebx, eax
mov edx, dword [esp + 4]
cmp ebx, 0xe
mov dword [esp + 0x1c], ebp
ja 0x4a996b
movzx eax, byte [edx]
mov ecx, ebx
shl eax, cl
add eax, edi
movzx edi, byte [edx + 1]
add cl, 8
shl edi, cl
add edx, 2
mov dword [esp + 4], edx
add edi, eax
add ebx, 0x10
jmp 0x4a996f
mov dword [esp + 4], edx
mov ebp, ebx
mov eax, edi
and eax, dword [esp + 0x94]
mov esi, dword [esp + 0x50]
movzx edx, word [esi + eax*4 + 2]
movzx ecx, byte [esi + eax*4 + 1]
shr edi, cl
mov bl, byte [esi + eax*4]
sub ebp, ecx
movzx ecx, bl
mov esi, edi
mov eax, ebp
test cl, 0x10
mov ebp, dword [esp + 8]
jne 0x4a99d7
nop
test cl, 0x40
jne 0x4aa3e0
movzx edx, dx
mov edi, 0xffffffff
shl edi, cl
not edi
and edi, esi
add edi, edx
mov ebx, dword [esp + 0x50]
movzx edx, word [ebx + edi*4 + 2]
movzx ecx, byte [ebx + edi*4 + 1]
shr esi, cl
movzx ebx, byte [ebx + edi*4]
sub eax, ecx
movzx ecx, bl
test cl, 0x10
je 0x4a99a0
and bl, 0xf
movzx ecx, bl
cmp eax, ecx
jae 0x4a9a15
mov dword [esp + 8], ebp
mov ebx, dword [esp + 4]
movzx edi, byte [ebx]
mov ebp, ecx
mov ecx, eax
shl edi, cl
add edi, esi
lea ecx, [eax + 8]
mov dword [esp + 0xc], ebp
cmp ecx, ebp
jae 0x4a9a1b
movzx esi, byte [ebx + 1]
shl esi, cl
add ebx, 2
mov dword [esp + 4], ebx
add edi, esi
add eax, 0x10
mov ebx, eax
jmp 0x4a9a24
mov edi, esi
mov ebx, eax
jmp 0x4a9a2c
add ebx, 1
mov dword [esp + 4], ebx
mov ebx, ecx
mov ecx, dword [esp + 0xc]
mov ebp, dword [esp + 8]
movzx eax, dx
mov edx, 0xffffffff
shl edx, cl
not edx
and edx, edi
shr edi, cl
mov dword [esp + 0x18], eax
mov dword [esp + 0x28], edx
lea esi, [edx + eax]
sub ebx, ecx
mov eax, dword [esp]
sub eax, dword [esp + 0x38]
mov edx, esi
sub edx, eax
jbe 0x4a9c08
cmp edx, dword [esp + 0x90]
jbe 0x4a9a74
mov eax, dword [esp + 0x30]
cmp dword [eax + 0x1bc4], 0
jne 0x4aa459
mov eax, dword [esp + 0x24]
test eax, eax
je 0x4a9c95
mov ecx, eax
sub ecx, edx
jae 0x4a9e95
mov ecx, dword [esp + 0x8c]
sub ecx, edx
add ecx, dword [esp + 0x20]
sub edx, eax
mov eax, ebp
sub eax, edx
jbe 0x4aa098
cmp edx, 0x20
mov dword [esp + 0xc], ebx
mov dword [esp + 0x10], esi
mov dword [esp + 0x14], eax
jb 0x4a9bc5
mov eax, dword [esp + 0x40]
cmp dword [esp], eax
jae 0x4a9ae1
mov eax, dword [esp + 0x88]
mov esi, dword [esp]
add eax, esi
mov ebp, edx
mov edx, dword [esp + 0x10]
sub edx, esi
add edx, eax
cmp ecx, edx
mov edx, ebp
jb 0x4a9bc5
mov dword [esp + 8], edx
and edx, 0xffffffe0
mov dword [esp + 0x2c], edx
lea eax, [edx - 0x20]
mov esi, eax
shr esi, 5
add esi, 1
mov ebp, esi
and ebp, 3
xor edx, edx
cmp eax, 0x60
jb 0x4a9b70
and esi, 0xfffffffc
mov eax, dword [esp]
sub eax, dword [esp + 0x28]
sub eax, dword [esp + 0x18]
add eax, dword [esp + 0x60]
xor edx, edx
movups xmm0, xmmword [eax + edx - 0x70]
movups xmm1, xmmword [eax + edx - 0x60]
mov ebx, dword [esp]
movups xmmword [ebx + edx], xmm0
movups xmmword [ebx + edx + 0x10], xmm1
movups xmm0, xmmword [eax + edx - 0x50]
movups xmm1, xmmword [eax + edx - 0x40]
movups xmmword [ebx + edx + 0x20], xmm0
movups xmmword [ebx + edx + 0x30], xmm1
movups xmm0, xmmword [eax + edx - 0x30]
movups xmm1, xmmword [eax + edx - 0x20]
movups xmmword [ebx + edx + 0x40], xmm0
movups xmmword [ebx + edx + 0x50], xmm1
movups xmm0, xmmword [eax + edx - 0x10]
movups xmm1, xmmword [eax + edx]
movups xmmword [ebx + edx + 0x60], xmm0
movups xmmword [ebx + edx + 0x70], xmm1
sub edx, 0xffffff80
add esi, 0xfffffffc
jne 0x4a9b17
test ebp, ebp
je 0x4a9ba9
mov esi, dword [esp]
lea eax, [edx + esi]
sub eax, dword [esp + 0x28]
sub eax, dword [esp + 0x18]
add eax, dword [esp + 0x7c]
add edx, esi
add edx, 0x10
shl ebp, 5
xor esi, esi
movups xmm0, xmmword [eax + esi - 0x10]
movups xmm1, xmmword [eax + esi]
movups xmmword [edx + esi - 0x10], xmm0
movups xmmword [edx + esi], xmm1
add esi, 0x20
cmp ebp, esi
jne 0x4a9b90
mov ebp, dword [esp + 0x2c]
add dword [esp], ebp
mov edx, dword [esp + 8]
cmp edx, ebp
mov ebx, dword [esp + 0xc]
je 0x4aa203
and edx, 0x1f
add ecx, ebp
mov ebp, dword [esp + 4]
lea eax, [edx - 1]
mov esi, edx
and esi, 7
mov dword [esp + 8], edx
je 0x4aa19b
xor edx, edx
nop dword [eax]
movzx ebx, byte [ecx + edx]
mov ebp, dword [esp]
mov byte [ebp + edx], bl
add edx, 1
cmp esi, edx
jne 0x4a9be0
add dword [esp], edx
sub dword [esp + 8], edx
add ecx, edx
mov edx, dword [esp + 4]
mov ebx, dword [esp + 0xc]
jmp 0x4aa19d
mov dword [esp + 0xc], ebx
mov ecx, dword [esp]
sub ecx, esi
neg esi
add ecx, 2
xor eax, eax
mov edx, ebp
nop word [eax + eax]
movzx ebx, byte [ecx + eax - 2]
mov ebp, dword [esp]
mov byte [ebp + eax], bl
movzx ebx, byte [ecx + eax - 1]
mov byte [ebp + eax + 1], bl
movzx ebx, byte [ecx + eax]
mov byte [ebp + eax + 2], bl
add edx, 0xfffffffd
add eax, 3
cmp edx, 2
ja 0x4a9c20
mov ecx, eax
mov edx, dword [esp + 8]
sub ecx, edx
je 0x4a9c8d
neg edx
lea ecx, [eax + edx]
add ecx, 1
mov ebx, dword [esp]
lea edx, [ebx + esi]
add edx, 2
mov dl, byte [edx + eax - 2]
mov byte [ebx + eax], dl
test ecx, ecx
je 0x4aa17f
mov edx, dword [esp]
add esi, edx
mov cl, byte [eax + esi + 1]
mov byte [edx + eax + 1], cl
lea ebp, [edx + eax]
add ebp, 2
mov dword [esp], ebp
jmp 0x4aa18a
add dword [esp], eax
jmp 0x4aa18a
mov ecx, dword [esp + 0x44]
sub ecx, edx
add ecx, dword [esp + 0x20]
mov eax, ebp
sub eax, edx
jbe 0x4aa098
mov dword [esp + 0x14], eax
cmp edx, 0x20
mov dword [esp + 0x10], esi
jb 0x4a9dd5
mov eax, dword [esp + 0x40]
cmp dword [esp], eax
jae 0x4a9ce0
mov eax, dword [esp + 0x38]
mov esi, dword [esp]
add eax, esi
mov ebp, edx
mov edx, dword [esp + 0x10]
sub edx, esi
add edx, eax
cmp ecx, edx
mov edx, ebp
jb 0x4a9dd5
mov dword [esp + 0xc], ebx
mov dword [esp + 8], edx
and edx, 0xffffffe0
mov dword [esp + 0x2c], edx
lea eax, [edx - 0x20]
mov esi, eax
shr esi, 5
add esi, 1
mov ebp, esi
and ebp, 3
xor edx, edx
cmp eax, 0x60
jb 0x4a9d79
and esi, 0xfffffffc
mov eax, dword [esp]
sub eax, dword [esp + 0x28]
sub eax, dword [esp + 0x18]
add eax, dword [esp + 0x78]
xor edx, edx
nop word [eax + eax]
movups xmm0, xmmword [eax + edx - 0x70]
movups xmm1, xmmword [eax + edx - 0x60]
mov ebx, dword [esp]
movups xmmword [ebx + edx], xmm0
movups xmmword [ebx + edx + 0x10], xmm1
movups xmm0, xmmword [eax + edx - 0x50]
movups xmm1, xmmword [eax + edx - 0x40]
movups xmmword [ebx + edx + 0x20], xmm0
movups xmmword [ebx + edx + 0x30], xmm1
movups xmm0, xmmword [eax + edx - 0x30]
movups xmm1, xmmword [eax + edx - 0x20]
movups xmmword [ebx + edx + 0x40], xmm0
movups xmmword [ebx + edx + 0x50], xmm1
movups xmm0, xmmword [eax + edx - 0x10]
movups xmm1, xmmword [eax + edx]
movups xmmword [ebx + edx + 0x60], xmm0
movups xmmword [ebx + edx + 0x70], xmm1
sub edx, 0xffffff80
add esi, 0xfffffffc
jne 0x4a9d20
test ebp, ebp
je 0x4a9db9
mov esi, dword [esp]
lea eax, [edx + esi]
sub eax, dword [esp + 0x28]
sub eax, dword [esp + 0x18]
add eax, dword [esp + 0x84]
add edx, esi
add edx, 0x10
shl ebp, 5
xor esi, esi
nop dword [eax]
movups xmm0, xmmword [eax + esi - 0x10]
movups xmm1, xmmword [eax + esi]
movups xmmword [edx + esi - 0x10], xmm0
movups xmmword [edx + esi], xmm1
add esi, 0x20
cmp ebp, esi
jne 0x4a9da0
mov ebp, dword [esp + 0x2c]
add dword [esp], ebp
mov edx, dword [esp + 8]
cmp edx, ebp
mov ebx, dword [esp + 0xc]
je 0x4aa083
and edx, 0x1f
add ecx, ebp
mov eax, dword [esp + 4]
lea ebp, [edx - 1]
mov esi, edx
and esi, 7
mov dword [esp + 8], edx
mov dword [esp + 0x18], ebp
je 0x4a9e23
mov dword [esp + 0xc], ebx
xor edx, edx
nop word cs:[eax + eax]
nop dword [eax + eax]
movzx ebx, byte [ecx + edx]
mov ebp, dword [esp]
mov byte [ebp + edx], bl
add edx, 1
cmp esi, edx
jne 0x4a9e00
add dword [esp], edx
sub dword [esp + 8], edx
add ecx, edx
mov eax, dword [esp + 4]
mov ebx, dword [esp + 0xc]
mov edx, dword [esp + 0x10]
mov esi, dword [esp + 0x14]
cmp dword [esp + 0x18], 7
jb 0x4aa08f
xor eax, eax
mov ebp, dword [esp + 8]
nop dword [eax]
movzx edx, byte [ecx + eax]
mov esi, dword [esp]
mov byte [esi + eax], dl
movzx edx, byte [ecx + eax + 1]
mov byte [esi + eax + 1], dl
movzx edx, byte [ecx + eax + 2]
mov byte [esi + eax + 2], dl
movzx edx, byte [ecx + eax + 3]
mov byte [esi + eax + 3], dl
movzx edx, byte [ecx + eax + 4]
mov byte [esi + eax + 4], dl
movzx edx, byte [ecx + eax + 5]
mov byte [esi + eax + 5], dl
movzx edx, byte [ecx + eax + 6]
mov byte [esi + eax + 6], dl
movzx edx, byte [ecx + eax + 7]
mov byte [esi + eax + 7], dl
add eax, 8
cmp ebp, eax
jne 0x4a9e40
jmp 0x4aa080
add ecx, dword [esp + 0x20]
mov eax, ebp
sub eax, edx
jbe 0x4aa098
mov dword [esp + 0x14], eax
cmp edx, 0x20
mov dword [esp + 0x10], esi
jb 0x4a9fc5
mov eax, dword [esp + 0x3c]
cmp dword [esp], eax
jae 0x4a9eda
mov eax, dword [esp + 0x38]
mov esi, dword [esp]
add eax, esi
mov ebp, edx
mov edx, dword [esp + 0x10]
sub edx, esi
add edx, eax
cmp ecx, edx
mov edx, ebp
jb 0x4a9fc5
mov dword [esp + 0xc], ebx
mov dword [esp + 8], edx
and edx, 0xffffffe0
mov dword [esp + 0x2c], edx
lea eax, [edx - 0x20]
mov esi, eax
shr esi, 5
add esi, 1
mov ebp, esi
and ebp, 3
xor edx, edx
cmp eax, 0x60
jb 0x4a9f6d
and esi, 0xfffffffc
mov eax, dword [esp]
sub eax, dword [esp + 0x28]
sub eax, dword [esp + 0x18]
add eax, dword [esp + 0x64]
xor edx, edx
movups xmm0, xmmword [eax + edx - 0x70]
movups xmm1, xmmword [eax + edx - 0x60]
mov ebx, dword [esp]
movups xmmword [ebx + edx], xmm0
movups xmmword [ebx + edx + 0x10], xmm1
movups xmm0, xmmword [eax + edx - 0x50]
movups xmm1, xmmword [eax + edx - 0x40]
movups xmmword [ebx + edx + 0x20], xmm0
movups xmmword [ebx + edx + 0x30], xmm1
movups xmm0, xmmword [eax + edx - 0x30]
movups xmm1, xmmword [eax + edx - 0x20]
movups xmmword [ebx + edx + 0x40], xmm0
movups xmmword [ebx + edx + 0x50], xmm1
movups xmm0, xmmword [eax + edx - 0x10]
movups xmm1, xmmword [eax + edx]
movups xmmword [ebx + edx + 0x60], xmm0
movups xmmword [ebx + edx + 0x70], xmm1
sub edx, 0xffffff80
add esi, 0xfffffffc
jne 0x4a9f14
test ebp, ebp
je 0x4a9fa9
mov esi, dword [esp]
lea eax, [edx + esi]
sub eax, dword [esp + 0x28]
sub eax, dword [esp + 0x18]
add eax, dword [esp + 0x80]
add edx, esi
add edx, 0x10
shl ebp, 5
xor esi, esi
movups xmm0, xmmword [eax + esi - 0x10]
movups xmm1, xmmword [eax + esi]
movups xmmword [edx + esi - 0x10], xmm0
movups xmmword [edx + esi], xmm1
add esi, 0x20
cmp ebp, esi
jne 0x4a9f90
mov ebp, dword [esp + 0x2c]
add dword [esp], ebp
mov edx, dword [esp + 8]
cmp edx, ebp
mov ebx, dword [esp + 0xc]
je 0x4aa083
and edx, 0x1f
add ecx, ebp
mov eax, dword [esp + 4]
lea ebp, [edx - 1]
mov esi, edx
and esi, 7
mov dword [esp + 8], edx
mov dword [esp + 0x18], ebp
je 0x4aa013
mov dword [esp + 0xc], ebx
xor edx, edx
nop word cs:[eax + eax]
nop dword [eax + eax]
movzx ebx, byte [ecx + edx]
mov ebp, dword [esp]
mov byte [ebp + edx], bl
add edx, 1
cmp esi, edx
jne 0x4a9ff0
add dword [esp], edx
sub dword [esp + 8], edx
add ecx, edx
mov eax, dword [esp + 4]
mov ebx, dword [esp + 0xc]
mov edx, dword [esp + 0x10]
mov esi, dword [esp + 0x14]
cmp dword [esp + 0x18], 7
jb 0x4aa08f
xor eax, eax
mov ebp, dword [esp + 8]
nop dword [eax + eax]
movzx edx, byte [ecx + eax]
mov esi, dword [esp]
mov byte [esi + eax], dl
movzx edx, byte [ecx + eax + 1]
mov byte [esi + eax + 1], dl
movzx edx, byte [ecx + eax + 2]
mov byte [esi + eax + 2], dl
movzx edx, byte [ecx + eax + 3]
mov byte [esi + eax + 3], dl
movzx edx, byte [ecx + eax + 4]
mov byte [esi + eax + 4], dl
movzx edx, byte [ecx + eax + 5]
mov byte [esi + eax + 5], dl
movzx edx, byte [ecx + eax + 6]
mov byte [esi + eax + 6], dl
movzx edx, byte [ecx + eax + 7]
mov byte [esi + eax + 7], dl
add eax, 8
cmp ebp, eax
jne 0x4aa030
add dword [esp], eax
mov eax, dword [esp + 4]
mov edx, dword [esp + 0x10]
mov esi, dword [esp + 0x14]
mov ecx, dword [esp]
sub ecx, edx
mov edx, eax
jmp 0x4aa09e
mov esi, ebp
mov edx, dword [esp + 4]
cmp esi, 3
jb 0x4aa0d6
lea ebp, [esi - 3]
mov eax, ebp
mov edx, 0xaaaaaaab
mul edx
bt edx, 1
jae 0x4aa0ff
mov edx, dword [esp + 4]
cmp ebp, 3
jae 0x4aa126
test ebp, ebp
je 0x4aa0dc
mov esi, edx
mov al, byte [ecx]
mov edx, dword [esp]
mov byte [edx], al
cmp ebp, 1
jne 0x4aa0e5
add dword [esp], 1
jmp 0x4aa0f4
mov ebp, esi
test ebp, ebp
jne 0x4aa0c2
mov ebp, dword [esp + 0x1c]
jmp 0x4a98da
mov al, byte [ecx + 1]
mov ecx, dword [esp]
mov byte [ecx + 1], al
add ecx, 2
mov dword [esp], ecx
mov edx, esi
mov ebp, dword [esp + 0x1c]
jmp 0x4a98da
mov al, byte [ecx]
mov edx, dword [esp]
mov byte [edx], al
mov al, byte [ecx + 1]
mov byte [edx + 1], al
mov al, byte [ecx + 2]
add ecx, 3
mov byte [edx + 2], al
add edx, 3
mov dword [esp], edx
mov esi, ebp
mov edx, dword [esp + 4]
cmp ebp, 3
jb 0x4aa0be
mov dword [esp + 4], edx
nop word [eax + eax]
movzx eax, byte [ecx]
mov edx, dword [esp]
mov byte [edx], al
movzx eax, byte [ecx + 1]
mov byte [edx + 1], al
movzx eax, byte [ecx + 2]
mov byte [edx + 2], al
movzx eax, byte [ecx + 3]
mov byte [edx + 3], al
movzx eax, byte [ecx + 4]
mov byte [edx + 4], al
movzx eax, byte [ecx + 5]
add ecx, 6
mov byte [edx + 5], al
add edx, 6
mov dword [esp], edx
add esi, 0xfffffffa
cmp esi, 2
ja 0x4aa130
mov ebp, esi
mov edx, dword [esp + 4]
test ebp, ebp
jne 0x4aa0c2
jmp 0x4aa0dc
mov ecx, dword [esp]
add ecx, eax
add ecx, 1
mov dword [esp], ecx
mov edx, dword [esp + 4]
mov ebx, dword [esp + 0xc]
mov ebp, dword [esp + 0x1c]
jmp 0x4a98da
mov edx, ebp
mov ebp, dword [esp + 0x20]
cmp eax, 7
jb 0x4aa20b
xor eax, eax
mov ebp, dword [esp + 8]
nop dword [eax]
movzx edx, byte [ecx + eax]
mov esi, dword [esp]
mov byte [esi + eax], dl
movzx edx, byte [ecx + eax + 1]
mov byte [esi + eax + 1], dl
movzx edx, byte [ecx + eax + 2]
mov byte [esi + eax + 2], dl
movzx edx, byte [ecx + eax + 3]
mov byte [esi + eax + 3], dl
movzx edx, byte [ecx + eax + 4]
mov byte [esi + eax + 4], dl
movzx edx, byte [ecx + eax + 5]
mov byte [esi + eax + 5], dl
movzx edx, byte [ecx + eax + 6]
mov byte [esi + eax + 6], dl
movzx edx, byte [ecx + eax + 7]
mov byte [esi + eax + 7], dl
add eax, 8
cmp ebp, eax
jne 0x4aa1b0
add dword [esp], eax
mov edx, dword [esp + 4]
mov ebp, dword [esp + 0x20]
mov esi, dword [esp + 0x14]
mov ecx, esi
mov eax, dword [esp + 0x24]
sub ecx, eax
jbe 0x4aa287
mov dword [esp + 0x14], ecx
cmp eax, 0x20
jb 0x4aa244
mov eax, dword [esp + 0x3c]
cmp dword [esp], eax
jae 0x4aa304
mov eax, dword [esp + 0x24]
mov ecx, dword [esp]
add eax, ecx
cmp ebp, eax
jae 0x4aa304
mov eax, dword [esp + 0x24]
mov ecx, ebp
mov esi, dword [esp + 0x10]
lea ebx, [eax - 1]
mov dword [esp + 8], ebx
mov ebx, eax
and ebx, 7
je 0x4aa28e
xor esi, esi
nop word [eax + eax]
movzx edx, byte [ecx + esi]
mov ebp, dword [esp]
mov byte [ebp + esi], dl
add esi, 1
cmp ebx, esi
jne 0x4aa260
add dword [esp], esi
sub eax, esi
add ecx, esi
mov edx, dword [esp + 4]
mov ebx, dword [esp + 0xc]
mov esi, dword [esp + 0x10]
jmp 0x4aa292
mov ecx, ebp
jmp 0x4aa09e
mov ebx, dword [esp + 0xc]
cmp dword [esp + 8], 7
jb 0x4aa3c2
xor edx, edx
nop
movzx ebx, byte [ecx + edx]
mov esi, dword [esp]
mov byte [esi + edx], bl
movzx ebx, byte [ecx + edx + 1]
mov byte [esi + edx + 1], bl
movzx ebx, byte [ecx + edx + 2]
mov byte [esi + edx + 2], bl
movzx ebx, byte [ecx + edx + 3]
mov byte [esi + edx + 3], bl
movzx ebx, byte [ecx + edx + 4]
mov byte [esi + edx + 4], bl
movzx ebx, byte [ecx + edx + 5]
mov byte [esi + edx + 5], bl
movzx ebx, byte [ecx + edx + 6]
mov byte [esi + edx + 6], bl
movzx ebx, byte [ecx + edx + 7]
mov byte [esi + edx + 7], bl
add edx, 8
cmp eax, edx
jne 0x4aa2a0
add dword [esp], edx
mov edx, dword [esp + 4]
mov ebx, dword [esp + 0xc]
mov esi, dword [esp + 0x10]
jmp 0x4aa3c2
xor eax, eax
cmp dword [esp + 0x74], 0x60
jb 0x4aa36d
xor eax, eax
mov ecx, dword [esp + 0x54]
movups xmm0, xmmword [ebp + eax]
movups xmm1, xmmword [ebp + eax + 0x10]
mov edx, dword [esp]
movups xmmword [edx + eax], xmm0
movups xmmword [edx + eax + 0x10], xmm1
movups xmm0, xmmword [ebp + eax + 0x20]
movups xmm1, xmmword [ebp + eax + 0x30]
movups xmmword [edx + eax + 0x20], xmm0
movups xmmword [edx + eax + 0x30], xmm1
movups xmm0, xmmword [ebp + eax + 0x40]
movups xmm1, xmmword [ebp + eax + 0x50]
movups xmmword [edx + eax + 0x40], xmm0
movups xmmword [edx + eax + 0x50], xmm1
movups xmm0, xmmword [ebp + eax + 0x60]
movups xmm1, xmmword [ebp + eax + 0x70]
movups xmmword [edx + eax + 0x60], xmm0
movups xmmword [edx + eax + 0x70], xmm1
sub eax, 0xffffff80
add ecx, 0xfffffffc
jne 0x4aa313
cmp dword [esp + 0x68], 0
mov ebp, dword [esp + 0x1c]
mov esi, dword [esp + 0x10]
je 0x4aa3a5
mov ecx, dword [esp + 0x58]
add ecx, eax
mov edx, dword [esp]
add eax, edx
add eax, 0x10
xor edx, edx
movups xmm0, xmmword [ecx + edx - 0x10]
movups xmm1, xmmword [ecx + edx]
movups xmmword [eax + edx - 0x10], xmm0
movups xmmword [eax + edx], xmm1
add edx, 0x20
cmp ebp, edx
jne 0x4aa38c
mov edx, dword [esp + 0x70]
add dword [esp], edx
mov eax, dword [esp + 0x6c]
mov ecx, dword [esp + 0x5c]
cmp dword [esp + 0x24], edx
mov edx, dword [esp + 4]
jne 0x4aa24a
mov ecx, dword [esp]
sub ecx, esi
mov esi, dword [esp + 0x14]
jmp 0x4aa09e
mov edx, 0x3f3f
mov ecx, str.invalid_literal_length_code
test al, 0x20
je 0x4aa3e9
jmp 0x4aa3f8
mov ecx, str.invalid_distance_code
mov edi, esi
mov ebx, eax
mov eax, dword [esp + 0xb0]
mov dword [eax + 0x18], ecx
mov edx, 0x3f51
mov eax, dword [esp + 0x30]
mov dword [eax + 4], edx
mov edx, dword [esp + 4]
mov eax, ebx
shr eax, 3
sub edx, eax
mov eax, dword [esp + 0xb0]
mov dword [eax], edx
mov ecx, dword [esp + 0x4c]
sub ecx, edx
mov edx, dword [esp]
mov dword [eax + 0xc], edx
add ecx, 5
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x48]
sub ecx, edx
add ecx, 0x101
mov dword [eax + 0x10], ecx
and ebx, 7
mov eax, 0xffffffff
mov ecx, ebx
shl eax, cl
not eax
and eax, edi
mov ecx, dword [esp + 0x30]
mov dword [ecx + 0x3c], eax
mov dword [ecx + 0x40], ebx
add esp, 0x9c
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, str.invalid_distance_too_far_back
jmp 0x4aa3e9