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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5c2278
mov eax, dword fs:[0]
push eax
sub esp, 0x68
mov eax, dword [0x68683c]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 0x10]
mov ebx, dword [ebp + 0xc]
mov dword [ebp - 0x68], eax
mov eax, dword [ebp + 0x14]
push str.initCrypt_blowfish
mov edi, ecx
push eax
lea ecx, [ebp - 0x74]
mov dword [ebp - 0x64], ebx
call fcn.0045a1b0
mov eax, dword [ebx + 0x10]
cdq
push 0x40
and edx, 7
lea ecx, [ebp - 0x50]
lea esi, [edx + eax]
push 0
push ecx
mov dword [ebp - 4], 0
sar esi, 3
call sub.MSVCR100.dll_memset
add ebx, 0x14
add esp, 0xc
mov ecx, ebx
call fcn.004078c0
mov ecx, ebx
cmp eax, 0x40
jbe 0x596848
call fcn.0041b6d0
test eax, eax
je 0x59686d
push 0x40
mov ecx, ebx
call fcn.0041b6d0
push eax
lea edx, [ebp - 0x50]
push edx
jmp 0x596865
call fcn.0041b6d0
test eax, eax
je 0x59686d
mov ecx, ebx
call fcn.004078c0
push eax
mov ecx, ebx
call fcn.0041b6d0
push eax
lea eax, [ebp - 0x50]
push eax
call fcn.00421f50
add esp, 0xc
mov edx, 0xc
sub edx, 0x68536c
mov dword [ebp - 0x54], edx
mov edx, 0x10
sub edx, 0x68536c
mov dword [ebp - 0x5c], edx
mov ecx, 8
sub ecx, 0x68536c
mov edx, 0x14
xor eax, eax
sub edx, 0x68536c
mov dword [ebp - 0x60], ecx
mov dword [ebp - 0x58], edx
jmp 0x5968b3
mov ecx, dword [ebp - 0x60]
mov ebx, dword [eax + 0x685368]
mov edx, dword [edi + 0x88]
mov dword [eax + edx], ebx
mov ebx, dword [eax + 0x68536c]
mov edx, dword [edi + 0x88]
mov dword [eax + edx + 4], ebx
mov ebx, dword [eax + 0x685370]
mov edx, dword [edi + 0x88]
lea ecx, [ecx + eax + 0x68536c]
mov dword [ecx + edx], ebx
mov ecx, dword [ebp - 0x54]
mov ebx, dword [eax + 0x685374]
lea edx, [ecx + eax + 0x68536c]
mov ecx, dword [edi + 0x88]
mov dword [edx + ecx], ebx
mov edx, dword [ebp - 0x5c]
mov ebx, dword [eax + 0x685378]
lea ecx, [edx + eax + 0x68536c]
mov edx, dword [edi + 0x88]
mov dword [ecx + edx], ebx
mov ecx, dword [ebp - 0x58]
mov ebx, dword [eax + 0x68537c]
lea edx, [ecx + eax + 0x68536c]
mov ecx, dword [edi + 0x88]
add eax, 0x18
mov dword [edx + ecx], ebx
cmp eax, 0x48
jl 0x5968b0
mov eax, 8
sub eax, 0x6853b4
mov dword [ebp - 0x58], eax
xor eax, eax
lea edx, [eax + 0xc]
mov dword [ebp - 0x60], edx
mov dword [ebp - 0x54], 0x40
mov edx, dword [eax + 0x6853b0]
mov ecx, dword [edi + 0x8c]
mov dword [eax + ecx], edx
mov edx, dword [eax + 0x6853b4]
mov ecx, dword [edi + 0x8c]
mov dword [eax + ecx + 4], edx
mov ecx, dword [ebp - 0x58]
mov ebx, dword [eax + 0x6853b8]
lea edx, [ecx + eax + 0x6853b4]
mov ecx, dword [edi + 0x8c]
mov dword [edx + ecx], ebx
mov ecx, dword [ebp - 0x60]
mov ebx, dword [eax + 0x6853bc]
mov edx, dword [edi + 0x8c]
mov dword [ecx + edx], ebx
add ecx, 0x10
add eax, 0x10
dec dword [ebp - 0x54]
mov dword [ebp - 0x60], ecx
jne 0x59695b
cmp eax, 0x1000
jl 0x59694e
xor ecx, ecx
lea ebx, [ecx + 0xc]
mov dword [ebp - 0x54], ecx
cmp byte [edi + 0x90], cl
je 0x596c11
mov edi, edi
mov eax, dword [edi + 0x88]
lea edx, [eax + ebx - 0xc]
mov dword [ebp - 0x5c], edx
lea eax, [ecx + 1]
cdq
idiv esi
movzx eax, byte [ebp + edx - 0x50]
movzx edx, byte [ebp + ecx - 0x50]
shl edx, 8
or eax, edx
shl eax, 8
mov dword [ebp - 0x58], eax
lea eax, [ecx + 2]
cdq
idiv esi
mov ecx, dword [ebp - 0x58]
movzx eax, byte [ebp + edx - 0x50]
or ecx, eax
mov eax, dword [ebp - 0x54]
add eax, 3
cdq
idiv esi
mov eax, dword [ebp - 0x5c]
shl ecx, 8
movzx edx, byte [ebp + edx - 0x50]
or ecx, edx
xor dword [eax], ecx
mov eax, dword [ebp - 0x54]
add eax, 4
cdq
idiv esi
mov eax, dword [edi + 0x88]
mov ecx, edx
lea edx, [eax + ebx - 8]
mov dword [ebp - 0x5c], edx
lea eax, [ecx + 1]
cdq
idiv esi
mov dword [ebp - 0x54], ecx
movzx eax, byte [ebp + edx - 0x50]
movzx edx, byte [ebp + ecx - 0x50]
shl edx, 8
or eax, edx
shl eax, 8
mov dword [ebp - 0x58], eax
lea eax, [ecx + 2]
cdq
idiv esi
mov ecx, dword [ebp - 0x58]
movzx eax, byte [ebp + edx - 0x50]
or ecx, eax
mov eax, dword [ebp - 0x54]
add eax, 3
cdq
idiv esi
mov eax, dword [ebp - 0x5c]
shl ecx, 8
movzx edx, byte [ebp + edx - 0x50]
or ecx, edx
xor dword [eax], ecx
mov eax, dword [ebp - 0x54]
add eax, 4
cdq
idiv esi
mov eax, dword [edi + 0x88]
mov ecx, edx
lea edx, [ebx + eax - 4]
mov dword [ebp - 0x5c], edx
lea eax, [ecx + 1]
cdq
idiv esi
mov dword [ebp - 0x54], ecx
movzx eax, byte [ebp + edx - 0x50]
movzx edx, byte [ebp + ecx - 0x50]
shl edx, 8
or eax, edx
shl eax, 8
mov dword [ebp - 0x58], eax
lea eax, [ecx + 2]
cdq
idiv esi
movzx eax, byte [ebp + edx - 0x50]
mov ecx, dword [ebp - 0x58]
or ecx, eax
mov eax, dword [ebp - 0x54]
add eax, 3
cdq
idiv esi
mov eax, dword [ebp - 0x5c]
shl ecx, 8
movzx edx, byte [ebp + edx - 0x50]
or ecx, edx
xor dword [eax], ecx
mov eax, dword [ebp - 0x54]
add eax, 4
cdq
idiv esi
mov eax, dword [edi + 0x88]
mov ecx, edx
lea edx, [ebx + eax]
mov dword [ebp - 0x5c], edx
lea eax, [ecx + 1]
cdq
idiv esi
mov dword [ebp - 0x54], ecx
movzx eax, byte [ebp + edx - 0x50]
movzx edx, byte [ebp + ecx - 0x50]
shl edx, 8
or eax, edx
shl eax, 8
mov dword [ebp - 0x58], eax
lea eax, [ecx + 2]
cdq
idiv esi
mov ecx, dword [ebp - 0x58]
movzx eax, byte [ebp + edx - 0x50]
or ecx, eax
mov eax, dword [ebp - 0x54]
add eax, 3
cdq
idiv esi
mov eax, dword [ebp - 0x5c]
shl ecx, 8
movzx edx, byte [ebp + edx - 0x50]
or ecx, edx
xor dword [eax], ecx
mov eax, dword [ebp - 0x54]
add eax, 4
cdq
idiv esi
mov eax, dword [edi + 0x88]
mov ecx, edx
lea edx, [ebx + eax + 4]
mov dword [ebp - 0x5c], edx
lea eax, [ecx + 1]
cdq
idiv esi
mov dword [ebp - 0x54], ecx
movzx eax, byte [ebp + edx - 0x50]
movzx edx, byte [ebp + ecx - 0x50]
shl edx, 8
or eax, edx
shl eax, 8
mov dword [ebp - 0x58], eax
lea eax, [ecx + 2]
cdq
idiv esi
mov ecx, dword [ebp - 0x58]
movzx eax, byte [ebp + edx - 0x50]
or ecx, eax
mov eax, dword [ebp - 0x54]
add eax, 3
cdq
idiv esi
mov eax, dword [ebp - 0x5c]
shl ecx, 8
movzx edx, byte [ebp + edx - 0x50]
or ecx, edx
xor dword [eax], ecx
mov eax, dword [ebp - 0x54]
add eax, 4
cdq
idiv esi
mov dword [ebp - 0x54], edx
lea eax, [edx + 1]
cdq
idiv esi
mov eax, dword [ebp - 0x54]
add eax, 2
movzx ecx, byte [ebp + edx - 0x50]
movzx edx, byte [ebp + eax - 0x52]
shl edx, 8
or ecx, edx
cdq
idiv esi
shl ecx, 8
movzx eax, byte [ebp + edx - 0x50]
or ecx, eax
mov eax, dword [ebp - 0x54]
add eax, 3
cdq
idiv esi
shl ecx, 8
and ecx, 0xffffff00
movzx eax, byte [ebp + edx - 0x50]
or eax, ecx
mov ecx, dword [edi + 0x88]
xor dword [ebx + ecx + 8], eax
mov eax, dword [ebp - 0x54]
lea ecx, [ebx + ecx + 8]
add eax, 4
cdq
idiv esi
add ebx, 0x18
mov ecx, edx
mov dword [ebp - 0x54], ecx
cmp ebx, 0x54
jl 0x5969d0
jmp 0x596e38
mov edx, dword [edi + 0x88]
lea eax, [edx + ebx - 0xc]
mov dword [ebp - 0x5c], eax
lea eax, [ecx + 2]
cdq
idiv esi
movzx eax, byte [ebp + edx - 0x50]
movzx edx, byte [ebp + ecx - 0x4d]
shl edx, 8
or eax, edx
shl eax, 8
mov dword [ebp - 0x58], eax
lea eax, [ecx + 1]
cdq
idiv esi
mov ecx, dword [ebp - 0x58]
movzx eax, byte [ebp + edx - 0x50]
or ecx, eax
mov eax, dword [ebp - 0x54]
cdq
idiv esi
mov eax, dword [ebp - 0x5c]
shl ecx, 8
movzx edx, byte [ebp + edx - 0x50]
or ecx, edx
xor dword [eax], ecx
mov eax, dword [ebp - 0x54]
add eax, 4
cdq
idiv esi
mov eax, dword [edi + 0x88]
mov ecx, edx
lea edx, [eax + ebx - 8]
mov dword [ebp - 0x5c], edx
lea eax, [ecx + 2]
cdq
idiv esi
mov dword [ebp - 0x54], ecx
movzx eax, byte [ebp + edx - 0x50]
movzx edx, byte [ebp + ecx - 0x4d]
shl edx, 8
or eax, edx
shl eax, 8
mov dword [ebp - 0x58], eax
lea eax, [ecx + 1]
cdq
idiv esi
mov ecx, dword [ebp - 0x58]
movzx eax, byte [ebp + edx - 0x50]
or ecx, eax
mov eax, dword [ebp - 0x54]
cdq
idiv esi
mov eax, dword [ebp - 0x5c]
shl ecx, 8
movzx edx, byte [ebp + edx - 0x50]
or ecx, edx
xor dword [eax], ecx
mov eax, dword [ebp - 0x54]
add eax, 4
cdq
idiv esi
mov eax, dword [edi + 0x88]
mov ecx, edx
lea edx, [eax + ebx - 4]
mov dword [ebp - 0x5c], edx
lea eax, [ecx + 2]
cdq
idiv esi
mov dword [ebp - 0x54], ecx
movzx eax, byte [ebp + edx - 0x50]
movzx edx, byte [ebp + ecx - 0x4d]
shl edx, 8
or eax, edx
shl eax, 8
mov dword [ebp - 0x58], eax
lea eax, [ecx + 1]
cdq
idiv esi
mov ecx, dword [ebp - 0x58]
movzx eax, byte [ebp + edx - 0x50]
or ecx, eax
mov eax, dword [ebp - 0x54]
cdq
idiv esi
mov eax, dword [ebp - 0x5c]
shl ecx, 8
movzx edx, byte [ebp + edx - 0x50]
or ecx, edx
xor dword [eax], ecx
mov eax, dword [ebp - 0x54]
add eax, 4
cdq
idiv esi
mov eax, dword [edi + 0x88]
add eax, ebx
mov dword [ebp - 0x5c], eax
mov ecx, edx
lea eax, [ecx + 2]
cdq
idiv esi
mov dword [ebp - 0x54], ecx
movzx eax, byte [ebp + edx - 0x50]
movzx edx, byte [ebp + ecx - 0x4d]
shl edx, 8
or eax, edx
shl eax, 8
mov dword [ebp - 0x58], eax
lea eax, [ecx + 1]
cdq
idiv esi
mov ecx, dword [ebp - 0x58]
movzx eax, byte [ebp + edx - 0x50]
or ecx, eax
mov eax, dword [ebp - 0x54]
cdq
idiv esi
mov eax, dword [ebp - 0x5c]
shl ecx, 8
movzx edx, byte [ebp + edx - 0x50]
or ecx, edx
xor dword [eax], ecx
mov eax, dword [ebp - 0x54]
add eax, 4
cdq
idiv esi
mov eax, dword [edi + 0x88]
mov ecx, edx
lea edx, [eax + ebx + 4]
mov dword [ebp - 0x5c], edx
lea eax, [ecx + 2]
cdq
idiv esi
mov dword [ebp - 0x54], ecx
movzx eax, byte [ebp + edx - 0x50]
movzx edx, byte [ebp + ecx - 0x4d]
shl edx, 8
or eax, edx
shl eax, 8
mov dword [ebp - 0x58], eax
lea eax, [ecx + 1]
cdq
idiv esi
mov ecx, dword [ebp - 0x58]
movzx eax, byte [ebp + edx - 0x50]
or ecx, eax
mov eax, dword [ebp - 0x54]
cdq
idiv esi
mov eax, dword [ebp - 0x5c]
shl ecx, 8
movzx edx, byte [ebp + edx - 0x50]
or ecx, edx
xor dword [eax], ecx
mov eax, dword [ebp - 0x54]
add eax, 4
cdq
idiv esi
lea eax, [edx + 2]
mov dword [ebp - 0x54], edx
cdq
idiv esi
movzx ecx, byte [ebp + edx - 0x50]
mov eax, dword [ebp - 0x54]
movzx edx, byte [ebp + eax - 0x4d]
inc eax
shl edx, 8
or ecx, edx
cdq
idiv esi
shl ecx, 8
movzx eax, byte [ebp + edx - 0x50]
or ecx, eax
mov eax, dword [ebp - 0x54]
cdq
idiv esi
shl ecx, 8
and ecx, 0xffffff00
movzx eax, byte [ebp + edx - 0x50]
or eax, ecx
mov ecx, dword [edi + 0x88]
xor dword [ecx + ebx + 8], eax
mov eax, dword [ebp - 0x54]
lea ecx, [ecx + ebx + 8]
add eax, 4
cdq
idiv esi
add ebx, 0x18
mov ecx, edx
mov dword [ebp - 0x54], ecx
cmp ebx, 0x54
jl 0x596c11
xor ebx, ebx
xor esi, esi
mov dword [ebp - 0x54], ebx
mov dword [ebp - 0x60], ebx
cmp byte [edi + 0x90], bl
je 0x596ec2
mov edi, edi
lea edx, [ebp - 0x60]
push edx
lea eax, [ebp - 0x54]
push eax
mov ecx, edi
call fcn.00594090
mov ecx, dword [edi + 0x88]
mov edx, dword [ebp - 0x54]
mov dword [esi + ecx], edx
mov eax, dword [edi + 0x88]
mov ecx, dword [ebp - 0x60]
mov dword [esi + eax + 4], ecx
add esi, 8
cmp esi, 0x48
jl 0x596e50
xor esi, esi
mov ebx, 0x80
lea edx, [ebp - 0x60]
push edx
lea eax, [ebp - 0x54]
push eax
mov ecx, edi
call fcn.00594090
mov ecx, dword [edi + 0x8c]
mov edx, dword [ebp - 0x54]
mov dword [esi + ecx], edx
mov eax, dword [edi + 0x8c]
mov ecx, dword [ebp - 0x60]
mov dword [esi + eax + 4], ecx
add esi, 8
dec ebx
jne 0x596e87
cmp esi, 0x1000
jl 0x596e82
jmp 0x596f36
lea edx, [ebp - 0x60]
push edx
lea eax, [ebp - 0x54]
push eax
mov ecx, edi
call fcn.005944e0
mov ecx, dword [edi + 0x88]
mov edx, dword [ebp - 0x54]
mov dword [esi + ecx], edx
mov eax, dword [edi + 0x88]
mov ecx, dword [ebp - 0x60]
mov dword [esi + eax + 4], ecx
add esi, 8
cmp esi, 0x48
jl 0x596ec2
xor esi, esi
mov ebx, 0x80
lea esp, [esp]
lea edx, [ebp - 0x60]
push edx
lea eax, [ebp - 0x54]
push eax
mov ecx, edi
call fcn.005944e0
mov ecx, dword [edi + 0x8c]
mov edx, dword [ebp - 0x54]
mov dword [esi + ecx], edx
mov eax, dword [edi + 0x8c]
mov ecx, dword [ebp - 0x60]
mov dword [esi + eax + 4], ecx
add esi, 8
dec ebx
jne 0x596f00
cmp esi, 0x1000
jl 0x596ef4
mov ebx, dword [ebp - 0x68]
test ebx, ebx
je 0x596f72
mov eax, dword [ebp - 0x64]
mov ecx, dword [eax + 8]
cmp ecx, 3
je 0x596f4d
cmp ecx, 4
jne 0x596f72
mov edx, dword [edi + 0x80]
lea esi, [eax + 0x34]
push edx
mov ecx, esi
call fcn.004078c0
push eax
mov ecx, esi
call fcn.0041b6d0
push eax
lea ecx, [ebx + 0x484]
call fcn.005351f0
lea ecx, [ebp - 0x74]
mov dword [ebp - 4], 0xffffffff
call fcn.0045a240
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.005a6cf8
mov esp, ebp
pop ebp
ret 0x10