Function at 0x409230
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x40
mov edx, dword [esp + 0x5c]
mov esi, dword [esp + 0x58]
mov eax, dword [esp + 0x54]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ecx
mov edi, dword [ecx + 0x80]
mov word [esp + 3], 0xaca8
mov byte [esp + 5], 0xb7
xor ebx, ebx
nop
lea eax, [ebx + 0x1d]
mov ebp, 2
sub ebp, ebx
and ebp, 0x1e
and eax, 0x21
or eax, ebp
xor al, byte [esp + ebx + 3]
xor al, 0x5e
add al, 0x18
mov byte [esp + ebx + 3], al
mov eax, ebx
and eax, 1
xor ebx, 1
lea ebx, [ebx + eax*2]
cmp ebx, 3
jb 0x409260
mov dword [esp + 6], 0x43474159
mov word [esp + 0xa], 0x7045
mov ebx, 0x63
mov ecx, 0x1c
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ebp, ecx
and ebp, 0x1d
mov eax, ebx
and eax, 0x42
or eax, ebp
xor al, byte [esp + ebx - 0x5d]
xor al, 0x3d
add al, 0xe8
mov byte [esp + ebx - 0x5d], al
inc ebx
dec ecx
cmp ebx, 0x69
jne 0x4092b0
mov dword [esp + 0x17], 0x914e3636
mov dword [esp + 0x1b], 0x9c649491
mov dword [esp + 0x1f], 0x9f415997
mov dword [esp + 0x23], 0xa9a6a894
mov dword [esp + 0x27], 0xa1a4a8a2
mov dword [esp + 0x2b], 0x54117aa1
mov dword [esp + 0x2f], 0x6ba8a6ac
mov dword [esp + 0x33], 0x4bbd4953
mov dword [esp + 0x37], 0x4fb30c60
mov dword [esp + 0x3b], 0x6c45b2
mov byte [esp + 0x3f], 0x23
xor ebx, ebx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, ebx
add al, 0x93
xor al, byte [esp + ebx + 0x17]
add al, 0x68
mov byte [esp + ebx + 0x17], al
inc ebx
cmp ebx, 0x29
jne 0x409330
add dword [esp + 0xc], edi
mov word [esp], 0xe0e1
mov byte [esp + 2], 0xe
xor edi, edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + edi]
mov ebx, edi
or ebx, 0x6c
mov eax, 0x93
sub eax, edi
xor eax, ebx
and eax, ecx
xor eax, ebx
add al, 0xa0
mov byte [esp + edi], al
mov eax, edi
and eax, 1
or edi, 0x549a8ec1
add edi, eax
add edi, 0xab657140
cmp edi, 3
jb 0x409360
movzx ebx, byte [esp]
mov ecx, dword [esp + 0xc]
mov edi, ecx
test bl, bl
je 0x4093bc
lea ebp, [esp + 1]
mov edi, ecx
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 0x4093b0
mov byte [edi], 0
mov eax, dword [esp + 0x10]
movzx ebx, byte [eax + 0x60]
test bl, bl
je 0x4093dc
lea ebp, [eax + 0x61]
nop
nop
mov byte [edi], bl
inc edi
movzx ebx, byte [ebp]
inc ebp
test bl, bl
jne 0x4093d0
mov byte [edi], 0
movzx ebx, byte [esp + 0x17]
test bl, bl
je 0x4093fc
lea ebp, [esp + 0x18]
nop
nop
nop
nop
mov byte [edi], bl
inc edi
movzx ebx, byte [ebp]
inc ebp
test bl, bl
jne 0x4093f0
mov byte [edi], 0
movzx ebx, byte [esi]
test bl, bl
je 0x40941b
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 0x409410
mov byte [edi], 0
movzx ebx, byte [esp + 6]
test bl, bl
je 0x40943b
lea esi, [esp + 7]
nop
nop
nop
nop
nop
mov byte [edi], bl
inc edi
movzx ebx, byte [esi]
inc esi
test bl, bl
jne 0x409430
mov byte [edi], 0
movzx ebx, byte [edx]
test bl, bl
je 0x40945b
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 0x409450
mov byte [edi], 0
movzx edx, byte [esp + 3]
test dl, dl
je 0x40947b
lea esi, [esp + 4]
nop
nop
nop
nop
nop
mov byte [edi], dl
inc edi
movzx edx, byte [esi]
inc esi
test dl, dl
jne 0x409470
mov byte [edi], 0
sub edi, ecx
add dword [eax + 0x80], edi
add esp, 0x40
pop esi
pop edi
pop ebx
pop ebp
ret 0xc