Function at 0x4d4830
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
push esi
push edi
mov ebx, ecx
call fcn.00424650
mov byte [esp + 0x17], al
mov eax, dword [ebx + 0x38]
cdq
and edx, 7
add eax, edx
mov ebp, eax
push 0x40
lea eax, [esp + 0x20]
push 0
push eax
mov byte [ebx], 1
sar ebp, 3
call fcn.004ed3e0
lea esi, [ebx + 0x10]
add esp, 0xc
mov ecx, esi
call fcn.0046fb70
cmp eax, 0x40
mov ecx, esi
jbe 0x4d489f
call fcn.004e81e0
test eax, eax
je 0x4d48c5
mov ecx, esi
call fcn.004e81e0
mov ecx, 0x10
mov esi, eax
lea edi, [esp + 0x1c]
rep movsd dword es:[edi], dword [esi]
jmp 0x4d48c5
call fcn.004e81e0
test eax, eax
je 0x4d48c5
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 esi, 0x10
sub esi, 0x587b9c
mov dword [esp + 0x10], esi
mov ecx, 8
mov edx, 0xc
mov esi, 0x14
xor eax, eax
sub ecx, 0x587b9c
sub edx, 0x587b9c
sub esi, 0x587b9c
mov dword [esp + 0x18], esi
jmp 0x4d4900
mov edi, dword [eax + 0x587b98]
mov esi, dword [ebx + 4]
mov dword [eax + esi], edi
mov edi, dword [eax + 0x587b9c]
mov esi, dword [ebx + 4]
mov dword [esi + eax + 4], edi
mov esi, dword [ebx + 4]
mov edi, dword [eax + 0x587ba0]
add esi, ecx
mov dword [esi + eax + 0x587b9c], edi
mov esi, dword [ebx + 4]
mov edi, dword [eax + 0x587ba4]
add esi, edx
mov dword [esi + eax + 0x587b9c], edi
mov esi, dword [ebx + 4]
add esi, dword [esp + 0x10]
mov edi, dword [eax + 0x587ba8]
mov dword [esi + eax + 0x587b9c], edi
mov esi, dword [ebx + 4]
add esi, dword [esp + 0x18]
mov edi, dword [eax + 0x587bac]
mov dword [esi + eax + 0x587b9c], edi
add eax, 0x18
cmp eax, 0x48
jl 0x4d4900
mov eax, 8
sub eax, 0x587be4
mov dword [esp + 0x10], eax
xor eax, eax
lea ecx, [ecx]
lea ecx, [eax + 0xc]
mov edx, 0x40
jmp 0x4d4990
mov edi, dword [eax + 0x587be0]
mov esi, dword [ebx + 8]
mov dword [eax + esi], edi
mov edi, dword [eax + 0x587be4]
mov esi, dword [ebx + 8]
mov dword [esi + eax + 4], edi
mov esi, dword [ebx + 8]
add esi, dword [esp + 0x10]
mov edi, dword [eax + 0x587be8]
mov dword [esi + eax + 0x587be4], edi
mov edi, dword [eax + 0x587bec]
mov esi, dword [ebx + 8]
mov dword [ecx + esi], edi
add eax, 0x10
add ecx, 0x10
sub edx, 1
jne 0x4d4990
cmp eax, 0x1000
jl 0x4d4980
xor edi, edi
cmp byte [esp + 0x17], 0
mov esi, 0xc
je 0x4d4bb0
lea ecx, [ecx]
mov edx, dword [ebx + 4]
lea eax, [esi + edx - 0xc]
mov dword [esp + 0x10], eax
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 + 4]
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 + 4]
mov edi, edx
lea edx, [esi + ecx - 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 + 4]
mov edi, edx
lea edx, [esi + ecx]
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 + 4]
mov edi, edx
lea edx, [esi + ecx + 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 + 4]
mov edi, edx
lea edx, [esi + ecx + 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 0x4d49f0
jmp 0x4d4d64
mov ecx, dword [ebx + 4]
lea edx, [ecx + esi - 0xc]
mov dword [esp + 0x10], edx
lea eax, [edi + 2]
cdq
idiv ebp
lea eax, [edi + 1]
movzx ecx, byte [esp + edx + 0x1c]
cdq
idiv ebp
mov ch, byte [esp + edi + 0x1f]
mov eax, edi
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 + 4]
mov edi, edx
lea edx, [ecx + esi - 8]
mov dword [esp + 0x10], edx
lea eax, [edi + 2]
cdq
idiv ebp
lea eax, [edi + 1]
movzx ecx, byte [esp + edx + 0x1c]
cdq
idiv ebp
mov ch, byte [esp + edi + 0x1f]
mov eax, edi
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 + 4]
mov edi, edx
lea edx, [ecx + esi - 4]
mov dword [esp + 0x10], edx
lea eax, [edi + 2]
cdq
idiv ebp
lea eax, [edi + 1]
movzx ecx, byte [esp + edx + 0x1c]
cdq
idiv ebp
mov ch, byte [esp + edi + 0x1f]
mov eax, edi
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 + 4]
add ecx, esi
mov dword [esp + 0x10], ecx
mov edi, edx
lea eax, [edi + 2]
cdq
idiv ebp
lea eax, [edi + 1]
movzx ecx, byte [esp + edx + 0x1c]
cdq
idiv ebp
mov ch, byte [esp + edi + 0x1f]
mov eax, edi
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 + 4]
mov edi, edx
lea edx, [ecx + esi + 4]
mov dword [esp + 0x10], edx
lea eax, [edi + 2]
cdq
idiv ebp
lea eax, [edi + 1]
movzx ecx, byte [esp + edx + 0x1c]
cdq
idiv ebp
mov ch, byte [esp + edi + 0x1f]
mov eax, edi
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 + 4]
mov edi, edx
lea edx, [ecx + esi + 8]
mov dword [esp + 0x10], edx
lea eax, [edi + 2]
cdq
idiv ebp
lea eax, [edi + 1]
add esi, 0x18
movzx ecx, byte [esp + edx + 0x1c]
cdq
idiv ebp
mov ch, byte [esp + edi + 0x1f]
mov eax, edi
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 0x4d4bb0
xor edi, edi
xor esi, esi
cmp byte [esp + 0x17], 0
mov dword [esp + 0x18], edi
mov dword [esp + 0x10], edi
je 0x4d4df0
jmp 0x4d4d80
lea ecx, [esp + 0x10]
push ecx
lea edx, [esp + 0x1c]
push edx
mov ecx, ebx
call fcn.004d2e30
mov eax, dword [ebx + 4]
mov ecx, dword [esp + 0x18]
mov dword [esi + eax], ecx
mov edx, dword [ebx + 4]
mov eax, dword [esp + 0x10]
mov dword [edx + esi + 4], eax
add esi, 8
cmp esi, 0x48
jl 0x4d4d80
xor esi, esi
mov edi, 0x80
lea ecx, [esp + 0x10]
push ecx
lea edx, [esp + 0x1c]
push edx
mov ecx, ebx
call fcn.004d2e30
mov eax, dword [ebx + 8]
mov ecx, dword [esp + 0x18]
mov dword [esi + eax], ecx
mov edx, dword [ebx + 8]
mov eax, dword [esp + 0x10]
mov dword [edx + esi + 4], eax
add esi, 8
sub edi, 1
jne 0x4d4db5
cmp esi, 0x1000
jl 0x4d4db0
jmp 0x4d4e5b
lea ecx, [esp + 0x10]
push ecx
lea edx, [esp + 0x1c]
push edx
mov ecx, ebx
call fcn.004d31e0
mov eax, dword [ebx + 4]
mov ecx, dword [esp + 0x18]
mov dword [esi + eax], ecx
mov edx, dword [ebx + 4]
mov eax, dword [esp + 0x10]
mov dword [edx + esi + 4], eax
add esi, 8
cmp esi, 0x48
jl 0x4d4df0
xor esi, esi
mov edi, 0x80
lea ecx, [esp + 0x10]
push ecx
lea edx, [esp + 0x1c]
push edx
mov ecx, ebx
call fcn.004d31e0
mov eax, dword [ebx + 8]
mov ecx, dword [esp + 0x18]
mov dword [esi + eax], ecx
mov edx, dword [ebx + 8]
mov eax, dword [esp + 0x10]
mov dword [edx + esi + 4], eax
add esi, 8
sub edi, 1
jne 0x4d4e25
cmp esi, 0x1000
jl 0x4d4e20
mov ecx, dword [esp + 0x5c]
pop edi
pop esi
pop ebp
mov byte [ebx], 0
pop ebx
xor ecx, esp
call fcn.004ec47e
add esp, 0x50
ret