Function at 0x40ac20
Capabilities:
Check mutex on windows
Create thread
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xfc
mov eax, dword [0x4fad60]
xor eax, esp
mov dword [esp + 0xf8], eax
push ebx
push esi
mov esi, dword [sym.imp.KERNEL32.dll_CreateMutexW]
push edi
push str.BA84E4D5_163D_40a0_BAEF_2D7E2D6468B5
push 0
push 0
call esi
mov edi, dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [esp + 0x20], eax
call edi
push str.05CA3573_B449_4e0b_83F5_7FD612E378E9
push 0
push 0
mov dword [esp + 0x28], eax
call esi
mov ebx, eax
mov dword [esp + 0x28], ebx
call edi
cmp dword [esp + 0x1c], 0xb7
mov dword [esp + 0x24], eax
jne 0x40ac98
push 0
push 0x4dde58
push 0x4dde64
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
jmp 0x40b206
cmp eax, 0xb7
jne 0x40acb8
push 0
push 0x4dde58
push 0x4dde78
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
jmp 0x40b206
xor esi, esi
push esi
call fcn.00492c3f
mov dword [esp + 0x14], eax
add esp, 4
lea eax, [esp + 0x10]
push eax
lea ecx, [esp + 0x88]
push ecx
mov dword [esp + 0x1c], edx
call fcn.0049285f
lea edx, [esp + 0x18]
push edx
lea eax, [esp + 0x90]
push eax
call fcn.0049285f
lea ecx, [esp + 0x20]
push ecx
lea edx, [esp + 0x98]
push edx
call fcn.0049285f
lea eax, [esp + 0x28]
push eax
lea ecx, [esp + 0xa0]
push ecx
call fcn.0049285f
lea edx, [esp + 0x30]
push edx
lea eax, [esp + 0xa8]
push eax
call fcn.0049285f
lea ecx, [esp + 0x38]
push ecx
lea edx, [esp + 0xb0]
push edx
call fcn.0049285f
lea eax, [esp + 0x40]
push eax
lea ecx, [esp + 0xb8]
push ecx
call fcn.0049285f
lea edx, [esp + 0x48]
push edx
lea eax, [esp + 0xc0]
push eax
call fcn.0049285f
add esp, 0x40
lea ecx, [esp + 0x10]
push ecx
lea ecx, [esp + 0xac]
call fcn.004532d0
lea ecx, [esp + 0x68]
mov edi, 7
xor edx, edx
xor eax, eax
push ecx
mov dword [esp + 0x80], edi
mov dword [esp + 0x7c], esi
mov word [esp + 0x6c], dx
mov dword [esp + 0x64], edi
mov dword [esp + 0x60], esi
mov word [esp + 0x50], ax
call fcn.0044f000
add esp, 4
mov dword [esp + 0xd4], esi
xor edx, edx
push 0x12
mov eax, str.iClientControl.dll
lea esi, [esp + 0xc8]
mov dword [esp + 0xdc], edi
mov word [esp + 0xc8], dx
call fcn.00403e70
lea eax, [esp + 0x68]
push eax
mov edx, esi
lea ecx, [esp + 0x88]
call fcn.0044e150
add esp, 4
mov edi, eax
lea esi, [esp + 0x4c]
call fcn.00409010
mov edi, 8
cmp dword [esp + 0x98], edi
jb 0x40ae0c
mov ecx, dword [esp + 0x84]
push ecx
call fcn.00490a16
add esp, 4
xor edx, edx
mov dword [esp + 0x98], 7
mov dword [esp + 0x94], 0
mov word [esp + 0x84], dx
cmp dword [esp + 0xd8], edi
jb 0x40ae45
mov eax, dword [esp + 0xc4]
push eax
call fcn.00490a16
add esp, 4
mov eax, dword [esp + 0x4c]
cmp dword [esp + 0x60], edi
jae 0x40ae53
lea eax, [esp + 0x4c]
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov esi, eax
test esi, esi
jne 0x40af01
push str.iClientControl
mov esi, 0x503bc8
call fcn.00412430
add esp, 4
cmp dword [esp + 0x60], edi
jb 0x40ae89
mov ecx, dword [esp + 0x4c]
push ecx
call fcn.00490a16
add esp, 4
xor edx, edx
mov esi, 7
mov dword [esp + 0x60], esi
mov dword [esp + 0x5c], 0
mov word [esp + 0x4c], dx
cmp dword [esp + 0x7c], edi
jb 0x40aeb4
mov eax, dword [esp + 0x68]
push eax
call fcn.00490a16
add esp, 4
xor ecx, ecx
mov dword [esp + 0x7c], esi
mov dword [esp + 0x78], 0
mov word [esp + 0x68], cx
cmp dword [esp + 0xbc], edi
jb 0x40aee0
mov edx, dword [esp + 0xa8]
push edx
call fcn.00490a16
add esp, 4
xor eax, eax
mov dword [esp + 0xbc], esi
mov dword [esp + 0xb8], 0
mov word [esp + 0xa8], ax
jmp 0x40b206
mov edi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.InitializeClient
push esi
call edi
push str.RunClient
push esi
mov dword [0x502268], eax
call edi
push str.RunUsbMonitor
push esi
mov dword [0x50226c], eax
call edi
push str.UnInitializeClient
push esi
mov dword [0x502274], eax
call edi
mov dword [0x502270], eax
call fcn.004128d0
call fcn.004141d0
test al, al
jne 0x40af75
cmp dword [0x502274], 0
je 0x40af75
push 0x4ddf48
mov ecx, 0x503bc8
call fcn.004122f0
add esp, 4
push 0
push 0x4dde58
push str.USB
jmp 0x40b1e0
push 0
push 0
call fcn.0041d950
add esp, 8
test eax, eax
je 0x40af93
call fcn.00422510
test eax, eax
jne 0x40af93
call fcn.0040e570
call fcn.0040dd00
call fcn.0040dda0
call fcn.0040def0
call fcn.0040dfa0
mov eax, dword [0x502268]
test eax, eax
je 0x40b1ae
call eax
test eax, eax
mov eax, dword [0x4feecc]
jne 0x40b029
cmp dword [0x4feee0], 8
jae 0x40afcd
mov eax, 0x4feecc
push eax
push 0x4ddf88
mov ecx, 0x503bc8
call fcn.004122f0
add esp, 8
push 0
push 0x4dde58
push 0x4ddf98
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
lea ecx, [esp + 0x4c]
call fcn.00404690
lea ecx, [esp + 0x68]
call fcn.00404690
lea ecx, [esp + 0xa8]
call fcn.00404690
lea esi, [esp + 0x24]
call fcn.00452220
lea esi, [esp + 0x1c]
call fcn.00452220
jmp 0x40b21e
cmp dword [0x4feee0], 8
jae 0x40b037
mov eax, 0x4feecc
push eax
push 0x4ddff0
mov ecx, 0x503bc8
call fcn.004122f0
add esp, 8
call fcn.0040d480
mov edi, dword [sym.imp.KERNEL32.dll_Sleep]
push 0x12c
call edi
lea ecx, [esp + 0xe0]
push ecx
call fcn.0045bb80
lea ecx, [esp + 0xe0]
call fcn.0045bc70
call fcn.00415ea0
test al, al
je 0x40b0b7
mov eax, 1
test byte [0x506808], al
jne 0x40b0a8
or dword [0x506808], eax
mov ecx, 0x5067c8
call fcn.004268a0
push 0x4d8c00
call fcn.004913b3
add esp, 4
mov dword [0x5067c8], 0x40c7b0
call fcn.00426a50
mov esi, dword [sym.imp.KERNEL32.dll_CreateThread]
lea edx, [esp + 0x2c]
push edx
push 0
push 0
push 0x40b7e0
push 0
push 0
call esi
lea eax, [esp + 0x2c]
push eax
push 0
push 0
push 0x40be30
push 0
push 0
call esi
call fcn.0040b480
call dword [0x50226c]
call fcn.0040cf30
push 0xc8
call edi
mov esi, dword [sym.imp.USER32.dll_GetMessageW]
push 0
push 0
push 0
lea ecx, [esp + 0x3c]
push ecx
call esi
test eax, eax
je 0x40b155
mov edi, dword [sym.imp.USER32.dll_TranslateAcceleratorW]
mov ebx, dword [sym.imp.USER32.dll_TranslateMessage]
nop
mov eax, dword [esp + 0x30]
lea edx, [esp + 0x30]
push edx
push 0
push eax
call edi
test eax, eax
jne 0x40b144
lea ecx, [esp + 0x30]
push ecx
call ebx
lea edx, [esp + 0x30]
push edx
call dword [sym.imp.USER32.dll_DispatchMessageW]
push 0
push 0
push 0
lea eax, [esp + 0x3c]
push eax
call esi
test eax, eax
jne 0x40b120
mov edi, dword [esp + 0x38]
lea esi, [esp + 0xe0]
call fcn.0045bc40
lea ecx, [esp + 0x4c]
call fcn.00404690
lea ecx, [esp + 0x68]
call fcn.00404690
lea ecx, [esp + 0xa8]
call fcn.00404690
lea esi, [esp + 0x24]
call fcn.00452220
lea esi, [esp + 0x1c]
call fcn.00452220
mov eax, edi
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xf8]
xor ecx, esp
call fcn.00490a21
mov esp, ebp
pop ebp
ret 0x10
cmp dword [0x4feee0], 8
mov eax, dword [0x4feecc]
jae 0x40b1c1
mov eax, 0x4feecc
push eax
push 0x4ddf88
mov ecx, 0x503bc8
call fcn.004122f0
add esp, 8
push 0
push 0x4dde58
push 0x4ddfc0
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
lea ecx, [esp + 0x4c]
call fcn.00404690
lea ecx, [esp + 0x68]
call fcn.00404690
lea ecx, [esp + 0xa8]
call fcn.00404690
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
test ebx, ebx
je 0x40b213
push ebx
call esi
mov eax, dword [esp + 0x20]
test eax, eax
je 0x40b21e
push eax
call esi
mov ecx, dword [esp + 0x104]
pop edi
pop esi
pop ebx
xor ecx, esp
xor eax, eax
call fcn.00490a21
mov esp, ebp
pop ebp
ret 0x10