Function at 0x40ee10
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x2b4
mov eax, dword [0x70635c]
xor eax, esp
mov dword [esp + 0x2b0], eax
mov eax, dword [ebp + 0x10]
mov ecx, dword [ebp + 0x14]
push ebx
push esi
push edi
mov edi, dword [ebp + 0xc]
mov dword [esp + 0x18], eax
xor eax, eax
cmp dword [ebp + 0x18], 0x10
mov dword [esp + 0x24], edi
mov byte [esp + 0x1a4], 0
mov dword [esp + 0x1a5], eax
mov dword [esp + 0x1a9], eax
mov dword [esp + 0x1ad], eax
mov dword [esp + 0x1b1], eax
mov byte [esp + 0x190], al
mov dword [esp + 0x191], eax
mov dword [esp + 0x195], eax
mov dword [esp + 0x199], eax
mov dword [esp + 0x19d], eax
mov byte [esp + 0x17c], al
mov dword [esp + 0x17d], eax
mov dword [esp + 0x181], eax
mov dword [esp + 0x185], eax
mov dword [esp + 0x189], eax
mov byte [esp + 0x168], al
mov dword [esp + 0x169], eax
mov dword [esp + 0x16d], eax
mov dword [esp + 0x171], eax
mov dword [esp + 0x175], eax
mov dword [esp + 0x1c], eax
je 0x40eef1
mov eax, 0xfffffff6
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x2b0]
xor ecx, esp
call fcn.00606c9e
mov esp, ebp
pop ebp
ret
mov edx, dword [ecx]
mov dword [esp + 0x1a4], eax
mov dword [esp + 0x1a8], eax
mov dword [esp + 0x1ac], eax
mov dword [esp + 0x1b0], eax
mov eax, dword [ecx + 4]
mov dword [esp + 0x1a8], eax
mov eax, dword [ecx + 0xc]
mov dword [esp + 0x1a4], edx
mov edx, dword [ecx + 8]
lea ecx, [esp + 0x1a4]
mov dword [esp + 0x1b0], eax
mov eax, 0x80
push ecx
lea ecx, [esp + 0x7c]
mov dword [esp + 0x1b0], edx
mov byte [esp + 0x2c], 1
mov dword [esp + 0x30], eax
call fcn.0040e5c0
mov dword [esp + 0x78], eax
add esp, 4
mov eax, 0x100
nop
mov edx, dword [ebp + 8]
cmp edx, eax
lea ecx, [eax - 0x100]
mov dword [esp + 0x14], ecx
jl 0x40f11f
lea esi, [edi + eax - 0x100]
mov ecx, 0x40
lea edi, [esp + 0x1b8]
rep movsd dword es:[edi], dword [esi]
jne 0x40ef94
mov dword [esp + 0x1c], 1
add eax, 0x100
mov dword [esp + 0x10], eax
xor eax, eax
mov dword [esp + 0x17c], eax
mov dword [esp + 0x180], eax
mov dword [esp + 0x184], eax
mov dword [esp + 0x188], eax
xor edi, edi
mov dword [esp + 0x20], 0x10
jmp 0x40efd0
movsx esi, di
shl esi, 4
mov edx, dword [esp + esi + 0x1bc]
mov eax, dword [esp + esi + 0x1c0]
mov ecx, dword [esp + esi + 0x1c4]
mov ebx, dword [esp + esi + 0x1b8]
lea esi, [esp + esi + 0x1b8]
mov dword [esp + 0x194], edx
mov dword [esp + 0x198], eax
mov eax, dword [esp + 0x74]
lea edx, [esp + 0x168]
push edx
mov dword [esp + 0x1a0], ecx
push eax
lea ecx, [esp + 0x198]
lea eax, [esp + 0x80]
mov dword [esp + 0x198], ebx
call fcn.0040e800
add esp, 8
xor eax, eax
lea ebx, [ebx]
movzx ecx, byte [esp + eax + 0x17c]
movzx edx, byte [esp + eax + 0x17d]
xor byte [esp + eax + 0x168], cl
xor byte [esp + eax + 0x169], dl
movzx ecx, byte [esp + eax + 0x17e]
movzx edx, byte [esp + eax + 0x17f]
xor byte [esp + eax + 0x16a], cl
xor byte [esp + eax + 0x16b], dl
add eax, 4
cmp eax, 0x10
jl 0x40f040
mov eax, dword [esp + 0x194]
mov ecx, dword [esp + 0x198]
mov edx, dword [esp + 0x19c]
mov dword [esp + 0x180], eax
mov eax, dword [esp + 0x168]
mov dword [esi], eax
mov eax, dword [esp + 0x174]
mov dword [esp + 0x184], ecx
mov ecx, dword [esp + 0x16c]
mov dword [esp + 0x188], edx
mov edx, dword [esp + 0x170]
mov dword [esi + 4], ecx
mov dword [esi + 8], edx
mov dword [esi + 0xc], eax
mov eax, dword [esp + 0x20]
dec eax
inc edi
mov dword [esp + 0x17c], ebx
mov dword [esp + 0x20], eax
test eax, eax
jg 0x40efd0
cmp dword [esp + 0x1c], 1
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x14]
lea edi, [ecx + edx]
mov ecx, 0x40
lea esi, [esp + 0x1b8]
rep movsd dword es:[edi], dword [esi]
je 0x40f2cd
mov edi, dword [esp + 0x24]
mov eax, dword [esp + 0x10]
jmp 0x40ef60
sub edx, ecx
mov esi, edx
push esi
add edi, ecx
lea eax, [esp + 0x1bc]
push edi
push eax
mov dword [esp + 0x1c], esi
call sub.MSVCR90.dll_memcpy
add esp, 0xc
cmp esi, 0x100
jge 0x40f15d
mov ecx, 0x100
sub ecx, esi
push ecx
lea eax, [esp + esi + 0x1bc]
push 0x20
push eax
call sub.MSVCR90.dll_memset
add esp, 0xc
xor eax, eax
mov edi, esi
sar edi, 4
xor ebx, ebx
mov dword [esp + 0x17c], eax
mov dword [esp + 0x180], eax
mov dword [esp + 0x184], eax
mov dword [esp + 0x188], eax
test edi, edi
jle 0x40f2b1
lea ebx, [ebx]
movsx esi, bx
shl esi, 4
mov eax, dword [esp + esi + 0x1bc]
mov ecx, dword [esp + esi + 0x1c0]
mov edx, dword [esp + esi + 0x1b8]
lea esi, [esp + esi + 0x1b8]
mov dword [esp + 0x194], eax
mov dword [esp + 0x198], ecx
mov ecx, dword [esp + 0x74]
lea eax, [esp + 0x168]
push eax
mov dword [esp + 0x194], edx
mov edx, dword [esi + 0xc]
push ecx
lea ecx, [esp + 0x198]
lea eax, [esp + 0x80]
mov dword [esp + 0x1a4], edx
call fcn.0040e800
add esp, 8
xor eax, eax
jmp 0x40f200
movzx edx, byte [esp + eax + 0x17c]
movzx ecx, byte [esp + eax + 0x17d]
xor byte [esp + eax + 0x168], dl
xor byte [esp + eax + 0x169], cl
movzx edx, byte [esp + eax + 0x17e]
movzx ecx, byte [esp + eax + 0x17f]
xor byte [esp + eax + 0x16a], dl
xor byte [esp + eax + 0x16b], cl
add eax, 4
cmp eax, 0x10
jl 0x40f200
mov edx, dword [esp + 0x190]
mov eax, dword [esp + 0x194]
mov ecx, dword [esp + 0x198]
mov dword [esp + 0x17c], edx
mov edx, dword [esp + 0x19c]
mov dword [esp + 0x180], eax
mov eax, dword [esp + 0x168]
mov dword [esi], eax
mov eax, dword [esp + 0x174]
mov dword [esp + 0x184], ecx
mov ecx, dword [esp + 0x16c]
mov dword [esp + 0x188], edx
mov edx, dword [esp + 0x170]
mov dword [esi + 4], ecx
dec edi
inc ebx
mov dword [esi + 8], edx
mov dword [esi + 0xc], eax
test edi, edi
jg 0x40f190
mov esi, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
push esi
lea ecx, [esp + 0x1bc]
push ecx
add edx, eax
push edx
call sub.MSVCR90.dll_memcpy
add esp, 0xc
mov ecx, dword [esp + 0x2bc]
pop edi
pop esi
pop ebx
xor ecx, esp
mov eax, 1
call fcn.00606c9e
mov esp, ebp
pop ebp
ret