Function at 0x409a10
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xb8
mov edi, dword [ebp + 8]
mov dword [esp + 0x7c], ecx
add edi, dword [ecx + 0x60]
mov dword [esp + 0x80], 0xefe6e0db
mov dword [esp + 0x84], 0x28e0ebfd
mov dword [esp + 0x88], 0xf4e8e2c2
mov dword [esp + 0x8c], 0xdbc70520
mov dword [esp + 0x90], 0xcbcdc2da
mov dword [esp + 0x94], 0xd3dac2d5
mov dword [esp + 0x98], 0xda1fd11f
mov dword [esp + 0x9c], 0xdadbdfc8
mov dword [esp + 0xa0], 0x243a26ca
mov word [esp + 0xa4], 0x3d38
mov dword [esp + 0xaa], 0
mov dword [esp + 0xa6], 0
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 0x2d
ja 0x409b24
nop
nop
nop
mov eax, dword [esp + 8]
mov ecx, dword [esp + 8]
movzx ecx, byte [esp + ecx + 0x80]
mov edx, eax
and edx, 0xe4356bd3
xor eax, 0x64356bd3
lea eax, [eax + edx*2]
lea edx, [eax + ecx]
and eax, ecx
add eax, eax
sub edx, eax
mov dword [esp + 0x20], edx
mov eax, dword [esp + 0x20]
mov ecx, eax
or ecx, 0x3a
and eax, 0x3a
add eax, ecx
inc al
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x80], al
mov eax, dword [esp + 8]
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
cmp eax, 0x2e
jb 0x409ac0
mov dword [esp + 8], 0x63525648
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xb
ja 0x409b8b
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 8]
lea edx, [eax + ecx]
add edx, 0xb023cf1
add eax, 0xb023cf1
and eax, ecx
add eax, eax
sub edx, eax
mov dword [esp + 0x20], edx
mov eax, dword [esp + 0x20]
add al, 0x69
mov ecx, dword [esp]
mov byte [esp + ecx + 8], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xc
jb 0x409b50
mov dword [esp + 0x20], 0xe0e21615
mov dword [esp + 0x24], 0xe4ec1212
mov dword [esp + 0x28], 0x17dce215
mov dword [esp + 0x2c], 0x1c1f1423
mov dword [esp + 0x30], 0xec1f2320
mov dword [esp + 0x34], 0x2efdb7c9
mov dword [esp + 0x38], 0x3117292c
mov dword [esp + 0x3c], 0x8e4f236
mov dword [esp + 0x40], 0x3e353533
mov dword [esp + 0x44], 0x3e073d05
mov dword [esp + 0x48], 0x39ccf33c
mov dword [esp + 0x4c], 0xc4030703
mov dword [esp + 0x50], 0x3c003232
mov dword [esp + 0x54], 0x380af9c7
mov dword [esp + 0x58], 0xe5df360d
mov dword [esp + 0x5c], 0x2c2c2e28
mov dword [esp + 0x60], 0x21e4d8e0
mov dword [esp + 0x64], 0x1d232525
mov dword [esp + 0x68], 0xb0271e29
mov word [esp + 0x6c], 0xf194
mov word [esp + 0x72], 0
mov dword [esp + 0x6e], 0
mov dword [esp + 4], 0
mov eax, dword [esp + 4]
cmp eax, 0x53
ja 0x409c8b
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 4]
mov ecx, dword [esp + 4]
movzx ecx, byte [esp + ecx + 0x20]
lea edx, [eax + 0x2dc823f5]
add eax, 0xf5
and eax, ecx
or edx, ecx
sub edx, eax
mov dword [esp], edx
mov eax, dword [esp]
add al, 0x4d
mov ecx, dword [esp + 4]
mov byte [esp + ecx + 0x20], al
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 0x54
jb 0x409c50
mov eax, dword [ebp + 0xc]
movzx ecx, byte [esp + 0x20]
mov edx, edi
test cl, cl
je 0x409cab
lea esi, [esp + 0x21]
mov edx, edi
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [esi]
inc esi
test cl, cl
jne 0x409ca0
mov byte [edx], 0
movzx ecx, byte [eax]
test cl, cl
je 0x409ccb
inc eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [eax]
inc eax
test cl, cl
jne 0x409cc0
mov byte [edx], 0
movzx eax, byte [esp + 8]
test al, al
je 0x409ceb
lea ecx, [esp + 9]
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x409ce0
mov esi, dword [ebp + 0x14]
mov ebx, dword [ebp + 0x10]
mov byte [edx], 0
movzx eax, byte [esp + 0x80]
test al, al
mov dword [esp + 0x1c], edi
je 0x409d1b
lea ecx, [esp + 0x81]
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x409d10
mov byte [edx], 0
mov ecx, esi
shr ecx, 2
mov eax, ebx
mov edi, edx
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov ecx, esi
mov eax, esi
and eax, 0xfffffffc
lea esi, [edx + eax]
add eax, ebx
shr ecx, 1
and ecx, 1
mov ebx, eax
mov edi, esi
xchg esi, ebx
rep movsw word es:[edi], word [esi]
xchg esi, ebx
mov ebx, dword [ebp + 0x14]
test bl, 1
je 0x409d5b
mov ecx, ebx
and ecx, 2
movzx eax, byte [eax + ecx]
mov byte [esi + ecx], al
mov dword [esp + 0x20], 0xa4a75b41
mov dword [esp + 0x24], 0xa0a4f2f0
mov dword [esp + 0x28], 0xf0a7f6f2
mov dword [esp + 0x2c], 0x8a9589ea
mov dword [esp + 0x30], 0x91928e8d
mov dword [esp + 0x34], 0x253bde8d
mov word [esp + 0x38], 0x2339
mov byte [esp + 0x3a], 0x28
mov dword [esp + 0x3b], 0
mov word [esp + 0x3f], 0
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 0x20
ja 0x409e24
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 8]
mov eax, dword [esp + 8]
movzx esi, byte [esp + eax + 0x20]
lea edi, [ecx - 0x39078ecd]
lea eax, [ecx + esi]
add eax, 0xc6f87133
and edi, esi
add ecx, 0x33
and ecx, esi
add ecx, edi
mov esi, eax
not esi
and esi, ecx
not ecx
and ecx, eax
sub ecx, esi
mov dword [esp + 0x80], ecx
mov eax, dword [esp + 0x80]
mov ecx, eax
or ecx, 0x9a
and eax, 0x9a
add eax, ecx
inc al
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x20], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 0x21
jb 0x409dc0
add edx, ebx
movzx eax, byte [esp + 0x20]
test al, al
je 0x409e4d
lea ecx, [esp + 0x21]
mov esi, dword [esp + 0x1c]
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x409e40
jmp 0x409e51
mov esi, dword [esp + 0x1c]
mov byte [edx], 0
sub edx, esi
mov eax, dword [esp + 0x7c]
add dword [eax + 0x60], edx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0x10