Function at 0x409540
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x54
mov edi, dword [esp + 0x70]
mov esi, dword [esp + 0x6c]
mov dword [esp + 0x20], ecx
mov eax, dword [ecx + 0x80]
mov dword [esp + 0x1c], eax
mov word [esp + 8], 0x3735
mov byte [esp + 0xa], 0x3e
mov word [esp + 0xb], 0
mov ebp, 0x117f0a
mov edx, 0x3bce80f5
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + ebp - 0x117f02]
mov ebx, edx
and ebx, 0x2b848059
mov eax, ebp
and eax, 0x110706
or eax, ebx
xor eax, ecx
mov ecx, eax
xor ecx, 0x26
mov ebx, eax
and ebx, 0x32
xor ebx, 0x11
add ebx, ecx
add ebx, ebx
xor eax, 0x94
sub eax, ebx
inc al
mov byte [esp + ebp - 0x117f02], al
inc ebp
dec edx
cmp ebp, 0x117f0f
jne 0x409580
mov dword [esp + 0x10], 0x8280bca6
mov word [esp + 0x14], 0xb582
mov dword [esp + 0x16], 0
mov word [esp + 0x1a], 0
mov ebp, 0xde92611e
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + ebp + 0x216d9ef2]
mov ecx, ebx
and ecx, ebp
mov eax, ecx
or al, 0xfd
inc al
mov edx, ecx
and dl, 0x3d
mul dl
mov edx, eax
add dl, bl
mov eax, ecx
shr al, 1
and al, 1
or cl, 2
mul cl
add al, al
sub dl, al
movzx eax, dl
add eax, ebp
add al, 0x6a
mov byte [esp + ebp + 0x216d9ef2], al
inc ebp
cmp ebp, 0xde92612a
jne 0x4095f0
mov dword [esp + 0x24], 0xe4397f7d
mov dword [esp + 0x28], 0xe1dfe9e6
mov dword [esp + 0x2c], 0xd63224ec
mov dword [esp + 0x30], 0xe4e9ede3
mov dword [esp + 0x34], 0xf4cfe5d1
mov dword [esp + 0x38], 0xc90223f6
mov dword [esp + 0x3c], 0x3afbfff3
mov dword [esp + 0x40], 0xcaf6ccc0
mov dword [esp + 0x44], 0xf6c4092f
mov dword [esp + 0x48], 0x3d17f8c1
mov byte [esp + 0x4c], 0x50
mov dword [esp + 0x4d], 0
mov byte [esp + 0x51], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x3e
xor cl, byte [esp + eax + 0x24]
add cl, 0xca
mov byte [esp + eax + 0x24], cl
inc eax
cmp eax, 0x2e
jne 0x4096a0
mov ebp, dword [esp + 0x68]
add ebp, dword [esp + 0x1c]
mov word [esp], 0xdcdd
mov byte [esp + 2], 0x22
mov dword [esp + 3], 0
mov eax, 0xe328b2b7
mov ecx, 0xe328b248
nop
nop
nop
nop
nop
movzx ebx, byte [esp + ecx + 0x1cd74db8]
mov edx, eax
xor edx, ecx
and edx, ebx
xor edx, ecx
add dl, 0x98
mov byte [esp + ecx + 0x1cd74db8], dl
dec eax
inc ecx
cmp eax, 0xe328b2b0
jne 0x4096e0
movzx ecx, byte [esp]
mov eax, ebp
test cl, cl
je 0x40972b
lea edx, [esp + 1]
mov eax, ebp
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [eax], cl
inc eax
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x409720
mov byte [eax], 0
mov ebx, dword [esp + 0x20]
movzx ecx, byte [ebx + 0x60]
test cl, cl
je 0x40974b
lea edx, [ebx + 0x61]
nop
nop
nop
mov byte [eax], cl
inc eax
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x409740
mov byte [eax], 0
movzx ecx, byte [esp + 0x24]
test cl, cl
je 0x40976b
lea edx, [esp + 0x25]
nop
nop
nop
nop
nop
mov byte [eax], cl
inc eax
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x409760
mov byte [eax], 0
movzx ecx, byte [esi]
test cl, cl
je 0x40978b
inc esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [eax], cl
inc eax
movzx ecx, byte [esi]
inc esi
test cl, cl
jne 0x409780
mov byte [eax], 0
movzx ecx, byte [esp + 0x10]
test cl, cl
je 0x4097ab
lea edx, [esp + 0x11]
nop
nop
nop
nop
nop
mov byte [eax], cl
inc eax
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x4097a0
mov byte [eax], 0
movzx ecx, byte [edi]
test cl, cl
je 0x4097cb
inc edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [eax], cl
inc eax
movzx ecx, byte [edi]
inc edi
test cl, cl
jne 0x4097c0
mov byte [eax], 0
movzx ecx, byte [esp + 8]
test cl, cl
je 0x4097eb
lea edx, [esp + 9]
nop
nop
nop
nop
nop
mov byte [eax], cl
inc eax
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x4097e0
mov byte [eax], 0
mov ecx, eax
not ecx
and ecx, ebp
not ebp
and ebp, eax
sub ebp, ecx
add dword [ebx + 0x80], ebp
add esp, 0x54
pop esi
pop edi
pop ebx
pop ebp
ret 0xc