Function at 0x4120b9
Capabilities:
Encode data using xor
Encrypt data using des

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc
push ebx
push esi
push edi
mov eax, dword [ebp + 0xc]
mov edx, dword [ebp + 8]
mov edx, dword [edx]
mov ecx, dword [ebp + 8]
mov ecx, dword [ecx + 4]
mov ebx, edx
shr ebx, 4
xor ebx, ecx
and ebx, 0xf0f0f0f
xor ecx, ebx
mov esi, ebx
shl esi, 4
xor edx, esi
mov esi, edx
shr esi, 0x10
xor esi, ecx
mov ebx, esi
and ebx, 0xffff
xor ecx, ebx
mov esi, ebx
shl esi, 0x10
xor edx, esi
mov esi, ecx
shr esi, 2
xor esi, edx
mov ebx, esi
and ebx, 0x33333333
xor edx, ebx
mov esi, ebx
shl esi, 2
xor ecx, esi
mov esi, ecx
shr esi, 8
xor esi, edx
mov ebx, esi
and ebx, 0xff00ff
xor edx, ebx
mov esi, ebx
shl esi, 8
xor esi, ecx
mov dword [ebp - 4], esi
add esi, esi
mov edi, dword [ebp - 4]
shr edi, 0x1f
and edi, 1
mov ecx, esi
or ecx, edi
mov esi, edx
xor esi, ecx
mov ebx, esi
and ebx, 0xaaaaaaaa
xor edx, ebx
xor ecx, ebx
lea esi, [edx + edx]
mov edi, edx
shr edi, 0x1f
and edi, 1
mov edx, esi
or edx, edi
mov dword [ebp - 8], 8
mov esi, ecx
shl esi, 0x1c
mov edi, ecx
shr edi, 4
mov ebx, esi
or ebx, edi
mov esi, eax
add eax, 4
xor ebx, dword [esi]
mov esi, ebx
and esi, 0x3f
mov esi, dword [esi*4 + 0x4180c0]
mov edi, ebx
shr edi, 6
and edi, 0xfc
or esi, dword [edi + 0x417ec0]
mov edi, ebx
shr edi, 0xe
and edi, 0xfc
or esi, dword [edi + 0x417cc0]
mov edi, ebx
shr edi, 0x16
and edi, 0xfc
or esi, dword [edi + 0x417ac0]
mov dword [ebp - 0xc], esi
mov esi, eax
add eax, 4
mov ebx, ecx
xor ebx, dword [esi]
mov esi, ebx
and esi, 0x3f
mov esi, dword [esi*4 + 0x4181c0]
or esi, dword [ebp - 0xc]
mov edi, ebx
shr edi, 6
and edi, 0xfc
or esi, dword [edi + 0x417fc0]
mov edi, ebx
shr edi, 0xe
and edi, 0xfc
or esi, dword [edi + 0x417dc0]
mov edi, ebx
shr edi, 0x16
and edi, 0xfc
or esi, dword [edi + 0x417bc0]
xor edx, esi
mov esi, edx
shl esi, 0x1c
mov edi, edx
shr edi, 4
mov ebx, esi
or ebx, edi
mov esi, eax
add eax, 4
xor ebx, dword [esi]
mov esi, ebx
and esi, 0x3f
mov esi, dword [esi*4 + 0x4180c0]
mov edi, ebx
shr edi, 6
and edi, 0xfc
or esi, dword [edi + 0x417ec0]
mov edi, ebx
shr edi, 0xe
and edi, 0xfc
or esi, dword [edi + 0x417cc0]
mov edi, ebx
shr edi, 0x16
and edi, 0xfc
or esi, dword [edi + 0x417ac0]
mov dword [ebp - 0xc], esi
mov esi, eax
add eax, 4
mov ebx, edx
xor ebx, dword [esi]
mov esi, ebx
and esi, 0x3f
mov esi, dword [esi*4 + 0x4181c0]
or esi, dword [ebp - 0xc]
mov edi, ebx
shr edi, 6
and edi, 0xfc
or esi, dword [edi + 0x417fc0]
mov edi, ebx
shr edi, 0xe
and edi, 0xfc
or esi, dword [edi + 0x417dc0]
mov edi, ebx
shr edi, 0x16
and edi, 0xfc
or esi, dword [edi + 0x417bc0]
xor ecx, esi
dec dword [ebp - 8]
cmp dword [ebp - 8], 0
jne 0x412166
mov eax, ecx
shl eax, 0x1f
mov esi, ecx
shr esi, 1
mov ecx, eax
or ecx, esi
mov eax, edx
xor eax, ecx
mov ebx, eax
and ebx, 0xaaaaaaaa
xor edx, ebx
xor ecx, ebx
mov eax, edx
shl eax, 0x1f
mov esi, edx
shr esi, 1
mov edx, eax
or edx, esi
mov eax, edx
shr eax, 8
xor eax, ecx
mov ebx, eax
and ebx, 0xff00ff
xor ecx, ebx
mov eax, ebx
shl eax, 8
xor edx, eax
mov eax, edx
shr eax, 2
xor eax, ecx
mov ebx, eax
and ebx, 0x33333333
xor ecx, ebx
mov eax, ebx
shl eax, 2
xor edx, eax
mov eax, ecx
shr eax, 0x10
xor eax, edx
mov ebx, eax
and ebx, 0xffff
xor edx, ebx
mov eax, ebx
shl eax, 0x10
xor ecx, eax
mov eax, ecx
shr eax, 4
xor eax, edx
mov ebx, eax
and ebx, 0xf0f0f0f
xor edx, ebx
mov eax, dword [ebp + 8]
shl ebx, 4
xor ebx, ecx
mov dword [eax], ebx
add dword [ebp + 8], 4
mov eax, dword [ebp + 8]
mov dword [eax], edx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8