Function at 0x402dd0
Capabilities:
Check os version

Disassembly:
push 0xffffffffffffffff
push 0x451290
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x18
mov eax, dword [0x4789c0]
push ebx
push ebp
push esi
mov ebx, 1
push edi
mov edi, ebx
mov dword [esp + 0x14], eax
mov dword [esp + 0x30], 0
mov dword [esp + 0x10], eax
mov ecx, dword [esp + 0x38]
or esi, 0xffffffff
mov byte [esp + 0x30], bl
mov eax, dword [ecx + 0xa8]
cmp eax, esi
je 0x402e26
mov edx, dword [esp + 0x3c]
test dword [edx + 0x6c], eax
je 0x402e39
mov eax, dword [ecx + 0xac]
test eax, eax
je 0x402e69
mov edx, dword [esp + 0x3c]
cmp eax, dword [edx + 0x74]
je 0x402e69
lea ecx, [esp + 0x10]
mov byte [esp + 0x30], 0
call fcn.004410bd
lea ecx, [esp + 0x14]
mov dword [esp + 0x30], esi
call fcn.004410bd
xor eax, eax
mov ecx, dword [esp + 0x28]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret
mov eax, dword [ecx + 0xb4]
test eax, eax
je 0x403297
jmp 0x402e7d
mov eax, dword [esp + 0x38]
test edi, edi
je 0x403297
mov esi, dword [eax + 8]
mov ecx, dword [eax]
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x38], ecx
mov eax, dword [esi + 4]
push eax
lea edi, [edx + 0x1134]
lea eax, [esp + 0x1c]
mov ecx, edi
push eax
call fcn.00411a30
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0x34], 2
call fcn.004411aa
lea ecx, [esp + 0x18]
mov byte [esp + 0x30], bl
call fcn.004410bd
mov eax, dword [esi + 8]
lea ecx, [esp + 0x1c]
push eax
push ecx
mov ecx, edi
call fcn.00411a30
push eax
lea ecx, [esp + 0x14]
mov byte [esp + 0x34], 3
call fcn.004411aa
lea ecx, [esp + 0x1c]
mov byte [esp + 0x30], bl
call fcn.004410bd
push ecx
lea edx, [esp + 0x18]
mov ecx, esp
mov dword [esp + 0x24], esp
push edx
xor edi, edi
call fcn.00440e32
call fcn.00403320
add esp, 4
test eax, eax
je 0x402fa4
push ecx
lea eax, [esp + 0x14]
mov ecx, esp
mov dword [esp + 0x24], esp
push eax
call fcn.00440e32
call fcn.00403320
add esp, 4
test eax, eax
je 0x402fa4
mov ecx, dword [esp + 0x14]
push ecx
call fcn.0042f7ab
mov edx, dword [esp + 0x14]
mov ebp, eax
push edx
call fcn.0042f7ab
mov esi, dword [esi + 0xc]
add esp, 8
cmp esi, 5
ja case.default.0x4031e1
jmp dword [esi*4 + 0x4032cc]
cmp ebp, eax
jne case.default.0x4031e1
jmp 0x403289
cmp ebp, eax
jle case.default.0x4031e1
jmp 0x403289
cmp ebp, eax
jmp 0x40326f
cmp ebp, eax
jl case.default.0x4031e1
jmp 0x403289
cmp ebp, eax
jg case.default.0x4031e1
jmp 0x403289
cmp ebp, eax
je case.default.0x4031e1
jmp 0x403289
push ecx
lea eax, [esp + 0x18]
mov ecx, esp
mov dword [esp + 0x24], esp
push eax
call fcn.00440e32
call fcn.004033b0
add esp, 4
test eax, eax
je 0x4031d5
push ecx
lea edx, [esp + 0x14]
mov ecx, esp
mov dword [esp + 0x24], esp
push edx
call fcn.00440e32
call fcn.004033b0
add esp, 4
test eax, eax
je 0x4031d5
mov esi, dword [esi + 0xc]
cmp esi, 5
ja case.default.0x4031e1
jmp dword [esi*4 + 0x4032e4]
push ecx
lea eax, [esp + 0x14]
mov ecx, esp
mov dword [esp + 0x24], esp
push eax
call fcn.00440e32
push ecx
lea edx, [esp + 0x1c]
mov ecx, esp
mov dword [esp + 0x2c], esp
push edx
mov byte [esp + 0x3c], 4
call fcn.00440e32
mov byte [esp + 0x38], bl
call fcn.00403500
add esp, 8
test eax, eax
jne case.default.0x4031e1
jmp 0x403289
push ecx
lea eax, [esp + 0x14]
mov ecx, esp
mov dword [esp + 0x28], esp
push eax
call fcn.00440e32
push ecx
lea edx, [esp + 0x1c]
mov ecx, esp
mov dword [esp + 0x28], esp
push edx
mov byte [esp + 0x3c], 5
call fcn.00440e32
mov byte [esp + 0x38], bl
call fcn.00403500
add esp, 8
test eax, eax
jle case.default.0x4031e1
jmp 0x403289
push ecx
lea eax, [esp + 0x14]
mov ecx, esp
mov dword [esp + 0x28], esp
push eax
call fcn.00440e32
push ecx
lea edx, [esp + 0x1c]
mov ecx, esp
mov dword [esp + 0x28], esp
push edx
mov byte [esp + 0x3c], 6
call fcn.00440e32
mov byte [esp + 0x38], bl
call fcn.00403500
jmp 0x40326a
push ecx
lea eax, [esp + 0x14]
mov ecx, esp
mov dword [esp + 0x28], esp
push eax
call fcn.00440e32
push ecx
lea edx, [esp + 0x1c]
mov ecx, esp
mov dword [esp + 0x28], esp
push edx
mov byte [esp + 0x3c], 7
call fcn.00440e32
mov byte [esp + 0x38], bl
call fcn.00403500
add esp, 8
test eax, eax
jne 0x4030e7
mov edi, ebx
push ecx
lea eax, [esp + 0x14]
mov ecx, esp
mov dword [esp + 0x28], esp
push eax
call fcn.00440e32
push ecx
lea edx, [esp + 0x1c]
mov ecx, esp
mov dword [esp + 0x28], esp
push edx
mov byte [esp + 0x3c], 8
call fcn.00440e32
mov byte [esp + 0x38], bl
call fcn.00403500
add esp, 8
test eax, eax
jle case.default.0x4031e1
jmp 0x403289
push ecx
lea eax, [esp + 0x14]
mov ecx, esp
mov dword [esp + 0x28], esp
push eax
call fcn.00440e32
push ecx
lea edx, [esp + 0x1c]
mov ecx, esp
mov dword [esp + 0x28], esp
push edx
mov byte [esp + 0x3c], 9
call fcn.00440e32
mov byte [esp + 0x38], bl
call fcn.00403500
add esp, 8
test eax, eax
jne 0x403160
mov edi, ebx
push ecx
lea eax, [esp + 0x14]
mov ecx, esp
mov dword [esp + 0x28], esp
push eax
call fcn.00440e32
push ecx
lea edx, [esp + 0x1c]
mov ecx, esp
mov dword [esp + 0x28], esp
push edx
mov byte [esp + 0x3c], 0xa
call fcn.00440e32
mov byte [esp + 0x38], bl
call fcn.00403500
jmp 0x40326a
push ecx
lea eax, [esp + 0x14]
mov ecx, esp
mov dword [esp + 0x28], esp
push eax
call fcn.00440e32
push ecx
lea edx, [esp + 0x1c]
mov ecx, esp
mov dword [esp + 0x28], esp
push edx
mov byte [esp + 0x3c], 0xb
call fcn.00440e32
mov byte [esp + 0x38], bl
call fcn.00403500
add esp, 8
test eax, eax
je case.default.0x4031e1
jmp 0x403289
mov esi, dword [esi + 0xc]
cmp esi, 5
ja case.default.0x4031e1
jmp dword [esi*4 + 0x4032fc]
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
push eax
push ecx
call fcn.0042f58b
add esp, 8
test eax, eax
jne case.default.0x4031e1
jmp 0x403289
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
push ecx
push edx
jmp 0x403265
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
push eax
push ecx
call fcn.0042f58b
add esp, 8
test eax, eax
jne case.0x4031e1.1
mov edi, ebx
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
push edx
push eax
call fcn.0042f58b
add esp, 8
test eax, eax
jle case.default.0x4031e1
jmp 0x403289
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
push ecx
push edx
call fcn.0042f58b
add esp, 8
test eax, eax
jne 0x40325b
mov edi, ebx
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
push eax
push ecx
call fcn.0042f58b
add esp, 8
test eax, eax
jge case.default.0x4031e1
jmp 0x403289
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
push edx
push eax
call fcn.0042f58b
add esp, 8
test eax, eax
je case.default.0x4031e1
mov edi, ebx
mov eax, dword [esp + 0x38]
test eax, eax
jne 0x402e79
lea ecx, [esp + 0x10]
mov byte [esp + 0x30], 0
call fcn.004410bd
lea ecx, [esp + 0x14]
mov dword [esp + 0x30], 0xffffffff
call fcn.004410bd
mov ecx, dword [esp + 0x28]
mov eax, edi
pop edi
pop esi
pop ebp
mov dword fs:[0], ecx
pop ebx
add esp, 0x24
ret