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

Disassembly:
sub esp, 0x50
mov eax, dword [0x5894dc]
xor eax, esp
mov dword [esp + 0x4c], eax
push ebx
push ebp
mov ebx, ecx
mov eax, dword [ebx + 8]
cdq
push esi
push edi
and edx, 7
add eax, edx
mov ebp, eax
push 0x40
lea eax, [esp + 0x20]
push 0
push eax
sar ebp, 3
call fcn.004ed3e0
lea esi, [ebx + 0x18]
add esp, 0xc
mov ecx, esi
call fcn.0046fb70
cmp eax, 0x40
mov ecx, esi
jbe 0x4a0093
call fcn.004e81e0
test eax, eax
je 0x4a00b9
mov ecx, esi
call fcn.004e81e0
mov ecx, 0x10
mov esi, eax
lea edi, [esp + 0x1c]
rep movsd dword es:[edi], dword [esi]
jmp 0x4a00b9
call fcn.004e81e0
test eax, eax
je 0x4a00b9
mov ecx, esi
call fcn.0046fb70
push eax
mov ecx, esi
call fcn.004e81e0
push eax
lea ecx, [esp + 0x24]
push ecx
call fcn.004ed460
add esp, 0xc
mov edx, 0xc
sub edx, 0x585594
mov dword [esp + 0x14], edx
mov edx, 0x10
sub edx, 0x585594
mov dword [esp + 0x18], edx
mov ecx, 8
mov edx, 0x14
xor eax, eax
sub ecx, 0x585594
sub edx, 0x585594
mov dword [esp + 0x10], edx
mov esi, dword [eax + 0x585590]
mov edx, dword [ebx]
mov dword [eax + edx], esi
mov esi, dword [eax + 0x585594]
mov edx, dword [ebx]
mov dword [eax + edx + 4], esi
mov edi, dword [eax + 0x585598]
mov esi, dword [ebx]
lea edx, [ecx + eax + 0x585594]
mov dword [edx + esi], edi
mov edi, dword [eax + 0x58559c]
mov esi, dword [ebx]
mov edx, dword [esp + 0x14]
lea edx, [edx + eax + 0x585594]
mov dword [edx + esi], edi
mov edi, dword [eax + 0x5855a0]
mov edx, dword [esp + 0x18]
mov esi, dword [ebx]
lea edx, [edx + eax + 0x585594]
mov dword [edx + esi], edi
mov edx, dword [esp + 0x10]
mov edi, dword [eax + 0x5855a4]
mov esi, dword [ebx]
lea edx, [edx + eax + 0x585594]
add eax, 0x18
cmp eax, 0x48
mov dword [edx + esi], edi
jl 0x4a00f3
mov eax, 8
sub eax, 0x5855dc
mov dword [esp + 0x10], eax
xor eax, eax
jmp 0x4a0180
lea ecx, [eax + 0xc]
mov edx, 0x40
jmp 0x4a0190
mov edi, dword [eax + 0x5855d8]
mov esi, dword [ebx + 4]
mov dword [eax + esi], edi
mov edi, dword [eax + 0x5855dc]
mov esi, dword [ebx + 4]
mov dword [esi + eax + 4], edi
mov esi, dword [ebx + 4]
add esi, dword [esp + 0x10]
mov edi, dword [eax + 0x5855e0]
mov dword [esi + eax + 0x5855dc], edi
mov edi, dword [eax + 0x5855e4]
mov esi, dword [ebx + 4]
mov dword [ecx + esi], edi
add eax, 0x10
add ecx, 0x10
sub edx, 1
jne 0x4a0190
cmp eax, 0x1000
jl 0x4a0180
xor edi, edi
mov esi, 0xc
mov eax, dword [ebx]
lea ecx, [esi + eax - 0xc]
lea eax, [edi + 1]
cdq
idiv ebp
mov dword [esp + 0x10], ecx
lea eax, [edi + 2]
movzx ecx, byte [esp + edx + 0x1c]
cdq
idiv ebp
mov ch, byte [esp + edi + 0x1c]
lea eax, [edi + 3]
shl ecx, 8
movzx edx, byte [esp + edx + 0x1c]
or ecx, edx
cdq
idiv ebp
shl ecx, 8
movzx eax, byte [esp + edx + 0x1c]
or ecx, eax
mov eax, dword [esp + 0x10]
xor dword [eax], ecx
lea eax, [edi + 4]
cdq
idiv ebp
mov ecx, dword [ebx]
mov edi, edx
lea edx, [esi + ecx - 8]
mov dword [esp + 0x10], edx
lea eax, [edi + 1]
cdq
idiv ebp
lea eax, [edi + 2]
movzx ecx, byte [esp + edx + 0x1c]
cdq
idiv ebp
mov ch, byte [esp + edi + 0x1c]
lea eax, [edi + 3]
shl ecx, 8
movzx edx, byte [esp + edx + 0x1c]
or ecx, edx
cdq
idiv ebp
shl ecx, 8
movzx eax, byte [esp + edx + 0x1c]
or ecx, eax
mov eax, dword [esp + 0x10]
xor dword [eax], ecx
lea eax, [edi + 4]
cdq
idiv ebp
mov ecx, dword [ebx]
mov edi, edx
lea edx, [ecx + esi - 4]
mov dword [esp + 0x10], edx
lea eax, [edi + 1]
cdq
idiv ebp
lea eax, [edi + 2]
movzx ecx, byte [esp + edx + 0x1c]
cdq
idiv ebp
mov ch, byte [esp + edi + 0x1c]
lea eax, [edi + 3]
shl ecx, 8
movzx edx, byte [esp + edx + 0x1c]
or ecx, edx
cdq
idiv ebp
shl ecx, 8
movzx eax, byte [esp + edx + 0x1c]
or ecx, eax
mov eax, dword [esp + 0x10]
xor dword [eax], ecx
lea eax, [edi + 4]
cdq
idiv ebp
mov ecx, dword [ebx]
add ecx, esi
mov dword [esp + 0x10], ecx
mov edi, edx
lea eax, [edi + 1]
cdq
idiv ebp
lea eax, [edi + 2]
movzx ecx, byte [esp + edx + 0x1c]
cdq
idiv ebp
mov ch, byte [esp + edi + 0x1c]
lea eax, [edi + 3]
shl ecx, 8
movzx edx, byte [esp + edx + 0x1c]
or ecx, edx
cdq
idiv ebp
shl ecx, 8
movzx eax, byte [esp + edx + 0x1c]
or ecx, eax
mov eax, dword [esp + 0x10]
xor dword [eax], ecx
lea eax, [edi + 4]
cdq
idiv ebp
mov ecx, dword [ebx]
mov edi, edx
lea edx, [ecx + esi + 4]
mov dword [esp + 0x10], edx
lea eax, [edi + 1]
cdq
idiv ebp
lea eax, [edi + 2]
movzx ecx, byte [esp + edx + 0x1c]
cdq
idiv ebp
mov ch, byte [esp + edi + 0x1c]
lea eax, [edi + 3]
shl ecx, 8
movzx edx, byte [esp + edx + 0x1c]
or ecx, edx
cdq
idiv ebp
shl ecx, 8
movzx eax, byte [esp + edx + 0x1c]
or ecx, eax
mov eax, dword [esp + 0x10]
xor dword [eax], ecx
lea eax, [edi + 4]
cdq
idiv ebp
mov ecx, dword [ebx]
mov edi, edx
lea edx, [ecx + esi + 8]
mov dword [esp + 0x10], edx
lea eax, [edi + 1]
cdq
idiv ebp
lea eax, [edi + 2]
add esi, 0x18
movzx ecx, byte [esp + edx + 0x1c]
cdq
idiv ebp
mov ch, byte [esp + edi + 0x1c]
lea eax, [edi + 3]
shl ecx, 8
movzx edx, byte [esp + edx + 0x1c]
or ecx, edx
cdq
idiv ebp
shl ecx, 8
movzx eax, byte [esp + edx + 0x1c]
or ecx, eax
mov eax, dword [esp + 0x10]
xor dword [eax], ecx
lea eax, [edi + 4]
cdq
idiv ebp
cmp esi, 0x54
mov edi, edx
jl 0x4a01e2
xor edi, edi
mov dword [esp + 0x18], edi
mov dword [esp + 0x14], edi
xor esi, esi
lea ecx, [esp + 0x14]
push ecx
lea edx, [esp + 0x1c]
push edx
mov ecx, ebx
call fcn.0049f8d0
mov eax, dword [ebx]
mov ecx, dword [esp + 0x18]
mov dword [esi + eax], ecx
mov edx, dword [ebx]
mov eax, dword [esp + 0x14]
mov dword [esi + edx + 4], eax
add esi, 8
cmp esi, 0x48
jl 0x4a03a2
xor esi, esi
mov edi, 0x80
lea ecx, [esp + 0x14]
push ecx
lea edx, [esp + 0x1c]
push edx
mov ecx, ebx
call fcn.0049f8d0
mov eax, dword [ebx + 4]
mov ecx, dword [esp + 0x18]
mov dword [esi + eax], ecx
mov edx, dword [ebx + 4]
mov eax, dword [esp + 0x14]
mov dword [esi + edx + 4], eax
add esi, 8
sub edi, 1
jne 0x4a03d5
cmp esi, 0x1000
jl 0x4a03d0
mov ecx, dword [esp + 0x5c]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.004ec47e
add esp, 0x50
ret