Function at 0x409150
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x40
mov edi, dword [esp + 0x5c]
mov esi, dword [esp + 0x58]
mov dword [esp + 0x10], ecx
mov eax, dword [ecx + 0x80]
mov dword [esp + 0xc], eax
mov word [esp + 3], 0x5656
mov byte [esp + 5], 0x6d
mov ebp, 0xf3
nop
nop
movzx ebx, byte [esp + ebp - 0xf0]
mov ecx, ebx
and ecx, ebp
mov eax, ecx
or al, 0xfd
inc al
mov edx, ecx
and dl, 0xf5
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, 0x68
mov byte [esp + ebp - 0xf0], al
inc ebp
cmp ebp, 0xf6
jne 0x409180
mov dword [esp + 6], 0x1111172b
mov word [esp + 0xa], 0xe17
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
lea ecx, [eax + 1]
movzx edx, byte [esp + eax + 6]
xor dl, cl
add dl, 0xf8
mov byte [esp + eax + 6], dl
mov eax, ecx
cmp ecx, 6
jne 0x4091e0
mov dword [esp + 0x17], 0x93a8f0f4
mov dword [esp + 0x1b], 0x9e8a9a93
mov dword [esp + 0x1f], 0x9da7df95
mov dword [esp + 0x23], 0x8b989696
mov dword [esp + 0x27], 0x83828e80
mov dword [esp + 0x2b], 0x96dfb483
mov dword [esp + 0x2f], 0xc98e808e
mov dword [esp + 0x33], 0x69839791
mov dword [esp + 0x37], 0x6d752a42
mov dword [esp + 0x3b], 0x22426b70
mov byte [esp + 0x3f], 1
mov eax, 0x4e02ebe1
mov ebp, dword [esp + 0x54]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax - 0x4e02ebca]
lea edx, [eax - 0x4e02eb00]
and edx, ecx
add edx, edx
sub ecx, edx
add ecx, eax
mov edx, ecx
and edx, 0x77
xor ecx, 0xf7
lea ecx, [ecx + edx*2]
inc cl
mov byte [esp + eax - 0x4e02ebca], cl
inc eax
cmp eax, 0x4e02ec0a
jne 0x409260
add ebp, dword [esp + 0xc]
mov word [esp], 0xdfdc
mov byte [esp + 2], 0xe3
xor eax, eax
mov ebx, dword [esp + 0x10]
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0xa9
xor cl, byte [esp + eax]
add cl, 0xb8
mov byte [esp + eax], cl
inc eax
cmp eax, 3
jne 0x4092b0
movzx ecx, byte [esp]
mov eax, ebp
test cl, cl
je 0x4092eb
lea edx, [esp + 1]
mov eax, ebp
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 0x4092e0
mov byte [eax], 0
movzx ecx, byte [ebx + 0x60]
test cl, cl
je 0x40930b
lea edx, [ebx + 0x61]
nop
nop
nop
nop
nop
nop
nop
mov byte [eax], cl
inc eax
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x409300
mov byte [eax], 0
movzx ecx, byte [esp + 0x17]
test cl, cl
je 0x40932b
lea edx, [esp + 0x18]
nop
nop
nop
nop
nop
mov byte [eax], cl
inc eax
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x409320
mov byte [eax], 0
movzx ecx, byte [esi]
test cl, cl
je 0x40934b
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 0x409340
mov byte [eax], 0
movzx ecx, byte [esp + 6]
test cl, cl
je 0x40936b
lea edx, [esp + 7]
nop
nop
nop
nop
nop
mov byte [eax], cl
inc eax
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x409360
mov byte [eax], 0
movzx ecx, byte [edi]
test cl, cl
je 0x40938b
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 0x409380
mov byte [eax], 0
movzx ecx, byte [esp + 3]
test cl, cl
je 0x4093ab
lea edx, [esp + 4]
nop
nop
nop
nop
nop
mov byte [eax], cl
inc eax
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x4093a0
mov byte [eax], 0
mov ecx, eax
xor ecx, ebp
not ebp
and ebp, eax
add ebp, ebp
sub ebp, ecx
add dword [ebx + 0x80], ebp
add esp, 0x40
pop esi
pop edi
pop ebx
pop ebp
ret 0xc