Function at 0x4087b0
Capabilities:
Check if file exists
Create thread
Get common file path
Get program files directory

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x4575a2
mov eax, dword fs:[0]
push eax
sub esp, 0x3c
push ebx
push ebp
push esi
push edi
mov eax, dword [0x46e780]
xor eax, esp
push eax
lea eax, [esp + 0x50]
mov dword fs:[0], eax
mov esi, ecx
call fcn.00403d80
mov eax, dword [esi + 0x3cc]
mov edi, dword [sym.imp.USER32.dll_SendMessageW]
push eax
mov eax, dword [esi + 0x20]
push 1
push 0x80
push eax
call edi
mov eax, dword [esi + 0x3cc]
mov ecx, dword [esi + 0x20]
push eax
xor ebx, ebx
push ebx
push 0x80
push ecx
call edi
mov edx, dword [esi + 0x79c]
mov edx, dword [edx + 0x134]
push 0x3ec
push esi
lea eax, [esp + 0x44]
push eax
lea edi, [esi + 0x79c]
push 0x5000000b
mov ebp, 0x41
push ebx
mov ecx, edi
mov dword [esp + 0x50], ebx
mov dword [esp + 0x54], ebx
mov dword [esp + 0x58], 0xc8
mov dword [esp + 0x5c], ebp
call edx
lea eax, [edi + 0x54]
push eax
push 0x403
call fcn.00406da0
lea ecx, [edi + 0x58]
push ecx
push 0x402
call fcn.00406da0
lea edx, [edi + 0x5c]
push edx
push 0x41d
call fcn.00406da0
lea eax, [edi + 0x60]
push eax
push 0x410
call fcn.00406da0
lea ecx, [edi + 0x64]
push ecx
push 0x411
call fcn.00406da0
lea edx, [edi + 0x68]
push edx
push 0x401
call fcn.00406da0
push 1
push ebx
push ebx
mov eax, 0x16b
sub eax, dword [esi + 0x840]
mov ecx, edi
push eax
mov eax, 0x21c
sub eax, dword [esi + 0x83c]
cdq
sub eax, edx
sar eax, 1
push eax
push ebx
call fcn.004231ef
mov edx, dword [esi + 0x848]
lea edi, [esi + 0x848]
push 0x422
mov dword [esp + 0x40], ebx
mov dword [esp + 0x44], ebx
mov dword [esp + 0x48], 0xc8
mov dword [esp + 0x4c], ebp
push esi
lea eax, [esp + 0x44]
mov edx, dword [edx + 0x134]
push eax
push 0x4000000b
push ebx
mov ecx, edi
call edx
lea eax, [edi + 0x54]
push eax
push 0x420
call fcn.00406da0
lea ecx, [edi + 0x58]
push ecx
push 0x421
call fcn.00406da0
lea edx, [edi + 0x5c]
push edx
push 0x420
call fcn.00406da0
push 1
push ebx
push ebx
mov eax, 0x16b
sub eax, dword [esi + 0x8ec]
mov ecx, edi
push eax
mov eax, 0x21c
sub eax, dword [esi + 0x8e8]
cdq
sub eax, edx
sar eax, 1
push eax
push ebx
call fcn.004231ef
mov edx, dword [esi + 0x9a0]
mov edx, dword [edx + 0x134]
push 0x3f4
push esi
lea eax, [esp + 0x44]
push eax
lea edi, [esi + 0x9a0]
push 0x5000000b
mov ebp, 0xe
push ebx
mov ecx, edi
mov dword [esp + 0x50], ebx
mov dword [esp + 0x54], ebx
mov dword [esp + 0x58], 0x64
mov dword [esp + 0x5c], ebp
call edx
lea eax, [edi + 0x54]
push eax
push 0x412
call fcn.00406da0
lea ecx, [edi + 0x58]
push ecx
push 0x414
call fcn.00406da0
lea edx, [edi + 0x5c]
push edx
push 0x412
call fcn.00406da0
lea eax, [edi + 0x60]
push eax
push 0x413
call fcn.00406da0
lea ecx, [edi + 0x64]
push ecx
push 0x415
call fcn.00406da0
lea edx, [edi + 0x68]
push edx
push 0x413
call fcn.00406da0
push ecx
mov ecx, esp
mov dword [esp + 0x3c], esp
push 0x4602d0
call fcn.004024e0
mov ecx, edi
call fcn.00403830
push 1
push ebx
push ebx
push 0xd5
push 0x37
push ebx
mov ecx, edi
call fcn.004231ef
cmp dword [edi + 0x60], ebx
je 0x408a40
cmp dword [edi + 0x64], ebx
je 0x408a40
cmp dword [edi + 0x68], ebx
je 0x408a40
mov eax, dword [edi + 0x20]
push 1
push ebx
push eax
mov dword [edi + 0x7c], 1
call dword [sym.imp.USER32.dll_InvalidateRect]
mov edx, dword [esi + 0x8f4]
mov edx, dword [edx + 0x134]
push 0x3ef
push esi
lea eax, [esp + 0x44]
mov dword [esp + 0x50], ebp
push eax
lea ebp, [esi + 0x8f4]
push 0x5000000b
mov edi, 1
push ebx
mov ecx, ebp
mov dword [esi + 0xa48], edi
mov dword [esp + 0x50], ebx
mov dword [esp + 0x54], ebx
mov dword [esp + 0x58], 0xb4
call edx
lea eax, [ebp + 0x54]
push eax
push 0x412
call fcn.00406da0
lea ecx, [ebp + 0x58]
push ecx
push 0x414
call fcn.00406da0
lea edx, [ebp + 0x5c]
push edx
push 0x412
call fcn.00406da0
lea eax, [ebp + 0x60]
push eax
push 0x413
call fcn.00406da0
lea ecx, [ebp + 0x64]
push ecx
push 0x415
call fcn.00406da0
lea edx, [ebp + 0x68]
push edx
push 0x413
call fcn.00406da0
push ecx
mov ecx, esp
mov dword [esp + 0x3c], esp
push 0x4602e0
call fcn.004024e0
mov ecx, ebp
call fcn.00403830
push edi
push ebx
push ebx
push 0xf1
push 0x37
push ebx
mov ecx, ebp
call fcn.004231ef
mov dword [esi + 0xaa4], edi
lea edi, [esi + 0xa50]
call fcn.00408310
lea edi, [esi + 0xd08]
mov dword [esi + 0xd5c], 1
call fcn.00408310
push 0x4602fc
lea ecx, [esi + 0x2e0]
mov dword [esi + 0xb8c], 1
call fcn.00422f4a
push 4
push 0x14
push 0x32
push 0xcd
push 0x159
push ebx
lea ecx, [esi + 0x354]
call fcn.004231ef
push 1
push ebx
push ebx
push 0xb4
push 0x37
push ebx
lea ecx, [esi + 0xbac]
call fcn.004231ef
push 1
push ebx
push ebx
push 0xb4
push 0x96
lea ecx, [esi + 0xac4]
push ebx
call fcn.004231ef
push 1
push ebx
push ebx
push 0xd3
push 0x98
push ebx
lea ecx, [esi + 0xb38]
call fcn.004231ef
push 1
push ebx
push ebx
push 0x10c
push 0x37
lea ecx, [esi + 0xc20]
push ebx
call fcn.004231ef
push ecx
mov ecx, esp
mov dword [esp + 0x3c], esp
push 0x4620e4
lea edi, [esi + 0x27c]
call fcn.004024e0
mov ecx, edi
call fcn.00412e90
mov ecx, esp
mov dword [esp + 0x3c], esp
push str._install_
call fcn.004024e0
lea ecx, [esi + 0x28c]
call fcn.00412e90
mov ecx, esp
mov dword [esp + 0x3c], esp
push 0x462380
call fcn.004024e0
push 0x472bc8
call fcn.00406b90
lea eax, [esp + 0x2c]
push eax
push ebx
push edi
push 0x414100
push ebx
push ebx
mov dword [esp + 0x44], ebx
call dword [sym.imp.KERNEL32.dll_CreateThread]
push 0x2710
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push ecx
mov ecx, esp
mov dword [esp + 0x3c], esp
push 0x45f158
call fcn.004024e0
lea ecx, [esp + 0x30]
push ecx
call fcn.0040aed0
add esp, 8
push eax
mov ecx, 0x472c6c
mov dword [esp + 0x5c], ebx
call fcn.004029d0
mov dword [esp + 0x58], 0xffffffff
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x408c8e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [0x472c6c]
push ecx
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x408cd1
mov ecx, dword [0x472c6c]
cmp dword [ecx - 0xc], ebx
jl 0x408cd7
push 0x46031c
push ecx
call fcn.0043b5b7
add esp, 8
cmp eax, ebx
je 0x408cd1
mov ecx, dword [0x472c6c]
sub eax, ecx
sar eax, 1
cmp eax, 0xffffffff
jne 0x408d5c
jmp 0x408cd7
mov ecx, dword [0x472c6c]
mov eax, dword [ecx - 8]
mov edx, 1
sub edx, dword [ecx - 4]
sub eax, 0x104
or eax, edx
jge 0x408d00
push 0x104
mov ecx, 0x472c6c
call fcn.004013d0
mov ecx, dword [0x472c6c]
push ebx
push 0x26
push ecx
push ebx
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
mov edx, dword [0x472c6c]
cmp edx, ebx
jne 0x408d19
xor eax, eax
jmp 0x408d35
mov eax, edx
lea edi, [eax + 2]
mov edi, edi
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x408d20
sub eax, edi
sar eax, 1
js 0x4094b2
cmp eax, dword [edx - 8]
jg 0x4094b2
mov dword [edx - 0xc], eax
mov edx, dword [0x472c6c]
push 6
push 0x46031c
mov ecx, 0x472c6c
mov word [edx + eax*2], bx
call fcn.00407e20
lea ecx, [esi + 0xa4c]
push 0x472c6c
call fcn.004029d0
push ecx
mov ecx, esp
mov dword [esp + 0x3c], esp
push 0x45fb78
call fcn.004024e0
lea eax, [esp + 0x30]
push eax
call fcn.0040aed0
mov eax, dword [eax]
add esp, 8
mov ecx, 0x45f238
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x408db7
cmp dx, bx
je 0x408db3
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x408db7
add eax, 4
add ecx, 4
cmp dx, bx
jne 0x408d91
xor eax, eax
jmp 0x408dbc
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebx
mov eax, dword [esp + 0x2c]
sete byte [esp + 0x1b]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x408de3
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp byte [esp + 0x1b], 0
je 0x408e0d
cmp dword [ebp + 0x60], ebx
je 0x408e0d
cmp dword [ebp + 0x64], ebx
je 0x408e0d
cmp dword [ebp + 0x68], ebx
je 0x408e0d
mov ecx, dword [ebp + 0x20]
push 1
push ebx
push ecx
mov dword [ebp + 0x7c], 1
call dword [sym.imp.USER32.dll_InvalidateRect]
push 0x3b8
lea edi, [esi + 0x3e4]
push ebx
push edi
call fcn.0043c510
add esp, 0xc
push 0x80
push ebx
mov dword [edi], 0x3b8
mov dword [esi + 0x3f0], 0x17
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push eax
call dword [sym.imp.USER32.dll_LoadIconW]
mov dword [esi + 0x3f8], eax
mov eax, dword [esi + 0x20]
push 0x46032c
lea edx, [esi + 0x3fc]
push edx
mov dword [esi + 0x3ec], 0x80
mov dword [esi + 0x3e8], eax
mov dword [esi + 0x3f4], 0x7e4
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
mov dword [esi + 0x704], 0xbb8
mov dword [esi + 0x788], ebx
mov dword [esp + 0x20], 0x96
mov dword [esp + 0x1c], 1
lea ebx, [ebx]
call fcn.0042190e
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x409326
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x28], eax
mov edi, dword [esp + 0x1c]
push edi
lea ecx, [esp + 0x2c]
push str.softname_d
push ecx
mov dword [esp + 0x64], 1
call fcn.004016e0
add esp, 0xc
call fcn.0042190e
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x409326
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x2c], eax
push edi
lea ecx, [esp + 0x30]
push str.softcheck_d
push ecx
mov byte [esp + 0x64], 2
call fcn.004016e0
mov edi, dword [esp + 0x38]
mov ecx, dword [edi - 0x10]
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
add edi, 0xfffffff0
add esp, 8
mov dword [esp + 0x3c], esp
mov ebp, esp
mov dword [esp + 0x3c], edi
call eax
cmp dword [edi + 0xc], 0
lea edx, [edi + 0xc]
jl 0x408f54
cmp eax, dword [edi]
jne 0x408f54
mov ebx, edi
mov ecx, 1
lock xadd dword [edx], ecx
jmp 0x408f8f
mov ecx, dword [edi + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 2
push ecx
mov ecx, eax
call edx
mov ebx, eax
test ebx, ebx
je 0x409330
mov eax, dword [edi + 4]
mov dword [ebx + 4], eax
mov eax, dword [edi + 4]
lea ecx, [eax + eax + 2]
push ecx
add edi, 0x10
lea edx, [eax + eax + 2]
push edi
push edx
lea eax, [ebx + 0x10]
push eax
call fcn.00439d04
add esp, 0x10
lea ecx, [esp + 0x34]
add ebx, 0x10
push ecx
mov dword [ebp], ebx
call fcn.0040aed0
mov eax, dword [eax]
add esp, 8
mov ecx, 0x45f238
lea esp, [esp]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x408fd6
test dx, dx
je 0x408fd2
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x408fd6
add eax, 4
add ecx, 4
test dx, dx
jne 0x408fb0
xor eax, eax
jmp 0x408fdb
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
mov eax, dword [esp + 0x30]
sete bl
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x409000
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test bl, bl
je 0x409260
mov edi, dword [esp + 0x28]
push ecx
mov ecx, dword [edi - 0x10]
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
add edi, 0xfffffff0
mov dword [esp + 0x38], esp
mov ebp, esp
call eax
cmp dword [edi + 0xc], 0
lea ecx, [edi + 0xc]
jl 0x40903a
cmp eax, dword [edi]
jne 0x40903a
mov ebx, edi
mov edx, 1
lock xadd dword [ecx], edx
jmp 0x409075
mov ecx, dword [edi + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 2
push ecx
mov ecx, eax
call edx
mov ebx, eax
test ebx, ebx
je 0x409330
mov eax, dword [edi + 4]
mov dword [ebx + 4], eax
mov eax, dword [edi + 4]
lea ecx, [eax + eax + 2]
push ecx
add edi, 0x10
lea edx, [eax + eax + 2]
push edi
push edx
lea eax, [ebx + 0x10]
push eax
call fcn.00439d04
add esp, 0x10
lea ecx, [esp + 0x28]
add ebx, 0x10
push ecx
mov dword [ebp], ebx
call fcn.0040aed0
add esp, 8
mov byte [esp + 0x58], 3
mov edx, dword [esp + 0x24]
mov eax, dword [edx - 0xc]
test eax, eax
je 0x40923b
add eax, 1
mov ebx, eax
shl ebx, 4
push 0xac
sub ebx, eax
call fcn.0041bf59
add esp, 4
mov dword [esp + 0x34], eax
test eax, eax
mov byte [esp + 0x58], 4
je 0x4090ca
push eax
call fcn.00402d10
mov ebp, eax
jmp 0x4090cc
xor ebp, ebp
mov ecx, dword [esp + 0x1c]
add ecx, 0x3f4
push ecx
mov byte [esp + 0x5c], 3
mov edx, dword [ebp]
mov edx, dword [edx + 0x134]
push esi
lea ecx, [esp + 0x44]
push ecx
xor eax, eax
push 0x5000000b
push eax
mov ecx, ebp
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], eax
mov dword [esp + 0x58], ebx
mov dword [esp + 0x5c], 0xe
call edx
lea eax, [ebp + 0x54]
push eax
push 0x412
call fcn.00406da0
lea ecx, [ebp + 0x58]
push ecx
push 0x414
call fcn.00406da0
lea edx, [ebp + 0x5c]
push edx
push 0x412
call fcn.00406da0
lea edi, [ebp + 0x60]
push edi
push 0x413
call fcn.00406da0
lea eax, [ebp + 0x64]
push eax
push 0x415
call fcn.00406da0
lea eax, [ebp + 0x68]
push eax
push 0x413
call fcn.00406da0
mov eax, dword [esp + 0x24]
push ecx
mov dword [esp + 0x38], esp
add eax, 0xfffffff0
mov dword [esp + 0x38], esp
push eax
call fcn.00402470
mov ecx, dword [esp + 0x3c]
add eax, 0x10
mov dword [ecx], eax
add esp, 4
mov ecx, ebp
call fcn.00403830
mov edx, dword [esp + 0x20]
push 1
push 0
push 0
push 0x10e
push edx
push 0
mov ecx, ebp
call fcn.004231ef
cmp dword [edi], 0
je 0x4091c7
cmp dword [ebp + 0x64], 0
je 0x4091c7
cmp dword [ebp + 0x68], 0
je 0x4091c7
mov eax, dword [ebp + 0x20]
push 1
push 0
push eax
mov dword [ebp + 0x7c], 1
call dword [sym.imp.USER32.dll_InvalidateRect]
mov ecx, dword [esp + 0x20]
lea edx, [ecx + ebx + 0xa]
push 5
lea ecx, [esi + 0xc20]
mov dword [esp + 0x24], edx
call fcn.00422fe4
mov eax, dword [0x472cb4]
mov ecx, 0x45f620
lea ebx, [ebx]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x409216
test dx, dx
je 0x409212
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x409216
add eax, 4
add ecx, 4
test dx, dx
jne 0x4091f0
xor eax, eax
jmp 0x40921b
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
sete al
test al, al
je 0x40923b
push 0
lea ecx, [esi + 0xc20]
mov dword [esi + 0x2dc], 1
call fcn.00422fe4
mov byte [esp + 0x58], 2
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x409260
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x58], 1
mov eax, dword [esp + 0x38]
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x409282
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [esp + 0x58], 0xffffffff
mov eax, dword [esp + 0x28]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4092aa
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x1c]
add eax, 1
mov dword [esp + 0x1c], eax
add eax, 0xffffffff
cmp eax, 3
jl 0x408ea0
mov eax, dword [esi + 0xa4c]
push eax
lea ecx, [esi + 0xac4]
call fcn.00422f4a
mov eax, esi
call fcn.0040a780
push ecx
mov ecx, esp
mov dword [esp + 0x3c], esp
push str.notifyicon
call fcn.004024e0
lea ecx, [esp + 0x3c]
push ecx
call fcn.0040aed0
mov eax, dword [eax]
add esp, 8
mov ecx, 0x45f238
nop
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x409335
test dx, dx
je 0x409322
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x409335
add eax, 4
add ecx, 4
test dx, dx
jne 0x409300
xor eax, eax
jmp 0x40933a
push 0x80004005
call fcn.00401350
jmp fcn.00407d70
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
sete al
movzx edx, al
mov eax, dword [esp + 0x38]
add eax, 0xfffffff0
mov dword [esi + 0x3d4], edx
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x409368
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push 0x46038c
push ecx
mov ecx, esp
mov dword [esp + 0x40], esp
push str.app_version
call fcn.004024e0
lea ecx, [esp + 0x30]
push ecx
call fcn.0040aed0
lea edx, [esp + 0x3c]
push 0x45f20c
push edx
mov ecx, eax
mov dword [esp + 0x6c], 5
call fcn.00402290
add esp, 0x10
push eax
lea eax, [esp + 0x3c]
push eax
mov byte [esp + 0x64], 6
call fcn.004021b0
add esp, 0xc
mov byte [esp + 0x58], 7
mov eax, dword [eax]
push eax
mov ecx, esi
call fcn.00422f4a
mov byte [esp + 0x58], 6
mov eax, dword [esp + 0x34]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4093eb
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x58], 5
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x409410
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [esp + 0x58], 0xffffffff
mov eax, dword [esp + 0x28]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x409438
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push ecx
mov dword [esp + 0x3c], esp
mov edi, esp
push ecx
mov ecx, esp
mov dword [esp + 0x40], esp
push str.realversion
call fcn.004024e0
push edi
call fcn.0040aed0
add esp, 8
call fcn.004073b0
test eax, eax
je 0x409489
push 0
lea ecx, [esi + 0x79c]
call fcn.00422fe4
push 5
lea ecx, [esi + 0x848]
call fcn.00422fe4
push 5
lea ecx, [esi + 0xd08]
call fcn.00422fe4
cmp dword [0x472ca0], 0
je 0x409499
mov ecx, esi
call fcn.004094d0
mov eax, 1
mov ecx, dword [esp + 0x50]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
push 0x80070057
call fcn.00401350
int3