Function at 0x456240
Capabilities:
Encrypt data using des

Disassembly:
push esi
push edi
push ebp
add esp, 0xffffffec
mov byte [esp], dl
mov edi, eax
lea esi, [esp + 4]
lea ebp, [esp + 0xc]
mov edx, str.:2_
mov eax, edi
call fcn.00455fe8
mov byte [esp + 0x10], 0
movzx edx, byte [edi + 7]
and dl, 1
shl edx, 7
movzx eax, byte [edi + 4]
mov ecx, eax
and cl, 0xf8
movzx ecx, cl
shr ecx, 1
or dl, cl
mov ecx, eax
and cl, 0x18
movzx ecx, cl
shr ecx, 3
or dl, cl
mov byte [esi], dl
mov ecx, eax
and cl, 7
shl ecx, 5
and al, 1
add eax, eax
add eax, eax
add eax, eax
or cl, al
movzx edx, byte [edi + 5]
mov eax, edx
and al, 0xe0
movzx eax, al
shr eax, 5
or cl, al
movzx eax, byte [edi + 5]
and al, 0x80
movzx eax, al
shr eax, 3
or cl, al
mov byte [esi + 1], cl
mov eax, edx
and al, 0x18
add eax, eax
add eax, eax
add eax, eax
mov ecx, edx
and cl, 0x1f
add ecx, ecx
or al, cl
movzx ecx, byte [edi + 6]
and cl, 0x80
movzx ecx, cl
shr ecx, 7
or al, cl
mov byte [esi + 2], al
and dl, 1
shl edx, 7
movzx eax, byte [edi + 6]
and al, 0xf8
movzx eax, al
shr eax, 1
or dl, al
movzx eax, byte [edi + 6]
and al, 0x18
movzx eax, al
shr eax, 3
or dl, al
mov byte [esi + 3], dl
movzx eax, byte [edi + 6]
and al, 7
shl eax, 5
movzx edx, byte [edi + 6]
and dl, 1
add edx, edx
add edx, edx
add edx, edx
or al, dl
movzx edx, byte [edi + 7]
and dl, 0xe0
movzx edx, dl
shr edx, 5
or al, dl
movzx edx, byte [edi + 7]
and dl, 0x80
movzx edx, dl
shr edx, 3
or al, dl
mov byte [esi + 4], al
movzx eax, byte [edi + 7]
and al, 0x18
add eax, eax
add eax, eax
add eax, eax
movzx edx, byte [edi + 7]
and dl, 0x1f
add edx, edx
or al, dl
movzx edx, byte [edi + 4]
and dl, 0x80
movzx edx, dl
shr edx, 7
or al, dl
mov byte [esi + 5], al
cmp byte [esp], 0
je 0x456378
movzx eax, byte [esp + 0x10]
jmp 0x45637e
mov al, 0xf
sub al, byte [esp + 0x10]
movzx edx, al
mov edx, dword [edx*8 + 0x45fcc8]
xor dword [esi], edx
movzx eax, al
movzx eax, word [eax*8 + 0x45fccc]
xor word [esi + 4], ax
movzx eax, byte [esi]
and al, 3
movzx eax, al
shl eax, 4
movzx edx, byte [esi + 1]
and dl, 0xf0
movzx edx, dl
shr edx, 4
or eax, edx
movzx eax, byte [eax + 0x45aab8]
and al, 0xf
movzx edx, byte [esi]
and dl, 0xfc
movzx edx, dl
shr edx, 2
movzx edx, byte [edx + 0x45aab8]
and dl, 0xf0
or al, dl
mov byte [ebp], al
movzx eax, byte [esi + 1]
and al, 0xf
movzx eax, al
add eax, eax
add eax, eax
movzx edx, byte [esi + 2]
and dl, 0xc0
movzx edx, dl
shr edx, 6
or eax, edx
movzx eax, byte [eax + 0x45aaf8]
and al, 0xf0
movzx edx, byte [esi + 2]
and dl, 0x3f
movzx edx, dl
movzx edx, byte [edx + 0x45aaf8]
and dl, 0xf
or al, dl
mov byte [ebp + 1], al
movzx eax, byte [esi + 3]
and al, 3
movzx eax, al
shl eax, 4
movzx edx, byte [esi + 4]
and dl, 0xf0
movzx edx, dl
shr edx, 4
or eax, edx
movzx eax, byte [eax + 0x45ab38]
and al, 0xf
movzx edx, byte [esi + 3]
and dl, 0xfc
movzx edx, dl
shr edx, 2
movzx edx, byte [edx + 0x45ab38]
and dl, 0xf0
or al, dl
mov byte [ebp + 2], al
movzx eax, byte [esi + 4]
and al, 0xf
movzx eax, al
add eax, eax
add eax, eax
movzx edx, byte [esi + 5]
and dl, 0xc0
movzx edx, dl
shr edx, 6
or eax, edx
movzx eax, byte [eax + 0x45ab78]
and al, 0xf0
movzx edx, byte [esi + 5]
and dl, 0x3f
movzx edx, dl
movzx edx, byte [edx + 0x45ab78]
and dl, 0xf
or al, dl
mov byte [ebp + 3], al
mov edx, 0x45a798
mov eax, ebp
call fcn.00456060
mov eax, dword [edi]
xor dword [ebp], eax
mov eax, dword [edi + 4]
mov dword [edi], eax
mov eax, dword [ebp]
mov dword [edi + 4], eax
inc byte [esp + 0x10]
cmp byte [esp + 0x10], 0x10
jne 0x456264
mov eax, dword [edi]
mov dword [ebp], eax
mov eax, dword [edi + 4]
mov dword [edi], eax
mov eax, dword [ebp]
mov dword [edi + 4], eax
mov edx, 0x45a758
mov eax, edi
call fcn.00455fe8
add esp, 0x14
pop ebp
pop edi
pop esi
ret