Function at 0x4059c0
Capabilities:
Check mutex on windows

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x567488
mov eax, dword fs:[0]
push eax
sub esp, 0x83c
mov eax, dword [0x5c4fe8]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
push str.FoxitConnectedPDfService_Reader
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexW]
mov ebx, dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
call ebx
cmp eax, 0xb7
jne 0x405a1a
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x405dbb
mov esi, dword [0x5cf6e0]
test esi, esi
jne 0x405afd
push 0x10
call fcn.004066a7
mov esi, eax
add esp, 4
mov dword [ebp - 0x848], esi
mov dword [ebp - 4], 0
test esi, esi
je 0x405aee
call fcn.004076d1
mov ecx, eax
test ecx, ecx
je 0x405dd9
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [esi], eax
mov byte [ebp - 4], 1
call fcn.004076d1
mov ecx, eax
test ecx, ecx
je 0x405de3
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [esi + 4], eax
mov byte [ebp - 4], 2
call fcn.004076d1
mov ecx, eax
test ecx, ecx
je 0x405ded
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [esi + 8], eax
mov byte [ebp - 4], 3
call fcn.004076d1
mov ecx, eax
test ecx, ecx
je 0x405df7
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [esi + 0xc], eax
push 0x12
push str.FoxitReaderService
mov ecx, esi
mov byte [ebp - 4], 4
call fcn.004050c0
push 0
push 0x5a826c
lea ecx, [esi + 4]
call fcn.004050c0
push 0x18
push str.Foxit_PDF_Reader_Service
lea ecx, [esi + 8]
call fcn.004050c0
jmp 0x405af0
xor esi, esi
mov dword [ebp - 4], 0xffffffff
mov dword [0x5cf6e0], esi
mov eax, dword [esi]
mov ecx, dword [eax - 0x10]
lea esi, [eax - 0x10]
mov dword [ebp - 0x844], eax
mov eax, dword [ecx]
call dword [eax + 0x10]
cmp dword [esi + 0xc], 0
mov ecx, eax
lea eax, [esi + 0xc]
jl 0x405b24
cmp ecx, dword [esi]
jne 0x405b24
lock inc dword [eax]
jmp 0x405b55
mov eax, dword [ecx]
lea edi, [esi + 4]
push 2
push dword [edi]
call dword [eax]
mov esi, eax
test esi, esi
je 0x405e01
mov eax, dword [edi]
mov dword [esi + 4], eax
mov eax, dword [edi]
inc eax
push eax
push dword [ebp - 0x844]
push eax
lea eax, [esi + 0x10]
push eax
call fcn.00405280
add esp, 0x10
add esi, 0x10
mov dword [ebp - 0x844], esi
mov dword [ebp - 4], 5
mov edx, dword [esi - 0xc]
test edx, edx
js 0x405e06
mov eax, dword [esi - 8]
mov ecx, 1
sub ecx, dword [esi - 4]
sub eax, edx
or eax, ecx
jge 0x405b93
push edx
lea ecx, [ebp - 0x844]
call fcn.00404ff0
mov esi, dword [ebp - 0x844]
push dword [esi - 8]
push esi
call fcn.0054e61f
add esp, 8
test eax, eax
js 0x405e06
cmp eax, dword [esi - 8]
jg 0x405e06
mov dword [esi - 0xc], eax
xor ecx, ecx
mov word [esi + eax*2], cx
lea eax, [ebp - 0x83c]
push 0x800
push ecx
push eax
mov dword [ebp - method.CServiceBase.virtual_0], vtable.CServiceBase.0
call fcn.005482c0
push 0x3ff
push esi
lea eax, [ebp - 0x83c]
push 0x400
push eax
call fcn.0054e897
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x3c], pe_nt_image_headers32
mov dword [ebp - 0x38], 2
mov dword [ebp - 0x34], 5
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x2c], 0
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x24], 0
mov byte [ebp - 4], 6
push str.CRunService_Create
mov dword [ebp - method.CRunService.virtual_0], vtable.CRunService.0
call fcn.00403250
add esp, 0x20
mov dword [ebp - 0x1c], 0
push 0
push 0
push 1
push 0
call dword [sym.imp.KERNEL32.dll_CreateEventW]
mov dword [ebp - 0x18], eax
test eax, eax
je 0x405e10
push str.m_pPlugin_Create
call fcn.00403250
add esp, 4
mov dword [ebp - 0x14], 0
lea ecx, [ebp - 0x840]
mov byte [ebp - 4], 7
call fcn.00405620
mov eax, dword fs:[0x2c]
mov edi, dword [sym.imp.KERNEL32.dll_Sleep]
mov ebx, dword [eax]
mov eax, dword [0x5cf6c8]
cmp eax, dword [ebx + 4]
jle 0x405cd4
push 0x5cf6c8
call fcn.00545bac
add esp, 4
cmp dword [0x5cf6c8], 0xffffffff
jne 0x405cd4
xorps xmm0, xmm0
push 0x5740b0
movups xmmword [0x5cf6cc], xmm0
call fcn.00545f2f
push 0x5cf6c8
call fcn.00545b62
add esp, 8
cmp dword [0x5cf6d8], 0
jne 0x405ce6
push 0x3e8
call edi
jmp 0x405c90
lea ecx, [ebp - 0x840]
call fcn.00405450
mov ebx, dword [0x5cf6e0]
or edi, 0xffffffff
test ebx, ebx
je 0x405d7a
mov edx, dword [ebx + 0xc]
mov eax, edi
sub edx, 0x10
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x405d18
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebx + 8]
mov eax, edi
sub edx, 0x10
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x405d32
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebx + 4]
mov eax, edi
sub edx, 0x10
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x405d4c
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebx]
mov eax, edi
sub edx, 0x10
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x405d65
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push 0x10
push ebx
call fcn.00545a1e
add esp, 8
mov dword [0x5cf6e0], 0
mov byte [ebp - 4], 8
push str.Release_CRunService
mov dword [ebp - method.CRunService.virtual_0], vtable.CRunService.0
call fcn.00403250
add esp, 4
mov dword [ebp - method.CServiceBase.virtual_0], vtable.CServiceBase.0
mov dword [ebp - 4], 0xffffffff
add esi, 0xfffffff0
lock xadd dword [esi + 0xc], edi
dec edi
test edi, edi
jg 0x405dbb
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00545a0d
mov esp, ebp
pop ebp
ret
push 0x80004005
call fcn.00405250
push 0x80004005
call fcn.00405250
push 0x80004005
call fcn.00405250
push 0x80004005
call fcn.00405250
call fcn.00405270
push 0x80070057
call fcn.00405250
call ebx
mov dword [ebp - 0x848], eax
lea eax, [ebp - 0x848]
push 0x5c00d0
push eax
call fcn.0054841a
int3