Function at 0x409190
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x44
mov edx, dword [esp + 0x60]
mov esi, dword [esp + 0x5c]
mov eax, dword [esp + 0x58]
mov dword [esp + 0xc], eax
mov dword [esp + 0x14], ecx
mov eax, dword [ecx + 0x80]
mov dword [esp + 0x10], eax
mov word [esp + 3], 0xfaf2
mov byte [esp + 5], 0x81
lea ebx, [esp + 3]
mov ebp, 0xc8
nop
nop
nop
nop
nop
nop
movzx edi, byte [ebx]
lea ecx, [ebp - 0x4e180100]
or ecx, edi
and edi, ebp
lea eax, [ecx + ecx]
not eax
add eax, ecx
or eax, edi
add al, 0x48
mov byte [ebx], al
inc ebx
dec ebp
cmp ebp, 0xc5
jne 0x4091d0
mov dword [esp + 6], 0x4141477b
mov word [esp + 0xa], 0x5e47
mov ebx, 0xd1
mov ebp, 0x2e
nop
nop
nop
movzx eax, byte [esp + ebx - 0xcb]
mov ecx, ebx
or ecx, eax
not eax
or eax, ebp
and eax, ecx
add al, 0x78
mov byte [esp + ebx - 0xcb], al
inc ebx
dec ebp
cmp ebx, 0xd7
jne 0x409210
mov dword [esp + 0x1b], 0xe63b5b3
mov dword [esp + 0x1f], 0xb01370c
mov dword [esp + 0x23], 0x6c4a32
mov dword [esp + 0x27], 0x3e033b39
mov dword [esp + 0x2b], 0x3e393b07
mov dword [esp + 0x2f], 0x3374493c
mov dword [esp + 0x33], 0x74350539
mov dword [esp + 0x37], 0x3c083a3e
mov dword [esp + 0x3b], 0x202e7f45
mov dword [esp + 0x3f], 0x6759262f
mov byte [esp + 0x43], 0x86
xor ebx, ebx
nop
nop
nop
nop
movzx ecx, byte [esp + ebx + 0x1b]
lea eax, [ebx + 0xce]
mov edi, 0x31
sub edi, ebx
xor eax, edi
and eax, ecx
xor eax, edi
mov cl, 0x8f
sub cl, al
mov byte [esp + ebx + 0x1b], cl
mov eax, ebx
and eax, 1
xor ebx, 1
lea ebx, [ebx + eax*2]
cmp ebx, 0x29
jb 0x409290
mov eax, dword [esp + 0x10]
add dword [esp + 0xc], eax
mov word [esp], 0x8d82
mov byte [esp + 2], 0xd1
mov edi, 0xe7
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [esp + edi - 0xe7]
mov ecx, edi
and ecx, eax
add ecx, ecx
sub eax, ecx
add eax, edi
add eax, 0xf31badc7
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
mov byte [esp + edi - 0xe7], al
inc edi
cmp edi, 0xea
jne 0x4092e0
movzx ebx, byte [esp]
mov ecx, dword [esp + 0xc]
mov edi, ecx
test bl, bl
je 0x40933c
lea ebp, [esp + 1]
mov edi, ecx
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 0x409330
mov byte [edi], 0
mov eax, dword [esp + 0x14]
movzx ebx, byte [eax + 0x60]
test bl, bl
je 0x40935c
lea ebp, [eax + 0x61]
nop
nop
mov byte [edi], bl
inc edi
movzx ebx, byte [ebp]
inc ebp
test bl, bl
jne 0x409350
mov byte [edi], 0
movzx ebx, byte [esp + 0x1b]
test bl, bl
je 0x40937c
lea ebp, [esp + 0x1c]
nop
nop
nop
nop
mov byte [edi], bl
inc edi
movzx ebx, byte [ebp]
inc ebp
test bl, bl
jne 0x409370
mov byte [edi], 0
movzx ebx, byte [esi]
test bl, bl
je 0x40939b
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 0x409390
mov byte [edi], 0
movzx ebx, byte [esp + 6]
test bl, bl
je 0x4093bb
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 0x4093b0
mov byte [edi], 0
movzx ebx, byte [edx]
test bl, bl
je 0x4093db
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 0x4093d0
mov byte [edi], 0
movzx edx, byte [esp + 3]
test dl, dl
je 0x4093fb
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 0x4093f0
mov byte [edi], 0
sub edi, ecx
add dword [eax + 0x80], edi
add esp, 0x44
pop esi
pop edi
pop ebx
pop ebp
ret 0xc