Function at 0x409ae0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x50
mov edx, dword [esp + 0x6c]
mov esi, dword [esp + 0x68]
mov eax, dword [esp + 0x64]
mov dword [esp + 0xc], eax
mov dword [esp + 0x1c], ecx
mov edi, dword [ecx + 0x80]
mov dword [esp], 0xc6cdf3
mov ebx, 0x7a03ecd1
nop
nop
nop
movzx ecx, byte [esp + ebx - 0x7a03ecd1]
mov eax, ebx
or eax, ecx
and ecx, ebx
sub eax, ecx
add al, 0xeb
mov byte [esp + ebx - 0x7a03ecd1], al
inc ebx
cmp ebx, 0x7a03ecd5
jne 0x409b10
mov dword [esp + 0x10], 0x1e181c02
mov word [esp + 0x14], 0x251e
mov dword [esp + 0x16], 0
xor ebx, ebx
nop
nop
nop
nop
nop
lea eax, [ebx - 0x61e26da9]
mov ecx, eax
and ecx, 0x78
xor eax, 0xf8
lea eax, [eax + ecx*2]
add al, 0xa9
xor al, byte [esp + ebx + 0x10]
add al, 0x28
mov byte [esp + ebx + 0x10], al
mov eax, 0xc
sub eax, ebx
add ebx, 0x33
and eax, 0x32
and ebx, 0x4d
sub ebx, eax
cmp ebx, 0xa
jb 0x409b50
mov dword [esp + 0x20], 0x1c217b7d
mov dword [esp + 0x24], 0x1903111a
mov dword [esp + 0x28], 0x23e440c
mov dword [esp + 0x2c], 0xc010d0f
mov dword [esp + 0x30], 0xc0b0509
mov dword [esp + 0x34], 0x11563f0a
mov dword [esp + 0x38], 0xb6f7fbf7
mov dword [esp + 0x3c], 0xeefaece8
mov dword [esp + 0x40], 0xe2fca1cb
mov dword [esp + 0x44], 0xa5cbe0f9
mov byte [esp + 0x48], 0x98
mov dword [esp + 0x49], 0
mov byte [esp + 0x4d], 0
mov ebx, 0x68
mov ebp, 0x17
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + ebx - 0x48]
mov eax, ecx
xor eax, ebx
or eax, ebp
add al, al
add al, cl
movzx eax, al
add eax, ebx
add al, 0xfa
mov byte [esp + ebx - 0x48], al
inc ebx
dec ebp
cmp ebx, 0x96
jne 0x409c00
add dword [esp + 0xc], edi
mov word [esp + 4], 0x989f
mov byte [esp + 6], 0x4a
mov word [esp + 7], 0
mov edi, 0xd8379713
movzx eax, byte [esp + edi + 0x27c868f1]
xor eax, edi
add eax, 0x38d7bd2d
mov ecx, eax
and ecx, 0x73
xor eax, 0x73
lea eax, [eax + ecx*2]
inc al
mov byte [esp + edi + 0x27c868f1], al
inc edi
cmp edi, 0xd8379718
jne 0x409c40
movzx ebx, byte [esp + 4]
mov ecx, dword [esp + 0xc]
mov edi, ecx
test bl, bl
je 0x409c9c
lea ebp, [esp + 5]
mov edi, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edi], bl
inc edi
movzx ebx, byte [ebp]
inc ebp
test bl, bl
jne 0x409c90
mov byte [edi], 0
mov eax, dword [esp + 0x1c]
movzx ebx, byte [eax + 0x60]
test bl, bl
je 0x409cbc
lea ebp, [eax + 0x61]
nop
nop
mov byte [edi], bl
inc edi
movzx ebx, byte [ebp]
inc ebp
test bl, bl
jne 0x409cb0
mov byte [edi], 0
movzx ebx, byte [esp + 0x20]
test bl, bl
je 0x409cdc
lea ebp, [esp + 0x21]
nop
nop
nop
nop
mov byte [edi], bl
inc edi
movzx ebx, byte [ebp]
inc ebp
test bl, bl
jne 0x409cd0
mov byte [edi], 0
movzx ebx, byte [esi]
test bl, bl
je 0x409cfb
inc esi
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 0x409cf0
mov byte [edi], 0
movzx ebx, byte [esp + 0x10]
test bl, bl
je 0x409d1b
lea esi, [esp + 0x11]
nop
nop
nop
nop
nop
mov byte [edi], bl
inc edi
movzx ebx, byte [esi]
inc esi
test bl, bl
jne 0x409d10
mov byte [edi], 0
movzx ebx, byte [edx]
test bl, bl
je 0x409d3b
inc edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edi], bl
inc edi
movzx ebx, byte [edx]
inc edx
test bl, bl
jne 0x409d30
mov byte [edi], 0
movzx edx, byte [esp]
test dl, dl
je 0x409d5b
lea esi, [esp + 1]
nop
nop
nop
nop
nop
nop
mov byte [edi], dl
inc edi
movzx edx, byte [esi]
inc esi
test dl, dl
jne 0x409d50
mov byte [edi], 0
sub edi, ecx
add dword [eax + 0x80], edi
add esp, 0x50
pop esi
pop edi
pop ebx
pop ebp
ret 0xc