Function at 0x59447c
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
mov ecx, 0x2d
push 0
push 0
dec ecx
jne 0x594484
push ecx
push ebx
push esi
push edi
test dl, dl
je 0x59449b
add esp, 0xfffffff0
call fcn.00403dac
mov byte [ebp - 5], dl
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x594cc3
push dword fs:[eax]
mov dword fs:[eax], esp
xor edx, edx
mov eax, dword [ebp - 4]
call fcn.00403a50
mov eax, dword [ebp - 4]
mov byte [eax + 0x17], 0
push 0x594cec
push 0x594cfc
call sub.kernel32.dll_GetModuleHandleA_2
push eax
call sub.kernel32.dll_GetProcAddress_1
mov ebx, eax
test ebx, ebx
je 0x5944f8
lea eax, [ebp - 0x10]
push eax
call sub.kernel32.dll_GetCurrentProcess
push eax
call ebx
test eax, eax
je 0x5944f8
cmp dword [ebp - 0x10], 1
sbb eax, eax
inc eax
mov edx, dword [ebp - 4]
mov byte [edx + 0x17], al
lea eax, [ebp - 0xa4]
mov edx, 0x94
call fcn.00408254
mov dword [ebp - 0xa4], 0x94
lea eax, [ebp - 0xa4]
push eax
call sub.kernel32.dll_GetVersionExA
mov eax, dword [ebp - 4]
mov edx, dword [ebp - 0xa0]
mov dword [eax + 8], edx
mov eax, dword [ebp - 4]
mov edx, dword [ebp - 0x9c]
mov dword [eax + 0xc], edx
movzx eax, word [ebp - 0x98]
mov edx, dword [ebp - 4]
mov dword [edx + 4], eax
lea eax, [ebp - 0x148]
lea edx, [ebp - 0x90]
mov ecx, 0x80
call fcn.00404bdc
mov eax, dword [ebp - 0x148]
lea edx, [ebp - 0x144]
call fcn.004099a0
mov edx, dword [ebp - 0x144]
mov eax, dword [ebp - 4]
add eax, 0x20
call fcn.004049b0
mov eax, dword [ebp - 0x94]
sub eax, 1
jb 0x59458d
je 0x59459f
dec eax
je 0x5945b1
jmp 0x5945c3
mov eax, dword [ebp - 4]
add eax, 0x10
mov edx, 0x594d10
call fcn.004049b0
jmp 0x5945d3
mov eax, dword [ebp - 4]
add eax, 0x10
mov edx, 0x594d28
call fcn.004049b0
jmp 0x5945d3
mov eax, dword [ebp - 4]
add eax, 0x10
mov edx, 0x594d3c
call fcn.004049b0
jmp 0x5945d3
mov eax, dword [ebp - 4]
add eax, 0x10
mov edx, 0x594d50
call fcn.004049b0
mov eax, dword [ebp - 4]
cmp dword [eax + 8], 5
jne 0x5945ec
mov eax, dword [ebp - 4]
add eax, 0x10
mov edx, 0x594d60
call fcn.004049b0
mov eax, dword [ebp - 4]
mov byte [eax + 0x16], 0
cmp dword [ebp - 0x94], 2
jne 0x5946fe
mov eax, dword [ebp - 0xa0]
sub eax, 3
je 0x594621
dec eax
je 0x59462d
dec eax
je 0x5946be
dec eax
je 0x5946f2
jmp 0x594803
mov eax, dword [ebp - 4]
mov byte [eax + 0x16], 6
jmp 0x594803
mov eax, dword [ebp - 4]
mov byte [eax + 0x16], 7
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x20]
mov edx, 0x594d78
call fcn.00404d78
jne 0x594803
xor eax, eax
push ebp
push 0x5946af
push dword fs:[eax]
mov dword fs:[eax], esp
mov dl, 1
mov eax, dword [0x438e84]
call fcn.00438f54
mov ebx, eax
mov edx, 0x80000002
mov eax, ebx
call fcn.00438ff4
xor ecx, ecx
mov edx, 0x594d90
mov eax, ebx
call fcn.00439058
test al, al
je 0x59469b
mov eax, dword [ebp - 4]
add eax, 0x20
mov edx, 0x594dd4
call fcn.004049b0
mov eax, ebx
call fcn.00438fc4
mov eax, ebx
call fcn.00403a80
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x594803
mov eax, dword [ebp - 0x9c]
cmp eax, 2
jb 0x5946d5
mov eax, dword [ebp - 4]
mov byte [eax + 0x16], 0xe
jmp 0x594803
cmp eax, 1
jb 0x5946e6
mov eax, dword [ebp - 4]
mov byte [eax + 0x16], 9
jmp 0x594803
mov eax, dword [ebp - 4]
mov byte [eax + 0x16], 8
jmp 0x594803
mov eax, dword [ebp - 4]
mov byte [eax + 0x16], 0xf
jmp 0x594803
cmp dword [ebp - 0xa0], 4
jne 0x594803
mov eax, dword [ebp - 0x9c]
sub eax, 1
jb 0x59472d
sub eax, 9
je 0x5947b1
sub eax, 0x50
je 0x5947fc
jmp 0x594803
lea eax, [ebp - 0x150]
lea edx, [ebp - 0x90]
mov ecx, 0x80
call fcn.00404bdc
mov eax, dword [ebp - 0x150]
lea edx, [ebp - 0x14c]
call fcn.004099a0
mov eax, dword [ebp - 0x14c]
mov edx, 0x594dec
call fcn.00404d78
je 0x59479f
lea eax, [ebp - 0x158]
lea edx, [ebp - 0x90]
mov ecx, 0x80
call fcn.00404bdc
mov eax, dword [ebp - 0x158]
lea edx, [ebp - 0x154]
call fcn.004099a0
mov eax, dword [ebp - 0x154]
mov edx, 0x594df8
call fcn.00404d78
jne 0x5947a8
mov eax, dword [ebp - 4]
mov byte [eax + 0x16], 3
jmp 0x594803
mov eax, dword [ebp - 4]
mov byte [eax + 0x16], 2
jmp 0x594803
lea eax, [ebp - 0x160]
lea edx, [ebp - 0x90]
mov ecx, 0x80
call fcn.00404bdc
mov eax, dword [ebp - 0x160]
lea edx, [ebp - 0x15c]
call fcn.004099a0
mov eax, dword [ebp - 0x15c]
mov edx, 0x594e04
call fcn.00404d78
jne 0x5947f3
mov eax, dword [ebp - 4]
mov byte [eax + 0x16], 5
jmp 0x594803
mov eax, dword [ebp - 4]
mov byte [eax + 0x16], 4
jmp 0x594803
mov eax, dword [ebp - 4]
mov byte [eax + 0x16], 0xd
mov eax, dword [ebp - 4]
mov byte [eax + 0x15], 0
mov eax, dword [ebp - 4]
mov byte [eax + 0x14], 0
cmp dword [ebp - 0x94], 2
jne 0x594906
lea eax, [ebp - 0x140]
mov edx, 0x9c
call fcn.00408254
mov dword [ebp - 0x140], 0x9c
lea eax, [ebp - 0x140]
push eax
call sub.kernel32.dll_GetVersionExA_1
test eax, eax
je 0x594906
mov eax, dword [ebp - 4]
cmp dword [eax + 8], 5
jne 0x594882
mov al, byte [ebp - 0xa6]
dec al
je 0x594869
dec al
je 0x594872
dec al
je 0x59487b
jmp 0x594882
mov eax, dword [ebp - 4]
mov byte [eax + 0x15], 1
jmp 0x594882
mov eax, dword [ebp - 4]
mov byte [eax + 0x15], 3
jmp 0x594882
mov eax, dword [ebp - 4]
mov byte [eax + 0x15], 2
test byte [ebp - 0xa8], 1
je 0x594892
mov eax, dword [ebp - 4]
mov byte [eax + 0x14], 1
test byte [ebp - 0xa8], 2
je 0x5948a2
mov eax, dword [ebp - 4]
mov byte [eax + 0x14], 2
test byte [ebp - 0xa8], 0x80
je 0x5948b2
mov eax, dword [ebp - 4]
mov byte [eax + 0x14], 3
test byte [ebp - 0xa7], 4
je 0x5948c2
mov eax, dword [ebp - 4]
mov byte [eax + 0x14], 4
mov eax, dword [ebp - 4]
cmp byte [eax + 0x16], 9
jne 0x594906
cmp byte [ebp - 0xa6], 1
ja 0x594906
test byte [ebp - 0xa7], 2
je 0x5948e6
mov eax, dword [ebp - 4]
mov byte [eax + 0x16], 0xa
jmp 0x594906
mov ax, word [ebp - 0xa8]
test al, 0x40
jne 0x5948f6
test ah, 8
je 0x5948ff
mov eax, dword [ebp - 4]
mov byte [eax + 0x16], 0xb
jmp 0x594906
mov eax, dword [ebp - 4]
mov byte [eax + 0x16], 0xc
mov eax, dword [ebp - 4]
mov al, byte [eax + 0x16]
add al, 0xfa
sub al, 3
jae 0x5949d0
xor eax, eax
push ebp
push 0x5949c6
push dword fs:[eax]
mov dword fs:[eax], esp
mov dl, 1
mov eax, dword [0x438e84]
call fcn.00438f54
mov ebx, eax
mov edx, 0x80000002
mov eax, ebx
call fcn.00438ff4
mov eax, dword [ebp - 4]
cmp byte [eax + 0x15], 0
jne 0x5949b5
xor ecx, ecx
mov edx, 0x594e10
mov eax, ebx
call fcn.00439058
test al, al
je 0x5949b5
lea ecx, [ebp - 0xc]
mov edx, 0x594e48
mov eax, ebx
call fcn.004393ac
mov eax, dword [ebp - 0xc]
mov edx, 0x594e5c
call fcn.00404d78
jne 0x594980
mov eax, dword [ebp - 4]
mov byte [eax + 0x15], 1
jmp 0x5949ae
mov eax, dword [ebp - 0xc]
mov edx, 0x594e6c
call fcn.00404d78
jne 0x594998
mov eax, dword [ebp - 4]
mov byte [eax + 0x15], 2
jmp 0x5949ae
mov eax, dword [ebp - 0xc]
mov edx, 0x594e80
call fcn.00404d78
jne 0x5949ae
mov eax, dword [ebp - 4]
mov byte [eax + 0x15], 3
mov eax, ebx
call fcn.00438fc4
mov eax, ebx
call fcn.00403a80
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x5949d0
mov eax, dword [ebp - 4]
cmp byte [eax + 0x16], 0
jne 0x5949f2
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x10]
mov edx, 0x594d10
call fcn.00404d78
jne 0x5949f2
mov eax, dword [ebp - 4]
mov byte [eax + 0x16], 1
mov eax, dword [ebp - 4]
movzx eax, byte [eax + 0x16]
cmp eax, 0xf
ja case.default.0x594a02
jmp dword [eax*4 + 0x594a09]
mov eax, dword [ebp - 4]
add eax, 0x18
mov edx, 0x594d50
call fcn.004049b0
jmp case.default.0x594a02
mov eax, dword [ebp - 4]
add eax, 0x18
mov edx, 0x594d10
call fcn.004049b0
jmp case.default.0x594a02
mov eax, dword [ebp - 4]
add eax, 0x18
mov edx, 0x594d28
call fcn.004049b0
jmp case.default.0x594a02
mov eax, dword [ebp - 4]
add eax, 0x18
mov edx, 0x594e94
call fcn.004049b0
jmp case.default.0x594a02
mov eax, dword [ebp - 4]
add eax, 0x18
mov edx, 0x594eac
call fcn.004049b0
jmp case.default.0x594a02
mov eax, dword [ebp - 4]
add eax, 0x18
mov edx, 0x594ec0
call fcn.004049b0
jmp case.default.0x594a02
mov eax, dword [ebp - 4]
add eax, 0x18
mov edx, 0x594ed8
call fcn.004049b0
jmp case.default.0x594a02
mov eax, dword [ebp - 4]
add eax, 0x18
mov edx, 0x594eec
call fcn.004049b0
jmp case.default.0x594a02
mov eax, dword [ebp - 4]
add eax, 0x18
mov edx, 0x594d60
call fcn.004049b0
jmp case.default.0x594a02
mov eax, dword [ebp - 4]
add eax, 0x18
mov edx, 0x594f00
call fcn.004049b0
jmp case.default.0x594a02
mov eax, dword [ebp - 4]
add eax, 0x18
mov edx, 0x594f14
call fcn.004049b0
jmp case.default.0x594a02
mov eax, dword [ebp - 4]
add eax, 0x18
mov edx, 0x594f2c
call fcn.004049b0
jmp case.default.0x594a02
mov eax, dword [ebp - 4]
add eax, 0x18
mov edx, 0x594f48
call fcn.004049b0
jmp case.default.0x594a02
mov eax, dword [ebp - 4]
add eax, 0x18
mov edx, 0x594f60
call fcn.004049b0
jmp case.default.0x594a02
mov eax, dword [ebp - 4]
add eax, 0x18
mov edx, 0x594f74
call fcn.004049b0
jmp case.default.0x594a02
mov eax, dword [ebp - 4]
add eax, 0x18
mov edx, 0x594f90
call fcn.004049b0
mov eax, dword [ebp - 4]
cmp byte [eax + 0x17], 0
je 0x594b98
mov eax, dword [ebp - 4]
add eax, 0x18
mov edx, 0x594fa8
call fcn.00404c34
mov eax, dword [ebp - 4]
mov al, byte [eax + 0x15]
dec al
je 0x594bac
dec al
je 0x594bbe
dec al
je 0x594bd0
jmp 0x594be0
mov eax, dword [ebp - 4]
add eax, 0x18
mov edx, 0x594fb8
call fcn.00404c34
jmp 0x594be0
mov eax, dword [ebp - 4]
add eax, 0x18
mov edx, 0x594fd0
call fcn.00404c34
jmp 0x594be0
mov eax, dword [ebp - 4]
add eax, 0x18
mov edx, 0x594fe0
call fcn.00404c34
mov eax, dword [ebp - 4]
mov al, byte [eax + 0x14]
dec al
je 0x594bf8
dec al
je 0x594c0a
dec al
je 0x594c1c
dec al
je 0x594c2e
jmp 0x594c3e
mov eax, dword [ebp - 4]
add eax, 0x18
mov edx, 0x59500c
call fcn.00404c34
jmp 0x594c3e
mov eax, dword [ebp - 4]
add eax, 0x18
mov edx, 0x595024
call fcn.00404c34
jmp 0x594c3e
mov eax, dword [ebp - 4]
add eax, 0x18
mov edx, 0x595038
call fcn.00404c34
jmp 0x594c3e
mov eax, dword [ebp - 4]
add eax, 0x18
mov edx, 0x59504c
call fcn.00404c34
lea edx, [ebp - 0x164]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 8]
call fcn.00409ee4
push dword [ebp - 0x164]
push 0x595060
lea edx, [ebp - 0x168]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xc]
call fcn.00409ee4
push dword [ebp - 0x168]
push 0x595060
lea edx, [ebp - 0x16c]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 4]
call fcn.00409ee4
push dword [ebp - 0x16c]
mov eax, dword [ebp - 4]
add eax, 0x1c
mov edx, 5
call fcn.00404cec
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x594cca
lea eax, [ebp - 0x16c]
mov edx, 0xb
call fcn.00404980
lea eax, [ebp - 0xc]
call fcn.0040495c
ret