Function at 0x610220
Capabilities:
Encode data using xor
Encrypt data using blowfish

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x6409cd
mov eax, dword fs:[0]
push eax
sub esp, 0x5c
mov eax, dword [0x717f80]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov dword [ebp - 0x60], edi
mov eax, dword [ebp + 0x14]
lea ecx, [ebp - 0x5c]
mov esi, dword [ebp + 0xc]
xorps xmm0, xmm0
push str.initCrypt_blowfish
push eax
movq qword [ebp - 0x5c], xmm0
mov dword [ebp - 0x54], 0
call fcn.004b2490
mov eax, dword [esi + 0x10]
cdq
and edx, 7
mov dword [ebp - 4], 0
add eax, edx
sar eax, 3
push 0x40
mov dword [ebp - 0x64], eax
lea eax, [ebp - 0x50]
push 0
push eax
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
add esi, 0x14
mov ecx, esi
call fcn.0046e290
mov ecx, esi
cmp eax, 0x40
jbe 0x6102b6
call fcn.004a2ca0
test eax, eax
je 0x6102db
push 0x40
jmp 0x6102c7
call fcn.004a2ca0
test eax, eax
je 0x6102db
mov ecx, esi
call fcn.0046e290
push eax
mov ecx, esi
call fcn.004a2ca0
push eax
lea eax, [ebp - 0x50]
push eax
call fcn.004777e0
add esp, 0xc
mov ecx, dword [edi + 0x88]
lea eax, [edi + 0x88]
lea edx, [ecx + 0x44]
cmp ecx, 0x716a64
ja 0x6102fa
cmp edx, 0x716a20
jae 0x610302
cmp ecx, eax
ja 0x610328
cmp edx, eax
jb 0x610328
xor edx, edx
mov edi, eax
nop word [eax + eax]
mov ecx, dword [edi]
mov eax, dword [edx + 0x716a20]
mov dword [edx + ecx], eax
add edx, 4
cmp edx, 0x48
jl 0x610310
mov edi, dword [ebp - 0x60]
jmp 0x610360
movups xmm0, xmmword [0x716a20]
movups xmmword [ecx], xmm0
movups xmm0, xmmword [0x716a30]
movups xmmword [ecx + 0x10], xmm0
movups xmm0, xmmword [0x716a40]
movups xmmword [ecx + 0x20], xmm0
movups xmm0, xmmword [0x716a50]
movups xmmword [ecx + 0x30], xmm0
movq xmm0, qword [0x716a60]
movq qword [ecx + 0x40], xmm0
xor eax, eax
mov esi, 0x40
nop word [eax + eax]
mov edx, dword [edi + 0x8c]
mov ecx, dword [eax + 0x716a68]
mov dword [eax + edx], ecx
mov edx, dword [edi + 0x8c]
mov ecx, dword [eax + 0x716a6c]
mov dword [eax + edx + 4], ecx
mov edx, dword [edi + 0x8c]
mov ecx, dword [eax + 0x716a70]
mov dword [eax + edx + 8], ecx
mov edx, dword [edi + 0x8c]
mov ecx, dword [eax + 0x716a74]
mov dword [eax + edx + 0xc], ecx
add eax, 0x10
sub esi, 1
jne 0x610370
cmp eax, 0x1000
jl 0x610362
xor ecx, ecx
xor edx, edx
mov dword [ebp - 0x60], ecx
mov dword [ebp - 0x68], edx
nop dword [eax + eax]
mov esi, dword [edi + 0x88]
lea eax, [ecx + 1]
add esi, edx
cdq
idiv dword [ebp - 0x64]
movzx ecx, byte [ebp + edx - 0x50]
mov edx, dword [ebp - 0x60]
movzx eax, byte [ebp + edx - 0x50]
shl eax, 8
or ecx, eax
lea eax, [edx + 2]
cdq
idiv dword [ebp - 0x64]
shl ecx, 8
movzx eax, byte [ebp + edx - 0x50]
or ecx, eax
mov eax, dword [ebp - 0x60]
add eax, 3
shl ecx, 8
cdq
idiv dword [ebp - 0x64]
movzx eax, byte [ebp + edx - 0x50]
or ecx, eax
mov eax, dword [ebp - 0x60]
add eax, 4
xor dword [esi], ecx
cdq
idiv dword [ebp - 0x64]
mov ecx, edx
mov edx, dword [ebp - 0x68]
add edx, 4
mov dword [ebp - 0x60], ecx
mov dword [ebp - 0x68], edx
cmp edx, 0x48
jl 0x6103d0
mov dword [ebp - 0x60], 0
xor esi, esi
mov dword [ebp - 0x64], 0
lea eax, [ebp - 0x64]
mov ecx, edi
push eax
lea eax, [ebp - 0x60]
push eax
call fcn.006126f0
mov ecx, dword [edi + 0x88]
mov eax, dword [ebp - 0x60]
mov dword [esi + ecx], eax
mov ecx, dword [edi + 0x88]
mov eax, dword [ebp - 0x64]
mov dword [ecx + esi + 4], eax
add esi, 8
cmp esi, 0x48
jl 0x610445
xor esi, esi
nop word [eax + eax]
mov dword [ebp - 0x68], 0x80
lea eax, [ebp - 0x64]
mov ecx, edi
push eax
lea eax, [ebp - 0x60]
push eax
call fcn.006126f0
mov ecx, dword [edi + 0x8c]
mov eax, dword [ebp - 0x60]
mov dword [esi + ecx], eax
mov ecx, dword [edi + 0x8c]
mov eax, dword [ebp - 0x64]
mov dword [ecx + esi + 4], eax
add esi, 8
sub dword [ebp - 0x68], 1
jne 0x610487
cmp esi, 0x1000
jl 0x610480
lea ecx, [ebp - 0x5c]
call fcn.004b2630
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00622073
mov esp, ebp
pop ebp
ret 0x10