Function at 0x490110
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x300
mov edi, dword [ebp + 0xc]
mov eax, dword [ebp + 0x14]
mov ecx, dword [ebp + 0x10]
movsd xmm1, qword [edi + 0x30]
movsd xmm2, qword [edi + 0x28]
movsd xmm0, qword [edi + 0x38]
mov ebx, dword [edi + 0x50]
movsd xmm3, qword [edi]
movsd qword [esp + 0x40], xmm1
movsd xmm1, qword [edi + 0x20]
movsd qword [esp + 0x38], xmm2
movsd xmm2, qword [edi + 0x18]
movsd qword [esp + 0x48], xmm0
cmp ebx, eax
movsd qword [esp + 0x30], xmm1
movsd xmm1, qword [edi + 0x10]
movsd qword [esp + 0x28], xmm2
movsd xmm2, qword [edi]
movsd qword [esp + 0x20], xmm1
movsd xmm1, qword [edi + 8]
movsd qword [esp + 0x10], xmm2
movsd xmm2, qword [edi + 0x10]
movsd qword [esp + 0x18], xmm1
movsd xmm1, qword [edi + 8]
mov dword [esp + 0x54], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x58], edi
movsd qword [esp + 0x70], xmm2
movsd xmm2, qword [edi + 0x20]
movsd qword [esp + 0x60], xmm3
movsd qword [esp + 0x68], xmm1
movsd xmm1, qword [edi + 0x18]
movsd qword [esp + 0x80], xmm2
movsd xmm2, qword [edi + 0x30]
movsd qword [esp + 0x78], xmm1
movsd xmm1, qword [edi + 0x28]
movsd qword [esp + 0x90], xmm2
movsd qword [esp + 0x88], xmm1
movsd xmm1, qword [edi + 0x38]
movsd qword [esp + 0x98], xmm1
mov dword [esp + 0xa4], 0
mov dword [esp + 0xa0], 0
mov dword [esp + 0xa8], edi
jae 0x49038d
movsd xmm1, qword [edi + 8]
xorps xmm0, xmm0
movsd xmm2, qword [edi + 0x10]
movsd xmm3, qword [edi]
lea esi, [esp + 0x190]
movaps xmmword [esp + 0x200], xmm0
movaps xmmword [esp + 0x1f0], xmm0
movaps xmmword [esp + 0x1e0], xmm0
movaps xmmword [esp + 0x1d0], xmm0
movaps xmmword [esp + 0x1c0], xmm0
movaps xmmword [esp + 0x1b0], xmm0
movaps xmmword [esp + 0x1a0], xmm0
movaps xmmword [esp + 0x190], xmm0
movsd qword [esp + 0x218], xmm1
movsd xmm1, qword [edi + 0x18]
movsd qword [esp + 0x220], xmm2
movsd xmm2, qword [edi + 0x20]
movsd qword [esp + 0x210], xmm3
movsd qword [esp + 0x228], xmm1
movsd xmm1, qword [edi + 0x28]
movsd qword [esp + 0x230], xmm2
movsd xmm2, qword [edi + 0x30]
movsd qword [esp + 0x238], xmm1
movsd xmm1, qword [edi + 0x38]
movsd qword [esp + 0x240], xmm2
movsd qword [esp + 0x248], xmm1
mov dword [esp + 0x254], 0
mov dword [esp + 0x250], 0
mov dword [esp + 0x258], edi
mov dword [esp + 0x260], 0
push eax
push ecx
push esi
call fcn.0048f8e0
add esp, 0xc
lea eax, [esp + 0xb0]
push 0xd8
push esi
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov eax, dword [esp + 0x178]
lea esi, [esp + 0x130]
lea edi, [esp + 0x268]
mov ecx, 0x14
mov eax, dword [eax + 0x50]
rep movsd dword es:[edi], dword [esi]
cmp eax, 0x81
jae 0x490492
lea ecx, [esp + 0x2b8]
lea edx, [esp + 0x268]
push dword [esp + 0x180]
push eax
lea eax, [esp + 0xb8]
push eax
call fcn.0048f650
add esp, 0xc
mov eax, dword [esp + 0x2b8]
mov eax, dword [eax + 0x48]
cmp eax, 0x41
jae 0x4904a2
mov edi, dword [ebp + 0xc]
lea ecx, [esp + 0x2bc]
movaps xmm0, xmmword [str.6666666666666666jjjjjjjjjjjjjjjjjjjjjjjj]
cmp ebx, 0x81
movaps xmmword [esp + 0x120], xmm0
movaps xmmword [esp + 0x110], xmm0
movaps xmmword [esp + 0x100], xmm0
movaps xmmword [esp + 0xf0], xmm0
movaps xmmword [esp + 0xe0], xmm0
movaps xmmword [esp + 0xd0], xmm0
movaps xmmword [esp + 0xc0], xmm0
movaps xmmword [esp + 0xb0], xmm0
jae 0x490482
cmp ebx, eax
mov dword [esp + 8], ebx
cmovb eax, ebx
test eax, eax
je 0x4904bf
xor edx, edx
cmp eax, 8
jb 0x4904af
xor edx, edx
cmp eax, 0x20
jb 0x49044e
mov edx, eax
xor esi, esi
and edx, 0xe0
nop dword [eax]
movups xmm0, xmmword [ecx + esi]
movups xmm2, xmmword [esp + esi + 0xb0]
movups xmm1, xmmword [ecx + esi + 0x10]
movups xmm3, xmmword [esp + esi + 0xc0]
xorps xmm2, xmm0
xorps xmm3, xmm1
movups xmmword [esp + esi + 0xb0], xmm2
movups xmmword [esp + esi + 0xc0], xmm3
add esi, 0x20
cmp edx, esi
jne 0x490410
cmp eax, edx
je 0x4904bf
test al, 0x18
je 0x4904af
mov esi, edx
mov edx, eax
and edx, 0xf8
nop dword [eax + eax]
movsd xmm0, qword [ecx + esi]
movsd xmm1, qword [esp + esi + 0xb0]
xorps xmm1, xmm0
movlps qword [esp + esi + 0xb0], xmm1
add esi, 8
cmp edx, esi
jne 0x490460
jmp 0x4904bb
push 0x5277c0
push 0x80
push ebx
call fcn.00500430
push 0x5276b4
push 0x80
push eax
call fcn.00500430
push 0x5276c4
push 0x40
push eax
call fcn.00500430
movzx ebx, byte [ecx + edx]
xor byte [esp + edx + 0xb0], bl
inc edx
cmp eax, edx
jne 0x4904af
mov ebx, dword [esp + 8]
test ebx, ebx
je 0x49067c
movzx eax, byte [0x5781b4]
cmp al, 2
jne 0x4905a8
lea esi, [esp + 0xb0]
lea eax, [esp + 0x10]
push 1
push esi
push eax
call dword [edi + 0x40]
add esp, 0xc
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x54]
add eax, 1
adc ecx, 0
jb 0x49068d
cmp ebx, 8
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], ecx
jb 0x4905be
xor eax, eax
cmp ebx, 0x20
jb 0x490565
movaps xmm0, xmmword [0x5274c0]
mov eax, ebx
lea ecx, [esp + 0xc0]
and eax, 0xe0
mov edx, eax
nop word cs:[eax + eax]
nop dword [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 0x490540
cmp ebx, eax
je 0x4905d8
test bl, 0x18
je 0x4905b7
movaps xmm0, xmmword [0x5274d0]
mov ecx, ebx
lea edx, [esp + eax + 0xb0]
and ecx, 0xf8
lea esi, [esp + ecx + 0xb0]
sub eax, ecx
nop word cs:[eax + eax]
nop
movsd xmm1, qword [edx]
xorps xmm1, xmm0
movlps qword [edx], xmm1
add edx, 8
add eax, 8
jne 0x490590
cmp ebx, ecx
jne 0x4905be
jmp 0x4905d8
mov ecx, 0x5781b4
call fcn.004fefa0
jmp 0x4904da
lea esi, [esp + eax + 0xb0]
lea eax, [esp + ebx + 0xb0]
nop word cs:[eax + eax]
nop
xor byte [esi], 0x6a
inc esi
cmp esi, eax
jne 0x4905d0
mov ebx, dword [esp + 0xa8]
mov ecx, dword [ebx + 0x50]
test ecx, ecx
je 0x49067c
mov edi, dword [esp + 8]
xor edx, edx
mov eax, edi
div ecx
mov dword [esp + 0x268], edi
mov esi, eax
imul eax, ecx
cmp eax, edi
mov dword [esp + 0xc], eax
jne 0x490697
cmp ecx, edi
ja 0x490650
movzx eax, byte [0x5781b4]
lea edi, [esp + 0x60]
cmp al, 2
jne 0x490670
lea eax, [esp + 0xb0]
push esi
push eax
push edi
call dword [ebx + 0x40]
add esp, 0xc
mov eax, dword [esp + 0xa4]
add esi, dword [esp + 0xa0]
adc eax, 0
jb 0x49068d
mov dword [esp + 0xa0], esi
mov dword [esp + 0xa4], eax
mov esi, dword [ebp + 8]
push 0xa0
lea eax, [esp + 0x14]
push eax
push esi
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov eax, esi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, 0x5781b4
call fcn.004fefa0
jmp 0x49061f
push 0x527594
push 0x19
push 0x5274e0
call fcn.005005f0
push 0x5275b4
call fcn.00500310
mov dword [esp + 0x190], 0
lea eax, [esp + 0x190]
lea ecx, [esp + 0x268]
lea edx, [esp + 0xc]
push 0x5275a4
push eax
push ecx
push edx
push 0
call fcn.004fef30
int3