Function at 0x405b50
Capabilities:
Load windows common language runtime

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x4080f6
mov eax, dword fs:[0]
push eax
sub esp, 0xf0
mov eax, dword [0x40c004]
xor eax, esp
mov dword [esp + 0xe8], eax
push ebx
push esi
push edi
mov eax, dword [0x40c004]
xor eax, esp
push eax
lea eax, [esp + 0x100]
mov dword fs:[0], eax
mov edi, ecx
mov dword [esp + 0x10], 0
mov dword [esp + 0x30], 0
call fcn.004068b0
test al, al
jne 0x408a2d
mov esi, dword [ebp + 0xc]
mov ecx, esi
call fcn.004068b0
test al, al
jne 0x408a2d
mov dword [esp + 0x14], 0
mov ecx, edi
mov dword [esp + 0x108], 0
call fcn.004068b0
test al, al
jne 0x4060ed
mov ecx, esi
call fcn.004068b0
test al, al
jne 0x4060ed
lea eax, [esp + 0x14]
test eax, eax
je 0x4060ed
push 1
call dword [sym.imp.KERNEL32.dll_SetErrorMode]
lea eax, [esp + 0x14]
push eax
push 0x4015c0
push 0x4015d0
push 4
push 0x4012d4
push esi
call dword [sym.imp.mscoree.dll_CorBindToRuntimeEx]
cmp eax, 0x80131700
je 0x4085c5
mov eax, dword [esp + 0x14]
test eax, eax
je 0x4085c5
mov ecx, dword [eax]
push eax
mov esi, dword [ecx + 0x28]
mov ecx, esi
call dword [0x40d1c0]
call esi
test eax, eax
js 0x4085ae
xor esi, esi
cmp esi, 0xffff0000
je 0x4085f0
mov bl, byte [ebp + 0x18]
test bl, bl
jne 0x4085dd
push dword [ebp + 0x18]
mov edx, dword [ebp + 0x24]
lea eax, [esp + 0x14]
mov ecx, dword [ebp + 0x20]
push eax
push dword [ebp + 0x1c]
call fcn.00406a10
test al, al
je 0x4060f7
mov dword [esp + 0x20], 0
mov byte [esp + 0x108], 1
mov dword [esp + 0x24], 0
mov byte [esp + 0x108], 2
lea edx, [esp + 0x24]
mov eax, dword [esp + 0x14]
push edx
push eax
mov ecx, dword [eax]
mov esi, dword [ecx + 0x34]
mov ecx, esi
call dword [0x40d1c0]
call esi
mov ecx, eax
test ecx, ecx
js 0x4089ea
mov eax, dword [esp + 0x24]
test eax, eax
je 0x4089ea
mov esi, dword [eax]
lea ecx, [esp + 0x20]
push ecx
push 0x401620
push eax
mov esi, dword [esi]
mov ecx, esi
call dword [0x40d1c0]
call esi
test eax, eax
js 0x40899d
cmp dword [esp + 0x20], 0
je 0x40899d
mov dword [esp + 0x28], 0
push 0xc
mov byte [esp + 0x10c], 3
call dword [sym.imp.msvcrt.dll___2_YAPAXI_Z]
mov esi, eax
add esp, 4
mov dword [esp + 0x18], esi
mov byte [esp + 0x108], 4
test esi, esi
je 0x406101
mov edi, dword [ebp + 0x10]
push edi
mov dword [esi + 4], 0
mov dword [esi + 8], 1
call dword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov dword [esi], eax
test eax, eax
je 0x408609
mov byte [esp + 0x108], 3
mov dword [esp + 0x18], esi
test esi, esi
je 0x40864f
push 0xc
mov byte [esp + 0x10c], 5
call dword [sym.imp.msvcrt.dll___2_YAPAXI_Z]
mov ebx, eax
add esp, 4
mov dword [esp + 0x1c], ebx
mov byte [esp + 0x108], 6
test ebx, ebx
je 0x406108
push 0x4013c8
mov dword [ebx + 4], 0
mov dword [ebx + 8], 1
call dword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov dword [ebx], eax
test eax, eax
je 0x408687
mov byte [esp + 0x108], 5
mov dword [esp + 0x1c], ebx
test ebx, ebx
je 0x4086b6
mov byte [esp + 0x108], 7
lea ecx, [esp + 0x28]
mov eax, dword [esp + 0x20]
push ecx
push dword [ebx]
mov edi, dword [eax]
push dword [esi]
push eax
mov edi, dword [edi + 0x94]
mov ecx, edi
call dword [0x40d1c0]
call edi
test eax, eax
js 0x408946
cmp dword [esp + 0x28], 0
je 0x408946
xor eax, eax
lea edi, [esp + 0x34]
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
xor eax, eax
mov word [esp + 0x34], ax
mov byte [esp + 0x108], 8
lea edx, [esp + 0x34]
mov eax, dword [esp + 0x28]
push edx
push eax
mov ecx, dword [eax]
mov edi, dword [ecx + 0x38]
mov ecx, edi
call dword [0x40d1c0]
call edi
test eax, eax
js 0x4086f4
mov dword [esp + 0x2c], 0
mov byte [esp + 0x108], 9
lea eax, [esp + 0x2c]
push dword [esp + 0x3c]
push eax
call dword [sym.imp.ATL.DLL_AtlComPtrAssign]
mov eax, dword [esp + 0x2c]
lea ecx, [esp + 0x4c]
push ecx
push 0x800
push 1
mov dword [esp + 0x5c], 0x401414
lea ecx, [esp + 0x5c]
mov edi, dword [eax]
push ecx
push 0x401110
push eax
mov edi, dword [edi + 0x14]
mov ecx, edi
call dword [0x40d1c0]
call edi
test eax, eax
js 0x4087af
mov eax, 0x2000
mov word [esp + 0xb4], ax
mov eax, dword [esp + 0x10]
mov dword [esp + 0xbc], eax
mov eax, dword [ebp + 8]
test eax, eax
jne 0x408800
mov ecx, 8
mov dword [esp + 0xcc], eax
mov word [esp + 0xc4], cx
lea eax, [esp + 0xb4]
lea ecx, [esp + 0x48]
mov dword [esp + 0x64], eax
push ecx
lea ecx, [esp + 0xdc]
mov dword [esp + 0x6c], 0
push ecx
lea ecx, [esp + 0xac]
mov dword [esp + 0x74], 2
push ecx
mov eax, 0x17
mov dword [esp + 0x7c], 0
mov word [esp + 0xb0], ax
lea ecx, [esp + 0x70]
mov eax, dword [esp + 0x38]
push ecx
push 1
push 0x800
mov dword [esp + 0xc4], 0
mov dword [esp + 0x60], 0
mov edi, dword [eax]
push 0x401110
push dword [esp + 0x68]
mov edi, dword [edi + 0x18]
mov ecx, edi
push eax
call dword [0x40d1c0]
call edi
mov ecx, eax
mov eax, dword [esp + 0xac]
mov dword [esp + 0x10], eax
test ecx, ecx
js 0x40887f
mov byte [esp + 0x108], 8
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x405f88
mov ecx, dword [eax]
push eax
mov edi, dword [ecx + 8]
mov ecx, edi
call dword [0x40d1c0]
call edi
mov eax, 0xfff
mov byte [esp + 0x108], 7
cmp word [esp + 0x34], ax
je 0x40890b
lea eax, [esp + 0x34]
push eax
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
or edi, 0xffffffff
mov byte [esp + 0x108], 5
lea ecx, [ebx + 8]
mov eax, edi
lock xadd dword [ecx], eax
dec eax
jne 0x405fea
mov eax, dword [ebx]
test eax, eax
je 0x405fd5
push eax
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov dword [ebx], 0
mov eax, dword [ebx + 4]
test eax, eax
jne 0x40891a
push ebx
call dword [sym.imp.msvcrt.dll___3_YAXPAX_Z]
add esp, 4
mov dword [esp + 0x1c], 0
lea eax, [esi + 8]
mov byte [esp + 0x108], 3
lock xadd dword [eax], edi
dec edi
jne 0x40602c
mov eax, dword [esi]
test eax, eax
je 0x406017
push eax
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov dword [esi], 0
mov eax, dword [esi + 4]
test eax, eax
jne 0x408930
push esi
call dword [sym.imp.msvcrt.dll___3_YAXPAX_Z]
add esp, 4
mov byte [esp + 0x108], 2
mov eax, dword [esp + 0x28]
mov dword [esp + 0x18], 0
test eax, eax
je 0x406054
mov ecx, dword [eax]
push eax
mov esi, dword [ecx + 8]
mov ecx, esi
call dword [0x40d1c0]
call esi
mov byte [esp + 0x108], 1
mov eax, dword [esp + 0x24]
test eax, eax
je 0x406074
mov ecx, dword [eax]
push eax
mov esi, dword [ecx + 8]
mov ecx, esi
call dword [0x40d1c0]
call esi
mov byte [esp + 0x108], 0
mov eax, dword [esp + 0x20]
test eax, eax
je 0x406094
mov ecx, dword [eax]
push eax
mov esi, dword [ecx + 8]
mov ecx, esi
call dword [0x40d1c0]
call esi
mov dword [esp + 0x108], 0xffffffff
mov eax, dword [esp + 0x14]
test eax, eax
je 0x4060b7
mov ecx, dword [eax]
push eax
mov esi, dword [ecx + 8]
mov ecx, esi
call dword [0x40d1c0]
call esi
mov esi, dword [esp + 0x10]
push dword [esp + 0x30]
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov eax, esi
mov ecx, dword [esp + 0x100]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xe8]
xor ecx, esp
call fcn.00407980
mov esp, ebp
pop ebp
ret 0x20
mov esi, 0xffff0000
jmp 0x405c56
mov esi, 0xffff0000
jmp 0x4085f0
xor esi, esi
jmp 0x405d59
xor ebx, ebx
jmp 0x405db9
push eax
push 5
push 0
call fcn.0040948b
add esp, 0xc
mov esi, 0xffff0000
jmp 0x405c56
push edi
push esi
push 3
push 0
call fcn.0040948b
add esp, 0x10
mov esi, 0xffff0000
jmp 0x405c56
call fcn.0040938e
neg al
sbb al, al
and al, bl
mov byte [ebp + 0x18], al
jmp 0x405c6d
lea ecx, [esp + 0x14]
mov dword [esp + 0x108], 0xffffffff
call fcn.0040921a
jmp 0x4060bb
test edi, edi
je 0x405d59
push 0x40b290
lea eax, [esp + 0x98]
mov dword [esp + 0x98], 0x401b84
push eax
mov dword [esp + 0xa0], 0x8007000e
mov dword [esp + 0xa4], 0
mov dword [esp + 0xa8], 0
call sub.msvcrt.dll__CxxThrowException
push 0x40b290
lea eax, [esp + 0x78]
mov dword [esp + 0x78], 0x401b84
push eax
mov dword [esp + 0x80], 0x8007000e
mov dword [esp + 0x84], 0
mov dword [esp + 0x88], 0
call sub.msvcrt.dll__CxxThrowException
push 0x40b290
lea eax, [esp + 0x58]
mov dword [esp + 0x58], 0x401b84
push eax
mov dword [esp + 0x60], 0x8007000e
mov dword [esp + 0x64], 0
mov dword [esp + 0x68], 0
call sub.msvcrt.dll__CxxThrowException
push 0x40b290
lea eax, [esp + 0x88]
mov dword [esp + 0x88], 0x401b84
push eax
mov dword [esp + 0x90], 0x8007000e
mov dword [esp + 0x94], 0
mov dword [esp + 0x98], 0
call sub.msvcrt.dll__CxxThrowException
push eax
push 7
push 0
call fcn.0040948b
add esp, 0xc
mov dword [esp + 0x10], 0xffff0000
lea ecx, [esp + 0x34]
mov byte [esp + 0x108], 7
call fcn.00409371
or edi, 0xffffffff
mov byte [esp + 0x108], 5
lea edx, [ebx + 8]
mov eax, edi
lock xadd dword [edx], eax
dec eax
jne 0x408739
push ecx
mov ecx, ebx
call fcn.004092df
mov dword [esp + 0x1c], 0
lea eax, [esi + 8]
mov byte [esp + 0x108], 3
lock xadd dword [eax], edi
dec edi
jne 0x40875b
push ecx
mov ecx, esi
call fcn.004092df
lea ecx, [esp + 0x28]
mov dword [esp + 0x18], 0
mov byte [esp + 0x108], 2
call fcn.0040921a
lea ecx, [esp + 0x24]
mov byte [esp + 0x108], 1
call fcn.0040921a
lea ecx, [esp + 0x20]
mov byte [esp + 0x108], 0
call fcn.0040921a
lea ecx, [esp + 0x14]
mov dword [esp + 0x108], 0xffffffff
call fcn.0040921a
jmp 0x4060b7
push eax
push 8
push 0
call fcn.0040948b
add esp, 0xc
mov dword [esp + 0x10], 0xffff0000
lea ecx, [esp + 0x2c]
mov byte [esp + 0x108], 8
call fcn.0040921a
lea ecx, [esp + 0x34]
mov byte [esp + 0x108], 7
call fcn.00409371
or edi, 0xffffffff
mov byte [esp + 0x108], 5
lea ecx, [ebx + 8]
mov eax, edi
lock xadd dword [ecx], eax
dec eax
jmp 0x40872f
push eax
call dword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov dword [esp + 0x30], eax
test eax, eax
jne 0x405ebe
lea ecx, [esp + 0x2c]
mov dword [esp + 0x10], 0xffff0000
mov byte [esp + 0x108], 8
call fcn.0040921a
lea ecx, [esp + 0x34]
mov byte [esp + 0x108], 7
call fcn.00409371
or edi, 0xffffffff
mov byte [esp + 0x108], 5
lea ecx, [ebx + 8]
mov eax, edi
lock xadd dword [ecx], eax
dec eax
jne 0x40885c
push ecx
mov ecx, ebx
call fcn.004092df
mov dword [esp + 0x1c], 0
lea eax, [esi + 8]
mov byte [esp + 0x108], 3
lock xadd dword [eax], edi
dec edi
je 0x408753
jmp 0x40875b
cmp ecx, 0x80020009
jne 0x408892
push dword [esp + 0xe0]
push 0xa
jmp 0x408895
push ecx
push 9
push 0
call fcn.0040948b
add esp, 0xc
mov dword [esp + 0x10], 0xffff0000
lea ecx, [esp + 0x2c]
mov byte [esp + 0x108], 8
call fcn.0040921a
lea ecx, [esp + 0x34]
mov byte [esp + 0x108], 7
call fcn.00409371
or edi, 0xffffffff
mov byte [esp + 0x108], 5
lea ecx, [ebx + 8]
mov eax, edi
lock xadd dword [ecx], eax
dec eax
jne 0x4088e8
push ecx
mov ecx, ebx
call fcn.004092df
mov dword [esp + 0x1c], 0
lea eax, [esi + 8]
mov byte [esp + 0x108], 3
lock xadd dword [eax], edi
dec edi
je 0x408753
jmp 0x40875b
mov eax, 8
mov word [esp + 0x34], ax
jmp 0x405fa0
push eax
call dword [sym.imp.msvcrt.dll____V_YAXPAX_Z]
add esp, 4
mov dword [ebx + 4], 0
jmp 0x405fe0
push eax
call dword [sym.imp.msvcrt.dll____V_YAXPAX_Z]
add esp, 4
mov dword [esi + 4], 0
jmp 0x406022
push eax
push 7
push 0
call fcn.0040948b
or edi, 0xffffffff
mov dword [esp + 0x1c], 0xffff0000
add esp, 0xc
mov byte [esp + 0x108], 5
lea ecx, [ebx + 8]
mov eax, edi
lock xadd dword [ecx], eax
dec eax
jne 0x40897a
push ecx
mov ecx, ebx
call fcn.004092df
mov dword [esp + 0x1c], 0
lea eax, [esi + 8]
mov byte [esp + 0x108], 3
lock xadd dword [eax], edi
dec edi
je 0x408753
jmp 0x40875b
push eax
push 6
push 0
call fcn.0040948b
add esp, 0xc
mov byte [esp + 0x108], 1
lea ecx, [esp + 0x24]
call fcn.0040921a
lea ecx, [esp + 0x20]
mov byte [esp + 0x108], 0
call fcn.0040921a
lea ecx, [esp + 0x14]
mov dword [esp + 0x108], 0xffffffff
call fcn.0040921a
mov esi, 0xffff0000
jmp 0x4060bb
push ecx
push 6
push 0
call fcn.0040948b
add esp, 0xc
mov byte [esp + 0x108], 1
lea ecx, [esp + 0x24]
call fcn.0040921a
lea ecx, [esp + 0x20]
mov byte [esp + 0x108], 0
call fcn.0040921a
lea ecx, [esp + 0x14]
mov dword [esp + 0x108], 0xffffffff
call fcn.0040921a
mov esi, 0xffff0000
jmp 0x4060bb