Function at 0x4011e0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x402b0f
mov eax, dword fs:[0]
push eax
sub esp, 0x90
mov eax, dword [0x405024]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
push 0
mov dword [ebp - 0x60], 0
mov dword [ebp - 0x64], 0
call dword [sym.imp.ole32.dll_CoInitialize]
lea eax, [ebp - 0x80]
mov dword [ebp - 0x50], 0
push eax
push 0x403238
push 0x17
push 0
push 0x403258
call dword [sym.imp.ole32.dll_CoCreateInstance]
mov esi, eax
test esi, esi
js 0x40128b
push dword [ebp - 0x80]
call dword [sym.imp.ole32.dll_OleRun]
mov esi, eax
test esi, esi
js 0x40126a
mov eax, dword [ebp - 0x80]
lea edx, [ebp - 0x50]
push edx
push 0x403248
push eax
mov ecx, dword [eax]
call dword [ecx]
mov esi, eax
mov eax, dword [ebp - 0x80]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
test esi, esi
js 0x40128b
mov edi, dword [ebp - 0x50]
mov dword [ebp - 4], 0
test edi, edi
je 0x40172e
jmp 0x4012a2
xor edi, edi
mov dword [ebp - 0x50], edi
test esi, esi
jns 0x40127a
cmp esi, 0x80004002
jne 0x401738
jmp 0x40127a
mov eax, dword [edi]
lea ecx, [ebp - 0x7c]
push ecx
push edi
mov dword [ebp - 0x7c], 0
call dword [eax + 0x50]
test eax, eax
jns 0x4012c3
push 0x403248
push edi
push eax
call fcn.004017c0
mov edi, dword [ebp - 0x7c]
mov dword [ebp - 0x68], edi
lea eax, [ebp - 0x18]
mov byte [ebp - 4], 1
push eax
push 1
push 0xc
mov dword [ebp - 0x18], 3
mov dword [ebp - 0x14], 0
call dword [sym.imp.OLEAUT32.dll_SafeArrayDestroy]
mov dword [ebp - 0x98], eax
test eax, eax
jne 0x4012fd
mov esi, 0x8007000e
jmp 0x4016ef
lea esi, [ebp - 0x48]
mov edi, 3
push esi
call dword [sym.imp.OLEAUT32.dll_VariantClear]
mov eax, 8
mov word [esi], ax
add esi, 0x10
sub edi, 1
jne 0x401305
mov esi, dword [sym.imp.OLEAUT32.dll_SysReAllocString]
push str.Vanilla
call esi
push str.Chocolate
mov dword [ebp - 0x40], eax
call esi
push str.Espresso_Chip
mov dword [ebp - 0x30], eax
call esi
mov edi, dword [ebp - 0x98]
mov esi, dword [sym.imp.OLEAUT32.dll_SafeArrayCopy]
mov dword [ebp - 0x20], eax
lea eax, [ebp - 0x48]
push eax
lea eax, [ebp - 0x54]
mov dword [ebp - 0x54], 3
push eax
push edi
mov dword [ebp - 0x58], 1
mov dword [ebp - 0x5c], 2
call esi
lea eax, [ebp - 0x38]
push eax
lea eax, [ebp - 0x58]
push eax
push edi
call esi
lea eax, [ebp - 0x28]
push eax
lea eax, [ebp - 0x5c]
push eax
push edi
call esi
lea esi, [ebp - 0x40]
mov edi, 3
nop word [eax + eax]
push dword [esi]
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
lea esi, [esi + 0x10]
sub edi, 1
jne 0x401390
push 0xc
call fcn.00401c7b
mov esi, eax
add esp, 4
mov dword [ebp - 0x4c], esi
mov byte [ebp - 4], 2
test esi, esi
je 0x4013d9
xorps xmm0, xmm0
movq qword [esi], xmm0
mov dword [esi + 8], edi
push str.JScript
mov dword [esi + 4], edi
mov dword [esi + 8], 1
call fcn.00401980
mov dword [esi], eax
jmp 0x4013db
xor esi, esi
mov byte [ebp - 4], 1
mov dword [ebp - 0x4c], esi
test esi, esi
je 0x40173e
mov byte [ebp - 4], 3
mov edi, dword [ebp - 0x50]
test edi, edi
je 0x401748
mov byte [ebp - 4], 4
push dword [esi]
mov eax, dword [edi]
push edi
call dword [eax + 0x20]
test eax, eax
jns 0x401415
push 0x403248
push edi
push eax
call fcn.004017c0
mov byte [ebp - 4], 1
or eax, 0xffffffff
lock xadd dword [esi + 8], eax
dec eax
jne 0x401459
mov eax, dword [esi]
test eax, eax
je 0x401437
push eax
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov dword [esi], 0
mov eax, dword [esi + 4]
test eax, eax
je 0x40144e
push eax
call fcn.00401c76
add esp, 4
mov dword [esi + 4], 0
push 0xc
push esi
call fcn.00401cab
add esp, 8
mov esi, dword [ebp - 0x50]
test esi, esi
je 0x401752
mov eax, dword [esi]
push 1
push esi
call dword [eax + 0x40]
test eax, eax
jns 0x40147c
push 0x403248
push esi
push eax
call fcn.004017c0
movaps xmm2, xmmword [str._r_r_r_r_r_r_r_r_r_r_r_r_r_r_r_r]
xor eax, eax
nop word [eax + eax]
movups xmm0, xmmword [eax + str.kxcnydbc_Olh_9Yby]
movaps xmm1, xmm2
pxor xmm1, xmm0
movups xmmword [eax + str.kxcnydbc_Olh_9Yby], xmm1
movups xmm0, xmmword [eax + 0x405058]
movaps xmm1, xmm2
pxor xmm1, xmm0
movups xmmword [eax + 0x405058], xmm1
movups xmm0, xmmword [eax + 0x405068]
movaps xmm1, xmm2
pxor xmm1, xmm0
movups xmmword [eax + 0x405068], xmm1
movups xmm0, xmmword [eax + 0x405078]
movaps xmm1, xmm2
pxor xmm1, xmm0
movups xmmword [eax + 0x405078], xmm1
add eax, 0x40
cmp eax, 0x2bf80
jl 0x401490
cmp eax, 0x2bf91
jge 0x40150b
lea eax, [eax + str.kxcnydbc_Olh_9Yby]
nop dword [eax + eax]
xor byte [eax], 0xd
inc eax
cmp eax, 0x430fd9
jl 0x401500
push 0xc
call fcn.00401c7b
mov esi, eax
add esp, 4
mov dword [ebp - 0x4c], esi
mov byte [ebp - 4], 5
test esi, esi
je 0x40154c
xorps xmm0, xmm0
movq qword [esi], xmm0
mov dword [esi + 8], 0
push str.kxcnydbc_Olh_9Yby
mov dword [esi + 4], 0
mov dword [esi + 8], 1
call fcn.00401980
mov dword [esi], eax
jmp 0x40154e
xor esi, esi
mov byte [ebp - 4], 1
mov dword [ebp - 0x9c], esi
test esi, esi
je 0x40175c
mov byte [ebp - 4], 6
mov edi, dword [ebp - 0x50]
test edi, edi
je 0x401766
mov byte [ebp - 4], 7
push dword [esi]
mov eax, dword [edi]
push edi
call dword [eax + 0x70]
mov dword [ebp - 0x4c], eax
test eax, eax
jns 0x40158e
push 0x403248
push edi
push eax
call fcn.004017c0
or eax, 0xffffffff
lock xadd dword [esi + 8], eax
dec eax
jne 0x4015ce
mov eax, dword [esi]
test eax, eax
je 0x4015ac
push eax
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov dword [esi], 0
mov eax, dword [esi + 4]
test eax, eax
je 0x4015c3
push eax
call fcn.00401c76
add esp, 4
mov dword [esi + 4], 0
push 0xc
push esi
call fcn.00401cab
add esp, 8
mov eax, 3
mov word [ebp - 0x78], ax
mov eax, dword [ebp - 0x4c]
mov dword [ebp - 0x70], eax
lea eax, [ebp - 0x94]
mov dword [ebp - 0x4c], 0
push eax
call dword [sym.imp.OLEAUT32.dll_VariantClear]
push 8
push 0
lea eax, [ebp - 0x78]
mov byte [ebp - 4], 9
push eax
lea eax, [ebp - 0x94]
push eax
call dword [sym.imp.OLEAUT32.dll_VariantTimeToDosDateTime]
test eax, eax
js 0x401770
push dword [ebp - 0x8c]
lea ecx, [ebp - 0x4c]
call fcn.004010b0
lea eax, [ebp - 0x94]
push eax
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
mov byte [ebp - 4], 0xa
mov esi, dword [ebp - 0x4c]
test esi, esi
je 0x40164d
mov edi, dword [esi + 4]
test edi, edi
jne 0x40164f
push dword [esi]
call fcn.00401860
mov edi, eax
mov dword [esi + 4], edi
jmp 0x40164f
xor edi, edi
push edi
push str.func_s_n
call fcn.00401020
add esp, 8
test edi, edi
mov edi, dword [ebp - 0x7c]
jns 0x40168d
test edi, edi
je 0x401776
mov eax, dword [edi]
lea ecx, [ebp - 0x60]
push ecx
push edi
call dword [eax + 0x1c]
mov eax, dword [edi]
lea ecx, [ebp - 0x64]
push ecx
push edi
call dword [eax + 0x34]
mov eax, dword [edi]
lea ecx, [ebp - 0x84]
push ecx
push edi
call dword [eax + 0x24]
push dword [ebp - 0x98]
call dword [sym.imp.OLEAUT32.dll_SafeArrayGetDim]
call dword [sym.imp.ole32.dll_CoUninitialize]
test esi, esi
je 0x4016e3
or eax, 0xffffffff
lock xadd dword [esi + 8], eax
dec eax
jne 0x4016e3
mov eax, dword [esi]
test eax, eax
je 0x4016c1
push eax
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov dword [esi], 0
mov eax, dword [esi + 4]
test eax, eax
je 0x4016d8
push eax
call fcn.00401c76
add esp, 4
mov dword [esi + 4], 0
push 0xc
push esi
call fcn.00401cab
add esp, 8
lea eax, [ebp - 0x78]
push eax
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
xor esi, esi
mov byte [ebp - 4], 0
test edi, edi
je 0x4016fd
mov eax, dword [edi]
push edi
call dword [eax + 8]
mov dword [ebp - 4], 0xffffffff
mov ecx, dword [ebp - 0x50]
test ecx, ecx
je 0x401711
mov edx, dword [ecx]
push ecx
call dword [edx + 8]
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00401c65
mov esp, ebp
pop ebp
ret
push 0x80004003
call fcn.004017a0
push esi
call fcn.004017a0
push 0x8007000e
call fcn.004017a0
push 0x80004003
call fcn.004017a0
push 0x80004003
call fcn.004017a0
push 0x8007000e
call fcn.004017a0
push 0x80004003
call fcn.004017a0
push eax
call fcn.004017a0
push 0x80004003
call fcn.004017a0
int3