Function at 0x40f820
Capabilities:
Check if file exists
Check os version

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4425e2
mov eax, dword fs:[0]
push eax
sub esp, 0x2ec
mov eax, dword [0x45a024]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
mov dword [ebp - 0x2d0], eax
mov dword [ebp - 0x284], ecx
xor edi, edi
mov dword [ebp - 4], edi
mov dword [ebp - 0x294], edi
mov dword [ebp - 0x290], edi
mov dword [ebp - 0x28c], edi
mov dword [ebp - 0x2cc], edi
mov dword [ebp - 0x2c8], edi
mov dword [ebp - 0x2c4], edi
xor ebx, ebx
mov dword [ebp - 0x2f0], ebx
mov dword [ebp - 0x2ec], edi
mov dword [ebp - 0x2e8], edi
mov dword [ebp - 0x2ac], edi
mov dword [ebp - 0x2a8], edi
mov dword [ebp - 0x2a4], edi
lea edx, [ebp - 0x2cc]
push edx
mov byte [ebp - 4], 4
push 0x7c
lea ecx, [ebp + 0xc]
mov dword [ebp - 0x27c], edi
call fcn.00413130
mov esi, dword [ebp - 0x2cc]
add esp, 8
mov dword [ebp - 0x280], esi
cmp esi, dword [ebp - 0x2c8]
je 0x40fbed
cmp dword [esi + 0x14], 8
jb 0x40f8f2
mov eax, dword [esi]
mov dword [ebp - 0x29c], eax
jmp 0x40f8f8
mov dword [ebp - 0x29c], esi
mov eax, dword [ebp - 0x280]
mov edx, dword [eax + 0x10]
mov ecx, edx
mov dword [ebp - 0x298], edx
cmp ecx, edx
jae 0x40f913
mov dword [ebp - 0x298], ecx
mov ecx, dword [esi + 0x10]
cmp edx, ecx
jb 0x40f91c
mov edx, ecx
cmp dword [eax + 0x14], 8
jb 0x40f926
mov ecx, dword [eax]
jmp 0x40f928
mov ecx, eax
mov eax, dword [ebp - 0x29c]
cmp edx, edi
jbe 0x40f949
mov si, word [ecx]
cmp si, word [eax]
jne 0x40f95b
add ecx, 2
add eax, 2
dec edx
jne 0x40f932
mov esi, dword [ebp - 0x2cc]
mov eax, dword [esi + 0x10]
mov ecx, dword [ebp - 0x298]
cmp ecx, eax
jae 0x40f96d
or eax, 0xffffffff
jmp 0x40f976
sbb eax, eax
and eax, 0xfffffffe
inc eax
cmp eax, edi
je 0x40f943
mov esi, dword [ebp - 0x2cc]
jmp 0x40f976
xor edx, edx
cmp ecx, eax
setne dl
mov eax, edx
cmp eax, edi
sete al
test al, al
je 0x40f9a5
cmp dword [esi + 0x14], 8
jb 0x40f989
mov eax, dword [esi]
jmp 0x40f98b
mov eax, esi
push eax
call fcn.0041bc5a
mov ecx, dword [ebp - 0x2d0]
add esp, 4
mov dword [ecx + 0x560], eax
jmp 0x40fbd2
mov eax, dword [ebp - 0x280]
push edi
xor edx, edx
push eax
or eax, 0xffffffff
lea ecx, [ebp - 0x2c]
mov dword [ebp - 0x18], 7
mov dword [ebp - 0x1c], edi
mov word [ebp - 0x2c], dx
call fcn.00403f70
mov byte [ebp - 4], 5
cmp ebx, dword [ebp - 0x2ec]
je 0x40fa33
mov ecx, dword [ebp - 0x298]
push ecx
mov ecx, dword [ebp - 0x2ec]
push ecx
mov eax, ebx
call fcn.00407530
mov edi, eax
add esp, 8
mov esi, edi
cmp edi, dword [ebp - 0x2ec]
je 0x40fa2b
mov ebx, dword [ebp - 0x2ec]
mov edi, edi
cmp dword [esi + 0x14], 8
jb 0x40fa11
mov eax, dword [esi]
push eax
call fcn.0041afda
add esp, 4
xor edx, edx
mov dword [esi + 0x14], 7
mov dword [esi + 0x10], 0
mov word [esi], dx
add esi, 0x1c
cmp esi, ebx
jne 0x40fa00
mov dword [ebp - 0x2ec], edi
xor edi, edi
lea eax, [ebp - 0x2f0]
push eax
push 0x2c
lea ecx, [ebp - 0x2c]
call fcn.00413130
push 0x90
call fcn.0041b5db
add esp, 0xc
cmp eax, edi
je 0x40fa99
mov dword [eax + 0x10], edi
mov ecx, 7
mov dword [eax + 0x14], ecx
xor edx, edx
mov word [eax], dx
mov dword [eax + 0x30], ecx
mov dword [eax + 0x2c], edi
mov word [eax + 0x1c], dx
mov dword [eax + 0x4c], ecx
mov dword [eax + 0x48], edi
mov word [eax + 0x38], dx
mov dword [eax + 0x68], ecx
mov dword [eax + 0x64], edi
mov word [eax + 0x54], dx
mov dword [eax + 0x84], ecx
xor ecx, ecx
mov dword [eax + 0x80], edi
mov word [eax + 0x70], cx
mov esi, eax
jmp 0x40fa9b
xor esi, esi
mov ecx, dword [ebp - 0x2ec]
mov ebx, dword [ebp - 0x2f0]
sub ecx, ebx
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x27c], esi
cmp eax, 6
jne 0x40fbb6
push edi
push ebx
or eax, 0xffffffff
mov ecx, esi
call fcn.00403f70
lea eax, [ebx + 0x1c]
push edi
push eax
lea ecx, [esi + 0x1c]
or eax, 0xffffffff
call fcn.00403f70
lea eax, [ebx + 0x38]
push edi
push eax
lea ecx, [esi + 0x38]
or eax, 0xffffffff
call fcn.00403f70
lea eax, [ebx + 0x54]
push edi
push eax
lea ecx, [esi + 0x54]
or eax, 0xffffffff
call fcn.00403f70
lea eax, [ebx + 0x70]
push edi
push eax
lea ecx, [esi + 0x70]
or eax, 0xffffffff
call fcn.00403f70
cmp dword [ebx + 0xa0], 8
lea eax, [ebx + 0x8c]
jb 0x40fb28
mov eax, dword [eax]
push eax
call fcn.0041bc5a
lea ecx, [ebp - 0x27c]
add esp, 4
mov dword [esi + 0x8c], eax
cmp ecx, dword [ebp - 0x2a8]
jae 0x40fb88
mov edx, ecx
mov ecx, dword [ebp - 0x2ac]
cmp ecx, edx
ja 0x40fb88
mov eax, dword [ebp - 0x2a8]
mov esi, edx
sub esi, ecx
sar esi, 2
cmp eax, dword [ebp - 0x2a4]
jne 0x40fb7d
lea eax, [ebp - 0x2ac]
call fcn.00412a00
mov eax, dword [ebp - 0x2a8]
mov ecx, dword [ebp - 0x2ac]
cmp eax, edi
je 0x40fbad
mov ecx, dword [ecx + esi*4]
mov dword [eax], ecx
jmp 0x40fbad
mov eax, dword [ebp - 0x2a8]
cmp eax, dword [ebp - 0x2a4]
jne 0x40fba7
lea eax, [ebp - 0x2ac]
call fcn.00412a00
mov eax, dword [ebp - 0x2a8]
cmp eax, edi
je 0x40fbad
mov dword [eax], esi
add eax, 4
mov dword [ebp - 0x2a8], eax
mov byte [ebp - 4], 4
cmp dword [ebp - 0x18], 8
jb 0x40fbcc
mov edx, dword [ebp - 0x2c]
push edx
call fcn.0041afda
add esp, 4
mov esi, dword [ebp - 0x2cc]
mov eax, dword [ebp - 0x280]
add eax, 0x1c
mov dword [ebp - 0x280], eax
cmp eax, dword [ebp - 0x2c8]
jne 0x40f8e2
mov eax, dword [ebp - 0x2ac]
mov dword [ebp - 0x280], eax
cmp eax, dword [ebp - 0x2a8]
je 0x40fd1f
jmp 0x40fc10
mov eax, dword [ebp - 0x280]
mov eax, dword [eax]
cmp dword [eax + 0x8c], 0
mov dword [ebp - 0x27c], eax
jne 0x40fcfc
mov esi, dword [ebp - 0x284]
mov eax, dword [esi + 4]
lea ecx, [ebp - 0x27c]
cmp ecx, eax
jae 0x40fca5
mov edx, dword [esi]
cmp edx, ecx
ja 0x40fca5
mov edi, ecx
mov ecx, dword [esi + 8]
sub edi, edx
sar edi, 2
cmp eax, ecx
jne 0x40fc93
sub eax, edx
sar eax, 2
cmp eax, 0x3ffffffe
ja 0x40fe29
sub ecx, edx
inc eax
sar ecx, 2
cmp eax, ecx
jbe 0x40fc93
mov edx, ecx
shr edx, 1
mov esi, 0x3fffffff
sub esi, edx
cmp esi, ecx
jae 0x40fc7f
xor ecx, ecx
jmp 0x40fc81
add ecx, edx
cmp ecx, eax
jae 0x40fc87
mov ecx, eax
mov esi, dword [ebp - 0x284]
push ecx
call fcn.00412af0
mov eax, dword [esi + 4]
mov edx, dword [esi]
lea ecx, [edx + edi*4]
test eax, eax
je 0x40fcf8
mov ecx, dword [ecx]
mov dword [eax], ecx
jmp 0x40fcf8
mov ecx, dword [esi + 8]
cmp eax, ecx
jne 0x40fce9
mov edx, dword [esi]
sub eax, edx
sar eax, 2
cmp eax, 0x3ffffffe
ja 0x40fe29
sub ecx, edx
inc eax
sar ecx, 2
cmp eax, ecx
jbe 0x40fce9
mov edx, ecx
shr edx, 1
mov edi, 0x3fffffff
sub edi, edx
cmp edi, ecx
jae 0x40fcdb
xor ecx, ecx
jmp 0x40fcdd
add ecx, edx
cmp ecx, eax
jae 0x40fce3
mov ecx, eax
push ecx
call fcn.00412af0
mov eax, dword [esi + 4]
test eax, eax
je 0x40fcf8
mov edx, dword [ebp - 0x27c]
mov dword [eax], edx
add dword [esi + 4], 4
mov eax, dword [ebp - 0x280]
add eax, 4
mov dword [ebp - 0x280], eax
cmp eax, dword [ebp - 0x2a8]
jne 0x40fc10
mov esi, dword [ebp - 0x2cc]
xor edi, edi
mov ecx, dword [ebp - 0x284]
mov edx, dword [ecx + 4]
sub edx, dword [ecx]
mov eax, dword [ebp - 0x2d0]
mov eax, dword [eax + 0x560]
sar edx, 2
cmp edx, eax
jb 0x40fe33
cmp dword [ebp - 0x27c], edi
je 0x40fd65
mov esi, dword [ebp - 0x27c]
call fcn.004108c0
mov eax, esi
push eax
call fcn.0041afda
mov esi, dword [ebp - 0x2cc]
add esp, 4
cmp dword [ebp - 0x2ac], edi
je 0x40fd7c
mov ecx, dword [ebp - 0x2ac]
push ecx
call fcn.0041afda
add esp, 4
cmp ebx, edi
je 0x40fdca
mov esi, ebx
cmp ebx, dword [ebp - 0x2ec]
je 0x40fdbb
lea ebx, [ebx]
cmp dword [esi + 0x14], 8
jb 0x40fda1
mov edx, dword [esi]
push edx
call fcn.0041afda
add esp, 4
xor eax, eax
mov dword [esi + 0x14], 7
mov dword [esi + 0x10], edi
mov word [esi], ax
add esi, 0x1c
cmp esi, dword [ebp - 0x2ec]
jne 0x40fd90
push ebx
call fcn.0041afda
mov esi, dword [ebp - 0x2cc]
add esp, 4
cmp esi, edi
je 0x40fe16
mov esi, dword [ebp - 0x2cc]
mov ebx, dword [ebp - 0x2c8]
cmp esi, ebx
je 0x40fe07
mov edi, edi
cmp dword [esi + 0x14], 8
jb 0x40fdf1
mov ecx, dword [esi]
push ecx
call fcn.0041afda
add esp, 4
xor edx, edx
mov dword [esi + 0x14], 7
mov dword [esi + 0x10], edi
mov word [esi], dx
add esi, 0x1c
cmp esi, ebx
jne 0x40fde0
mov eax, dword [ebp - 0x2cc]
push eax
call fcn.0041afda
add esp, 4
cmp dword [ebp + 0x20], 8
jb 0x41088f
mov ecx, dword [ebp + 0xc]
push ecx
jmp 0x410887
push str.vector_T__too_long
call fcn.004264b3
xor ecx, ecx
xor edx, edx
mov dword [ebp - 0x2bc], ecx
mov dword [ebp - 0x2b8], edx
mov dword [ebp - 0x2b4], ecx
xor esi, esi
xor ebx, ebx
mov dword [ebp - 0x2e0], esi
mov dword [ebp - 0x2dc], ebx
mov dword [ebp - 0x2d8], ecx
mov byte [ebp - 4], 7
mov eax, dword [ebp - 0x2ac]
mov dword [ebp - 0x280], eax
cmp eax, dword [ebp - 0x2a8]
je 0x4100d5
jmp 0x40fe80
mov eax, dword [ebp - 0x280]
mov eax, dword [eax]
cmp dword [eax + 0x8c], 1
mov dword [ebp - 0x27c], eax
jne 0x40ffa8
lea ecx, [ebp - 0x27c]
cmp ecx, edx
mov ecx, dword [ebp - 0x2bc]
jae 0x40ff32
lea eax, [ebp - 0x27c]
cmp ecx, eax
ja 0x40ff32
mov edi, eax
sub edi, ecx
sar edi, 2
cmp edx, dword [ebp - 0x2b4]
jne 0x40ff21
mov eax, edx
sub eax, ecx
sar eax, 2
cmp eax, 0x3ffffffe
ja 0x40fe29
mov ecx, dword [ebp - 0x2b4]
sub ecx, dword [ebp - 0x2bc]
inc eax
sar ecx, 2
cmp eax, ecx
jbe 0x40ff1b
mov edx, ecx
shr edx, 1
mov esi, 0x3fffffff
sub esi, edx
cmp esi, ecx
jae 0x40ff01
xor ecx, ecx
jmp 0x40ff03
add ecx, edx
cmp ecx, eax
jae 0x40ff09
mov ecx, eax
push ecx
lea esi, [ebp - 0x2bc]
call fcn.00412af0
mov edx, dword [ebp - 0x2b8]
mov esi, dword [ebp - 0x2e0]
test edx, edx
je 0x40ff9f
mov ecx, dword [ebp - 0x2bc]
mov eax, dword [ecx + edi*4]
mov dword [edx], eax
jmp 0x40ff9f
cmp edx, dword [ebp - 0x2b4]
jne 0x40ff93
mov eax, edx
sub eax, ecx
sar eax, 2
cmp eax, 0x3ffffffe
ja 0x40fe29
mov ecx, dword [ebp - 0x2b4]
sub ecx, dword [ebp - 0x2bc]
inc eax
sar ecx, 2
cmp eax, ecx
jbe 0x40ff93
mov edx, ecx
shr edx, 1
mov esi, 0x3fffffff
sub esi, edx
cmp esi, ecx
jae 0x40ff73
xor ecx, ecx
jmp 0x40ff75
add ecx, edx
cmp ecx, eax
jae 0x40ff7b
mov ecx, eax
push ecx
lea esi, [ebp - 0x2bc]
call fcn.00412af0
mov esi, dword [ebp - 0x2e0]
mov edx, dword [ebp - 0x2b8]
test edx, edx
je 0x40ff9f
mov ecx, dword [ebp - 0x27c]
mov dword [edx], ecx
add edx, 4
mov dword [ebp - 0x2b8], edx
mov eax, dword [ebp - 0x27c]
cmp dword [eax + 0x8c], 2
jne 0x4100b8
lea ecx, [ebp - 0x27c]
cmp ecx, ebx
jae 0x410040
mov eax, ecx
cmp esi, eax
ja 0x410040
mov edi, ecx
sub edi, esi
sar edi, 2
cmp ebx, dword [ebp - 0x2d8]
jne 0x410035
mov eax, ebx
sub eax, esi
sar eax, 2
cmp eax, 0x3ffffffe
ja 0x40fe29
mov ecx, dword [ebp - 0x2d8]
sub ecx, esi
inc eax
sar ecx, 2
cmp eax, ecx
jbe 0x410035
mov edx, ecx
shr edx, 1
mov esi, 0x3fffffff
sub esi, edx
cmp esi, ecx
jae 0x41000f
xor ecx, ecx
jmp 0x410011
add ecx, edx
cmp ecx, eax
jae 0x410017
mov ecx, eax
push ecx
lea esi, [ebp - 0x2e0]
call fcn.00412af0
mov ebx, dword [ebp - 0x2dc]
mov esi, dword [ebp - 0x2e0]
mov edx, dword [ebp - 0x2b8]
test ebx, ebx
je 0x4100af
mov ecx, dword [esi + edi*4]
mov dword [ebx], ecx
jmp 0x4100af
cmp ebx, dword [ebp - 0x2d8]
jne 0x4100a3
mov eax, ebx
sub eax, esi
sar eax, 2
cmp eax, 0x3ffffffe
ja 0x40fe29
mov ecx, dword [ebp - 0x2d8]
sub ecx, esi
inc eax
sar ecx, 2
cmp eax, ecx
jbe 0x4100a3
mov edx, ecx
shr edx, 1
mov esi, 0x3fffffff
sub esi, edx
cmp esi, ecx
jae 0x41007d
xor ecx, ecx
jmp 0x41007f
add ecx, edx
cmp ecx, eax
jae 0x410085
mov ecx, eax
push ecx
lea esi, [ebp - 0x2e0]
call fcn.00412af0
mov ebx, dword [ebp - 0x2dc]
mov esi, dword [ebp - 0x2e0]
mov edx, dword [ebp - 0x2b8]
test ebx, ebx
je 0x4100af
mov eax, dword [ebp - 0x27c]
mov dword [ebx], eax
add ebx, 4
mov dword [ebp - 0x2dc], ebx
mov eax, dword [ebp - 0x280]
add eax, 4
mov dword [ebp - 0x280], eax
cmp eax, dword [ebp - 0x2a8]
jne 0x40fe80
xor ecx, ecx
sub edx, dword [ebp - 0x2bc]
sub ebx, esi
sar edx, 2
sar ebx, 2
mov dword [ebp - 0x298], edx
add edx, ebx
mov dword [ebp - 0x280], ecx
mov dword [ebp - 0x29c], edx
cmp edx, ecx
jbe 0x410640
mov ecx, dword [ebp - 0x2d0]
mov eax, dword [ecx + 0x560]
mov ecx, dword [ebp - 0x284]
mov edx, dword [ecx + 4]
sub edx, dword [ecx]
sar edx, 2
cmp edx, eax
jae 0x410640
mov eax, dword [ebp - 0x280]
mov ecx, dword [ebp - 0x298]
cmp eax, ecx
jae 0x410142
mov ecx, dword [ebp - 0x2bc]
mov ebx, dword [ecx + eax*4]
mov dword [ebp - 0x27c], ebx
jmp 0x41015b
mov edx, dword [ebp - 0x2e0]
sub eax, ecx
mov ebx, dword [edx + eax*4]
mov dword [ebp - 0x27c], ebx
test ebx, ebx
je 0x410640
mov esi, dword [ebx + 0x10]
mov eax, esi
cmp eax, esi
jae 0x410164
mov edx, esi
cmp esi, 5
jb 0x410170
mov edx, 5
cmp dword [ebx + 0x14], 8
jb 0x41017a
mov ecx, dword [ebx]
jmp 0x41017c
mov ecx, ebx
mov eax, 0x450d9c
test edx, edx
je 0x4101a0
mov di, word [ecx]
cmp di, word [eax]
jne 0x410198
add ecx, 2
add eax, 2
dec edx
jne 0x410185
jmp 0x4101a0
sbb eax, eax
and eax, 0xfffffffe
inc eax
jne 0x4101b2
cmp esi, 5
jae 0x4101aa
or eax, 0xffffffff
jmp 0x4101b2
xor eax, eax
cmp esi, 5
setne al
test eax, eax
sete al
test al, al
je 0x410279
xor edx, edx
mov edi, 7
push 0x20
mov eax, str.C:Program_Files_anote_anote.exe
lea esi, [ebp - 0x2c]
mov dword [ebp - 0x18], edi
mov dword [ebp - 0x1c], 0
mov word [ebp - 0x2c], dx
call fcn.00404070
mov byte [ebp - 4], 8
xor eax, eax
mov word [ebp - 0x48], ax
push 0x26
mov eax, str.C:Program_Files__x86__anote_anote.exe
lea esi, [ebp - 0x48]
mov dword [ebp - 0x34], edi
mov dword [ebp - 0x38], 0
call fcn.00404070
mov byte [ebp - 4], 9
mov eax, dword [ebp - 0x2c]
mov esi, 8
cmp dword [ebp - 0x18], esi
jae 0x41021a
lea eax, [ebp - 0x2c]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x41032c
mov eax, dword [ebp - 0x48]
cmp dword [ebp - 0x34], esi
jae 0x410234
lea eax, [ebp - 0x48]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x41032c
cmp dword [ebp - 0x34], esi
jb 0x410254
mov ecx, dword [ebp - 0x48]
push ecx
call fcn.0041afda
add esp, 4
xor edx, edx
mov byte [ebp - 4], 7
mov dword [ebp - 0x34], edi
mov dword [ebp - 0x38], 0
mov word [ebp - 0x48], dx
cmp dword [ebp - 0x18], esi
jb 0x410279
mov eax, dword [ebp - 0x2c]
push eax
call fcn.0041afda
add esp, 4
mov eax, dword [ebx + 0x10]
push 0x450e40
mov edi, 7
mov ecx, ebx
call fcn.004074c0
test eax, eax
jne 0x41045d
push 0x114
push eax
lea edx, [ebp - 0x278]
push edx
call fcn.004212c0
add esp, 0xc
lea eax, [ebp - 0x278]
push eax
mov dword [ebp - 0x278], 0x114
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
mov esi, dword [ebp - 0x284]
mov eax, dword [esi + 4]
lea ecx, [ebp - 0x27c]
cmp ecx, eax
jae 0x4105d0
mov edx, dword [esi]
cmp edx, ecx
ja 0x4105d0
mov edi, ecx
mov ecx, dword [esi + 8]
sub edi, edx
sar edi, 2
cmp eax, ecx
jne 0x4105c0
sub eax, edx
sar eax, 2
cmp eax, 0x3ffffffe
ja 0x40fe29
sub ecx, edx
inc eax
sar ecx, 2
cmp eax, ecx
jbe 0x4105c0
mov edx, ecx
shr edx, 1
mov esi, 0x3fffffff
sub esi, edx
cmp esi, ecx
jae 0x4105ac
xor ecx, ecx
jmp 0x4105ae
mov esi, dword [ebp - 0x290]
mov edx, dword [ebp - 0x294]
lea ecx, [ebp - 0x27c]
cmp ecx, esi
jae 0x4103b3
mov eax, ecx
cmp edx, eax
ja 0x4103b3
mov edi, ecx
mov ecx, dword [ebp - 0x28c]
sub edi, edx
sar edi, 2
cmp esi, ecx
jne 0x4103a8
mov eax, esi
sub eax, edx
sar eax, 2
cmp eax, 0x3ffffffe
ja 0x40fe29
sub ecx, edx
inc eax
sar ecx, 2
cmp eax, ecx
jbe 0x4103a8
mov edx, ecx
shr edx, 1
mov esi, 0x3fffffff
sub esi, edx
cmp esi, ecx
jae 0x410388
xor ecx, ecx
jmp 0x41038a
add ecx, edx
cmp ecx, eax
jae 0x410390
mov ecx, eax
push ecx
lea esi, [ebp - 0x294]
call fcn.00412af0
mov esi, dword [ebp - 0x290]
mov edx, dword [ebp - 0x294]
test esi, esi
je 0x41040c
mov ecx, dword [edx + edi*4]
mov dword [esi], ecx
jmp 0x41040c
mov ecx, dword [ebp - 0x28c]
cmp esi, ecx
jne 0x410406
mov eax, esi
sub eax, edx
sar eax, 2
cmp eax, 0x3ffffffe
ja 0x40fe29
sub ecx, edx
inc eax
sar ecx, 2
cmp eax, ecx
jbe 0x410406
mov edx, ecx
shr edx, 1
mov esi, 0x3fffffff
sub esi, edx
cmp esi, ecx
jae 0x4103ec
xor ecx, ecx
jmp 0x4103ee
add ecx, edx
cmp ecx, eax
jae 0x4103f4
mov ecx, eax
push ecx
lea esi, [ebp - 0x294]
call fcn.00412af0
mov esi, dword [ebp - 0x290]
test esi, esi
je 0x41040c
mov dword [esi], ebx
add esi, 4
mov dword [ebp - 0x290], esi
mov esi, 8
cmp dword [ebp - 0x34], esi
jb 0x41042b
mov edx, dword [ebp - 0x48]
push edx
call fcn.0041afda
add esp, 4
xor eax, eax
mov byte [ebp - 4], 7
mov dword [ebp - 0x34], 7
mov dword [ebp - 0x38], 0
mov word [ebp - 0x48], ax
cmp dword [ebp - 0x18], esi
jb 0x410627
mov ecx, dword [ebp - 0x2c]
push ecx
call fcn.0041afda
add esp, 4
jmp 0x410627
mov eax, dword [ebx + 0x10]
push 0x450e50
mov edi, 9
mov ecx, ebx
call fcn.004074c0
test eax, eax
jne 0x41054e
push 0x114
push eax
lea ecx, [ebp - 0x160]
push ecx
call fcn.004212c0
add esp, 0xc
lea edx, [ebp - 0x160]
push edx
mov dword [ebp - 0x160], 0x114
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
mov eax, dword [ebp - 0x15c]
push eax
call fcn.0040b7e0
add esp, 4
test eax, eax
je 0x4102c1
mov eax, dword [ebp - 0x290]
lea ecx, [ebp - 0x27c]
cmp ecx, eax
jae 0x410521
mov edx, ecx
cmp dword [ebp - 0x294], edx
ja 0x410521
mov eax, dword [ebp - 0x290]
lea esi, [ebp - 0x27c]
sub esi, dword [ebp - 0x294]
sar esi, 2
cmp eax, dword [ebp - 0x28c]
jne 0x410504
lea eax, [ebp - 0x294]
call fcn.00412a00
mov eax, dword [ebp - 0x290]
test eax, eax
je 0x410540
mov ecx, dword [ebp - 0x294]
mov edx, dword [ecx + esi*4]
mov dword [eax], edx
add eax, 4
mov dword [ebp - 0x290], eax
jmp 0x410627
cmp eax, dword [ebp - 0x28c]
jne 0x41053a
lea eax, [ebp - 0x294]
call fcn.00412a00
mov eax, dword [ebp - 0x290]
test eax, eax
je 0x410540
mov dword [eax], ebx
add eax, 4
mov dword [ebp - 0x290], eax
jmp 0x410627
sub esp, 0x1c
mov ecx, esp
xor edx, edx
mov dword [ebp - 0x2f4], esp
lea eax, [ebx + 0x70]
push edx
push eax
mov dword [ecx + 0x14], 7
mov dword [ecx + 0x10], 0
or eax, 0xffffffff
mov word [ecx], dx
call fcn.00403f70
call fcn.0040f3c0
add esp, 0x1c
test eax, eax
je 0x4102c1
mov eax, dword [ebp - 0x290]
lea ecx, [ebp - 0x27c]
cmp ecx, eax
jae 0x410521
mov edx, ecx
cmp dword [ebp - 0x294], edx
jbe 0x4104d6
jmp 0x410521
add ecx, edx
cmp ecx, eax
jae 0x4105b4
mov ecx, eax
mov esi, dword [ebp - 0x284]
push ecx
call fcn.00412af0
mov eax, dword [esi + 4]
test eax, eax
je 0x410623
mov edx, dword [esi]
mov ecx, dword [edx + edi*4]
mov dword [eax], ecx
jmp 0x410623
mov ecx, dword [esi + 8]
cmp eax, ecx
jne 0x41061a
mov edx, dword [esi]
sub eax, edx
sar eax, 2
cmp eax, 0x3ffffffe
ja 0x40fe29
sub ecx, edx
inc eax
sar ecx, 2
cmp eax, ecx
jbe 0x41061a
mov edx, ecx
shr edx, 1
mov esi, 0x3fffffff
sub esi, edx
cmp esi, ecx
jae 0x410606
xor ecx, ecx
jmp 0x410608
add ecx, edx
cmp ecx, eax
jae 0x41060e
mov ecx, eax
mov esi, dword [ebp - 0x284]
push ecx
call fcn.00412af0
mov eax, dword [esi + 4]
test eax, eax
je 0x410623
mov dword [eax], ebx
add dword [esi + 4], 4
mov eax, dword [ebp - 0x280]
inc eax
mov dword [ebp - 0x280], eax
cmp eax, dword [ebp - 0x29c]
jb 0x4100ff
mov eax, dword [ebp - 0x290]
mov ecx, dword [ebp - 0x294]
sub eax, ecx
sar eax, 2
mov dword [ebp - 0x298], 0
mov dword [ebp - 0x29c], eax
test eax, eax
je 0x410785
mov ebx, dword [ebp - 0x284]
mov edi, ecx
mov dword [ebp - 0x280], edi
jmp 0x410686
mov edi, dword [ebp - 0x280]
mov esi, dword [ebx + 4]
mov edx, dword [ebx]
mov eax, dword [ebp - 0x2d0]
mov ecx, esi
sub ecx, edx
sar ecx, 2
cmp ecx, dword [eax + 0x560]
jae 0x410785
cmp edi, esi
jae 0x41070d
cmp edx, edi
ja 0x41070d
mov edi, dword [ebp - 0x280]
mov ebx, dword [ebp - 0x284]
mov eax, dword [ebx + 8]
sub edi, edx
sar edi, 2
cmp esi, eax
jne 0x4106fd
cmp ecx, 0x3ffffffe
ja 0x40fe29
sub eax, edx
inc ecx
sar eax, 2
cmp ecx, eax
jbe 0x4106fd
mov edx, eax
shr edx, 1
mov esi, 0x3fffffff
sub esi, edx
cmp esi, eax
jae 0x4106ed
xor eax, eax
jmp 0x4106ef
add eax, edx
cmp eax, ecx
jae 0x4106f5
mov eax, ecx
push eax
mov esi, ebx
call fcn.00412af0
mov eax, dword [ebx + 4]
test eax, eax
je 0x41075e
mov ecx, dword [ebx]
mov edx, dword [ecx + edi*4]
mov dword [eax], edx
jmp 0x41075e
mov ebx, dword [ebp - 0x284]
mov eax, dword [ebx + 8]
cmp esi, eax
jne 0x410753
cmp ecx, 0x3ffffffe
ja 0x40fe29
sub eax, edx
inc ecx
sar eax, 2
cmp ecx, eax
jbe 0x410753
mov edx, eax
shr edx, 1
mov esi, 0x3fffffff
sub esi, edx
cmp esi, eax
jae 0x410743
xor eax, eax
jmp 0x410745
add eax, edx
cmp eax, ecx
jae 0x41074b
mov eax, ecx
push eax
mov esi, ebx
call fcn.00412af0
mov eax, dword [ebx + 4]
test eax, eax
je 0x41075e
mov ecx, dword [edi]
mov dword [eax], ecx
mov eax, dword [ebp - 0x298]
mov ecx, 4
add dword [ebx + 4], ecx
add dword [ebp - 0x280], ecx
inc eax
mov dword [ebp - 0x298], eax
cmp eax, dword [ebp - 0x29c]
jb 0x410680
mov eax, dword [ebp - 0x2e0]
test eax, eax
je 0x410798
push eax
call fcn.0041afda
add esp, 4
mov eax, dword [ebp - 0x2bc]
test eax, eax
je 0x4107ab
push eax
call fcn.0041afda
add esp, 4
mov eax, dword [ebp - 0x2ac]
test eax, eax
je 0x4107be
push eax
call fcn.0041afda
add esp, 4
cmp dword [ebp - 0x2f0], 0
je 0x410816
mov esi, dword [ebp - 0x2f0]
mov edi, dword [ebp - 0x2ec]
cmp esi, edi
je 0x410807
mov ebx, 7
lea esp, [esp]
cmp dword [esi + 0x14], 8
jb 0x4107f1
mov edx, dword [esi]
push edx
call fcn.0041afda
add esp, 4
xor eax, eax
mov dword [esi + 0x14], ebx
mov dword [esi + 0x10], 0
mov word [esi], ax
add esi, 0x1c
cmp esi, edi
jne 0x4107e0
mov ecx, dword [ebp - 0x2f0]
push ecx
call fcn.0041afda
add esp, 4
cmp dword [ebp - 0x2cc], 0
je 0x41086a
mov esi, dword [ebp - 0x2cc]
mov edi, dword [ebp - 0x2c8]
cmp esi, edi
je 0x41085b
mov ebx, 7
cmp dword [esi + 0x14], 8
jb 0x410845
mov edx, dword [esi]
push edx
call fcn.0041afda
add esp, 4
xor eax, eax
mov dword [esi + 0x14], ebx
mov dword [esi + 0x10], 0
mov word [esi], ax
add esi, 0x1c
cmp esi, edi
jne 0x410834
mov ecx, dword [ebp - 0x2cc]
push ecx
call fcn.0041afda
add esp, 4
mov eax, dword [ebp - 0x294]
test eax, eax
je 0x41087d
push eax
call fcn.0041afda
add esp, 4
cmp dword [ebp + 0x20], 8
jb 0x41088f
mov edx, dword [ebp + 0xc]
push edx
call fcn.0041afda
add esp, 4
mov eax, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0041af7a
mov esp, ebp
pop ebp
ret 0x20