Function at 0x4349d0
Capabilities:
Encrypt data using tea

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x70
mov edx, dword [ebp + 0x14]
mov ecx, dword [ebp + 8]
pxor xmm0, xmm0
movdqa xmmword [esp + 0x50], xmm0
movdqa xmmword [esp + 0x40], xmm0
mov dword [esp + 0x28], 0x10325476
mov dword [esp + 0x20], 0x98badcfe
mov eax, 0xefcdab89
mov dword [esp + 0x30], 0x67452301
test edx, edx
je 0x434487
mov esi, dword [edx]
test esi, esi
je 0x43445e
mov edi, dword [edx + 4]
jmp 0x434473
mov edi, dword [edx + 4]
test edi, edi
jne 0x434473
xor edi, edi
cmp dword [edx + 8], 0
jne 0x434473
cmp dword [edx + 0xc], 0
je 0x434487
mov eax, dword [edx + 8]
mov dword [esp + 0x20], eax
mov eax, dword [edx + 0xc]
mov dword [esp + 0x28], eax
mov dword [esp + 0x30], esi
mov eax, edi
mov edx, dword [ebp + 0x18]
cmp ecx, 5
ja case.default.0x43449f
mov ebx, dword [ebp + 0x10]
mov edx, dword [ebp + 0xc]
mov dword [esp + 0x1c], edx
mov dl, 1
mov dword [esp + 0x24], edx
jmp dword [ecx*4 + 0x4a3c20]
mov dword [esp + 0x24], 0
mov dword [esp + 0x20], 0
test ebx, ebx
je 0x434c79
cmp ebx, 1
jne 0x434c97
mov dword [esp + 0xc], 0x12a3fe2d
mov ecx, 0x37abe8f9
mov eax, dword [ebp + 0xc]
test bl, 1
je 0x434d4c
cmp byte [esp + 0x24], 0
je 0x434d2d
mov eax, dword [esp + 0x1c]
movsx eax, byte [eax]
jmp 0x434d30
mov dword [edx], 0
mov eax, 0x7f2bb759
jmp 0x434d71
mov dword [esp + 0x24], 0
test ebx, ebx
jle 0x434d52
xor ecx, ecx
mov dword [esp + 0xc], eax
mov edx, ebx
jmp 0x4347b2
mov eax, dword [esp + 0x28]
mov ecx, eax
mov edx, dword [esp + 0x20]
xor ecx, edx
mov edi, dword [esp + 0xc]
and ecx, edi
xor ecx, eax
add ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x40]
mov dword [esp + 0x18], eax
mov esi, dword [esp + 0x44]
mov dword [esp + 0x14], esi
add ecx, eax
rol ecx, 3
mov esi, edx
mov ebx, edx
xor ebx, edi
and ebx, ecx
xor ebx, edx
mov dword [esp + 0x20], edx
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x14]
add eax, edx
add ebx, eax
rol ebx, 7
mov edx, ecx
mov dword [esp + 0xc], edi
xor edx, edi
and edx, ebx
xor edx, edi
mov eax, dword [esp + 0x48]
mov dword [esp + 0x34], eax
add eax, esi
add edx, eax
rol edx, 0xb
mov eax, ebx
xor eax, ecx
and eax, edx
xor eax, ecx
mov esi, dword [esp + 0x4c]
mov dword [esp + 0x10], esi
mov esi, dword [esp + 0xc]
mov edi, dword [esp + 0x10]
add edi, esi
add eax, edi
rol eax, 0x13
mov edi, edx
xor edi, ebx
and edi, eax
xor edi, ebx
mov esi, dword [esp + 0x50]
mov dword [esp + 0x2c], esi
add ecx, esi
add ecx, edi
rol ecx, 3
mov edi, eax
xor edi, edx
and edi, ecx
xor edi, edx
mov esi, dword [esp + 0x54]
mov dword [esp + 0x3c], esi
add ebx, esi
add ebx, edi
rol ebx, 7
mov edi, ecx
xor edi, eax
and edi, ebx
xor edi, eax
mov esi, dword [esp + 0x58]
mov dword [esp + 0x38], esi
add edx, esi
add edx, edi
rol edx, 0xb
mov esi, ebx
xor esi, ecx
and esi, edx
xor esi, ecx
mov edi, dword [esp + 0x5c]
add eax, edi
mov dword [esp + 0x60], edi
add eax, esi
rol eax, 0x13
mov esi, eax
and esi, edx
add ecx, dword [esp + 0x14]
add ecx, esi
mov esi, eax
xor esi, edx
and esi, ebx
add ecx, esi
add ecx, 0x5a827999
rol ecx, 3
mov esi, ecx
and esi, eax
add ebx, dword [esp + 0x10]
add ebx, esi
mov esi, ecx
xor esi, eax
and esi, edx
add esi, ebx
add esi, 0x5a827999
rol esi, 5
mov ebx, esi
and ebx, ecx
add edx, dword [esp + 0x3c]
add edx, ebx
mov ebx, esi
xor ebx, ecx
and ebx, eax
add edx, ebx
add edx, 0x5a827999
rol edx, 9
mov ebx, edx
and ebx, esi
add eax, edi
add eax, ebx
mov ebx, edx
xor ebx, esi
and ebx, ecx
add eax, ebx
add eax, 0x5a827999
rol eax, 0xd
mov ebx, eax
and ebx, edx
add ecx, dword [esp + 0x18]
add ecx, ebx
mov ebx, eax
xor ebx, edx
and ebx, esi
add ecx, ebx
add ecx, 0x5a827999
rol ecx, 3
mov ebx, ecx
and ebx, eax
add esi, dword [esp + 0x34]
add esi, ebx
mov ebx, ecx
xor ebx, eax
and ebx, edx
add esi, ebx
add esi, 0x5a827999
rol esi, 5
mov ebx, esi
and ebx, ecx
add edx, dword [esp + 0x2c]
add edx, ebx
mov ebx, esi
xor ebx, ecx
and ebx, eax
lea edi, [ebx + edx]
add edi, 0x5a827999
rol edi, 9
mov ebx, edi
and ebx, esi
add eax, dword [esp + 0x38]
add eax, ebx
mov edx, edi
xor edx, esi
mov ebx, edx
and ebx, ecx
add eax, ebx
add eax, 0x5a827999
add ecx, dword [esp + 0x10]
rol eax, 0xd
xor edx, eax
add ecx, edx
add ecx, 0x6ed9eba1
add esi, dword [esp + 0x60]
rol ecx, 3
mov edx, ecx
xor edx, eax
mov ebx, edx
xor ebx, edi
add esi, ebx
add esi, 0x6ed9eba1
add edi, dword [esp + 0x34]
rol esi, 9
xor edx, esi
add edx, edi
add edx, 0x6ed9eba1
rol edx, 0xb
add eax, dword [esp + 0x38]
mov edi, esi
xor edi, ecx
xor edi, edx
add eax, edi
add eax, 0x6ed9eba1
add ecx, dword [esp + 0x14]
rol eax, 0xf
mov edi, edx
xor edi, esi
xor edi, eax
add ecx, edi
add ecx, 0x6ed9eba1
add esi, dword [esp + 0x3c]
rol ecx, 3
mov edi, eax
xor edi, edx
xor edi, ecx
add esi, edi
add esi, 0x6ed9eba1
add edx, dword [esp + 0x18]
rol esi, 9
mov edi, esi
xor edi, ecx
add dword [esp + 0x30], ecx
xor ecx, eax
xor ecx, esi
add ecx, edx
add ecx, 0x6ed9eba1
add eax, dword [esp + 0x2c]
rol ecx, 0xb
xor edi, ecx
add eax, edi
add eax, 0x6ed9eba1
rol eax, 0xf
add dword [esp + 0xc], eax
add dword [esp + 0x20], ecx
add dword [esp + 0x28], esi
add dword [esp + 0x1c], 0x20
mov ecx, dword [esp + 0x68]
inc ecx
mov eax, dword [esp + 0x64]
cmp eax, 0x20
lea edx, [eax - 0x20]
mov ebx, dword [ebp + 0x10]
jle 0x434d56
cmp edx, 0x20
mov eax, 0x20
cmovl eax, edx
mov dword [esp + 0x10], eax
mov dword [esp + 0x68], ecx
mov eax, ecx
shl eax, 5
mov ecx, ebx
sub ecx, eax
cmp ecx, 0x20
mov eax, 0x20
cmovge ecx, eax
mov eax, edx
shl eax, 8
mov dword [esp + 0x64], edx
or eax, edx
mov ebx, eax
shl ebx, 0x10
or ebx, eax
mov esi, 8
mov eax, 0
mov dword [esp + 0x18], ebx
lea edx, [esp + 0x40]
mov dword [esp + 0x14], edx
mov dword [esp + 0x2c], ecx
cmp ecx, 1
jne 0x434860
test byte [esp + 0x2c], 1
je 0x4348e2
mov edx, esi
mov ecx, dword [esp + 0x1c]
movsx ecx, byte [ecx + eax]
movzx esi, cl
cmp byte [esp + 0x24], 0
cmovne esi, ecx
shl ebx, 8
add ebx, esi
not eax
test al, 3
jne 0x4348e0
mov eax, dword [esp + 0x14]
mov dword [eax], ebx
add eax, 4
mov dword [esp + 0x14], eax
mov esi, edx
dec esi
mov ebx, dword [esp + 0x18]
jmp 0x4348e2
and dword [esp + 0x10], 0xfffffffe
mov esi, 8
xor eax, eax
mov edi, dword [esp + 0x18]
lea edx, [esp + 0x40]
mov dword [esp + 0x14], edx
jmp 0x4348a3
mov ecx, dword [esp + 0x14]
mov dword [ecx], ebx
add ecx, 4
mov dword [esp + 0x14], ecx
mov esi, edx
dec esi
mov ebx, dword [esp + 0x18]
add eax, 2
mov edi, ebx
cmp dword [esp + 0x10], eax
je 0x43480a
mov edx, esi
mov esi, dword [esp + 0x1c]
movsx ecx, byte [esi + eax]
movzx ebx, cl
shl edi, 8
cmp byte [esp + 0x24], 0
cmovne ebx, ecx
movsx ecx, byte [esi + eax + 1]
movzx esi, cl
cmovne esi, ecx
add ebx, edi
shl ebx, 8
add ebx, esi
lea ecx, [eax + 1]
not ecx
test cl, 3
je 0x434880
mov esi, edx
jmp 0x434894
mov esi, edx
test esi, esi
mov edx, dword [esp + 0x14]
jle 0x434530
mov dword [edx], ebx
cmp esi, 1
je 0x434530
mov ebx, esi
sub ebx, 2
mov eax, 0
cmovb ebx, eax
cmp ebx, 7
jae 0x434914
mov eax, dword [esp + 0x18]
jmp 0x4349b5
lea eax, [ebx + 1]
mov dword [esp + 0x10], eax
movd xmm0, dword [esp + 0x18]
pshufd xmm0, xmm0, 0
add ebx, 0xfffffff9
mov edi, ebx
shr edi, 3
inc edi
mov ecx, edi
and ecx, 3
xor eax, eax
cmp ebx, 0x18
jb 0x434978
and edi, 0xfffffffc
xor eax, eax
movdqu xmmword [edx + eax*4 + 4], xmm0
movdqu xmmword [edx + eax*4 + 0x14], xmm0
movdqu xmmword [edx + eax*4 + 0x24], xmm0
movdqu xmmword [edx + eax*4 + 0x34], xmm0
movdqu xmmword [edx + eax*4 + 0x44], xmm0
movdqu xmmword [edx + eax*4 + 0x54], xmm0
movdqu xmmword [edx + eax*4 + 0x64], xmm0
movdqu xmmword [edx + eax*4 + 0x74], xmm0
add eax, 0x20
add edi, 0xfffffffc
jne 0x434940
mov edi, dword [esp + 0x10]
and edi, 0xfffffff8
test ecx, ecx
je 0x4349a2
lea eax, [edx + eax*4]
add eax, 0x14
shl ecx, 5
xor ebx, ebx
nop
movdqu xmmword [eax + ebx - 0x10], xmm0
movdqu xmmword [eax + ebx], xmm0
add ebx, 0x20
cmp ecx, ebx
jne 0x434990
cmp dword [esp + 0x10], edi
mov eax, dword [esp + 0x18]
je 0x434530
sub esi, edi
lea edx, [edx + edi*4]
inc esi
add edx, 4
nop dword [eax]
mov dword [edx], eax
dec esi
add edx, 4
cmp esi, 2
ja 0x4349c0
jmp 0x434530
mov dword [esp + 0x24], 0
test ebx, ebx
jle 0x434c86
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0xc], eax
xor ecx, ecx
mov edx, ebx
cmp edx, 0x10
mov eax, 0x10
cmovl eax, edx
mov dword [esp + 0x14], eax
mov dword [esp + 0x2c], ecx
mov eax, ecx
shl eax, 4
sub ebx, eax
cmp ebx, 0x10
mov eax, 0x10
cmovge ebx, eax
mov eax, edx
shl eax, 8
mov dword [esp + 0x34], edx
or eax, edx
mov ecx, eax
shl ecx, 0x10
or ecx, eax
mov dword [esp + 0x10], 4
mov edx, 0
mov dword [esp + 0x18], ecx
mov eax, ecx
lea edi, [esp + 0x40]
mov dword [esp + 0x28], ebx
cmp ebx, 1
jne 0x434ab0
test byte [esp + 0x28], 1
je 0x434a7a
mov ecx, dword [esp + 0x1c]
movsx ecx, byte [ecx + edx]
movzx esi, cl
cmp byte [esp + 0x24], 0
cmovne esi, ecx
shl eax, 8
add eax, esi
not edx
test dl, 3
jne 0x434a7a
mov dword [edi], eax
add edi, 4
dec dword [esp + 0x10]
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x10]
test ecx, ecx
mov edx, dword [esp + 0x18]
jle 0x434bdb
mov dword [edi], eax
cmp ecx, 1
je 0x434bdb
mov eax, ecx
sub eax, 2
mov ecx, 0
cmovb eax, ecx
cmp eax, 7
jae 0x434b20
mov ecx, dword [esp + 0x10]
jmp 0x434bc3
and dword [esp + 0x14], 0xfffffffe
mov dword [esp + 0x10], 4
xor edx, edx
mov ecx, dword [esp + 0x18]
lea edi, [esp + 0x40]
jmp 0x434adf
add edx, 2
mov ecx, eax
cmp dword [esp + 0x14], edx
je 0x434a47
mov esi, dword [esp + 0x1c]
movsx ebx, byte [esi + edx]
movzx eax, bl
shl ecx, 8
cmp byte [esp + 0x24], 0
cmovne eax, ebx
movsx ebx, byte [esi + edx + 1]
movzx esi, bl
cmovne esi, ebx
add eax, ecx
shl eax, 8
add eax, esi
lea ecx, [edx + 1]
not ecx
test cl, 3
jne 0x434ad0
mov dword [edi], eax
add edi, 4
dec dword [esp + 0x10]
mov eax, dword [esp + 0x18]
jmp 0x434ad0
lea ebx, [eax + 1]
movd xmm0, edx
pshufd xmm0, xmm0, 0
add eax, 0xfffffff9
mov esi, eax
shr esi, 3
inc esi
mov edx, esi
and edx, 3
xor ecx, ecx
cmp eax, 0x18
jb 0x434b88
and esi, 0xfffffffc
xor ecx, ecx
nop word cs:[eax + eax]
movdqu xmmword [edi + ecx*4 + 4], xmm0
movdqu xmmword [edi + ecx*4 + 0x14], xmm0
movdqu xmmword [edi + ecx*4 + 0x24], xmm0
movdqu xmmword [edi + ecx*4 + 0x34], xmm0
movdqu xmmword [edi + ecx*4 + 0x44], xmm0
movdqu xmmword [edi + ecx*4 + 0x54], xmm0
movdqu xmmword [edi + ecx*4 + 0x64], xmm0
movdqu xmmword [edi + ecx*4 + 0x74], xmm0
add ecx, 0x20
add esi, 0xfffffffc
jne 0x434b50
mov eax, ebx
and eax, 0xfffffff8
test edx, edx
je 0x434bb2
lea ecx, [edi + ecx*4]
add ecx, 0x14
shl edx, 5
xor esi, esi
nop dword [eax]
movdqu xmmword [ecx + esi - 0x10], xmm0
movdqu xmmword [ecx + esi], xmm0
add esi, 0x20
cmp edx, esi
jne 0x434ba0
cmp ebx, eax
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x10]
je 0x434bdb
sub ecx, eax
lea edi, [edi + eax*4]
inc ecx
add edi, 4
nop word [eax + eax]
mov dword [edi], edx
dec ecx
add edi, 4
cmp ecx, 2
ja 0x434bd0
mov eax, dword [esp + 0x40]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0x18], eax
mov esi, 0x9e3779b9
mov edi, 0xfffffff0
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x28], eax
mov edx, dword [esp + 0xc]
mov eax, dword [esp + 0x20]
nop dword [eax]
mov ecx, eax
shl eax, 4
add eax, dword [esp + 0x14]
lea ebx, [ecx + esi]
xor ebx, eax
mov eax, ecx
shr eax, 5
add eax, dword [esp + 0x10]
xor eax, ebx
add edx, eax
mov eax, edx
shl eax, 4
add eax, dword [esp + 0x18]
lea ebx, [esi + edx]
xor ebx, eax
mov eax, edx
shr eax, 5
add eax, dword [esp + 0x28]
xor eax, ebx
add eax, ecx
add esi, 0x9e3779b9
inc edi
jne 0x434c10
add dword [esp + 0xc], edx
add dword [esp + 0x20], eax
add dword [esp + 0x1c], 0x10
mov ecx, dword [esp + 0x2c]
inc ecx
mov eax, dword [esp + 0x34]
cmp eax, 0x10
lea edx, [eax - 0x10]
mov ebx, dword [ebp + 0x10]
jg 0x4349f0
jmp 0x434d56
mov dword [esp + 0xc], 0x2547fc5a
jmp 0x434d56
mov ecx, dword [esp + 0x30]
mov dword [esp + 0xc], ecx
mov dword [esp + 0x20], eax
jmp 0x434d56
mov edx, ebx
and edx, 0xfffffffe
mov dword [esp + 0xc], 0x12a3fe2d
mov ecx, 0x37abe8f9
mov eax, dword [ebp + 0xc]
jmp 0x434ceb
mov dword [esp + 0x14], eax
mov edi, dword [esp + 0x1c]
movsx esi, byte [edi]
inc edi
mov dword [esp + 0x1c], edi
imul esi, esi, 0x6d22f5
xor esi, ecx
mov edi, esi
mov eax, dword [esp + 0xc]
add edi, eax
lea eax, [esi + eax - 0x7fffffff]
cmovns eax, edi
mov dword [esp + 0xc], eax
add edx, 0xfffffffe
mov eax, dword [esp + 0x14]
je 0x4344d7
cmp byte [esp + 0x24], 0
je 0x434d00
mov edi, dword [esp + 0x1c]
movsx esi, byte [edi]
inc edi
mov dword [esp + 0x1c], edi
jmp 0x434d04
movzx esi, byte [eax]
inc eax
imul esi, esi, 0x6d22f5
xor esi, dword [esp + 0xc]
mov edi, esi
add edi, ecx
lea ecx, [esi + ecx - 0x7fffffff]
cmovns ecx, edi
cmp byte [esp + 0x24], 0
jne 0x434cb0
movzx esi, byte [eax]
inc eax
mov dword [esp + 0x14], eax
jmp 0x434cc0
movzx eax, byte [eax]
imul eax, eax, 0x6d22f5
xor eax, dword [esp + 0xc]
lea edx, [eax + ecx]
add edx, 0x80000001
add eax, ecx
cmovns edx, eax
mov dword [esp + 0xc], edx
mov eax, dword [esp + 0xc]
add eax, eax
mov dword [esp + 0xc], eax
mov ecx, dword [esp + 0xc]
and ecx, 0xfffffffe
mov eax, dword [ebp + 0x18]
mov dword [eax], ecx
xor eax, eax
mov edx, dword [ebp + 0x1c]
test edx, edx
je 0x434d71
mov ecx, dword [esp + 0x20]
mov dword [edx], ecx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret