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

Disassembly:
sub esp, 8
push ebx
push esi
mov edx, 0x5258d0
push edi
mov dword [esp + 0x10], ecx
mov eax, ecx
sub edx, ecx
mov esi, 0x12
mov edi, dword [edx + eax]
mov dword [eax], edi
add eax, 4
sub esi, 1
jne 0x402ed8
mov eax, 0x525918
lea edx, [ecx + 0x48]
lea edi, [esi + 4]
mov esi, 0x100
mov ebx, dword [eax]
mov dword [edx], ebx
add eax, 4
add edx, 4
sub esi, 1
jne 0x402ef5
sub edi, 1
jne 0x402ef0
mov esi, dword [esp + 0x1c]
mov edi, dword [esp + 0x18]
push ebp
xor ebp, ebp
lea ebx, [ecx + 8]
mov dword [esp + 0x10], 3
nop
xor edx, edx
lea eax, [ebp + 1]
div esi
lea eax, [ebp + 2]
movzx ecx, byte [edx + edi]
movzx edx, byte [edi + ebp]
shl edx, 8
or ecx, edx
xor edx, edx
div esi
shl ecx, 8
movzx eax, byte [edx + edi]
or ecx, eax
xor edx, edx
lea eax, [ebp + 3]
div esi
lea eax, [ebp + 4]
shl ecx, 8
movzx edx, byte [edx + edi]
or ecx, edx
xor edx, edx
div esi
xor dword [ebx - 8], ecx
mov ecx, edx
xor edx, edx
lea eax, [ecx + 1]
div esi
movzx eax, byte [ecx + edi]
shl eax, 8
movzx ebp, byte [edx + edi]
or ebp, eax
xor edx, edx
lea eax, [ecx + 2]
div esi
shl ebp, 8
lea eax, [ecx + 3]
movzx edx, byte [edx + edi]
or ebp, edx
xor edx, edx
div esi
shl ebp, 8
movzx eax, byte [edx + edi]
or ebp, eax
xor edx, edx
lea eax, [ecx + 4]
div esi
xor dword [ebx - 4], ebp
mov ecx, edx
xor edx, edx
lea eax, [ecx + 1]
div esi
lea eax, [ecx + 2]
movzx ebp, byte [edx + edi]
movzx edx, byte [ecx + edi]
shl edx, 8
or ebp, edx
xor edx, edx
div esi
shl ebp, 8
movzx eax, byte [edx + edi]
or ebp, eax
xor edx, edx
lea eax, [ecx + 3]
div esi
shl ebp, 8
lea eax, [ecx + 4]
movzx edx, byte [edx + edi]
or ebp, edx
xor edx, edx
div esi
xor dword [ebx], ebp
mov ecx, edx
xor edx, edx
lea eax, [ecx + 1]
div esi
movzx eax, byte [ecx + edi]
shl eax, 8
movzx ebp, byte [edx + edi]
or ebp, eax
shl ebp, 8
lea eax, [ecx + 2]
xor edx, edx
div esi
lea eax, [ecx + 3]
add ebx, 0x18
movzx edx, byte [edx + edi]
or ebp, edx
xor edx, edx
div esi
shl ebp, 8
movzx eax, byte [edx + edi]
or ebp, eax
xor edx, edx
lea eax, [ecx + 4]
div esi
xor dword [ebx - 0x14], ebp
mov ecx, edx
xor edx, edx
lea eax, [ecx + 1]
div esi
lea eax, [ecx + 2]
movzx ebp, byte [edx + edi]
movzx edx, byte [ecx + edi]
shl edx, 8
or ebp, edx
xor edx, edx
div esi
shl ebp, 8
movzx eax, byte [edx + edi]
or ebp, eax
xor edx, edx
lea eax, [ecx + 3]
div esi
shl ebp, 8
lea eax, [ecx + 4]
movzx edx, byte [edx + edi]
or ebp, edx
xor edx, edx
div esi
xor dword [ebx - 0x10], ebp
mov ecx, edx
xor edx, edx
lea eax, [ecx + 1]
div esi
movzx eax, byte [ecx + edi]
shl eax, 8
movzx ebp, byte [edx + edi]
or ebp, eax
xor edx, edx
lea eax, [ecx + 2]
div esi
shl ebp, 8
lea eax, [ecx + 3]
movzx edx, byte [edx + edi]
or ebp, edx
xor edx, edx
div esi
shl ebp, 8
movzx eax, byte [edx + edi]
or ebp, eax
xor edx, edx
lea eax, [ecx + 4]
div esi
xor dword [ebx - 0xc], ebp
sub dword [esp + 0x10], 1
mov ebp, edx
jne 0x402f20
mov ecx, dword [esp + 0x14]
xor esi, esi
mov dword [esp + 0x20], esi
mov dword [esp + 0x1c], esi
pop ebp
lea esp, [esp]
lea edx, [esp + 0x18]
push edx
lea eax, [esp + 0x20]
push eax
call fcn.00402660
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
mov dword [ecx + esi*4], edx
mov dword [ecx + esi*4 + 4], eax
add esi, 2
cmp esi, 0x12
jb 0x4030c0
lea esi, [ecx + 0x4c]
mov ebx, 4
mov edi, edi
mov edi, 0x80
lea edx, [esp + 0x18]
push edx
lea eax, [esp + 0x20]
push eax
call fcn.00402660
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
mov dword [esi - 4], edx
mov dword [esi], eax
add esi, 8
sub edi, 1
jne 0x4030f5
sub ebx, 1
jne 0x4030f0
pop edi
pop esi
pop ebx
add esp, 8
ret 8