Function at 0x1001930
Capabilities:
Check mutex and terminate process on windows
Check mutex on windows
Create thread
Get common file path
Set current directory
Terminate process

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x2bc
mov eax, dword [0x100701c]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
xor ebx, ebx
cmp byte [0x1007012], bl
je 0x1001960
push 0x10011cc
call fcn.01003ee6
mov byte [0x1007012], bl
push ebx
push 0x10012e8
call dword [sym.imp.KERNEL32.dll_RegisterApplicationRestart]
push ebx
push ebx
push 1
push ebx
call dword [sym.imp.KERNEL32.dll_HeapSetInformation]
call fcn.01003369
test eax, eax
je 0x1001b5b
push esi
push edi
xor eax, eax
lea edi, [ebp - 0x20c]
stosw word es:[edi], ax
push 0x208
lea eax, [ebp - 0x20c]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
lea eax, [ebp - 0x20c]
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
mov esi, 0x94
push esi
lea eax, [ebp - 0x2a0]
push ebx
push eax
call sub.msvcrt.dll_memset
add esp, 0xc
lea eax, [ebp - 0x2a0]
push eax
mov dword [ebp - 0x2a0], esi
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
test eax, eax
je 0x10019ec
xor eax, eax
cmp dword [ebp - 0x290], 2
sete al
mov edi, eax
jmp 0x10019f4
call dword [sym.imp.KERNEL32.dll_GetLastError]
xor edi, edi
call fcn.010017cc
mov eax, dword [ebp + 8]
mov dword [0x1007490], eax
cmp edi, ebx
je 0x1001a15
push 0x10012c8
push ebx
push 1
call fcn.01001804
push eax
jmp 0x1001a1e
push 0x10012b0
push ebx
push 1
push ebx
mov esi, dword [sym.imp.KERNEL32.dll_CreateEventA]
call esi
mov dword [ebp - 0x2a8], eax
cmp eax, ebx
je 0x1001b57
push eax
call fcn.01001556
cmp edi, ebx
je 0x1001a50
push 0x1001298
push 0x10
push ebx
push 4
call fcn.01001804
push eax
jmp 0x1001a5b
push 0x1001284
push 0x10
push ebx
push 4
push ebx
push 0xffffffffffffffff
call dword [sym.imp.KERNEL32.dll_CreateFileMappingA]
mov dword [ebp - 0x2a4], eax
cmp eax, ebx
je 0x1001b57
cmp edi, ebx
je 0x1001a83
push 0x100126c
push ebx
call fcn.01001804
push eax
jmp 0x1001a8a
push 0x100125c
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
mov dword [ebp - 0x2ac], eax
cmp eax, ebx
jne 0x1001aab
push dword [ebp - 0x2a4]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x1001b57
cmp edi, ebx
je 0x1001abe
push 0x1001244
push ebx
push ebx
call fcn.01001804
push eax
jmp 0x1001ac6
push 0x1001234
push ebx
push ebx
push ebx
call esi
mov dword [ebp - 0x2b0], eax
cmp eax, ebx
jne 0x1001ae8
push dword [ebp - 0x2ac]
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
call esi
push dword [ebp - 0x2a4]
jmp 0x1001b55
cmp edi, ebx
je 0x1001afb
push 0x1001218
push ebx
push ebx
call fcn.01001804
push eax
jmp 0x1001b03
push 0x1001204
push ebx
push ebx
push ebx
call esi
mov dword [ebp - 0x2b4], eax
cmp eax, ebx
jne 0x1001b17
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x1001b3f
lea eax, [ebp - 0x2bc]
push eax
push ebx
push ebx
push 0x1001694
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_CreateThread]
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp eax, ebx
jne 0x1001b6a
push dword [ebp - 0x2b4]
call esi
push dword [ebp - 0x2ac]
call esi
push dword [ebp - 0x2a4]
call esi
push dword [ebp - 0x2b0]
call esi
xor eax, eax
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
pop ebx
call fcn.010036a4
leave
ret 0x10
push eax
call esi
push 0x10074a0
call dword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
cmp dword [0x1007064], ebx
jne 0x1001b89
call fcn.010023af
cmp eax, ebx
jl 0x1001b59
call fcn.01001d9a
cmp dword [0x100705c], ebx
je 0x1001ba0
push 0x8ba
call fcn.0100211d
push dword [ebp - 0x2a8]
call dword [sym.imp.KERNEL32.dll_SetEvent]
call dword [sym.imp.WINMM.dll_timeGetTime]
mov dword [ebp - 0x2a8], eax
mov dword [ebp - 0x2b8], eax
mov eax, dword [ebp - 0x2b8]
sub eax, dword [ebp - 0x2a8]
add eax, 0xea60
jns 0x1001bd3
xor eax, eax
push eax
push dword [ebp - 0x2b0]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov edi, eax
call dword [sym.imp.WINMM.dll_timeGetTime]
mov dword [ebp - 0x2a8], eax
cmp edi, 0x102
jne 0x1001c0b
mov dword [ebp - 0x2b8], eax
cmp dword [0x100705c], ebx
je 0x1001bbe
call fcn.01001d60
jmp 0x1001bbe
cmp edi, 0xffffffff
je 0x1001bbe
push 0x10074a0
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
push ebx
push ebx
push ebx
push 0xf001f
push dword [ebp - 0x2a4]
call dword [sym.imp.KERNEL32.dll_MapViewOfFile]
mov edi, eax
cmp edi, ebx
je 0x1001d4b
mov eax, dword [edi]
dec eax
je 0x1001c9a
dec eax
je 0x1001c65
dec eax
je 0x1001c59
dec eax
jne 0x1001d38
call dword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
mov dword [edi + 4], eax
jmp 0x1001d38
push ebx
push edi
call fcn.010021e9
jmp 0x1001d38
push edi
call fcn.010028aa
mov dword [edi + 0xc], eax
cmp dword [0x100705c], ebx
jne 0x1001d38
call fcn.01001d9a
cmp dword [0x100705c], ebx
je 0x1001d38
push 0x8ba
call fcn.0100211d
jmp 0x1001d38
cmp dword [0x100705c], ebx
je 0x1001ca7
call fcn.010020d6
call fcn.010027fd
push dword [ebp - 0x2b4]
call dword [sym.imp.KERNEL32.dll_SetEvent]
push dword [ebp - 0x2ac]
call esi
push edi
call dword [sym.imp.KERNEL32.dll_UnmapViewOfFile]
push dword [ebp - 0x2a4]
call esi
push dword [ebp - 0x2b0]
call esi
mov eax, dword [0x10073c4]
cmp eax, ebx
je 0x1001ce6
push eax
call fcn.01003324
mov eax, dword [0x10073cc]
cmp eax, ebx
je 0x1001cf5
push eax
call fcn.01003324
push 0x10074a0
call dword [sym.imp.KERNEL32.dll_DeleteCriticalSection]
mov eax, dword [0x1007048]
cmp eax, ebx
je 0x1001d2a
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
push eax
call dword [sym.imp.KERNEL32.dll_HeapFree]
mov dword [0x1007048], ebx
mov dword [0x1007044], ebx
mov dword [0x1007040], ebx
push ebx
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [sym.imp.KERNEL32.dll_TerminateProcess]
push edi
call dword [sym.imp.KERNEL32.dll_UnmapViewOfFile]
push dword [ebp - 0x2b4]
call dword [sym.imp.KERNEL32.dll_SetEvent]
push 0x10074a0
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
jmp 0x1001bbe