Function at 0x10016190
Capabilities:
Check mutex on windows

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x10087370
mov eax, dword fs:[0]
push eax
sub esp, 0x40
mov eax, dword [0x100c90c0]
xor eax, esp
mov dword [esp + 0x38], eax
push ebx
push esi
push edi
mov eax, dword [0x100c90c0]
xor eax, esp
push eax
lea eax, [esp + 0x50]
mov dword fs:[0], eax
mov edi, ecx
push str.Start
push str.CIEInjector::ExecuteInjectionProcessIfNeeded
push 0x3e
call fcn.10041ef0
add esp, 0xc
push str.Start
push str.CIEInjector::ExecuteInjectionProcessIfNeeded
push 0xd
call fcn.10041ef0
add esp, 0xc
push 1
push 0xffffffffffffffff
call fcn.10017680
test eax, eax
je 0x10016217
push str.bIsParentProcessAlreadyInjected
push str.CIEInjector::ExecuteInjectionProcessIfNeeded
push 0x3e
call fcn.10041ef0
add esp, 0xc
jmp 0x100163c7
mov dword [esp + 0x24], vtable.CUtils.0
mov dword [esp + 0x58], 0
call dword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
mov ecx, eax
call fcn.1004f9c0
push eax
mov edx, str.TryToInjectToIe
lea ecx, [esp + 0x18]
call fcn.10017c20
add esp, 4
mov byte [esp + 0x58], 1
mov esi, dword [esp + 0x20]
lea ecx, [esp + 0x28]
xor ebx, ebx
call fcn.1004edf0
push esi
push 1
push eax
call dword [sym.imp.KERNEL32.dll_CreateMutexW]
mov esi, eax
test esi, esi
je 0x1001628a
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x1001628c
push esi
mov ebx, 1
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
xor esi, esi
mov dword [edi + 0xc], esi
test esi, esi
je 0x10016297
test ebx, ebx
je 0x100162e4
cmp dword [edi + 0x14], 0
je 0x10016393
cmp dword [edi + 0x10], 0
je 0x10016393
push 0
call fcn.1006e575
sub eax, dword [edi + 0x10]
add esp, 4
cmp eax, 0x124f80
jge 0x100162e4
push str._bShouldAttmeptInjection
push str.CIEInjector::ExecuteInjectionProcessIfNeeded
push 0x3e
call fcn.10041ef0
add esp, 0xc
push 0x10096f9c
push str.CIEInjector::ExecuteInjectionProcessIfNeeded
push 0xd
jmp 0x100163a6
cmp dword [edi + 0xc], 0
je 0x100162f1
mov ecx, edi
call fcn.10017b00
mov eax, dword [0x100f2540]
test eax, eax
jne 0x1001630b
call dword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
push eax
call fcn.1004f220
mov dword [0x100f2540], eax
cmp eax, 3
jl 0x10016339
push str.Medium_or_high___InjectToIE
push str.CIEInjector::ExecuteInjectionProcessIfNeeded
push 0x3e
call fcn.10041ef0
add esp, 0xc
mov ecx, edi
call fcn.100163f0
push 0x10096f9c
push str.CIEInjector::ExecuteInjectionProcessIfNeeded
push 0xd
jmp 0x100163a6
push str.before_RunHelperForInjection
push str.CIEInjector::ExecuteInjectionProcessIfNeeded
push 0x3e
call fcn.10041ef0
add esp, 0xc
mov ecx, edi
call fcn.10017790
mov esi, eax
mov eax, str.FALSE
mov ecx, str.TRUE
test esi, esi
cmove ecx, eax
push ecx
push str.after_RunHelperForInjection___bHelperHasBeenExecuted:__s
push str.CIEInjector::ExecuteInjectionProcessIfNeeded
push 0x3e
call fcn.10041ef0
add esp, 0x10
test esi, esi
jne 0x10016385
mov ecx, edi
call fcn.10017bb0
push 0x10096f9c
push str.CIEInjector::ExecuteInjectionProcessIfNeeded
push 0xd
jmp 0x100163a6
mov ecx, edi
call fcn.100175c0
push str.SetAttemptTimer
push str.CIEInjector::ExecuteInjectionProcessIfNeeded
push 0x3e
call fcn.10041ef0
mov eax, dword [esp + 0x2c]
add esp, 0xc
mov dword [esp + 0x14], vtable.CStringBufferW.0
test eax, eax
je 0x100163c7
push eax
call fcn.1006eaef
add esp, 4
mov ecx, dword [esp + 0x50]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x38]
xor ecx, esp
call fcn.1006daee
mov esp, ebp
pop ebp
ret