Function at 0x4371a0
Capabilities:
Decrypt data using tea
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x14
mov eax, dword [0x5b706c]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
mov ebx, dword [ebp + 0xc]
push esi
push edi
mov dword [ebp - 0x10], ecx
mov eax, dword [ebx]
mov dword [ebx + 4], eax
cmp dword [ecx + 0x20], 0
jne 0x43722d
mov edi, dword [ecx + 4]
xor eax, eax
mov edx, dword [ecx + 8]
mov dword [ebp - 8], eax
mov dword [ebp - 0xc], edi
sub edx, edi
je 0x43722d
lea esi, [eax + 4]
cmp esi, edx
jae 0x43722d
mov ecx, dword [edi + eax]
mov eax, ecx
shr eax, 0x14
movzx eax, al
sub eax, 0x2a
je 0x437209
sub eax, 1
je 0x437202
sub eax, 1
je 0x4371fb
xor edi, edi
jmp 0x43720e
mov edi, 0x2c
jmp 0x43720e
mov edi, 0x2b
jmp 0x43720e
mov edi, 0x2a
and ecx, 0xfff
mov eax, ecx
add esi, eax
test edi, edi
je 0x43722d
cmp dword [ebp + 8], edi
je 0x437242
mov edi, dword [ebp - 0xc]
mov eax, esi
mov dword [ebp - 8], eax
cmp esi, edx
jb 0x4371d6
pop edi
pop esi
xor al, al
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0051e9d8
mov esp, ebp
pop ebp
ret 8
xor edx, edx
cmp dx, cx
je 0x4374d3
push eax
mov ecx, ebx
call fcn.00403860
mov ecx, dword [ebp - 0x10]
mov eax, dword [ecx + 4]
lea edx, [eax + esi]
mov esi, dword [ebp - 8]
add esi, 4
mov dword [ebp - 0x10], edx
add esi, eax
cmp esi, edx
je 0x437292
nop dword [eax]
mov ecx, dword [ebx + 4]
cmp dword [ebx + 8], ecx
je 0x437281
mov al, byte [esi]
mov byte [ecx], al
inc dword [ebx + 4]
jmp 0x43728d
push esi
push ecx
mov ecx, ebx
call fcn.00404520
mov edx, dword [ebp - 0x10]
inc esi
cmp esi, edx
jne 0x437270
sub edi, 0x2b
je 0x4373c1
sub edi, 1
jne 0x4374d3
mov esi, dword [ebx + 4]
mov ecx, esi
mov eax, dword [ebx]
sub ecx, eax
shr ecx, 3
mov dword [ebp - 0x14], esi
mov dword [ebp - 8], eax
mov dword [ebp - 0xc], ecx
lea edx, [eax + ecx*8]
mov dword [ebp - 0x10], edx
test ecx, ecx
je 0x43732f
mov esi, dword [eax]
mov ebx, 0xc6ef3720
mov edi, dword [eax + 4]
mov edx, 0x20
mov eax, esi
lea ecx, [ebx + esi]
shr eax, 5
add eax, 0x1edd
xor ecx, eax
mov eax, esi
shl eax, 4
add eax, 0x23b
xor ecx, eax
sub edi, ecx
mov eax, edi
shr eax, 5
add eax, 0x132d
lea ecx, [ebx + edi]
xor ecx, eax
lea ebx, [ebx + 0x61c88647]
mov eax, edi
shl eax, 4
add eax, 0xb
xor ecx, eax
sub esi, ecx
sub edx, 1
jne 0x4372d2
mov eax, dword [ebp - 8]
mov dword [eax], esi
mov dword [eax + 4], edi
add eax, 8
sub dword [ebp - 0xc], 1
mov dword [ebp - 8], eax
jne 0x4372c3
mov edx, dword [ebp - 0x10]
mov esi, dword [ebp - 0x14]
mov ecx, esi
xor edi, edi
sub ecx, edx
xor eax, eax
cmp edx, esi
cmova ecx, edi
test ecx, ecx
je 0x4374d3
cmp ecx, 0x40
jb 0x437399
movaps xmm2, xmmword [0x599f50]
mov esi, ecx
and esi, 0xffffffc0
movups xmm0, xmmword [edx]
add eax, 0x40
movaps xmm1, xmm2
pxor xmm1, xmm0
movups xmmword [edx], xmm1
movups xmm0, xmmword [edx + 0x10]
movaps xmm1, xmm2
pxor xmm1, xmm0
movups xmmword [edx + 0x10], xmm1
movups xmm0, xmmword [edx + 0x20]
movaps xmm1, xmm2
pxor xmm1, xmm0
movups xmmword [edx + 0x20], xmm1
movups xmm0, xmmword [edx + 0x30]
movaps xmm1, xmm2
pxor xmm1, xmm0
movups xmmword [edx + 0x30], xmm1
add edx, 0x40
cmp eax, esi
jne 0x437355
cmp eax, ecx
je 0x4374d3
xor byte [edx], 0xaa
lea edx, [edx + 1]
inc eax
cmp eax, ecx
jne 0x4373a1
pop edi
pop esi
mov al, 1
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0051e9d8
mov esp, ebp
pop ebp
ret 8
mov esi, dword [ebx + 4]
mov ecx, esi
mov eax, dword [ebx]
sub ecx, eax
shr ecx, 3
mov dword [ebp - 0x10], esi
mov dword [ebp - 0xc], eax
mov dword [ebp - 8], ecx
lea edx, [eax + ecx*8]
mov dword [ebp - 0x14], edx
test ecx, ecx
je 0x437452
mov esi, dword [eax]
mov ebx, 0xc6ef3720
mov edi, dword [eax + 4]
mov edx, 0x20
mov ecx, esi
mov eax, esi
shl ecx, 4
shr eax, 5
add ecx, 0x1edd
add eax, 0x132d
xor ecx, eax
lea eax, [ebx + esi]
xor ecx, eax
sub edi, ecx
mov ecx, edi
mov eax, edi
shl ecx, 4
shr eax, 5
add ecx, 0x23b
add eax, 0xb
xor ecx, eax
lea eax, [ebx + edi]
xor ecx, eax
lea ebx, [ebx + 0x61c88647]
sub esi, ecx
sub edx, 1
jne 0x4373f3
mov eax, dword [ebp - 0xc]
mov dword [eax], esi
mov dword [eax + 4], edi
add eax, 8
sub dword [ebp - 8], 1
mov dword [ebp - 0xc], eax
jne 0x4373e4
mov edx, dword [ebp - 0x14]
mov esi, dword [ebp - 0x10]
mov ecx, esi
xor edi, edi
sub ecx, edx
xor eax, eax
cmp edx, esi
cmova ecx, edi
test ecx, ecx
je 0x4374d3
cmp ecx, 0x40
jb 0x4374c4
movaps xmm2, xmmword [0x599f50]
mov esi, ecx
and esi, 0xffffffc0
nop dword [eax + eax]
movups xmm0, xmmword [edx]
add eax, 0x40
movaps xmm1, xmm2
pxor xmm1, xmm0
movups xmmword [edx], xmm1
movups xmm0, xmmword [edx + 0x10]
movaps xmm1, xmm2
pxor xmm1, xmm0
movups xmmword [edx + 0x10], xmm1
movups xmm0, xmmword [edx + 0x20]
movaps xmm1, xmm2
pxor xmm1, xmm0
movups xmmword [edx + 0x20], xmm1
movups xmm0, xmmword [edx + 0x30]
movaps xmm1, xmm2
pxor xmm1, xmm0
movups xmmword [edx + 0x30], xmm1
add edx, 0x40
cmp eax, esi
jne 0x437480
cmp eax, ecx
je 0x4374d3
xor byte [edx], 0xaa
lea edx, [edx + 1]
inc eax
cmp eax, ecx
jne 0x4374c8
mov ecx, dword [ebp - 4]
mov al, 1
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0051e9d8
mov esp, ebp
pop ebp
ret 8