Function at 0x46029c
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffff14
push ebx
push esi
push edi
xor eax, eax
mov dword [ebp - 0xe4], eax
mov dword [ebp - 0xe0], eax
mov dword [ebp - 0xdc], eax
mov dword [ebp - 0xd8], eax
mov dword [ebp - 0xc4], eax
mov dword [ebp - 4], eax
mov dword [ebp - 8], eax
xor eax, eax
push ebp
push 0x460caf
push dword fs:[eax]
mov dword fs:[eax], esp
xor esi, esi
mov eax, dword [ebp + 8]
mov edx, 0x460cc8
call fcn.00404b98
mov bl, 1
mov dword [ebp - 0xc0], 0x9c
lea eax, [ebp - 0xc0]
push eax
call sub.kernel32.dll_GetVersionExA
test eax, eax
jne 0x46031f
mov dword [ebp - 0xc0], 0x94
lea eax, [ebp - 0xc0]
push eax
call sub.kernel32.dll_GetVersionExA
xor ebx, ebx
mov eax, dword [ebp - 0xb0]
sub eax, 1
jb 0x460338
je 0x460390
dec eax
je 0x46044a
jmp 0x460c79
lea eax, [ebp - 0xc4]
push eax
mov eax, dword [ebp - 0xbc]
mov dword [ebp - 0xd4], eax
mov byte [ebp - 0xd0], 0
mov eax, dword [ebp - 0xb8]
mov dword [ebp - 0xcc], eax
mov byte [ebp - 0xc8], 0
lea edx, [ebp - 0xd4]
mov ecx, 1
mov eax, 0x460ce4
call fcn.0040a0ec
mov edx, dword [ebp - 0xc4]
mov eax, dword [ebp + 8]
call fcn.00404e0c
mov eax, dword [ebp + 8]
jmp 0x460c79
cmp dword [ebp - 0xbc], 4
jne 0x4603d7
cmp dword [ebp - 0xb8], 0
jne 0x4603d7
mov eax, dword [ebp + 8]
mov edx, 0x460cf4
call fcn.00404e0c
mov eax, dword [ebp + 8]
mov al, byte [ebp - 0xab]
add al, 0xbe
sub al, 2
jae 0x460c79
mov eax, dword [ebp + 8]
mov edx, 0x460d00
call fcn.00404e0c
mov eax, dword [ebp + 8]
jmp 0x460c79
cmp dword [ebp - 0xbc], 4
jne 0x46041b
cmp dword [ebp - 0xb8], 0xa
jne 0x46041b
mov eax, dword [ebp + 8]
mov edx, 0x460d10
call fcn.00404e0c
mov eax, dword [ebp + 8]
cmp byte [ebp - 0xab], 0x41
jne 0x460c79
mov eax, dword [ebp + 8]
mov edx, 0x460d1c
call fcn.00404e0c
mov eax, dword [ebp + 8]
jmp 0x460c79
cmp dword [ebp - 0xbc], 4
jne 0x460c79
cmp dword [ebp - 0xb8], 0x5a
jne 0x460c79
mov eax, dword [ebp + 8]
mov edx, 0x460d34
call fcn.00404e0c
mov eax, dword [ebp + 8]
jmp 0x460c79
mov edi, dword [ebp - 0xbc]
mov eax, edi
add eax, 0xfffffffd
sub eax, 2
jb 0x460468
je 0x4604ba
dec eax
je 0x460511
jmp 0x4608df
lea eax, [ebp - 0xd8]
push eax
mov dword [ebp - 0xd4], edi
mov byte [ebp - 0xd0], 0
mov eax, dword [ebp - 0xb8]
mov dword [ebp - 0xcc], eax
mov byte [ebp - 0xc8], 0
lea edx, [ebp - 0xd4]
mov ecx, 1
mov eax, 0x460d50
call fcn.0040a0ec
mov edx, dword [ebp - 0xd8]
mov eax, dword [ebp + 8]
call fcn.00404e0c
mov eax, dword [ebp + 8]
jmp 0x4608df
mov eax, dword [ebp - 0xb8]
test eax, eax
jne 0x4604d9
mov eax, dword [ebp + 8]
mov edx, 0x460d64
call fcn.00404e0c
mov eax, dword [ebp + 8]
jmp 0x4608df
cmp eax, 1
jne 0x4604f3
mov eax, dword [ebp + 8]
mov edx, 0x460d7c
call fcn.00404e0c
mov eax, dword [ebp + 8]
jmp 0x4608df
cmp eax, 2
jne 0x4608df
mov eax, dword [ebp + 8]
mov edx, 0x460d88
call fcn.00404e0c
mov eax, dword [ebp + 8]
jmp 0x4608df
mov eax, dword [ebp - 0xb8]
test eax, eax
jne 0x460545
cmp byte [ebp - 0x26], 1
jne 0x460533
mov eax, dword [ebp + 8]
mov edx, 0x460da0
call fcn.00404e0c
mov eax, dword [ebp + 8]
jmp 0x4605a1
mov eax, dword [ebp + 8]
mov edx, 0x460db0
call fcn.00404e0c
mov eax, dword [ebp + 8]
jmp 0x4605a1
cmp eax, 1
jne 0x460574
cmp byte [ebp - 0x26], 1
jne 0x460562
mov eax, dword [ebp + 8]
mov edx, 0x460dc8
call fcn.00404e0c
mov eax, dword [ebp + 8]
jmp 0x4605a1
mov eax, dword [ebp + 8]
mov edx, 0x460dd4
call fcn.00404e0c
mov eax, dword [ebp + 8]
jmp 0x4605a1
cmp eax, 2
jne 0x4605a1
cmp byte [ebp - 0x26], 1
jne 0x460591
mov eax, dword [ebp + 8]
mov edx, 0x460dec
call fcn.00404e0c
mov eax, dword [ebp + 8]
jmp 0x4605a1
mov eax, dword [ebp + 8]
mov edx, 0x460df8
call fcn.00404e0c
mov eax, dword [ebp + 8]
push 0x460e08
push 0x460e18
call sub.kernel32.dll_GetModuleHandleA_1
push eax
call sub.kernel32.dll_GetProcAddress_1
mov edi, eax
mov dword [0x46b950], edi
test edi, edi
je 0x4608df
lea eax, [ebp - 0x1c]
push eax
mov eax, dword [ebp - 0x18]
push eax
mov eax, dword [ebp - 0x14]
push eax
mov eax, dword [ebp - 0x10]
push eax
mov eax, dword [ebp - 0xc]
push eax
call dword [0x46b950]
mov eax, dword [ebp - 0x1c]
cmp eax, 0xe
jg 0x460675
je 0x460750
cmp eax, 6
jg 0x460646
je 0x4606c0
cmp eax, 2
jg 0x46062a
je 0x460774
sub eax, 0xabcdabcd
je 0x4608b5
sub eax, 0x54325433
je 0x460879
dec eax
je 0x460888
jmp case.default.0x460681
sub eax, 3
je 0x460798
dec eax
je 0x46071a
dec eax
je 0x460786
jmp case.default.0x460681
add eax, 0xfffffff9
cmp eax, 6
ja case.default.0x460681
jmp dword [eax*4 + 0x460659]
add eax, 0xfffffff1
cmp eax, 0xd
ja case.default.0x460681
jmp dword [eax*4 + 0x460688]
lea eax, [ebp - 8]
mov edx, 0x460e30
call fcn.00404bdc
jmp 0x4608cc
lea eax, [ebp - 8]
mov edx, 0x460e30
call fcn.00404bdc
jmp 0x4608cc
lea eax, [ebp - 8]
mov edx, 0x460e4c
call fcn.00404bdc
jmp 0x4608cc
lea eax, [ebp - 8]
mov edx, 0x460e70
call fcn.00404bdc
jmp 0x4608cc
lea eax, [ebp - 8]
mov edx, 0x460e70
call fcn.00404bdc
jmp 0x4608cc
lea eax, [ebp - 8]
mov edx, 0x460e94
call fcn.00404bdc
jmp 0x4608cc
lea eax, [ebp - 8]
mov edx, 0x460e94
call fcn.00404bdc
jmp 0x4608cc
lea eax, [ebp - 8]
mov edx, 0x460eb4
call fcn.00404bdc
jmp 0x4608cc
lea eax, [ebp - 8]
mov edx, 0x460eb4
call fcn.00404bdc
jmp 0x4608cc
lea eax, [ebp - 8]
mov edx, 0x460ed8
call fcn.00404bdc
jmp 0x4608cc
lea eax, [ebp - 8]
mov edx, 0x460f18
call fcn.00404bdc
jmp 0x4608cc
lea eax, [ebp - 8]
mov edx, 0x460f18
call fcn.00404bdc
jmp 0x4608cc
lea eax, [ebp - 8]
mov edx, 0x460f38
call fcn.00404bdc
jmp 0x4608cc
lea eax, [ebp - 8]
mov edx, 0x460f38
call fcn.00404bdc
jmp 0x4608cc
lea eax, [ebp - 8]
mov edx, 0x460f58
call fcn.00404bdc
jmp 0x4608cc
lea eax, [ebp - 8]
mov edx, 0x460f78
call fcn.00404bdc
jmp 0x4608cc
lea eax, [ebp - 8]
mov edx, 0x460fa4
call fcn.00404bdc
jmp 0x4608cc
lea eax, [ebp - 8]
mov edx, 0x460fc4
call fcn.00404bdc
jmp 0x4608cc
lea eax, [ebp - 8]
mov edx, 0x460ff4
call fcn.00404bdc
jmp 0x4608cc
lea eax, [ebp - 8]
mov edx, 0x460ff4
call fcn.00404bdc
jmp 0x4608cc
lea eax, [ebp - 8]
mov edx, 0x461018
call fcn.00404bdc
jmp 0x4608cc
lea eax, [ebp - 8]
mov edx, 0x461034
call fcn.00404bdc
jmp 0x4608cc
lea eax, [ebp - 8]
mov edx, 0x461060
call fcn.00404bdc
jmp 0x4608cc
lea eax, [ebp - 8]
mov edx, 0x46108c
call fcn.00404bdc
jmp 0x4608cc
lea eax, [ebp - 8]
mov edx, 0x4610b8
call fcn.00404bdc
jmp 0x4608cc
lea eax, [ebp - 8]
mov edx, 0x4610e4
call fcn.00404bdc
jmp 0x4608cc
lea eax, [ebp - 8]
mov edx, 0x461104
call fcn.00404bdc
jmp 0x4608cc
lea eax, [ebp - 8]
mov edx, 0x461104
call fcn.00404bdc
jmp 0x4608cc
lea eax, [ebp - 8]
mov edx, 0x461120
call fcn.00404bdc
jmp 0x4608cc
lea eax, [ebp - 8]
mov edx, 0x461140
call fcn.00404bdc
jmp 0x4608cc
lea eax, [ebp - 8]
call fcn.00404b44
mov eax, dword [ebp + 8]
mov edx, dword [ebp - 8]
call fcn.00404e0c
mov eax, dword [ebp + 8]
mov esi, 1
test esi, esi
jne 0x460b5b
test bl, bl
je 0x460a6d
mov al, byte [ebp - 0x26]
cmp al, 1
jne 0x460944
cmp dword [ebp - 0xbc], 4
jne 0x460914
mov eax, dword [ebp + 8]
mov edx, 0x461160
call fcn.00404e0c
mov eax, dword [ebp + 8]
jmp 0x460b5b
test byte [ebp - 0x27], 2
je 0x46092f
mov eax, dword [ebp + 8]
mov edx, 0x461178
call fcn.00404e0c
mov eax, dword [ebp + 8]
jmp 0x460b5b
mov eax, dword [ebp + 8]
mov edx, 0x461190
call fcn.00404e0c
mov eax, dword [ebp + 8]
jmp 0x460b5b
cmp al, 3
jne 0x460b5b
cmp dword [ebp - 0xbc], 5
jne 0x4609e1
cmp dword [ebp - 0xb8], 2
jne 0x4609e1
mov ax, word [ebp - 0x28]
test al, 0x80
je 0x46097f
mov eax, dword [ebp + 8]
mov edx, 0x4611a8
call fcn.00404e0c
mov eax, dword [ebp + 8]
jmp 0x460b5b
test al, 2
je 0x460998
mov eax, dword [ebp + 8]
mov edx, 0x460e94
call fcn.00404e0c
mov eax, dword [ebp + 8]
jmp 0x460b5b
test ah, 4
je 0x4609b2
mov eax, dword [ebp + 8]
mov edx, 0x4611c8
call fcn.00404e0c
mov eax, dword [ebp + 8]
jmp 0x460b5b
test ah, 2
je 0x4609cc
mov eax, dword [ebp + 8]
mov edx, 0x4611e0
call fcn.00404e0c
mov eax, dword [ebp + 8]
jmp 0x460b5b
mov eax, dword [ebp + 8]
mov edx, 0x4611f0
call fcn.00404e0c
mov eax, dword [ebp + 8]
jmp 0x460b5b
cmp dword [ebp - 0xbc], 5
jne 0x460a3e
cmp dword [ebp - 0xb8], 0
jne 0x460a3e
mov ax, word [ebp - 0x28]
test al, 0x80
je 0x460a10
mov eax, dword [ebp + 8]
mov edx, 0x46120c
call fcn.00404e0c
mov eax, dword [ebp + 8]
jmp 0x460b5b
test al, 2
je 0x460a29
mov eax, dword [ebp + 8]
mov edx, 0x461228
call fcn.00404e0c
mov eax, dword [ebp + 8]
jmp 0x460b5b
mov eax, dword [ebp + 8]
mov edx, 0x461244
call fcn.00404e0c
mov eax, dword [ebp + 8]
jmp 0x460b5b
mov eax, dword [ebp + 8]
mov edx, 0x461244
call fcn.00404e0c
mov eax, dword [ebp + 8]
test byte [ebp - 0x28], 2
je 0x460b5b
mov eax, dword [ebp + 8]
mov edx, 0x460e94
call fcn.00404e0c
mov eax, dword [ebp + 8]
jmp 0x460b5b
mov dl, 1
mov eax, dword [0x42db24]
call fcn.0042dc24
mov dword [ebp - 0x20], eax
xor eax, eax
push ebp
push 0x460b54
push dword fs:[eax]
mov dword fs:[eax], esp
mov edx, 0x80000002
mov eax, dword [ebp - 0x20]
call fcn.0042dd00
xor ecx, ecx
mov edx, 0x461258
mov eax, dword [ebp - 0x20]
call fcn.0042dd68
test al, al
je 0x460b3e
mov edx, 0x461294
mov eax, dword [ebp - 0x20]
call fcn.0042e6b4
test al, al
je 0x460b36
lea ecx, [ebp - 4]
mov edx, 0x461294
mov eax, dword [ebp - 0x20]
call fcn.0042e4a4
mov edx, 0x4612a8
mov eax, dword [ebp - 4]
call fcn.00408d80
test al, al
je 0x460af2
mov eax, dword [ebp + 8]
mov edx, 0x461160
call fcn.00404e0c
mov eax, dword [ebp + 8]
jmp 0x460b36
mov edx, 0x4612b8
mov eax, dword [ebp - 4]
call fcn.00408d80
test al, al
je 0x460b15
mov eax, dword [ebp + 8]
mov edx, 0x461244
call fcn.00404e0c
mov eax, dword [ebp + 8]
jmp 0x460b36
mov edx, 0x4612cc
mov eax, dword [ebp - 4]
call fcn.00408d80
test al, al
je 0x460b36
mov eax, dword [ebp + 8]
mov edx, 0x4612e0
call fcn.00404e0c
mov eax, dword [ebp + 8]
mov eax, dword [ebp - 0x20]
call fcn.0042dcd0
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x460b5b
mov eax, dword [ebp - 0x20]
call fcn.00403d4c
ret
mov eax, dword [ebp + 8]
push dword [eax]
push 0x4612fc
lea eax, [ebp - 0xdc]
lea edx, [ebp - 0xac]
mov ecx, 0x80
call fcn.00404db4
push dword [ebp - 0xdc]
mov eax, dword [ebp + 8]
mov edx, 3
call fcn.00404ec4
cmp dword [ebp - 0xbc], 4
jne 0x460c37
lea eax, [ebp - 0xe0]
lea edx, [ebp - 0xac]
mov ecx, 0x80
call fcn.00404db4
mov eax, dword [ebp - 0xe0]
mov edx, 0x461308
call fcn.00408d80
test al, al
je 0x460c37
mov dl, 1
mov eax, dword [0x42db24]
call fcn.0042dc24
mov dword [ebp - 0x24], eax
xor eax, eax
push ebp
push 0x460c30
push dword fs:[eax]
mov dword fs:[eax], esp
mov edx, 0x80000002
mov eax, dword [ebp - 0x24]
call fcn.0042dd00
xor ecx, ecx
mov edx, 0x461320
mov eax, dword [ebp - 0x24]
call fcn.0042dd68
test al, al
je 0x460c1a
mov eax, dword [ebp + 8]
mov edx, 0x461368
call fcn.00404e0c
mov eax, dword [ebp + 8]
mov eax, dword [ebp - 0x24]
call fcn.0042dcd0
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x460c37
mov eax, dword [ebp - 0x24]
call fcn.00403d4c
ret
lea eax, [ebp - 0xe4]
push eax
mov eax, dword [ebp - 0xb4]
and eax, 0xffff
mov dword [ebp - 0xec], eax
mov byte [ebp - 0xe8], 0
lea edx, [ebp - 0xec]
xor ecx, ecx
mov eax, 0x461374
call fcn.0040a0ec
mov edx, dword [ebp - 0xe4]
mov eax, dword [ebp + 8]
call fcn.00404e0c
mov eax, dword [ebp + 8]
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x460cb6
lea eax, [ebp - 0xe4]
mov edx, 4
call fcn.00404b68
lea eax, [ebp - 0xc4]
call fcn.00404b44
lea eax, [ebp - 8]
mov edx, 2
call fcn.00404b68
ret