Function at 0x298b020
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xa8
movsd xmm0, qword [0x29bd7d0]
movsd qword [esp + 0x30], xmm0
lea edx, [esp + 0x38]
mov byte [esp + 0x38], 0xd4
mov dword [esp + 0x3d], 0
mov dword [esp + 0x39], 0
mov dword [esp + 0x44], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0xc], 0
mov eax, dword [esp + 0xc]
cmp eax, 0x17
ja 0x298b0d5
nop word [eax + eax]
mov esi, dword [esp + 0xc]
mov eax, dword [esp + 0xc]
movzx edi, byte [esp + eax + 0x30]
lea eax, [esi + 0x16b6f9ba]
lea ecx, [esi + edi]
add ecx, 0x16b6f9ba
add esi, 0xba
or esi, eax
and esi, edi
and eax, edi
add eax, esi
mov esi, eax
xor esi, ecx
not eax
and eax, ecx
add eax, eax
sub eax, esi
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x18]
add al, 0xea
mov ecx, dword [esp + 0xc]
mov byte [esp + ecx + 0x30], al
inc dword [esp + 0xc]
mov eax, dword [esp + 0xc]
cmp eax, 0x18
jb 0x298b080
lea eax, [esp + 0xc]
lea esi, [esp + 0x30]
mov ebx, esi
mov ecx, 2
mov edi, eax
xchg esi, ebx
rep movsd dword es:[edi], dword [esi]
xchg esi, ebx
lea edi, [esp + 0x14]
xor ecx, ecx
xchg esi, edx
rep movsw word es:[edi], word [esi]
xchg esi, edx
movzx ecx, byte [esp + 0x38]
mov byte [esp + 0x14], cl
movaps xmm0, xmmword [0x29bd7e0]
movups xmmword [esp + 0x30], xmm0
movaps xmm0, xmmword [0x29bd7f0]
movups xmmword [esp + 0x40], xmm0
movaps xmm0, xmmword [0x29bd800]
movups xmmword [esp + 0x50], xmm0
movaps xmm0, xmmword [0x29bd810]
movups xmmword [esp + 0x60], xmm0
movaps xmm0, xmmword [0x29bd820]
movups xmmword [esp + 0x70], xmm0
movaps xmm0, xmmword [0x29bd830]
movups xmmword [esp + 0x80], xmm0
mov dword [esp + 0x90], 0x5352ada2
mov dword [esp + 0x94], 0
mov byte [esp + 0x98], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 0x68
ja 0x298b1c7
nop word [eax + eax]
mov ecx, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 0x30]
lea edi, [ecx + edx]
add edi, 0xe022471e
add ecx, 0xe022471e
and ecx, edx
add ecx, ecx
sub edi, ecx
mov dword [esp + 0x18], edi
mov ecx, dword [esp + 0x18]
mov edx, ecx
xor edx, 0x2d
and ecx, 0x2d
lea ecx, [edx + ecx*2]
inc cl
mov edx, dword [esp]
mov byte [esp + edx + 0x30], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 0x69
jb 0x298b180
mov ecx, dword [ebp + 8]
movsd xmm0, qword [0x29bd840]
movsd qword [esp + 0x18], xmm0
mov word [esp + 0x20], 0x4140
mov dword [esp + 0x26], 0
mov dword [esp + 0x22], 0
mov dword [esp + 0x29], 0
mov dword [esp + 4], 0
mov edx, dword [esp + 4]
cmp edx, 0x14
ja 0x298b273
nop dword [eax + eax]
mov edx, dword [esp + 4]
mov edi, dword [esp + 4]
movzx edi, byte [esp + edi + 0x18]
lea ebx, [edx + edi]
add ebx, 0xfe09454c
add edx, 0x4c
and edx, edi
add edx, edx
mov edi, edx
xor edi, ebx
not edx
and edx, ebx
add edx, edx
sub edx, edi
mov dword [esp], edx
mov edx, dword [esp]
mov edi, edx
xor edi, 0xeb
and edx, 0x6b
lea edx, [edi + edx*2]
inc dl
mov edi, dword [esp + 4]
mov byte [esp + edi + 0x18], dl
mov edx, dword [esp + 4]
mov edi, edx
and edi, 1
xor edx, 1
lea edx, [edx + edi*2]
mov dword [esp + 4], edx
mov edx, dword [esp + 4]
cmp edx, 0x15
jb 0x298b210
lea edx, [esp + 8]
lea edi, [esp + 0x18]
push 0
push edx
push 8
push eax
push esi
push edi
push ecx
call fcn.0298b650
add esp, 0x1c
test al, al
je 0x298b5d8
mov word [esp + 0x30], 0xe4e7
mov byte [esp + 0x32], 0x10
mov dword [esp + 0x37], 0
mov dword [esp + 0x33], 0
mov word [esp + 0x3b], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xc
ja 0x298b324
nop word cs:[eax + eax]
mov eax, dword [esp]
mov ecx, dword [esp]
movzx edx, byte [esp + ecx + 0x30]
lea ecx, [eax + edx]
add ecx, 0x9e52eb53
add eax, 0x9e52eb53
and eax, edx
add eax, eax
mov edx, ecx
not edx
and edx, eax
not eax
and eax, ecx
sub eax, edx
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x18]
mov ecx, eax
or ecx, 0xba
and eax, 0xba
add eax, ecx
inc al
mov ecx, dword [esp]
mov byte [esp + ecx + 0x30], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xd
jb 0x298b2d0
xor ecx, ecx
mov eax, dword [esp + 8]
nop word [eax + eax]
movzx edx, byte [eax + ecx]
mov dh, byte [esp + ecx + 0x30]
test dl, dl
je 0x298b341
inc ecx
cmp dl, dh
je 0x298b330
mov bl, 1
cmp dl, dh
je 0x298b5fb
movsd xmm0, qword [0x29bd850]
movsd qword [esp + 0x30], xmm0
mov dword [esp + 0x38], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xb
ja 0x298b3c1
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x30]
lea edx, [eax - 0x4ed4180d]
mov edi, ecx
not edi
or edi, edx
lea edx, [ecx + edi]
inc edx
lea edi, [eax + 0xf3]
and edi, ecx
mov ebx, edx
and ebx, edi
xor edi, edx
add eax, ecx
add eax, 0xb12be7f3
lea ecx, [edi + ebx*2]
sub eax, ecx
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x18]
add al, 0x5b
mov ecx, dword [esp]
mov byte [esp + ecx + 0x30], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xc
jb 0x298b370
mov eax, dword [esp + 8]
movzx edx, byte [esp + 0x30]
mov ecx, eax
test dl, dl
je 0x298b401
mov edi, esi
mov ecx, eax
mov ebx, eax
nop word cs:[eax + eax]
mov dh, byte [ebx]
test dh, dh
je 0x298b5dc
inc ebx
inc edi
cmp dh, dl
lea edx, [ecx + 1]
cmovne ebx, edx
cmovne ecx, edx
cmovne edi, esi
movzx edx, byte [edi]
test dl, dl
jne 0x298b3e0
test ecx, ecx
je 0x298b5dc
movaps xmm0, xmmword [0x29bd860]
movups xmmword [esp + 0x30], xmm0
mov dword [esp + 0x40], 0x537296a9
lea edx, [esp + 0x44]
mov dword [esp + 0x44], 0
mov word [esp + 0x48], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0x19
ja 0x298b47b
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x30]
lea esi, [eax + ecx]
add esi, 0x9891048b
add eax, 0x9891048b
and eax, ecx
add eax, eax
sub esi, eax
mov dword [esp + 0x18], esi
mov eax, dword [esp + 0x18]
add al, 0x33
mov ecx, dword [esp]
mov byte [esp + ecx + 0x30], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0x1a
jb 0x298b440
lea eax, [esp + 0x30]
mov esi, eax
mov ecx, 5
lea ebx, [esp + 0x18]
mov edi, ebx
xchg esi, esi
rep movsd dword es:[edi], dword [esi]
xchg esi, esi
lea edi, [esp + 0x2c]
xor ecx, ecx
xchg esi, edx
rep movsw word es:[edi], word [esi]
xchg esi, edx
mov esi, dword [esp + 8]
movzx edx, byte [esp + 0x18]
test dl, dl
je 0x298b4d1
mov ecx, ebx
mov edi, esi
mov dh, byte [edi]
test dh, dh
je 0x298b5e0
inc edi
inc ecx
cmp dh, dl
lea edx, [esi + 1]
cmovne edi, edx
cmovne esi, edx
cmovne ecx, ebx
movzx edx, byte [ecx]
test dl, dl
jne 0x298b4b0
test esi, esi
je 0x298b5e0
mov word [esp + 0x30], 0x6714
mov byte [esp + 0x32], 0x38
mov dword [esp + 0x33], 0
mov dword [esp + 0x36], 0
mov dword [esp + 4], 0
mov ecx, dword [esp + 4]
cmp ecx, 9
ja 0x298b55e
nop word cs:[eax + eax]
mov ecx, dword [esp + 4]
mov edx, dword [esp + 4]
movzx edx, byte [esp + edx + 0x30]
lea edi, [ecx + 0x4fd6e427]
and edi, edx
add ecx, edx
add ecx, 0x4fd6e427
add edi, edi
sub ecx, edi
mov dword [esp], ecx
mov ecx, dword [esp]
mov edx, ecx
or edx, 0xee
and ecx, 0xee
add ecx, edx
inc cl
mov edx, dword [esp + 4]
mov byte [esp + edx + 0x30], cl
inc dword [esp + 4]
mov ecx, dword [esp + 4]
cmp ecx, 0xa
jb 0x298b510
movzx ecx, byte [esp + 0x30]
test cl, cl
je 0x298b5e4
add esi, 0x13
mov edx, eax
mov edi, esi
mov ebx, esi
mov ch, byte [ebx]
test ch, ch
je 0x298b5e0
inc ebx
inc edx
cmp ch, cl
lea ecx, [edi + 1]
cmovne ebx, ecx
cmovne edi, ecx
cmovne edx, eax
movzx ecx, byte [edx]
test cl, cl
jne 0x298b570
test edi, edi
je 0x298b5e0
mov byte [0x29c95f0], 1
mov dword [esp + 0x30], 0
mov ebx, 0x29c95f2
cmp edi, esi
jbe 0x298b5f0
cmp byte [esi], 0
je 0x298b5f0
lea eax, [esp + 0x30]
push eax
push edi
push esi
call fcn.02990e90
add esp, 0xc
movzx ecx, word [esp + 0x30]
mov word [ebx], cx
add ebx, 2
cmp ebx, 0x29c97f0
jae 0x298b5f0
add esi, eax
cmp esi, edi
jb 0x298b5a9
jmp 0x298b5f0
xor ebx, ebx
jmp 0x298b604
xor ebx, ebx
jmp 0x298b5fb
xor ebx, ebx
jmp 0x298b5f7
mov byte [0x29c95f0], 1
mov ebx, 0x29c95f2
mov word [ebx], 0
mov bl, 1
mov eax, dword [esp + 8]
push eax
call fcn.029b5f10
add esp, 4
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret