Function at 0x5ef888
Capabilities:
Encrypt data using blowfish

Disassembly:
test dword [0x7eeab0], 0xfffffe00
jne 0x5ef8c0
test dword [0x7eeab0], 0xffffff80
jne 0x5efc3c
test dword [0x7eeab0], 0xffffffff
jne 0x5effd4
call fcn.006a7fbc
jmp fcn.005ef888
push ebp
mov ebp, esp
and esp, 0xfffffff0
push edi
push esi
push ebx
push edx
push eax
mov eax, 0x1c
call fcn.006977b0
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x1c]
mov ebx, ecx
xor ecx, ecx
lea esi, [ebx + 0x400]
mov dword [esp], esi
lea esi, [ebx + 0x800]
mov dword [esp + 8], esi
lea esi, [ebx + 0xc48]
mov dword [esp + 4], esi
mov dword [esp + 0x10], ebx
mov dword [esp + 0xc], edx
mov eax, dword [esp]
jmp 0x5ef90e
mov eax, dword [esp]
mov esi, eax
mov ebx, esi
and ebx, 0xf
je 0x5ef940
test bl, 3
jne 0x5efc33
neg ebx
add ebx, 0x10
shr ebx, 2
xor eax, eax
mov edx, ecx
shl edx, 0xa
mov edi, dword [edx + eax*4 + 0x6d9e40]
mov dword [esi + eax*4], edi
inc eax
cmp eax, ebx
jb 0x5ef92f
jmp 0x5ef945
mov edx, ecx
shl edx, 0xa
mov eax, ebx
neg eax
and eax, 3
neg eax
add eax, 0x100
lea edi, [edx + ebx*4 + 0x6d9e40]
test edi, 0xf
je 0x5ef979
movdqu xmm0, xmmword [edx + ebx*4 + 0x6d9e40]
movdqa xmmword [esi + ebx*4], xmm0
add ebx, 4
cmp ebx, eax
jb 0x5ef962
jmp 0x5ef98e
movdqa xmm0, xmmword [edx + ebx*4 + 0x6d9e40]
movdqa xmmword [esi + ebx*4], xmm0
add ebx, 4
cmp ebx, eax
jb 0x5ef979
cmp eax, 0x100
jae 0x5ef9ac
mov edx, ecx
shl edx, 0xa
mov ebx, dword [edx + eax*4 + 0x6d9e40]
mov dword [esi + eax*4], ebx
inc eax
cmp eax, 0x100
jb 0x5ef99a
inc ecx
cmp ecx, 4
jae 0x5ef9e5
test ecx, ecx
je 0x5ef90b
cmp ecx, 1
je 0x5ef9dc
cmp ecx, 2
jne 0x5ef9cd
mov esi, dword [esp + 4]
jmp 0x5ef910
cmp ecx, 3
mov eax, dword [esp + 8]
cmove esi, eax
jmp 0x5ef910
mov esi, dword [esp + 0x10]
jmp 0x5ef910
mov eax, dword [ebp + 8]
mov ebx, dword [esp + 0x10]
mov edx, dword [esp + 0xc]
xor edi, edi
xor esi, esi
xor ecx, ecx
mov dword [esp + 0x10], ebx
shl edi, 8
movzx ebx, byte [esi + edx]
or edi, ebx
inc esi
mov eax, dword [ebp + 8]
cmp esi, eax
jl 0x5efa10
mov esi, 0
shl edi, 8
movzx ebx, byte [esi + edx]
or edi, ebx
inc esi
cmp esi, eax
jl 0x5efa23
mov esi, 0
shl edi, 8
movzx ebx, byte [esi + edx]
or edi, ebx
inc esi
cmp esi, eax
jl 0x5efa36
mov esi, 0
shl edi, 8
movzx ebx, byte [esi + edx]
or edi, ebx
inc esi
cmp esi, eax
jl 0x5efa49
mov esi, 0
mov eax, dword [ecx*4 + 0x6daf40]
xor eax, edi
mov ebx, dword [esp + 0x10]
mov dword [ebx + ecx*4 + 0xc00], eax
inc ecx
cmp ecx, 0x12
jb 0x5ef9fa
xor eax, eax
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], eax
lea esi, [esp + 0x18]
push esi
mov ecx, ebx
lea edx, [esp + 0x18]
call fcn.005f0144
mov eax, dword [esp + 0x14]
mov dword [ebx + 0xc00], eax
mov esi, dword [esp + 0x18]
mov dword [ebx + 0xc04], esi
lea edi, [esp + 0x18]
push edi
mov ecx, ebx
lea edx, [esp + 0x18]
call fcn.005f0144
mov eax, dword [esp + 0x14]
mov dword [ebx + 0xc08], eax
mov esi, dword [esp + 0x18]
mov dword [ebx + 0xc0c], esi
lea edi, [esp + 0x18]
push edi
mov ecx, ebx
lea edx, [esp + 0x18]
call fcn.005f0144
mov eax, dword [esp + 0x14]
mov dword [ebx + 0xc10], eax
mov esi, dword [esp + 0x18]
mov dword [ebx + 0xc14], esi
lea edi, [esp + 0x18]
push edi
mov ecx, ebx
lea edx, [esp + 0x18]
call fcn.005f0144
mov eax, dword [esp + 0x14]
mov dword [ebx + 0xc18], eax
mov esi, dword [esp + 0x18]
mov dword [ebx + 0xc1c], esi
lea edi, [esp + 0x18]
push edi
mov ecx, ebx
lea edx, [esp + 0x18]
call fcn.005f0144
mov eax, dword [esp + 0x14]
mov dword [ebx + 0xc20], eax
mov esi, dword [esp + 0x18]
mov dword [ebx + 0xc24], esi
lea edi, [esp + 0x18]
push edi
mov ecx, ebx
lea edx, [esp + 0x18]
call fcn.005f0144
mov eax, dword [esp + 0x14]
mov dword [ebx + 0xc28], eax
mov esi, dword [esp + 0x18]
mov dword [ebx + 0xc2c], esi
lea edi, [esp + 0x18]
push edi
mov ecx, ebx
lea edx, [esp + 0x18]
call fcn.005f0144
mov eax, dword [esp + 0x14]
mov dword [ebx + 0xc30], eax
mov esi, dword [esp + 0x18]
mov dword [ebx + 0xc34], esi
lea edi, [esp + 0x18]
push edi
mov ecx, ebx
lea edx, [esp + 0x18]
call fcn.005f0144
mov eax, dword [esp + 0x14]
mov dword [ebx + 0xc38], eax
mov esi, dword [esp + 0x18]
mov dword [ebx + 0xc3c], esi
lea edi, [esp + 0x18]
push edi
mov ecx, ebx
lea edx, [esp + 0x18]
call fcn.005f0144
mov eax, dword [esp + 0x14]
mov dword [ebx + 0xc40], eax
mov edx, dword [esp + 0x18]
mov dword [ebx + 0xc44], edx
xor edx, edx
mov ecx, dword [esp + 8]
mov esi, dword [esp]
jmp 0x5efbbf
mov esi, dword [esp]
mov eax, esi
mov edi, eax
lea esi, [eax + 0x400]
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], eax
lea eax, [esp + 0x18]
push eax
mov ecx, ebx
lea edx, [esp + 0x18]
call fcn.005f0144
mov eax, dword [esp + 0x14]
mov dword [edi], eax
mov edx, dword [esp + 0x18]
mov dword [edi + 4], edx
add edi, 8
cmp esi, edi
ja 0x5efbd1
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 8]
inc edx
cmp edx, 4
jae 0x5efc27
test edx, edx
je 0x5efbbc
cmp edx, 1
je 0x5efc23
cmp edx, 2
jne 0x5efc1b
mov eax, dword [esp + 4]
jmp 0x5efbc1
cmp edx, 3
cmove eax, ecx
jmp 0x5efbc1
mov eax, ebx
jmp 0x5efbc1
add esp, 0x24
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret 4
xor eax, eax
jmp 0x5ef98e
push ebp
mov ebp, esp
and esp, 0xfffffff0
push edi
push esi
push ebx
push edx
push eax
mov eax, 0x1c
call fcn.006977b0
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x1c]
mov ebx, ecx
xor ecx, ecx
mov dword [esp + 0x14], ecx
mov dword [esp + 0x18], ecx
lea esi, [ebx + 0x400]
mov dword [esp], esi
lea esi, [ebx + 0x800]
mov dword [esp + 8], esi
lea esi, [ebx + 0xc48]
mov dword [esp + 4], esi
mov dword [esp + 0x10], ebx
mov dword [esp + 0xc], edx
mov eax, dword [esp]
jmp 0x5efc92
mov eax, dword [esp]
mov ebx, eax
mov esi, ebx
and esi, 0xf
je 0x5efcc7
test esi, 3
jne 0x5effcd
neg esi
add esi, 0x10
shr esi, 2
xor edx, edx
mov eax, ecx
shl eax, 0xa
mov edi, dword [eax + edx*4 + 0x6d9e40]
mov dword [ebx + edx*4], edi
inc edx
cmp edx, esi
jb 0x5efcb6
jmp 0x5efccc
mov eax, ecx
shl eax, 0xa
mov edx, esi
neg edx
and edx, 1
neg edx
add edx, 0x100
lea edi, [eax + esi*4 + 0x6d9e40]
test edi, 0xf
je 0x5efd04
lea eax, [eax + esi*4]
movq mm0, qword [eax + 0x6d9e40]
movq qword [ebx + esi*4], mm0
add eax, 8
add esi, 2
cmp esi, edx
jb 0x5efced
jmp 0x5efd24
lea eax, [eax + esi*4]
jmp 0x5efd0e
movq qword [ebx + esi*4 - 8], mm0
movq mm0, qword [eax + 0x6d9e40]
add eax, 8
add esi, 2
cmp esi, edx
jb 0x5efd09
movq qword [ebx + esi*4 - 8], mm0
emms
cmp edx, 0x100
jae 0x5efd46
mov eax, ecx
shl eax, 0xa
mov esi, dword [eax + edx*4 + 0x6d9e40]
mov dword [ebx + edx*4], esi
inc edx
cmp edx, 0x100
jb 0x5efd33
inc ecx
cmp ecx, 4
jae 0x5efd7f
test ecx, ecx
je 0x5efc8f
cmp ecx, 1
je 0x5efd76
cmp ecx, 2
jne 0x5efd67
mov ebx, dword [esp + 4]
jmp 0x5efc94
cmp ecx, 3
mov eax, dword [esp + 8]
cmove ebx, eax
jmp 0x5efc94
mov ebx, dword [esp + 0x10]
jmp 0x5efc94
mov eax, dword [ebp + 8]
mov ebx, dword [esp + 0x10]
mov edx, dword [esp + 0xc]
xor edi, edi
xor esi, esi
xor ecx, ecx
mov dword [esp + 0x10], ebx
shl edi, 8
movzx ebx, byte [esi + edx]
or edi, ebx
inc esi
mov eax, dword [ebp + 8]
cmp esi, eax
jl 0x5efdaa
mov esi, 0
shl edi, 8
movzx ebx, byte [esi + edx]
or edi, ebx
inc esi
cmp esi, eax
jl 0x5efdbd
mov esi, 0
shl edi, 8
movzx ebx, byte [esi + edx]
or edi, ebx
inc esi
cmp esi, eax
jl 0x5efdd0
mov esi, 0
shl edi, 8
movzx ebx, byte [esi + edx]
or edi, ebx
inc esi
cmp esi, eax
jl 0x5efde3
mov esi, 0
mov eax, dword [ecx*4 + 0x6daf40]
xor eax, edi
mov ebx, dword [esp + 0x10]
mov dword [ebx + ecx*4 + 0xc00], eax
inc ecx
cmp ecx, 0x12
jb 0x5efd94
xor eax, eax
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], eax
lea esi, [esp + 0x18]
push esi
mov ecx, ebx
lea edx, [esp + 0x18]
call fcn.005f0144
mov eax, dword [esp + 0x14]
mov dword [ebx + 0xc00], eax
mov esi, dword [esp + 0x18]
mov dword [ebx + 0xc04], esi
lea edi, [esp + 0x18]
push edi
mov ecx, ebx
lea edx, [esp + 0x18]
call fcn.005f0144
mov eax, dword [esp + 0x14]
mov dword [ebx + 0xc08], eax
mov esi, dword [esp + 0x18]
mov dword [ebx + 0xc0c], esi
lea edi, [esp + 0x18]
push edi
mov ecx, ebx
lea edx, [esp + 0x18]
call fcn.005f0144
mov eax, dword [esp + 0x14]
mov dword [ebx + 0xc10], eax
mov esi, dword [esp + 0x18]
mov dword [ebx + 0xc14], esi
lea edi, [esp + 0x18]
push edi
mov ecx, ebx
lea edx, [esp + 0x18]
call fcn.005f0144
mov eax, dword [esp + 0x14]
mov dword [ebx + 0xc18], eax
mov esi, dword [esp + 0x18]
mov dword [ebx + 0xc1c], esi
lea edi, [esp + 0x18]
push edi
mov ecx, ebx
lea edx, [esp + 0x18]
call fcn.005f0144
mov eax, dword [esp + 0x14]
mov dword [ebx + 0xc20], eax
mov esi, dword [esp + 0x18]
mov dword [ebx + 0xc24], esi
lea edi, [esp + 0x18]
push edi
mov ecx, ebx
lea edx, [esp + 0x18]
call fcn.005f0144
mov eax, dword [esp + 0x14]
mov dword [ebx + 0xc28], eax
mov esi, dword [esp + 0x18]
mov dword [ebx + 0xc2c], esi
lea edi, [esp + 0x18]
push edi
mov ecx, ebx
lea edx, [esp + 0x18]
call fcn.005f0144
mov eax, dword [esp + 0x14]
mov dword [ebx + 0xc30], eax
mov esi, dword [esp + 0x18]
mov dword [ebx + 0xc34], esi
lea edi, [esp + 0x18]
push edi
mov ecx, ebx
lea edx, [esp + 0x18]
call fcn.005f0144
mov eax, dword [esp + 0x14]
mov dword [ebx + 0xc38], eax
mov esi, dword [esp + 0x18]
mov dword [ebx + 0xc3c], esi
lea edi, [esp + 0x18]
push edi
mov ecx, ebx
lea edx, [esp + 0x18]
call fcn.005f0144
mov eax, dword [esp + 0x14]
mov dword [ebx + 0xc40], eax
mov edx, dword [esp + 0x18]
mov dword [ebx + 0xc44], edx
xor edx, edx
mov ecx, dword [esp + 8]
mov esi, dword [esp]
jmp 0x5eff59
mov esi, dword [esp]
mov eax, esi
mov edi, eax
lea esi, [eax + 0x400]
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], eax
lea eax, [esp + 0x18]
push eax
mov ecx, ebx
lea edx, [esp + 0x18]
call fcn.005f0144
mov eax, dword [esp + 0x14]
mov dword [edi], eax
mov edx, dword [esp + 0x18]
mov dword [edi + 4], edx
add edi, 8
cmp esi, edi
ja 0x5eff6b
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 8]
inc edx
cmp edx, 4
jae 0x5effc1
test edx, edx
je 0x5eff56
cmp edx, 1
je 0x5effbd
cmp edx, 2
jne 0x5effb5
mov eax, dword [esp + 4]
jmp 0x5eff5b
cmp edx, 3
cmove eax, ecx
jmp 0x5eff5b
mov eax, ebx
jmp 0x5eff5b
add esp, 0x24
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret 4
xor edx, edx
jmp 0x5efd26
push ebp
mov ebp, esp
and esp, 0xfffffff0
push edi
push esi
push ebx
sub esp, 0x14
xor eax, eax
lea edi, [ecx + 0x800]
mov dword [esp + 4], edi
mov dword [esp], edx
lea edx, [ecx + 0x400]
mov esi, eax
shl esi, 0xa
mov ebx, 0xffffff00
mov dword [esp + 8], ecx
mov ecx, dword [esi + ebx*4 + 0x6da240]
mov dword [edx + ebx*4 + 0x400], ecx
inc ebx
jne 0x5f0003
mov ecx, dword [esp + 8]
inc eax
cmp eax, 4
jge 0x5f0041
test eax, eax
je 0x5effef
cmp eax, 1
je 0x5f003d
cmp eax, 2
jne 0x5f0034
lea edx, [ecx + 0xc48]
jmp 0x5efff5
cmp eax, 3
jne 0x5efff5
mov edx, edi
jmp 0x5efff5
mov edx, ecx
jmp 0x5efff5
mov edx, dword [esp]
xor ebx, ebx
xor edi, edi
mov eax, 0xffffffee
mov esi, 0xfffffffc
mov dword [esp + 8], ecx
shl ebx, 8
movzx ecx, byte [edi + edx]
or ebx, ecx
inc edi
cmp edi, dword [ebp + 8]
jl 0x5f006a
mov edi, 0
inc esi
jne 0x5f0056
mov ecx, dword [esp + 8]
mov esi, dword [eax*4 + 0x6daf88]
xor esi, ebx
mov dword [ecx + eax*4 + 0xc48], esi
inc eax
jne 0x5f004d
xor eax, eax
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], eax
lea ebx, [ecx + 0xc00]
lea edi, [ecx + 0xc48]
mov esi, ecx
lea eax, [esp + 0x10]
push eax
mov ecx, esi
lea edx, [esp + 0x10]
call fcn.005f0144
mov eax, dword [esp + 0xc]
mov dword [ebx], eax
mov edx, dword [esp + 0x10]
mov dword [ebx + 4], edx
add ebx, 8
cmp edi, ebx
ja 0x5f009c
mov ecx, esi
xor eax, eax
mov ebx, ecx
mov ecx, dword [esp + 4]
lea edx, [ebx + 0x400]
mov edi, edx
lea esi, [edx + 0x400]
mov dword [esp + 8], edx
mov dword [esp], eax
lea eax, [esp + 0x10]
push eax
mov ecx, ebx
lea edx, [esp + 0x10]
call fcn.005f0144
mov eax, dword [esp + 0xc]
mov dword [edi], eax
mov edx, dword [esp + 0x10]
mov dword [edi + 4], edx
add edi, 8
cmp esi, edi
ja 0x5f00df
mov edx, dword [esp + 8]
mov eax, dword [esp]
mov ecx, dword [esp + 4]
inc eax
cmp eax, 4
jge 0x5f0137
test eax, eax
je 0x5f00ca
cmp eax, 1
je 0x5f0133
cmp eax, 2
jne 0x5f012a
lea edx, [ebx + 0xc48]
jmp 0x5f00d0
cmp eax, 3
jne 0x5f00d0
mov edx, ecx
jmp 0x5f00d0
mov edx, ebx
jmp 0x5f00d0
add esp, 0x14
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret 4