Function at 0x40cb68
Capabilities:
Check mutex on windows
Create thread

Disassembly:
mov eax, 0x41dff4
call fcn.0041abb0
sub esp, 0x44
mov eax, dword [0x42b530]
push ebx
push esi
xor eax, ebp
push edi
mov dword [ebp - 0x10], eax
mov esi, ecx
call fcn.00416e70
mov dword [esi + 0x10], eax
lea eax, [ebp - 0x50]
push eax
call fcn.0040e32a
pop ecx
and dword [ebp - 4], 0
lea edi, [esi + 0x14]
push eax
mov ecx, edi
call dword [0x420240]
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x50]
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
push 0x2e
mov ecx, edi
call dword [sym.imp.MSVCP71.dll_public:_wchar_t_const____thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::c_str_void_const]
push eax
lea eax, [ebp - 0x50]
push eax
call fcn.00410f3d
add esp, 0xc
mov dword [ebp - 4], 1
lea ebx, [esi + 0x30]
push eax
mov ecx, ebx
call dword [0x420240]
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x50]
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
lea eax, [ebp - 0x2c]
push eax
call fcn.0040e385
pop ecx
mov dword [ebp - 4], 2
push ebx
lea eax, [ebp - 0x2c]
push eax
mov ecx, esi
call fcn.0040a219
lea eax, [ebp - 0x50]
push edi
push eax
call fcn.00411940
pop ecx
pop ecx
mov byte [ebp - 4], 3
mov ecx, eax
call dword [sym.imp.MSVCP71.dll_public:_wchar_t_const____thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::c_str_void_const]
push eax
xor ebx, ebx
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_CreateMutexW]
mov dword [esi + 0x5c], eax
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x50]
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
cmp dword [esi + 0x5c], ebx
jne 0x40cc79
push str.create_tp_keep_alive_mutex_failed
lea ecx, [ebp - 0x50]
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_char_const__]
mov byte [ebp - 4], 4
push 0xf0
push str.._tp_handler.cpp
lea eax, [ebp - 0x50]
push eax
push str.false
call fcn.004148a0
add esp, 0x10
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x50]
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
push dword [esi + 0x5c]
jne 0x40cc97
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [esi + 0x5c], ebx
jmp 0x40cddd
call fcn.00411050
pop ecx
lea edi, [esi + 0xa8]
push ebx
mov ecx, edi
call fcn.0040e607
mov ecx, esi
call fcn.0040ba0d
test al, al
jne 0x40ccc9
mov ecx, esi
call fcn.0040b377
mov ecx, edi
call fcn.0040e58e
jmp 0x40cddd
lea ecx, [esi + 0xb8]
call fcn.0040a050
push ebx
push ebx
push esi
push 0x40ca61
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_CreateThread]
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ecx, esi
call fcn.0040aecc
mov ecx, esi
call fcn.0040ac84
push dword [esi + 0x68]
call dword [sym.imp.KERNEL32.dll_SetEvent]
push 0xbb8
push dword [esi + 0x60]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
cmp eax, ebx
mov dword [ebp - 0x30], eax
jne 0x40cd1e
mov ecx, esi
call fcn.0040cadc
cmp byte [esi + 0x4c], 0
jne 0x40cd02
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, dword [esi + 0x8c]
add ecx, 0xea60
cmp ecx, eax
mov dword [ebp - 0x34], eax
jae 0x40cd7e
cmp dword [esi + 0x58], 1
jne 0x40cd78
mov eax, dword [esi + 0x54]
mov edi, dword [eax]
call dword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
cmp dword [edi + 0xc], eax
jne 0x40cd75
call fcn.00418120
test eax, eax
je 0x40cd75
call dword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
push eax
mov ecx, esi
call fcn.0040bbf6
mov ecx, esi
call fcn.0040b3fe
test al, al
jne 0x40cdc0
mov eax, dword [ebp - 0x34]
mov dword [esi + 0x8c], eax
cmp dword [ebp - 0x30], 0x102
je 0x40cd9b
mov ecx, dword [esi + 0x88]
add ecx, 0xbb8
cmp ecx, eax
jae 0x40cd02
mov ecx, esi
mov dword [esi + 0x88], eax
call fcn.0040bc41
cmp dword [esi + 0x58], ebx
jne 0x40cd02
mov ecx, esi
call fcn.0040b3fe
test al, al
je 0x40cd02
lea ecx, [esi + 0xa8]
call fcn.0040e58e
mov ecx, esi
call fcn.0040ae2e
lea ecx, [esi + 0xbc]
call fcn.0040314b
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x2c]
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
mov ecx, dword [ebp - 0xc]
pop edi
mov dword fs:[0], ecx
mov ecx, dword [ebp - 0x10]
pop esi
xor ecx, ebp
pop ebx
call fcn.0041ac61
leave
ret