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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x50
pxor xmm0, xmm0
movdqa xmmword [esp + 0x30], xmm0
movdqa xmmword [esp + 0x20], xmm0
cmp edx, 2
jg 0x4045f7
cmp byte [ecx], 0x2e
jne 0x4045f7
movzx eax, byte [ecx + 1]
mov dword [esp + 0xc], 0
test eax, eax
je 0x4045eb
cmp eax, 0x2e
jne 0x4045f7
mov eax, dword [esp + 0xc]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov dword [esp + 0x14], 0xefcdab89
mov dword [esp + 0xc], 0x67452301
nop word [eax + eax]
cmp edx, 0x10
mov esi, 0x10
cmovl esi, edx
mov eax, edx
shl eax, 8
or eax, edx
mov ebx, eax
shl ebx, 0x10
or ebx, eax
test edx, edx
mov dword [esp + 0x18], edx
mov dword [esp + 0x10], ecx
jle 0x4046a0
cmp esi, 1
mov dword [esp + 8], esi
jne 0x4046d0
mov dword [esp], 4
xor eax, eax
mov ecx, ebx
mov edx, ebx
lea esi, [esp + 0x20]
test byte [esp + 8], 1
je 0x404682
mov ebx, eax
and ebx, 3
cmove edx, ecx
mov edi, ecx
mov ecx, dword [esp + 0x10]
movzx eax, byte [ecx + eax]
shl edx, 8
or edx, eax
cmp ebx, 3
jne 0x404680
mov dword [esi], edx
add esi, 4
dec dword [esp]
mov edx, edi
mov ecx, edi
mov eax, dword [esp]
test eax, eax
jle 0x40480b
mov dword [esi], edx
cmp eax, 1
jne 0x4046af
jmp 0x40480b
mov dword [esp + 0x20], ebx
mov eax, 4
lea esi, [esp + 0x20]
mov ecx, ebx
mov dword [esp], eax
mov edx, eax
sub edx, 2
mov eax, 0
cmovb edx, eax
cmp edx, 7
jae 0x404740
mov edi, dword [esp]
jmp 0x4047f0
and esi, 0xfffffffe
mov dword [esp + 4], esi
mov dword [esp], 4
xor eax, eax
mov ecx, ebx
lea esi, [esp + 0x20]
jmp 0x404701
mov ecx, edi
add eax, 2
mov ebx, edx
cmp dword [esp + 4], eax
je 0x404653
test al, 2
cmove ebx, ecx
mov edi, ecx
mov ecx, dword [esp + 0x10]
movzx edx, byte [ecx + eax]
shl ebx, 0x10
shl edx, 8
or edx, ebx
movzx ebx, byte [ecx + eax + 1]
or edx, ebx
lea ebx, [eax + 1]
not ebx
test bl, 3
jne 0x4046f0
mov dword [esi], edx
add esi, 4
dec dword [esp]
mov edx, edi
jmp 0x4046f0
lea eax, [edx + 1]
mov dword [esp + 4], eax
movd xmm0, ecx
pshufd xmm0, xmm0, 0
add edx, 0xfffffff9
mov ebx, edx
shr ebx, 3
inc ebx
mov eax, ebx
and eax, 3
mov dword [esp + 8], eax
xor eax, eax
cmp edx, 0x18
jb 0x4047a8
and ebx, 0xfffffffc
xor eax, eax
nop
movdqu xmmword [esi + eax*4 + 4], xmm0
movdqu xmmword [esi + eax*4 + 0x14], xmm0
movdqu xmmword [esi + eax*4 + 0x24], xmm0
movdqu xmmword [esi + eax*4 + 0x34], xmm0
movdqu xmmword [esi + eax*4 + 0x44], xmm0
movdqu xmmword [esi + eax*4 + 0x54], xmm0
movdqu xmmword [esi + eax*4 + 0x64], xmm0
movdqu xmmword [esi + eax*4 + 0x74], xmm0
add eax, 0x20
add ebx, 0xfffffffc
jne 0x404770
mov ebx, dword [esp + 4]
and ebx, 0xfffffff8
mov edi, dword [esp + 8]
test edi, edi
je 0x4047e2
lea eax, [esi + eax*4]
add eax, 0x14
shl edi, 5
xor edx, edx
nop word cs:[eax + eax]
movdqu xmmword [eax + edx - 0x10], xmm0
movdqu xmmword [eax + edx], xmm0
add edx, 0x20
cmp edi, edx
jne 0x4047d0
cmp dword [esp + 4], ebx
mov edi, dword [esp]
je 0x40480b
sub edi, ebx
lea esi, [esi + ebx*4]
inc edi
add esi, 4
nop word cs:[eax + eax]
mov dword [esi], ecx
dec edi
add esi, 4
cmp edi, 2
ja 0x404800
mov eax, dword [esp + 0x20]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 8], eax
mov esi, 0x9e3779b9
mov edi, 0xfffffff0
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x1c], eax
mov edx, dword [esp + 0xc]
mov eax, dword [esp + 0x14]
nop dword [eax]
mov ecx, eax
shl eax, 4
add eax, dword [esp + 4]
lea ebx, [ecx + esi]
xor ebx, eax
mov eax, ecx
shr eax, 5
add eax, dword [esp]
xor eax, ebx
add edx, eax
mov eax, edx
shl eax, 4
add eax, dword [esp + 8]
lea ebx, [esi + edx]
xor ebx, eax
mov eax, edx
shr eax, 5
add eax, dword [esp + 0x1c]
xor eax, ebx
add eax, ecx
add esi, 0x9e3779b9
inc edi
jne 0x404840
add dword [esp + 0xc], edx
mov edx, dword [esp + 0x18]
cmp edx, 0x11
jl 0x4045eb
add dword [esp + 0x14], eax
mov ecx, dword [esp + 0x10]
add ecx, 0x10
add edx, 0xfffffff0
jmp 0x404610