Function at 0x486c50
Capabilities:
Encode data using xor

Disassembly:
mov eax, dword [esp + 0xc]
sub esp, 0x34
mov eax, dword [eax + 4]
push ebx
push esi
push edi
movzx ecx, byte [eax + 9]
sub ecx, 2
je 0x486fa3
sub ecx, 2
jne 0x48759b
mov eax, dword [esp + 0x54]
mov esi, dword [esp + 0x48]
mov ecx, dword [eax + 0xc]
mov edx, dword [eax]
mov eax, dword [eax + 8]
add eax, edx
mov dword [esp + 0x28], ecx
mov dword [esp + 0x1c], eax
mov ecx, edx
mov eax, dword [esp + 0x50]
neg ecx
mov dword [esp + 0x14], edx
lea eax, [eax + ecx*4]
mov dword [esp + 0x10], eax
mov eax, dword [0x57c828]
mov dword [esp + 0x2c], eax
nop dword [eax]
xor edi, edi
movzx eax, word [esi]
movzx ebx, word [esi + 2]
add edi, eax
add esi, 4
test ebx, ebx
je 0x486d0f
mov ecx, edx
mov eax, ebx
sub ecx, edi
test ecx, ecx
jle 0x486cd2
sub eax, edx
add eax, edi
test ecx, ecx
mov ecx, dword [esp + 0x1c]
cmovle edx, edi
sub ecx, edx
cmp eax, ecx
cmovle ecx, eax
test ecx, ecx
jle 0x486d04
lea eax, [ecx*4]
push eax
mov eax, edx
sub eax, edi
lea eax, [esi + eax*4]
push eax
mov eax, dword [esp + 0x18]
lea eax, [eax + edx*4]
push eax
call fcn.0041cb70
add esp, 0xc
mov edx, dword [esp + 0x14]
lea esi, [esi + ebx*4]
add edi, ebx
jmp 0x486d17
test edi, edi
je 0x48759b
cmp edi, dword [esp + 0x44]
jl 0x486cb2
xor edi, edi
nop
movzx eax, word [esi]
movzx ecx, word [esi + 2]
add edi, eax
add esi, 4
mov dword [esp + 0x24], edi
mov dword [esp + 0x38], ecx
mov dword [esp + 0x20], esi
test ecx, ecx
je 0x486f74
sub edx, edi
mov eax, ecx
test edx, edx
jle 0x486d52
mov ecx, dword [esp + 0x14]
sub eax, ecx
add eax, edi
jmp 0x486d56
mov ecx, dword [esp + 0x14]
mov ebx, dword [esp + 0x1c]
test edx, edx
cmovle ecx, edi
sub ebx, ecx
mov dword [esp + 0x34], ecx
cmp eax, ebx
cmovle ebx, eax
test ebx, ebx
jle 0x486f6b
mov eax, dword [esp + 0x10]
lea eax, [eax + ecx*4]
mov dword [esp + 0xc], eax
mov eax, ecx
sub eax, edi
xor ecx, ecx
lea edx, [esi + eax*4]
cmp ebx, 8
jb 0x486ee9
cmp dword [esp + 0x2c], 2
jl 0x486ee9
mov eax, dword [esp + 0xc]
lea eax, [eax + ebx*4]
add eax, 0xfffffffc
mov dword [esp + 0x18], eax
lea eax, [ebx - 1]
lea eax, [edx + eax*4]
cmp dword [esp + 0xc], eax
ja 0x486dbe
cmp dword [esp + 0x18], edx
jae 0x486ee9
mov eax, ebx
and eax, 0x80000007
jns 0x486dcc
dec eax
or eax, 0xfffffff8
inc eax
movups xmm6, xmmword [0x5481a0]
mov dword [esp + 0x18], ebx
mov edi, edx
sub dword [esp + 0x18], eax
mov eax, dword [esp + 0xc]
movups xmm7, xmmword [0x541b20]
add eax, 0x10
sub edi, dword [esp + 0xc]
mov dword [esp + 0x30], edi
mov edi, dword [esp + 0x24]
mov esi, dword [esp + 0x30]
nop dword [eax + eax]
movups xmm0, xmmword [eax - 0x10]
lea eax, [eax + 0x20]
movups xmm5, xmmword [edx + ecx*4]
add ecx, 8
movaps xmm1, xmm7
movaps xmm2, xmm6
andps xmm1, xmm0
andps xmm2, xmm0
movaps xmm4, xmm5
movaps xmm3, xmm7
andps xmm3, xmm5
psrld xmm4, 0x18
psubd xmm3, xmm1
movaps xmm0, xmm6
andps xmm0, xmm5
psubd xmm0, xmm2
pmulld xmm3, xmm4
pmulld xmm0, xmm4
psrld xmm3, 8
psrld xmm0, 8
paddd xmm3, xmm1
movaps xmm1, xmm7
paddd xmm0, xmm2
andps xmm3, xmmword [0x548200]
andps xmm0, xmm6
movaps xmm2, xmm6
orps xmm3, xmm0
orps xmm3, xmmword [0x5481f0]
movups xmmword [eax - 0x30], xmm3
movaps xmm3, xmm7
movups xmm0, xmmword [eax - 0x20]
movups xmm5, xmmword [esi + eax - 0x20]
andps xmm1, xmm0
andps xmm2, xmm0
andps xmm3, xmm5
movaps xmm0, xmm6
andps xmm0, xmm5
psubd xmm3, xmm1
movaps xmm4, xmm5
psubd xmm0, xmm2
psrld xmm4, 0x18
pmulld xmm3, xmm4
pmulld xmm0, xmm4
psrld xmm3, 8
psrld xmm0, 8
paddd xmm3, xmm1
paddd xmm0, xmm2
andps xmm3, xmmword [0x548200]
andps xmm0, xmm6
orps xmm3, xmm0
orps xmm3, xmmword [0x5481f0]
movups xmmword [eax - 0x20], xmm3
cmp ecx, dword [esp + 0x18]
jl 0x486e00
mov esi, dword [esp + 0x20]
mov dword [esp + 0x30], ecx
cmp ecx, ebx
jge 0x486f6b
mov eax, dword [esp + 0x34]
mov esi, dword [esp + 0x10]
add eax, ecx
sub edx, dword [esp + 0xc]
sub ebx, ecx
mov dword [esp + 0x34], edx
lea eax, [esi + eax*4]
mov dword [esp + 0x18], eax
mov edi, dword [edx + eax]
mov edx, edi
mov esi, dword [eax]
mov ecx, esi
mov eax, edi
shr edx, 0x18
and edi, 0xff00
and eax, 0xff00ff
and ecx, 0xff00ff
and esi, 0xff00
sub edi, esi
sub eax, ecx
imul edi, edx
imul eax, edx
mov edx, dword [esp + 0x34]
shr edi, 8
shr eax, 8
add edi, esi
add eax, ecx
xor edi, eax
and edi, 0xff00
xor edi, eax
mov eax, dword [esp + 0x18]
or edi, 0xff000000
mov dword [eax], edi
add eax, 4
mov dword [esp + 0x18], eax
sub ebx, 1
jne 0x486f04
mov esi, dword [esp + 0x20]
mov edi, dword [esp + 0x24]
mov eax, dword [esp + 0x38]
add edi, eax
lea esi, [esi + eax*4]
mov edx, dword [esp + 0x14]
cmp edi, dword [esp + 0x44]
jl 0x486d20
mov ecx, dword [esp + 0x4c]
mov eax, dword [esp + 0x10]
add eax, dword [ecx + 0x10]
sub dword [esp + 0x28], 1
mov dword [esp + 0x10], eax
jne 0x486cb0
pop edi
pop esi
pop ebx
add esp, 0x34
ret
cmp dword [eax + 0x10], 0x7e0
je 0x4872b2
cmp dword [eax + 0xc], 0x7e0
je 0x4872b2
cmp dword [eax + 0x14], 0x7e0
je 0x4872b2
mov eax, dword [esp + 0x54]
mov esi, dword [esp + 0x48]
mov ecx, dword [eax + 0xc]
mov edx, dword [eax]
mov eax, dword [eax + 8]
add eax, edx
mov dword [esp + 0x20], ecx
mov dword [esp + 0x28], eax
mov ecx, edx
mov eax, dword [esp + 0x50]
neg ecx
mov dword [esp + 0xc], edx
lea eax, [eax + ecx*2]
mov dword [esp + 0x10], eax
mov eax, dword [0x57c828]
mov dword [esp + 0x38], eax
xor edi, edi
movzx eax, byte [esi]
movzx ebx, byte [esi + 1]
add edi, eax
add esi, 2
test ebx, ebx
je 0x48705b
mov ecx, edx
mov eax, ebx
sub ecx, edi
test ecx, ecx
jle 0x487022
sub eax, edx
add eax, edi
test ecx, ecx
mov ecx, dword [esp + 0x28]
cmovle edx, edi
sub ecx, edx
cmp eax, ecx
cmovle ecx, eax
test ecx, ecx
jle 0x487050
lea eax, [ecx + ecx]
push eax
mov eax, edx
sub eax, edi
lea eax, [esi + eax*2]
push eax
mov eax, dword [esp + 0x18]
lea eax, [eax + edx*2]
push eax
call fcn.0041cb70
add esp, 0xc
mov edx, dword [esp + 0xc]
lea esi, [esi + ebx*2]
add edi, ebx
jmp 0x487063
test edi, edi
je 0x48759b
cmp edi, dword [esp + 0x44]
jl 0x487002
mov eax, esi
and eax, 2
add esi, eax
xor ecx, ecx
movzx eax, word [esi]
movzx edx, word [esi + 2]
add ecx, eax
add esi, 4
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x3c], edx
mov dword [esp + 0x2c], esi
test edx, edx
je 0x487283
mov ebx, dword [esp + 0xc]
mov eax, edx
mov edi, ebx
sub edi, ecx
test edi, edi
jle 0x4870a4
sub eax, ebx
add eax, ecx
mov edx, ebx
test edi, edi
mov ebx, dword [esp + 0x28]
cmovle edx, ecx
sub ebx, edx
cmp eax, ebx
cmovle ebx, eax
test ebx, ebx
jle 0x48727a
mov eax, dword [esp + 0x10]
xor edi, edi
lea eax, [eax + edx*2]
sub edx, ecx
mov dword [esp + 0x14], eax
lea edx, [esi + edx*4]
mov dword [esp + 0x30], edx
cmp ebx, 8
jb 0x487226
cmp dword [esp + 0x38], 2
jl 0x487226
lea eax, [eax + ebx*2]
add eax, 0xfffffffe
mov dword [esp + 0x34], eax
lea eax, [ebx - 1]
lea eax, [edx + eax*4]
cmp dword [esp + 0x14], eax
ja 0x487108
cmp dword [esp + 0x34], edx
jae 0x487222
mov eax, ebx
and eax, 0x80000007
jns 0x487116
dec eax
or eax, 0xfffffff8
inc eax
movups xmm4, xmmword [0x5481d0]
mov dword [esp + 0x18], ebx
sub dword [esp + 0x18], eax
movups xmm5, xmmword [0x548190]
mov eax, dword [esp + 0x14]
pmovzxwd xmm0, qword [eax + edi*2]
movups xmm3, xmmword [edx + edi*4]
movaps xmm1, xmm0
movaps xmm2, xmm4
pslld xmm1, 0x10
andps xmm2, xmm3
orps xmm1, xmm0
movaps xmm0, xmm3
psrld xmm0, 5
andps xmm1, xmm4
psubd xmm2, xmm1
andps xmm0, xmm5
pmulld xmm2, xmm0
psrld xmm2, 5
paddd xmm2, xmm1
andps xmm2, xmm4
movaps xmm0, xmm2
psrld xmm0, 0x10
pshufhw xmm0, xmm0, 0xd8
pshuflw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
pshufhw xmm0, xmm2, 0xd8
movaps xmm2, xmm4
pshuflw xmm0, xmm0, 0xd8
pshufd xmm0, xmm0, 0xd8
orps xmm1, xmm0
movq qword [eax + edi*2], xmm1
pmovzxwd xmm0, qword [eax + edi*2 + 8]
movups xmm3, xmmword [edx + edi*4 + 0x10]
movaps xmm1, xmm0
pslld xmm1, 0x10
andps xmm2, xmm3
orps xmm1, xmm0
movaps xmm0, xmm3
psrld xmm0, 5
andps xmm1, xmm4
psubd xmm2, xmm1
andps xmm0, xmm5
pmulld xmm2, xmm0
psrld xmm2, 5
paddd xmm2, xmm1
andps xmm2, xmm4
movaps xmm0, xmm2
psrld xmm0, 0x10
pshufhw xmm0, xmm0, 0xd8
pshuflw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
pshufhw xmm0, xmm2, 0xd8
pshuflw xmm0, xmm0, 0xd8
pshufd xmm0, xmm0, 0xd8
orps xmm1, xmm0
movq qword [eax + edi*2 + 8], xmm1
add edi, 8
cmp edi, dword [esp + 0x18]
jl 0x487130
mov dword [esp + 0x24], edi
cmp edi, ebx
jge 0x48727a
jmp 0x487226
mov eax, dword [esp + 0x14]
movzx eax, word [eax + edi*2]
mov esi, dword [edx + edi*4]
mov ecx, eax
shl ecx, 0x10
mov edx, esi
or ecx, eax
shr esi, 5
and edx, 0x3e07c1f
and ecx, 0x3e07c1f
sub edx, ecx
and esi, 0x1f
imul edx, esi
shr edx, 5
add edx, ecx
mov ecx, dword [esp + 0x14]
and edx, 0x3e07c1f
mov eax, edx
shr eax, 0x10
or eax, edx
mov edx, dword [esp + 0x30]
mov word [ecx + edi*2], ax
inc edi
mov eax, ecx
cmp edi, ebx
jl 0x487226
mov esi, dword [esp + 0x2c]
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x3c]
add ecx, eax
lea esi, [esi + eax*4]
cmp ecx, dword [esp + 0x44]
jl 0x487072
mov ecx, dword [esp + 0x4c]
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0xc]
add eax, dword [ecx + 0x10]
sub dword [esp + 0x20], 1
mov dword [esp + 0x10], eax
jne 0x487000
pop edi
pop esi
pop ebx
add esp, 0x34
ret
mov eax, dword [esp + 0x54]
mov esi, dword [esp + 0x48]
mov ecx, dword [eax + 0xc]
mov edx, dword [eax]
mov eax, dword [eax + 8]
add eax, edx
mov dword [esp + 0x20], ecx
mov dword [esp + 0x28], eax
mov ecx, edx
mov eax, dword [esp + 0x50]
neg ecx
mov dword [esp + 0x10], edx
lea eax, [eax + ecx*2]
mov dword [esp + 0x14], eax
nop
xor edi, edi
movzx eax, byte [esi]
movzx ebx, byte [esi + 1]
add edi, eax
add esi, 2
test ebx, ebx
je 0x48733b
mov ecx, edx
mov eax, ebx
sub ecx, edi
test ecx, ecx
jle 0x487302
sub eax, edx
add eax, edi
test ecx, ecx
mov ecx, dword [esp + 0x28]
cmovle edx, edi
sub ecx, edx
cmp eax, ecx
cmovle ecx, eax
test ecx, ecx
jle 0x487330
lea eax, [ecx + ecx]
push eax
mov eax, edx
sub eax, edi
lea eax, [esi + eax*2]
push eax
mov eax, dword [esp + 0x1c]
lea eax, [eax + edx*2]
push eax
call fcn.0041cb70
add esp, 0xc
mov edx, dword [esp + 0x10]
lea esi, [esi + ebx*2]
add edi, ebx
jmp 0x487343
test edi, edi
je 0x48759b
cmp edi, dword [esp + 0x44]
jl 0x4872e2
mov eax, esi
and eax, 2
add esi, eax
xor edx, edx
movzx eax, word [esi]
movzx ecx, word [esi + 2]
add edx, eax
add esi, 4
mov dword [esp + 0x30], edx
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x34], esi
test ecx, ecx
je 0x487573
mov ebx, dword [esp + 0x10]
mov eax, ecx
mov edi, ebx
sub edi, edx
test edi, edi
jle 0x487384
sub eax, ebx
add eax, edx
mov ecx, ebx
test edi, edi
mov ebx, dword [esp + 0x28]
cmovle ecx, edx
sub ebx, ecx
cmp eax, ebx
cmovle ebx, eax
test ebx, ebx
jle 0x48756a
mov eax, dword [esp + 0x14]
lea eax, [eax + ecx*2]
sub ecx, edx
mov dword [esp + 0xc], eax
xor eax, eax
lea edi, [esi + ecx*4]
mov dword [esp + 0x38], edi
cmp ebx, 8
jb 0x487512
cmp dword [0x57c828], 2
mov ecx, dword [esp + 0xc]
jl 0x487516
lea ecx, [ecx + ebx*2]
add ecx, 0xfffffffe
mov dword [esp + 0x3c], ecx
lea ecx, [ebx - 1]
lea ecx, [edi + ecx*4]
cmp dword [esp + 0xc], ecx
ja 0x4873ee
cmp dword [esp + 0x3c], edi
jae 0x487512
mov ecx, ebx
and ecx, 0x80000007
jns 0x4873fd
dec ecx
or ecx, 0xfffffff8
inc ecx
movups xmm4, xmmword [0x5481e0]
mov dword [esp + 0x18], ebx
sub dword [esp + 0x18], ecx
movups xmm5, xmmword [0x548190]
mov ecx, dword [esp + 0xc]
nop word [eax + eax]
pmovzxwd xmm0, qword [ecx + eax*2]
movups xmm3, xmmword [edi + eax*4]
movaps xmm1, xmm0
movaps xmm2, xmm4
pslld xmm1, 0x10
andps xmm2, xmm3
orps xmm1, xmm0
movaps xmm0, xmm3
psrld xmm0, 5
andps xmm1, xmm4
psubd xmm2, xmm1
andps xmm0, xmm5
pmulld xmm2, xmm0
psrld xmm2, 5
paddd xmm2, xmm1
andps xmm2, xmm4
movaps xmm0, xmm2
psrld xmm0, 0x10
pshufhw xmm0, xmm0, 0xd8
pshuflw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
pshufhw xmm0, xmm2, 0xd8
movaps xmm2, xmm4
pshuflw xmm0, xmm0, 0xd8
pshufd xmm0, xmm0, 0xd8
orps xmm1, xmm0
movq qword [ecx + eax*2], xmm1
pmovzxwd xmm0, qword [ecx + eax*2 + 8]
movups xmm3, xmmword [edi + eax*4 + 0x10]
movaps xmm1, xmm0
pslld xmm1, 0x10
andps xmm2, xmm3
orps xmm1, xmm0
movaps xmm0, xmm3
psrld xmm0, 5
andps xmm1, xmm4
psubd xmm2, xmm1
andps xmm0, xmm5
pmulld xmm2, xmm0
psrld xmm2, 5
paddd xmm2, xmm1
andps xmm2, xmm4
movaps xmm0, xmm2
psrld xmm0, 0x10
pshufhw xmm0, xmm0, 0xd8
pshuflw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
pshufhw xmm0, xmm2, 0xd8
pshuflw xmm0, xmm0, 0xd8
pshufd xmm0, xmm0, 0xd8
orps xmm1, xmm0
movq qword [ecx + eax*2 + 8], xmm1
add eax, 8
cmp eax, dword [esp + 0x18]
jl 0x487420
mov dword [esp + 0x24], eax
cmp eax, ebx
jge 0x48756a
jmp 0x487516
mov ecx, dword [esp + 0xc]
movzx ecx, word [ecx + eax*2]
mov edi, dword [edi + eax*4]
mov edx, ecx
shl edx, 0x10
mov esi, edi
or edx, ecx
shr edi, 5
and esi, 0x7e0f81f
and edx, 0x7e0f81f
sub esi, edx
and edi, 0x1f
imul esi, edi
mov edi, dword [esp + 0x38]
shr esi, 5
add esi, edx
mov edx, dword [esp + 0xc]
and esi, 0x7e0f81f
mov ecx, esi
shr ecx, 0x10
or ecx, esi
mov word [edx + eax*2], cx
inc eax
mov ecx, edx
cmp eax, ebx
jl 0x487516
mov esi, dword [esp + 0x34]
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0x2c]
add edx, eax
lea esi, [esi + eax*4]
cmp edx, dword [esp + 0x44]
jl 0x487352
mov ecx, dword [esp + 0x4c]
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
add eax, dword [ecx + 0x10]
sub dword [esp + 0x20], 1
mov dword [esp + 0x14], eax
jne 0x4872e0
pop edi
pop esi
pop ebx
add esp, 0x34
ret