Function at 0x502480
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 0x502640
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 0x502644
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 0x5026ab
nop word cs:[eax + eax]
movzx eax, al
test al, 0x10
jne 0x5026e0
test al, 0x40
jne 0x5031b0
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 0x502670
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 0x5031e3
mov eax, dword [esp + 0x48]
cmp dword [esp], eax
jb 0x50260c
jmp 0x5031e3
movzx ecx, dx
mov dword [esp + 8], ecx
test al, 0xf
je 0x50271e
and eax, 0xf
cmp ebx, eax
jae 0x502709
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 0x50274b
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 0x50274f
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 0x5027b7
nop
test cl, 0x40
jne 0x5031c0
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 0x502780
and bl, 0xf
movzx ecx, bl
cmp eax, ecx
jae 0x5027f5
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 0x5027fb
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 0x502804
mov edi, esi
mov ebx, eax
jmp 0x50280c
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 0x5029e8
cmp edx, dword [esp + 0x90]
jbe 0x502854
mov eax, dword [esp + 0x30]
cmp dword [eax + 0x1bc4], 0
jne 0x503239
mov eax, dword [esp + 0x24]
test eax, eax
je 0x502a75
mov ecx, eax
sub ecx, edx
jae 0x502c75
mov ecx, dword [esp + 0x8c]
sub ecx, edx
add ecx, dword [esp + 0x20]
sub edx, eax
mov eax, ebp
sub eax, edx
jbe 0x502e78
cmp edx, 0x20
mov dword [esp + 0xc], ebx
mov dword [esp + 0x10], esi
mov dword [esp + 0x14], eax
jb 0x5029a5
mov eax, dword [esp + 0x40]
cmp dword [esp], eax
jae 0x5028c1
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 0x5029a5
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 0x502950
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 0x5028f7
test ebp, ebp
je 0x502989
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 0x502970
mov ebp, dword [esp + 0x2c]
add dword [esp], ebp
mov edx, dword [esp + 8]
cmp edx, ebp
mov ebx, dword [esp + 0xc]
je 0x502fe3
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 0x502f7b
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 0x5029c0
add dword [esp], edx
sub dword [esp + 8], edx
add ecx, edx
mov edx, dword [esp + 4]
mov ebx, dword [esp + 0xc]
jmp 0x502f7d
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 0x502a00
mov ecx, eax
mov edx, dword [esp + 8]
sub ecx, edx
je 0x502a6d
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 0x502f5f
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 0x502f6a
add dword [esp], eax
jmp 0x502f6a
mov ecx, dword [esp + 0x44]
sub ecx, edx
add ecx, dword [esp + 0x20]
mov eax, ebp
sub eax, edx
jbe 0x502e78
mov dword [esp + 0x14], eax
cmp edx, 0x20
mov dword [esp + 0x10], esi
jb 0x502bb5
mov eax, dword [esp + 0x40]
cmp dword [esp], eax
jae 0x502ac0
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 0x502bb5
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 0x502b59
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 0x502b00
test ebp, ebp
je 0x502b99
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 0x502b80
mov ebp, dword [esp + 0x2c]
add dword [esp], ebp
mov edx, dword [esp + 8]
cmp edx, ebp
mov ebx, dword [esp + 0xc]
je 0x502e63
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 0x502c03
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 0x502be0
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 0x502e6f
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 0x502c20
jmp 0x502e60
add ecx, dword [esp + 0x20]
mov eax, ebp
sub eax, edx
jbe 0x502e78
mov dword [esp + 0x14], eax
cmp edx, 0x20
mov dword [esp + 0x10], esi
jb 0x502da5
mov eax, dword [esp + 0x3c]
cmp dword [esp], eax
jae 0x502cba
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 0x502da5
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 0x502d4d
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 0x502cf4
test ebp, ebp
je 0x502d89
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 0x502d70
mov ebp, dword [esp + 0x2c]
add dword [esp], ebp
mov edx, dword [esp + 8]
cmp edx, ebp
mov ebx, dword [esp + 0xc]
je 0x502e63
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 0x502df3
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 0x502dd0
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 0x502e6f
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 0x502e10
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 0x502e7e
mov esi, ebp
mov edx, dword [esp + 4]
cmp esi, 3
jb 0x502eb6
lea ebp, [esi - 3]
mov eax, ebp
mov edx, 0xaaaaaaab
mul edx
bt edx, 1
jae 0x502edf
mov edx, dword [esp + 4]
cmp ebp, 3
jae 0x502f06
test ebp, ebp
je 0x502ebc
mov esi, edx
mov al, byte [ecx]
mov edx, dword [esp]
mov byte [edx], al
cmp ebp, 1
jne 0x502ec5
add dword [esp], 1
jmp 0x502ed4
mov ebp, esi
test ebp, ebp
jne 0x502ea2
mov ebp, dword [esp + 0x1c]
jmp 0x5026ba
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 0x5026ba
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 0x502e9e
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 0x502f10
mov ebp, esi
mov edx, dword [esp + 4]
test ebp, ebp
jne 0x502ea2
jmp 0x502ebc
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 0x5026ba
mov edx, ebp
mov ebp, dword [esp + 0x20]
cmp eax, 7
jb 0x502feb
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 0x502f90
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 0x503067
mov dword [esp + 0x14], ecx
cmp eax, 0x20
jb 0x503024
mov eax, dword [esp + 0x3c]
cmp dword [esp], eax
jae 0x5030e4
mov eax, dword [esp + 0x24]
mov ecx, dword [esp]
add eax, ecx
cmp ebp, eax
jae 0x5030e4
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 0x50306e
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 0x503040
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 0x503072
mov ecx, ebp
jmp 0x502e7e
mov ebx, dword [esp + 0xc]
cmp dword [esp + 8], 7
jb 0x5031a2
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 0x503080
add dword [esp], edx
mov edx, dword [esp + 4]
mov ebx, dword [esp + 0xc]
mov esi, dword [esp + 0x10]
jmp 0x5031a2
xor eax, eax
cmp dword [esp + 0x74], 0x60
jb 0x50314d
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 0x5030f3
cmp dword [esp + 0x68], 0
mov ebp, dword [esp + 0x1c]
mov esi, dword [esp + 0x10]
je 0x503185
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 0x50316c
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 0x50302a
mov ecx, dword [esp]
sub ecx, esi
mov esi, dword [esp + 0x14]
jmp 0x502e7e
mov edx, 0x3f3f
mov ecx, str.invalid_literal_length_code
test al, 0x20
je 0x5031c9
jmp 0x5031d8
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 0x5031c9