Function at 0x402af6
Capabilities:
Check mutex and terminate process on windows
Check mutex on windows
Terminate process

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x418876
mov eax, dword fs:[0]
push eax
sub esp, 0x260
mov eax, dword [0x41f2c4]
xor eax, esp
mov dword [esp + 0x258], eax
push ebx
push esi
push edi
mov eax, dword [0x41f2c4]
xor eax, esp
push eax
lea eax, [esp + 0x270]
mov dword fs:[0], eax
mov esi, ecx
call fcn.00402f1b
xor ebx, ebx
cmp esi, ebx
jne 0x402b48
mov esi, 0x41b258
push esi
push 0x42079c
call fcn.004022a8
mov esi, 0x41b4d0
push esi
push ebx
push 0x20000
call dword [sym.imp.KERNEL32.dll_OpenMutexW]
mov dword [0x4214c0], eax
cmp eax, ebx
je 0x402b7a
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x402e94
call dword [sym.imp.SHApp.dll_class_ISHApp____stdcall_GetSHApp_void_]
mov edx, dword [eax]
push ebx
push 0x4030ad
mov ecx, eax
call dword [edx + 0x54]
push esi
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_CreateMutexW]
mov dword [0x4214c0], eax
xor eax, eax
push 0x206
mov word [esp + 0x60], ax
lea eax, [esp + 0x62]
push ebx
push eax
call fcn.00409410
add esp, 0xc
push 0x104
lea eax, [esp + 0x60]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
lea eax, [esp + 0x5c]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFindFileNameW]
push eax
lea eax, [esp + 0x48]
push eax
call fcn.00405881
pop ecx
pop ecx
mov dword [esp + 0x278], ebx
call dword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
mov esi, dword [esp + 0x50]
mov dword [esp + 0x18], eax
cmp esi, dword [esp + 0x54]
jbe 0x402bfe
call fcn.00408615
mov edi, dword [esp + 0x44]
mov dword [esp + 0x10], edi
mov dword [esp + 0x14], esi
mov esi, dword [esp + 0x54]
cmp dword [esp + 0x50], esi
jbe 0x402c19
call fcn.00408615
cmp edi, ebx
je 0x402c23
cmp edi, dword [esp + 0x44]
je 0x402c28
call fcn.00408615
cmp dword [esp + 0x14], esi
je 0x402c97
lea esi, [esp + 0x10]
call fcn.00403208
mov ecx, dword [esp + 0x18]
cmp dword [eax], ecx
je 0x402c70
call fcn.00403208
push dword [eax]
push ebx
push 1
call dword [sym.imp.KERNEL32.dll_OpenProcess]
mov esi, eax
cmp esi, ebx
je 0x402c70
push ebx
push esi
call dword [sym.imp.KERNEL32.dll_TerminateProcess]
push 0x1388
push esi
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp edi, ebx
jne 0x402c93
call fcn.00408615
xor eax, eax
mov ecx, dword [esp + 0x14]
cmp ecx, dword [eax + 0x10]
jb 0x402c89
call fcn.00408615
add dword [esp + 0x14], 4
jmp 0x402c0a
mov eax, dword [edi]
jmp 0x402c7b
push ebx
call dword [sym.imp.ole32.dll_CoInitialize]
push ebx
push ebx
push ebx
push ebx
call dword [sym.imp.USER32.dll_DefWindowProcW]
call fcn.00403769
mov eax, dword [0x42149c]
add eax, 0x10
push eax
mov dword [esp + 0x14], eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov dword [esp + 0x18], eax
mov eax, dword [0x42150c]
lea esi, [eax + 8]
mov ecx, dword [esi]
push 4
inc ecx
push ecx
push dword [eax]
mov edi, eax
call fcn.00407dd4
add esp, 0xc
cmp eax, ebx
je 0x402d24
mov dword [edi], eax
mov eax, dword [esi]
push 4
inc eax
push eax
push dword [edi + 4]
call fcn.00407dd4
add esp, 0xc
cmp eax, ebx
je 0x402d24
mov dword [edi + 4], eax
mov eax, dword [esi]
mov ecx, eax
mov eax, dword [edi]
shl ecx, 2
add eax, ecx
je 0x402d15
mov edx, dword [esp + 0x18]
mov dword [eax], edx
mov edi, dword [edi + 4]
add edi, ecx
je 0x402d22
mov dword [edi], 0x4207b8
inc dword [esi]
push dword [esp + 0x10]
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
lea ecx, [esp + 0x10]
mov byte [esp + 0x14], bl
call fcn.004023a9
mov eax, dword [sym.imp.USER32.dll_DefWindowProcW]
mov edi, vtable.CHideWindow.1.0
mov dword [esp + 0x20], ebx
mov dword [esp + 0x30], ebx
mov dword [esp + 0x34], ebx
mov dword [esp + 0x38], ebx
mov dword [esp + 0x3c], eax
mov dword [esp + 0x1c], vtable.CHideWindow.0
mov dword [esp + 0x40], edi
mov byte [esp + 0x278], 1
xor esi, esi
cmp dword [0x420730], ebx
jne 0x402d7d
mov dword [0x420730], ebx
lea eax, [esp + 0x3c]
push eax
push 0x420700
push 0x420880
call fcn.004033df
add esp, 0xc
movzx eax, ax
push eax
push esi
push 0x40100
push 0x6cf0000
push 0x41b64c
push ebx
lea ebx, [esp + 0x34]
call fcn.004032a0
xor ebx, ebx
push ebx
push dword [esp + 0x24]
call dword [sym.imp.USER32.dll_ShowWindow]
push dword [esp + 0x20]
call dword [sym.imp.USER32.dll_UpdateWindow]
push str.ChangeWindowMessageFilter
push str.USER32
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov esi, eax
cmp esi, ebx
je 0x402e07
push 1
push 0x4a
call esi
push 1
push 0x7e7
call esi
push 1
push 0x658
call esi
push 1
push 0x659
call esi
mov eax, dword [esp + 0x20]
mov esi, dword [sym.imp.SHApp.dll_class_ISHApp____stdcall_GetSHApp_void_]
mov dword [0x4214c4], eax
call esi
push dword [0x4214c4]
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 4]
call esi
mov edx, dword [eax]
push ebx
push 0x4030ad
mov ecx, eax
call dword [edx + 0x34]
lea eax, [esp + 0x1c]
push eax
call fcn.004014d3
call fcn.004036d4
call fcn.004035bd
push dword [0x4214c0]
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
push dword [0x4214c0]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
call esi
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 8]
mov byte [esp + 0x278], bl
mov dword [esp + 0x1c], vtable.CHideWindow.0
mov dword [esp + 0x40], edi
cmp dword [esp + 0x30], ebx
je 0x402e8b
push dword [esp + 0x30]
call fcn.00407802
lea esi, [esp + 0x44]
call fcn.004031e5
mov ecx, dword [esp + 0x270]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x258]
xor ecx, esp
call fcn.00407af8
mov esp, ebp
pop ebp
ret