Function at 0x40c130
Capabilities:
Check mutex on windows

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x56ff22
mov eax, dword fs:[0]
push eax
sub esp, 0x80
push ebx
push esi
push edi
mov eax, dword [0x5f0bf8]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
xor edi, edi
push edi
mov dword [ebp - 0x1c], edi
call fcn.00454826
add esp, 4
call fcn.004337c0
mov eax, dword [esi + 0x48]
push eax
lea ecx, [ebp - 0x18]
call fcn.00404420
mov dword [ebp - 4], edi
mov edx, dword [esi + 0x138]
mov eax, dword [ebp - 0x18]
mov edx, dword [edx]
lea ecx, [esi + 0x138]
push eax
call edx
push 0x587f8c
lea ecx, [ebp - 0x14]
call fcn.00404420
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x18]
cmp dword [eax - 0xc], edi
je 0x40c218
mov ecx, dword [esi + 0x48]
push edi
push ecx
mov ecx, esi
call fcn.004087b0
test eax, eax
jne 0x40c218
mov byte [ebp - 4], al
mov eax, dword [ebp - 0x14]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x40c1de
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40c204
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push str.WriteRegiter_FoxitUpdater
push 1
push edi
mov edi, dword [sym.imp.KERNEL32.dll_CreateMutexW]
call edi
push 0
mov ebx, eax
call dword [sym.imp.KERNEL32.dll_SetLastError]
push str.Foxit_Reader_Update
lea ecx, [ebp - 0x20]
call fcn.00404420
mov byte [ebp - 4], 4
push 0x64
call dword [sym.imp.KERNEL32.dll_Sleep]
mov ecx, dword [ebp - 0x20]
push ecx
push 0
push 0
call edi
mov dword [esi + 0x10c], eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
xor edx, edx
cmp eax, 0xb7
sete dl
xor edi, edi
mov eax, edx
mov dword [esi + 0x110], eax
cmp eax, edi
je 0x40c5cc
push edi
push 0x589694
call dword [sym.imp.USER32.dll_FindWindowW]
push eax
call fcn.00447e8e
mov edi, eax
test edi, edi
je 0x40c3ae
cmp dword [esi + 0xc0], 0
je 0x40c2ed
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x20]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40c2c5
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40c2e8
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x40c1de
push 0xffffffffffffffff
push ebx
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov ecx, dword [esi + 0x48]
push ecx
lea ecx, [ebp - 0x24]
call fcn.00404420
mov byte [ebp - 4], 8
mov eax, dword [ebp - 0x24]
mov dword [ebp - 0x3c], 0
mov ecx, dword [eax - 0xc]
mov dword [ebp - 0x34], eax
mov eax, dword [edi + 0x20]
lea edx, [ecx + ecx + 2]
push eax
mov dword [ebp - 0x38], edx
call dword [sym.imp.USER32.dll_SetForegroundWindow]
mov edx, dword [edi + 0x20]
lea ecx, [ebp - 0x3c]
push ecx
push 0
push 0x4a
push edx
call dword [sym.imp.USER32.dll_SendMessageW]
push ebx
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
mov byte [ebp - 4], 4
mov eax, dword [ebp - 0x24]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40c363
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x20]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40c386
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40c3a9
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x40c1de
lea ecx, [ebp - 0x24]
push ecx
lea ecx, [esi + 0xb8]
call fcn.004092e0
mov byte [ebp - 4], 0xd
push eax
lea ecx, [ebp - 0x14]
call fcn.00403760
mov byte [ebp - 4], 4
mov eax, dword [ebp - 0x24]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x40c3ed
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push 0
push str.calssFoxitReaderAutoUpdater
call dword [sym.imp.USER32.dll_FindWindowW]
push eax
call fcn.00447e8e
mov edi, eax
test edi, edi
je 0x40c425
push 0xffffffffffffffff
push ebx
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov ecx, dword [edi + 0x20]
push ecx
call dword [sym.imp.USER32.dll_SetForegroundWindow]
push ebx
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
jmp 0x40c581
cmp dword [esi + 0xc4], 0
je 0x40c46d
push 0xffffffffffffffff
lea edx, [ebp - 0x24]
push str.Update_List
push edx
call fcn.005693e5
add esp, 0xc
mov byte [ebp - 4], 0xf
mov eax, dword [eax]
mov dword [ebp - 0x1c], 1
test eax, eax
je 0x40c457
add eax, 0xc
jmp 0x40c45c
mov eax, 0x587f8c
push eax
lea ecx, [ebp - 0x14]
call fcn.00406800
mov byte [ebp - 0xd], 1
test eax, eax
jne 0x40c471
mov byte [ebp - 0xd], 0
mov dword [ebp - 4], 4
test byte [ebp - 0x1c], 1
je 0x40c48a
and dword [ebp - 0x1c], 0xfffffffe
lea ecx, [ebp - 0x24]
call fcn.005685da
cmp byte [ebp - 0xd], 0
je 0x40c49c
push ebx
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
jmp 0x40c581
push 0
push ebx
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
test eax, eax
jne 0x40c581
lea eax, [ebp - 0x24]
push eax
mov ecx, esi
call fcn.004085d0
mov byte [ebp - 4], 0x10
mov eax, dword [ebp - 0x24]
test eax, eax
je 0x40c4c8
add eax, 0xc
jmp 0x40c4cd
mov eax, 0x587f8c
push eax
push str.32770
call dword [sym.imp.USER32.dll_FindWindowW]
push eax
call dword [sym.imp.USER32.dll_SetForegroundWindow]
test eax, eax
jne 0x40c56e
push 0x40
lea ecx, [ebp - 0x2c]
push ecx
mov ecx, esi
call fcn.004085d0
mov byte [ebp - 4], 0x11
mov eax, dword [eax]
test eax, eax
je 0x40c504
add eax, 0xc
jmp 0x40c509
mov eax, 0x587f8c
push eax
push 0x29f7
push ecx
mov ecx, esp
mov dword [ebp - 0x30], esp
push 0xffffffffffffffff
push str.FoxitUpdater_DLL
call fcn.00567811
mov byte [ebp - 4], 0x12
lea edx, [ebp - 0x28]
push edx
mov byte [ebp - 4], 0x11
call fcn.004337e0
add esp, 0xc
mov byte [ebp - 4], 0x13
mov eax, dword [eax]
test eax, eax
je 0x40c544
add eax, 0xc
jmp 0x40c549
mov eax, 0x587f8c
push eax
push 0
mov ecx, 0x5f60b0
call fcn.0040aed0
mov byte [ebp - 4], 0x11
lea ecx, [ebp - 0x28]
call fcn.005685da
mov byte [ebp - 4], 0x10
lea ecx, [ebp - 0x2c]
call fcn.005685da
push ebx
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
mov byte [ebp - 4], 4
lea ecx, [ebp - 0x24]
call fcn.005685da
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x20]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40c5a4
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40c5c7
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x40c1de
push ebx
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
lea ecx, [ebp - 0x2c]
push ecx
lea ecx, [esi + 0xb8]
call fcn.004092e0
mov byte [ebp - 4], 0x17
push eax
lea ecx, [ebp - 0x14]
call fcn.00403760
mov byte [ebp - 4], 4
mov eax, dword [ebp - 0x2c]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x40c612
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp dword [esi + 0xc4], edi
je 0x40c672
push 0xffffffffffffffff
lea ecx, [ebp - 0x2c]
push str.Auto_Updater
push ecx
call fcn.005693e5
add esp, 0xc
mov byte [ebp - 4], 0x19
mov eax, dword [eax]
mov dword [ebp - 0x1c], 2
cmp eax, edi
je 0x40c643
add eax, 0xc
jmp 0x40c648
mov eax, 0x587f8c
xor ecx, ecx
cmp eax, edi
setne cl
cmp ecx, edi
jne 0x40c65d
push 0x80004005
call fcn.00401090
mov edx, dword [ebp - 0x14]
push eax
push edx
call fcn.00543f07
add esp, 8
cmp eax, edi
jne 0x40c672
mov bl, 1
jmp 0x40c674
xor bl, bl
mov dword [ebp - 4], 4
test byte [ebp - 0x1c], 2
je 0x40c68d
and dword [ebp - 0x1c], 0xfffffffd
lea ecx, [ebp - 0x2c]
call fcn.005685da
xor eax, eax
test bl, bl
je 0x40c731
mov dword [ebp - 0x64], edi
mov dword [ebp - 0x60], eax
mov dword [ebp - 0x5c], eax
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x54], eax
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x4c], eax
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x44], eax
mov dword [ebp - 0x40], eax
call fcn.0044e83a
mov eax, dword [eax + 8]
mov edi, dword [sym.imp.USER32.dll_GetClassInfoW]
lea ecx, [ebp - 0x64]
push ecx
push str.32770
push eax
call edi
lea edx, [ebp - 0x64]
push edx
mov dword [ebp - 0x40], str.calssFoxitReaderAutoUpdater
call fcn.0044b1e8
xor eax, eax
mov dword [ebp - 0x8c], eax
mov dword [ebp - 0x88], eax
mov dword [ebp - 0x84], eax
mov dword [ebp - 0x80], eax
mov dword [ebp - 0x7c], eax
mov dword [ebp - 0x78], eax
mov dword [ebp - 0x74], eax
mov dword [ebp - 0x70], eax
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x68], eax
call fcn.0044e83a
mov eax, dword [eax + 8]
lea ecx, [ebp - 0x8c]
push ecx
push str.32770
push eax
call edi
mov dword [ebp - 0x68], 0x589694
lea edx, [ebp - 0x8c]
jmp 0x40c7c6
mov dword [ebp - 0x8c], edi
mov dword [ebp - 0x88], eax
mov dword [ebp - 0x84], eax
mov dword [ebp - 0x80], eax
mov dword [ebp - 0x7c], eax
mov dword [ebp - 0x78], eax
mov dword [ebp - 0x74], eax
mov dword [ebp - 0x70], eax
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x68], eax
call fcn.0044e83a
mov eax, dword [eax + 8]
mov edi, dword [sym.imp.USER32.dll_GetClassInfoW]
lea ecx, [ebp - 0x8c]
push ecx
push str.32770
push eax
call edi
lea edx, [ebp - 0x8c]
push edx
mov dword [ebp - 0x68], str.calssFoxitReaderAutoUpdater
call fcn.0044b1e8
xor eax, eax
mov dword [ebp - 0x64], eax
mov dword [ebp - 0x60], eax
mov dword [ebp - 0x5c], eax
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x54], eax
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x4c], eax
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x44], eax
mov dword [ebp - 0x40], eax
call fcn.0044e83a
mov eax, dword [eax + 8]
lea ecx, [ebp - 0x64]
push ecx
push str.32770
push eax
call edi
mov dword [ebp - 0x40], 0x589694
lea edx, [ebp - 0x64]
push edx
call fcn.0044b1e8
lea eax, [ebp - 0x2c]
push eax
mov eax, dword [ebp - 0x18]
push ecx
add eax, 0xfffffff0
mov edi, esp
mov dword [ebp - 0x30], esp
push eax
mov dword [ebp - 0x2c], 0
mov dword [ebp - 0x28], edi
call fcn.00401e80
add eax, 0x10
add esp, 4
mov dword [edi], eax
mov byte [ebp - 4], 0x1b
mov byte [ebp - 4], 4
mov ecx, esi
call fcn.0040af10
test eax, eax
jne 0x40c852
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x20]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40c82a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40c84d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x40c1de
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x20]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40c875
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40c898
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40c8be
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret