Function at 0x581b30
Capabilities:
Encrypt data using blowfish

Disassembly:
push ebp
mov ebp, esp
push ebx
push esi
sub esp, 0x20
push ecx
push edi
lea edi, [esp + 8]
mov eax, 0xcccccccc
mov ecx, 8
rep stosd dword es:[edi], eax
pop edi
pop ecx
cmp dword [ebp + 0xc], 0
jne 0x581b75
push str.Cannot_initialize_blowfish_with_an_empty_string
push str.initStr
push 0x142
push str.BlowFish.cpp
push 4
push 0x83
call fcn.004a4f70
add esp, 0x18
cmp dword [ebp + 0xc], 0
jne 0x581b82
lea esp, [ebp - 8]
pop esi
pop ebx
pop ebp
ret
push 0x1000
mov eax, dword [ebp + 8]
add eax, 0x18
push eax
call fcn.0040e010
pop ecx
pop ecx
push 0x48
mov eax, dword [ebp + 8]
add eax, 0x1018
push eax
call fcn.0040e010
pop ecx
pop ecx
mov ecx, dword [ebp + 0xc]
call fcn.00589e00
mov dword [ebp - 0x14], eax
push dword [ebp - 0x14]
call fcn.0040d340
pop ecx
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x18], 0
jmp 0x581c39
mov dword [ebp - 0x24], 0
mov dword [ebp - 0x20], 0
jmp 0x581c13
shl dword [ebp - 0x24], 8
movsx ebx, word [ebp - 0x1c]
mov eax, dword [ebp - 0x14]
movsx edx, byte [eax + ebx]
and edx, 0xff
or dword [ebp - 0x24], edx
mov edx, dword [ebp - 0x1c]
add edx, 1
mov dword [ebp - 0x1c], edx
mov ax, word [ebp - 0x28]
cmp word [ebp - 0x1c], ax
jl 0x581c10
mov dword [ebp - 0x1c], 0
inc dword [ebp - 0x20]
cmp word [ebp - 0x20], 4
jl 0x581bde
movsx edx, word [ebp - 0x18]
mov esi, dword [ebp - 0x24]
xor esi, dword [edx*4 + 0x636b80]
movsx ebx, word [ebp - 0x18]
mov eax, dword [ebp + 8]
mov dword [eax + ebx*4 + 0x1018], esi
inc dword [ebp - 0x18]
cmp word [ebp - 0x18], 0x12
jl 0x581bce
mov dword [ebp - 0x18], 0
jmp 0x581c88
mov dword [ebp - 0x1c], 0
jmp 0x581c7d
movsx esi, word [ebp - 0x18]
shl esi, 8
movsx edx, word [ebp - 0x1c]
add esi, edx
movsx ebx, word [ebp - 0x18]
shl ebx, 8
movsx edx, word [ebp - 0x1c]
add ebx, edx
mov esi, dword [esi*4 + 0x636bc8]
mov eax, dword [ebp + 8]
mov dword [eax + ebx*4 + 0x18], esi
inc dword [ebp - 0x1c]
cmp word [ebp - 0x1c], 0x100
jl 0x581c52
inc dword [ebp - 0x18]
cmp word [ebp - 0x18], 4
jl 0x581c49
mov dword [ebp - 0xc], 0
mov dword [ebp - 0x10], 0
mov dword [ebp - 0x18], 0
jmp 0x581ce2
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0xc]
push eax
push dword [ebp + 8]
call sym.X86RunHoudini.exe_BlowfishEncipher
add esp, 0xc
movsx esi, word [ebp - 0x18]
mov ebx, dword [ebp - 0xc]
mov eax, dword [ebp + 8]
mov dword [eax + esi*4 + 0x1018], ebx
movsx ebx, word [ebp - 0x18]
add ebx, 1
mov esi, dword [ebp - 0x10]
mov eax, dword [ebp + 8]
mov dword [eax + ebx*4 + 0x1018], esi
add dword [ebp - 0x18], 2
cmp word [ebp - 0x18], 0x12
jl 0x581ca6
mov dword [ebp - 0x18], 0
jmp 0x581d4e
mov dword [ebp - 0x1c], 0
jmp 0x581d43
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0xc]
push eax
push dword [ebp + 8]
call sym.X86RunHoudini.exe_BlowfishEncipher
add esp, 0xc
movsx ebx, word [ebp - 0x18]
shl ebx, 8
movsx edx, word [ebp - 0x1c]
add ebx, edx
mov esi, dword [ebp - 0xc]
mov eax, dword [ebp + 8]
mov dword [eax + ebx*4 + 0x18], esi
movsx esi, word [ebp - 0x18]
shl esi, 8
movsx edx, word [ebp - 0x1c]
add edx, 1
add esi, edx
mov ebx, dword [ebp - 0x10]
mov eax, dword [ebp + 8]
mov dword [eax + esi*4 + 0x18], ebx
add dword [ebp - 0x1c], 2
cmp word [ebp - 0x1c], 0x100
jl 0x581cfb
inc dword [ebp - 0x18]
cmp word [ebp - 0x18], 4
jl 0x581cf2
lea esp, [ebp - 8]
pop esi
pop ebx
pop ebp
ret