Function at 0x10ad4bd
Capabilities:
Check mutex on windows

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x394
mov eax, dword [0x10b1058]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [0x10017e8]
and dword [ebp - 0x36c], 0
and dword [ebp - 0x374], 0
push ebx
mov ebx, dword [ebp + 8]
push esi
push edi
mov esi, 0x10017f0
lea edi, [ebp - 0x14]
movsd dword es:[edi], dword [esi]
push 0x10a6438
mov dword [ebp - 0xc], eax
mov eax, dword [0x10017ec]
push 0x10a61f4
movsw word es:[edi], word [esi]
push 0xffffffffffffffff
mov dword [ebp - 8], eax
lea eax, [ebp - 0x30]
push 0x1a
push eax
mov dword [ebp - 0x37c], ebx
mov dword [ebp - 0x358], 1
mov dword [ebp - 0x390], 0x10a6430
mov dword [ebp - 0x38c], 0x10a6428
mov dword [ebp - 0x388], 0x10a6424
movsb byte es:[edi], byte [esi]
call fcn.010a937f
add esp, 0x14
lea eax, [ebp - 0x30]
push eax
push 1
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
test eax, eax
mov dword [ebp - 0x380], eax
je 0x10adbb6
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
je 0x10adbb6
xor edi, edi
cmp dword [0x10b9254], edi
jne 0x10ad586
call fcn.010aba0d
push 6
push edi
push 0x10a6420
push edi
call dword [sym.imp.SETUPAPI.dll_SetupDiGetClassDevsA]
cmp eax, 0xffffffff
mov dword [ebp - 0x354], eax
jne 0x10ad5b8
push 0xfffffffffffffffc
pop esi
push dword [ebp - 0x380]
mov dword [ebx], edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, esi
jmp 0x10adbb9
xor esi, esi
mov dword [ebp - 0x368], edi
call fcn.010ab9bb
lea eax, [ebp - 0x34c]
push eax
push edi
push dword [ebp - 0x354]
mov dword [ebp - 0x34c], 0x1c
call dword [sym.imp.SETUPAPI.dll_SetupDiEnumDeviceInfo]
jmp 0x10adb6c
push 0x20
push 1
mov edi, 0x100
xor esi, esi
call dword [sym.imp.msvcrt.dll_calloc]
cmp eax, esi
pop ecx
pop ecx
mov dword [ebp - 0x350], eax
je 0x10adba2
mov ebx, dword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceRegistryPropertyA]
lea eax, [ebp - 0x360]
push eax
push edi
lea eax, [ebp - 0x130]
push eax
lea eax, [ebp - 0x364]
push eax
push 9
lea eax, [ebp - 0x34c]
push eax
push dword [ebp - 0x354]
call ebx
test eax, eax
je 0x10ad64d
mov eax, dword [ebp + 0xc]
cmp eax, esi
je 0x10adb32
cmp dword [eax], esi
je 0x10adb32
lea eax, [ebp - 0x360]
push eax
push edi
lea eax, [ebp - 0x130]
push eax
lea eax, [ebp - 0x364]
push eax
push 4
lea eax, [ebp - 0x34c]
push eax
push dword [ebp - 0x354]
mov byte [ebp - 0x130], 0
call ebx
test eax, eax
jne 0x10ad68a
mov eax, dword [ebp - 0x350]
mov dword [eax + 0x14], esi
jmp 0x10ad6a1
lea eax, [ebp - 0x130]
push eax
call dword [sym.imp.msvcrt.dll__strdup]
pop ecx
mov ecx, dword [ebp - 0x350]
mov dword [ecx + 0x14], eax
push 2
mov dword [ebp - 0x384], esi
lea ecx, [ebp - 0x14]
lea eax, [ebp - 0x130]
pop ebx
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x10ad6d1
test dl, dl
je 0x10ad6cd
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x10ad6d1
add eax, ebx
add ecx, ebx
test dl, dl
jne 0x10ad6b3
xor eax, eax
jmp 0x10ad6d6
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, esi
jne 0x10ad6f0
mov eax, dword [ebp + 0xc]
cmp dword [eax + 4], esi
je 0x10adb32
mov dword [ebp - 0x384], 1
mov dword [ebp - 0x370], esi
lea ecx, [ebp - 0xc]
lea eax, [ebp - 0x130]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x10ad71d
test dl, dl
je 0x10ad719
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x10ad71d
add eax, ebx
add ecx, ebx
test dl, dl
jne 0x10ad6ff
xor eax, eax
jmp 0x10ad722
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, esi
jne 0x10ad73c
mov eax, dword [ebp + 0xc]
cmp dword [eax + 4], esi
je 0x10adb32
mov dword [ebp - 0x370], 1
lea eax, [ebp - 0x360]
push eax
push edi
lea eax, [ebp - 0x130]
push eax
lea eax, [ebp - 0x364]
push eax
push 1
lea eax, [ebp - 0x34c]
push eax
push dword [ebp - 0x354]
call dword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceRegistryPropertyA]
test eax, eax
jne 0x10ad771
mov byte [ebp - 0x130], al
mov ebx, dword [sym.imp.msvcrt.dll__strdup]
lea eax, [ebp - 0x130]
push eax
call ebx
pop ecx
mov ecx, dword [ebp - 0x350]
push esi
mov dword [ecx + 0x1c], eax
push edi
lea eax, [ebp - 0x130]
push eax
push dword [ebp - 0x338]
call dword [0x10b9320]
test eax, eax
jne 0x10adb32
lea eax, [ebp - 0x130]
push eax
call ebx
pop ecx
mov ecx, dword [ebp - 0x350]
mov dword [ecx + 0x18], eax
cmp dword [0x10b92fc], esi
jne 0x10ad7c7
call fcn.010aaf50
cmp dword [0x10b92fc], 6
jge 0x10ad7de
lea eax, [ebp - 0x360]
push eax
push 0x200
jmp 0x10ad84f
mov eax, dword [0x10b9304]
cmp eax, esi
jne 0x10ad813
push 0x10a6404
push 0x10a6108
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
cmp eax, esi
mov dword [0x10b9304], eax
jne 0x10ad813
mov word [ebp - 0x330], si
jmp 0x10ad897
push esi
lea ecx, [ebp - 0x360]
push ecx
mov ebx, 0x200
push ebx
lea ecx, [ebp - 0x330]
push ecx
lea ecx, [ebp - 0x394]
push ecx
push 0x10a5d70
lea ecx, [ebp - 0x34c]
push ecx
push dword [ebp - 0x354]
call eax
test eax, eax
jne 0x10ad897
lea eax, [ebp - 0x360]
push eax
push ebx
lea eax, [ebp - 0x330]
push eax
lea eax, [ebp - 0x364]
push eax
push esi
lea eax, [ebp - 0x34c]
push eax
push dword [ebp - 0x354]
call dword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceRegistryPropertyW]
test eax, eax
jne 0x10ad897
push dword [ebp - 0x358]
lea eax, [ebp - 0x330]
push 0x10a63dc
push edi
push eax
call dword [sym.imp.msvcrt.dll__snwprintf]
add esp, 0x10
inc dword [ebp - 0x358]
mov eax, dword [ebp - 0x350]
mov dword [eax + 8], esi
mov byte [eax + 0xc], 0
lea eax, [ebp - 0x130]
push 0x10a63d8
push eax
call dword [sym.imp.msvcrt.dll_strtok]
mov edi, eax
mov dword [ebp - 0x378], esi
cmp edi, esi
jmp 0x10ada33
xor ebx, ebx
mov edx, dword [ebp + ebx*4 - 0x390]
test edx, edx
jne 0x10ad8d6
xor eax, eax
jmp 0x10ad8e4
mov eax, edx
lea esi, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x10ad8db
sub eax, esi
test edx, edx
jne 0x10ad8ed
mov edx, 0x10017e0
test edi, edi
mov ecx, 0x10017e0
je 0x10ad8f8
mov ecx, edi
push eax
push edx
push ecx
call dword [sym.imp.msvcrt.dll_strncmp]
add esp, 0xc
test eax, eax
jne 0x10ada18
mov eax, ebx
sub eax, 0
je 0x10ad9e4
dec eax
je 0x10ad9b6
dec eax
jne 0x10ada18
lea eax, [ebp - 0x35c]
push eax
push 0x10a63d0
push edi
call dword [sym.imp.msvcrt.dll_sscanf]
xor ecx, ecx
inc ecx
add esp, 0xc
cmp eax, ecx
jne 0x10ada18
mov eax, dword [ebp - 0x350]
mov dword [eax + 8], ecx
mov cl, byte [ebp - 0x35c]
mov byte [eax + 0xc], cl
lea eax, [ebp - 0x330]
lea edx, [eax + 2]
mov cx, word [eax]
inc eax
inc eax
test cx, cx
jne 0x10ad961
sub eax, edx
sar eax, 1
add eax, 0x11
cmp eax, 0x100
jae 0x10ada18
lea eax, [ebp - 0x330]
lea edx, [eax + 2]
mov cx, word [eax]
inc eax
inc eax
test cx, cx
jne 0x10ad986
movzx ecx, byte [ebp - 0x35c]
push ecx
sub eax, edx
sar eax, 1
push 0x10a63b0
lea eax, [ebp + eax*2 - 0x330]
push 0x11
push eax
call dword [sym.imp.msvcrt.dll__snwprintf]
add esp, 0x10
jmp 0x10ada18
lea eax, [ebp - 0x35c]
push eax
push 0x10a63a4
push edi
call dword [sym.imp.msvcrt.dll_sscanf]
add esp, 0xc
cmp eax, 1
jne 0x10ada18
mov ax, word [ebp - 0x35c]
mov ecx, dword [ebp - 0x350]
mov word [ecx + 6], ax
jmp 0x10ada18
lea eax, [ebp - 0x35c]
push eax
push 0x10a6398
push edi
call dword [sym.imp.msvcrt.dll_sscanf]
xor ecx, ecx
inc ecx
add esp, 0xc
cmp eax, ecx
jne 0x10ada12
mov ax, word [ebp - 0x35c]
mov edx, dword [ebp - 0x350]
mov word [edx + 4], ax
mov dword [ebp - 0x378], ecx
inc ebx
cmp ebx, 3
jb 0x10ad8c7
push 0x10a63d8
push 0
call dword [sym.imp.msvcrt.dll_strtok]
mov edi, eax
test edi, edi
pop ecx
pop ecx
jne 0x10ad8c5
cmp dword [ebp - 0x384], 0
je 0x10ada51
cmp dword [ebp - 0x378], 0
je 0x10adb32
cmp dword [ebp - 0x370], 0
je 0x10adaaa
lea eax, [ebp - 0x330]
lea edx, [eax + 2]
mov cx, word [eax]
inc eax
inc eax
test cx, cx
jne 0x10ada63
sub eax, edx
sar eax, 1
add eax, 0x14
cmp eax, 0x100
jae 0x10adaaa
lea eax, [ebp - 0x330]
lea edx, [eax + 2]
mov cx, word [eax]
inc eax
inc eax
test cx, cx
jne 0x10ada84
sub eax, edx
sar eax, 1
push 0x10a6370
lea eax, [ebp + eax*2 - 0x330]
push 0x14
push eax
call dword [sym.imp.msvcrt.dll__snwprintf]
add esp, 0xc
lea eax, [ebp - 0x330]
push eax
call fcn.010aab74
mov edx, dword [ebp + 0xc]
test edx, edx
mov ecx, dword [ebp - 0x350]
mov dword [ecx + 0x10], eax
je 0x10adb11
cmp dword [edx + 8], 0
je 0x10adb11
test eax, eax
jne 0x10adad4
xor ecx, ecx
jmp 0x10adae2
mov ecx, eax
lea esi, [ecx + 1]
mov dl, byte [ecx]
inc ecx
test dl, dl
jne 0x10adad9
sub ecx, esi
lea edi, [ecx + eax]
cmp edi, eax
je 0x10adb08
lea esi, [edi - 1]
movsx eax, byte [esi]
push eax
call dword [sym.imp.msvcrt.dll_isspace]
test eax, eax
pop ecx
je 0x10adb08
mov eax, dword [ebp - 0x350]
mov edi, esi
cmp edi, dword [eax + 0x10]
jne 0x10adae9
mov ecx, dword [ebp - 0x350]
mov byte [edi], 0
mov eax, dword [ebp - 0x374]
test eax, eax
jne 0x10adb23
mov dword [ebp - 0x36c], ecx
jmp 0x10adb25
mov dword [eax], ecx
and dword [ebp - 0x350], 0
mov dword [ebp - 0x374], ecx
mov esi, dword [ebp - 0x350]
inc dword [ebp - 0x368]
call fcn.010ab9bb
lea eax, [ebp - 0x34c]
push eax
push dword [ebp - 0x368]
mov dword [ebp - 0x34c], 0x1c
push dword [ebp - 0x354]
call dword [sym.imp.SETUPAPI.dll_SetupDiEnumDeviceInfo]
mov ebx, dword [ebp - 0x37c]
test eax, eax
jne 0x10ad5e8
push dword [ebp - 0x354]
call dword [sym.imp.SETUPAPI.dll_SetupDiDestroyDeviceInfoList]
mov eax, dword [ebp - 0x36c]
push dword [ebp - 0x380]
mov dword [ebx], eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [ebx]
neg eax
sbb eax, eax
and eax, 4
add eax, 0xfffffffc
jmp 0x10adbb9
push dword [ebp - 0x36c]
call fcn.010abbcf
push 0xfffffffffffffff5
xor edi, edi
jmp 0x10ad5a2
push 0xfffffffffffffffa
pop eax
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.010a919f
leave
ret 8