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

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffe0
push ebx
push esi
push edi
mov ebx, ecx
mov dword [ebp - 8], edx
mov dword [ebp - 4], eax
lea edi, [ebp - 0x18]
cmp ebx, 0x1c0
jg 0x417a20
test ebx, ebx
jle 0x417a20
mov eax, ebx
and eax, 0x80000007
jns 0x41780e
dec eax
or eax, 0xfffffff8
inc eax
test eax, eax
jne 0x417a20
test ebx, ebx
jns 0x41781d
add ebx, 7
sar ebx, 3
mov eax, dword [ebp - 8]
mov dword [ebp - 0x10], eax
mov edx, dword [ebp - 4]
add edx, 0x10
mov eax, 0x49c7dc
mov ecx, 0x1000
call fcn.004028a4
mov edx, dword [ebp - 4]
add edx, 0x1010
mov eax, 0x49c794
mov ecx, 0x48
call fcn.004028a4
xor eax, eax
mov dword [ebp - 0xc], eax
mov esi, 0x12
mov eax, dword [ebp - 4]
add eax, 0x1010
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0xc]
add eax, 3
cdq
idiv ebx
mov eax, dword [ebp - 0x10]
xor ecx, ecx
mov cl, byte [eax + edx]
mov eax, dword [ebp - 0xc]
add eax, 2
cdq
idiv ebx
mov eax, dword [ebp - 0x10]
movzx eax, byte [eax + edx]
shl eax, 8
add ecx, eax
mov eax, dword [ebp - 0xc]
inc eax
cdq
idiv ebx
mov eax, dword [ebp - 0x10]
movzx eax, byte [eax + edx]
shl eax, 0x10
add ecx, eax
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp - 0xc]
movzx eax, byte [eax + edx]
shl eax, 0x18
add ecx, eax
mov eax, dword [ebp - 0x1c]
xor dword [eax], ecx
mov eax, dword [ebp - 0xc]
add eax, 4
cdq
idiv ebx
mov dword [ebp - 0xc], edx
add dword [ebp - 0x1c], 4
dec esi
jne 0x417868
mov eax, edi
xor ecx, ecx
mov edx, 8
call fcn.00402c04
mov esi, 9
mov ebx, dword [ebp - 4]
add ebx, 0x1010
mov ecx, edi
mov edx, edi
mov eax, dword [ebp - 4]
call fcn.00417218
xor eax, eax
mov al, byte [edi + 3]
xor edx, edx
mov dl, byte [edi + 2]
shl edx, 8
add eax, edx
xor edx, edx
mov dl, byte [edi + 1]
shl edx, 0x10
add eax, edx
xor edx, edx
mov dl, byte [edi]
shl edx, 0x18
add eax, edx
mov dword [ebx], eax
xor eax, eax
mov al, byte [edi + 7]
xor edx, edx
mov dl, byte [edi + 6]
shl edx, 8
add eax, edx
xor edx, edx
mov dl, byte [edi + 5]
shl edx, 0x10
add eax, edx
xor edx, edx
mov dl, byte [edi + 4]
shl edx, 0x18
add eax, edx
mov dword [ebx + 4], eax
add ebx, 8
dec esi
jne 0x4178e4
mov dword [ebp - 0xc], 4
mov eax, dword [ebp - 4]
add eax, 0x10
mov dword [ebp - 0x20], eax
mov esi, 0x80
mov eax, dword [ebp - 0x20]
mov ebx, eax
mov ecx, edi
mov edx, edi
mov eax, dword [ebp - 4]
call fcn.00417218
xor eax, eax
mov al, byte [edi + 3]
xor edx, edx
mov dl, byte [edi + 2]
shl edx, 8
add eax, edx
xor edx, edx
mov dl, byte [edi + 1]
shl edx, 0x10
add eax, edx
xor edx, edx
mov dl, byte [edi]
shl edx, 0x18
add eax, edx
mov dword [ebx], eax
xor eax, eax
mov al, byte [edi + 7]
xor edx, edx
mov dl, byte [edi + 6]
shl edx, 8
add eax, edx
xor edx, edx
mov dl, byte [edi + 5]
shl edx, 0x10
add eax, edx
xor edx, edx
mov dl, byte [edi + 4]
shl edx, 0x18
add eax, edx
mov dword [ebx + 4], eax
add ebx, 8
dec esi
jne 0x41795a
add dword [ebp - 0x20], 0x400
dec dword [ebp - 0xc]
jne 0x417950
cmp dword [ebp + 8], 0
jne 0x4179fd
mov eax, dword [ebp - 4]
mov ecx, 0xff
mov edx, 8
call fcn.00402c04
mov ecx, dword [ebp - 4]
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 4]
call fcn.00417218
mov edx, dword [ebp - 4]
add edx, 8
mov eax, dword [ebp - 4]
mov ecx, 8
call fcn.004028a4
jmp 0x417a20
mov edx, dword [ebp - 4]
mov eax, dword [ebp + 8]
mov ecx, 8
call fcn.004028a4
mov edx, dword [ebp - 4]
add edx, 8
mov eax, dword [ebp - 4]
mov ecx, 8
call fcn.004028a4
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4