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

Disassembly:
sub esp, 0x54
mov eax, dword [0x5e4ce0]
xor eax, esp
mov dword [esp + 0x50], eax
push ebx
push ebp
mov ebx, ecx
mov eax, dword [ebx + 0x34]
cdq
push esi
push edi
and edx, 7
add eax, edx
mov ebp, eax
push 0x40
lea eax, [esp + 0x24]
push 0
push eax
sar ebp, 3
call fcn.004db150
lea esi, [ebx + 0x18]
add esp, 0xc
mov ecx, esi
call fcn.004c06c0
cmp eax, 0x40
mov ecx, esi
jbe 0x4b10e3
call fcn.004c4070
test eax, eax
je 0x4b1109
mov ecx, esi
call fcn.004c4070
mov ecx, 0x10
mov esi, eax
lea edi, [esp + 0x20]
rep movsd dword es:[edi], dword [esi]
jmp 0x4b1109
call fcn.004c4070
test eax, eax
je 0x4b1109
mov ecx, esi
call fcn.004c06c0
push eax
mov ecx, esi
call fcn.004c4070
push eax
lea ecx, [esp + 0x28]
push ecx
call fcn.004db700
add esp, 0xc
mov eax, 0xc
sub eax, 0x5e24fc
mov dword [esp + 0x18], eax
mov eax, 0x10
sub eax, 0x5e24fc
mov dword [esp + 0x1c], eax
mov edx, 8
sub edx, 0x5e24fc
mov eax, 0x14
xor ecx, ecx
sub eax, 0x5e24fc
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], eax
jmp 0x4b1154
mov edx, dword [esp + 0x14]
mov edi, dword [ecx + 0x5e24f8]
mov esi, dword [ebx + 0x2c]
mov dword [ecx + esi], edi
mov edi, dword [ecx + 0x5e24fc]
mov esi, dword [ebx + 0x2c]
lea eax, [ecx + 0x5e24fc]
mov dword [ecx + esi + 4], edi
mov esi, dword [ebx + 0x2c]
mov edi, dword [eax + 4]
add esi, eax
mov dword [esi + edx], edi
mov edx, dword [ebx + 0x2c]
mov esi, dword [eax + 8]
mov edi, dword [esp + 0x18]
add edx, eax
mov dword [edx + edi], esi
mov edx, dword [ebx + 0x2c]
mov esi, dword [eax + 0xc]
mov edi, dword [esp + 0x1c]
add edx, eax
mov dword [edx + edi], esi
mov edx, dword [ebx + 0x2c]
mov esi, dword [esp + 0x10]
add edx, eax
mov eax, dword [eax + 0x10]
add ecx, 0x18
cmp ecx, 0x48
mov dword [edx + esi], eax
jl 0x4b1150
mov eax, 8
sub eax, 0x5e2544
mov dword [esp + 0x10], eax
xor eax, eax
jmp 0x4b11d0
lea ecx, [eax + 0xc]
mov edx, 0x40
jmp 0x4b11e0
mov edi, dword [eax + 0x5e2540]
mov esi, dword [ebx + 0x30]
mov dword [eax + esi], edi
mov edi, dword [eax + 0x5e2544]
mov esi, dword [ebx + 0x30]
mov dword [esi + eax + 4], edi
mov esi, dword [ebx + 0x30]
add esi, dword [esp + 0x10]
mov edi, dword [eax + 0x5e2548]
mov dword [esi + eax + 0x5e2544], edi
mov edi, dword [eax + 0x5e254c]
mov esi, dword [ebx + 0x30]
mov dword [ecx + esi], edi
add eax, 0x10
add ecx, 0x10
sub edx, 1
jne 0x4b11e0
cmp eax, 0x1000
jl 0x4b11d0
xor edi, edi
mov esi, 0xc
mov ecx, dword [ebx + 0x2c]
lea edx, [ecx + esi - 0xc]
mov dword [esp + 0x10], edx
lea eax, [edi + 1]
cdq
idiv ebp
lea eax, [edi + 2]
movzx ecx, byte [esp + edx + 0x20]
cdq
idiv ebp
mov ch, byte [esp + edi + 0x20]
lea eax, [edi + 3]
shl ecx, 8
movzx edx, byte [esp + edx + 0x20]
or ecx, edx
cdq
idiv ebp
shl ecx, 8
movzx eax, byte [esp + edx + 0x20]
or ecx, eax
mov eax, dword [esp + 0x10]
xor dword [eax], ecx
lea eax, [edi + 4]
cdq
idiv ebp
mov ecx, dword [ebx + 0x2c]
mov edi, edx
lea edx, [ecx + esi - 8]
mov dword [esp + 0x10], edx
lea eax, [edi + 1]
cdq
idiv ebp
lea eax, [edi + 2]
movzx ecx, byte [esp + edx + 0x20]
cdq
idiv ebp
mov ch, byte [esp + edi + 0x20]
lea eax, [edi + 3]
shl ecx, 8
movzx edx, byte [esp + edx + 0x20]
or ecx, edx
cdq
idiv ebp
shl ecx, 8
movzx eax, byte [esp + edx + 0x20]
or ecx, eax
mov eax, dword [esp + 0x10]
xor dword [eax], ecx
lea eax, [edi + 4]
cdq
idiv ebp
mov ecx, dword [ebx + 0x2c]
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 + 0x20]
cdq
idiv ebp
mov ch, byte [esp + edi + 0x20]
lea eax, [edi + 3]
shl ecx, 8
movzx edx, byte [esp + edx + 0x20]
or ecx, edx
cdq
idiv ebp
shl ecx, 8
movzx eax, byte [esp + edx + 0x20]
or ecx, eax
mov eax, dword [esp + 0x10]
xor dword [eax], ecx
lea eax, [edi + 4]
cdq
idiv ebp
mov ecx, dword [ebx + 0x2c]
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 + 0x20]
cdq
idiv ebp
mov ch, byte [esp + edi + 0x20]
lea eax, [edi + 3]
shl ecx, 8
movzx edx, byte [esp + edx + 0x20]
or ecx, edx
cdq
idiv ebp
shl ecx, 8
movzx eax, byte [esp + edx + 0x20]
or ecx, eax
mov eax, dword [esp + 0x10]
xor dword [eax], ecx
lea eax, [edi + 4]
cdq
idiv ebp
mov ecx, dword [ebx + 0x2c]
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 + 0x20]
cdq
idiv ebp
mov ch, byte [esp + edi + 0x20]
lea eax, [edi + 3]
shl ecx, 8
movzx edx, byte [esp + edx + 0x20]
or ecx, edx
cdq
idiv ebp
shl ecx, 8
movzx eax, byte [esp + edx + 0x20]
or ecx, eax
mov eax, dword [esp + 0x10]
xor dword [eax], ecx
lea eax, [edi + 4]
cdq
idiv ebp
mov ecx, dword [ebx + 0x2c]
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 + 0x20]
cdq
idiv ebp
mov ch, byte [esp + edi + 0x20]
lea eax, [edi + 3]
shl ecx, 8
movzx edx, byte [esp + edx + 0x20]
or ecx, edx
cdq
idiv ebp
shl ecx, 8
movzx eax, byte [esp + edx + 0x20]
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 0x4b1232
xor edi, edi
mov dword [esp + 0x18], edi
mov dword [esp + 0x14], edi
xor esi, esi
jmp 0x4b1400
lea ecx, [esp + 0x14]
push ecx
lea edx, [esp + 0x1c]
push edx
mov ecx, ebx
call fcn.004b0910
mov eax, dword [ebx + 0x2c]
mov ecx, dword [esp + 0x18]
mov dword [esi + eax], ecx
mov edx, dword [ebx + 0x2c]
mov eax, dword [esp + 0x14]
mov dword [esi + edx + 4], eax
add esi, 8
cmp esi, 0x48
jl 0x4b1400
xor esi, esi
mov edi, 0x80
lea ecx, [esp + 0x14]
push ecx
lea edx, [esp + 0x1c]
push edx
mov ecx, ebx
call fcn.004b0910
mov eax, dword [ebx + 0x30]
mov ecx, dword [esp + 0x18]
mov dword [esi + eax], ecx
mov edx, dword [ebx + 0x30]
mov eax, dword [esp + 0x14]
mov dword [esi + edx + 4], eax
add esi, 8
sub edi, 1
jne 0x4b1435
cmp esi, 0x1000
jl 0x4b1430
mov ecx, dword [esp + 0x60]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.004d99c4
add esp, 0x54
ret