Function at 0x409860
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x50
mov esi, dword [esp + 0x68]
mov dword [esp + 0x1c], ecx
mov eax, dword [ecx + 0x80]
mov dword [esp + 0x18], eax
mov dword [esp], 0x3e2523
mov ecx, 0x34
mov eax, 0x26574aca
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + ecx - 0x34]
mov ebp, eax
or ebp, ebx
lea edi, [ecx + 1]
or ebx, edi
mov edx, ecx
sub edx, ebx
mov ebx, ebp
not ebx
or ebx, edx
add ebx, ebp
mov dl, 0xf5
sub dl, bl
mov byte [esp + ecx - 0x34], dl
dec eax
mov ecx, edi
cmp edi, 0x38
jne 0x409890
mov dword [esp + 0xc], 0x8a8488a2
mov word [esp + 0x10], 0xbf86
mov dword [esp + 0x12], 0
mov word [esp + 0x16], 0
mov ebp, 0x257589f
nop
nop
nop
movzx ebx, byte [esp + ebp - 0x2575893]
mov ecx, ebx
and ecx, ebp
mov eax, ecx
or al, 0xfd
inc al
mov edx, ecx
and dl, 0xbd
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, 0xe5
mov byte [esp + ebp - 0x2575893], al
inc ebp
cmp ebp, 0x25758ab
jne 0x4098e0
mov dword [esp + 0x20], 0xdbe5e3
mov dword [esp + 0x24], 0xb35070e
mov dword [esp + 0x28], 0x12d2c800
mov dword [esp + 0x2c], 0x181b1b1d
mov dword [esp + 0x30], 0x10151b17
mov dword [esp + 0x34], 0x23e2c91e
mov dword [esp + 0x38], 0xa6191515
mov dword [esp + 0x3c], 0x5e6e585c
mov dword [esp + 0x40], 0x52609fb1
mov dword [esp + 0x44], 0x97bd546f
mov byte [esp + 0x48], 0xf4
mov dword [esp + 0x49], 0
mov dword [esp + 0x4c], 0
mov eax, 0x58f7d4a5
mov edx, 0x5a
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax - 0x58f7d485]
mov edi, eax
or edi, ecx
not ecx
or ecx, edx
and ecx, edi
mov edi, ecx
xor edi, 0xbcd72739
mov ebx, ecx
or ebx, 0x4020d0c6
and ebx, edi
or ecx, 0x5bffdcc6
mov edi, ebx
and edi, ecx
xor ecx, ebx
lea ecx, [ecx + edi*2]
inc cl
mov byte [esp + eax - 0x58f7d485], cl
inc eax
dec edx
cmp eax, 0x58f7d4d5
jne 0x4099a0
mov ebx, dword [esp + 0x64]
add ebx, dword [esp + 0x18]
mov word [esp + 4], 0x5857
mov byte [esp + 6], 0x2a
mov word [esp + 7], 0
mov byte [esp + 9], 0
xor eax, eax
mov edi, dword [esp + 0x1c]
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x87
xor cl, byte [esp + eax + 4]
add cl, 0x5d
mov byte [esp + eax + 4], cl
inc eax
cmp eax, 6
jne 0x409a10
movzx ecx, byte [esp + 4]
mov eax, ebx
test cl, cl
je 0x409a4b
lea edx, [esp + 5]
mov eax, ebx
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 0x409a40
mov byte [eax], 0
movzx ecx, byte [edi + 0x60]
test cl, cl
je 0x409a6b
lea edx, [edi + 0x61]
nop
nop
nop
nop
nop
nop
nop
mov byte [eax], cl
inc eax
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x409a60
mov byte [eax], 0
movzx ecx, byte [esp + 0x20]
test cl, cl
je 0x409a8b
lea edx, [esp + 0x21]
nop
nop
nop
nop
nop
mov byte [eax], cl
inc eax
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x409a80
mov byte [eax], 0
movzx ecx, byte [esi]
test cl, cl
je 0x409aab
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 0x409aa0
mov byte [eax], 0
movzx ecx, byte [esp + 0xc]
test cl, cl
je 0x409acb
lea edx, [esp + 0xd]
nop
nop
nop
nop
nop
mov byte [eax], cl
inc eax
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x409ac0
mov byte [eax], 0
mov edx, dword [esp + 0x6c]
movzx ecx, byte [edx]
test cl, cl
je 0x409aeb
inc edx
nop
nop
nop
nop
nop
nop
mov byte [eax], cl
inc eax
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x409ae0
mov byte [eax], 0
movzx ecx, byte [esp]
test cl, cl
je 0x409b0b
lea edx, [esp + 1]
nop
nop
nop
nop
nop
nop
mov byte [eax], cl
inc eax
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x409b00
mov byte [eax], 0
mov ecx, eax
xor ecx, ebx
not ebx
and ebx, eax
add ebx, ebx
sub ebx, ecx
add dword [edi + 0x80], ebx
add esp, 0x50
pop esi
pop edi
pop ebx
pop ebp
ret 0xc