Function at 0x40143c
Capabilities:
Encode data using xor
Load windows common language runtime

Disassembly:
sub esp, 0x78
push ebx
push ebp
push esi
push edi
xor ebx, ebx
push ebx
mov dword [esp + 0x1c], ebx
call dword [sym.imp.ole32.dll_CoInitialize]
test eax, eax
jne 0x4018e8
lea eax, [esp + 0x3c]
push eax
push 0x422554
push 0x422390
call sub.mscoree.dll_CLRCreateInstance
test eax, eax
jne 0x4018e8
mov eax, dword [esp + 0x3c]
lea edx, [esp + 0x24]
push edx
push 0x4223a0
push dword [0x431058]
mov ecx, dword [eax]
push eax
call dword [ecx + 0xc]
test eax, eax
jne 0x4018e8
mov eax, dword [esp + 0x24]
lea edx, [esp + 0x40]
push edx
push 0x422380
push 0x422360
mov ecx, dword [eax]
push eax
call dword [ecx + 0x24]
test eax, eax
jne 0x4018e8
mov eax, dword [esp + 0x40]
push eax
mov ecx, dword [eax]
call dword [ecx + 0xc]
test eax, eax
jne 0x4018e8
mov eax, dword [esp + 0x24]
lea edx, [esp + 0x28]
push edx
push 0x422370
push 0x422350
mov ecx, dword [eax]
push eax
call dword [ecx + 0x24]
test eax, eax
jne 0x4018e8
mov eax, dword [esp + 0x28]
lea edx, [esp + 0x44]
push edx
push eax
mov ecx, dword [eax]
call dword [ecx + 0x48]
test eax, eax
jne 0x4018e8
mov eax, dword [esp + 0x44]
lea edx, [esp + 0x14]
push edx
push 0x42251c
push eax
mov ecx, dword [eax]
call dword [ecx]
test eax, eax
jne 0x4018e8
push 0x422220
lea ecx, [esp + 0x3c]
call fcn.0040314a
mov edx, dword [eax]
test edx, edx
je 0x401534
mov edx, dword [edx]
jmp 0x401536
mov edx, ebx
mov eax, dword [esp + 0x14]
push edx
push eax
mov ecx, dword [eax]
call dword [ecx + 0x18]
mov ecx, dword [esp + 0x38]
mov esi, eax
test ecx, ecx
je 0x401550
call fcn.004039b1
test esi, esi
jne 0x4018e8
cmp dword [0x431024], 0x10
lea ecx, [esp + 0x38]
mov esi, 0x431010
mov eax, esi
cmovae eax, dword [0x431010]
push eax
call fcn.0040314a
mov edx, dword [eax]
test edx, edx
je 0x401581
mov edx, dword [edx]
jmp 0x401583
mov edx, ebx
mov eax, dword [esp + 0x14]
push edx
push eax
mov ecx, dword [eax]
call dword [ecx + 0x10]
mov ecx, dword [esp + 0x38]
mov edi, eax
test ecx, ecx
je 0x40159d
call fcn.004039b1
test edi, edi
jne 0x4018e8
cmp dword [0x431024], 0x10
lea ecx, [esp + 0x38]
mov eax, esi
cmovae eax, dword [0x431010]
push eax
call fcn.0040314a
mov edx, dword [eax]
test edx, edx
je 0x4015c9
mov edx, dword [edx]
jmp 0x4015cb
mov edx, ebx
mov eax, dword [esp + 0x14]
push edx
push eax
mov ecx, dword [eax]
call dword [ecx + 0x30]
mov ecx, dword [esp + 0x38]
mov edi, eax
test ecx, ecx
je 0x4015e5
call fcn.004039b1
test edi, edi
jne 0x4018e8
cmp dword [0x431024], 0x10
lea ecx, [esp + 0x38]
cmovae esi, dword [0x431010]
push esi
call fcn.0040314a
mov edx, dword [eax]
test edx, edx
je 0x40160f
mov edx, dword [edx]
jmp 0x401611
mov edx, ebx
mov eax, dword [esp + 0x14]
push edx
push eax
mov ecx, dword [eax]
call dword [ecx + 0x40]
mov ecx, dword [esp + 0x38]
mov esi, eax
test ecx, ecx
je 0x40162b
call fcn.004039b1
test esi, esi
jne 0x4018e8
push 8
pop eax
cmp dword [0x43103c], eax
lea esi, [esp + 0x48]
mov eax, dword [esp + 0x28]
mov edi, 0x431028
push esi
push ebx
push dword [esp + 0x1c]
mov ecx, dword [eax]
mov edx, edi
cmovae edx, dword [0x431028]
push edx
push eax
call dword [ecx + 0x44]
test eax, eax
jne 0x4018e8
mov eax, dword [esp + 0x18]
test eax, eax
je 0x401675
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [esp + 0x48]
lea edx, [esp + 0x18]
push edx
push 0x42252c
push eax
mov ecx, dword [eax]
call dword [ecx]
test eax, eax
jne 0x4018e8
lea eax, [esp + 0x50]
mov dword [esp + 0x54], ebx
push eax
push 1
mov ebp, 0x4000
push 0x11
mov dword [esp + 0x5c], ebp
call dword [sym.imp.OLEAUT32.dll_SafeArrayDestroy]
mov esi, eax
mov edx, ebx
lea ecx, [edx + 1]
movsx ecx, cl
imul eax, ecx, 0xa
xor byte [edx + str.bm_H59t], al
inc edx
cmp edx, 0xd
jl 0x4016b0
push dword [esi + 0xc]
push ebp
push str.bm_H59t
call fcn.00401919
add esp, 0xc
mov ecx, ebx
lea eax, [ecx + 1]
movsx eax, al
imul eax, eax, 0xa
xor byte [ecx + str.bm_H59t], al
inc ecx
cmp ecx, 0xd
jl 0x4016d8
mov eax, dword [esp + 0x18]
test eax, eax
je 0x40190e
mov ecx, dword [eax]
lea edx, [esp + 0x2c]
push edx
push esi
push eax
call dword [ecx + 0xb4]
test eax, eax
jne 0x4018e8
push str.hostitsi.Program
lea ecx, [esp + 0x20]
call fcn.0040314a
mov esi, dword [esp + 0x1c]
test esi, esi
je 0x40172a
mov edx, dword [esi]
jmp 0x40172c
mov edx, ebx
mov eax, dword [esp + 0x2c]
lea ebp, [esp + 0x78]
push ebp
push edx
push eax
mov ecx, dword [eax]
call dword [ecx + 0xa4]
test eax, eax
jne 0x4018dd
mov dword [esp + 0x30], ebx
test esi, esi
je 0x401753
mov edx, dword [esi]
jmp 0x401755
mov edx, ebx
mov eax, dword [esp + 0x2c]
lea ebp, [esp + 0x30]
push ebp
push 1
push ebx
mov ecx, dword [eax]
push edx
push eax
call dword [ecx + 0x90]
test eax, eax
jne 0x4018dd
cmp dword [0x43103c], 8
lea ecx, [esp + 0x20]
cmovae edi, dword [0x431028]
push edi
call fcn.0040317f
cmp dword [esp + 0xa0], 0x10
lea eax, [esp + 0x8c]
lea ecx, [esp + 0x38]
cmovae eax, dword [esp + 0x8c]
push eax
call fcn.0040314a
push 3
push ebx
push 0xc
call dword [sym.imp.OLEAUT32.dll_SafeArrayCopyData]
mov ebp, eax
lea eax, [esp + 0x10]
push eax
push ebp
call dword [sym.imp.OLEAUT32.dll_SafeArrayUnaccessData]
mov ecx, dword [esp + 0x10]
mov edi, dword [esp + 0x20]
push 0x14
pop eax
mov word [ecx], ax
mov ecx, dword [esp + 0x10]
push 8
pop edx
mov dword [ecx + 8], fcn.00401919
mov eax, dword [esp + 0x10]
mov word [eax + 0x10], dx
test edi, edi
je 0x4017f1
mov ecx, dword [edi]
jmp 0x4017f3
mov ecx, ebx
mov eax, dword [esp + 0x10]
mov dword [eax + 0x18], ecx
mov eax, dword [esp + 0x10]
mov word [eax + 0x20], dx
mov eax, dword [esp + 0x38]
test eax, eax
je 0x40180e
mov ecx, dword [eax]
jmp 0x401810
mov ecx, ebx
mov eax, dword [esp + 0x10]
push ebp
mov dword [eax + 0x28], ecx
call dword [sym.imp.OLEAUT32.dll_SafeArrayGetElement]
test eax, eax
jne 0x4018c3
push str.Init
lea ecx, [esp + 0x38]
call fcn.0040317f
mov esi, dword [sym.imp.OLEAUT32.dll_VariantClear]
lea eax, [esp + 0x68]
push eax
call esi
lea eax, [esp + 0x58]
push eax
call esi
mov eax, dword [esp + 0x34]
test eax, eax
je 0x401854
mov edx, dword [eax]
jmp 0x401856
mov edx, ebx
mov eax, dword [esp + 0x30]
lea esi, [esp + 0x4c]
push esi
push 0x118
push edx
mov ecx, dword [eax]
push eax
call dword [ecx + 0xb4]
test eax, eax
jne 0x401898
mov eax, dword [esp + 0x4c]
lea edx, [esp + 0x68]
push edx
push ebp
sub esp, 0x10
lea esi, [esp + 0x70]
mov ecx, dword [eax]
mov edi, esp
push eax
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
call dword [ecx + 0x94]
test eax, eax
jne 0x401898
mov bl, 1
mov esi, dword [sym.imp.OLEAUT32.dll_VariantCopy]
lea eax, [esp + 0x58]
push eax
call esi
lea eax, [esp + 0x68]
push eax
call esi
mov eax, dword [esp + 0x34]
test eax, eax
je 0x4018bb
mov ecx, eax
call fcn.004039b1
mov edi, dword [esp + 0x20]
mov esi, dword [esp + 0x1c]
mov eax, dword [esp + 0x38]
test eax, eax
je 0x4018d2
mov ecx, eax
call fcn.004039b1
test edi, edi
je 0x4018dd
mov ecx, edi
call fcn.004039b1
test esi, esi
je 0x4018e8
mov ecx, esi
call fcn.004039b1
mov ecx, dword [esp + 0x18]
test ecx, ecx
je 0x4018f6
mov edx, dword [ecx]
push ecx
call dword [edx + 8]
lea ecx, [esp + 0x8c]
call fcn.004044aa
pop edi
pop esi
pop ebp
mov al, bl
pop ebx
add esp, 0x78
ret 0x18
push 0x80004003
call fcn.00408400
int3