Function at 0x409e70
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x90
mov dword [esp + 0x28], ecx
mov eax, dword [ecx + 0x60]
mov dword [esp + 0x24], eax
mov word [esp + 0x10], 0xd3d5
mov byte [esp + 0x12], 0xc4
mov dword [esp + 0x13], 0
mov dword [esp + 0x17], 0
mov byte [esp + 0x1b], 0
mov ecx, 0xa28a8d04
mov eax, 1
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [esp + 0xc], eax
mov dword [esp + 8], ecx
movzx edx, byte [esp + ecx + 0x5d75730c]
mov eax, dword [esp + 0xc]
and eax, 1
xor eax, 0x20000401
mov ecx, dword [esp + 8]
or ecx, 0x2c7466e1
lea esi, [eax + ecx]
mov dword [esp + 4], esi
lea ebx, [eax + ecx]
add ebx, 0x5d7572fc
lea edi, [edx + edx]
not edi
add edi, edx
mov eax, edx
xor eax, 0x42ce6e6e
or edx, 0x91
and edx, eax
mov eax, 0xa28a8d03
sub eax, esi
mov esi, eax
and esi, 0x408a0820
mov ecx, ebx
and ecx, 0x4264e
or ecx, esi
mov esi, ebx
or esi, 1
mov ebx, dword [esp + 4]
and ebx, 0xfffffffe
sub esi, ebx
mov dword [esp + 4], esi
and edi, 0x42ce6e6e
mov ebx, edi
xor ebx, edx
not edx
and edx, edi
add ebx, edi
and eax, 0x91019191
sub ebx, edx
mov edx, eax
not edx
mov esi, dword [esp + 4]
add esi, edx
add esi, 0x5fbc1e95
lea edx, [esi + esi]
not edx
add edx, esi
mov edi, ecx
xor ecx, 0xfdfbd9b1
and ecx, esi
mov esi, dword [esp + 4]
add esi, 0x5fbc1e95
sub eax, esi
xor edi, 0x204264e
and eax, edi
or eax, ecx
and edx, edi
add eax, edi
sub eax, edx
mov ecx, ebx
and ecx, eax
add eax, ebx
add ecx, ecx
sub eax, ecx
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x40]
add eax, 0x188c4871
mov ecx, eax
xor ecx, 0xd8
and eax, 0x58
lea eax, [ecx + eax*2]
mov ecx, dword [esp + 8]
add al, 0x90
mov byte [esp + ecx + 0x5d75730c], al
mov eax, dword [esp + 0xc]
inc ecx
dec eax
cmp ecx, 0xa28a8d10
jne 0x409ec0
mov dword [esp + 0x30], 0x6e506c7a
mov dword [esp + 0x34], 0x454e
mov byte [esp + 0x38], 0
mov edi, 0xc8dcc20c
mov ebx, 0x37233df3
nop
nop
movzx eax, byte [esp + edi + 0x37233e24]
mov ecx, eax
and ecx, 0xfffffffd
mov edx, eax
and edx, 2
mov esi, eax
or esi, 2
imul esi, edx
xor edx, 2
imul edx, ecx
add esi, edx
xor esi, 0xfffffffe
lea ecx, [eax + esi]
inc ecx
mov edx, ecx
xor edx, 0xd6d487cd
or ecx, 0x292b7832
and ecx, edx
and eax, 0xffffffcd
mov edx, ebx
xor edx, 0x160005cd
mov esi, edi
and esi, 0xc0d4820d
or esi, edx
mov edx, ecx
xor edx, eax
not eax
and eax, ecx
add edx, ecx
sub edx, eax
mov eax, edx
and eax, esi
add edx, esi
add eax, eax
sub edx, eax
mov dword [esp + 0x40], edx
mov ecx, dword [esp + 0x40]
add ecx, 0x81f6b1ab
mov eax, ecx
and eax, 0x1a
add eax, eax
xor ecx, 0x65
sub eax, ecx
add al, 0x66
mov byte [esp + edi + 0x37233e24], al
inc edi
dec ebx
cmp edi, 0xc8dcc215
jne 0x409ff0
mov dword [esp + 0x40], 0xf6f43839
mov dword [esp + 0x44], 0xfafa2420
mov dword [esp + 0x48], 0xfff2fc29
mov dword [esp + 0x4c], 0xc2c7fef3
mov dword [esp + 0x50], 0xac7d3d2
mov dword [esp + 0x54], 0xc4e92f2d
mov dword [esp + 0x58], 0xc1cfd9c6
mov dword [esp + 0x5c], 0xd6f204dc
mov dword [esp + 0x60], 0xc4d9ddc3
mov dword [esp + 0x64], 0xd4dfc5d1
mov dword [esp + 0x68], 0xd92203d6
mov dword [esp + 0x6c], 0xea2bcfd3
mov dword [esp + 0x70], 0x1a361c20
mov dword [esp + 0x74], 0x1624d9ff
mov dword [esp + 0x78], 0xedf72821
mov byte [esp + 0x7c], 0xb0
mov dword [esp + 0x7d], 0
mov dword [esp + 0x81], 0
mov word [esp + 0x85], 0
mov edi, 0xe559fdd2
mov ebx, 0x1aa6022d
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + edi + 0x1aa6026e]
mov dword [esp + 8], ecx
lea eax, [edi + 0x1aa60300]
or eax, edi
and eax, ecx
mov edx, eax
not edx
lea esi, [eax + edx*2]
mov ecx, 0xfffffffe
sub ecx, esi
lea edx, [eax + edx*2]
inc edx
mov eax, edx
mov esi, ecx
and esi, 0x8a826b6b
and edx, 0x757d9494
or edx, esi
mov esi, ecx
not esi
and esi, 2
or esi, edx
and eax, 2
xor esi, 0x757d9496
imul esi, eax
xor eax, 2
or ecx, 2
imul ecx, eax
add ecx, esi
mov eax, ebx
mov edx, dword [esp + 8]
sub eax, edx
add edx, edi
and eax, ecx
not ecx
and ecx, edx
sub ecx, eax
mov dword [esp + 0x2c], ecx
mov eax, dword [esp + 0x2c]
add al, 0x42
mov byte [esp + edi + 0x1aa6026e], al
inc edi
dec ebx
cmp edi, 0xe559fe19
jne 0x40a130
mov edx, dword [ebp + 8]
add edx, dword [esp + 0x24]
movzx eax, byte [esp + 0x40]
mov edi, edx
test al, al
je 0x40a1eb
lea ecx, [esp + 0x41]
mov edi, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x40a1e0
mov byte [edi], 0
mov ecx, dword [ebp + 0xc]
movzx eax, byte [ecx]
test al, al
je 0x40a20b
inc ecx
nop
nop
nop
nop
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x40a200
mov byte [edi], 0
movzx eax, byte [esp + 0x30]
test al, al
je 0x40a22b
lea ecx, [esp + 0x31]
nop
nop
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x40a220
mov byte [edi], 0
mov ecx, dword [ebp + 0x10]
movzx eax, byte [ecx]
test al, al
je 0x40a24b
inc ecx
nop
nop
nop
nop
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x40a240
mov byte [edi], 0
movzx eax, byte [esp + 0x10]
test al, al
je 0x40a26b
lea ecx, [esp + 0x11]
nop
nop
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x40a260
mov byte [edi], 0
sub edi, edx
mov eax, dword [esp + 0x28]
add dword [eax + 0x60], edi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0xc