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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffc0
sub esp, 0xf4
mov eax, dword [0x61ad68]
xor eax, esp
mov dword [esp + 0xf0], eax
mov eax, dword [ebp + 0x10]
push ebx
push esi
mov esi, dword [ebp + 8]
mov dword [esp + 0x58], eax
push edi
test esi, esi
je 0x48e13a
cmp dword [ebp + 0xc], 0x90
jl 0x48e13a
test eax, eax
je 0x48e13a
cmp dword [ebp + 0x14], 0
jle 0x48e13a
cmp dword [esi], 0x46545331
jne 0x48e13a
cmp dword [esi + 4], 0x4250494c
jne 0x48e13a
cmp dword [esi + 8], 0x434d4e49
jne 0x48e13a
push 0x7f
lea eax, [esp + 0x76]
push 0
push eax
call fcn.004f3d73
add esi, 0x10
lea edi, [esp + 0x7c]
mov ecx, 0x20
rep movsd dword es:[edi], dword [esi]
push pe_nt_image_headers32
call dword [0x51a4fc]
mov ebx, eax
lea ecx, [esp + 0x80]
add esp, 0x10
mov dword [esp + 0x48], ebx
lea edx, [ecx + 1]
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x48df40
sub ecx, edx
lea eax, [esp + 0x70]
push ecx
push ebx
push eax
call fcn.0048dde0
lea edi, [esp + 0x7c]
add esp, 0xc
lea ecx, [edi + 1]
nop
mov al, byte [edi]
inc edi
test al, al
jne 0x48df60
sub edi, ecx
mov dword [esp + 0x44], ebx
shr edi, 3
mov dword [esp + 0x4c], edi
mov dword [esp + 0x60], 0xb979389e
mov dword [esp + 0x64], 0xe973989b
lea esi, [edi*4]
mov dword [esp + 0x68], 0x9e3879b9
push esi
mov dword [esp + 0x70], 0x5951696b
call dword [0x51a4fc]
push esi
push dword [esp + 0x50]
mov ebx, eax
push ebx
call fcn.004f3d6d
xor edx, edx
mov esi, dword [ebx]
mov eax, 0x34
mov dword [esp + 0x4c], esi
div edi
add esp, 8
add eax, 6
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x524e60]
cvtpd2ps xmm0, xmm0
cvtps2pd xmm0, xmm0
movsd qword [esp + 0x58], xmm0
fld qword [esp + 0x58]
fstp qword [esp]
call fcn.004f3dbb
add esp, 8
fstp qword [esp + 0x50]
movsd xmm0, qword [esp + 0x50]
call fcn.004f2f31
imul eax, eax, 0x9e3779b9
mov dword [esp + 0x40], eax
test eax, eax
je 0x48e098
lea ecx, [edi - 1]
mov dword [esp + 0x50], ecx
nop dword [eax]
shr eax, 2
mov edi, ecx
and eax, 3
mov dword [esp + 0x58], eax
test edi, edi
js 0x48e085
mov ecx, dword [esp + 0x3c]
test edi, edi
mov eax, edi
cmovle eax, dword [esp + 0x4c]
shl esi, 2
shr ecx, 3
mov edx, dword [ebx + eax*4 - 4]
mov eax, edx
shr eax, 5
xor esi, eax
mov eax, edx
shl eax, 4
xor ecx, eax
mov eax, edi
and eax, 3
add esi, ecx
xor eax, dword [esp + 0x58]
mov ecx, dword [esp + eax*4 + 0x60]
mov eax, dword [esp + 0x40]
xor ecx, edx
xor eax, dword [esp + 0x3c]
add ecx, eax
xor esi, ecx
sub dword [ebx + edi*4], esi
mov esi, dword [ebx + edi*4]
sub edi, 1
mov dword [esp + 0x3c], esi
jns 0x48e030
mov ecx, dword [esp + 0x50]
mov eax, dword [esp + 0x40]
add eax, 0x61c88647
mov dword [esp + 0x40], eax
jne 0x48e020
mov edi, dword [esp + 0x4c]
xor esi, esi
test edi, edi
je 0x48e0be
mov eax, dword [esp + 0x44]
push dword [ebx + esi*4]
push eax
call fcn.0048de60
mov eax, dword [esp + 0x4c]
inc esi
add eax, 4
add esp, 8
mov dword [esp + 0x44], eax
cmp esi, edi
jb 0x48e0a2
mov esi, dword [0x51a4f4]
push ebx
call esi
lea ecx, [esp + 0x74]
add esp, 4
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x48e0d1
sub ecx, edx
shr ecx, 1
lea eax, [ecx + 1]
cmp dword [ebp + 0x14], eax
jae 0x48e104
push dword [esp + 0x48]
call esi
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xf0]
xor ecx, esp
call fcn.004f2d08
mov esp, ebp
pop ebp
ret
mov eax, dword [esp + 0x5c]
mov ebx, dword [esp + 0x48]
push ecx
push ebx
push eax
mov dword [eax], 0
call fcn.004f3d6d
push ebx
call esi
add esp, 0x10
mov eax, 0x90
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xf0]
xor ecx, esp
call fcn.004f2d08
mov esp, ebp
pop ebp
ret
mov ecx, dword [esp + 0xfc]
or eax, 0xffffffff
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.004f2d08
mov esp, ebp
pop ebp
ret