Function at 0x785be0
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 0x785d8a
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 0x785deb
nop dword [eax]
movzx eax, al
test al, 0x10
jne 0x785e10
test al, 0x40
jne 0x78685c
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 0x785db0
movzx eax, byte [edx + 2]
mov esi, dword [esp]
mov byte [esi], al
inc esi
mov edx, ebp
cmp ebx, dword [esp + 0x3c]
jae 0x786894
cmp esi, dword [esp + 0x38]
jb 0x785d68
jmp 0x786894
movzx esi, word [edx + 2]
test al, 0xf
je 0x785e41
and eax, 0xf
cmp ebp, eax
jae 0x785e2e
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 0x785e6c
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 0x785e70
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 0x785ed7
nop dword [eax + eax]
test cl, 0x40
jne 0x78686c
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 0x785ea0
and dl, 0xf
movzx ebx, dl
cmp eax, ebx
jae 0x785f17
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 0x785f1d
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 0x785f19
mov edi, esi
mov edx, eax
jmp 0x785f21
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 0x785fd2
mov dword [esp + 4], ebx
cmp ebx, dword [esp + 0x90]
mov ebx, dword [esp + 0x14]
jbe 0x785f74
mov ecx, dword [esp + 0x28]
cmp dword [ecx + 0x2344], 0
jne 0x7868e7
mov ecx, dword [esp + 0x20]
test ecx, ecx
je 0x786068
mov ebp, ecx
mov ebx, dword [esp + 4]
sub ebp, ebx
jae 0x7861f5
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 0x786331
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 0x786347
mov eax, dword [esp]
jmp 0x786610
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 0x785ff0
mov ecx, eax
mov edx, dword [esp + 8]
sub ecx, edx
je 0x78605b
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 0x78633a
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 0x785df7
add ebp, eax
mov esi, ebp
mov edx, dword [esp + 0x10]
jmp 0x7865fa
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 0x786331
cmp ecx, 0x20
mov dword [esp + 0x10], edx
mov dword [esp + 0x1c], esi
mov dword [esp + 0xc], ebx
jb 0x7861b5
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 0x7861b5
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 0x786146
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 0x7860f0
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 0x786199
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 0x786180
mov eax, dword [esp + 0x30]
add dword [esp], eax
cmp ebx, eax
je 0x786328
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 0x78636a
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 0x7861d0
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 0x78636e
add ebp, dword [esp + 0x24]
mov ecx, dword [esp + 8]
sub ecx, ebx
jbe 0x786331
mov dword [esp + 0xc], ecx
cmp ebx, 0x20
mov dword [esp + 0x10], edx
mov dword [esp + 0x1c], esi
jb 0x786499
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 0x786499
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 0x7862c4
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 0x78626e
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 0x786319
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 0x786300
mov eax, dword [esp + 0x30]
add dword [esp], eax
cmp ebx, eax
jne 0x786490
mov edx, dword [esp + 0x10]
jmp 0x786543
mov ebx, dword [esp + 8]
jmp 0x78654e
lea esi, [eax + ebp]
inc esi
mov edx, dword [esp + 0x10]
jmp 0x785df7
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 0x7863d3
mov eax, ebx
jmp 0x786610
mov edx, dword [esp + 0x10]
cmp esi, 7
jb 0x786547
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 0x786380
jmp 0x78653e
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 0x78642f
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 0x786401
mov ebx, dword [esp + 4]
and ebx, 0xfffffff0
mov esi, dword [esp + 8]
test esi, esi
je 0x78646f
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 0x786460
mov eax, dword [esp]
add eax, ebx
mov esi, dword [esp + 4]
cmp esi, ebx
mov edx, ebx
mov ebx, dword [esp + 0xc]
jne 0x786603
dec edx
mov ecx, dword [esp + 0x20]
jmp 0x7866ab
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 0x7864d2
xor ecx, ecx
mov ebx, dword [esp]
nop
movzx eax, byte [ebp + ecx]
mov byte [ebx + ecx], al
inc ecx
cmp edx, ecx
jne 0x7864b0
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 0x7864d6
mov edx, dword [esp + 0x10]
cmp esi, 7
jb 0x786547
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 0x7864f0
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 0x7865d9
mov esi, edx
lea ecx, [ebx - 3]
mov eax, ecx
mov edx, 0xaaaaaaab
mul edx
bt edx, 1
jb 0x78658d
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 0x7865de
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 0x7865a0
jmp 0x7865de
mov ecx, ebx
mov esi, dword [esp]
test ecx, ecx
je 0x7865fa
movzx eax, byte [ebp]
mov byte [esi], al
cmp ecx, 1
jne 0x7865f0
inc esi
jmp 0x7865fa
movzx eax, byte [ebp + 1]
mov byte [esi + 1], al
add esi, 2
mov ebx, dword [esp + 0x14]
jmp 0x785df7
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 0x786659
xor ecx, ecx
nop word cs:[eax + eax]
movzx edx, byte [ebp + ecx]
mov byte [eax + ecx], dl
inc ecx
cmp esi, ecx
jne 0x786630
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 0x786659
mov ebx, dword [esp + 0xc]
cmp dword [esp + 0x18], 3
jb 0x7866ab
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 0x786670
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 0x7866c3
mov dword [esp + 0xc], ebp
cmp ecx, 0x20
jae 0x7866d3
mov edx, dword [esp + 0x24]
jmp 0x7867a3
mov dword [esp], eax
mov ebp, dword [esp + 0x24]
mov edx, dword [esp + 0x10]
jmp 0x78654e
mov esi, dword [esp]
add esi, edx
mov ebp, dword [esp + 0x24]
sub esi, ebp
inc esi
cmp esi, 0x20
jae 0x7866eb
mov edx, ebp
jmp 0x7867a3
xor ecx, ecx
cmp dword [esp + 0x68], 0x60
jb 0x786751
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 0x7866fa
cmp dword [esp + 0x5c], 0
mov ebx, dword [esp + 0x50]
je 0x786782
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 0x786769
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 0x78684a
lea ebx, [ecx - 1]
mov esi, ecx
and esi, 7
je 0x7867e1
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 0x7867c0
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 0x7867e9
mov esi, ecx
mov ecx, esi
mov esi, dword [esp + 0x1c]
cmp ebx, 7
jb 0x78684a
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 0x7867f0
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 0x78654e
mov edx, 0x3f3f
mov ecx, str.invalid_literal_length_code
test al, 0x20
je 0x786879
jmp 0x786888
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 0x786879