Function at 0x409490
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x74
mov ebp, dword [esp + 0x8c]
mov dword [esp + 4], ecx
mov edx, dword [ecx + 0x80]
mov dword [esp + 0xe], 0x808d8db2
mov dword [esp + 0x12], 0x35838890
mov dword [esp + 0x16], 0xe9fb83dd
mov dword [esp + 0x1a], 0xf4ee2ec7
mov dword [esp + 0x1e], 0xfce0e3f5
mov dword [esp + 0x22], 0xecf9e3f8
mov dword [esp + 0x26], 0xe3269226
mov dword [esp + 0x2a], 0xf3fae4ff
mov dword [esp + 0x2e], 0x9090fe5
mov word [esp + 0x32], 0x160f
xor edi, edi
mov esi, edi
nop
nop
nop
nop
nop
lea eax, [edi + edi]
and eax, 0x72
mov ebx, edi
xor ebx, 0x46
sub ebx, eax
xor bl, byte [esp + edi + 0xe]
mov al, 0x37
sub al, bl
mov byte [esp + edi + 0xe], al
mov eax, edi
xor esi, 1
add esi, edi
and edi, 1
and eax, 0x3e
sub esi, eax
add esi, edi
mov edi, esi
cmp esi, 0x26
jb 0x409500
mov dword [esp + 0xa], 0xa0d22
mov dword [esp + 0x3a], 0x3a17595f
mov dword [esp + 0x3e], 0x373dc338
mov dword [esp + 0x42], 0x341876ce
mov dword [esp + 0x46], 0xd22fcfcd
mov dword [esp + 0x4a], 0x2a2dd72b
mov dword [esp + 0x4e], 0x2f681d28
mov dword [esp + 0x52], 0x6021d925
mov dword [esp + 0x56], 0x10e42e2a
mov dword [esp + 0x5a], 0x141a5329
mov dword [esp + 0x5e], 0x5b25121b
mov dword [esp + 0x62], 0x1810121c
mov dword [esp + 0x66], 0x740245c
mov dword [esp + 0x6a], 0xb010f0b
mov dword [esp + 0x6e], 0x340d0a07
mov word [esp + 0x72], 0x6b48
xor esi, esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [esp + esi + 0x3a]
lea edi, [esi + 0x42]
mov ebx, 0xbd
sub ebx, esi
xor ebx, edi
and ebx, eax
xor ebx, edi
add bl, 0xf0
mov byte [esp + esi + 0x3a], bl
mov eax, esi
and eax, 1
xor esi, 1
lea esi, [esi + eax*2]
cmp esi, 0x3a
jb 0x4095c0
mov ecx, dword [esp + 0x88]
add ecx, edx
mov word [esp + 1], 0x3734
mov byte [esp + 3], 0xb
lea edx, [esp + 1]
mov esi, 0x5b322fe
nop
nop
nop
nop
nop
nop
movzx edi, byte [edx]
lea eax, [esi - 0x5b32200]
and eax, edi
or edi, esi
not edi
or edi, eax
add edi, 0x2d9917f7
mov eax, edi
and eax, 1
xor edi, 1
lea eax, [edi + eax*2]
mov byte [edx], al
inc edx
dec esi
cmp esi, 0x5b322fb
jne 0x409610
movzx ebx, byte [esp + 1]
mov edx, ecx
test bl, bl
je 0x40965b
lea esi, [esp + 2]
mov edx, ecx
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [esi]
inc esi
test bl, bl
jne 0x409650
mov byte [edx], 0
mov eax, dword [esp + 4]
movzx ebx, byte [eax + 0x60]
test bl, bl
je 0x40967b
lea esi, [eax + 0x61]
nop
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [esi]
inc esi
test bl, bl
jne 0x409670
mov byte [edx], 0
movzx ebx, byte [esp + 0x3a]
test bl, bl
je 0x40969b
lea esi, [esp + 0x3b]
nop
nop
nop
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [esi]
inc esi
test bl, bl
jne 0x409690
mov byte [edx], 0
movzx ebx, byte [ebp]
test bl, bl
mov dword [esp + 0x34], ecx
je 0x4096bc
inc ebp
nop
nop
nop
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [ebp]
inc ebp
test bl, bl
jne 0x4096b0
mov byte [edx], 0
movzx ecx, byte [esp + 0xa]
test cl, cl
je 0x4096ed
lea esi, [esp + 0xb]
mov ebp, dword [esp + 0x94]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [esi]
inc esi
test cl, cl
jne 0x4096e0
jmp 0x4096f4
mov ebp, dword [esp + 0x94]
mov byte [edx], 0
movzx ecx, byte [esp + 0xe]
test cl, cl
je 0x40971b
lea esi, [esp + 0xf]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [esi]
inc esi
test cl, cl
jne 0x409710
mov byte [edx], 0
mov ecx, ebp
shr ecx, 2
mov esi, dword [esp + 0x90]
mov eax, esi
mov edi, edx
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov ebx, ebp
and ebx, 0xfffffffc
add edx, ebx
add ebx, esi
mov ecx, ebp
and ecx, 3
mov esi, ecx
not esi
or esi, 1
add esi, ecx
shr ecx, 1
mov eax, ebx
mov edi, edx
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
and ebp, 2
add edx, ebp
mov ecx, esi
inc ecx
je 0x4097df
add ebx, ebp
mov ebp, ecx
and ebp, 7
je 0x409782
xor edi, edi
nop
nop
nop
movzx eax, byte [ebx + edi]
mov byte [edx + edi], al
inc edi
cmp ebp, edi
jne 0x409770
add ebx, edi
add edx, edi
sub ecx, edi
cmp esi, 7
jb 0x4097df
xor esi, esi
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [ebx + esi]
mov byte [edx + esi], al
movzx eax, byte [ebx + esi + 1]
mov byte [edx + esi + 1], al
movzx eax, byte [ebx + esi + 2]
mov byte [edx + esi + 2], al
movzx eax, byte [ebx + esi + 3]
mov byte [edx + esi + 3], al
movzx eax, byte [ebx + esi + 4]
mov byte [edx + esi + 4], al
movzx eax, byte [ebx + esi + 5]
mov byte [edx + esi + 5], al
movzx eax, byte [ebx + esi + 6]
mov byte [edx + esi + 6], al
movzx eax, byte [ebx + esi + 7]
mov byte [edx + esi + 7], al
add esi, 8
cmp ecx, esi
jne 0x409790
add edx, esi
mov dword [esp + 0x3a], 0x5a525450
mov byte [esp + 0x3e], 0x41
mov ecx, 0x36346465
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + ecx - 0x3634642b]
mov eax, ebx
and eax, ecx
add al, al
sub bl, al
movzx eax, bl
add eax, ecx
add al, 0xd8
mov byte [esp + ecx - 0x3634642b], al
inc ecx
cmp ecx, 0x3634646a
jne 0x409800
mov dword [esp + 0xe], 0x2c2dd5d3
mov byte [esp + 0x12], 0xc2
xor ecx, ecx
xor esi, esi
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, ecx
and eax, 0xc
mov ebx, esi
xor ebx, 0xae
add ebx, eax
xor bl, byte [esp + esi + 0xe]
add bl, 0x90
mov byte [esp + esi + 0xe], bl
inc esi
add ecx, 2
cmp esi, 5
jne 0x409840
movzx ecx, byte [esp + 0xe]
test cl, cl
je 0x40988d
lea esi, [esp + 0xf]
mov eax, dword [esp + 4]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [esi]
inc esi
test cl, cl
jne 0x409880
jmp 0x409891
mov eax, dword [esp + 4]
mov byte [edx], 0
movzx ecx, byte [eax + 0x60]
test cl, cl
je 0x4098ab
lea esi, [eax + 0x61]
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [esi]
inc esi
test cl, cl
jne 0x4098a0
mov byte [edx], 0
movzx ecx, byte [esp + 0x3a]
test cl, cl
je 0x4098cb
lea esi, [esp + 0x3b]
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [esi]
inc esi
test cl, cl
jne 0x4098c0
mov byte [edx], 0
sub edx, dword [esp + 0x34]
add dword [eax + 0x80], edx
add esp, 0x74
pop esi
pop edi
pop ebx
pop ebp
ret 0x10