Function at 0x485da0
Capabilities:
Encode data using xor

Disassembly:
mov eax, dword [esp + 0xc]
sub esp, 0x34
mov eax, dword [eax + 4]
push ebx
push ebp
push esi
movzx ecx, byte [eax + 9]
push edi
sub ecx, 2
je 0x4860d2
sub ecx, 2
jne 0x486425
mov eax, dword [esp + 0x58]
mov ebx, dword [esp + 0x4c]
mov ecx, dword [eax + 0xc]
mov ebp, dword [eax]
mov eax, dword [eax + 8]
add eax, ebp
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x1c], eax
mov ecx, ebp
mov eax, dword [esp + 0x54]
neg ecx
mov dword [esp + 0x28], ebp
lea eax, [eax + ecx*4]
mov dword [esp + 0x10], eax
xor esi, esi
movzx eax, word [ebx]
movzx edi, word [ebx + 2]
add esi, eax
add ebx, 4
test edi, edi
je 0x485e4e
mov ecx, ebp
mov eax, edi
sub ecx, esi
test ecx, ecx
jle 0x485e11
sub eax, ebp
add eax, esi
test ecx, ecx
mov edx, ebp
mov ecx, dword [esp + 0x1c]
cmovle edx, esi
sub ecx, edx
cmp eax, ecx
cmovle ecx, eax
test ecx, ecx
jle 0x485e47
lea eax, [ecx*4]
push eax
mov eax, edx
sub eax, esi
lea eax, [ebx + eax*4]
push eax
mov eax, dword [esp + 0x18]
lea eax, [eax + edx*4]
push eax
call fcn.0041c240
add esp, 0xc
lea ebx, [ebx + edi*4]
add esi, edi
jmp 0x485e56
test esi, esi
je 0x486425
cmp esi, dword [esp + 0x48]
jl 0x485df3
xor esi, esi
nop
movzx eax, word [ebx]
movzx edx, word [ebx + 2]
add esi, eax
add ebx, 4
mov dword [esp + 0x40], esi
mov dword [esp + 0x24], edx
mov dword [esp + 0x3c], ebx
test edx, edx
je 0x4860a6
mov ecx, ebp
mov eax, edx
sub ecx, esi
test ecx, ecx
jle 0x485e8e
sub eax, ebp
add eax, esi
test ecx, ecx
mov edi, ebp
mov ecx, dword [esp + 0x1c]
cmovle edi, esi
sub ecx, edi
mov dword [esp + 0x38], edi
cmp eax, ecx
cmovle ecx, eax
mov dword [esp + 0x20], ecx
test ecx, ecx
jle 0x4860a1
mov eax, dword [esp + 0x10]
xor ebp, ebp
lea eax, [eax + edi*4]
mov dword [esp + 0x14], eax
mov eax, edi
sub eax, esi
lea edx, [ebx + eax*4]
cmp ecx, 8
jb 0x486024
cmp dword [0x57d7d4], 2
jl 0x486024
mov eax, dword [esp + 0x14]
lea eax, [eax + ecx*4]
add eax, 0xfffffffc
mov dword [esp + 0x18], eax
lea eax, [ecx - 1]
lea eax, [edx + eax*4]
cmp dword [esp + 0x14], eax
ja 0x485efe
cmp dword [esp + 0x18], edx
jae 0x486024
mov eax, ecx
and eax, 0x80000007
jns 0x485f0c
dec eax
or eax, 0xfffffff8
inc eax
movaps xmm6, xmmword [0x5425b0]
movaps xmm5, xmmword [0x548c50]
movaps xmm7, xmmword [0x548c90]
mov dword [esp + 0x18], ecx
sub dword [esp + 0x18], eax
mov eax, dword [esp + 0x14]
lea ecx, [eax + 0x10]
mov dword [esp + 0x30], ecx
mov ecx, edx
sub ecx, eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x34], ecx
mov ecx, dword [esp + 0x20]
mov edi, dword [esp + 0x34]
nop dword [eax + eax]
movups xmm3, xmmword [edx + ebp*4]
add ebp, 8
lea eax, [eax + 0x20]
movaps xmm1, xmm6
andps xmm1, xmm3
movaps xmm2, xmm3
movups xmm4, xmmword [eax - 0x30]
psrld xmm2, 0x18
movaps xmm0, xmm4
andps xmm4, xmm5
andps xmm0, xmm6
psubd xmm1, xmm0
pmulld xmm1, xmm2
psrld xmm1, 8
paddd xmm1, xmm0
movaps xmm0, xmm5
andps xmm0, xmm3
andps xmm1, xmm7
psubd xmm0, xmm4
pmulld xmm0, xmm2
psrld xmm0, 8
paddd xmm0, xmm4
andps xmm0, xmm5
orps xmm1, xmm0
orps xmm1, xmmword [0x548c80]
movups xmmword [eax - 0x30], xmm1
movups xmm4, xmmword [edi + eax - 0x20]
movups xmm3, xmmword [eax - 0x20]
movaps xmm1, xmm4
movaps xmm2, xmm4
andps xmm1, xmm6
andps xmm4, xmm5
movaps xmm0, xmm3
andps xmm3, xmm5
andps xmm0, xmm6
psubd xmm4, xmm3
psubd xmm1, xmm0
psrld xmm2, 0x18
pmulld xmm1, xmm2
pmulld xmm4, xmm2
psrld xmm1, 8
psrld xmm4, 8
paddd xmm1, xmm0
paddd xmm4, xmm3
andps xmm1, xmm7
andps xmm4, xmm5
orps xmm1, xmm4
orps xmm1, xmmword [0x548c80]
movups xmmword [eax - 0x20], xmm1
cmp ebp, dword [esp + 0x18]
jl 0x485f50
mov edi, dword [esp + 0x38]
mov dword [esp + 0x34], ebp
cmp ebp, ecx
jge 0x486099
mov ecx, dword [esp + 0x10]
lea eax, [edi + ebp]
sub edx, dword [esp + 0x14]
mov dword [esp + 0x38], edx
lea ebx, [ecx + eax*4]
mov edi, dword [ebx + edx]
lea ebx, [ebx + 4]
mov esi, dword [ebx - 4]
mov eax, edi
mov edx, edi
and eax, 0xff00ff
and edi, 0xff00
shr edx, 0x18
mov ecx, esi
inc ebp
and ecx, 0xff00ff
and esi, 0xff00
sub edi, esi
sub eax, ecx
imul edi, edx
imul eax, edx
mov edx, dword [esp + 0x38]
shr edi, 8
add edi, esi
shr eax, 8
add eax, ecx
xor edi, eax
and edi, 0xff00
xor edi, eax
or edi, 0xff000000
mov dword [ebx - 4], edi
cmp ebp, dword [esp + 0x20]
jl 0x486036
mov ebx, dword [esp + 0x3c]
mov esi, dword [esp + 0x40]
mov ebp, dword [esp + 0x28]
mov edx, dword [esp + 0x24]
lea ebx, [ebx + edx*4]
add esi, edx
cmp esi, dword [esp + 0x48]
jl 0x485e60
mov ecx, dword [esp + 0x50]
mov eax, dword [esp + 0x10]
add eax, dword [ecx + 0x10]
sub dword [esp + 0x2c], 1
mov dword [esp + 0x10], eax
jne 0x485df1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x34
ret
cmp dword [eax + 0x10], 0x7e0
je 0x486296
cmp dword [eax + 0xc], 0x7e0
je 0x486296
cmp dword [eax + 0x14], 0x7e0
je 0x486296
mov eax, dword [esp + 0x58]
mov ebx, dword [esp + 0x4c]
mov ecx, dword [eax + 0xc]
mov edx, dword [eax]
mov eax, dword [eax + 8]
add eax, edx
mov dword [esp + 0x28], ecx
mov ecx, edx
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x54]
neg ecx
mov dword [esp + 0x14], edx
lea ebp, [eax + ecx*2]
mov dword [esp + 0x18], ebp
xor esi, esi
nop dword [eax + eax]
movzx eax, byte [ebx]
movzx edi, byte [ebx + 1]
add esi, eax
add ebx, 2
test edi, edi
je 0x48618b
mov ecx, edx
mov eax, edi
sub ecx, esi
test ecx, ecx
jle 0x486150
sub eax, edx
add eax, esi
test ecx, ecx
mov ecx, dword [esp + 0x2c]
cmovle edx, esi
sub ecx, edx
cmp eax, ecx
cmovle ecx, eax
test ecx, ecx
jle 0x486180
lea eax, [ecx + ecx]
push eax
mov eax, edx
sub eax, esi
lea eax, [ebx + eax*2]
push eax
lea eax, [edx*2]
add eax, ebp
push eax
call fcn.0041c240
add esp, 0xc
mov edx, dword [esp + 0x14]
lea ebx, [ebx + edi*2]
add esi, edi
jmp 0x486193
test esi, esi
je 0x486425
mov edi, dword [esp + 0x48]
cmp esi, edi
jl 0x486130
mov eax, ebx
and eax, 2
add ebx, eax
xor ebp, ebp
movzx eax, word [ebx]
movzx esi, word [ebx + 2]
add ebp, eax
add ebx, 4
mov dword [esp + 0x30], ebp
mov dword [esp + 0x24], esi
mov dword [esp + 0x34], ebx
test esi, esi
je 0x48626b
mov eax, edx
mov ecx, esi
sub eax, ebp
test eax, eax
jle 0x4861d4
sub ecx, edx
add ecx, ebp
test eax, eax
mov eax, dword [esp + 0x2c]
cmovle edx, ebp
sub eax, edx
cmp ecx, eax
cmovle eax, ecx
mov dword [esp + 0x40], eax
test eax, eax
jle 0x486266
mov eax, dword [esp + 0x18]
lea eax, [eax + edx*2]
sub edx, ebp
mov ebp, dword [esp + 0x40]
xor edi, edi
mov dword [esp + 0x3c], eax
lea eax, [ebx + edx*4]
mov ebx, dword [esp + 0x3c]
mov dword [esp + 0x38], eax
nop dword [eax + eax]
mov esi, dword [eax + edi*4]
mov edx, esi
movzx eax, word [ebx + edi*2]
and edx, 0x3e07c1f
mov ecx, eax
shr esi, 5
shl ecx, 0x10
and esi, 0x1f
or ecx, eax
and ecx, 0x3e07c1f
sub edx, ecx
imul edx, esi
shr edx, 5
add edx, ecx
and edx, 0x3e07c1f
mov eax, edx
shr eax, 0x10
or eax, edx
mov word [ebx + edi*2], ax
inc edi
mov eax, dword [esp + 0x38]
cmp edi, ebp
jl 0x486210
mov ebx, dword [esp + 0x34]
mov ebp, dword [esp + 0x30]
mov esi, dword [esp + 0x24]
mov edi, dword [esp + 0x48]
lea ebx, [ebx + esi*4]
add ebp, esi
mov edx, dword [esp + 0x14]
cmp ebp, edi
jl 0x4861a4
mov eax, dword [esp + 0x50]
mov ebp, dword [esp + 0x18]
add ebp, dword [eax + 0x10]
sub dword [esp + 0x28], 1
mov dword [esp + 0x18], ebp
je 0x486425
jmp 0x486126
mov eax, dword [esp + 0x58]
mov ebx, dword [esp + 0x4c]
mov ecx, dword [eax + 0xc]
mov edx, dword [eax]
mov eax, dword [eax + 8]
add eax, edx
mov dword [esp + 0x28], ecx
mov ecx, edx
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x54]
neg ecx
mov dword [esp + 0x14], edx
lea ebp, [eax + ecx*2]
mov dword [esp + 0x18], ebp
xor esi, esi
movzx eax, byte [ebx]
movzx edi, byte [ebx + 1]
add esi, eax
add ebx, 2
test edi, edi
je 0x486320
mov ecx, edx
mov eax, edi
sub ecx, esi
test ecx, ecx
jle 0x4862e5
sub eax, edx
add eax, esi
test ecx, ecx
mov ecx, dword [esp + 0x2c]
cmovle edx, esi
sub ecx, edx
cmp eax, ecx
cmovle ecx, eax
test ecx, ecx
jle 0x486315
lea eax, [ecx + ecx]
push eax
mov eax, edx
sub eax, esi
lea eax, [ebx + eax*2]
push eax
lea eax, [edx*2]
add eax, ebp
push eax
call fcn.0041c240
add esp, 0xc
mov edx, dword [esp + 0x14]
lea ebx, [ebx + edi*2]
add esi, edi
jmp 0x486328
test esi, esi
je 0x486425
mov edi, dword [esp + 0x48]
cmp esi, edi
jl 0x4862c5
mov eax, ebx
and eax, 2
add ebx, eax
xor ebp, ebp
nop dword [eax]
movzx eax, word [ebx]
movzx esi, word [ebx + 2]
add ebp, eax
add ebx, 4
mov dword [esp + 0x30], ebp
mov dword [esp + 0x24], esi
mov dword [esp + 0x34], ebx
test esi, esi
je 0x4863ff
mov eax, edx
mov ecx, esi
sub eax, ebp
test eax, eax
jle 0x486370
sub ecx, edx
add ecx, ebp
test eax, eax
mov eax, dword [esp + 0x2c]
cmovle edx, ebp
sub eax, edx
cmp ecx, eax
cmovle eax, ecx
mov dword [esp + 0x40], eax
test eax, eax
jle 0x4863fa
mov eax, dword [esp + 0x18]
lea eax, [eax + edx*2]
sub edx, ebp
mov ebp, dword [esp + 0x40]
mov dword [esp + 0x3c], eax
xor eax, eax
lea ecx, [ebx + edx*4]
mov ebx, dword [esp + 0x3c]
mov dword [esp + 0x38], ecx
mov edi, dword [ecx + eax*4]
mov esi, edi
movzx ecx, word [ebx + eax*2]
and esi, 0x7e0f81f
mov edx, ecx
shr edi, 5
shl edx, 0x10
and edi, 0x1f
or edx, ecx
and edx, 0x7e0f81f
sub esi, edx
imul esi, edi
shr esi, 5
add esi, edx
and esi, 0x7e0f81f
mov ecx, esi
shr ecx, 0x10
or ecx, esi
mov word [ebx + eax*2], cx
inc eax
mov ecx, dword [esp + 0x38]
cmp eax, ebp
jl 0x4863a4
mov ebx, dword [esp + 0x34]
mov ebp, dword [esp + 0x30]
mov esi, dword [esp + 0x24]
mov edi, dword [esp + 0x48]
lea ebx, [ebx + esi*4]
add ebp, esi
mov edx, dword [esp + 0x14]
cmp ebp, edi
jl 0x486340
mov eax, dword [esp + 0x50]
mov ebp, dword [esp + 0x18]
add ebp, dword [eax + 0x10]
sub dword [esp + 0x28], 1
mov dword [esp + 0x18], ebp
jne 0x4862c3
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x34
ret