Function at 0x4cac90
Capabilities:
Encode data using xor
Encrypt data using tea

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x14
push ebx
mov ebx, dword [ebp + 8]
xor ecx, ecx
push esi
push edi
mov edi, dword [ebp + 0xc]
mov eax, dword [ebx]
mov dword [ebp + 8], eax
xor eax, eax
inc eax
cmp edi, eax
jle 0x4cad99
push 0x34
pop eax
cdq
idiv edi
mov esi, dword [ebx + edi*4 - 4]
add eax, 6
mov dword [ebp + 8], esi
test eax, eax
jle 0x4cae7e
lea edx, [edi - 1]
mov dword [ebp - 0x10], edx
dec eax
sub ecx, 0x61c88647
mov dword [ebp - 0x14], eax
mov eax, ecx
shr eax, 2
and eax, 3
mov dword [ebp - 8], ecx
mov dword [ebp - 0xc], eax
xor eax, eax
mov dword [ebp - 4], eax
test edx, edx
jle 0x4cad42
mov edi, dword [ebp - 0xc]
mov edx, dword [ebx + eax*4 + 4]
mov eax, edx
mov ecx, dword [ebp + 8]
shr eax, 3
shl esi, 4
xor esi, eax
shr ecx, 5
mov eax, edx
shl eax, 2
xor ecx, eax
mov eax, dword [ebp - 4]
add esi, ecx
and eax, 3
mov ecx, dword [ebp + 0x10]
xor eax, edi
mov ecx, dword [ecx + eax*4]
xor ecx, dword [ebp + 8]
mov eax, dword [ebp - 8]
xor eax, edx
add ecx, eax
mov eax, dword [ebp - 4]
xor esi, ecx
add dword [ebx + eax*4], esi
mov esi, dword [ebx + eax*4]
inc eax
mov dword [ebp + 8], esi
mov dword [ebp - 4], eax
cmp eax, dword [ebp - 0x10]
jl 0x4cacf3
mov edi, dword [ebp + 0xc]
mov edx, dword [ebx]
mov eax, edx
mov ecx, dword [ebp + 8]
shr eax, 3
shl esi, 4
xor esi, eax
shr ecx, 5
mov eax, edx
shl eax, 2
xor ecx, eax
mov eax, dword [ebp + 0x10]
add esi, ecx
mov ecx, dword [ebp - 4]
and ecx, 3
xor ecx, dword [ebp - 0xc]
mov ecx, dword [eax + ecx*4]
xor ecx, dword [ebp + 8]
mov eax, dword [ebp - 8]
xor eax, edx
lea edx, [edi - 1]
add ecx, eax
mov eax, dword [ebp - 0x14]
xor esi, ecx
mov ecx, dword [ebp - 8]
add dword [ebx + edi*4 - 4], esi
mov esi, dword [ebx + edi*4 - 4]
mov dword [ebp + 8], esi
test eax, eax
jg 0x4caccf
jmp 0x4cae7e
cmp edi, 0xffffffff
jge 0x4cae80
push 0x34
neg edi
pop eax
cdq
idiv edi
mov dword [ebp + 0xc], edi
add eax, 6
imul edx, eax, 0x9e3779b9
mov dword [ebp - 4], edx
test edx, edx
je 0x4cae7e
mov ecx, dword [ebx]
lea esi, [edi - 1]
mov eax, edx
shr eax, 2
and eax, 3
mov dword [ebp - 0xc], eax
mov eax, esi
mov dword [ebp - 8], eax
test eax, eax
jle 0x4cae29
mov edi, esi
mov edx, dword [ebx + edi*4 - 4]
mov eax, ecx
shr eax, 3
mov esi, edx
shl esi, 4
mov ecx, edx
xor esi, eax
shr ecx, 5
mov eax, dword [ebp + 8]
shl eax, 2
xor ecx, eax
mov eax, edi
add esi, ecx
and eax, 3
xor eax, dword [ebp - 0xc]
mov ecx, dword [ebp + 0x10]
mov ecx, dword [ecx + eax*4]
mov eax, dword [ebp - 4]
xor ecx, edx
xor eax, dword [ebp + 8]
add ecx, eax
xor esi, ecx
sub dword [ebx + edi*4], esi
mov ecx, dword [ebx + edi*4]
dec edi
mov dword [ebp + 8], ecx
test edi, edi
jg 0x4caddc
mov dword [ebp - 8], edi
mov edi, dword [ebp + 0xc]
mov edx, dword [ebx + edi*4 - 4]
mov eax, ecx
shr eax, 3
mov esi, edx
shl esi, 4
mov ecx, edx
xor esi, eax
shr ecx, 5
mov eax, dword [ebp + 8]
shl eax, 2
xor ecx, eax
mov eax, dword [ebp - 8]
add esi, ecx
and eax, 3
xor eax, dword [ebp - 0xc]
mov ecx, dword [ebp + 0x10]
mov ecx, dword [ecx + eax*4]
xor ecx, edx
mov edx, dword [ebp - 4]
mov eax, edx
xor eax, dword [ebp + 8]
add ecx, eax
xor esi, ecx
sub dword [ebx], esi
add edx, 0x61c88647
mov ecx, dword [ebx]
lea esi, [edi - 1]
mov dword [ebp + 8], ecx
mov dword [ebp - 4], edx
jne 0x4cadc6
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret