Function at 0x403f80
Capabilities:
Check os version
Create thread

Disassembly:
sub esp, 0x18
push ebp
mov ebp, dword [sym.imp.kernel32.dll_GetModuleHandleA]
push esi
push edi
push 0
call ebp
mov dword [0x42dd5c], eax
call dword [sym.imp.COMCTL32.dll_InitCommonControls]
mov eax, dword [0x42dd5c]
push 0x419544
mov byte [0x42de21], 1
mov dword [0x42de28], eax
call ebp
mov edi, dword [sym.imp.kernel32.dll_GetProcAddress]
mov esi, eax
push 0x419550
push esi
call edi
push 0x41956c
push esi
mov dword [0x42de34], eax
call edi
push 0x41957c
push esi
mov dword [0x42de3c], eax
call edi
mov dword [0x42de30], eax
call fcn.00406590
call fcn.00406720
call dword [sym.imp.kernel32.dll_GetVersion]
test eax, eax
jns 0x404013
push 0
push 0x418608
push 0x4186d0
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
pop edi
pop esi
xor al, al
pop ebp
add esp, 0x18
ret
push ebx
push 0x8001
call dword [sym.imp.kernel32.dll_SetErrorMode]
mov ebx, dword [0x41d038]
mov esi, 1
cmp ebx, esi
mov word [0x41dab0], 0
jle 0x40412d
mov ebp, dword [sym.imp.kernel32.dll_MultiByteToWideChar]
mov edi, dword [0x41d03c]
mov eax, dword [edi + esi*4]
mov cl, byte [eax]
cmp cl, 0x2d
je 0x40405a
cmp cl, 0x2f
jne case.0x404073.64
lea edx, [eax + 1]
movsx eax, byte [edx]
add eax, 0xffffffc1
cmp eax, 0x39
ja case.0x404073.64
movzx ecx, byte [eax + 0x404438]
jmp dword [ecx*4 + 0x404418]
mov byte [0x42dd71], 1
jmp case.0x404073.64
mov byte [0x42dcc0], 1
jmp case.0x404073.64
mov byte [0x42dcc3], 1
jmp case.0x404073.64
call fcn.00406ba0
test eax, eax
jne 0x4040ad
mov byte [0x42dcc2], 1
jmp case.0x404073.64
add esi, 1
cmp esi, ebx
jge case.0x404073.64
mov edx, dword [edi + esi*4]
mov eax, dword [0x42deec]
push pe_nt_image_headers32
push 0x42dd88
push 0xffffffffffffffff
push edx
push 0
push eax
jmp 0x404108
add esi, 1
cmp esi, ebx
jge case.0x404073.64
mov ecx, dword [edi + esi*4]
call fcn.00406c90
mov dword [0x42de0c], eax
jmp case.0x404073.64
add esi, 1
cmp esi, ebx
mov byte [0x42dcc1], 1
jge case.0x404073.64
mov ecx, dword [edi + esi*4]
mov edx, dword [0x42deec]
push 0x104
push 0x41dab0
push 0xffffffffffffffff
push ecx
push 0
push edx
call ebp
mov edi, dword [0x41d03c]
mov ebx, dword [0x41d038]
add esi, 1
cmp esi, ebx
jl 0x404047
mov edi, dword [sym.imp.kernel32.dll_GetProcAddress]
mov ebp, dword [sym.imp.kernel32.dll_GetModuleHandleA]
cmp byte [0x42dcc0], 0
jne 0x404169
cmp byte [0x42dcc3], 0
jne 0x404169
mov byte [0x42dd71], 0
jmp 0x404349
push 0
push 0x418608
push 0x418d10
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
pop ebx
pop edi
pop esi
xor al, al
pop ebp
add esp, 0x18
ret
cmp byte [0x42dd71], 0
je 0x404349
push 0x418ee0
push 0x418ef0
call ebp
push eax
call edi
test eax, eax
je 0x404191
push 0xffffffffffffffff
call eax
test eax, eax
jne 0x4041a2
call dword [sym.imp.kernel32.dll_AllocConsole]
test eax, eax
je 0x4041a2
mov byte [0x42e7cc], 1
mov ebp, dword [sym.imp.kernel32.dll_GetStdHandle]
push 0xfffffffffffffff5
call ebp
mov esi, eax
push esi
call dword [sym.imp.kernel32.dll_GetFileType]
test eax, eax
mov ebx, dword [sym.imp.kernel32.dll_CreateFileA]
jne 0x4041e5
call dword [sym.imp.kernel32.dll_GetLastError]
cmp eax, 6
jne 0x4041e5
push 0
push 0x80
push 3
push 0
push 2
push 0x40000000
push 0x418efc
call ebx
mov esi, eax
cmp esi, 0xffffffff
je 0x404239
push 0x4000
push esi
call fcn.0040a958
add esp, 8
cmp eax, 0xffffffff
je 0x404239
push 0x418f04
push eax
call fcn.0040aa6d
mov esi, eax
add esp, 8
test esi, esi
je 0x404239
call fcn.0040abf3
push 0
mov edi, eax
push 4
add edi, 0x20
mov ecx, 8
push 0
rep movsd dword es:[edi], dword [esi]
call fcn.0040abf3
add eax, 0x20
push eax
call fcn.0040ae59
add esp, 0x10
push 0xfffffffffffffff6
call ebp
mov esi, eax
push esi
call dword [sym.imp.kernel32.dll_GetFileType]
test eax, eax
jne 0x404270
call dword [sym.imp.kernel32.dll_GetLastError]
cmp eax, 6
jne 0x404270
push 0
push 0x80
push 3
push 0
push 1
push 0x80000000
push 0x418f08
call ebx
mov esi, eax
cmp esi, 0xffffffff
je 0x4042be
push 0x4000
push esi
call fcn.0040a958
add esp, 8
cmp eax, 0xffffffff
je 0x4042be
push 0x418f10
push eax
call fcn.0040aa6d
mov esi, eax
add esp, 8
test esi, esi
je 0x4042be
call fcn.0040abf3
push 0
mov edi, eax
push 4
mov ecx, 8
push 0
rep movsd dword es:[edi], dword [esi]
call fcn.0040abf3
push eax
call fcn.0040ae59
add esp, 0x10
push 0xfffffffffffffff4
call ebp
mov esi, eax
push esi
call dword [sym.imp.kernel32.dll_GetFileType]
test eax, eax
jne 0x4042f5
call dword [sym.imp.kernel32.dll_GetLastError]
cmp eax, 6
jne 0x4042f5
push 0
push 0x80
push 3
push 0
push 2
push 0x40000000
push 0x418efc
call ebx
mov esi, eax
cmp esi, 0xffffffff
je 0x404349
push 0x4000
push esi
call fcn.0040a958
add esp, 8
cmp eax, 0xffffffff
je 0x404349
push 0x418f04
push eax
call fcn.0040aa6d
mov esi, eax
add esp, 8
test esi, esi
je 0x404349
call fcn.0040abf3
push 0
mov edi, eax
push 4
add edi, 0x40
mov ecx, 8
push 0
rep movsd dword es:[edi], dword [esi]
call fcn.0040abf3
add eax, 0x40
push eax
call fcn.0040ae59
add esp, 0x10
lea eax, [esp + 0x10]
push eax
push 0x20
call dword [sym.imp.kernel32.dll_GetCurrentProcess]
push eax
call dword [sym.imp.ADVAPI32.dll_OpenProcessToken]
test eax, eax
mov edi, dword [sym.imp.kernel32.dll_CloseHandle]
je 0x4043ac
lea ecx, [esp + 0x1c]
push ecx
push 0x418f14
push 0
call dword [sym.imp.ADVAPI32.dll_LookupPrivilegeValueA]
test eax, eax
je 0x4043a5
mov eax, dword [esp + 0x10]
push 0
push 0
push 0x10
lea edx, [esp + 0x24]
push edx
push 0
push eax
mov dword [esp + 0x30], 1
mov dword [esp + 0x3c], 2
call dword [sym.imp.ADVAPI32.dll_AdjustTokenPrivileges]
mov ecx, dword [esp + 0x10]
push ecx
call edi
mov esi, dword [sym.imp.kernel32.dll_CreateEventA]
push 0
push 0
push 0
push 0
call esi
test eax, eax
mov dword [0x42de14], eax
je 0x40415f
push 0
push 0
push 0
push 0
call esi
test eax, eax
mov dword [0x41daa8], eax
je 0x40415f
lea edx, [esp + 0x14]
push edx
push 0
push 0
push 0x401640
push 0
push 0
call dword [sym.imp.kernel32.dll_CreateThread]
mov esi, eax
test esi, esi
je 0x40415f
push 0xf
push esi
call dword [sym.imp.kernel32.dll_SetThreadPriority]
push esi
call edi
pop ebx
pop edi
pop esi
mov al, 1
pop ebp
add esp, 0x18
ret