Function at 0x40255f
Capabilities:
Accept command line arguments
Check mutex on windows
Create thread

Disassembly:
push 0x1d8
mov eax, 0x40fff6
call fcn.0040f087
mov ebx, dword [ebp + 0xc]
xor esi, esi
push esi
push esi
push 1
push esi
call dword [sym.imp.KERNEL32.dll_HeapSetInformation]
push 0x4137d4
call dword [sym.imp.KERNEL32.dll_SetDllDirectoryW]
mov dword [ebp - 0x1c8], esi
mov dword [ebp - 0x1dc], esi
cmp dword [ebp + 8], 2
mov dword [ebp - 4], esi
jne 0x402a49
mov edi, dword [ebx + 4]
lea eax, [ebp - 0x1d4]
push eax
call fcn.00401fa4
mov byte [ebp - 4], 1
push dword [ebp - 0x1d4]
lea eax, [ebp - 0xac]
mov dword [ebp - 0xb0], eax
lea eax, [ebp - 0xb0]
push eax
call fcn.00402ae1
mov byte [ebp - 4], 2
mov eax, dword [ebp - 0xb0]
lea ecx, [ebp - 0x2c]
call fcn.00402a52
lea eax, [ebp - 0xac]
mov byte [ebp - 4], 4
cmp dword [ebp - 0xb0], eax
je 0x402603
push dword [ebp - 0xb0]
call fcn.00406395
pop ecx
mov ecx, dword [ebp - 0x1c]
mov eax, ecx
cdq
and edx, 3
add eax, edx
sar eax, 2
sub ecx, eax
lea edi, [ecx + 1]
push edi
call fcn.004055ee
push edi
push esi
push eax
mov dword [ebp - 0x1b8], eax
call fcn.00405d30
mov eax, dword [ebp - 0x2c]
add esp, 0x10
cmp dword [ebp - 0x18], 0x10
jae 0x402639
lea eax, [ebp - 0x2c]
push dword [ebp - 0x1b8]
push dword [ebp - 0x1c]
push eax
call fcn.00401030
mov edi, eax
lea esi, [edi + 8]
push esi
call fcn.004055ee
push esi
push 0
push eax
mov dword [ebp - 0x1bc], eax
call fcn.00405d30
mov edx, dword [ebp - 0x1b8]
push esi
mov esi, dword [ebp - 0x1bc]
push esi
mov ecx, edi
call fcn.0040188c
push esi
call fcn.00406190
movsx ecx, byte [eax + esi - 1]
sub eax, ecx
mov byte [eax + esi], 0
add esp, 0x28
lea eax, [ebp - 0x1b0]
mov dword [ebp - 0x1b4], eax
push esi
lea eax, [ebp - 0x1b4]
push eax
call fcn.00402ba1
lea eax, [ebp - 0x1c8]
push eax
push dword [ebp - 0x1b4]
call dword [sym.imp.SHELL32.dll_CommandLineToArgvW]
mov dword [ebp - 0x1c0], eax
mov dword [ebp - 0x1dc], eax
lea eax, [ebp - 0x1b0]
cmp dword [ebp - 0x1b4], eax
je 0x4026dd
push dword [ebp - 0x1b4]
call fcn.00406395
pop ecx
push 1
xor edi, edi
lea esi, [ebp - 0x2c]
call fcn.0040118b
lea eax, [ebp - 0x1d4]
mov byte [ebp - 4], 0
call fcn.0040204d
cmp dword [ebp - 0x1c0], edi
je 0x402a0d
cmp dword [ebp - 0x1c8], 1
jl 0x402a0d
mov eax, dword [ebx]
push 0x5c
push eax
mov dword [ebp - 0x1d0], edi
call fcn.004067fc
mov esi, dword [sym.imp.USER32.dll_CharNextW]
pop ecx
pop ecx
cmp eax, edi
jne 0x402731
mov eax, dword [ebx]
jmp 0x402734
push eax
call esi
xor ebx, ebx
mov dword [ebp - 0x1c4], eax
cmp dword [ebp - 0x1c8], ebx
jle 0x4027a9
mov eax, dword [ebp - 0x1c0]
mov eax, dword [eax + edi*4]
movzx ecx, word [eax]
cmp ecx, 0x2d
je 0x40275a
cmp ecx, 0x2f
jne 0x4027a9
movzx ecx, word [eax + 2]
cmp ecx, 0x6d
je 0x402793
cmp ecx, 0x4d
je 0x402793
cmp ecx, 0x72
je 0x40278b
cmp ecx, 0x52
je 0x40278b
cmp ecx, 0x66
je 0x40277c
cmp ecx, 0x46
jne 0x4027a9
cmp word [eax + 4], bx
jne 0x4027a9
or dword [ebp - 0x1d0], 1
jmp 0x4027a0
cmp word [eax + 4], bx
jne 0x4027a9
jmp 0x4027a0
cmp word [eax + 4], 0x3a
jne 0x4027a9
cmp word [eax + 6], bx
je 0x4027a9
inc edi
cmp dword [ebp - 0x1c8], edi
jg 0x402744
cmp dword [ebp - 0x1c8], 1
jge 0x4027fc
push dword [ebp - 0x1c4]
call fcn.00402533
pop ecx
cmp dword [ebp - 0x1b8], ebx
je 0x4027d2
push dword [ebp - 0x1b8]
call fcn.00405c62
pop ecx
cmp dword [ebp - 0x1bc], ebx
je 0x4027e6
push dword [ebp - 0x1bc]
call fcn.00405c62
pop ecx
push 2
pop edi
push dword [ebp - 0x1c0]
call dword [sym.imp.KERNEL32.dll_LocalFree]
mov eax, edi
jmp 0x402a4c
mov eax, dword [ebp - 0x1c0]
mov eax, dword [eax + edi*4]
cmp word [eax], 0x2d
mov dword [ebp - 0x1d8], eax
jne 0x40281a
push eax
call esi
mov dword [ebp - 0x1d8], eax
push str.DriverToolHelperThreadMutex
inc edi
push ebx
mov dword [ebp - 0x1e0], edi
push ebx
xor edi, edi
call dword [sym.imp.KERNEL32.dll_CreateMutexW]
mov dword [ebp - 0x1cc], eax
cmp eax, ebx
je 0x402897
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
je 0x402897
push 0x44
call fcn.00405be2
pop ecx
mov dword [ebp - 0x1e4], eax
mov byte [ebp - 4], 5
cmp eax, ebx
je 0x402867
push eax
call fcn.00401999
mov esi, eax
jmp 0x402869
xor esi, esi
xor ebx, ebx
push ebx
push ebx
push 1
push ebx
mov byte [ebp - 4], 0
mov edi, esi
call dword [sym.imp.KERNEL32.dll_CreateEventW]
mov dword [esi + 0x28], eax
lea eax, [esi + 0x2c]
push eax
push ebx
push esi
push 0x404fd5
push ebx
push ebx
call fcn.00407467
add esp, 0x18
mov dword [esi + 0x24], eax
xor esi, esi
cmp dword [str.reboot], esi
je 0x4028c9
mov eax, 0x416f70
push dword [eax]
push dword [ebp - 0x1d8]
call fcn.0040692d
pop ecx
pop ecx
test eax, eax
je 0x402936
inc ebx
mov eax, ebx
imul eax, eax, 0xc
lea eax, [eax + 0x416f70]
cmp dword [eax], esi
jne 0x4028a6
cmp edi, esi
je 0x4028e5
mov eax, dword [edi]
push 1
push 0x1f4
mov ecx, edi
call dword [eax + 8]
mov eax, dword [edi + 4]
push 1
lea ecx, [edi + 4]
call dword [eax]
cmp dword [ebp - 0x1cc], esi
je 0x4028f9
push dword [ebp - 0x1cc]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push dword [ebp - 0x1c4]
call fcn.00402533
pop ecx
cmp dword [ebp - 0x1b8], esi
je 0x402919
push dword [ebp - 0x1b8]
call fcn.00405c62
pop ecx
cmp dword [ebp - 0x1bc], esi
je 0x402a3d
push dword [ebp - 0x1bc]
call fcn.00405c62
pop ecx
jmp 0x402a3d
mov eax, dword [ebp - 0x1e0]
mov ecx, dword [ebp - 0x1c0]
lea ecx, [ecx + eax*4]
push ecx
mov ecx, dword [ebp - 0x1c8]
mov esi, ebx
imul esi, esi, 0xc
sub ecx, eax
push ecx
push dword [ebp - 0x1d0]
push dword [ebp - 0x1c4]
call dword [esi + 0x416f74]
add esp, 0x10
mov ebx, eax
dec eax
je 0x4029ac
dec eax
je 0x40298a
dec eax
je 0x4029ac
dec eax
je 0x4029ac
push dword [esi + 0x416f70]
push dword [ebp - 0x1c4]
push 0x802
jmp 0x40299b
push dword [esi + 0x416f70]
push dword [ebp - 0x1c4]
push 0x803
call fcn.00406647
add eax, 0x40
push eax
call fcn.0040242a
add esp, 0x10
xor esi, esi
cmp edi, esi
je 0x4029ca
mov eax, dword [edi]
push 1
push 0x1f4
mov ecx, edi
call dword [eax + 8]
mov eax, dword [edi + 4]
push 1
lea ecx, [edi + 4]
call dword [eax]
cmp dword [ebp - 0x1cc], esi
je 0x4029de
push dword [ebp - 0x1cc]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [ebp - 0x1b8], esi
je 0x4029f2
push dword [ebp - 0x1b8]
call fcn.00405c62
pop ecx
cmp dword [ebp - 0x1bc], esi
je 0x402a06
push dword [ebp - 0x1bc]
call fcn.00405c62
pop ecx
mov edi, ebx
jmp 0x4027e9
cmp dword [ebp - 0x1b8], edi
je 0x402a21
push dword [ebp - 0x1b8]
call fcn.00405c62
pop ecx
cmp dword [ebp - 0x1bc], edi
je 0x402a35
push dword [ebp - 0x1bc]
call fcn.00405c62
pop ecx
cmp dword [ebp - 0x1c0], edi
je 0x402a49
push dword [ebp - 0x1c0]
call dword [sym.imp.KERNEL32.dll_LocalFree]
push 2
pop eax
call fcn.0040f0d1
ret