Function at 0x408680
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 0x456282
mov eax, dword fs:[0]
push eax
sub esp, 0x3c
push ebx
push ebp
push esi
push edi
mov eax, dword [0x46d750]
xor eax, esp
push eax
lea eax, [esp + 0x50]
mov dword fs:[0], eax
mov esi, ecx
call fcn.00403be0
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.00406ca0
lea ecx, [edi + 0x58]
push ecx
push 0x402
call fcn.00406ca0
lea edx, [edi + 0x5c]
push edx
push 0x41d
call fcn.00406ca0
lea eax, [edi + 0x60]
push eax
push 0x410
call fcn.00406ca0
lea ecx, [edi + 0x64]
push ecx
push 0x411
call fcn.00406ca0
lea edx, [edi + 0x68]
push edx
push 0x401
call fcn.00406ca0
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.004225be
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.00406ca0
lea ecx, [edi + 0x58]
push ecx
push 0x421
call fcn.00406ca0
lea edx, [edi + 0x5c]
push edx
push 0x420
call fcn.00406ca0
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.004225be
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.00406ca0
lea ecx, [edi + 0x58]
push ecx
push 0x414
call fcn.00406ca0
lea edx, [edi + 0x5c]
push edx
push 0x412
call fcn.00406ca0
lea eax, [edi + 0x60]
push eax
push 0x413
call fcn.00406ca0
lea ecx, [edi + 0x64]
push ecx
push 0x415
call fcn.00406ca0
lea edx, [edi + 0x68]
push edx
push 0x413
call fcn.00406ca0
push ecx
mov ecx, esp
mov dword [esp + 0x3c], esp
push 0x45f1c0
call fcn.00402310
mov ecx, edi
call fcn.00403660
push 1
push ebx
push ebx
push 0xd5
push 0x37
push ebx
mov ecx, edi
call fcn.004225be
cmp dword [edi + 0x60], ebx
je 0x408910
cmp dword [edi + 0x64], ebx
je 0x408910
cmp dword [edi + 0x68], ebx
je 0x408910
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.00406ca0
lea ecx, [ebp + 0x58]
push ecx
push 0x414
call fcn.00406ca0
lea edx, [ebp + 0x5c]
push edx
push 0x412
call fcn.00406ca0
lea eax, [ebp + 0x60]
push eax
push 0x413
call fcn.00406ca0
lea ecx, [ebp + 0x64]
push ecx
push 0x415
call fcn.00406ca0
lea edx, [ebp + 0x68]
push edx
push 0x413
call fcn.00406ca0
push ecx
mov ecx, esp
mov dword [esp + 0x3c], esp
push 0x45f1d0
call fcn.00402310
mov ecx, ebp
call fcn.00403660
push edi
push ebx
push ebx
push 0xf1
push 0x37
push ebx
mov ecx, ebp
call fcn.004225be
mov dword [esi + 0xaa4], edi
lea edi, [esi + 0xa50]
call fcn.004081e0
lea edi, [esi + 0xd08]
mov dword [esi + 0xd5c], 1
call fcn.004081e0
push 0x45f1ec
lea ecx, [esi + 0x2e0]
mov dword [esi + 0xb8c], 1
call fcn.00422319
push 4
push 0x14
push 0x32
push 0xcd
push 0x159
push ebx
lea ecx, [esi + 0x354]
call fcn.004225be
push 1
push ebx
push ebx
push 0xb4
push 0x37
push ebx
lea ecx, [esi + 0xbac]
call fcn.004225be
push 1
push ebx
push ebx
push 0xb4
push 0x96
lea ecx, [esi + 0xac4]
push ebx
call fcn.004225be
push 1
push ebx
push ebx
push 0xd3
push 0x98
push ebx
lea ecx, [esi + 0xb38]
call fcn.004225be
push 1
push ebx
push ebx
push 0x10c
push 0x37
lea ecx, [esi + 0xc20]
push ebx
call fcn.004225be
push ecx
mov ecx, esp
mov dword [esp + 0x3c], esp
push 0x460eb4
lea edi, [esi + 0x27c]
call fcn.00402310
mov ecx, edi
call fcn.004128b0
mov ecx, esp
mov dword [esp + 0x3c], esp
push str._install_
call fcn.00402310
lea ecx, [esi + 0x28c]
call fcn.004128b0
mov ecx, esp
mov dword [esp + 0x3c], esp
push 0x461150
call fcn.00402310
push 0x471b68
call fcn.00406a90
lea eax, [esp + 0x2c]
push eax
push ebx
push edi
push 0x413b20
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 0x45e048
call fcn.00402310
lea ecx, [esp + 0x30]
push ecx
call fcn.0040ada0
add esp, 8
push eax
mov ecx, 0x471c0c
mov dword [esp + 0x5c], ebx
call fcn.00402800
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 0x408b5e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [0x471c0c]
push ecx
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x408ba1
mov ecx, dword [0x471c0c]
cmp dword [ecx - 0xc], ebx
jl 0x408ba7
push 0x45f20c
push ecx
call fcn.0043a679
add esp, 8
cmp eax, ebx
je 0x408ba1
mov ecx, dword [0x471c0c]
sub eax, ecx
sar eax, 1
cmp eax, 0xffffffff
jne 0x408c2c
jmp 0x408ba7
mov ecx, dword [0x471c0c]
mov eax, dword [ecx - 8]
mov edx, 1
sub edx, dword [ecx - 4]
sub eax, 0x104
or eax, edx
jge 0x408bd0
push 0x104
mov ecx, 0x471c0c
call fcn.004021e0
mov ecx, dword [0x471c0c]
push ebx
push 0x26
push ecx
push ebx
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
mov edx, dword [0x471c0c]
cmp edx, ebx
jne 0x408be9
xor eax, eax
jmp 0x408c05
mov eax, edx
lea edi, [eax + 2]
mov edi, edi
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x408bf0
sub eax, edi
sar eax, 1
js 0x409382
cmp eax, dword [edx - 8]
jg 0x409382
mov dword [edx - 0xc], eax
mov edx, dword [0x471c0c]
push 6
push 0x45f20c
mov ecx, 0x471c0c
mov word [edx + eax*2], bx
call fcn.00407cf0
lea ecx, [esi + 0xa4c]
push 0x471c0c
call fcn.00402800
push ecx
mov ecx, esp
mov dword [esp + 0x3c], esp
push 0x45ea68
call fcn.00402310
lea eax, [esp + 0x30]
push eax
call fcn.0040ada0
mov eax, dword [eax]
add esp, 8
mov ecx, 0x45e128
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x408c87
cmp dx, bx
je 0x408c83
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x408c87
add eax, 4
add ecx, 4
cmp dx, bx
jne 0x408c61
xor eax, eax
jmp 0x408c8c
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 0x408cb3
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp byte [esp + 0x1b], 0
je 0x408cdd
cmp dword [ebp + 0x60], ebx
je 0x408cdd
cmp dword [ebp + 0x64], ebx
je 0x408cdd
cmp dword [ebp + 0x68], ebx
je 0x408cdd
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.0043b620
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 0x45f21c
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.00423381
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x4091f6
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.00404fb0
add esp, 0xc
call fcn.00423381
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x4091f6
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.00404fb0
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 0x408e24
cmp eax, dword [edi]
jne 0x408e24
mov ebx, edi
mov ecx, 1
lock xadd dword [edx], ecx
jmp 0x408e5f
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 0x409200
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.00438e1b
add esp, 0x10
lea ecx, [esp + 0x34]
add ebx, 0x10
push ecx
mov dword [ebp], ebx
call fcn.0040ada0
mov eax, dword [eax]
add esp, 8
mov ecx, 0x45e128
lea esp, [esp]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x408ea6
test dx, dx
je 0x408ea2
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x408ea6
add eax, 4
add ecx, 4
test dx, dx
jne 0x408e80
xor eax, eax
jmp 0x408eab
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 0x408ed0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test bl, bl
je 0x409130
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 0x408f0a
cmp eax, dword [edi]
jne 0x408f0a
mov ebx, edi
mov edx, 1
lock xadd dword [ecx], edx
jmp 0x408f45
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 0x409200
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.00438e1b
add esp, 0x10
lea ecx, [esp + 0x28]
add ebx, 0x10
push ecx
mov dword [ebp], ebx
call fcn.0040ada0
add esp, 8
mov byte [esp + 0x58], 3
mov edx, dword [esp + 0x24]
mov eax, dword [edx - 0xc]
test eax, eax
je 0x40910b
add eax, 1
mov ebx, eax
shl ebx, 4
push 0xac
sub ebx, eax
call fcn.0041b979
add esp, 4
mov dword [esp + 0x34], eax
test eax, eax
mov byte [esp + 0x58], 4
je 0x408f9a
push eax
call fcn.00402b40
mov ebp, eax
jmp 0x408f9c
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.00406ca0
lea ecx, [ebp + 0x58]
push ecx
push 0x414
call fcn.00406ca0
lea edx, [ebp + 0x5c]
push edx
push 0x412
call fcn.00406ca0
lea edi, [ebp + 0x60]
push edi
push 0x413
call fcn.00406ca0
lea eax, [ebp + 0x64]
push eax
push 0x415
call fcn.00406ca0
lea eax, [ebp + 0x68]
push eax
push 0x413
call fcn.00406ca0
mov eax, dword [esp + 0x24]
push ecx
mov dword [esp + 0x38], esp
add eax, 0xfffffff0
mov dword [esp + 0x38], esp
push eax
call fcn.004020e0
mov ecx, dword [esp + 0x3c]
add eax, 0x10
mov dword [ecx], eax
add esp, 4
mov ecx, ebp
call fcn.00403660
mov edx, dword [esp + 0x20]
push 1
push 0
push 0
push 0x10e
push edx
push 0
mov ecx, ebp
call fcn.004225be
cmp dword [edi], 0
je 0x409097
cmp dword [ebp + 0x64], 0
je 0x409097
cmp dword [ebp + 0x68], 0
je 0x409097
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.004223b3
mov eax, dword [0x471c54]
mov ecx, 0x45e510
lea ebx, [ebx]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x4090e6
test dx, dx
je 0x4090e2
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x4090e6
add eax, 4
add ecx, 4
test dx, dx
jne 0x4090c0
xor eax, eax
jmp 0x4090eb
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
sete al
test al, al
je 0x40910b
push 0
lea ecx, [esi + 0xc20]
mov dword [esi + 0x2dc], 1
call fcn.004223b3
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 0x409130
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 0x409152
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 0x40917a
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 0x408d70
mov eax, dword [esi + 0xa4c]
push eax
lea ecx, [esi + 0xac4]
call fcn.00422319
mov eax, esi
call fcn.0040a650
push ecx
mov ecx, esp
mov dword [esp + 0x3c], esp
push str.notifyicon
call fcn.00402310
lea ecx, [esp + 0x3c]
push ecx
call fcn.0040ada0
mov eax, dword [eax]
add esp, 8
mov ecx, 0x45e128
nop
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x409205
test dx, dx
je 0x4091f2
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x409205
add eax, 4
add ecx, 4
test dx, dx
jne 0x4091d0
xor eax, eax
jmp 0x40920a
push 0x80004005
call fcn.00402160
jmp fcn.00402150
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 0x409238
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push 0x45f27c
push ecx
mov ecx, esp
mov dword [esp + 0x40], esp
push str.app_version
call fcn.00402310
lea ecx, [esp + 0x30]
push ecx
call fcn.0040ada0
lea edx, [esp + 0x3c]
push 0x45e0fc
push edx
mov ecx, eax
mov dword [esp + 0x6c], 5
call fcn.00401eb0
add esp, 0x10
push eax
lea eax, [esp + 0x3c]
push eax
mov byte [esp + 0x64], 6
call fcn.00401dd0
add esp, 0xc
mov byte [esp + 0x58], 7
mov eax, dword [eax]
push eax
mov ecx, esi
call fcn.00422319
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 0x4092bb
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 0x4092e0
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 0x409308
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.00402310
push edi
call fcn.0040ada0
add esp, 8
call fcn.004072b0
test eax, eax
je 0x409359
push 0
lea ecx, [esi + 0x79c]
call fcn.004223b3
push 5
lea ecx, [esi + 0x848]
call fcn.004223b3
push 5
lea ecx, [esi + 0xd08]
call fcn.004223b3
cmp dword [0x471c40], 0
je 0x409369
mov ecx, esi
call fcn.004093a0
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.00402160
int3