Function at 0x4040e0
Capabilities:
Encrypt data using des

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x104
mov eax, dword [0x4ea5e0]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
mov esi, ecx
xor eax, eax
lea ebx, [ebx]
movzx ecx, byte [eax + str.80_]
mov edx, ecx
sar edx, 3
movzx edx, byte [edx + esi]
and ecx, 7
test byte [ecx*2 + 0x4ec1f0], dl
setne cl
mov byte [ebp + eax - 0x74], cl
movzx ecx, byte [eax + 0x4ec261]
mov edx, ecx
sar edx, 3
movzx edx, byte [edx + esi]
and ecx, 7
test byte [ecx*2 + 0x4ec1f0], dl
setne cl
mov byte [ebp + eax - 0x73], cl
movzx ecx, byte [eax + 0x4ec262]
mov edx, ecx
sar edx, 3
movzx edx, byte [edx + esi]
and ecx, 7
test byte [ecx*2 + 0x4ec1f0], dl
setne cl
mov byte [ebp + eax - 0x72], cl
movzx ecx, byte [eax + 0x4ec263]
mov edx, ecx
sar edx, 3
movzx edx, byte [edx + esi]
and ecx, 7
test byte [ecx*2 + 0x4ec1f0], dl
setne cl
mov byte [ebp + eax - 0x71], cl
add eax, 4
cmp eax, 0x38
jl 0x404100
xor edx, edx
mov dword [ebp - 0xf8], edx
mov dword [ebp - 0xfc], 0x1e
jmp 0x4041b6
mov edx, dword [ebp - 0xf8]
cmp dword [ebp + 8], 1
mov eax, dword [ebp - 0xfc]
je 0x4041c5
lea eax, [edx + edx]
movzx ebx, byte [edx + 0x4ec298]
lea ecx, [ebp + eax*4 - 0xf0]
lea eax, [ebp + eax*4 - 0xf4]
mov dword [ecx], 0
mov dword [ebp - 0x100], ecx
mov dword [ebp - 0x104], eax
mov dword [eax], 0
xor esi, esi
lea ecx, [ebx + 3]
lea eax, [ebx + 2]
lea ebx, [ebx]
lea edi, [ecx - 3]
cmp edi, 0x1c
jge 0x40420e
mov dl, byte [ebp + eax - 0x76]
jmp 0x404215
mov dl, byte [ebp + edi - 0x90]
lea edi, [ecx - 2]
mov byte [ebp + esi - 0x3c], dl
cmp edi, 0x1c
jge 0x404227
mov dl, byte [ebp + eax - 0x75]
jmp 0x40422e
mov dl, byte [ebp + edi - 0x90]
mov byte [ebp + esi - 0x3b], dl
cmp eax, 0x1c
jge 0x40423d
mov dl, byte [ebp + eax - 0x74]
jmp 0x404244
mov dl, byte [ebp + eax - 0x90]
mov byte [ebp + esi - 0x3a], dl
cmp ecx, 0x1c
jge 0x404253
mov dl, byte [ebp + eax - 0x73]
jmp 0x40425a
mov dl, byte [ebp + ecx - 0x90]
mov byte [ebp + esi - 0x39], dl
add esi, 4
add eax, 4
add ecx, 4
cmp esi, 0x1c
jl 0x404200
mov edi, 0x1c
lea edx, [ebx + 0x1f]
lea eax, [ebx + 0x1e]
lea ecx, [edx - 3]
cmp ecx, 0x38
jge 0x404285
mov cl, byte [ebp + eax - 0x76]
jmp 0x40428c
mov cl, byte [ebp + ecx - 0x90]
lea esi, [edx - 2]
mov byte [ebp + edi - 0x3c], cl
cmp esi, 0x38
jge 0x40429e
mov cl, byte [ebp + eax - 0x75]
jmp 0x4042a5
mov cl, byte [ebp + esi - 0x90]
mov byte [ebp + edi - 0x3b], cl
cmp eax, 0x38
jge 0x4042b4
mov cl, byte [ebp + eax - 0x74]
jmp 0x4042bb
mov cl, byte [ebp + eax - 0x90]
mov byte [ebp + edi - 0x3a], cl
cmp edx, 0x38
jge 0x4042ca
mov cl, byte [ebp + eax - 0x73]
jmp 0x4042d1
mov cl, byte [ebp + edx - 0x90]
mov byte [ebp + edi - 0x39], cl
add edi, 4
add eax, 4
add edx, 4
cmp edi, 0x38
jl 0x404277
xor eax, eax
jmp 0x4042f0
movzx edx, byte [eax + 0x4ec2a8]
cmp byte [ebp + edx - 0x3c], 0
mov edx, dword [ebp - 0x104]
je 0x40430d
mov ecx, dword [eax*4 + 0x4ec200]
or dword [edx], ecx
movzx ecx, byte [eax + 0x4ec2c0]
cmp byte [ebp + ecx - 0x3c], 0
mov ecx, dword [ebp - 0x100]
je 0x40432a
mov esi, dword [eax*4 + 0x4ec200]
or dword [ecx], esi
movzx esi, byte [eax + 0x4ec2a9]
cmp byte [ebp + esi - 0x3c], 0
je 0x404341
mov esi, dword [eax*4 + 0x4ec204]
or dword [edx], esi
movzx esi, byte [eax + 0x4ec2c1]
cmp byte [ebp + esi - 0x3c], 0
je 0x404358
mov esi, dword [eax*4 + 0x4ec204]
or dword [ecx], esi
movzx esi, byte [eax + 0x4ec2aa]
cmp byte [ebp + esi - 0x3c], 0
je 0x40436f
mov esi, dword [eax*4 + 0x4ec208]
or dword [edx], esi
movzx esi, byte [eax + 0x4ec2c2]
cmp byte [ebp + esi - 0x3c], 0
je 0x404386
mov esi, dword [eax*4 + 0x4ec208]
or dword [ecx], esi
movzx esi, byte [eax + 0x4ec2ab]
cmp byte [ebp + esi - 0x3c], 0
je 0x40439d
mov esi, dword [eax*4 + 0x4ec20c]
or dword [edx], esi
movzx esi, byte [eax + 0x4ec2c3]
cmp byte [ebp + esi - 0x3c], 0
je 0x4043b4
mov esi, dword [eax*4 + 0x4ec20c]
or dword [ecx], esi
movzx esi, byte [eax + 0x4ec2ac]
cmp byte [ebp + esi - 0x3c], 0
je 0x4043cb
mov esi, dword [eax*4 + 0x4ec210]
or dword [edx], esi
movzx esi, byte [eax + 0x4ec2c4]
cmp byte [ebp + esi - 0x3c], 0
je 0x4043e2
mov esi, dword [eax*4 + 0x4ec210]
or dword [ecx], esi
movzx esi, byte [eax + 0x4ec2ad]
cmp byte [ebp + esi - 0x3c], 0
je 0x4043f9
mov esi, dword [eax*4 + 0x4ec214]
or dword [edx], esi
movzx edx, byte [eax + 0x4ec2c5]
cmp byte [ebp + edx - 0x3c], 0
je 0x404410
mov edx, dword [eax*4 + 0x4ec214]
or dword [ecx], edx
add eax, 6
cmp eax, 0x18
jl 0x4042f0
mov eax, dword [ebp - 0xfc]
inc dword [ebp - 0xf8]
sub eax, 2
mov dword [ebp - 0xfc], eax
cmp eax, 0xfffffffe
jg 0x4041b0
lea ecx, [ebp - 0xf4]
call fcn.00404460
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.004a8a2f
mov esp, ebp
pop ebp
ret