Function at 0x405610
Capabilities:
Create thread
Terminate process

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x2c4
mov eax, dword [0x586f40]
xor eax, esp
mov dword [esp + 0x2c0], eax
mov eax, dword [ebp + 8]
push ebx
push esi
mov esi, dword [ebp + 0xc]
push edi
push esi
mov edi, ecx
push eax
mov dword [esp + 0x1c], edi
call fcn.004182a5
lea eax, [esp + 0x10]
push eax
xor ebx, ebx
push str.im_interface
mov ecx, edi
mov dword [esp + 0x18], ebx
call fcn.0041823b
test eax, eax
jne 0x4059a2
cmp dword [esp + 0x10], ebx
je 0x4059a2
push 0x3e
lea edx, [esp + 0x8e]
xor ecx, ecx
push ebx
push edx
mov word [esp + 0x94], cx
call fcn.005121a0
add esp, 0xc
push 0x3e
lea ecx, [esp + 0x4e]
xor eax, eax
push ebx
push ecx
mov word [esp + 0x54], ax
call fcn.005121a0
lea edx, [esp + 0x94]
add esp, 0xc
push edx
mov edx, esi
call fcn.00407700
lea eax, [esp + 0x4c]
add esp, 4
push eax
mov edx, 0x15754b8
call fcn.00407700
add esp, 4
lea ecx, [esp + 0x48]
lea eax, [esp + 0x88]
lea esp, [esp]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x4056f6
cmp dx, bx
je 0x4056f2
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x4056f6
add eax, 4
add ecx, 4
cmp dx, bx
jne 0x4056d0
xor eax, eax
jmp 0x4056fb
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebx
jne 0x405812
mov eax, dword [esp + 0x10]
mov ecx, dword [eax]
lea edx, [esp + 0x28]
push edx
push eax
mov eax, dword [ecx + 0xd8]
call eax
mov eax, dword [esp + 0x10]
mov ecx, dword [eax]
lea edx, [esp + 0x24]
push edx
push eax
mov eax, dword [ecx + 0xdc]
call eax
mov dword [esp + 0x18], ebx
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x38], ebx
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x40], ebx
mov dword [esp + 0x44], ebx
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call fcn.0041c9a7
mov edi, eax
mov edx, dword [edi + 0x20]
lea ecx, [esp + 0x38]
push ecx
push edx
call dword [sym.imp.USER32.dll_GetWindowRect]
mov eax, dword [esp + 0x40]
sub eax, dword [esp + 0x38]
cdq
sub eax, edx
sar eax, 1
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x44]
sub eax, dword [esp + 0x3c]
cdq
sub eax, edx
sar eax, 1
mov dword [esp + 0x1c], eax
mov ecx, dword [edi + 0x20]
lea eax, [esp + 0x18]
push eax
push ecx
call dword [sym.imp.USER32.dll_ClientToScreen]
mov ecx, dword [esp + 0x28]
mov edi, dword [esp + 0x18]
mov esi, dword [esp + 0x24]
mov eax, ecx
cdq
sub eax, edx
sar eax, 1
neg eax
add edi, eax
mov eax, esi
cdq
sub eax, edx
sar eax, 1
push ebx
mov edx, eax
mov eax, dword [esp + 0x20]
add esi, 0x1e
push esi
mov esi, dword [esp + 0x1c]
neg edx
push ecx
add eax, edx
push eax
push edi
mov ecx, esi
mov dword [esp + 0x2c], edi
mov dword [esp + 0x30], eax
call fcn.004196ee
push 0x64
call dword [sym.imp.KERNEL32.dll_Sleep]
lea eax, [esp + 0x20]
mov dword [esp + 0x20], ebx
mov dword [esp + 0x2c], 0x9000
mov dword [esp + 0x30], 4
mov dword [esp + 0x34], eax
mov edx, dword [esi + 0x158]
mov eax, dword [edx + 0x20]
lea ecx, [esp + 0x2c]
push ecx
push ebx
push 0x4a
push eax
call dword [sym.imp.USER32.dll_SendMessageW]
mov edi, esi
lea ecx, [esp + 0x48]
push ecx
mov edx, 0x15756b8
call fcn.00407700
add esp, 4
lea ecx, [esp + 0x48]
lea eax, [esp + 0x88]
nop
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x405856
cmp dx, bx
je 0x405852
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x405856
add eax, 4
add ecx, 4
cmp dx, bx
jne 0x405830
xor eax, eax
jmp 0x40585b
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebx
jne 0x40593a
cmp dword [0x1bc88ac], ebx
jne 0x405893
push ebx
push ebx
push ebx
push ebx
push ebx
push 0x15758b8
mov ecx, edi
call fcn.0041699f
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x2c0]
xor ecx, esp
call fcn.0051026e
mov esp, ebp
pop ebp
ret 8
cmp dword [edi + 0x168], ebx
je 0x4058ae
mov esi, edi
call fcn.00405350
test eax, eax
je 0x4058ae
push ebx
mov ecx, edi
call fcn.0041972e
push ecx
mov ecx, esp
mov dword [esp + 0x24], esp
push str.Total_Progress...
call fcn.00405e30
push ebx
mov ecx, edi
call fcn.00403a70
push 0x1fe
lea eax, [esp + 0xce]
xor edx, edx
push ebx
push eax
mov word [esp + 0xd4], dx
call fcn.005121a0
add esp, 0xc
push 0x155d018
lea ecx, [esp + 0xcc]
push str._s_is_being_installed
push ecx
call dword [sym.imp.USER32.dll_wsprintfW]
mov esi, dword [esp + 0x20]
add esp, 0xc
push 0x5b8d80
push str.You_may_continue_to_work_on_your_computer_while_it_finishes.
lea edi, [esp + 0xd0]
call fcn.004052c0
push ebx
push ebx
mov edx, esi
push edx
push 0x404e70
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_CreateThread]
test eax, eax
jne 0x4059a2
push 1
call dword [sym.imp.KERNEL32.dll_ExitProcess]
lea eax, [esp + 0x48]
push eax
mov edx, 0x15758b8
call fcn.00407700
add esp, 4
lea ecx, [esp + 0x48]
lea eax, [esp + 0x88]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x40597d
cmp dx, bx
je 0x405979
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x40597d
add eax, 4
add ecx, 4
cmp dx, bx
jne 0x405957
xor eax, eax
jmp 0x405982
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebx
jne 0x4059a2
cmp dword [edi + 0x168], ebx
je 0x4059a2
mov esi, edi
call fcn.00405380
test eax, eax
je 0x4059a2
push 5
mov ecx, edi
call fcn.0041972e
mov ecx, dword [esp + 0x2cc]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.0051026e
mov esp, ebp
pop ebp
ret 8