Function at 0x409500
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x54
mov dword [esp + 0x20], ecx
mov eax, dword [ecx + 0x80]
mov dword [esp + 0x1c], eax
mov word [esp + 8], 0x8d8f
mov byte [esp + 0xa], 0x9a
mov word [esp + 0xb], 0
mov ebx, 0x25
mov ebp, 0xdb
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edi, ebp
or edi, 0x73
add edi, ebx
mov ecx, ebp
and ecx, 0x8c
or ecx, edi
xor cl, byte [esp + ebp - 0xd3]
xor cl, 0x73
add cl, 0xb9
mov byte [esp + ebp - 0xd3], cl
dec ebx
inc ebp
cmp ebx, 0x20
jne 0x409540
mov dword [esp + 0x10], 0x26182432
mov word [esp + 0x14], 0x1d16
mov dword [esp + 0x16], 0
mov byte [esp + 0x1a], 0
mov ecx, 0xf054d8c4
mov eax, 0x7ab273b
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + ecx + 0xfab274c]
mov ebp, eax
and ebp, 0x58a2624
mov ebx, ecx
and ebx, 0x104090db
or ebx, ebp
xor ebx, edi
xor ebx, 0x1a6191db
and ebx, ecx
mov ebp, ebx
and ebp, 2
mov edx, ebx
or edx, 0xfffffffd
inc edx
mov esi, ebx
and esi, 0x104090dd
imul esi, edx
or ebx, 2
imul ebx, ebp
add esi, edi
sub esi, ebx
lea edx, [ecx + esi]
add edx, 0x4e57c42b
mov esi, edx
and esi, 1
xor edx, 1
lea edx, [edx + esi*2]
mov byte [esp + ecx + 0xfab274c], dl
inc ecx
dec eax
cmp ecx, 0xf054d8cf
jne 0x4095a0
mov dword [esp + 0x24], 0xe4195f5d
mov dword [esp + 0x28], 0xe1ffe9e6
mov dword [esp + 0x2c], 0xf61224ec
mov dword [esp + 0x30], 0xe4e9ede3
mov dword [esp + 0x34], 0x140fe5f1
mov dword [esp + 0x38], 0x9c2e316
mov dword [esp + 0x3c], 0xda1b1f13
mov dword [esp + 0x40], 0xa160c00
mov dword [esp + 0x44], 0x1604c9ef
mov dword [esp + 0x48], 0xddf71801
mov byte [esp + 0x4c], 0xb0
mov dword [esp + 0x4d], 0
mov word [esp + 0x51], 0
xor ecx, ecx
nop
mov eax, ecx
add al, 0xee
xor al, byte [esp + ecx + 0x24]
add al, 0x5a
mov byte [esp + ecx + 0x24], al
inc ecx
cmp ecx, 0x2f
jne 0x409670
mov ebp, dword [esp + 0x68]
add ebp, dword [esp + 0x1c]
mov word [esp], 0xdcdd
mov byte [esp + 2], 0xf6
mov word [esp + 3], 0
xor edi, edi
movzx ecx, byte [esp + edi]
mov eax, 0x26c52d01
sub eax, edi
or eax, ecx
mov edx, 1
sub edx, edi
not eax
or eax, edx
lea eax, [edi + eax*2]
add al, cl
add al, 0xa
mov byte [esp + edi], al
mov eax, edi
and eax, 1
or edi, 1
add edi, eax
add edi, 0x72e4f82c
mov eax, edi
not eax
and eax, 0x2c
and edi, 0x53
sub edi, eax
cmp edi, 5
jb 0x4096a0
movzx ecx, byte [esp]
mov edi, ebp
test cl, cl
je 0x40970b
lea ebx, [esp + 1]
mov edi, ebp
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edi], cl
inc edi
movzx ecx, byte [ebx]
inc ebx
test cl, cl
jne 0x409700
mov byte [edi], 0
mov eax, dword [esp + 0x20]
movzx ecx, byte [eax + 0x60]
test cl, cl
mov edx, dword [esp + 0x70]
mov esi, dword [esp + 0x6c]
je 0x40973b
lea ebx, [eax + 0x61]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edi], cl
inc edi
movzx ecx, byte [ebx]
inc ebx
test cl, cl
jne 0x409730
mov byte [edi], 0
movzx ecx, byte [esp + 0x24]
test cl, cl
je 0x40975b
lea ebx, [esp + 0x25]
nop
nop
nop
nop
nop
mov byte [edi], cl
inc edi
movzx ecx, byte [ebx]
inc ebx
test cl, cl
jne 0x409750
mov byte [edi], 0
movzx ecx, byte [esi]
test cl, cl
je 0x40977b
inc esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edi], cl
inc edi
movzx ecx, byte [esi]
inc esi
test cl, cl
jne 0x409770
mov byte [edi], 0
movzx ecx, byte [esp + 0x10]
test cl, cl
je 0x40979b
lea esi, [esp + 0x11]
nop
nop
nop
nop
nop
mov byte [edi], cl
inc edi
movzx ecx, byte [esi]
inc esi
test cl, cl
jne 0x409790
mov byte [edi], 0
movzx ecx, byte [edx]
test cl, cl
je 0x4097bb
inc edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edi], cl
inc edi
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x4097b0
mov byte [edi], 0
movzx ecx, byte [esp + 8]
test cl, cl
je 0x4097db
lea edx, [esp + 9]
nop
nop
nop
nop
nop
mov byte [edi], cl
inc edi
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x4097d0
mov byte [edi], 0
sub edi, ebp
add dword [eax + 0x80], edi
add esp, 0x54
pop esi
pop edi
pop ebx
pop ebp
ret 0xc