Function at 0x486a00
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x270
movzx eax, byte [0x574a24]
mov esi, dword [ebp + 8]
movzx eax, al
push eax
call fcn.00478240
add esp, 4
cmp al, 2
jne 0x486d6c
movzx eax, byte [0x574a24]
mov ebx, dword [ebp + 0xc]
lea edi, [esi + 0x50]
movzx eax, al
push eax
call fcn.00478240
add esp, 4
cmp al, 2
mov eax, esi
jne 0x486d7b
movsd xmm1, qword [ebx + 0x30]
movsd xmm2, qword [ebx + 0x28]
movsd xmm0, qword [ebx + 0x38]
mov edx, dword [ebx + 0x48]
mov esi, dword [ebp + 0x10]
movsd xmm3, qword [ebx]
mov dword [esp + 0xc], edi
movsd qword [edi + 0x30], xmm1
movsd xmm1, qword [ebx + 0x20]
movsd qword [edi + 0x28], xmm2
movsd xmm2, qword [ebx + 0x18]
movsd qword [edi + 0x38], xmm0
cmp edx, dword [ebp + 0x14]
mov dword [esp + 8], edx
movsd qword [edi + 0x20], xmm1
movsd xmm1, qword [ebx + 0x10]
movsd qword [edi + 0x18], xmm2
movsd xmm2, qword [ebx]
movsd qword [edi + 0x10], xmm1
movsd xmm1, qword [ebx + 8]
movsd qword [edi], xmm2
movsd xmm2, qword [ebx + 0x10]
movsd qword [edi + 8], xmm1
movsd xmm1, qword [ebx + 8]
mov dword [eax + 0x94], 0
mov dword [eax + 0x90], 0
mov dword [eax + 0x98], ebx
movsd qword [eax + 0x10], xmm2
movsd xmm2, qword [ebx + 0x20]
movsd qword [eax], xmm3
movsd qword [eax + 8], xmm1
movsd xmm1, qword [ebx + 0x18]
movsd qword [eax + 0x20], xmm2
movsd xmm2, qword [ebx + 0x30]
movsd qword [eax + 0x18], xmm1
movsd xmm1, qword [ebx + 0x28]
movsd qword [eax + 0x30], xmm2
movsd qword [eax + 0x28], xmm1
movsd xmm1, qword [ebx + 0x38]
movsd qword [eax + 0x38], xmm1
mov dword [eax + 0x44], 0
mov dword [eax + 0x40], 0
mov dword [eax + 0x48], ebx
jae 0x486ca9
movzx eax, byte [0x574a24]
movzx eax, al
push eax
call fcn.00478240
add esp, 4
cmp al, 2
jne 0x486d8e
movsd xmm1, qword [ebx + 8]
xorps xmm0, xmm0
movsd xmm2, qword [ebx + 0x10]
movsd xmm3, qword [ebx]
lea edi, [esp + 0xf0]
movaps xmmword [esp + 0x160], xmm0
movaps xmmword [esp + 0x150], xmm0
movaps xmmword [esp + 0x140], xmm0
movaps xmmword [esp + 0x130], xmm0
movaps xmmword [esp + 0x120], xmm0
movaps xmmword [esp + 0x110], xmm0
movaps xmmword [esp + 0x100], xmm0
movaps xmmword [esp + 0xf0], xmm0
movsd qword [esp + 0x178], xmm1
movsd xmm1, qword [ebx + 0x18]
movsd qword [esp + 0x180], xmm2
movsd xmm2, qword [ebx + 0x20]
movsd qword [esp + 0x170], xmm3
movsd qword [esp + 0x188], xmm1
movsd xmm1, qword [ebx + 0x28]
movsd qword [esp + 0x190], xmm2
movsd xmm2, qword [ebx + 0x30]
movsd qword [esp + 0x198], xmm1
movsd xmm1, qword [ebx + 0x38]
movsd qword [esp + 0x1a0], xmm2
movsd qword [esp + 0x1a8], xmm1
mov dword [esp + 0x1b4], 0
mov dword [esp + 0x1b0], 0
mov dword [esp + 0x1b8], ebx
mov dword [esp + 0x1c0], 0
push dword [ebp + 0x14]
push esi
push edi
call fcn.004806d0
add esp, 0xc
lea ebx, [esp + 0x10]
push 0xd8
push edi
push ebx
call fcn.004f5b80
add esp, 0xc
mov eax, dword [esp + 0xd8]
lea esi, [esp + 0x90]
mov ecx, 0x14
mov edx, dword [eax + 0x48]
lea eax, [esp + 0x218]
mov edi, eax
rep movsd dword es:[edi], dword [esi]
cmp edx, 0x81
jae 0x486f03
lea esi, [esp + 0x1d4]
push dword [esp + 0xe0]
push edx
push ebx
push eax
push esi
call fcn.004803b0
add esp, 0x14
mov eax, dword [esp + 0x214]
mov edx, dword [esp + 8]
mov ebx, dword [eax + 0x40]
cmp ebx, 0x41
jb 0x486cac
jmp 0x486f03
mov ebx, dword [ebp + 0x14]
movaps xmm0, xmmword [str.6666666666666666jjjjjjjjjjjjjjjjjjjjjjjj]
cmp edx, 0x81
movaps xmmword [esp + 0x80], xmm0
movaps xmmword [esp + 0x70], xmm0
movaps xmmword [esp + 0x60], xmm0
movaps xmmword [esp + 0x50], xmm0
movaps xmmword [esp + 0x40], xmm0
movaps xmmword [esp + 0x30], xmm0
movaps xmmword [esp + 0x20], xmm0
movaps xmmword [esp + 0x10], xmm0
jae 0x486f03
cmp edx, ebx
cmovb ebx, edx
test ebx, ebx
je 0x486daa
xor eax, eax
cmp ebx, 8
jb 0x486d9d
xor eax, eax
cmp ebx, 0x20
jb 0x486d43
mov eax, ebx
xor ecx, ecx
and eax, 0xffffffe0
movups xmm0, xmmword [esi + ecx]
movups xmm2, xmmword [esp + ecx + 0x10]
movups xmm1, xmmword [esi + ecx + 0x10]
movups xmm3, xmmword [esp + ecx + 0x20]
xorps xmm2, xmm0
xorps xmm3, xmm1
movups xmmword [esp + ecx + 0x10], xmm2
movups xmmword [esp + ecx + 0x20], xmm3
add ecx, 0x20
cmp eax, ecx
jne 0x486d10
cmp ebx, eax
je 0x486daa
test bl, 0x18
je 0x486d9d
mov ecx, eax
mov eax, ebx
and eax, 0xfffffff8
nop word [eax + eax]
movsd xmm0, qword [esi + ecx]
movsd xmm1, qword [esp + ecx + 0x10]
xorps xmm1, xmm0
movlps qword [esp + ecx + 0x10], xmm1
add ecx, 8
cmp eax, ecx
jne 0x486d50
jmp 0x486da6
mov ecx, 0x574a24
call fcn.00504f00
jmp 0x486a2d
mov ecx, 0x574a24
mov esi, eax
call fcn.00504f00
mov eax, esi
jmp 0x486a50
mov ecx, 0x574a24
call fcn.00504f00
jmp 0x486b49
movzx ecx, byte [esi + eax]
xor byte [esp + eax + 0x10], cl
inc eax
cmp ebx, eax
jne 0x486d9d
mov ebx, dword [ebp + 8]
mov ecx, dword [ebx + 0x48]
mov edi, dword [ecx + 0x48]
test edi, edi
je 0x486f03
mov eax, edx
xor edx, edx
div edi
mov edx, dword [esp + 8]
mov esi, eax
imul eax, edi
cmp eax, edx
jne 0x486f03
cmp edi, edx
ja 0x486dfc
lea eax, [esp + 0x10]
push esi
push eax
push ebx
call dword [ecx + 0x50]
add esp, 0xc
mov eax, dword [ebx + 0x44]
add esi, dword [ebx + 0x40]
adc eax, 0
jb 0x486f03
mov edx, dword [esp + 8]
mov dword [ebx + 0x40], esi
mov dword [ebx + 0x44], eax
test edx, edx
je 0x486ea8
cmp edx, 8
jae 0x486e12
lea ecx, [esp + 0x10]
jmp 0x486e92
xor eax, eax
cmp edx, 0x20
jb 0x486e59
movaps xmm0, xmmword [0x525820]
mov eax, edx
lea ecx, [esp + 0x20]
and eax, 0xffffffe0
mov edx, eax
nop dword [eax + eax]
movups xmm1, xmmword [ecx - 0x10]
movups xmm2, xmmword [ecx]
xorps xmm1, xmm0
xorps xmm2, xmm0
movups xmmword [ecx - 0x10], xmm1
movups xmmword [ecx], xmm2
add ecx, 0x20
add edx, 0xffffffe0
jne 0x486e30
mov edx, dword [esp + 8]
cmp edx, eax
je 0x486ea8
test dl, 0x18
je 0x486e8e
movaps xmm0, xmmword [0x525830]
and edx, 0xfffffff8
lea esi, [esp + eax + 0x10]
lea ecx, [esp + edx + 0x10]
sub eax, edx
nop dword [eax]
movsd xmm1, qword [esi]
xorps xmm1, xmm0
movlps qword [esi], xmm1
add esi, 8
add eax, 8
jne 0x486e70
mov eax, dword [esp + 8]
cmp eax, edx
mov edx, eax
jne 0x486e92
jmp 0x486ea8
lea ecx, [esp + eax + 0x10]
lea eax, [esp + edx + 0x10]
nop word cs:[eax + eax]
xor byte [ecx], 0x6a
inc ecx
cmp ecx, eax
jne 0x486ea0
mov ecx, dword [ebx + 0x98]
mov edi, dword [ecx + 0x48]
test edi, edi
je 0x486f03
mov eax, edx
xor edx, edx
div edi
mov edx, dword [esp + 8]
mov esi, eax
imul eax, edi
cmp eax, edx
jne 0x486f03
cmp edi, edx
ja 0x486ef9
lea eax, [esp + 0x10]
push esi
push eax
push dword [esp + 0x14]
call dword [ecx + 0x50]
add esp, 0xc
mov eax, dword [ebx + 0x94]
add esi, dword [ebx + 0x90]
adc eax, 0
jb 0x486f03
mov dword [ebx + 0x90], esi
mov dword [ebx + 0x94], eax
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
ud2