Function at 0x2989ee0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x78
mov eax, dword [ebp + 8]
add eax, dword [ecx + 0x60]
mov word [esp + 0x18], 0xdba1
mov byte [esp + 0x1a], 0xd0
mov dword [esp + 0x1b], 0
mov word [esp + 0x1f], 0
mov dword [esp + 8], 0
mov edx, dword [esp + 8]
cmp edx, 8
ja 0x2989f5f
nop
mov edx, dword [esp + 8]
mov esi, dword [esp + 8]
movzx esi, byte [esp + esi + 0x18]
lea edi, [edx + esi]
add edx, 0x63
and edx, esi
add edx, edx
sub edi, edx
add edi, 0x19b4ff63
mov dword [esp + 0x28], edi
mov edx, dword [esp + 0x28]
add dl, 0x4b
mov esi, dword [esp + 8]
mov byte [esp + esi + 0x18], dl
inc dword [esp + 8]
mov edx, dword [esp + 8]
cmp edx, 9
jb 0x2989f20
mov dword [esp + 8], 0x50525648
mov word [esp + 0xc], 0x6154
mov dword [esp + 0x12], 0
mov dword [esp + 0xe], 0
mov word [esp + 0x16], 0
mov dword [esp], 0
mov edx, dword [esp]
cmp edx, 0xf
ja 0x2989fe2
nop word cs:[eax + eax]
mov edx, dword [esp]
mov esi, dword [esp]
movzx esi, byte [esp + esi + 8]
mov edi, edx
and edi, 0x29efdf1
xor edx, 0x829efdf1
lea edx, [edx + edi*2]
lea edi, [edx + esi]
and edx, esi
add edx, edx
sub edi, edx
mov dword [esp + 0x28], edi
mov edx, dword [esp + 0x28]
add dl, 0x69
mov esi, dword [esp]
mov byte [esp + esi + 8], dl
inc dword [esp]
mov edx, dword [esp]
cmp edx, 0x10
jb 0x2989fa0
movaps xmm0, xmmword [0x29bd510]
movups xmmword [esp + 0x28], xmm0
movaps xmm0, xmmword [0x29bd520]
movups xmmword [esp + 0x38], xmm0
movaps xmm0, xmmword [0x29bd530]
movups xmmword [esp + 0x48], xmm0
movsd xmm0, qword [0x29bd540]
movsd qword [esp + 0x58], xmm0
mov dword [esp + 0x60], 0xad576069
mov byte [esp + 0x64], 0x88
mov dword [esp + 0x69], 0
mov dword [esp + 0x65], 0
mov dword [esp + 0x6c], 0
mov dword [esp + 4], 0
mov edx, dword [esp + 4]
cmp edx, 0x47
ja 0x298a0be
nop word [eax + eax]
mov edx, dword [esp + 4]
mov esi, dword [esp + 4]
movzx edi, byte [esp + esi + 0x28]
lea ebx, [edx - 0x1bbf8c62]
lea esi, [edx + edi]
add esi, 0xe440739e
and ebx, edi
add edx, 0x9e
and edx, edi
add edx, ebx
mov edi, edx
xor edi, esi
not edx
and edx, esi
add edx, edx
sub edx, edi
mov dword [esp], edx
mov edx, dword [esp]
mov esi, edx
xor esi, 0xad
and edx, 0x2d
lea edx, [esi + edx*2]
inc dl
mov esi, dword [esp + 4]
mov byte [esp + esi + 0x28], dl
mov edx, dword [esp + 4]
mov esi, edx
and esi, 1
xor edx, 1
lea edx, [edx + esi*2]
mov dword [esp + 4], edx
mov edx, dword [esp + 4]
cmp edx, 0x48
jb 0x298a050
mov esi, dword [ebp + 0xc]
movzx ebx, byte [esp + 0x28]
mov edx, eax
test bl, bl
je 0x298a0eb
lea edi, [esp + 0x29]
mov edx, eax
nop word cs:[eax + eax]
mov byte [edx], bl
inc edx
movzx ebx, byte [edi]
inc edi
test bl, bl
jne 0x298a0e0
mov byte [edx], 0
movzx ebx, byte [esi]
test bl, bl
je 0x298a10b
inc esi
nop word cs:[eax + eax]
mov byte [edx], bl
inc edx
movzx ebx, byte [esi]
inc esi
test bl, bl
jne 0x298a100
mov esi, dword [ebp + 0x10]
mov byte [edx], 0
movzx ebx, byte [esp + 8]
test bl, bl
je 0x298a12b
lea edi, [esp + 9]
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [edi]
inc edi
test bl, bl
jne 0x298a120
mov byte [edx], 0
movzx ebx, byte [esi]
test bl, bl
je 0x298a14b
inc esi
nop word cs:[eax + eax]
mov byte [edx], bl
inc edx
movzx ebx, byte [esi]
inc esi
test bl, bl
jne 0x298a140
mov byte [edx], 0
movzx ebx, byte [esp + 0x18]
test bl, bl
je 0x298a16b
lea esi, [esp + 0x19]
nop dword [eax + eax]
mov byte [edx], bl
inc edx
movzx ebx, byte [esi]
inc esi
test bl, bl
jne 0x298a160
mov byte [edx], 0
sub edx, eax
add dword [ecx + 0x60], edx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0xc