Function at 0x485ee0
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 0x486212
sub ecx, 2
jne 0x486565
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 0x485f8e
mov ecx, ebp
mov eax, edi
sub ecx, esi
test ecx, ecx
jle 0x485f51
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 0x485f87
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 0x485f96
test esi, esi
je 0x486565
cmp esi, dword [esp + 0x48]
jl 0x485f33
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 0x4861e6
mov ecx, ebp
mov eax, edx
sub ecx, esi
test ecx, ecx
jle 0x485fce
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 0x4861e1
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 0x486164
cmp dword [0x57d7e4], 2
jl 0x486164
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 0x48603e
cmp dword [esp + 0x18], edx
jae 0x486164
mov eax, ecx
and eax, 0x80000007
jns 0x48604c
dec eax
or eax, 0xfffffff8
inc eax
movaps xmm6, xmmword [0x542700]
movaps xmm5, xmmword [0x548da0]
movaps xmm7, xmmword [0x548de0]
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 [0x548dd0]
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 [0x548dd0]
movups xmmword [eax - 0x20], xmm1
cmp ebp, dword [esp + 0x18]
jl 0x486090
mov edi, dword [esp + 0x38]
mov dword [esp + 0x34], ebp
cmp ebp, ecx
jge 0x4861d9
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 0x486176
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 0x485fa0
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 0x485f31
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x34
ret
cmp dword [eax + 0x10], 0x7e0
je 0x4863d6
cmp dword [eax + 0xc], 0x7e0
je 0x4863d6
cmp dword [eax + 0x14], 0x7e0
je 0x4863d6
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 0x4862cb
mov ecx, edx
mov eax, edi
sub ecx, esi
test ecx, ecx
jle 0x486290
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 0x4862c0
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 0x4862d3
test esi, esi
je 0x486565
mov edi, dword [esp + 0x48]
cmp esi, edi
jl 0x486270
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 0x4863ab
mov eax, edx
mov ecx, esi
sub eax, ebp
test eax, eax
jle 0x486314
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 0x4863a6
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 0x486350
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 0x4862e4
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 0x486565
jmp 0x486266
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 0x486460
mov ecx, edx
mov eax, edi
sub ecx, esi
test ecx, ecx
jle 0x486425
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 0x486455
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 0x486468
test esi, esi
je 0x486565
mov edi, dword [esp + 0x48]
cmp esi, edi
jl 0x486405
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 0x48653f
mov eax, edx
mov ecx, esi
sub eax, ebp
test eax, eax
jle 0x4864b0
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 0x48653a
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 0x4864e4
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 0x486480
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 0x486403
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x34
ret