Function at 0x409490
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], 0xe3e5
mov byte [esp + 5], 0xea
mov ebx, 0x8d0439a8
mov ebp, 0x57
nop
nop
nop
nop
nop
movzx edi, byte [esp + ebx + 0x72fbc65b]
mov eax, edi
not eax
mov ecx, ebx
and ecx, eax
or eax, ebp
add eax, edi
inc eax
or eax, ecx
mov ecx, eax
xor ecx, 0x41
and eax, 0x3e
add eax, eax
sub eax, ecx
inc al
mov byte [esp + ebx + 0x72fbc65b], al
inc ebx
dec ebp
cmp ebx, 0x8d0439ab
jne 0x4094d0
mov dword [esp + 6], 0x4640446a
mov word [esp + 0xa], 0x4d46
xor ebp, ebp
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [esp + ebp + 6]
mov ebx, ebp
or ebx, 8
mov ecx, 0xd1f533f7
sub ecx, ebp
xor ebx, ecx
and ebx, eax
xor ebx, ecx
mov eax, ebx
not eax
mov ecx, eax
and ecx, 0xbf
xor ebx, 0x40
add ebx, eax
and eax, 0x40
sub ebx, eax
add ebx, ecx
inc bl
mov byte [esp + ebp + 6], bl
mov eax, ebp
and eax, 1
xor ebp, 1
lea ebp, [ebp + eax*2]
cmp ebp, 6
jb 0x409520
mov dword [esp + 0x1b], 0x3386064
mov dword [esp + 0x1f], 0xe1a0a03
mov dword [esp + 0x23], 0xd374f05
mov dword [esp + 0x27], 0xfb080606
mov dword [esp + 0x2b], 0xf3f2fef0
mov dword [esp + 0x2f], 0xe6afc4f3
mov dword [esp + 0x33], 0xb9fef0fe
mov dword [esp + 0x37], 0xf9f3e7e1
mov dword [esp + 0x3b], 0xfde5bad2
mov dword [esp + 0x3f], 0xb2d2fbe0
mov byte [esp + 0x43], 0x91
xor ebx, ebx
nop
nop
nop
mov eax, ebx
add al, 0xf1
xor al, byte [esp + ebx + 0x1b]
add al, 0x78
mov byte [esp + ebx + 0x1b], al
inc ebx
cmp ebx, 0x29
jne 0x4095c0
mov eax, dword [esp + 0x10]
add dword [esp + 0xc], eax
mov word [esp], 0x595e
mov byte [esp + 2], 0x85
xor edi, edi
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [esp + edi]
lea ecx, [edi + 0x9f9ef5b]
xor ecx, eax
mov eax, ecx
xor eax, 0x58
mov ebx, ecx
or ebx, 0x27
and ebx, eax
xor ecx, 0x27
lea eax, [ecx + ebx*2]
inc al
mov byte [esp + edi], al
mov eax, edi
and eax, 1
xor edi, 1
lea edi, [edi + eax*2]
cmp edi, 3
jb 0x4095f0
movzx ebx, byte [esp]
mov ecx, dword [esp + 0xc]
mov edi, ecx
test bl, bl
je 0x40964c
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 0x409640
mov byte [edi], 0
mov eax, dword [esp + 0x14]
movzx ebx, byte [eax + 0x60]
test bl, bl
je 0x40966c
lea ebp, [eax + 0x61]
nop
nop
mov byte [edi], bl
inc edi
movzx ebx, byte [ebp]
inc ebp
test bl, bl
jne 0x409660
mov byte [edi], 0
movzx ebx, byte [esp + 0x1b]
test bl, bl
je 0x40968c
lea ebp, [esp + 0x1c]
nop
nop
nop
nop
mov byte [edi], bl
inc edi
movzx ebx, byte [ebp]
inc ebp
test bl, bl
jne 0x409680
mov byte [edi], 0
movzx ebx, byte [esi]
test bl, bl
je 0x4096ab
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 0x4096a0
mov byte [edi], 0
movzx ebx, byte [esp + 6]
test bl, bl
je 0x4096cb
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 0x4096c0
mov byte [edi], 0
movzx ebx, byte [edx]
test bl, bl
je 0x4096eb
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 0x4096e0
mov byte [edi], 0
movzx edx, byte [esp + 3]
test dl, dl
je 0x40970b
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 0x409700
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