Function at 0x29a0ea0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x48
mov dword [esp + 0x14], 0
adc al, 0
add byte [eax], al
add bh, al
inc esp
and al, 0x18
dec edi
dec esi
inc ecx
inc eax
mov dword [esp + 0x1c], 0
mov word [esp + 0x20], 0
mov dword [esp + 4], 0
add byte [eax], al
add byte [eax], al
mov eax, dword [esp + 4]
cmp eax, 9
ja 0x29a0f1c
nop dword [eax]
mov eax, dword [esp + 4]
mov ecx, dword [esp + 4]
movzx ecx, byte [esp + ecx + 0x18]
lea edx, [eax + 0x76]
and edx, ecx
add eax, ecx
add edx, edx
sub eax, edx
add eax, 0x6eb5f176
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0xc6
mov ecx, dword [esp + 4]
mov byte [esp + ecx + 0x18], al
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 0xa
jb case.0x29a5eb4.22
mov eax, dword [esp + 0x18]
mov ecx, dword [0x29ca800]
test ecx, ecx
je 0x29a0f83
xor edx, edx
mov esi, dword [0x29ca804]
nop word cs:[eax + eax]
cmp dword [esi + edx*8], 0xe4aa2089
je 0x29a0f50
inc edx
cmp ecx, edx
jne 0x29a0f40
jmp 0x29a0f83
mov ecx, dword [esi + edx*8 + 4]
cmp ecx, eax
je 0x29a0f83
mov eax, dword [0x29ca808]
sub esp, 0x1c
lea edx, [esp + 0x30]
mov dword [esp + 0x18], edx
movaps xmm0, xmmword [0x29bea00]
movups xmmword [esp + 8], xmm0
mov dword [esp + 4], eax
mov dword [esp], ecx
call fcn.029b7d60
add esp, 0x1c
cmp eax, 0xc0000004
jne 0x29a1042
push dword [esp + 0x14]
call fcn.029b5e10
add esp, 4
mov edi, eax
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x18], 0x40414e4f
mov dword [esp + 0x1c], 0
mov word [esp + 0x20], 0
mov dword [esp + 4], 0
mov eax, dword [esp + 4]
cmp eax, 9
ja 0x29a100c
nop dword [eax + eax]
mov eax, dword [esp + 4]
mov edx, dword [esp + 4]
movzx edx, byte [esp + edx + 0x18]
lea esi, [eax + 0x76]
and esi, edx
add eax, edx
add esi, esi
sub eax, esi
add eax, 0x6eb5f176
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0xc6
mov edx, dword [esp + 4]
mov byte [esp + edx + 0x18], al
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 0xa
jb 0x29a0fd0
mov eax, dword [esp + 0x18]
mov edx, dword [0x29ca800]
test edx, edx
je 0x29a106a
mov ebx, edi
xor esi, esi
mov edi, dword [0x29ca804]
nop word cs:[eax + eax]
cmp dword [edi + esi*8], 0xe4aa2089
je 0x29a1049
inc esi
cmp edx, esi
jne 0x29a1030
mov edi, ebx
jmp 0x29a106a
xor ebx, ebx
jmp 0x29a1329
mov edx, dword [edi + esi*8 + 4]
cmp edx, eax
mov edi, ebx
je 0x29a106a
push 0
push ecx
push edi
push 5
push 4
push dword [0x29ca808]
push edx
call fcn.029b7d60
add esp, 0x1c
xor ebx, ebx
test eax, eax
js 0x29a1320
mov eax, dword [edi]
mov ecx, edi
nop dword [eax + eax]
lea edx, [ecx + eax]
mov eax, dword [ecx + eax]
dec ebx
mov ecx, edx
test eax, eax
jne 0x29a1080
lea eax, [ebx - 1]
and eax, 0x104
neg ebx
mov ecx, ebx
and ecx, 0xfffffefb
imul ecx, eax
mov eax, ebx
and eax, 0x104
or ebx, 0x104
imul ebx, eax
add ebx, ecx
lea eax, [ebx + ebx]
test ebx, ebx
mov ecx, 0xffffffff
cmovns ecx, eax
push ecx
call fcn.02989550
add esp, 4
mov ecx, eax
mov edx, dword [edi]
mov dword [esp + 8], edi
mov eax, edi
mov dword [esp + 0x10], ecx
mov edi, ecx
jmp 0x29a10ee
mov word [edi], 0xa
add edi, 2
mov edx, dword [eax]
test edx, edx
je 0x29a1113
mov ecx, dword [eax + edx + 0x3c]
add eax, edx
movzx edx, word [ecx]
test dx, dx
je 0x29a10e0
add ecx, 2
nop
mov word [edi], dx
add edi, 2
movzx edx, word [ecx]
add ecx, 2
test dx, dx
jne 0x29a1100
jmp 0x29a10e0
mov ecx, dword [esp + 0x10]
cmp edi, ecx
je 0x29a124d
add byte [eax], al
mov word [edi], 0
movzx edx, word [ecx]
xor ebx, ebx
test dx, dx
je 0x29a1258
add byte [eax], al
mov eax, 1
nop word [eax + eax]
cmp ecx, edi
jae 0x29a116c
movzx esi, dx
xor edx, edx
cmp esi, 0x800
setb dl
xchg edx, eax
ret 0xf283
add eax, dword [ecx + 0x80fe]
add byte [edi], cl
inc edx
rol byte [ecx], 1
ror dword [edi], cl
mov bh, 0x51
add al, byte [ebx - 0x7a99fd3f]
sal byte [ebp - 0x2c], cl
lea esi, [ebx + 1]
push esi
call fcn.02989550
add esp, 4
test ebx, ebx
mov dword [esp + 0x34], eax
jle 0x29a126a
lea ecx, [eax + ebx]
mov dword [esp + 0x40], ecx
add esi, eax
mov dword [esp + 0x3c], esi
mov esi, eax
mov edx, dword [esp + 0x10]
mov dword [esp + 0x38], ebx
jmp 0x29a11b6
mov byte [esi], cl
mov eax, 1
add edx, 2
add esi, eax
cmp esi, dword [esp + 0x40]
jae 0x29a126c
cmp edx, edi
jae 0x29a126c
movzx ecx, word [edx]
test cx, cx
je 0x29a126c
cmp cx, 0x7f
jbe 0x29a11a0
mov eax, esi
not eax
add eax, dword [esp + 0x3c]
cmp eax, 2
jb 0x29a1210
movzx ebx, cx
cmp ebx, 0x7ff
mov ebx, dword [esp + 0x38]
ja 0x29a1210
mov eax, ecx
shr eax, 6
add al, 0xc0
mov byte [esi], al
mov eax, ecx
not eax
or eax, 0x3f
add eax, ecx
add al, 0x81
mov byte [esi + 1], al
mov eax, 2
jmp 0x29a11a7
cmp eax, 3
mov eax, 0
jb 0x29a11a7
movzx eax, cx
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x30]
shr eax, 0xc
or al, 0xe0
mov byte [esi], al
mov eax, dword [esp + 0x30]
shr eax, 6
and al, 0x3f
or al, 0x80
mov byte [esi + 1], al
and cl, 0x3f
or cl, 0x80
mov byte [esi + 2], cl
mov eax, 3
jmp 0x29a11a7
xor ebx, ebx
mov edi, dword [esp + 8]
jmp 0x29a1317
push 1
call fcn.02989550
add esp, 4
mov esi, eax
mov dword [esp + 0x34], eax
jmp 0x29a126c
mov esi, eax
mov edi, dword [esp + 8]
mov byte [esi], 0
movsd xmm0, qword [0x29bea10]
movsd qword [esp + 0x18], xmm0
mov dword [esp + 0x20], 0xe3e4afe3
mov word [esp + 0x24], 0xa5e6
mov dword [esp + 0x26], 0
mov dword [esp + 4], 0
mov eax, dword [esp + 4]
cmp eax, 0x11
ja 0x29a12f5
nop dword [eax]
mov eax, dword [esp + 4]
mov ecx, dword [esp + 4]
movzx ecx, byte [esp + ecx + 0x18]
mov edx, eax
and edx, 0xcbbcb213
xor eax, 0x4bbcb213
lea eax, [eax + edx*2]
lea edx, [eax + ecx]
and eax, ecx
add eax, eax
sub edx, eax
mov dword [esp + 0xc], edx
mov eax, dword [esp + 0xc]
add al, 0x7b
mov ecx, dword [esp + 4]
mov byte [esp + ecx + 0x18], al
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 0x12
jb 0x29a12b0
lea eax, [esp + 0x18]
mov ecx, dword [ebp + 8]
push ebx
mov esi, dword [esp + 0x38]
push esi
push eax
call fcn.02989e60
mov ebx, eax
push esi
call fcn.02989560
add esp, 4
mov ecx, dword [esp + 0x10]
push ecx
call fcn.02989560
add esp, 4
push edi
call fcn.029b5f10
add esp, 4
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret