Function at 0x40caef
Capabilities:
Check os version
Get system information on windows

Disassembly:
push ebp
lea ebp, [esp - 0x70]
sub esp, 0x168
push ebx
push esi
push edi
push dword [ebp + 0x78]
xor edi, edi
mov edx, 0x419a78
mov ecx, 0x104
mov dword [ebp + 0x68], edi
call fcn.00401fb7
push 0x24
lea eax, [ebp - 0x58]
push edi
push eax
call fcn.0040f5f0
mov esi, 0x9c
push esi
lea eax, [ebp - 0x34]
push edi
push eax
call fcn.0040f5f0
push 0xac
push edi
push dword [ebp + 0x7c]
call fcn.0040f5f0
add esp, 0x24
lea eax, [ebp - 0x34]
push eax
mov dword [ebp - 0x34], esi
call dword [0x41712c]
test eax, eax
je 0x40d096
push esi
lea eax, [ebp - 0x34]
push eax
push dword [ebp + 0x7c]
call fcn.0040fb80
mov esi, dword [0x417070]
add esp, 0xc
push 0x41aacc
mov ebx, 0x41aae0
push ebx
call esi
mov edi, dword [0x41706c]
push eax
call edi
test eax, eax
je 0x40cb8e
lea ecx, [ebp - 0x58]
push ecx
call eax
jmp 0x40cb98
lea eax, [ebp - 0x58]
push eax
call dword [0x417130]
mov ax, word [ebp - 0x58]
mov ecx, dword [ebp + 0x7c]
mov word [ecx + 0xa0], ax
xor eax, eax
cmp dword [ebp - 0x24], 2
jne 0x40cfe2
cmp dword [ebp - 0x30], 6
ja 0x40cbc4
jne 0x40cd17
cmp dword [ebp - 0x2c], 1
jbe 0x40cbdb
mov eax, dword [ebp + 0x78]
push 0x41aafc
call fcn.0040ca75
cmp dword [ebp - 0x30], 6
jne 0x40cd17
cmp dword [ebp - 0x2c], 0
jne 0x40cbfb
cmp byte [ebp + 0x66], 1
mov eax, dword [ebp + 0x78]
jne 0x40cbf1
push 0x41ab28
jmp 0x40cbf6
push 0x41ab48
call fcn.0040ca75
cmp dword [ebp - 0x2c], 1
jne 0x40cc1b
cmp byte [ebp + 0x66], 1
mov eax, dword [ebp + 0x78]
jne 0x40cc11
push 0x41ab74
jmp 0x40cc16
push 0x41ab8c
call fcn.0040ca75
push 0x41abbc
push ebx
call esi
push eax
call edi
lea ecx, [ebp + 0x68]
push ecx
xor ecx, ecx
push ecx
push ecx
push ecx
push 6
call eax
mov eax, dword [ebp + 0x68]
mov ecx, dword [ebp + 0x7c]
mov dword [ecx + 0x9c], eax
cmp eax, 0xa
ja 0x40cc95
je case.0x40cc50.4
dec eax
cmp eax, 8
ja case.0x40cc50.5
jmp dword [eax*4 + 0x40d0a7]
push 0x41abcc
jmp 0x40cced
push 0x41abe0
jmp 0x40cced
push 0x41abfc
jmp 0x40cced
push 0x41ac14
jmp 0x40cced
push 0x41ac2c
jmp 0x40cced
push 0x41ac70
jmp 0x40cced
push 0x41acf0
jmp 0x40cced
push 0x41ad30
jmp 0x40cced
cmp eax, 0xf
ja 0x40cccd
je 0x40ccc6
sub eax, 0xb
je 0x40ccbf
dec eax
je 0x40ccb8
dec eax
je 0x40ccb1
dec eax
jne case.0x40cc50.5
push 0x41acac
jmp 0x40cced
push 0x41ad44
jmp 0x40cced
push 0x41ac88
jmp 0x40cced
push 0x41ac40
jmp 0x40cced
push 0x41acd0
jmp 0x40cced
sub eax, 0x11
je 0x40cce8
dec eax
je 0x40cce1
sub eax, 7
jne case.0x40cc50.5
push 0x41ad08
jmp 0x40cced
push 0x41ac50
jmp 0x40cced
push 0x41ad64
mov eax, dword [ebp + 0x78]
call fcn.0040ca75
cmp word [ebp - 0x58], 9
jne 0x40cd03
push 0x41ad7c
jmp 0x40cd0f
cmp word [ebp - 0x58], 0
jne 0x40cd17
push 0x41ad90
mov eax, dword [ebp + 0x78]
call fcn.0040ca75
cmp dword [ebp - 0x30], 5
jne 0x40ce94
cmp dword [ebp - 0x2c], 2
jne 0x40ce15
push 0x59
call dword [0x4172e4]
test eax, eax
je 0x40cd3e
push 0x41ada4
jmp 0x40cd69
mov eax, 0x2000
cmp word [ebp + 0x64], ax
jne 0x40cd50
push 0x41add8
jmp 0x40cd69
cmp byte [ebp + 0x66], 1
jne 0x40cd64
cmp word [ebp - 0x58], 9
jne 0x40cd64
push 0x41ae14
jmp 0x40cd69
push 0x41ae50
mov ebx, dword [ebp + 0x78]
mov eax, ebx
call fcn.0040ca75
cmp byte [ebp + 0x66], 1
je 0x40ce09
cmp word [ebp - 0x58], 6
jne 0x40cd9e
test byte [ebp + 0x64], 0x80
je 0x40cd91
push 0x41ae7c
jmp 0x40ce02
test byte [ebp + 0x64], 2
je 0x40ce09
push 0x41aea8
jmp 0x40ce02
cmp word [ebp - 0x58], 9
jne 0x40cdc8
test byte [ebp + 0x64], 0x80
je 0x40cdb2
push 0x41aed4
jmp 0x40ce02
test byte [ebp + 0x64], 2
mov eax, ebx
je 0x40cdc1
push 0x41aef4
jmp 0x40ce04
push 0x41af14
jmp 0x40ce04
mov eax, dword [ebp + 0x64]
test eax, 0x4000
je 0x40cdd9
push 0x41af30
jmp 0x40ce02
test al, al
jns 0x40cde4
push 0x41ac70
jmp 0x40ce02
test al, 2
je 0x40cdef
push 0x41ac14
jmp 0x40ce02
test eax, 0x400
je 0x40cdfd
push 0x41af50
jmp 0x40ce02
push 0x41ad30
mov eax, ebx
call fcn.0040ca75
cmp dword [ebp - 0x30], 5
jne 0x40ce97
jmp 0x40ce18
mov ebx, dword [ebp + 0x78]
cmp dword [ebp - 0x2c], 1
mov esi, 0x41af7c
jne 0x40ce4d
push 0x41af58
mov eax, ebx
call fcn.0040ca75
test dword [ebp + 0x64], 0x200
mov eax, ebx
je 0x40ce41
push 0x41af70
jmp 0x40ce42
push esi
call fcn.0040ca75
cmp dword [ebp - 0x30], 5
jne 0x40ce97
cmp dword [ebp - 0x2c], 0
jne 0x40cf79
push 0x41af98
mov eax, ebx
call fcn.0040ca75
cmp byte [ebp + 0x66], 1
mov eax, ebx
jne 0x40ce6e
push esi
jmp 0x40ce86
test byte [ebp + 0x64], 0x80
je 0x40ce7b
push 0x41afb4
jmp 0x40ce86
test byte [ebp + 0x64], 2
je 0x40ce8d
push 0x41afd8
call fcn.0040ca75
jmp 0x40ce97
push 0x41aff8
jmp 0x40ce86
mov ebx, dword [ebp + 0x78]
cmp dword [ebp - 0x30], 4
mov edi, 0x41dddc
mov esi, 0x41b008
jne 0x40cf0e
mov eax, dword [0x41dddc]
mov ecx, edi
call dword [eax + 0xc]
push dword [ebp - 0x2c]
add eax, 0x10
mov dword [ebp + 0x6c], eax
lea eax, [ebp + 0x6c]
push esi
push eax
call fcn.0040389f
add esp, 0xc
push 0x41b014
mov eax, ebx
call fcn.0040ca75
push dword [ebp + 0x6c]
mov eax, ebx
call fcn.0040ca75
cmp byte [ebp + 0x66], 1
jne 0x40ceea
push 0x41b030
jmp 0x40cefc
test byte [ebp + 0x64], 2
je 0x40cef7
push 0x41afd8
jmp 0x40cefc
push 0x41aff8
mov eax, ebx
call fcn.0040ca75
mov eax, dword [ebp + 0x6c]
add eax, 0xfffffff0
call fcn.00404aac
cmp dword [ebp - 0x30], 3
jne 0x40cf79
mov eax, dword [0x41dddc]
mov ecx, edi
call dword [eax + 0xc]
push dword [ebp - 0x2c]
add eax, 0x10
mov dword [ebp + 0x6c], eax
lea eax, [ebp + 0x6c]
push esi
push eax
call fcn.0040389f
add esp, 0xc
push 0x41b048
mov eax, ebx
call fcn.0040ca75
mov esi, dword [ebp + 0x6c]
push esi
mov eax, ebx
call fcn.0040ca75
cmp byte [ebp + 0x66], 1
jne 0x40cf58
push 0x41b030
jmp 0x40cf6a
test byte [ebp + 0x64], 2
je 0x40cf65
push 0x41afd8
jmp 0x40cf6a
push 0x41aff8
mov eax, ebx
call fcn.0040ca75
lea eax, [esi - 0x10]
call fcn.00404aac
mov esi, dword [0x417108]
lea eax, [ebp - 0x20]
push eax
call esi
test eax, eax
jle 0x40d06d
push 0x41b0d0
mov eax, ebx
call fcn.0040ca75
lea eax, [ebp - 0x20]
push eax
call esi
mov esi, eax
inc esi
cmp esi, 0x3fffffff
jg 0x40d063
lea eax, [esi + esi]
call fcn.004158e0
mov edi, esp
test edi, edi
je 0x40d063
push esi
push edi
xor eax, eax
push 0xffffffffffffffff
mov word [edi], ax
lea eax, [ebp - 0x20]
push eax
push 0
push 3
call dword [0x417074]
neg eax
sbb eax, eax
and eax, edi
jmp 0x40d065
cmp dword [ebp - 0x24], 1
jne 0x40d096
cmp dword [ebp - 0x30], 4
jne 0x40d093
cmp dword [ebp - 0x2c], 0xa
jne 0x40d01b
push dword [ebp + 0x78]
mov edx, 0x41b064
mov ecx, 0x104
call fcn.00401fb7
cmp byte [ebp - 0x1f], 0x41
jne 0x40d093
push 0x41b07c
jmp 0x40d05e
cmp dword [ebp - 0x2c], 0x5a
jne 0x40d035
push dword [ebp + 0x78]
mov edx, 0x41b084
mov ecx, 0x104
call fcn.00401fb7
jmp 0x40d093
cmp dword [ebp - 0x2c], 0
jne 0x40d093
push dword [ebp + 0x78]
mov edx, 0x41b0ac
mov ecx, 0x104
call fcn.00401fb7
cmp byte [ebp - 0x1f], 0x43
je 0x40d059
cmp byte [ebp - 0x1f], 0x42
jne 0x40d093
push 0x41b0c4
mov eax, dword [ebp + 0x78]
jmp 0x40d08e
xor eax, eax
push eax
mov eax, ebx
call fcn.0040ca75
push dword [ebp - 0x28]
lea eax, [ebp - 0xf8]
push 0x41b0d4
push eax
call dword [0x4172dc]
lea eax, [ebp - 0xf8]
add esp, 0xc
push eax
mov eax, ebx
call fcn.0040ca75
xor eax, eax
inc eax
lea esp, [ebp - 0x104]
pop edi
pop esi
pop ebx
add ebp, 0x70
leave
ret