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

Disassembly:
movzx eax, word [0x42bbf0]
sub esp, 0x34
and eax, 0xe5ab40f0
mov dword [0x42bbfc], eax
mov eax, dword [0x42bbe4]
push ebx
or eax, 0x613f
push ebp
mov word [0x42bbd4], ax
mov eax, 0x9329
or word [0x42bbb4], ax
push esi
push edi
call fcn.004203ac
mov ecx, eax
call fcn.0042246b
mov dx, word [0x42bbb4]
mov esi, 0x4eae
movzx ecx, dx
add cx, si
mov word [0x42bbf0], cx
test eax, eax
jne 0x4206e5
movzx eax, cx
and ecx, 0x63e1
xor eax, 0x2644a57
mov word [0x42bbf4], cx
mov dword [0x42bbfc], eax
mov eax, dword [0x42bbe4]
xor eax, 0x3486
mov word [0x42bbb4], ax
mov eax, dword [0x42bbd0]
add eax, 0x1485
mov word [0x42bbd4], ax
jmp 0x420c9b
mov ax, word [0x42bbd4]
movzx ecx, dx
mov edx, 0x5bac
xor ecx, 0x28a3997b
sub ax, dx
mov dword [0x42bbfc], ecx
or ecx, 0xd1299971
push 0x400
mov word [0x42bbf4], ax
mov dword [0x42bbf8], ecx
call fcn.0040570b
mov edi, eax
mov eax, dword [0x42bbfc]
mov dword [esp + 0x30], edi
pop ecx
lea ecx, [eax - 0x1e292f30]
mov dword [0x42bbe4], ecx
test edi, edi
je 0x420c9b
mov bl, byte [0x42bbec]
mov ecx, 0x428ea0
movzx edx, ax
or bl, 0x3a
or edx, 0xb8f4
mov word [esp + 0x14], 0x7c
mov ebp, edx
mov dword [0x42bbdc], 0xd89ace2e
and edx, 0x6bca4cea
mov dword [esp + 0x18], ecx
imul eax, edx, 0x20a872b0
or ebp, 0x1742395a
mov dword [esp + 0x30], ebp
lea ebp, [edi + 2]
mov dword [esp + 0x34], edx
mov dword [0x42bbf8], edx
mov dword [esp + 0x1c], 3
mov dword [0x42bbfc], eax
mov eax, 0x428ea2
sub eax, edi
mov dword [esp + 0x20], eax
mov edi, eax
mov esi, dword [edi + ebp]
mov edx, 0xc6ef3720
movzx eax, bl
mov ebx, dword [ecx]
imul eax, eax, 0xe4
push 0x20
pop edi
xor al, 0x29
mov dword [esp + 0x28], eax
imul eax, dword [0x42bbc8], 0xa8027b96
mov dword [0x42bbc8], 0x529daaf9
mov dword [0x42bbe0], eax
mov ecx, ebx
mov eax, ebx
shr ecx, 5
shl eax, 4
add ecx, 0x72cf1fd4
add eax, 0x577ae0a4
xor ecx, eax
lea eax, [edx + ebx]
xor ecx, eax
sub esi, ecx
mov ecx, esi
mov eax, esi
shl ecx, 4
shr eax, 5
add ecx, 0x7e050cae
sub eax, 0x6323292b
xor ecx, eax
lea eax, [edx + esi]
xor ecx, eax
lea edx, [edx + 0x61c88647]
sub ebx, ecx
sub edi, 1
jne 0x4207de
imul eax, dword [0x42bbe0], 0xe678e8ef
mov ecx, esi
mov edi, dword [esp + 0x20]
mov byte [ebp - 2], bl
mov byte [ebp + 2], cl
mov dword [esp + 0x24], esi
mov dword [0x42bbb8], eax
mov eax, ebx
shr eax, 8
mov byte [ebp - 1], al
mov eax, ebx
shr eax, 0x10
mov byte [ebp], al
mov eax, dword [esp + 0x28]
xor al, 0x2f
shr ebx, 0x18
shl al, 5
or al, 0x95
mov byte [ebp + 1], bl
movzx eax, al
imul eax, eax, 0xb6
movzx ebx, al
mov eax, 0x7cc8
add bx, ax
mov eax, ecx
shr eax, 8
mov byte [ebp + 3], al
mov eax, ecx
shr ecx, 0x18
mov byte [ebp + 5], cl
mov ecx, dword [esp + 0x18]
shr eax, 0x10
add ecx, 8
movzx edx, bx
mov word [0x42bbc0], bx
and edx, 0x4d760fb6
mov byte [ebp + 4], al
xor bl, 0x82
add ebp, 8
mov dword [esp + 0x18], ecx
sub dword [esp + 0x1c], 1
jne 0x4207a9
movzx ecx, word [0x42bbd0]
lea eax, [edx + 0x4b567dc7]
mov ebp, dword [esp + 0x30]
mov dword [0x42bbd8], eax
or al, 2
mov byte [0x42bbec], al
and dword [esp + 0x20], 0
mov edi, dword [esp + 0x2c]
imul eax, ecx, 0x7eee
mov byte [edi + 0x18], 0
mov word [0x42bbf4], ax
lea eax, [ebp - 0x5f30]
mov word [0x42bbf0], ax
mov eax, ecx
xor eax, 0xfebd
mov word [0x42bbb4], ax
lea eax, [ecx - 0x7ccb]
mov word [0x42bbd4], ax
lea eax, [ebp + 0xf1ac54b]
mov dword [0x42bbd0], eax
mov eax, dword [esp + 0x34]
add eax, 0xce7788f3
mov dword [0x42bbe4], eax
lea eax, [esp + 0x20]
push eax
lea eax, [esp + 0x18]
push eax
push edi
jmp 0x420c5e
movzx ecx, word [0x42bbb4]
lea edx, [esp + 0x38]
movzx eax, word [0x42bbf0]
imul esi, ecx, 0xbb553916
mov ecx, 0xea07
imul eax, ecx
mov cx, word [0x42bbf0]
mov dword [0x42bbd0], esi
mov word [0x42bbd4], ax
mov eax, 0x6317
xor cx, ax
lea eax, [ecx - 0x58a8]
xor ecx, 0xf4ee
mov word [0x42bbf0], ax
imul eax, esi, 0xa789
mov word [0x42bbb4], cx
mov ecx, ebx
mov word [0x42bbf4], ax
movzx eax, ax
imul eax, eax, 0x899a5474
mov dword [0x42bbf8], eax
call fcn.0041cba1
test al, al
je 0x420c15
mov eax, dword [0x42bbf8]
add eax, 0xffffc0f7
mov word [0x42bbf0], ax
mov eax, dword [0x42bbfc]
and eax, 0xa130
mov word [0x42bbd4], ax
call fcn.00420f1b
imul eax, dword [0x42bbf8], 0xd403
lea ecx, [esp + 0x38]
xor dword [0x42bbd0], 0x667ab35f
mov word [0x42bbb4], ax
call fcn.0040fd18
movzx eax, word [0x42bbd4]
lea ecx, [esp + 0x38]
or eax, 0xe06c3b43
mov dword [0x42bbfc], eax
mov eax, dword [0x42bbe4]
add eax, 0x36e0449a
mov dword [0x42bbd0], eax
call fcn.0041789a
mov ax, word [0x42bbb4]
mov ecx, 0x5f58
sub ax, cx
mov ecx, 0xf979
mov word [0x42bbf4], ax
mov ax, word [0x42bbd4]
and ax, cx
mov word [0x42bbd4], ax
movzx eax, ax
and eax, 0xf7cc90f5
mov dword [0x42bbfc], eax
call fcn.0041f28e
movzx eax, word [0x42bbb4]
imul edx, eax, 0xaafc6019
cmp byte [esp + 0x40], 0
mov dword [0x42bbfc], edx
je 0x420abd
movzx eax, word [0x42bbd4]
movzx ecx, word [0x42bbf4]
xor eax, 0x8e2bf029
mov dword [0x42bbd0], eax
and eax, 0x48e0493b
mov dword [0x42bbe4], eax
mov eax, 0x898f
imul ecx, eax
mov word [0x42bbf0], cx
call fcn.0041716a
mov edx, dword [0x42bbfc]
mov ecx, dword [0x42bbe4]
add edx, 0x3847
imul eax, ecx, 0x53e3
cmp byte [esp + 0x41], 0
mov word [0x42bbf0], dx
mov word [0x42bbd4], ax
je 0x420b22
movzx eax, word [0x42bbb4]
xor ecx, 0xef45d319
and eax, 0xc46bbf04
mov dword [0x42bbe4], ecx
mov dword [0x42bbfc], eax
mov eax, dword [0x42bbf8]
add eax, 0xffff9b0b
mov word [0x42bbd4], ax
call fcn.00416a4f
mov dx, word [0x42bbf0]
mov ecx, dword [0x42bbe4]
movzx eax, dx
xor eax, 0xbcd8affd
cmp byte [esp + 0x3f], 0
mov dword [0x42bbf8], eax
je 0x420b66
lea eax, [ecx + 0x341d]
mov word [0x42bbf0], ax
imul eax, eax, 0x261c
mov word [0x42bbb4], ax
movzx eax, ax
and eax, 0xdd7f03be
mov dword [0x42bbe4], eax
call fcn.0041e442
mov ecx, dword [0x42bbe4]
movzx eax, word [0x42bbb4]
and ecx, 0x672aed9f
add eax, 0xbad92c0
mov dword [0x42bbf8], ecx
mov dword [0x42bbd0], eax
call fcn.0041b57e
mov ax, word [0x42bbf0]
mov ecx, 0x46d7
sub ax, cx
mov word [0x42bbf4], ax
mov eax, dword [0x42bbf8]
add eax, 0xffffc838
mov word [0x42bbb4], ax
call fcn.00415a3a
mov eax, dword [0x42bbd0]
add eax, 0x58b5
push 5
pop ecx
mov word [0x42bbb4], ax
call fcn.0041e241
mov eax, dword [0x42bbfc]
xor eax, 0xabc0
mov word [0x42bbb4], ax
call fcn.0041ac75
mov ax, word [0x42bbb4]
mov ecx, 0x56f6
sub ax, cx
mov word [0x42bbd4], ax
mov eax, dword [0x42bbe4]
and eax, 0x1627
mov word [0x42bbb4], ax
call fcn.0041a933
mov ecx, dword [0x42bbfc]
mov edx, dword [0x42bbe4]
jmp 0x420c29
mov edx, dword [0x42bbe4]
mov ecx, edx
xor ecx, 0xa6caab6e
mov dword [0x42bbfc], ecx
movzx eax, word [0x42bbb4]
add eax, 0x20301725
mov dword [0x42bbd0], eax
imul eax, ecx, 0xaeaf
mov word [0x42bbf0], ax
imul eax, edx, 0x8488
mov word [0x42bbd4], ax
lea eax, [esp + 0x20]
push eax
lea eax, [esp + 0x18]
push eax
push 0
call fcn.00405d9c
mov ebx, eax
add esp, 0xc
test ebx, ebx
jne 0x42093f
mov eax, 0x704
or ax, word [0x42bbb4]
mov word [0x42bbd4], ax
mov eax, 0xcef4
or ax, word [0x42bbf4]
push edi
mov word [0x42bbf0], ax
call fcn.004056f0
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x34
ret