Function at 0x409720
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x74
mov dword [esp + 0x34], ecx
mov ecx, dword [ecx + 0x80]
mov dword [esp + 0xa], 0x8f9496bb
mov dword [esp + 0xe], 0x528a9399
mov dword [esp + 0x12], 0xe6f2f8d4
mov dword [esp + 0x16], 0xf3e7253e
mov dword [esp + 0x1a], 0xe3e9e8fc
mov dword [esp + 0x1e], 0xfbe0e8e1
mov dword [esp + 0x22], 0xfc3fe93f
mov dword [esp + 0x26], 0xf4f3fff6
mov dword [esp + 0x2a], 0x161014ec
mov word [esp + 0x2e], 0x1d16
mov edi, 0xb8
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + edi - 0xae]
lea ebx, [edi - 0x80]
mov ebp, esi
not ebp
mov eax, ebp
and eax, 0xb2
or ebp, 0x4d
add esi, ebp
inc esi
or esi, eax
mov eax, edi
and eax, 0xb2
and ebx, 0x4d
or ebx, eax
xor ebx, esi
xor bl, 0xb2
add bl, 0x40
mov byte [esp + edi - 0xae], bl
inc edi
cmp edi, 0xde
jne 0x409790
mov dword [esp + 6], 0xa0d22
mov dword [esp + 0x3a], 0xecc18b8d
mov dword [esp + 0x3e], 0xe9e3f1ea
mov dword [esp + 0x42], 0xe2cea4fc
mov dword [esp + 0x46], 0xfce1fdff
mov dword [esp + 0x4a], 0xfcfbe5f9
mov dword [esp + 0x4e], 0xf1b6affa
mov dword [esp + 0x52], 0xb6f7ebf7
mov dword [esp + 0x56], 0xfeeafcf8
mov dword [esp + 0x5a], 0xc2cc819b
mov dword [esp + 0x5e], 0x859bc0c9
mov dword [esp + 0x62], 0xcec6c0ce
mov dword [esp + 0x66], 0xc98e968e
mov dword [esp + 0x6a], 0xddd7ddd9
mov dword [esp + 0x6e], 0x8ad3d8d5
mov word [esp + 0x72], 0xb99a
mov edi, 0x9138fd9a
mov ebx, 0x2271fb34
nop
nop
nop
nop
nop
mov eax, ebx
and eax, 0xcc
mov edx, edi
xor edx, 0xe6
add edx, eax
xor byte [esp + edi + 0x6ec702a0], dl
inc edi
add ebx, 2
cmp edi, 0x9138fdd4
jne 0x409860
mov ebp, dword [esp + 0x88]
add ebp, ecx
mov word [esp + 3], 0x3136
mov byte [esp + 5], 0x6d
mov edx, 0xf3
mov edi, 0xc
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [esp + edx - 0xf0]
mov ebx, edi
xor ebx, edx
and ebx, eax
xor ebx, edx
add bl, 0x68
mov byte [esp + edx - 0xf0], bl
inc edx
dec edi
cmp edx, 0xf6
jne 0x4098b0
movzx ebx, byte [esp + 3]
mov edx, ebp
test bl, bl
mov esi, dword [esp + 0x34]
je 0x4098fb
lea edi, [esp + 4]
mov edx, ebp
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [edi]
inc edi
test bl, bl
jne 0x4098f0
mov byte [edx], 0
movzx ebx, byte [esi + 0x60]
test bl, bl
mov eax, dword [esp + 0x8c]
je 0x40991b
lea edi, [esi + 0x61]
mov byte [edx], bl
inc edx
movzx ebx, byte [edi]
inc edi
test bl, bl
jne 0x409910
mov byte [edx], 0
movzx ebx, byte [esp + 0x3a]
test bl, bl
je 0x40993b
lea edi, [esp + 0x3b]
nop
nop
nop
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [edi]
inc edi
test bl, bl
jne 0x409930
mov byte [edx], 0
movzx ebx, byte [eax]
test bl, bl
mov dword [esp + 0x30], ebp
je 0x40995b
inc eax
nop
nop
nop
nop
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [eax]
inc eax
test bl, bl
jne 0x409950
mov byte [edx], 0
movzx ecx, byte [esp + 6]
test cl, cl
je 0x40997b
lea edi, [esp + 7]
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [edi]
inc edi
test cl, cl
jne 0x409970
mov byte [edx], 0
movzx ecx, byte [esp + 0xa]
test cl, cl
je 0x40999b
lea edi, [esp + 0xb]
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [edi]
inc edi
test cl, cl
jne 0x409990
mov byte [edx], 0
mov ebx, dword [esp + 0x94]
mov ecx, ebx
shr ecx, 2
mov ebp, dword [esp + 0x90]
mov eax, ebp
mov edi, edx
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov eax, ebx
and ebx, 0xfffffffc
add edx, ebx
add ebx, ebp
mov ecx, eax
mov ebp, eax
shr ecx, 1
and ecx, 1
mov eax, ebx
mov edi, edx
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov eax, ebp
mov ecx, ebp
and ecx, 2
add edx, ecx
test al, 1
je 0x4099e8
movzx eax, byte [ebx + ecx]
mov byte [edx], al
inc edx
mov dword [esp + 0x3a], 0x84808686
mov byte [esp + 0x3e], 0xbf
mov ecx, 0x928942a3
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + ecx + 0x6d76bd97]
mov eax, ebx
and eax, ecx
add al, al
sub bl, al
movzx eax, bl
add eax, ecx
add al, 0xe8
mov byte [esp + ecx + 0x6d76bd97], al
inc ecx
cmp ecx, 0x928942a8
jne 0x409a00
mov dword [esp + 0xa], 0x62638781
mov byte [esp + 0xe], 0x90
mov ecx, 0x5f5d75ec
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + ecx - 0x5f5d75e2]
xor ebx, ecx
neg ebx
mov eax, ebx
and eax, 0x61
add eax, eax
xor ebx, 0x9e
sub ebx, eax
add bl, 2
mov byte [esp + ecx - 0x5f5d75e2], bl
inc ecx
cmp ecx, 0x5f5d75f1
jne 0x409a40
movzx ecx, byte [esp + 0xa]
test cl, cl
je 0x409a8b
lea edi, [esp + 0xb]
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [edi]
inc edi
test cl, cl
jne 0x409a80
mov byte [edx], 0
movzx ecx, byte [esi + 0x60]
test cl, cl
je 0x409aab
lea edi, [esi + 0x61]
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [edi]
inc edi
test cl, cl
jne 0x409aa0
mov byte [edx], 0
movzx ecx, byte [esp + 0x3a]
test cl, cl
je 0x409acb
lea edi, [esp + 0x3b]
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [edi]
inc edi
test cl, cl
jne 0x409ac0
mov byte [edx], 0
sub edx, dword [esp + 0x30]
add dword [esi + 0x80], edx
add esp, 0x74
pop esi
pop edi
pop ebx
pop ebp
ret 0x10