Function at 0x409280
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x463bc1
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x168
push ebx
push ebp
push esi
mov esi, ecx
xor ebp, ebp
push edi
mov ebx, dword [esi + 0xcc]
mov eax, dword [esi + 0xac]
imul ebx, ebx
cmp eax, ebp
jne 0x4092d2
lea eax, [ebx*8]
push eax
call fcn.00436ca8
add esp, 4
mov dword [esi + 0xac], eax
mov edi, dword [esi + 0xac]
cmp edi, ebp
jne 0x409300
push ebp
push ebp
push 0x47f200
call fcn.00442aa3
xor eax, eax
mov ecx, dword [esp + 0x178]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
shl ebx, 3
mov ecx, ebx
xor eax, eax
mov edx, ecx
mov dword [esp + 0x18], ebx
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
mov dword [esp + 0x28], ebp
and ecx, 3
rep stosb byte es:[edi], al
cmp dword [esi + 0xd4], ebp
jle 0x409406
mov dword [esp + 0x24], ebp
xor edi, edi
lea ebx, [esp + 0x40]
mov eax, dword [esi + 0x13c]
mov ecx, ebp
push edi
add ecx, eax
call fcn.0040f8e0
mov dword [ebx], eax
inc edi
add ebx, 4
cmp edi, 6
jl 0x409333
lea eax, [esp + 0x58]
mov ecx, ebp
push eax
mov eax, dword [esi + 0x13c]
add ecx, eax
call fcn.0040ec90
xor eax, eax
lea edx, [esp + 0x58]
lea ebx, [esp + 0x40]
cmp eax, 6
mov dword [esp + 0x10], eax
mov dword [esp + 0x2c], edx
mov dword [esp + 0x14], ebx
jge 0x4093c8
mov ecx, dword [ebx]
mov edi, 6
mov dword [esp + 0x20], ecx
sub edi, eax
mov ebp, dword [ebx]
mov ecx, dword [esp + 0x20]
mov eax, ebp
cmp eax, ecx
jge 0x40939a
mov eax, ecx
mov ecx, ebp
imul eax, dword [esi + 0xcc]
fld qword [edx]
add eax, ecx
mov ecx, dword [esi + 0xac]
add edx, 8
add ebx, 4
fadd qword [ecx + eax*8]
lea eax, [ecx + eax*8]
dec edi
fstp qword [eax]
jne 0x40938a
mov eax, dword [esp + 0x10]
mov ebp, dword [esp + 0x24]
mov ebx, dword [esp + 0x14]
mov edx, dword [esp + 0x2c]
inc eax
add ebx, 4
add edx, 0x38
cmp eax, 6
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], ebx
mov dword [esp + 0x2c], edx
jl 0x40937d
mov eax, dword [esp + 0x28]
mov ecx, dword [esi + 0xd4]
inc eax
add ebp, 0x38
cmp eax, ecx
mov dword [esp + 0x28], eax
mov dword [esp + 0x24], ebp
jl 0x40932d
mov ebx, dword [esp + 0x18]
mov eax, dword [esi + 0x70]
xor ebp, ebp
cmp eax, ebp
mov dword [esp + 0x10], ebp
jle 0x40948c
mov dword [esp + 0x14], 3
xor edi, edi
lea ebx, [ebp + 0xc]
mov edx, dword [esi + 0xc4]
mov eax, ebp
add eax, edx
push edi
mov ecx, dword [eax + 8]
call fcn.0041e030
mov ecx, dword [esi + 0xc4]
cmp dword [ebx + ecx], 3
jne 0x409461
mov edx, dword [esp + 0x14]
add edx, edi
fld qword [ecx + edx*8]
mov ecx, dword [esi + 0xcc]
mov edx, dword [esi + 0xac]
inc ecx
imul ecx, eax
fadd qword [edx + ecx*8]
fstp qword [edx + ecx*8]
lea eax, [edx + ecx*8]
inc edi
add ebx, 4
cmp edi, 3
jl 0x409420
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
mov ecx, dword [esi + 0x70]
inc eax
add ebp, 0x30
add edx, 6
cmp eax, ecx
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], edx
jl 0x40941b
mov ebx, dword [esp + 0x18]
lea eax, [esi + 0xa0]
push 0x47f10c
lea ecx, [esp + 0x24]
push eax
push ecx
call fcn.0043696b
push 0x47f108
lea edx, [esp + 0x20]
push eax
push edx
mov dword [esp + 0x18c], 0
call fcn.0043696b
lea ecx, [esp + 0x20]
mov byte [esp + 0x180], 2
call fcn.00436722
mov eax, dword [esp + 0x1c]
push 0
push eax
lea ecx, [esp + 0x38]
call fcn.00436d31
mov ecx, dword [esi + 0xcc]
mov edx, dword [esi + 0x38]
mov byte [esp + 0x180], 3
mov eax, dword [edx + ecx*4 - 4]
mov edx, dword [esi + 0x3c]
lea ecx, [eax*8 + 8]
push ecx
push edx
lea ecx, [esp + 0x38]
call fcn.00436fab
lea ecx, [esp + 0x30]
call fcn.004370a9
mov eax, dword [esi + 0xa8]
test eax, eax
jne 0x40952a
push ebx
call fcn.00436ca8
add esp, 4
mov dword [esi + 0xa8], eax
mov edi, dword [esi + 0xa8]
test edi, edi
jne 0x40957d
push edi
push edi
push 0x47f200
call fcn.00442aa3
lea ecx, [esp + 0x30]
mov byte [esp + 0x180], 2
call fcn.00436dd1
lea ecx, [esp + 0x1c]
mov dword [esp + 0x180], 0xffffffff
call fcn.00436722
xor eax, eax
mov ecx, dword [esp + 0x178]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, ebx
xor eax, eax
mov edx, ecx
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
xor edx, edx
and ecx, 3
mov dword [esp + 0x10], edx
rep stosb byte es:[edi], al
mov eax, dword [esi + 0xcc]
test eax, eax
jle 0x409612
mov edi, dword [esi + 0x30]
cmp edx, edi
jle 0x4095ac
mov ecx, edx
sub ecx, edi
jmp 0x4095ae
xor ecx, ecx
add edi, edx
dec eax
cmp edi, eax
jg 0x4095b7
mov eax, edi
cmp ecx, eax
mov dword [esp + 0x18], eax
jg 0x409603
mov eax, dword [esi + 0x38]
cmp ecx, edx
jle 0x4095cf
mov eax, dword [eax + edx*4]
sub eax, edx
add eax, ecx
jmp 0x4095d6
mov eax, dword [eax + ecx*4]
sub eax, ecx
add eax, edx
imul edx, dword [esi + 0xcc]
mov edi, dword [esi + 0x3c]
mov ebx, dword [esi + 0xa8]
add edx, ecx
inc ecx
mov ebp, dword [edi + eax*8]
mov dword [ebx + edx*8], ebp
mov eax, dword [edi + eax*8 + 4]
mov dword [ebx + edx*8 + 4], eax
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x10]
cmp ecx, eax
jle 0x4095bf
mov eax, dword [esi + 0xcc]
inc edx
cmp edx, eax
mov dword [esp + 0x10], edx
jl 0x40959f
lea ecx, [esp + 0x30]
mov byte [esp + 0x180], 2
call fcn.00436dd1
lea ecx, [esp + 0x1c]
mov dword [esp + 0x180], 0xffffffff
call fcn.00436722
mov ecx, dword [esp + 0x178]
pop edi
mov eax, 1
mov dword fs:[0], ecx
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret