Function at 0x6f4040
Capabilities:
Check os version

Disassembly:
push ecx
pushfd
clc
mov ecx, dword [0x1560894]
sbb ecx, dword [0x66d4c0]
popfd
xchg dword [esp], ecx
jmp 0x6f4047
push 0xffffffffffffffff
jmp 0x407dd5
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x98
push ebx
mov ebx, dword [esp + 0xb8]
push ebp
push esi
push edi
mov edi, dword [esp + 0xb8]
mov esi, ecx
sub esp, 0xc
mov eax, ebx
mov edx, dword [eax]
mov ecx, esp
mov dword [ecx], edx
mov edx, dword [eax + 4]
mov eax, dword [eax + 8]
mov dword [ecx + 4], edx
mov dword [ecx + 8], eax
lea ecx, [esp + 0x48]
push ecx
mov ecx, edi
call fcn.00542ce0
mov edx, dword [esp + 0xc0]
push ebx
push edx
lea eax, [esp + 0x28]
push eax
call fcn.0059c730
fld dword [eax + 8]
mov ecx, dword [esp + 0xc8]
fadd dword [ecx + 8]
add esp, 0xc
fld dword [eax + 4]
fadd dword [ecx + 4]
fstp dword [esp + 0x10]
fld dword [eax]
mov al, byte [esi + 8]
test al, 0x20
fadd dword [ecx]
fstp dword [esp + 0x20]
fsubr dword [esp + 0x44]
fld dword [esp + 0x40]
fsub dword [esp + 0x10]
fld dword [esp + 0x3c]
fsub dword [esp + 0x20]
fstp dword [esp + 0x30]
fstp dword [esp + 0x34]
fld dword [0xb7cb5c]
je 0x6f40f8
fmul dword [0x87149c]
jmp 0x6f40fe
fmul dword [0x863984]
mov eax, dword [edi + 0x14]
fadd st(1)
push eax
lea ecx, [esp + 0x64]
fstp dword [esp + 0x3c]
fstp st(0)
call fcn.0059bcf0
lea ecx, [esp + 0x60]
push ecx
lea edx, [esp + 0x34]
push edx
lea eax, [esp + 0x28]
push eax
mov dword [esp + 0xbc], 0
call fcn.0059c810
mov ecx, dword [eax]
mov dword [esp + 0x3c], ecx
mov edx, dword [eax + 4]
mov dword [esp + 0x40], edx
mov eax, dword [eax + 8]
mov dword [esp + 0x44], eax
mov al, byte [esi + 8]
and al, 0xf
movzx eax, al
add esp, 0xc
cmp eax, 5
mov dword [esp + 0x14], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x1c], 0
ja case.default.0x6f416e
jmp dword [eax*4 + 0x6f4524]
mov dword [esp + 0x14], 0x3f800000
jmp case.default.0x6f416e
mov dword [esp + 0x14], 0xbf800000
jmp case.default.0x6f416e
mov dword [esp + 0x18], 0x3f800000
jmp case.default.0x6f416e
mov dword [esp + 0x18], 0xbf800000
jmp case.default.0x6f416e
mov dword [esp + 0x1c], 0x3f800000
jmp case.default.0x6f416e
mov dword [esp + 0x1c], 0xbf800000
fld dword [esi + 0xc]
movzx eax, byte [esi + 0xa]
sub eax, 0
fsin
fstp dword [esp + 0x10]
fld dword [esi + 0xc]
fcos
fstp dword [esp + 0x2c]
je 0x6f4237
sub eax, 2
jne 0x6f429c
fld dword [esp + 0x2c]
mov ecx, dword [esp + 0x1c]
fmul dword [esp + 0x18]
mov dword [esp + 0x28], ecx
fld dword [esp + 0x10]
mov dword [esp + 0x1c], ecx
fmul dword [esp + 0x14]
lea ecx, [esp + 0x54]
faddp st(1)
fld dword [esp + 0x2c]
fmul dword [esp + 0x14]
fld dword [esp + 0x10]
fmul dword [esp + 0x18]
fsubp st(1)
fstp dword [esp + 0x20]
mov edx, dword [esp + 0x20]
mov dword [esp + 0x14], edx
fstp dword [esp + 0x24]
mov eax, dword [esp + 0x24]
lea edx, [esp + 0x14]
mov dword [esp + 0x18], eax
push edx
lea eax, [esp + 0x34]
push eax
push ecx
call fcn.0059c730
fld dword [eax + 8]
add esp, 0xc
jmp 0x6f42a0
fld dword [esp + 0x2c]
mov edx, dword [esp + 0x14]
fmul dword [esp + 0x1c]
mov eax, edx
fld dword [esp + 0x10]
mov dword [esp + 0x20], edx
fmul dword [esp + 0x18]
mov dword [esp + 0x14], eax
lea eax, [esp + 0x14]
push eax
faddp st(1)
fld dword [esp + 0x30]
fmul dword [esp + 0x1c]
fld dword [esp + 0x14]
fmul dword [esp + 0x20]
fsubp st(1)
fstp dword [esp + 0x28]
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x1c], ecx
fstp dword [esp + 0x2c]
mov edx, dword [esp + 0x2c]
lea ecx, [esp + 0x34]
mov dword [esp + 0x20], edx
push ecx
lea edx, [esp + 0x50]
push edx
call fcn.0059c730
fld dword [eax]
add esp, 0xc
jmp 0x6f42a0
fld dword [esp + 0x10]
xor ebx, ebx
mov bx, word [esi + 8]
mov ebp, ebx
and ebp, 0x40
test bp, bp
je 0x6f4356
mov al, byte [0xb6f065]
test al, al
jne 0x6f434e
mov eax, dword [edi + 0x590]
test eax, eax
jne 0x6f42d5
mov al, byte [edi + 0x960]
test al, al
je 0x6f434e
fld dword [0x872328]
fmul st(1)
fadd dword [esi + 0x14]
fstp dword [esi + 0x14]
fstp st(0)
test bp, bp
je 0x6f4388
mov eax, dword [0x87231c]
mov dword [esp + 0x10], eax
mov al, byte [0xb6f065]
test al, al
jne 0x6f4314
mov eax, dword [edi + 0x590]
test eax, eax
jne 0x6f431e
mov al, byte [edi + 0x960]
test al, al
jne 0x6f431e
mov ecx, dword [0x872320]
mov dword [esp + 0x10], ecx
fld dword [esp + 0x10]
fld dword [0xb7cb5c]
call fcn.00822130
fmul dword [esi + 0x14]
fst dword [esi + 0x14]
fld dword [0xb7cb5c]
fmul dword [esi + 0xc]
fmul dword [0x872324]
fsubr st(1)
fstp dword [esi + 0x14]
fstp st(0)
jmp 0x6f43de
fld dword [0x87232c]
jmp 0x6f42db
fld st(0)
fabs
fcomp dword [0x872304]
fnstsw ax
test ah, 0x41
je 0x6f437d
fld dword [esi + 0x14]
fabs
fcomp dword [0x872304]
fnstsw ax
test ah, 0x41
jne 0x6f42e3
fadd dword [esi + 0x14]
fstp dword [esi + 0x14]
jmp 0x6f42e5
cmp dword [edi + 0x590], 5
jne 0x6f4399
fld dword [0x872310]
jmp 0x6f43d8
cmp word [edi + 0x22], 0x220
jne 0x6f43c5
fld dword [0x872314]
fmul dword [esi + 0x14]
fst dword [esi + 0x14]
fld dword [0xb7cb5c]
fmul dword [esi + 0xc]
fmul dword [0x872338]
fsubr st(1)
fstp dword [esi + 0x14]
fstp st(0)
jmp 0x6f43de
test bl, 0x20
je 0x6f43d2
fld dword [0x872318]
jmp 0x6f43d8
fld dword [0x87230c]
fmul dword [esi + 0x14]
fstp dword [esi + 0x14]
test bp, bp
fld dword [0x8d3950]
je 0x6f43f3
fstp st(0)
fld dword [0x872330]
jmp 0x6f4400
test bh, 1
je 0x6f4400
fstp st(0)
fld dword [0x872334]
fcom dword [esi + 0x14]
fnstsw ax
test ah, 5
jp 0x6f440f
fstp dword [esi + 0x14]
jmp 0x6f4422
fchs
fcom dword [esi + 0x14]
fnstsw ax
test ah, 0x41
jne 0x6f4420
fstp dword [esi + 0x14]
jmp 0x6f4422
fstp st(0)
fld dword [esi + 0x14]
mov ecx, ebx
fadd dword [esi + 0xc]
and ecx, 0x80
test cx, cx
fst dword [esi + 0xc]
jne 0x6f443b
mov byte [esi + 0xb], cl
fld dword [esi]
fcomp dword [esi + 4]
fnstsw ax
fcom dword [esi]
test ah, 5
fnstsw ax
jnp 0x6f445f
test ah, 0x41
je 0x6f4464
fcomp dword [esi + 4]
fnstsw ax
test ah, 5
jnp 0x6f448c
jmp 0x6f44f3
test ah, 5
jp 0x6f4482
test cx, cx
fstp st(0)
fld dword [esi + 0x14]
mov edx, dword [esi]
fmul dword [0x858c9c]
mov dword [esi + 0xc], edx
fstp dword [esi + 0x14]
jne 0x6f44f3
mov byte [esi + 0xb], 1
jmp 0x6f44f3
fcomp dword [esi + 4]
fnstsw ax
test ah, 0x41
jne 0x6f44f3
test bl, 0x10
mov eax, dword [esi + 4]
mov dword [esi + 0xc], eax
je 0x6f44d1
test cx, cx
jne 0x6f44d1
fld dword [esi + 0x14]
fabs
fcomp dword [0x87233c]
fnstsw ax
test ah, 0x41
jne 0x6f44d1
lea ecx, [esp + 0x60]
mov dword [esi + 0x14], 0
mov byte [esi + 0xb], 4
mov dword [esp + 0xb0], 0xffffffff
call fcn.0059acd0
mov al, 1
jmp 0x6f4509
test bl, 0x20
fld dword [esi + 0x14]
je 0x6f44e1
fmul dword [0x858cac]
jmp 0x6f44e7
fmul dword [0x858f0c]
test cx, cx
fstp dword [esi + 0x14]
jne 0x6f44f3
mov byte [esi + 0xb], 2
lea ecx, [esp + 0x60]
mov dword [esp + 0xb0], 0xffffffff
call fcn.0059acd0
xor al, al
mov ecx, dword [esp + 0xa8]
pop edi
pop esi
pop ebp
mov dword fs:[0], ecx
pop ebx
add esp, 0xa4
ret 0x10