Function at 0x4888f0
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 0x488ab0
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 0x488ab4
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 0x488b1b
nop word cs:[eax + eax]
movzx eax, al
test al, 0x10
jne 0x488b50
test al, 0x40
jne 0x489620
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 0x488ae0
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 0x489653
mov eax, dword [esp + 0x48]
cmp dword [esp], eax
jb 0x488a7c
jmp 0x489653
movzx ecx, dx
mov dword [esp + 8], ecx
test al, 0xf
je 0x488b8e
and eax, 0xf
cmp ebx, eax
jae 0x488b79
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 0x488bbb
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 0x488bbf
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 0x488c27
nop
test cl, 0x40
jne 0x489630
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 0x488bf0
and bl, 0xf
movzx ecx, bl
cmp eax, ecx
jae 0x488c65
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 0x488c6b
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 0x488c74
mov edi, esi
mov ebx, eax
jmp 0x488c7c
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 0x488e58
cmp edx, dword [esp + 0x90]
jbe 0x488cc4
mov eax, dword [esp + 0x30]
cmp dword [eax + 0x1bc4], 0
jne 0x4896a9
mov eax, dword [esp + 0x24]
test eax, eax
je 0x488ee5
mov ecx, eax
sub ecx, edx
jae 0x4890e5
mov ecx, dword [esp + 0x8c]
sub ecx, edx
add ecx, dword [esp + 0x20]
sub edx, eax
mov eax, ebp
sub eax, edx
jbe 0x4892e8
cmp edx, 0x20
mov dword [esp + 0xc], ebx
mov dword [esp + 0x10], esi
mov dword [esp + 0x14], eax
jb 0x488e15
mov eax, dword [esp + 0x40]
cmp dword [esp], eax
jae 0x488d31
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 0x488e15
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 0x488dc0
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 0x488d67
test ebp, ebp
je 0x488df9
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 0x488de0
mov ebp, dword [esp + 0x2c]
add dword [esp], ebp
mov edx, dword [esp + 8]
cmp edx, ebp
mov ebx, dword [esp + 0xc]
je 0x489453
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 0x4893eb
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 0x488e30
add dword [esp], edx
sub dword [esp + 8], edx
add ecx, edx
mov edx, dword [esp + 4]
mov ebx, dword [esp + 0xc]
jmp 0x4893ed
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 0x488e70
mov ecx, eax
mov edx, dword [esp + 8]
sub ecx, edx
je 0x488edd
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 0x4893cf
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 0x4893da
add dword [esp], eax
jmp 0x4893da
mov ecx, dword [esp + 0x44]
sub ecx, edx
add ecx, dword [esp + 0x20]
mov eax, ebp
sub eax, edx
jbe 0x4892e8
mov dword [esp + 0x14], eax
cmp edx, 0x20
mov dword [esp + 0x10], esi
jb 0x489025
mov eax, dword [esp + 0x40]
cmp dword [esp], eax
jae 0x488f30
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 0x489025
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 0x488fc9
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 0x488f70
test ebp, ebp
je 0x489009
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 0x488ff0
mov ebp, dword [esp + 0x2c]
add dword [esp], ebp
mov edx, dword [esp + 8]
cmp edx, ebp
mov ebx, dword [esp + 0xc]
je 0x4892d3
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 0x489073
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 0x489050
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 0x4892df
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 0x489090
jmp 0x4892d0
add ecx, dword [esp + 0x20]
mov eax, ebp
sub eax, edx
jbe 0x4892e8
mov dword [esp + 0x14], eax
cmp edx, 0x20
mov dword [esp + 0x10], esi
jb 0x489215
mov eax, dword [esp + 0x3c]
cmp dword [esp], eax
jae 0x48912a
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 0x489215
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 0x4891bd
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 0x489164
test ebp, ebp
je 0x4891f9
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 0x4891e0
mov ebp, dword [esp + 0x2c]
add dword [esp], ebp
mov edx, dword [esp + 8]
cmp edx, ebp
mov ebx, dword [esp + 0xc]
je 0x4892d3
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 0x489263
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 0x489240
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 0x4892df
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 0x489280
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 0x4892ee
mov esi, ebp
mov edx, dword [esp + 4]
cmp esi, 3
jb 0x489326
lea ebp, [esi - 3]
mov eax, ebp
mov edx, 0xaaaaaaab
mul edx
bt edx, 1
jae 0x48934f
mov edx, dword [esp + 4]
cmp ebp, 3
jae 0x489376
test ebp, ebp
je 0x48932c
mov esi, edx
mov al, byte [ecx]
mov edx, dword [esp]
mov byte [edx], al
cmp ebp, 1
jne 0x489335
add dword [esp], 1
jmp 0x489344
mov ebp, esi
test ebp, ebp
jne 0x489312
mov ebp, dword [esp + 0x1c]
jmp 0x488b2a
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 0x488b2a
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 0x48930e
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 0x489380
mov ebp, esi
mov edx, dword [esp + 4]
test ebp, ebp
jne 0x489312
jmp 0x48932c
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 0x488b2a
mov edx, ebp
mov ebp, dword [esp + 0x20]
cmp eax, 7
jb 0x48945b
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 0x489400
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 0x4894d7
mov dword [esp + 0x14], ecx
cmp eax, 0x20
jb 0x489494
mov eax, dword [esp + 0x3c]
cmp dword [esp], eax
jae 0x489554
mov eax, dword [esp + 0x24]
mov ecx, dword [esp]
add eax, ecx
cmp ebp, eax
jae 0x489554
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 0x4894de
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 0x4894b0
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 0x4894e2
mov ecx, ebp
jmp 0x4892ee
mov ebx, dword [esp + 0xc]
cmp dword [esp + 8], 7
jb 0x489612
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 0x4894f0
add dword [esp], edx
mov edx, dword [esp + 4]
mov ebx, dword [esp + 0xc]
mov esi, dword [esp + 0x10]
jmp 0x489612
xor eax, eax
cmp dword [esp + 0x74], 0x60
jb 0x4895bd
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 0x489563
cmp dword [esp + 0x68], 0
mov ebp, dword [esp + 0x1c]
mov esi, dword [esp + 0x10]
je 0x4895f5
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 0x4895dc
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 0x48949a
mov ecx, dword [esp]
sub ecx, esi
mov esi, dword [esp + 0x14]
jmp 0x4892ee
mov edx, 0x3f3f
mov ecx, str.invalid_literal_length_code
test al, 0x20
je 0x489639
jmp 0x489648
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 0x489639