Function at 0x437481
Capabilities:
Encode data using add xor sub operations
Encode data using xor
Encrypt data using des

Disassembly:
push ebp
mov ebp, esp
pop ebp
sub esp, 0x20
push ebx
push ebp
push esi
mov esi, dword [esp + 0x34]
movzx eax, byte [esi]
movzx edx, byte [esi + 1]
shl eax, 8
or eax, edx
movzx edx, byte [esi + 2]
shl eax, 8
or eax, edx
movzx edx, byte [esi + 3]
shl eax, 8
or eax, edx
movzx edx, byte [esi + 4]
shl edx, 8
push edi
movzx edi, byte [esi + 5]
or edx, edi
movzx edi, byte [esi + 6]
movzx esi, byte [esi + 7]
shl edx, 8
or edx, edi
shl edx, 8
or edx, esi
mov esi, eax
shr esi, 4
xor esi, edx
and esi, 0xf0f0f0f
mov edi, esi
shl esi, 4
xor esi, eax
xor edi, edx
mov eax, esi
shr eax, 0x10
xor eax, edi
and eax, 0xffff
xor edi, eax
shl eax, 0x10
xor esi, eax
mov eax, edi
shr eax, 2
xor eax, esi
and eax, 0x33333333
xor esi, eax
add eax, eax
add eax, eax
xor edi, eax
mov eax, edi
shr eax, 8
xor eax, esi
and eax, 0xff00ff
xor esi, eax
shl eax, 8
xor eax, edi
rol eax, 1
mov edx, eax
xor eax, esi
and eax, 0xaaaaaaaa
xor edx, eax
xor eax, esi
mov esi, dword [esp + 0x34]
rol eax, 1
mov dword [esp + 0x38], eax
mov eax, dword [ecx + 0x18]
mov dword [esp + 0x18], eax
mov eax, dword [ecx + 0x10]
mov dword [esp + 0x14], eax
mov eax, dword [ecx + 8]
mov dword [esp + 0x10], eax
mov eax, dword [ecx + 0x20]
mov dword [esp + 0x1c], eax
mov eax, dword [ecx + 0x1c]
mov dword [esp + 0x28], eax
mov eax, dword [ecx + 0x14]
mov dword [esp + 0x24], eax
mov eax, dword [ecx + 0xc]
mov ecx, dword [ecx + 0x24]
mov dword [esp + 0x20], eax
mov dword [esp + 0x2c], ecx
add esi, 8
mov dword [esp + 0x34], 8
mov ebx, dword [esp + 0x10]
mov eax, edx
ror eax, 4
xor eax, dword [esi - 8]
mov ebp, dword [esp + 0x20]
mov ecx, eax
shr ecx, 0x18
and ecx, 0x3f
mov ecx, dword [ebx + ecx*4]
mov ebx, dword [esp + 0x14]
mov edi, eax
shr edi, 0x10
and edi, 0x3f
or ecx, dword [ebx + edi*4]
mov ebx, dword [esp + 0x18]
mov edi, eax
shr edi, 8
and edi, 0x3f
or ecx, dword [ebx + edi*4]
mov edi, dword [esp + 0x1c]
and eax, 0x3f
or ecx, dword [edi + eax*4]
mov eax, dword [esi - 4]
xor eax, edx
mov edi, eax
shr edi, 0x18
and edi, 0x3f
mov ebp, dword [ebp + edi*4]
mov edi, dword [esp + 0x24]
mov ebx, eax
shr ebx, 0x10
and ebx, 0x3f
or ebp, dword [edi + ebx*4]
mov ebx, dword [esp + 0x28]
mov edi, eax
shr edi, 8
and edi, 0x3f
or ebp, dword [ebx + edi*4]
mov edi, dword [esp + 0x2c]
and eax, 0x3f
or ebp, dword [edi + eax*4]
mov edi, dword [esp + 0x38]
or ebp, ecx
xor edi, ebp
mov ebp, dword [esp + 0x10]
mov eax, edi
ror eax, 4
xor eax, dword [esi]
mov dword [esp + 0x38], edi
mov ecx, eax
shr ecx, 0x18
and ecx, 0x3f
mov ecx, dword [ebp + ecx*4]
mov ebp, dword [esp + 0x14]
mov ebx, eax
shr ebx, 0x10
and ebx, 0x3f
or ecx, dword [ebp + ebx*4]
mov ebp, dword [esp + 0x18]
mov ebx, eax
shr ebx, 8
and ebx, 0x3f
or ecx, dword [ebp + ebx*4]
mov ebx, dword [esp + 0x1c]
mov ebp, dword [esp + 0x20]
and eax, 0x3f
or ecx, dword [ebx + eax*4]
mov eax, dword [esi + 4]
xor eax, edi
mov edi, eax
shr edi, 0x18
and edi, 0x3f
mov edi, dword [ebp + edi*4]
mov ebp, dword [esp + 0x24]
mov ebx, eax
shr ebx, 0x10
and ebx, 0x3f
or edi, dword [ebp + ebx*4]
mov ebx, eax
shr ebx, 8
and ebx, 0x3f
mov ebp, dword [esp + 0x28]
or edi, dword [ebp + ebx*4]
mov ebx, dword [esp + 0x2c]
and eax, 0x3f
or edi, dword [ebx + eax*4]
add esi, 0x10
or edi, ecx
xor edx, edi
sub dword [esp + 0x34], 1
jne 0x437579
mov ecx, dword [esp + 0x38]
ror edx, 1
mov eax, edx
xor eax, ecx
and eax, 0xaaaaaaaa
xor edx, eax
xor eax, ecx
ror eax, 1
mov ecx, eax
shr ecx, 8
xor ecx, edx
and ecx, 0xff00ff
xor edx, ecx
shl ecx, 8
xor eax, ecx
mov ecx, eax
shr ecx, 2
xor ecx, edx
and ecx, 0x33333333
xor edx, ecx
add ecx, ecx
add ecx, ecx
xor eax, ecx
mov ecx, edx
shr ecx, 0x10
xor ecx, eax
and ecx, 0xffff
xor eax, ecx
shl ecx, 0x10
xor edx, ecx
mov esi, edx
shr esi, 4
xor esi, eax
and esi, 0xf0f0f0f
mov ecx, esi
shl ecx, 4
xor ecx, edx
mov ebx, ecx
shr ebx, 0x18
xor esi, eax
mov eax, dword [esp + 0x3c]
mov byte [eax], bl
mov ebx, ecx
shr ebx, 0x10
mov edx, esi
mov byte [eax + 3], cl
mov byte [eax + 1], bl
mov ebx, ecx
mov ecx, edx
shr ecx, 0x18
mov byte [eax + 4], cl
mov ecx, edx
shr ecx, 0x10
pop edi
mov byte [eax + 5], cl
shr ebx, 8
pop esi
mov ecx, edx
shr ecx, 8
pop ebp
mov byte [eax + 2], bl
mov byte [eax + 6], cl
mov byte [eax + 7], dl
pop ebx
add esp, 0x20
ret 0xc