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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0xa0
mov eax, dword [esp + 0xb4]
mov edx, dword [esp + 0xb8]
mov edi, dword [eax + 0x1c]
mov esi, dword [eax]
mov dword [esp + 0x14], esi
mov ecx, dword [eax + 4]
lea ecx, [ecx + esi - 5]
mov dword [esp + 0x3c], ecx
mov esi, dword [eax + 0x10]
movzx ecx, byte [edi + 0x58]
mov ebx, 0xffffffff
shl ebx, cl
mov ebp, esi
sub ebp, edx
movzx ecx, byte [edi + 0x5c]
mov eax, 0xffffffff
shl eax, cl
mov ecx, dword [esp + 0xb4]
mov ecx, dword [ecx + 0xc]
mov dword [esp], ecx
add ebp, ecx
mov dword [esp + 0x94], ebp
not ebx
mov dword [esp + 0x9c], ebx
not eax
mov dword [esp + 0x98], eax
mov ecx, edi
mov dword [esp + 0x28], edi
mov eax, dword [edi + 0x2c]
mov ebx, dword [edi + 0x34]
lea edi, [ebx + eax]
mov dword [esp + 0x8c], eax
lea ebp, [eax + edx]
mov dword [esp + 0x88], edi
lea eax, [edi + edx]
add edx, ebx
mov ecx, dword [ecx + 0x38]
lea edi, [edx + ecx]
mov dword [esp + 0x80], edi
sub edx, esi
lea edi, [eax + ecx]
mov dword [esp + 0x7c], edi
sub eax, esi
lea edi, [ecx + ebp]
mov dword [esp + 0x84], edi
sub ebp, esi
mov dword [esp + 0x2c], ebp
mov ebp, dword [esp]
lea edi, [esi + ebp]
add edi, 0xfffffeff
mov dword [esp + 0x38], edi
add esi, ebp
mov dword [esp + 0x34], esi
lea esi, [ebx - 0x20]
mov dword [esp + 0x68], esi
shr esi, 5
inc esi
mov ebp, ebx
and ebp, 0xffffffe0
mov dword [esp + 0x20], ebx
and ebx, 0x1f
mov dword [esp + 0x60], ebx
mov ebx, dword [esp + 0x14]
mov edi, esi
and edi, 3
and esi, 0xfffffffc
mov dword [esp + 0x44], esi
sub edx, dword [esp]
lea esi, [edx + ecx]
add esi, 0x70
mov dword [esp + 0x58], esi
add edx, ecx
add edx, 0x10
mov dword [esp + 0x70], edx
mov esi, dword [esp]
sub eax, esi
lea edx, [ecx + eax]
add edx, 0x30
mov dword [esp + 0x54], edx
add eax, ecx
mov dword [esp + 0x74], eax
mov dword [esp + 0x5c], edi
shl edi, 5
mov dword [esp + 0x50], edi
mov edx, dword [esp + 0x2c]
sub edx, esi
lea eax, [edx + ecx]
add eax, 0x70
mov dword [esp + 0x6c], eax
lea eax, [ecx + edx + 0x10]
mov dword [esp + 0x78], eax
mov esi, dword [esp + 0x28]
mov eax, dword [esi + 0x30]
mov dword [esp + 0x90], eax
mov edi, dword [esi + 0x3c]
mov edx, dword [esi + 0x40]
mov eax, dword [esi + 0x50]
mov dword [esp + 0x2c], eax
mov eax, dword [esi + 0x54]
mov dword [esp + 0x40], eax
mov dword [esp + 0x64], ebp
lea eax, [ecx + ebp]
mov esi, dword [esp]
mov dword [esp + 0x4c], eax
mov dword [esp + 0x24], ecx
lea eax, [ecx + 0x10]
mov dword [esp + 0x48], eax
mov dword [esp], esi
cmp edx, 0xe
ja 0x485cfa
movzx eax, byte [ebx]
mov ecx, edx
shl eax, cl
add eax, edi
movzx edi, byte [ebx + 1]
add cl, 8
shl edi, cl
add ebx, 2
add edi, eax
add edx, 0x10
mov ebp, edx
mov ecx, edi
and ecx, dword [esp + 0x9c]
mov esi, dword [esp + 0x2c]
lea edx, [esi + ecx*4]
movzx eax, byte [esi + ecx*4]
movzx ecx, byte [esi + ecx*4 + 1]
sub ebp, ecx
shr edi, cl
test al, al
je 0x485d5b
nop dword [eax]
movzx eax, al
test al, 0x10
jne 0x485d80
test al, 0x40
jne 0x4867cc
movzx edx, word [edx + 2]
mov esi, 0xffffffff
mov ecx, eax
shl esi, cl
mov eax, dword [esp + 0x2c]
lea ecx, [eax + edx*4]
not esi
and esi, edi
lea edx, [ecx + esi*4]
movzx eax, byte [ecx + esi*4]
movzx ecx, byte [ecx + esi*4 + 1]
sub ebp, ecx
shr edi, cl
test al, al
jne 0x485d20
movzx eax, byte [edx + 2]
mov esi, dword [esp]
mov byte [esi], al
inc esi
mov edx, ebp
cmp ebx, dword [esp + 0x3c]
jae 0x486804
cmp esi, dword [esp + 0x38]
jb 0x485cd8
jmp 0x486804
movzx esi, word [edx + 2]
test al, 0xf
je 0x485db1
and eax, 0xf
cmp ebp, eax
jae 0x485d9e
mov ecx, ebp
movzx edx, byte [ebx]
shl edx, cl
inc ebx
add edi, edx
add ecx, 8
mov ebp, ecx
mov edx, 0xffffffff
mov ecx, eax
shl edx, cl
not edx
and edx, edi
add esi, edx
shr edi, cl
sub ebp, eax
mov edx, ebp
cmp ebp, 0xe
mov dword [esp + 8], esi
ja 0x485ddc
movzx eax, byte [ebx]
mov ecx, edx
shl eax, cl
add eax, edi
movzx edi, byte [ebx + 1]
add cl, 8
shl edi, cl
add ebx, 2
mov dword [esp + 0x14], ebx
add edi, eax
add edx, 0x10
jmp 0x485de0
mov dword [esp + 0x14], ebx
mov eax, edi
and eax, dword [esp + 0x98]
mov esi, dword [esp + 0x40]
lea ebp, [esi + eax*4]
movzx ecx, byte [esi + eax*4 + 1]
sub edx, ecx
shr edi, cl
mov ebx, edx
movzx edx, byte [esi + eax*4]
movzx ecx, dl
mov esi, edi
mov eax, ebx
test cl, 0x10
jne 0x485e47
nop dword [eax + eax]
test cl, 0x40
jne 0x4867dc
movzx edx, word [ebp + 2]
mov edi, dword [esp + 0x40]
lea edi, [edi + edx*4]
mov ebx, 0xffffffff
shl ebx, cl
not ebx
and ebx, esi
movzx ecx, byte [edi + ebx*4 + 1]
shr esi, cl
movzx edx, byte [edi + ebx*4]
lea ebp, [edi + ebx*4]
sub eax, ecx
movzx ecx, dl
test cl, 0x10
je 0x485e10
and dl, 0xf
movzx ebx, dl
cmp eax, ebx
jae 0x485e87
mov ecx, dword [esp + 0x14]
movzx edi, byte [ecx]
mov ecx, eax
shl edi, cl
add edi, esi
lea edx, [eax + 8]
cmp edx, ebx
jae 0x485e8d
mov esi, dword [esp + 0x14]
movzx ecx, byte [esi + 1]
mov dword [esp + 4], ecx
mov ecx, edx
mov edx, dword [esp + 4]
shl edx, cl
add esi, 2
mov dword [esp + 0x14], esi
add edi, edx
add eax, 0x10
jmp 0x485e89
mov edi, esi
mov edx, eax
jmp 0x485e91
inc dword [esp + 0x14]
movzx esi, word [ebp + 2]
mov eax, 0xffffffff
mov ecx, ebx
shl eax, cl
not eax
and eax, edi
mov dword [esp + 0x18], esi
add esi, eax
shr edi, cl
sub edx, ebx
mov ebp, dword [esp]
mov ecx, ebp
sub ecx, dword [esp + 0x94]
mov ebx, esi
sub ebx, ecx
jbe 0x485f42
mov dword [esp + 4], ebx
cmp ebx, dword [esp + 0x90]
mov ebx, dword [esp + 0x14]
jbe 0x485ee4
mov ecx, dword [esp + 0x28]
cmp dword [ecx + 0x2344], 0
jne 0x486857
mov ecx, dword [esp + 0x20]
test ecx, ecx
je 0x485fd8
mov ebp, ecx
mov ebx, dword [esp + 4]
sub ebp, ebx
jae 0x486165
mov ebp, dword [esp + 0x88]
sub ebp, ebx
add ebp, dword [esp + 0x24]
sub ebx, ecx
mov ecx, dword [esp + 8]
sub ecx, ebx
jbe 0x4862a1
mov dword [esp + 0xc], ecx
mov dword [esp + 8], 0
cmp ebx, 0x10
mov dword [esp + 0x10], edx
mov dword [esp + 0x1c], esi
mov dword [esp + 4], ebx
jae 0x4862b7
mov eax, dword [esp]
jmp 0x486580
mov dword [esp + 0x10], edx
mov ecx, ebp
sub ecx, esi
neg esi
add ecx, 2
xor eax, eax
mov edx, dword [esp + 8]
nop word cs:[eax + eax]
movzx ebx, byte [ecx + eax - 2]
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 0x485f60
mov ecx, eax
mov edx, dword [esp + 8]
sub ecx, edx
je 0x485fcb
neg edx
lea ecx, [eax + edx]
inc ecx
lea edx, [esi + ebp]
add edx, 2
movzx edx, byte [edx + eax - 2]
mov byte [ebp + eax], dl
test ecx, ecx
mov ebx, dword [esp + 0x14]
je 0x4862aa
lea ecx, [eax + ebp]
movzx ecx, byte [esi + ecx + 1]
mov byte [ebp + eax + 1], cl
lea esi, [eax + ebp]
add esi, 2
mov edx, dword [esp + 0x10]
jmp 0x485d67
add ebp, eax
mov esi, ebp
mov edx, dword [esp + 0x10]
jmp 0x48656a
mov ebp, dword [esp + 0x8c]
mov ecx, dword [esp + 4]
sub ebp, ecx
add ebp, dword [esp + 0x24]
mov ebx, dword [esp + 8]
sub ebx, ecx
jbe 0x4862a1
cmp ecx, 0x20
mov dword [esp + 0x10], edx
mov dword [esp + 0x1c], esi
mov dword [esp + 0xc], ebx
jb 0x486125
mov ecx, dword [esp + 0x84]
mov esi, dword [esp]
add ecx, esi
mov edx, dword [esp + 0x34]
add edx, eax
add edx, dword [esp + 0x18]
sub edx, ecx
add edx, esi
cmp edx, 0x20
jb 0x486125
mov ecx, dword [esp + 4]
add ecx, 0xffffffe0
mov esi, ecx
shr esi, 5
inc esi
mov edx, esi
and edx, 3
mov dword [esp + 8], edx
xor edx, edx
cmp ecx, 0x60
mov ebx, dword [esp]
jb 0x4860b6
and esi, 0xfffffffc
mov ecx, ebx
sub ecx, eax
sub ecx, dword [esp + 0x18]
add ecx, dword [esp + 0x6c]
xor edx, edx
nop
movups xmm0, xmmword [ecx + edx - 0x70]
movups xmm1, xmmword [ecx + edx - 0x60]
movups xmmword [ebx + edx], xmm0
movups xmmword [ebx + edx + 0x10], xmm1
movups xmm0, xmmword [ecx + edx - 0x50]
movups xmm1, xmmword [ecx + edx - 0x40]
movups xmmword [ebx + edx + 0x20], xmm0
movups xmmword [ebx + edx + 0x30], xmm1
movups xmm0, xmmword [ecx + edx - 0x30]
movups xmm1, xmmword [ecx + edx - 0x20]
movups xmmword [ebx + edx + 0x40], xmm0
movups xmmword [ebx + edx + 0x50], xmm1
movups xmm0, xmmword [ecx + edx - 0x10]
movups xmm1, xmmword [ecx + edx]
movups xmmword [ebx + edx + 0x60], xmm0
movups xmmword [ebx + edx + 0x70], xmm1
sub edx, 0xffffff80
add esi, 0xfffffffc
jne 0x486060
mov ebx, dword [esp + 4]
mov ecx, ebx
and ecx, 0xffffffe0
mov dword [esp + 0x30], ecx
mov esi, dword [esp + 8]
test esi, esi
je 0x486109
mov ebx, dword [esp]
lea ecx, [edx + ebx]
sub ecx, eax
sub ecx, dword [esp + 0x18]
add ecx, dword [esp + 0x78]
lea eax, [edx + ebx]
add eax, 0x10
mov ebx, dword [esp + 4]
shl esi, 5
xor edx, edx
nop word [eax + eax]
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 esi, edx
jne 0x4860f0
mov eax, dword [esp + 0x30]
add dword [esp], eax
cmp ebx, eax
je 0x486298
and ebx, 0x1f
mov dword [esp + 4], ebx
add ebp, eax
mov ebx, dword [esp + 0xc]
mov edx, dword [esp + 4]
lea esi, [edx - 1]
and edx, 7
je 0x4862da
xor ecx, ecx
mov ebx, dword [esp]
nop word [eax + eax]
movzx eax, byte [ebp + ecx]
mov byte [ebx + ecx], al
inc ecx
cmp edx, ecx
jne 0x486140
add ebx, ecx
mov dword [esp], ebx
sub dword [esp + 4], ecx
add ebp, ecx
mov edx, dword [esp + 0x10]
mov ebx, dword [esp + 0xc]
jmp 0x4862de
add ebp, dword [esp + 0x24]
mov ecx, dword [esp + 8]
sub ecx, ebx
jbe 0x4862a1
mov dword [esp + 0xc], ecx
cmp ebx, 0x20
mov dword [esp + 0x10], edx
mov dword [esp + 0x1c], esi
jb 0x486409
mov ecx, dword [esp + 0x80]
mov esi, dword [esp]
add ecx, esi
mov edx, dword [esp + 0x34]
add edx, eax
add edx, dword [esp + 0x18]
sub edx, ecx
add edx, esi
cmp edx, 0x20
jb 0x486409
mov ecx, dword [esp + 4]
add ecx, 0xffffffe0
mov esi, ecx
shr esi, 5
inc esi
mov edx, esi
and edx, 3
mov dword [esp + 8], edx
xor edx, edx
cmp ecx, 0x60
mov ebx, dword [esp]
jb 0x486234
and esi, 0xfffffffc
mov ecx, ebx
sub ecx, eax
sub ecx, dword [esp + 0x18]
add ecx, dword [esp + 0x58]
xor edx, edx
movups xmm0, xmmword [ecx + edx - 0x70]
movups xmm1, xmmword [ecx + edx - 0x60]
movups xmmword [ebx + edx], xmm0
movups xmmword [ebx + edx + 0x10], xmm1
movups xmm0, xmmword [ecx + edx - 0x50]
movups xmm1, xmmword [ecx + edx - 0x40]
movups xmmword [ebx + edx + 0x20], xmm0
movups xmmword [ebx + edx + 0x30], xmm1
movups xmm0, xmmword [ecx + edx - 0x30]
movups xmm1, xmmword [ecx + edx - 0x20]
movups xmmword [ebx + edx + 0x40], xmm0
movups xmmword [ebx + edx + 0x50], xmm1
movups xmm0, xmmword [ecx + edx - 0x10]
movups xmm1, xmmword [ecx + edx]
movups xmmword [ebx + edx + 0x60], xmm0
movups xmmword [ebx + edx + 0x70], xmm1
sub edx, 0xffffff80
add esi, 0xfffffffc
jne 0x4861de
mov ebx, dword [esp + 4]
mov ecx, ebx
and ecx, 0xffffffe0
mov dword [esp + 0x30], ecx
mov esi, dword [esp + 8]
test esi, esi
je 0x486289
mov ebx, dword [esp]
lea ecx, [edx + ebx]
sub ecx, eax
sub ecx, dword [esp + 0x18]
add ecx, dword [esp + 0x70]
lea eax, [edx + ebx]
add eax, 0x10
mov ebx, dword [esp + 4]
shl esi, 5
xor edx, edx
nop dword [eax + eax]
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 esi, edx
jne 0x486270
mov eax, dword [esp + 0x30]
add dword [esp], eax
cmp ebx, eax
jne 0x486400
mov edx, dword [esp + 0x10]
jmp 0x4864b3
mov ebx, dword [esp + 8]
jmp 0x4864be
lea esi, [eax + ebp]
inc esi
mov edx, dword [esp + 0x10]
jmp 0x485d67
mov ecx, dword [esp + 0x7c]
mov ebx, dword [esp]
add ecx, ebx
mov edx, dword [esp + 0x34]
add edx, eax
add edx, dword [esp + 0x18]
sub edx, ecx
add edx, ebx
cmp edx, 0x10
jae 0x486343
mov eax, ebx
jmp 0x486580
mov edx, dword [esp + 0x10]
cmp esi, 7
jb 0x4864b7
xor eax, eax
mov esi, dword [esp]
mov ebx, dword [esp + 4]
movzx ecx, byte [ebp + eax]
mov byte [esi + eax], cl
movzx ecx, byte [ebp + eax + 1]
mov byte [esi + eax + 1], cl
movzx ecx, byte [ebp + eax + 2]
mov byte [esi + eax + 2], cl
movzx ecx, byte [ebp + eax + 3]
mov byte [esi + eax + 3], cl
movzx ecx, byte [ebp + eax + 4]
mov byte [esi + eax + 4], cl
movzx ecx, byte [ebp + eax + 5]
mov byte [esi + eax + 5], cl
movzx ecx, byte [ebp + eax + 6]
mov byte [esi + eax + 6], cl
movzx ecx, byte [ebp + eax + 7]
mov byte [esi + eax + 7], cl
add eax, 8
cmp ebx, eax
jne 0x4862f0
jmp 0x4864ae
mov ecx, dword [esp + 4]
add ecx, 0xfffffff0
mov esi, ecx
shr esi, 4
inc esi
mov edx, esi
and edx, 3
mov dword [esp + 8], edx
xor edx, edx
cmp ecx, 0x30
jb 0x48639f
and esi, 0xfffffffc
mov ecx, ebx
sub ecx, eax
sub ecx, dword [esp + 0x18]
add ecx, dword [esp + 0x54]
xor edx, edx
movups xmm0, xmmword [ecx + edx - 0x30]
movups xmmword [ebx + edx], xmm0
movups xmm0, xmmword [ecx + edx - 0x20]
movups xmmword [ebx + edx + 0x10], xmm0
movups xmm0, xmmword [ecx + edx - 0x10]
movups xmmword [ebx + edx + 0x20], xmm0
movups xmm0, xmmword [ecx + edx]
movups xmmword [ebx + edx + 0x30], xmm0
add edx, 0x40
add esi, 0xfffffffc
jne 0x486371
mov ebx, dword [esp + 4]
and ebx, 0xfffffff0
mov esi, dword [esp + 8]
test esi, esi
je 0x4863df
add edx, dword [esp]
mov ecx, edx
sub ecx, eax
sub ecx, dword [esp + 0x18]
add ecx, dword [esp + 0x74]
shl esi, 4
xor eax, eax
nop word cs:[eax + eax]
movups xmm0, xmmword [ecx + eax]
movups xmmword [edx + eax], xmm0
add eax, 0x10
cmp esi, eax
jne 0x4863d0
mov eax, dword [esp]
add eax, ebx
mov esi, dword [esp + 4]
cmp esi, ebx
mov edx, ebx
mov ebx, dword [esp + 0xc]
jne 0x486573
dec edx
mov ecx, dword [esp + 0x20]
jmp 0x48661b
and ebx, 0x1f
mov dword [esp + 4], ebx
add ebp, eax
mov ebx, dword [esp + 0xc]
mov edx, dword [esp + 4]
lea esi, [edx - 1]
and edx, 7
je 0x486442
xor ecx, ecx
mov ebx, dword [esp]
nop
movzx eax, byte [ebp + ecx]
mov byte [ebx + ecx], al
inc ecx
cmp edx, ecx
jne 0x486420
add ebx, ecx
mov dword [esp], ebx
sub dword [esp + 4], ecx
add ebp, ecx
mov edx, dword [esp + 0x10]
mov ebx, dword [esp + 0xc]
jmp 0x486446
mov edx, dword [esp + 0x10]
cmp esi, 7
jb 0x4864b7
xor eax, eax
mov esi, dword [esp]
mov ebx, dword [esp + 4]
nop word cs:[eax + eax]
movzx ecx, byte [ebp + eax]
mov byte [esi + eax], cl
movzx ecx, byte [ebp + eax + 1]
mov byte [esi + eax + 1], cl
movzx ecx, byte [ebp + eax + 2]
mov byte [esi + eax + 2], cl
movzx ecx, byte [ebp + eax + 3]
mov byte [esi + eax + 3], cl
movzx ecx, byte [ebp + eax + 4]
mov byte [esi + eax + 4], cl
movzx ecx, byte [ebp + eax + 5]
mov byte [esi + eax + 5], cl
movzx ecx, byte [ebp + eax + 6]
mov byte [esi + eax + 6], cl
movzx ecx, byte [ebp + eax + 7]
mov byte [esi + eax + 7], cl
add eax, 8
cmp ebx, eax
jne 0x486460
add esi, eax
mov dword [esp], esi
mov ebx, dword [esp + 0xc]
mov ebp, dword [esp]
sub ebp, dword [esp + 0x1c]
cmp ebx, 3
jb 0x486549
mov esi, edx
lea ecx, [ebx - 3]
mov eax, ecx
mov edx, 0xaaaaaaab
mul edx
bt edx, 1
jb 0x4864fd
movzx eax, byte [ebp]
mov edx, dword [esp]
mov byte [edx], al
movzx eax, byte [ebp + 1]
mov byte [edx + 1], al
movzx eax, byte [ebp + 2]
add ebp, 3
mov byte [edx + 2], al
add edx, 3
mov dword [esp], edx
mov ebx, ecx
mov edx, esi
cmp ecx, 3
mov esi, dword [esp]
jb 0x48654e
mov ecx, ebx
nop dword [eax]
movzx eax, byte [ebp]
mov byte [esi], al
movzx eax, byte [ebp + 1]
mov byte [esi + 1], al
movzx eax, byte [ebp + 2]
mov byte [esi + 2], al
movzx eax, byte [ebp + 3]
mov byte [esi + 3], al
movzx eax, byte [ebp + 4]
mov byte [esi + 4], al
movzx eax, byte [ebp + 5]
add ebp, 6
mov byte [esi + 5], al
add esi, 6
add ecx, 0xfffffffa
cmp ecx, 2
ja 0x486510
jmp 0x48654e
mov ecx, ebx
mov esi, dword [esp]
test ecx, ecx
je 0x48656a
movzx eax, byte [ebp]
mov byte [esi], al
cmp ecx, 1
jne 0x486560
inc esi
jmp 0x48656a
movzx eax, byte [ebp + 1]
mov byte [esi + 1], al
add esi, 2
mov ebx, dword [esp + 0x14]
jmp 0x485d67
and esi, 0xf
mov dword [esp + 4], esi
mov dword [esp + 8], edx
add ebp, edx
mov ecx, dword [esp + 0x20]
mov esi, dword [esp + 4]
lea ebx, [esi - 1]
mov dword [esp + 0x18], ebx
and esi, 3
je 0x4865c9
xor ecx, ecx
nop word cs:[eax + eax]
movzx edx, byte [ebp + ecx]
mov byte [eax + ecx], dl
inc ecx
cmp esi, ecx
jne 0x4865a0
mov esi, dword [esp + 8]
lea edx, [esi + ecx]
dec edx
add esi, ecx
mov dword [esp + 8], esi
add eax, ecx
sub dword [esp + 4], ecx
add ebp, ecx
mov ecx, dword [esp + 0x20]
jmp 0x4865c9
mov ebx, dword [esp + 0xc]
cmp dword [esp + 0x18], 3
jb 0x48661b
xor ecx, ecx
mov ebx, dword [esp + 4]
nop word [eax + eax]
movzx edx, byte [ebp + ecx]
mov byte [eax + ecx], dl
movzx edx, byte [ebp + ecx + 1]
mov byte [eax + ecx + 1], dl
movzx edx, byte [ebp + ecx + 2]
mov byte [eax + ecx + 2], dl
movzx edx, byte [ebp + ecx + 3]
mov byte [eax + ecx + 3], dl
add ecx, 4
cmp ebx, ecx
jne 0x4865e0
mov edx, dword [esp + 8]
add edx, ecx
dec edx
add eax, ecx
mov ecx, dword [esp + 0x20]
mov ebx, dword [esp + 0xc]
mov ebp, ebx
sub ebp, ecx
jbe 0x486633
mov dword [esp + 0xc], ebp
cmp ecx, 0x20
jae 0x486643
mov edx, dword [esp + 0x24]
jmp 0x486713
mov dword [esp], eax
mov ebp, dword [esp + 0x24]
mov edx, dword [esp + 0x10]
jmp 0x4864be
mov esi, dword [esp]
add esi, edx
mov ebp, dword [esp + 0x24]
sub esi, ebp
inc esi
cmp esi, 0x20
jae 0x48665b
mov edx, ebp
jmp 0x486713
xor ecx, ecx
cmp dword [esp + 0x68], 0x60
jb 0x4866c1
xor ecx, ecx
mov edx, dword [esp + 0x44]
movups xmm0, xmmword [ebp + ecx]
movups xmm1, xmmword [ebp + ecx + 0x10]
movups xmmword [eax + ecx], xmm0
movups xmmword [eax + ecx + 0x10], xmm1
movups xmm0, xmmword [ebp + ecx + 0x20]
movups xmm1, xmmword [ebp + ecx + 0x30]
movups xmmword [eax + ecx + 0x20], xmm0
movups xmmword [eax + ecx + 0x30], xmm1
movups xmm0, xmmword [ebp + ecx + 0x40]
movups xmm1, xmmword [ebp + ecx + 0x50]
movups xmmword [eax + ecx + 0x40], xmm0
movups xmmword [eax + ecx + 0x50], xmm1
movups xmm0, xmmword [ebp + ecx + 0x60]
movups xmm1, xmmword [ebp + ecx + 0x70]
movups xmmword [eax + ecx + 0x60], xmm0
movups xmmword [eax + ecx + 0x70], xmm1
sub ecx, 0xffffff80
add edx, 0xfffffffc
jne 0x48666a
cmp dword [esp + 0x5c], 0
mov ebx, dword [esp + 0x50]
je 0x4866f2
mov edx, dword [esp + 0x48]
add edx, ecx
add ecx, eax
add ecx, 0x10
xor esi, esi
movups xmm0, xmmword [edx + esi - 0x10]
movups xmm1, xmmword [edx + esi]
movups xmmword [ecx + esi - 0x10], xmm0
movups xmmword [ecx + esi], xmm1
add esi, 0x20
cmp ebx, esi
jne 0x4866d9
mov ecx, dword [esp + 0x64]
add eax, ecx
mov esi, dword [esp + 0x60]
mov edx, dword [esp + 0x4c]
mov dword [esp], eax
cmp dword [esp + 0x20], ecx
mov ecx, esi
mov esi, dword [esp + 0x1c]
je 0x4867ba
lea ebx, [ecx - 1]
mov esi, ecx
and esi, 7
je 0x486751
mov dword [esp + 8], ebx
mov ebx, ecx
xor ebp, ebp
nop word cs:[eax + eax]
movzx ecx, byte [edx + ebp]
mov byte [eax + ebp], cl
inc ebp
cmp esi, ebp
jne 0x486730
add eax, ebp
mov ecx, ebx
sub ecx, ebp
add edx, ebp
mov dword [esp], eax
mov esi, dword [esp + 0x1c]
mov ebx, dword [esp + 8]
jmp 0x486759
mov esi, ecx
mov ecx, esi
mov esi, dword [esp + 0x1c]
cmp ebx, 7
jb 0x4867ba
xor esi, esi
mov ebx, ecx
movzx ecx, byte [edx + esi]
mov byte [eax + esi], cl
movzx ecx, byte [edx + esi + 1]
mov byte [eax + esi + 1], cl
movzx ecx, byte [edx + esi + 2]
mov byte [eax + esi + 2], cl
movzx ecx, byte [edx + esi + 3]
mov byte [eax + esi + 3], cl
movzx ecx, byte [edx + esi + 4]
mov byte [eax + esi + 4], cl
movzx ecx, byte [edx + esi + 5]
mov byte [eax + esi + 5], cl
movzx ecx, byte [edx + esi + 6]
mov byte [eax + esi + 6], cl
movzx ecx, byte [edx + esi + 7]
mov byte [eax + esi + 7], cl
mov ecx, ebx
add esi, 8
cmp ebx, esi
jne 0x486760
add eax, esi
mov dword [esp], eax
mov esi, dword [esp + 0x1c]
mov ebp, dword [esp]
sub ebp, esi
mov edx, dword [esp + 0x10]
mov ebx, dword [esp + 0xc]
jmp 0x4864be
mov edx, 0x3f3f
mov ecx, str.invalid_literal_length_code
test al, 0x20
je 0x4867e9
jmp 0x4867f8
mov ecx, str.invalid_distance_code
mov edi, esi
mov ebp, eax
mov ebx, dword [esp + 0x14]
mov eax, dword [esp + 0xb4]
mov dword [eax + 0x18], ecx
mov edx, 0x3f51
mov eax, dword [esp + 0x28]
mov dword [eax + 4], edx
mov edx, ebp
mov esi, dword [esp]
mov eax, edx
shr eax, 3
sub ebx, eax
mov eax, dword [esp + 0xb4]
mov dword [eax], ebx
mov ecx, dword [esp + 0x3c]
sub ecx, ebx
mov dword [eax + 0xc], esi
add ecx, 5
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x38]
sub ecx, esi
add ecx, 0x101
mov dword [eax + 0x10], ecx
and edx, 7
mov eax, 0xffffffff
mov ecx, edx
shl eax, cl
not eax
and eax, edi
mov ecx, dword [esp + 0x28]
mov dword [ecx + 0x3c], eax
mov dword [ecx + 0x40], edx
add esp, 0xa0
pop esi
pop edi
pop ebx
pop ebp
ret
mov ebp, edx
mov ecx, str.invalid_distance_too_far_back
jmp 0x4867e9