Function at 0x406c70
Capabilities:
Accept command line arguments
Check mutex and terminate process on windows
Check mutex on windows
Terminate process

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x42c4a4
mov eax, dword fs:[0]
push eax
sub esp, 0x440
mov eax, dword [0x437640]
xor eax, ebp
mov dword [ebp - 0x20], eax
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
lea ecx, [ebp - 0x1f8]
call fcn.0040b0e0
mov dword [ebp - 4], 0
lea eax, [ebp - 0x1f8]
push eax
mov ecx, 0x438648
call fcn.00407260
lea ecx, [ebp - 0x1bc]
call fcn.00407550
mov byte [ebp - 4], 1
mov dword [ebp - 0x10], 0
xor ecx, ecx
mov word [ebp - 0x404], cx
push 0x206
push 0
lea edx, [ebp - 0x402]
push edx
call fcn.004138c0
add esp, 0xc
lea ecx, [ebp - 0x18]
call fcn.00402dc0
mov byte [ebp - 4], 2
lea eax, [ebp - 0x10]
push eax
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
push eax
call dword [sym.imp.SHELL32.dll_CommandLineToArgvW]
mov dword [ebp - 0x408], eax
cmp dword [ebp - 0x10], 2
jl 0x406ee2
mov dword [ebp - 0x410], 0
jmp 0x406d3b
mov ecx, dword [ebp - 0x410]
add ecx, 1
mov dword [ebp - 0x410], ecx
mov edx, dword [ebp - 0x410]
cmp edx, dword [ebp - 0x10]
jge 0x406ee0
mov eax, dword [ebp - 0x410]
mov ecx, dword [ebp - 0x408]
mov edx, dword [ecx + eax*4]
push edx
push 0x104
lea eax, [ebp - 0x404]
push eax
call fcn.00413852
add esp, 0xc
lea ecx, [ebp - 0x404]
push ecx
lea ecx, [ebp - 0x18]
call fcn.00405390
push 0
push str._Fact
lea ecx, [ebp - 0x18]
call fcn.0040bd40
mov dword [ebp - 0x414], eax
cmp dword [ebp - 0x414], 0
jne 0x406e2c
push 0
push 0x42e7e4
lea ecx, [ebp - 0x18]
call fcn.0040bd40
mov dword [ebp - 0x40c], eax
lea ecx, [ebp - 0x18]
call fcn.00402d80
sub eax, dword [ebp - 0x40c]
sub eax, 1
push eax
lea edx, [ebp - 0x418]
push edx
lea ecx, [ebp - 0x18]
call fcn.0040bde0
mov dword [ebp - 0x434], eax
mov eax, dword [ebp - 0x434]
mov dword [ebp - 0x438], eax
mov byte [ebp - 4], 3
mov ecx, dword [ebp - 0x438]
push ecx
lea ecx, [ebp - 0x18]
call fcn.00402e20
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x418]
call fcn.00402e00
push ecx
mov ecx, esp
mov dword [ebp - 0x41c], esp
lea edx, [ebp - 0x18]
push edx
call fcn.00402de0
mov dword [ebp - 0x43c], eax
lea ecx, [ebp - 0x1bc]
call fcn.00407bf0
push 0
push 0x42e7e8
lea ecx, [ebp - 0x18]
call fcn.0040bd40
mov dword [ebp - 0x414], eax
cmp dword [ebp - 0x414], 0
jne 0x406edb
push 0
push 0x42e800
lea ecx, [ebp - 0x18]
call fcn.0040bd40
mov dword [ebp - 0x40c], eax
lea ecx, [ebp - 0x18]
call fcn.00402d80
sub eax, dword [ebp - 0x40c]
sub eax, 1
push eax
lea eax, [ebp - 0x420]
push eax
lea ecx, [ebp - 0x18]
call fcn.0040bde0
mov dword [ebp - 0x440], eax
mov ecx, dword [ebp - 0x440]
mov dword [ebp - 0x444], ecx
mov byte [ebp - 4], 4
mov edx, dword [ebp - 0x444]
push edx
lea ecx, [ebp - 0x18]
call fcn.00402e20
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x420]
call fcn.00402e00
push ecx
mov ecx, esp
mov dword [ebp - 0x424], esp
lea eax, [ebp - 0x18]
push eax
call fcn.00402de0
mov dword [ebp - 0x448], eax
lea ecx, [ebp - 0x1bc]
call fcn.00407c50
jmp 0x406d2c
jmp 0x406ef1
push 0
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [sym.imp.KERNEL32.dll_TerminateProcess]
mov dword [ebp - 0x1c], 0
push str.718FF40B_EB81_4FCB_A2BC_077B71935970
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexW]
mov dword [ebp - 0x1c], eax
cmp dword [ebp - 0x1c], 0
je 0x406f29
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
je 0x406f29
mov dword [ebp - 0x44c], 0
jmp 0x406f33
mov dword [ebp - 0x44c], 1
mov cl, byte [ebp - 0x44c]
mov byte [ebp - 0x1bd], cl
movzx edx, byte [ebp - 0x1bd]
test edx, edx
je 0x406f9b
push 0
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [sym.imp.KERNEL32.dll_TerminateProcess]
mov dword [ebp - 0x428], 0
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x18]
call fcn.00402e00
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x1bc]
call fcn.00407aa0
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x1f8]
call fcn.0040b2e0
mov eax, dword [ebp - 0x428]
jmp 0x40708f
push 0
push 0
lea ecx, [ebp - 0x1bc]
call fcn.0040c320
test eax, eax
jne 0x406ff0
mov dword [ebp - 0x42c], 0
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x18]
call fcn.00402e00
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x1bc]
call fcn.00407aa0
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x1f8]
call fcn.0040b2e0
mov eax, dword [ebp - 0x42c]
jmp 0x40708f
mov eax, dword [ebp + 0xc]
push eax
lea ecx, [ebp - 0x1b8]
call fcn.00407450
push 3
push 0
push 0
push 0
push 0
push 0xffffffffffffffff
mov ecx, dword [ebp - 0x1b8]
push ecx
call dword [sym.imp.USER32.dll_SetWindowPos]
push 3
push 0
push 0
push 0
push 0
push 0xfffffffffffffffe
mov edx, dword [ebp - 0x1b8]
push edx
call dword [sym.imp.USER32.dll_SetWindowPos]
lea ecx, [ebp - 0x1f8]
call fcn.00407120
mov dword [ebp - 0x14], eax
mov ecx, 0x438648
call fcn.00407380
mov eax, dword [ebp - 0x1c]
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ecx, dword [ebp - 0x14]
mov dword [ebp - 0x430], ecx
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x18]
call fcn.00402e00
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x1bc]
call fcn.00407aa0
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x1f8]
call fcn.0040b2e0
mov eax, dword [ebp - 0x430]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
mov ecx, dword [ebp - 0x20]
xor ecx, ebp
call fcn.00413171
mov esp, ebp
pop ebp
ret