Function at 0x29a3570
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x160
movaps xmm0, xmmword [0x29bebb0]
movups xmmword [esp + 0x30], xmm0
mov dword [esp + 0x40], 0x1314153d
lea eax, [esp + 0x44]
mov dword [esp + 0x48], 0
mov dword [esp + 0x44], 0
mov dword [esp + 0x94], 0
mov ecx, dword [esp + 0x94]
cmp ecx, 0x1b
ja 0x29a360f
nop
mov ecx, dword [esp + 0x94]
mov edx, dword [esp + 0x94]
movzx edx, byte [esp + edx + 0x30]
lea esi, [ecx - 0x7f30a2ff]
inc ecx
and ecx, edx
or esi, edx
sub esi, ecx
mov dword [esp + 0xc0], esi
mov ecx, dword [esp + 0xc0]
add cl, 0xf9
mov edx, dword [esp + 0x94]
mov byte [esp + edx + 0x30], cl
inc dword [esp + 0x94]
mov ecx, dword [esp + 0x94]
cmp ecx, 0x1c
jb 0x29a35c0
lea esi, [esp + 0x132]
lea edx, [esp + 0x30]
mov ecx, 5
mov edi, esi
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
lea edi, [esp + 0x146]
xor ecx, ecx
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
lea edi, [esp + 0x84]
push edi
push 0
push 0
push 9
push esi
push 0
call dword [0x29c97f4]
mov ebx, dword [esp + 0x84]
lea eax, [ebx + ebx]
test ebx, ebx
mov ecx, 0xffffffff
cmovns ecx, eax
push ecx
call fcn.02989550
add esp, 4
push edi
push ebx
mov dword [esp + 0x78], eax
push eax
push 9
push esi
push 0
call dword [0x29c97f4]
movaps xmm0, xmmword [0x29bebc0]
movups xmmword [esp + 0x30], xmm0
lea edx, [esp + 0x40]
mov dword [esp + 0x40], 0
mov word [esp + 0x44], 0
mov dword [esp + 0x94], 0
mov eax, dword [esp + 0x94]
cmp eax, 0x15
ja 0x29a371b
nop word cs:[eax + eax]
mov eax, dword [esp + 0x94]
mov ecx, dword [esp + 0x94]
movzx ecx, byte [esp + ecx + 0x30]
mov esi, eax
xor esi, 0x3350349c
and eax, 0x3350349c
lea eax, [esi + eax*2]
mov esi, eax
and esi, ecx
add eax, ecx
add esi, esi
sub eax, esi
mov dword [esp + 0xc0], eax
mov eax, dword [esp + 0xc0]
add al, 0xbc
mov ecx, dword [esp + 0x94]
mov byte [esp + ecx + 0x30], al
inc dword [esp + 0x94]
mov eax, dword [esp + 0x94]
cmp eax, 0x16
jb 0x29a36c0
lea edi, [esp + 0x122]
lea esi, [esp + 0x30]
mov ecx, 4
xchg esi, esi
rep movsd dword es:[edi], dword [esi]
xchg esi, esi
lea edi, [esp + 0x132]
xor ecx, ecx
xchg esi, edx
rep movsw word es:[edi], word [esi]
xchg esi, edx
movaps xmm0, xmmword [0x29bebd0]
movups xmmword [esp + 0x30], xmm0
movsd xmm0, qword [0x29bebe0]
movsd qword [esp + 0x40], xmm0
mov dword [esp + 0x48], 0xaba8a9d5
lea esi, [esp + 0x4c]
mov dword [esp + 0x4c], 0
mov dword [esp + 0x94], 0
mov ecx, dword [esp + 0x94]
cmp ecx, 0x1f
ja 0x29a37e6
nop word cs:[eax + eax]
mov ecx, dword [esp + 0x94]
mov edx, dword [esp + 0x94]
movzx edx, byte [esp + edx + 0x30]
lea edi, [ecx + 0x93]
add ecx, edx
and edi, edx
add edi, edi
sub ecx, edi
add ecx, 0x7143b793
mov dword [esp + 0xc0], ecx
mov ecx, dword [esp + 0xc0]
add cl, 0xfb
mov edx, dword [esp + 0x94]
mov byte [esp + edx + 0x30], cl
inc dword [esp + 0x94]
mov ecx, dword [esp + 0x94]
cmp ecx, 0x20
jb 0x29a3790
lea edx, [esp + 0x94]
lea ebx, [esp + 0x30]
mov ecx, 7
mov edi, edx
xchg esi, ebx
rep movsd dword es:[edi], dword [esi]
xchg esi, ebx
lea edi, [esp + 0xb0]
mov dword [esp + 0x78], 0
xor ecx, ecx
xchg esi, esi
rep movsw word es:[edi], word [esi]
xchg esi, esi
movaps xmm0, xmmword [0x29bebf0]
movups xmmword [esp + 0x30], xmm0
mov dword [esp + 0x40], 0xfba2e5b2
lea ebx, [esp + 0x44]
mov word [esp + 0x44], 0xf9fa
mov dword [esp + 0x46], 0
mov dword [esp + 0xf0], 0
mov ecx, dword [esp + 0xf0]
cmp ecx, 0x19
ja 0x29a38b6
nop word cs:[eax + eax]
mov ecx, dword [esp + 0xf0]
mov esi, dword [esp + 0xf0]
movzx esi, byte [esp + esi + 0x30]
lea edi, [ecx - 0xd67c943]
and edi, esi
add ecx, esi
add ecx, 0xf29836bd
add edi, edi
sub ecx, edi
mov dword [esp + 0xc0], ecx
mov ecx, dword [esp + 0xc0]
add cl, 0xd5
mov esi, dword [esp + 0xf0]
mov byte [esp + esi + 0x30], cl
inc dword [esp + 0xf0]
mov ecx, dword [esp + 0xf0]
cmp ecx, 0x1a
jb 0x29a3860
lea esi, [esp + 0x146]
lea eax, [esp + 0x30]
mov ecx, 5
mov edi, esi
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
lea edi, [esp + 0x15a]
mov ecx, 1
xchg esi, ebx
rep movsw word es:[edi], word [esi]
xchg esi, ebx
lea eax, [esp + 0x122]
mov dword [esp + 0x114], eax
mov dword [esp + 0x118], edx
mov dword [esp + 0x11c], esi
mov eax, dword [esp + 0x70]
add eax, 2
mov dword [esp + 0x88], eax
xor ebx, ebx
jmp 0x29a391d
mov eax, dword [0x29c490c]
mov ecx, 0xc50c6208
xor ecx, dword [0x29c4914]
add eax, ecx
inc eax
jmp eax