Function at 0x409300
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x40
mov esi, dword [esp + 0x58]
mov dword [esp + 0x10], ecx
mov eax, dword [ecx + 0x80]
mov dword [esp + 0xc], eax
mov word [esp + 3], 0x4543
mov byte [esp + 5], 0x30
mov edi, 0xe195febe
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + edi + 0x1e6a0145]
mov eax, edi
and eax, ecx
add eax, eax
add ecx, edi
mov ebx, eax
xor ebx, ecx
not eax
and eax, ecx
add eax, eax
sub eax, ebx
add al, 0x10
mov byte [esp + edi + 0x1e6a0145], al
inc edi
cmp edi, 0xe195fec1
jne 0x409330
mov dword [esp + 6], 0xe5fdfb07
mov word [esp + 0xa], 0xfae3
xor edi, edi
nop
movzx eax, byte [esp + edi + 6]
lea ecx, [edi - 0x25231173]
xor ecx, eax
add ecx, 0x29188b97
mov eax, ecx
and eax, 1
xor ecx, 1
lea eax, [ecx + eax*2]
mov byte [esp + edi + 6], al
mov eax, edi
not eax
or eax, 1
add eax, edi
or edi, 1
add edi, eax
inc edi
cmp edi, 6
jb 0x409370
mov dword [esp + 0x17], 0x668bcdcb
mov dword [esp + 0x1b], 0x63695f64
mov dword [esp + 0x1f], 0x9874a25a
mov dword [esp + 0x23], 0xa69ba3a1
mov dword [esp + 0x27], 0x9691a39f
mov dword [esp + 0x2b], 0x9b5c6194
mov dword [esp + 0x2f], 0x4c8dad91
mov dword [esp + 0x33], 0x84b08286
mov dword [esp + 0x37], 0x8886477d
mov dword [esp + 0x3b], 0x4f718e87
mov byte [esp + 0x3f], 0x2e
xor ebx, ebx
nop
nop
nop
movzx edi, byte [esp + ebx + 0x17]
lea eax, [ebx + 0x6b314c76]
mov ebp, 0x89
sub ebp, ebx
and ebp, 0xae
mov ecx, eax
and ecx, 0x51
or ecx, ebp
mov edx, 9
sub edx, ebx
and edx, 0x3a
mov ebp, eax
and ebp, 0xc5
or ebp, edx
xor ecx, 0xae
xor ebp, 0x3a
or ebp, ecx
and ebp, edi
mov ecx, 0x14ceb389
sub ecx, ebx
and ecx, 0x140cb2d7
and eax, 0x61110828
or eax, ecx
mov ecx, eax
xor ecx, 0xe1d30928
not edi
xor eax, 0xd7
or eax, edi
add ecx, eax
inc ecx
or ecx, ebp
mov eax, 0x4e
sub eax, ecx
and ecx, 1
or eax, 1
add eax, ecx
mov byte [esp + ebx + 0x17], al
add ebx, 0xa3ed76cd
mov eax, ebx
xor eax, 0xa3ed76cc
and ebx, 0x133
add ebx, ebx
sub ebx, eax
cmp ebx, 0x29
jb 0x409400
mov ebp, dword [esp + 0x54]
add ebp, dword [esp + 0xc]
mov word [esp], 0xf5ea
mov byte [esp + 2], 0x29
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x4f
xor cl, byte [esp + eax]
add cl, 0x88
mov byte [esp + eax], cl
inc eax
cmp eax, 3
jne 0x4094c0
movzx eax, byte [esp]
mov edi, ebp
test al, al
je 0x4094fb
lea ebx, [esp + 1]
mov edi, ebp
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [ebx]
inc ebx
test al, al
jne 0x4094f0
mov byte [edi], 0
mov ecx, dword [esp + 0x10]
movzx eax, byte [ecx + 0x60]
test al, al
je 0x40952d
lea ebx, [ecx + 0x61]
mov edx, dword [esp + 0x5c]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [ebx]
inc ebx
test al, al
jne 0x409520
jmp 0x409531
mov edx, dword [esp + 0x5c]
mov byte [edi], 0
movzx eax, byte [esp + 0x17]
test al, al
je 0x40955b
lea ebx, [esp + 0x18]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [ebx]
inc ebx
test al, al
jne 0x409550
mov byte [edi], 0
movzx eax, byte [esi]
test al, al
je 0x40957b
inc esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [esi]
inc esi
test al, al
jne 0x409570
mov byte [edi], 0
movzx eax, byte [esp + 6]
test al, al
je 0x40959b
lea esi, [esp + 7]
nop
nop
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [esi]
inc esi
test al, al
jne 0x409590
mov byte [edi], 0
movzx eax, byte [edx]
test al, al
je 0x4095bb
inc edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [edx]
inc edx
test al, al
jne 0x4095b0
mov byte [edi], 0
movzx eax, byte [esp + 3]
test al, al
je 0x4095db
lea edx, [esp + 4]
nop
nop
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [edx]
inc edx
test al, al
jne 0x4095d0
mov byte [edi], 0
sub edi, ebp
add dword [ecx + 0x80], edi
add esp, 0x40
pop esi
pop edi
pop ebx
pop ebp
ret 0xc