Function at 0x4e6940
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0xc
mov eax, dword [ebp + 8]
add eax, edx
add eax, 0xdeadbeef
mov dword [ebp - 0x10], eax
mov edi, ecx
test cl, 3
je 0x4e69e6
mov ecx, edi
test cl, 1
jne 0x4e6a66
cmp edx, 0xd
jb 0x4e6b60
mov eax, dword [ebp - 0x10]
mov ebx, eax
mov ecx, eax
mov dword [ebp - 0x14], edi
add ecx, dword [edi]
add ebx, dword [edi + 4]
mov eax, dword [ebp - 0x10]
add eax, dword [edi + 8]
sub ecx, eax
mov esi, eax
rol esi, 4
xor esi, ecx
add eax, ebx
sub ebx, esi
mov edi, esi
rol edi, 6
xor edi, ebx
add esi, eax
sub eax, edi
mov ebx, edi
rol ebx, 8
xor ebx, eax
add edi, esi
mov eax, ebx
rol eax, 0x10
sub esi, ebx
xor eax, esi
add ebx, edi
sub edi, eax
mov ecx, eax
rol ecx, 0x13
xor ecx, edi
add eax, ebx
sub ebx, ecx
mov esi, ecx
rol esi, 4
xor esi, ebx
mov dword [ebp - 0x10], esi
mov ebx, ecx
mov ecx, eax
mov edi, dword [ebp - 0x14]
add ebx, eax
add edx, 0xfffffff4
add edi, 0xc
cmp edx, 0xc
ja 0x4e697c
jmp 0x4e6b65
cmp edx, 0xd
jb 0x4e6b3f
mov eax, dword [ebp - 0x10]
mov ebx, eax
mov ecx, eax
mov dword [ebp - 0x14], edi
add ecx, dword [edi]
add ebx, dword [edi + 4]
mov eax, dword [ebp - 0x10]
add eax, dword [edi + 8]
sub ecx, eax
mov esi, ecx
mov ecx, ebx
mov ebx, eax
rol ebx, 4
xor ebx, esi
add eax, ecx
sub ecx, ebx
mov esi, ebx
rol esi, 6
xor esi, ecx
add ebx, eax
sub eax, esi
mov edi, esi
rol edi, 8
xor edi, eax
add esi, ebx
mov eax, edi
rol eax, 0x10
sub ebx, edi
xor eax, ebx
mov ebx, dword [ebp - 0x14]
add edi, esi
sub esi, eax
mov ecx, eax
rol ecx, 0x13
xor ecx, esi
add eax, edi
sub edi, ecx
mov esi, ecx
rol esi, 4
xor esi, edi
mov dword [ebp - 0x10], esi
add ecx, eax
add edx, 0xfffffff4
add ebx, 0xc
mov edi, ebx
mov ebx, ecx
mov ecx, eax
cmp edx, 0xc
ja 0x4e69f6
jmp 0x4e6b44
cmp edx, 0xd
jb 0x4e6b88
mov eax, dword [ebp - 0x10]
mov ebx, eax
mov ecx, eax
mov dword [ebp - 0x18], edx
mov eax, edi
movzx esi, byte [edi]
add esi, ecx
movzx ecx, byte [edi + 1]
shl ecx, 8
add ecx, esi
movzx esi, byte [edi + 2]
shl esi, 0x10
add esi, ecx
movzx edi, byte [edi + 3]
shl edi, 0x18
add edi, esi
movzx ecx, byte [eax + 4]
add ecx, ebx
movzx edx, byte [eax + 5]
shl edx, 8
add edx, ecx
movzx ecx, byte [eax + 6]
shl ecx, 0x10
add ecx, edx
movzx esi, byte [eax + 7]
shl esi, 0x18
add esi, ecx
movzx ecx, byte [eax + 8]
add ecx, dword [ebp - 0x10]
movzx edx, byte [eax + 9]
shl edx, 8
add edx, ecx
mov ecx, eax
mov dword [ebp - 0x14], eax
movzx eax, byte [eax + 0xa]
shl eax, 0x10
add eax, edx
movzx ebx, byte [ecx + 0xb]
shl ebx, 0x18
add ebx, eax
sub edi, ebx
mov edx, ebx
rol edx, 4
xor edx, edi
add ebx, esi
sub esi, edx
mov edi, edx
rol edi, 6
xor edi, esi
add edx, ebx
sub ebx, edi
mov esi, edi
rol esi, 8
xor esi, ebx
add edi, edx
mov ecx, esi
rol ecx, 0x10
sub edx, esi
xor ecx, edx
add esi, edi
sub edi, ecx
mov ebx, ecx
rol ebx, 0x13
xor ebx, edi
add ecx, esi
sub esi, ebx
mov eax, ebx
rol eax, 4
xor eax, esi
mov dword [ebp - 0x10], eax
mov edx, dword [ebp - 0x18]
add ebx, ecx
add edx, 0xfffffff4
mov edi, dword [ebp - 0x14]
add edi, 0xc
cmp edx, 0xc
ja 0x4e6a76
jmp 0x4e6b8d
mov ebx, dword [ebp - 0x10]
mov ecx, ebx
cmp edx, 0xc
ja case.default.0x4e6b4d
jmp dword [edx*4 + 0x512ffc]
mov esi, 0xffffff
and esi, dword [edi]
jmp 0x4e6c17
mov ebx, dword [ebp - 0x10]
mov ecx, ebx
cmp edx, 0xc
ja case.default.0x4e6b4d
jmp dword [edx*4 + 0x512fc8]
mov esi, edi
movzx esi, byte [edi + 2]
shl esi, 0x10
add ecx, esi
movzx esi, word [edi]
jmp 0x4e6c17
mov ebx, dword [ebp - 0x10]
mov ecx, ebx
cmp edx, 0xc
ja case.default.0x4e6b4d
jmp dword [edx*4 + 0x512f94]
mov esi, edi
movzx esi, byte [edi + 0xb]
shl esi, 0x18
add dword [ebp - 0x10], esi
mov esi, edi
movzx esi, byte [edi + 0xa]
shl esi, 0x10
add dword [ebp - 0x10], esi
mov esi, edi
movzx esi, byte [edi + 9]
shl esi, 8
add dword [ebp - 0x10], esi
mov esi, edi
movzx esi, byte [edi + 8]
add dword [ebp - 0x10], esi
mov esi, edi
movzx esi, byte [edi + 7]
shl esi, 0x18
add ebx, esi
mov esi, edi
movzx esi, byte [edi + 6]
shl esi, 0x10
add ebx, esi
mov esi, edi
movzx esi, byte [edi + 5]
shl esi, 8
add ebx, esi
mov esi, edi
movzx esi, byte [edi + 4]
add ebx, esi
mov esi, edi
movzx esi, byte [edi + 3]
shl esi, 0x18
add ecx, esi
mov esi, edi
movzx esi, byte [edi + 2]
shl esi, 0x10
add ecx, esi
mov esi, edi
movzx esi, byte [edi + 1]
shl esi, 8
add ecx, esi
movzx esi, byte [edi]
add ecx, esi
jmp case.default.0x4e6b4d
mov eax, dword [ebp - 0x10]
add eax, dword [edi + 8]
mov dword [ebp - 0x10], eax
jmp case.0x4e6b4d.8
mov esi, 0xffffff
and esi, dword [edi + 4]
jmp 0x4e6c51
mov esi, 0xffffff
and esi, dword [edi + 8]
jmp 0x4e6c6d
mov esi, edi
movzx esi, byte [edi + 4]
jmp 0x4e6c51
mov esi, edi
movzx esi, byte [edi + 6]
shl esi, 0x10
add ebx, esi
movzx esi, word [edi + 4]
add ebx, esi
jmp case.0x4e6b4d.4
mov esi, edi
movzx esi, byte [edi + 8]
jmp 0x4e6c6d
mov esi, edi
movzx esi, byte [edi + 0xa]
shl esi, 0x10
add dword [ebp - 0x10], esi
movzx esi, word [edi + 8]
add dword [ebp - 0x10], esi
add ebx, dword [edi + 4]
add ecx, dword [edi]
mov eax, dword [ebp - 0x10]
xor eax, ebx
mov esi, ebx
rol esi, 0xe
sub eax, esi
xor ecx, eax
mov esi, eax
rol esi, 0xb
sub ecx, esi
xor ebx, ecx
mov esi, ecx
rol esi, 0x19
sub ebx, esi
xor eax, ebx
mov esi, ebx
rol esi, 0x10
sub eax, esi
xor ecx, eax
mov esi, eax
rol esi, 4
sub ecx, esi
xor ebx, ecx
rol ecx, 0xe
sub ebx, ecx
xor eax, ebx
rol ebx, 0x18
sub eax, ebx
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x10]
add esp, 0xc
pop esi
pop edi
pop ebx
pop ebp
ret