Function at 0x667e90
Capabilities:
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x34
push esi
mov esi, dword [0x91d3f0]
fld dword [esi + 0x10]
call fcn.0043bd30
test eax, eax
jg 0x667ea8
neg eax
mov dword [esp + 0x2c], eax
fild dword [esp + 0x2c]
fcomp dword [0x8d3718]
fnstsw ax
test ah, 5
jnp 0x668f26
mov eax, dword [esi + 0x1c]
mov ecx, dword [esi + 0x20]
mov edx, dword [esi + 0x24]
mov dword [esp + 0x1c], eax
mov eax, dword [esi + 0x10]
push ebx
mov dword [esp + 0x10], ecx
mov ecx, dword [esi + 0x14]
mov dword [esp + 0x38], edx
mov edx, dword [esi + 0x18]
mov dword [esp + 0x24], eax
mov eax, dword [esi + 0x58]
push ebp
push edi
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x3c], edx
mov dword [esp + 0x10], eax
mov ebx, 1
lea ebx, [ebx]
movzx eax, bx
mov ecx, 0x80
sub ecx, eax
mov dword [esp + 0x38], ecx
mov dword [esp + 0x34], eax
fild dword [esp + 0x38]
fild dword [esp + 0x34]
fld dword [esp + 0x2c]
fmul st(1)
fld st(2)
fmul dword [esp + 0x28]
faddp st(1)
fmul dword [0x87b7bc]
fstp dword [esp + 0x24]
fld dword [esp + 0x1c]
fmul st(1)
fld st(2)
fmul dword [esp + 0x18]
faddp st(1)
fmul dword [0x87b7bc]
fstp dword [esp + 0x14]
fmul dword [esp + 0x3c]
fxch st(1)
fmul dword [esp + 0x40]
faddp st(1)
fmul dword [0x87b7bc]
fstp dword [esp + 0x20]
fld dword [esp + 0x24]
call fcn.0043bd30
test eax, eax
jg 0x667f6f
neg eax
mov dword [esp + 0x38], eax
fild dword [esp + 0x38]
fld dword [esp + 0x20]
call fcn.0043bd30
test eax, eax
jg 0x667f86
neg eax
mov dword [esp + 0x38], eax
fild dword [esp + 0x38]
fst dword [esp + 0x30]
call fcn.0043bd30
mov ebp, eax
call fcn.0043bd30
push 0x3b7
push 0x3480
mov esi, eax
push ebp
push esi
call fcn.00644320
add esp, 0x10
test eax, eax
mov dword [esp + 0x38], eax
fild dword [esp + 0x38]
jge 0x667fc6
fadd dword [0x87079c]
fcomp dword [0x8d36e4]
fnstsw ax
test ah, 0x41
jp 0x668049
fld dword [esp + 0x14]
fcomp dword [0x8d3714]
fnstsw ax
test ah, 0x41
jne 0x668049
fld dword [esp + 0x14]
call fcn.0043bd30
test eax, eax
jg 0x667ff3
neg eax
mov dword [esp + 0x38], eax
fild dword [esp + 0x38]
fld dword [esp + 0x30]
fsub dword [0x8d3710]
fcompp
fnstsw ax
test ah, 0x41
jne 0x668049
mov edx, dword [0x91d3f0]
fld dword [esp + 0x24]
fstp dword [edx + 0x10]
mov eax, dword [0x91d3f0]
fld dword [esp + 0x14]
fstp dword [eax + 0x14]
mov ecx, dword [0x91d3f0]
fld dword [esp + 0x20]
fstp dword [ecx + 0x18]
fld dword [esp + 0x14]
fcomp dword [0x8d3714]
fnstsw ax
test ah, 0x41
je 0x668170
fld dword [esp + 0x14]
call fcn.0043bd30
push 0xfffffd80
mov edi, eax
push 0x3480
push edi
push esi
call fcn.00644320
mov dword [esp + 0x48], eax
fild dword [esp + 0x48]
add esp, 0x10
fcomp dword [0x8d36e4]
fnstsw ax
test ah, 0x41
jp 0x6680c0
mov edx, dword [0x91cfa4]
mov al, byte [edx + 0xe]
test al, al
jne 0x6680c0
fld dword [esp + 0x30]
fcomp dword [0x8d36f4]
fnstsw ax
test ah, 5
jp 0x6680c0
test edi, edi
jg 0x6680a1
neg edi
mov dword [esp + 0x38], edi
fild dword [esp + 0x38]
fld dword [esp + 0x30]
fsub dword [0x8d3710]
fcompp
fnstsw ax
test ah, 5
jnp 0x668650
push 0x2200
push 0x3480
push ebp
push esi
call fcn.00644320
add esp, 0x10
test eax, eax
mov dword [esp + 0x38], eax
fild dword [esp + 0x38]
jge 0x6680e6
fadd dword [0x87079c]
fcomp dword [0x871358]
fnstsw ax
test ah, 0x41
jp 0x668108
fld dword [esp + 0x14]
fcomp dword [0x8d2fd0]
fnstsw ax
test ah, 0x41
je 0x668b39
mov eax, dword [0x91d3f0]
mov cl, byte [eax + 0x6f]
test cl, cl
jne 0x66815c
push 0x458
push 0x3778
push ebp
push esi
call fcn.00644320
add esp, 0x10
test eax, eax
mov dword [esp + 0x38], eax
fild dword [esp + 0x38]
jge 0x66813a
fadd dword [0x87079c]
fcomp dword [0x8d36e4]
fnstsw ax
test ah, 0x41
jp 0x66815c
fld dword [esp + 0x14]
fcomp dword [0x8d370c]
fnstsw ax
test ah, 0x41
je 0x668d17
inc ebx
cmp bx, 0x80
jbe 0x667f00
pop edi
pop ebp
pop ebx
pop esi
add esp, 0x34
ret
mov ecx, dword [0x91d3f0]
fld dword [esp + 0x24]
fstp dword [ecx + 0x10]
mov edx, dword [0x91d3f0]
fld dword [esp + 0x14]
fstp dword [edx + 0x14]
mov eax, dword [0x91d3f0]
fld dword [esp + 0x20]
fstp dword [eax + 0x18]
mov esi, dword [0x91d3f0]
mov ecx, dword [esi + 0x2c]
mov dword [esp + 0x18], ecx
fld dword [esp + 0x18]
call fcn.0043bd30
test eax, eax
jg 0x6681b2
neg eax
cmp eax, 0x400
jge 0x6681c7
fld dword [esp + 0x18]
fadd dword [0x871358]
fstp dword [esp + 0x18]
fld dword [esi + 0x18]
xor edi, edi
mov di, word [esi + 0x60]
fcomp dword [0x879dc4]
add di, 0x8000
or ecx, 0xffffffff
mov dword [esp + 0x38], ecx
fnstsw ax
test ah, 5
mov dword [esp + 0x1c], edi
jnp 0x6681f5
mov dword [esp + 0x38], 1
fld dword [esi + 0x10]
mov dword [esp + 0x34], ecx
fcomp dword [0x879dc4]
fnstsw ax
test ah, 5
jnp 0x668211
mov dword [esp + 0x34], 1
mov edx, dword [esp + 0x20]
fild dword [esp + 0x38]
mov eax, dword [esp + 0x24]
push edx
fmul dword [0x8d2cd4]
push eax
sub esp, 8
fstp dword [esp + 4]
fild dword [esp + 0x44]
fmul dword [0x8cb938]
fstp dword [esp]
call fcn.006442f0
mov ecx, dword [esp + 0x20]
push ecx
mov esi, eax
mov edx, esi
sub edx, edi
push edx
mov dword [esp + 0x48], esi
call fcn.0063c810
add esp, 0x18
test eax, eax
jg 0x66825c
neg eax
cmp si, 0x4000
mov dword [esp + 0x20], eax
jbe 0x668275
cmp si, 0xc000
jae 0x668275
mov ebp, 0x8000
jmp 0x668277
xor ebp, ebp
mov eax, dword [esp + 0x20]
fld dword [esp + 0x18]
push eax
call fcn.0043bd30
push eax
call fcn.00506a00
mov ecx, dword [esp + 0x18]
mov esi, eax
lea edx, [esp + 0x34]
push edx
lea eax, [esp + 0x28]
add esi, 0x8000
mov dword [esp + 0x40], edi
push eax
lea edi, [esp + 0x38]
lea ebx, [esp + 0x40]
mov dword [esp + 0x38], ecx
mov dword [esp + 0x48], esi
mov dword [esp + 0x3c], 0
call fcn.00667a50
fild dword [esp + 0x30]
fld st(0)
fmulp st(1)
fld dword [esp + 0x28]
fmul dword [esp + 0x28]
faddp st(1)
fsqrt
call fcn.0043bd30
lea ecx, [esp + 0x3c]
push ecx
lea edx, [esp + 0x38]
neg esi
neg ebp
push edx
lea edi, [esp + 0x28]
lea ebx, [esp + 0x2c]
mov dword [esp + 0x28], eax
mov dword [esp + 0x3c], esi
mov dword [esp + 0x2c], ebp
call fcn.00667a50
mov esi, dword [0x91d3f0]
mov ebp, dword [esp + 0x48]
mov edi, dword [esp + 0x3c]
mov ebx, dword [esp + 0x2c]
push 4
push ebp
neg edi
neg ebx
add esi, 0x10
call fcn.0063c810
mov dword [esp + 0x60], eax
fild dword [esp + 0x60]
push 4
push ebp
fadd dword [esi]
fstp dword [esi]
mov esi, dword [0x91d3f0]
add esi, 0x18
call fcn.0063c7f0
mov dword [esp + 0x68], eax
fild dword [esp + 0x68]
mov eax, dword [esp + 0x38]
mov ecx, edi
push eax
fadd dword [esi]
neg ecx
push ecx
fstp dword [esi]
call fcn.0063c7f0
mov edx, dword [0x91d3f0]
mov dword [esp + 0x70], eax
fild dword [esp + 0x70]
add esp, 0x30
fstp dword [edx + 0x2c]
mov esi, dword [0x91d3f0]
fld dword [esi + 0x18]
call fcn.0043bd30
test eax, eax
jg 0x668383
neg eax
fld dword [esi + 0x10]
mov dword [esp + 0x30], eax
call fcn.0043bd30
test eax, eax
jg 0x668395
neg eax
mov ecx, dword [esp + 0x30]
push 0x3b7
push 0x3480
push ecx
push eax
call fcn.00644320
add esp, 0x10
test eax, eax
mov dword [esp + 0x40], eax
fild dword [esp + 0x40]
jge 0x6683bf
fadd dword [0x87079c]
fcomp dword [0x8d36e4]
fnstsw ax
test ah, 0x41
jp 0x668485
mov ecx, dword [0x91d3f0]
fld dword [ecx + 0x10]
mov dword [esp + 0x30], 0xffffffff
fcomp dword [0x879dc4]
fnstsw ax
test ah, 5
jnp 0x6683f6
mov dword [esp + 0x30], 1
xor edx, edx
mov dx, word [ecx + 0x60]
add dx, 0x8000
push 0x2c
push edx
call fcn.0063c810
mov dword [esp + 0x48], eax
fild dword [esp + 0x48]
mov eax, dword [0x91d3f0]
fild dword [esp + 0x38]
add esp, 8
mov dword [esp + 0x30], 0xffffffff
fmul dword [0x8cb938]
faddp st(1)
fstp dword [eax + 0x10]
mov ecx, dword [0x91d3f0]
fld dword [ecx + 0x18]
fcomp dword [0x879dc4]
fnstsw ax
test ah, 5
jnp 0x66844e
mov dword [esp + 0x30], 1
movzx ecx, word [ecx + 0x60]
fild dword [esp + 0x30]
add cx, 0x8000
push 0x2c
fmul dword [0x8d2cd4]
fstp dword [esp + 0x40]
push ecx
call fcn.0063c7f0
mov edx, dword [0x91d3f0]
mov dword [esp + 0x48], eax
fild dword [esp + 0x48]
add esp, 8
fsubr dword [esp + 0x3c]
fstp dword [edx + 0x18]
mov eax, dword [0x91d3f0]
mov esi, dword [esp + 0x1c]
mov word [eax + 0x60], si
call fcn.00667770
mov eax, dword [esp + 0x28]
mov ecx, eax
imul ecx, eax
mov eax, dword [esp + 0x10]
mov edx, eax
imul edx, eax
add ecx, edx
mov dword [esp + 0x40], ecx
fild dword [esp + 0x40]
fsqrt
call fcn.0043bd30
mov ecx, dword [0x91d3f0]
mov dword [ecx + 0x58], eax
movzx ecx, word [esp + 0x34]
mov edx, dword [0x91d3f0]
movzx eax, si
sub eax, ecx
test eax, eax
mov dword [edx + 0x7c], 0
mov dword [esp + 0x40], eax
jg 0x6684e4
neg eax
cmp ax, 0x2000
jbe 0x6685b5
mov ebx, dword [esp + 0x34]
mov esi, ebx
sub esi, ebp
add esi, 0x4000
push 0x68
push esi
call fcn.0063c810
add esp, 8
test eax, eax
jg 0x66850d
neg eax
push 0x68
push esi
mov edi, eax
call fcn.0063c7f0
add esp, 8
test eax, eax
jg 0x668520
neg eax
mov esi, dword [0x91d3f0]
lea edx, [eax + edi*2]
mov eax, edi
add eax, edx
imul eax, dword [esi + 0x58]
imul eax, eax, 0x19
cdq
and edx, 0x7fff
add eax, edx
mov ecx, eax
sar ecx, 0xf
mov eax, 0x51eb851f
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
cmp edx, 0x48
jle 0x66855d
mov edx, 0x48
mov eax, dword [esp + 0x40]
mov ecx, 0x60
sub ecx, edx
test eax, eax
mov word [esi + 0x72], cx
jg 0x668572
neg eax
cmp eax, 0x8000
mov eax, dword [esp + 0x1c]
jle 0x668588
add eax, 0x8000
add ebx, 0x8000
cmp ax, bx
jne 0x6685a1
mov edx, dword [0x91d3f0]
pop edi
pop ebp
pop ebx
mov word [edx + 0x72], 0x90
pop esi
add esp, 0x34
ret
mov ecx, dword [0x91d3f0]
pop edi
pop ebp
seta al
pop ebx
mov byte [ecx + 0x74], al
pop esi
add esp, 0x34
ret
mov esi, dword [esp + 0x38]
mov edx, dword [0x91d3f0]
fld dword [edx + 0x2c]
sub esi, ebx
add esi, 0x4000
call fcn.0043bd30
test eax, eax
jg 0x6685d5
neg eax
shr si, 1
mov ebx, eax
push ebx
push esi
call fcn.0063c810
add esp, 8
test eax, eax
jg 0x6685ea
neg eax
push ebx
push esi
mov ebp, eax
call fcn.0063c7f0
add esp, 8
test eax, eax
jg 0x6685fc
neg eax
add eax, ebp
cdq
and edx, 3
add eax, edx
sar eax, 2
cmp eax, 0x2800
jle 0x668613
mov eax, 0x2800
mov ecx, dword [esp + 0x20]
test ecx, ecx
jge 0x66861d
neg eax
movzx edx, word [esp + 0x38]
movzx ecx, di
sub ecx, edx
test ecx, ecx
mov edx, ecx
jg 0x66862f
neg edx
cmp edx, 0x8000
jle 0x668639
neg eax
test ecx, ecx
jl 0x66863f
neg eax
mov ecx, dword [0x91d3f0]
pop edi
pop ebp
pop ebx
mov dword [ecx + 0x7c], eax
pop esi
add esp, 0x34
ret
mov edx, dword [0x91d3f0]
fld dword [esp + 0x24]
fstp dword [edx + 0x10]
mov eax, dword [0x91d3f0]
fld dword [esp + 0x14]
xor esi, esi
fstp dword [eax + 0x14]
mov ecx, dword [0x91d3f0]
fld dword [esp + 0x20]
or ebp, 0xffffffff
fstp dword [ecx + 0x18]
mov ecx, dword [0x91d3f0]
mov si, word [ecx + 0x60]
fld dword [ecx + 0x10]
fcomp dword [0x879dc4]
mov edx, dword [ecx + 0x2c]
add si, 0x8000
mov dword [esp + 0x18], edx
mov dword [esp + 0x38], ebp
fnstsw ax
test ah, 5
mov dword [esp + 0x1c], esi
jnp 0x6686b1
mov dword [esp + 0x38], 1
fild dword [esp + 0x38]
fmul dword [0x8cb938]
fsubr dword [ecx + 0x10]
fcomp dword [0x879dc4]
fnstsw ax
test ah, 5
mov eax, ebp
jnp 0x6686d2
mov eax, 1
xor ecx, ecx
test eax, eax
setge cl
movzx eax, si
sub eax, 0x8000
dec ecx
and ecx, 0x8000
test eax, eax
mov dword [esp + 0x30], ecx
jg 0x6686f2
neg eax
mov edx, dword [esp + 0x10]
push edx
push eax
call fcn.0063c810
mov edi, eax
mov eax, dword [0x91d3f0]
fld dword [eax + 0x10]
add esp, 8
fcomp dword [0x879dc4]
mov dword [esp + 0x20], edi
mov dword [esp + 0x38], ebp
fnstsw ax
test ah, 5
jnp 0x668727
mov dword [esp + 0x38], 1
fild dword [esp + 0x38]
fmul dword [0x8cb938]
fsub dword [esp + 0x24]
call fcn.0043bd30
fld dword [0x8d3708]
fsub dword [esp + 0x14]
push eax
call fcn.0043bd30
push eax
call fcn.00506a00
fld dword [esp + 0x20]
add eax, 0x8000
add esp, 8
mov dword [esp + 0x14], eax
push edi
call fcn.0043bd30
push eax
call fcn.00506a00
mov ecx, dword [esp + 0x18]
add eax, 0x8000
add esp, 8
lea edx, [esp + 0x2c]
mov dword [esp + 0x24], eax
mov dword [esp + 0x34], eax
push edx
lea eax, [esp + 0x20]
push eax
lea edi, [esp + 0x30]
lea ebx, [esp + 0x38]
mov dword [esp + 0x40], esi
mov dword [esp + 0x30], ecx
mov dword [esp + 0x34], 0
call fcn.00667a50
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x24]
push ecx
push edx
call fcn.0063c7f0
fild dword [esp + 0x30]
mov esi, eax
neg esi
fld st(0)
fmulp st(1)
fld dword [esp + 0x28]
fmul dword [esp + 0x28]
faddp st(1)
fsqrt
call fcn.0043bd30
mov dword [esp + 0x20], eax
lea eax, [esp + 0x3c]
push eax
lea ecx, [esp + 0x38]
push ecx
lea edi, [esp + 0x28]
lea ebx, [esp + 0x2c]
call fcn.00667a50
mov edx, dword [esp + 0x28]
mov edi, dword [esp + 0x3c]
push edx
neg edi
push edi
call fcn.0063c810
mov ebx, dword [esp + 0x34]
mov ebp, dword [0x91d3f0]
neg ebx
push 4
push ebx
mov dword [esp + 0x48], eax
add ebp, 0x10
call fcn.0063c810
mov dword [esp + 0x68], eax
fild dword [esp + 0x68]
push 4
push ebx
fadd dword [ebp]
fstp dword [ebp]
mov ebp, dword [0x91d3f0]
add ebp, 0x14
call fcn.0063c7f0
mov dword [esp + 0x70], eax
fild dword [esp + 0x70]
mov eax, dword [esp + 0x40]
fadd dword [ebp]
add eax, 0x800
push eax
push edi
fstp dword [ebp]
call fcn.0063c7f0
mov ecx, dword [0x91d3f0]
mov edx, dword [esp + 0x58]
mov dword [esp + 0x78], eax
fild dword [esp + 0x78]
push edx
push esi
fstp dword [ecx + 0x2c]
mov eax, dword [0x91d3f0]
fld dword [eax + 0x2c]
fmul dword [0x873814]
fstp dword [eax + 0x2c]
call fcn.00506a00
mov ecx, dword [0x91d3f0]
add esp, 0x40
mov word [ecx + 0x60], ax
call fcn.00667770
mov edi, dword [0x91d3f0]
fld dword [edi + 0x10]
call fcn.0043bd30
test eax, eax
jg 0x6688aa
neg eax
fld dword [edi + 0x14]
push 0xfffffd80
mov ebx, eax
push 0x3480
call fcn.0043bd30
push eax
push ebx
call fcn.00644320
add esp, 0x10
test eax, eax
mov dword [esp + 0x40], eax
fild dword [esp + 0x40]
jge 0x6688da
fadd dword [0x87079c]
fcomp dword [0x8d36e4]
fnstsw ax
test ah, 0x41
jp 0x668911
mov edx, dword [esp + 0x24]
mov edi, dword [0x91d3f0]
push 0xc
push edx
add edi, 0x14
call fcn.0063c7f0
mov dword [esp + 0x48], eax
fild dword [esp + 0x48]
mov eax, dword [0x91d3f0]
add esp, 8
fsubr dword [edi]
fstp dword [eax + 0x14]
mov eax, dword [esp + 0x20]
mov edx, eax
mov ecx, esi
imul edx, eax
imul ecx, esi
add ecx, edx
mov dword [esp + 0x40], ecx
fild dword [esp + 0x40]
fsqrt
call fcn.0043bd30
movzx edx, word [esp + 0x34]
movzx ebx, word [esp + 0x24]
mov ecx, dword [0x91d3f0]
sub ebx, edx
test ebx, ebx
mov dword [ecx + 0x58], eax
mov esi, ebx
jg 0x66894d
neg esi
cmp si, 0x8000
jbe 0x668956
neg esi
cmp si, 0x1800
jbe 0x6689f6
mov edi, dword [0x91d3f0]
fld dword [edi + 0x2c]
call fcn.0043bd30
mov ecx, dword [edi + 0x58]
mov edx, eax
imul edx, eax
mov eax, ecx
imul eax, ecx
add edx, eax
mov dword [esp + 0x40], edx
fild dword [esp + 0x40]
fsqrt
call fcn.0043bd30
shr si, 1
mov edi, eax
push edi
push esi
call fcn.0063c810
add esp, 8
test eax, eax
jg 0x6689a2
neg eax
push edi
push esi
mov ebp, eax
call fcn.0063c7f0
add esp, 8
test eax, eax
jg 0x6689b4
neg eax
add eax, ebp
cdq
and edx, 3
add eax, edx
sar eax, 2
cmp eax, 0x2800
jle 0x6689cb
mov eax, 0x2800
mov ecx, dword [esp + 0x20]
test ecx, ecx
jge 0x6689d5
neg eax
test ebx, ebx
mov ecx, ebx
jg 0x6689dd
neg ecx
cmp ecx, 0x8000
jle 0x6689e7
neg eax
test ebx, ebx
jg 0x6689ed
neg eax
mov ecx, dword [0x91d3f0]
mov dword [ecx + 0x7c], eax
movzx eax, word [esp + 0x14]
add eax, 0x4000
cmp eax, 0x2000
jle 0x668a0e
cmp eax, 0x6000
jl 0x668a24
cmp eax, 0xa000
jle 0x668f23
cmp eax, 0xe000
jge 0x668f23
mov ebp, dword [esp + 0x38]
mov ecx, dword [esp + 0x1c]
movzx edx, bp
movzx eax, cx
sub eax, edx
test eax, eax
jg 0x668a3a
neg eax
cmp eax, 0x8000
jle 0x668a51
add ecx, 0x8000
mov dword [esp + 0x1c], ecx
add ebp, 0x8000
movzx eax, bp
movzx ebx, cx
sub ebx, eax
test ebx, ebx
mov eax, ebx
jg 0x668a61
neg eax
cmp ax, 0x4000
jbe 0x668f23
mov edx, dword [esp + 0x30]
mov esi, ebp
sub esi, edx
add esi, 0x4000
push 0x68
push esi
call fcn.0063c810
add esp, 8
test eax, eax
jg 0x668a8a
neg eax
push 0x68
push esi
mov edi, eax
call fcn.0063c7f0
add esp, 8
test eax, eax
jg 0x668a9d
neg eax
mov esi, dword [0x91d3f0]
lea ecx, [eax + edi*2]
mov eax, edi
add eax, ecx
imul eax, dword [esi + 0x58]
imul eax, eax, 0x19
cdq
and edx, 0x7fff
add eax, edx
mov ecx, eax
sar ecx, 0xf
mov eax, 0x51eb851f
imul ecx
sar edx, 5
mov ecx, edx
mov eax, edx
shr ecx, 0x1f
add eax, ecx
cdq
and edx, 3
add eax, edx
sar eax, 2
cmp eax, 0x48
jle 0x668ae5
mov eax, 0x48
mov edx, 0x60
sub edx, eax
test ebx, ebx
mov word [esi + 0x72], dx
jg 0x668af6
neg ebx
cmp ebx, 0x8000
mov eax, dword [esp + 0x1c]
jle 0x668b0d
add eax, 0x8000
add ebp, 0x8000
cmp ax, bp
jne 0x668b25
mov eax, dword [0x91d3f0]
pop edi
pop ebp
pop ebx
mov word [eax + 0x72], 0x90
pop esi
add esp, 0x34
ret
mov edx, dword [0x91d3f0]
pop edi
pop ebp
seta cl
pop ebx
mov byte [edx + 0x74], cl
pop esi
add esp, 0x34
ret
mov ecx, dword [0x91d3f0]
fld dword [ecx + 0x18]
or edx, 0xffffffff
fcomp dword [0x879dc4]
mov dword [esp + 0x38], edx
fnstsw ax
test ah, 5
jnp 0x668b5e
mov dword [esp + 0x38], 1
fld dword [ecx + 0x10]
mov dword [esp + 0x34], edx
fcomp dword [0x879dc4]
fnstsw ax
test ah, 5
jnp 0x668b7a
mov dword [esp + 0x34], 1
mov eax, dword [esp + 0x20]
fild dword [esp + 0x38]
mov ecx, dword [esp + 0x24]
push eax
fmul dword [0x8cb93c]
push ecx
sub esp, 8
fstp dword [esp + 4]
fild dword [esp + 0x44]
fmul dword [0x8cb938]
fstp dword [esp]
call fcn.006442f0
mov edx, dword [0x91d3f0]
fld dword [esp + 0x34]
fstp dword [edx + 0x10]
xor ebx, ebx
fld dword [esp + 0x24]
mov esi, eax
mov eax, dword [0x91d3f0]
fstp dword [eax + 0x14]
mov ecx, dword [0x91d3f0]
fld dword [esp + 0x30]
push esi
fstp dword [ecx + 0x18]
mov edx, dword [0x91d3f0]
mov bx, word [edx + 0x60]
add bx, 0x8000
push ebx
call fcn.006442d0
push 0x2000
mov di, ax
call fcn.0063c860
add edi, eax
add esp, 0x1c
cmp di, 0x4800
jbe 0x668c05
mov edi, 0x4800
push 0xb
call fcn.0063c860
mov ecx, eax
add ecx, 0xd
movzx eax, di
imul ecx, eax
mov eax, 0x66666667
imul ecx
mov eax, dword [0x91d3f0]
movzx eax, word [eax + 0x60]
sar edx, 2
mov ecx, edx
sub esi, eax
shr ecx, 0x1f
add esi, 0x8000
add esp, 4
add edx, ecx
cmp si, 0x8000
jbe 0x668c4a
add eax, 0x1000
jmp 0x668c4f
add eax, 0xfffff000
push edx
push ebx
push eax
call fcn.00643cb0
xor ecx, ecx
mov esi, eax
mov eax, dword [0x91d3f0]
mov cx, word [eax + 0x60]
fild dword [eax + 0x58]
push esi
lea edi, [eax + 0x58]
fstp dword [esp + 0x4c]
push ecx
call fcn.006442d0
movzx eax, ax
imul eax, dword [edi]
cdq
and edx, 0x7fff
add eax, edx
sar eax, 0xf
mov dword [esp + 0x54], eax
fild dword [esp + 0x54]
fmul dword [0x8d3704]
fsubr dword [esp + 0x50]
call fcn.0043bd30
mov dword [edi], eax
mov edx, dword [0x91d3f0]
mov word [edx + 0x60], si
mov eax, dword [0x91d3f0]
lea esi, [eax + 0x10]
movzx eax, word [eax + 0x60]
neg ax
push 3
push eax
call fcn.0063c810
mov dword [esp + 0x5c], eax
fild dword [esp + 0x5c]
xor ecx, ecx
push 3
fadd dword [esi]
fstp dword [esi]
mov eax, dword [0x91d3f0]
mov cx, word [eax + 0x60]
neg cx
lea esi, [eax + 0x18]
push ecx
call fcn.0063c7f0
mov edx, dword [0x91d3f0]
mov dword [esp + 0x64], eax
fild dword [esp + 0x64]
push 0xd
fsubr dword [esi]
fstp dword [edx + 0x18]
mov eax, dword [0x91cfa4]
mov byte [eax + 0x604], 2
call fcn.0062f4e0
add esp, 0x28
pop edi
pop ebp
pop ebx
pop esi
add esp, 0x34
ret
mov edx, dword [0x91d3f0]
fld dword [edx + 0x18]
fcomp dword [0x879dc4]
fnstsw ax
test ah, 5
jp 0x668d32
or ecx, 0xffffffff
jmp 0x668d37
mov ecx, 1
fld dword [edx + 0x10]
fcomp dword [0x879dc4]
fnstsw ax
test ah, 5
mov eax, 0xffffffff
jnp 0x668d51
mov eax, 1
mov edx, dword [esp + 0x20]
imul ecx, ecx, 0x458
imul eax, eax, 0x3778
push edx
mov edx, dword [esp + 0x28]
mov dword [esp + 0x44], ecx
push edx
sub esp, 8
fild dword [esp + 0x50]
mov dword [esp + 0x50], eax
fstp dword [esp + 4]
fild dword [esp + 0x50]
fstp dword [esp]
call fcn.006442f0
fld dword [esp + 0x34]
xor esi, esi
mov edi, eax
mov eax, dword [0x91d3f0]
fstp dword [eax + 0x10]
mov ecx, dword [0x91d3f0]
fld dword [esp + 0x24]
push edi
fstp dword [ecx + 0x14]
mov edx, dword [0x91d3f0]
fld dword [esp + 0x34]
fstp dword [edx + 0x18]
mov eax, dword [0x91d3f0]
mov si, word [eax + 0x60]
add si, 0x8000
push esi
call fcn.006442d0
push 0x1000
mov ebx, eax
call fcn.0063c860
lea ebx, [eax + ebx*2 + 0x1800]
add esp, 0x1c
cmp bx, 0x7000
jae 0x668e0a
push 4
call fcn.0063c860
mov ecx, eax
movzx edx, bx
add ecx, 0xe
imul ecx, edx
mov eax, 0x66666667
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add esp, 4
add edx, eax
mov ebx, edx
cmp bx, 0x5000
jbe 0x668e26
push 0x1800
call fcn.0063c860
mov ebx, eax
add esp, 4
add ebx, 0x5000
mov ebp, dword [0x91d3f0]
xor eax, eax
mov ax, word [ebp + 0x60]
sub edi, eax
add edi, 0x8000
cmp di, 0x8000
jbe 0x668e48
add eax, 0x1000
jmp 0x668e4d
add eax, 0xfffff000
mov ecx, eax
sub ecx, esi
mov dx, 0x8000
cmp dx, cx
movzx dx, bh
sbb cl, cl
inc cl
mov byte [ebp + 0x74], cl
push ebx
mov ecx, 0x90
push esi
sub ecx, edx
mov edx, dword [0x91d3f0]
push eax
mov word [edx + 0x72], cx
call fcn.00643cb0
mov esi, eax
mov eax, dword [0x91d3f0]
fild dword [eax + 0x58]
lea edi, [eax + 0x58]
movzx eax, word [eax + 0x60]
push esi
push eax
fstp dword [esp + 0x50]
call fcn.006442d0
movzx eax, ax
imul eax, dword [edi]
cdq
and edx, 0x7fff
add eax, edx
sar eax, 0xf
mov dword [esp + 0x54], eax
fild dword [esp + 0x54]
fmul dword [0x8d36e0]
fsubr dword [esp + 0x50]
call fcn.0043bd30
mov dword [edi], eax
mov ecx, dword [0x91d3f0]
mov word [ecx + 0x60], si
mov eax, dword [0x91d3f0]
xor edx, edx
mov dx, word [eax + 0x60]
push 4
lea esi, [eax + 0x10]
push edx
call fcn.0063c810
mov dword [esp + 0x5c], eax
fild dword [esp + 0x5c]
push 4
fadd dword [esi]
fstp dword [esi]
mov eax, dword [0x91d3f0]
lea esi, [eax + 0x18]
movzx eax, word [eax + 0x60]
push eax
call fcn.0063c7f0
mov dword [esp + 0x64], eax
push 0xd
fild dword [esp + 0x68]
fadd dword [esi]
fstp dword [esi]
call fcn.0062f4e0
mov ecx, dword [0x91d3f0]
mov byte [ecx + 0x6f], 2
add esp, 0x28
pop edi
pop ebp
pop ebx
pop esi
add esp, 0x34
ret