Function at 0x409510
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x44
mov esi, dword [esp + 0x5c]
mov dword [esp + 0x14], ecx
mov eax, dword [ecx + 0x80]
mov dword [esp + 0x10], eax
mov dword [esp + 4], 0x20b0d
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
xor byte [esp + ecx + 4], cl
mov eax, ecx
and eax, 1
xor ecx, 1
lea ecx, [ecx + eax*2]
cmp ecx, 4
jb 0x409540
mov dword [esp + 8], 0xe2e0ec86
mov dword [esp + 0xc], 0xf5e2
mov ebx, 0x78901bd6
mov edi, 0x29
nop
nop
movzx eax, byte [esp + ebx - 0x78901bce]
mov ebp, edi
xor ebp, ebx
and ebp, eax
xor ebp, ebx
lea ecx, [ebp - 0x5ad08b2f]
mov edx, ecx
xor edx, 0x7ffffffe
mov eax, ecx
or eax, 1
and eax, edx
add eax, eax
and ebp, 1
mov edx, eax
and edx, ecx
and ecx, 0xfe
or ecx, ebp
xor ecx, eax
lea eax, [ecx + edx*2]
mov byte [esp + ebx - 0x78901bce], al
inc ebx
dec edi
cmp ebx, 0x78901bde
jne 0x409570
mov dword [esp + 0x18], 0x429efed
mov dword [esp + 0x1c], 0x10f1906
mov dword [esp + 0x20], 0x1632c41c
mov dword [esp + 0x24], 0x4191d03
mov dword [esp + 0x28], 0x141f0511
mov dword [esp + 0x2c], 0x19e2c316
mov dword [esp + 0x30], 0xaa6b0f13
mov dword [esp + 0x34], 0x5a765c60
mov dword [esp + 0x38], 0x566499bf
mov dword [esp + 0x3c], 0xadb76861
mov byte [esp + 0x40], 0xf0
mov word [esp + 0x41], 0
mov byte [esp + 0x43], 0
xor ebx, ebx
nop
movzx eax, byte [esp + ebx + 0x18]
lea ecx, [ebx - 0x726ed2da]
and ecx, eax
add eax, ebx
add eax, 0x8d912d26
add ecx, ecx
sub eax, ecx
add al, 0x42
mov byte [esp + ebx + 0x18], al
mov eax, ebx
and eax, 1
xor ebx, 1
lea ebx, [ebx + eax*2]
cmp ebx, 0x2c
jb 0x409620
mov ebp, dword [esp + 0x58]
add ebp, dword [esp + 0x10]
mov dword [esp], 0x9eb4b5
xor ecx, ecx
nop
mov eax, ecx
add al, 0xda
xor al, byte [esp + ecx]
add al, 0xbe
mov byte [esp + ecx], al
inc ecx
cmp ecx, 4
jne 0x409660
movzx ebx, byte [esp]
mov edi, ebp
test bl, bl
je 0x40969b
lea ecx, [esp + 1]
mov edi, ebp
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edi], bl
inc edi
movzx ebx, byte [ecx]
inc ecx
test bl, bl
jne 0x409690
mov byte [edi], 0
mov eax, dword [esp + 0x14]
movzx ecx, byte [eax + 0x60]
test cl, cl
je 0x4096bb
lea ebx, [eax + 0x61]
nop
nop
nop
mov byte [edi], cl
inc edi
movzx ecx, byte [ebx]
inc ebx
test cl, cl
jne 0x4096b0
mov byte [edi], 0
movzx ecx, byte [esp + 0x18]
test cl, cl
je 0x4096db
lea ebx, [esp + 0x19]
nop
nop
nop
nop
nop
mov byte [edi], cl
inc edi
movzx ecx, byte [ebx]
inc ebx
test cl, cl
jne 0x4096d0
mov byte [edi], 0
movzx ebx, byte [esi]
test bl, bl
je 0x4096fb
inc esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edi], bl
inc edi
movzx ebx, byte [esi]
inc esi
test bl, bl
jne 0x4096f0
mov byte [edi], 0
movzx ecx, byte [esp + 8]
test cl, cl
je 0x40971b
lea esi, [esp + 9]
nop
nop
nop
nop
nop
mov byte [edi], cl
inc edi
movzx ecx, byte [esi]
inc esi
test cl, cl
jne 0x409710
mov byte [edi], 0
mov ecx, dword [esp + 0x60]
movzx ebx, byte [ecx]
test bl, bl
je 0x40973b
inc ecx
nop
nop
nop
nop
nop
nop
mov byte [edi], bl
inc edi
movzx ebx, byte [ecx]
inc ecx
test bl, bl
jne 0x409730
mov byte [edi], 0
movzx ecx, byte [esp + 4]
test cl, cl
je 0x40975b
lea edx, [esp + 5]
nop
nop
nop
nop
nop
mov byte [edi], cl
inc edi
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x409750
mov byte [edi], 0
sub edi, ebp
add dword [eax + 0x80], edi
add esp, 0x44
pop esi
pop edi
pop ebx
pop ebp
ret 0xc