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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xe4
mov eax, dword [ebp + 8]
push ebx
push esi
push edi
mov edi, ecx
mov dword [esp + 0x10], edi
test eax, eax
je 0x407e43
mov esi, dword [ebp + 0xc]
cmp esi, 3
jl 0x407e43
mov ecx, esi
shl ecx, 4
lea edx, [ecx + eax - 0x10]
push edx
push eax
mov dword [esp + 0x1c], esi
call fcn.004026f0
fcomp qword [0x4592d0]
add esp, 8
fnstsw ax
test ah, 5
jp 0x4073ae
dec esi
cmp esi, 3
mov dword [esp + 0x14], esi
jl 0x407e43
push esi
mov ecx, edi
call fcn.00406710
push 0
push esi
lea ecx, [edi + 0x10]
call fcn.00406780
fldz
lea eax, [esi - 1]
xor ebx, ebx
test eax, eax
jle 0x4074c9
xor edi, edi
mov eax, dword [ebp + 8]
mov edx, dword [edi + eax + 0x10]
lea ecx, [edi + eax]
mov eax, dword [ecx + 0x14]
mov dword [esp + 0x1c], eax
mov eax, dword [ecx + 0x1c]
mov dword [esp + 0x18], edx
mov edx, dword [ecx + 0x18]
mov dword [esp + 0x24], eax
mov dword [esp + 0x20], edx
xor eax, eax
fld qword [esp + eax*8 + 0x18]
inc eax
fsub qword [ecx]
add ecx, 8
fstp qword [esp + eax*8 + 0x10]
cmp eax, 2
jb 0x4073f7
mov ecx, dword [esp + 0x10]
fld st(0)
mov eax, dword [ecx + 4]
mov edx, dword [esp + 0x18]
add eax, edi
mov dword [eax], edx
mov edx, dword [esp + 0x1c]
mov dword [eax + 4], edx
mov edx, dword [esp + 0x20]
mov dword [eax + 8], edx
mov edx, dword [esp + 0x24]
mov dword [eax + 0xc], edx
mov eax, dword [ecx + 4]
lea esi, [edi + eax]
xor eax, eax
fld qword [esi + eax*8]
inc eax
fmul st(0), st(0)
faddp st(1)
cmp eax, 2
jb 0x407438
fld st(1)
fucomp st(1)
fnstsw ax
test ah, 0x44
jnp 0x407481
fstp st(1)
call sub.MSVCR90.dll__CIsqrt
fld qword [0x4592d0]
fcomp st(1)
fnstsw ax
test ah, 5
jp 0x40747b
xor eax, eax
fld qword [esi + eax*8]
inc eax
fdiv st(1)
fstp qword [esi + eax*8 - 8]
cmp eax, 2
jb 0x407468
fstp st(0)
jmp 0x407488
fstp st(0)
fldz
jmp 0x407483
fstp st(0)
fst qword [esi]
fstp qword [esi + 8]
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx + 0x18]
mov dword [esp + 0x38], eax
xor eax, eax
push ebx
lea ecx, [esp + 0x3c]
mov dword [esp + 0x40], eax
call fcn.00401b50
fldz
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x38]
mov edx, 1
shl edx, cl
inc ebx
add edi, 0x10
not edx
and dword [eax], edx
mov eax, dword [esp + 0x14]
dec eax
cmp ebx, eax
jl 0x4073d2
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 4]
mov eax, dword [ecx]
mov dword [esp + 0x1c], edx
mov edx, dword [ecx + 0xc]
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x14]
mov dword [esp + 0x18], eax
mov eax, dword [ecx + 8]
dec edx
mov dword [esp + 0x20], eax
shl edx, 4
xor eax, eax
add ecx, edx
fld qword [esp + eax*8 + 0x18]
inc eax
fsub qword [ecx]
add ecx, 8
fstp qword [esp + eax*8 + 0x10]
cmp eax, 2
jb 0x4074f3
mov edi, dword [esp + 0x10]
fld st(0)
mov eax, dword [edi + 4]
mov ecx, dword [esp + 0x18]
add eax, edx
mov dword [eax], ecx
mov ecx, dword [esp + 0x1c]
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x20]
mov dword [eax + 8], ecx
mov ecx, dword [esp + 0x24]
mov dword [eax + 0xc], ecx
mov eax, dword [edi + 4]
lea esi, [edx + eax]
xor ebx, ebx
xor eax, eax
fld qword [esi + eax*8]
inc eax
fmul st(0), st(0)
faddp st(1)
cmp eax, 2
jb 0x407536
fld st(1)
fucomp st(1)
fnstsw ax
test ah, 0x44
jnp 0x40757f
fstp st(1)
call sub.MSVCR90.dll__CIsqrt
fld qword [0x4592d0]
fcomp st(1)
fnstsw ax
test ah, 5
jp 0x407579
xor eax, eax
fld qword [esi + eax*8]
inc eax
fdiv st(1)
fstp qword [esi + eax*8 - 8]
cmp eax, 2
jb 0x407566
fstp st(0)
jmp 0x407586
fstp st(0)
fldz
jmp 0x407581
fstp st(0)
fst qword [esi]
fstp qword [esi + 8]
mov eax, dword [edi + 0x18]
mov edi, dword [esp + 0x14]
xor ecx, ecx
mov dword [esp + 0x38], eax
lea eax, [edi - 1]
mov dword [esp + 0x3c], ecx
push eax
lea ecx, [esp + 0x3c]
call fcn.00401b50
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x38]
mov esi, dword [ebp + 8]
mov edx, 1
shl edx, cl
mov ecx, 1
mov dword [esp + 0x30], ebx
mov dword [esp + 0x28], ebx
not edx
and dword [eax], edx
fld qword [esi]
cmp edi, ecx
fld st(0)
fld qword [esi + 8]
mov dword [esp + 0x34], ebx
mov dword [esp + 0x2c], ebx
fld st(0)
jle 0x40763f
lea edx, [esi + 0x10]
fxch st(2)
fcom qword [edx]
fnstsw ax
test ah, 1
jne 0x4075f4
fstp st(0)
mov dword [esp + 0x28], ecx
fld qword [edx]
jmp 0x407609
fxch st(3)
fcom qword [edx]
fnstsw ax
test ah, 0x41
jp 0x407607
fstp st(0)
mov dword [esp + 0x30], ecx
fld qword [edx]
fxch st(3)
fxch st(2)
fcom qword [edx + 8]
fnstsw ax
test ah, 1
jne 0x407620
fstp st(0)
mov dword [esp + 0x2c], ecx
fld qword [edx + 8]
jmp 0x407637
fxch st(1)
fcom qword [edx + 8]
fnstsw ax
test ah, 0x41
jp 0x407635
fstp st(0)
mov dword [esp + 0x34], ecx
fld qword [edx + 8]
fxch st(1)
inc ecx
add edx, 0x10
cmp ecx, edi
jl 0x4075df
fxch st(2)
fcom qword [esi]
fnstsw ax
test ah, 1
jne 0x407654
fstp st(0)
mov dword [esp + 0x28], ebx
fld qword [esi]
jmp 0x407669
fxch st(3)
fcom qword [esi]
fnstsw ax
test ah, 0x41
jp 0x407667
fstp st(0)
mov dword [esp + 0x30], ebx
fld qword [esi]
fxch st(3)
fxch st(2)
fcom qword [esi + 8]
fnstsw ax
test ah, 1
jne 0x407680
fstp st(0)
mov dword [esp + 0x2c], ebx
fld qword [esi + 8]
jmp 0x407697
fxch st(1)
fcom qword [esi + 8]
fnstsw ax
test ah, 0x41
jp 0x407695
fstp st(0)
mov dword [esp + 0x34], ebx
fld qword [esi + 8]
fxch st(1)
mov eax, dword [ebp + 0x10]
fxch st(2)
fst qword [eax]
mov byte [esp + 0xf], 0
fxch st(2)
fst qword [eax + 8]
fld1
fst qword [eax + 0x10]
fldz
fst qword [eax + 0x18]
fxch st(5)
fsubrp st(4)
fxch st(3)
fstp qword [eax + 0x30]
fxch st(3)
fst qword [eax + 0x20]
fxch st(2)
fst qword [eax + 0x28]
fxch st(1)
fsubrp st(3)
fxch st(2)
fst qword [eax + 0x38]
fmul qword [eax + 0x30]
fstp qword [esp + 0xd8]
fld st(1)
fst qword [esp + 0x40]
fxch st(1)
fst qword [esp + 0x48]
fld st(0)
fst qword [esp + 0x18]
fxch st(3)
fst qword [esp + 0x20]
jmp 0x4076f6
fxch st(3)
fxch st(2)
mov ecx, dword [esp + 0x10]
fld st(1)
mov edx, dword [ecx + 4]
fld st(2)
mov ecx, dword [esp + 0x2c]
shl ecx, 4
xor edi, edi
xor eax, eax
add ecx, edx
mov dword [esp + 0x84], ecx
fld qword [esp + eax*8 + 0x40]
inc eax
fmul qword [ecx]
add ecx, 8
faddp st(1)
cmp eax, 2
jb 0x407715
fcom st(3)
fnstsw ax
test ah, 0x41
jne 0x407738
fstp st(1)
mov edi, 3
jmp 0x40773a
fstp st(0)
mov ecx, dword [esp + 0x30]
fld st(2)
shl ecx, 4
xor eax, eax
add ecx, edx
mov dword [esp + 0x38], ecx
fld qword [esp + eax*8 + 0x18]
inc eax
fmul qword [ecx]
add ecx, 8
faddp st(1)
cmp eax, 2
jb 0x40774b
fcom st(1)
fnstsw ax
test ah, 0x41
jne 0x40776e
fstp st(1)
mov edi, 2
jmp 0x407770
fstp st(0)
mov ecx, dword [esp + 0x34]
fld st(2)
xor eax, eax
shl ecx, 4
lea ebx, [ecx + edx]
mov ecx, ebx
fld qword [esp + eax*8 + 0x40]
inc eax
fmul qword [ecx]
add ecx, 8
faddp st(1)
cmp eax, 2
jb 0x407780
fchs
fcom st(1)
fnstsw ax
test ah, 0x41
jne 0x4077a5
fstp st(1)
mov edi, 4
jmp 0x4077a7
fstp st(0)
mov ecx, dword [esp + 0x28]
fld st(2)
xor eax, eax
shl ecx, 4
lea esi, [ecx + edx]
mov ecx, esi
fld qword [esp + eax*8 + 0x18]
inc eax
fmul qword [ecx]
add ecx, 8
faddp st(1)
cmp eax, 2
jb 0x4077b7
fchs
fcompp
fnstsw ax
test ah, 0x41
jne 0x4077da
mov edi, 1
jmp switch.0x004077e3
cmp edi, 4
ja case.default.0x4077e3
jmp dword [edi*4 + 0x407e50]
mov edx, dword [esp + 0x10]
mov esi, dword [esp + 0x2c]
mov eax, dword [edx + 0x18]
xor ecx, ecx
mov edx, eax
test esi, esi
je 0x407829
jge 0x40781c
mov ecx, esi
neg ecx
je 0x40781c
or ecx, 0xffffffff
sub ecx, esi
shr ecx, 5
add ecx, ecx
add ecx, ecx
mov edi, 0xfffffffc
sub edi, ecx
add edx, edi
jmp 0x407824
mov ecx, esi
shr ecx, 5
lea edx, [edx + ecx*4]
mov ecx, esi
and ecx, 0x1f
mov edi, 1
shl edi, cl
test dword [edx], edi
je 0x40783b
mov byte [esp + 0xf], 1
jmp case.default.0x4077e3
mov ecx, dword [esp + 0x84]
fstp st(3)
fstp st(2)
fstp st(0)
fld qword [ecx]
fst qword [esp + 0x40]
fld qword [ecx + 8]
xor ecx, ecx
fst qword [esp + 0x48]
fchs
fst qword [esp + 0x18]
fld st(1)
fst qword [esp + 0x20]
test esi, esi
je 0x407893
jge 0x407886
mov edx, esi
neg edx
je 0x407886
or ecx, 0xffffffff
sub ecx, esi
shr ecx, 5
add ecx, ecx
add ecx, ecx
mov edx, 0xfffffffc
sub edx, ecx
add eax, edx
jmp 0x40788e
mov ecx, esi
shr ecx, 5
lea eax, [eax + ecx*4]
mov ecx, esi
and ecx, 0x1f
mov edx, 1
shl edx, cl
inc esi
mov dword [esp + 0x2c], esi
or dword [eax], edx
cmp esi, dword [esp + 0x14]
jne 0x4078af
mov dword [esp + 0x2c], 0
fxch st(1)
fxch st(3)
fxch st(1)
mov eax, dword [esp + 0x30]
mov edx, dword [ebp + 8]
shl eax, 4
mov ecx, dword [eax + edx]
add eax, edx
mov dword [esp + 0x88], ecx
mov ecx, dword [eax + 4]
mov dword [esp + 0x8c], ecx
mov ecx, dword [eax + 8]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x90], ecx
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x94], eax
xor eax, eax
shl ecx, 4
lea edi, [ecx + edx]
mov ecx, edi
fld qword [esp + eax*8 + 0x88]
inc eax
fsub qword [ecx]
add ecx, 8
fstp qword [esp + eax*8 + 0x80]
cmp eax, 2
jb 0x4078f7
fld st(1)
xor eax, eax
fld qword [esp + eax + 0x88]
add eax, 8
fmul qword [esp + eax + 0x38]
faddp st(1)
cmp eax, 0x10
jb 0x407914
mov eax, dword [esp + 0x34]
mov esi, dword [esp + 0x2c]
shl eax, 4
lea ecx, [eax + edx]
mov eax, dword [ecx]
mov dword [esp + 0xb8], eax
mov eax, dword [ecx + 4]
mov dword [esp + 0xbc], eax
mov eax, dword [ecx + 8]
mov dword [esp + 0xc0], eax
mov eax, dword [ecx + 0xc]
mov dword [esp + 0xc4], eax
shl esi, 4
xor eax, eax
add esi, edx
mov edx, esi
fld qword [esp + eax*8 + 0xb8]
inc eax
fsub qword [edx]
add edx, 8
fstp qword [esp + eax*8 + 0xb0]
cmp eax, 2
jb 0x407967
fld st(2)
xor eax, eax
fld qword [esp + eax + 0xb8]
add eax, 8
fmul qword [esp + eax + 0x10]
faddp st(1)
cmp eax, 0x10
jb 0x407984
fld st(0)
fmul st(2)
fld qword [esp + 0xd8]
fcomp st(1)
fnstsw ax
test ah, 0x41
jne 0x407e1b
mov edx, dword [ebp + 0x10]
fstp qword [esp + 0xd8]
fxch st(4)
fst qword [edx + 0x10]
fld qword [esp + 0x48]
fstp qword [edx + 0x18]
fxch st(1)
fstp qword [edx + 0x30]
fxch st(4)
fst qword [edx + 0x20]
fxch st(1)
fst qword [edx + 0x28]
fxch st(3)
fst qword [edx + 0x38]
mov eax, dword [ecx]
mov dword [esp + 0x50], eax
mov eax, dword [ecx + 4]
mov dword [esp + 0x54], eax
mov eax, dword [ecx + 8]
mov ecx, dword [ecx + 0xc]
mov dword [esp + 0x58], eax
mov dword [esp + 0x5c], ecx
xor eax, eax
mov ecx, esi
fld qword [ecx]
inc eax
fadd qword [esp + eax*8 + 0x48]
add ecx, 8
fstp qword [esp + eax*8 + 0x48]
cmp eax, 2
jb 0x4079fa
mov eax, dword [esp + 0x50]
fld qword [0x4593d0]
mov ecx, dword [esp + 0x54]
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x58]
mov dword [esp + 0x64], ecx
mov ecx, dword [esp + 0x5c]
mov dword [esp + 0x68], eax
mov dword [esp + 0x6c], ecx
xor eax, eax
fld qword [esp + eax*8 + 0x60]
inc eax
fmul st(1)
fstp qword [esp + eax*8 + 0x58]
cmp eax, 2
jb 0x407a35
mov eax, dword [esp + 0x60]
mov ecx, dword [esp + 0x64]
mov dword [esp + 0x98], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0x9c], ecx
mov ecx, dword [esp + 0x6c]
mov dword [esp + 0xa0], eax
mov dword [esp + 0xa4], ecx
xor eax, eax
mov ecx, edi
fld qword [esp + eax*8 + 0x98]
inc eax
fsub qword [ecx]
add ecx, 8
fstp qword [esp + eax*8 + 0x90]
cmp eax, 2
jb 0x407a75
fld st(3)
xor eax, eax
lea ecx, [edx + 0x20]
fld qword [esp + eax*8 + 0x98]
inc eax
fmul qword [ecx]
add ecx, 8
faddp st(1)
cmp eax, 2
jb 0x407a95
mov eax, dword [edx + 0x20]
fxch st(2)
mov ecx, dword [edx + 0x24]
fmulp st(1)
mov dword [esp + 0xa8], eax
mov eax, dword [edx + 0x28]
mov dword [esp + 0xac], ecx
fsubp st(1)
mov ecx, dword [edx + 0x2c]
mov dword [esp + 0xb0], eax
mov dword [esp + 0xb4], ecx
xor eax, eax
fld qword [esp + eax*8 + 0xa8]
inc eax
fmul st(1)
fstp qword [esp + eax*8 + 0xa0]
cmp eax, 2
jb 0x407ad9
mov eax, dword [edi]
fstp st(0)
mov ecx, dword [edi + 4]
mov dword [esp + 0x70], eax
mov eax, dword [edi + 8]
mov dword [esp + 0x74], ecx
mov ecx, dword [edi + 0xc]
mov dword [esp + 0x78], eax
mov dword [esp + 0x7c], ecx
xor eax, eax
fld qword [esp + eax + 0xa8]
add eax, 8
fadd qword [esp + eax + 0x68]
fstp qword [esp + eax + 0x68]
cmp eax, 0x10
jb 0x407b0e
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x74]
mov dword [edx], eax
mov eax, dword [esp + 0x78]
mov dword [edx + 4], ecx
mov ecx, dword [esp + 0x7c]
mov dword [edx + 8], eax
mov dword [edx + 0xc], ecx
jmp 0x407e25
mov eax, dword [esp + 0x10]
mov esi, dword [esp + 0x30]
mov eax, dword [eax + 0x18]
xor ecx, ecx
mov edx, eax
test esi, esi
je 0x407b84
jge 0x407b77
mov ecx, esi
neg ecx
je 0x407b77
or ecx, 0xffffffff
sub ecx, esi
shr ecx, 5
add ecx, ecx
add ecx, ecx
mov edi, 0xfffffffc
sub edi, ecx
add edx, edi
jmp 0x407b7f
mov ecx, esi
shr ecx, 5
lea edx, [edx + ecx*4]
mov ecx, esi
and ecx, 0x1f
mov edi, 1
shl edi, cl
test dword [edx], edi
je 0x407b99
mov byte [esp + 0xf], 1
jmp case.default.0x4077e3
mov ecx, dword [esp + 0x38]
fstp st(3)
fstp st(2)
fstp st(0)
fld qword [ecx]
fst qword [esp + 0x18]
fld qword [ecx + 8]
xor ecx, ecx
fst qword [esp + 0x20]
fld st(0)
fst qword [esp + 0x40]
fld st(2)
fchs
fstp qword [esp + 0x48]
test esi, esi
je 0x407bf0
jge 0x407be3
mov edx, esi
neg edx
je 0x407be3
or ecx, 0xffffffff
sub ecx, esi
shr ecx, 5
add ecx, ecx
add ecx, ecx
mov edx, 0xfffffffc
sub edx, ecx
add eax, edx
jmp 0x407beb
mov ecx, esi
shr ecx, 5
lea eax, [eax + ecx*4]
mov ecx, esi
and ecx, 0x1f
mov edx, 1
shl edx, cl
inc esi
mov dword [esp + 0x30], esi
or dword [eax], edx
cmp esi, dword [esp + 0x14]
jne 0x407c0c
mov dword [esp + 0x30], 0
fxch st(2)
jmp 0x4078b1
mov eax, dword [esp + 0x10]
mov esi, dword [esp + 0x34]
mov eax, dword [eax + 0x18]
xor ecx, ecx
mov edx, eax
test esi, esi
je 0x407c52
jge 0x407c45
mov ecx, esi
neg ecx
je 0x407c45
or ecx, 0xffffffff
sub ecx, esi
shr ecx, 5
add ecx, ecx
add ecx, ecx
mov edi, 0xfffffffc
sub edi, ecx
add edx, edi
jmp 0x407c4d
mov ecx, esi
shr ecx, 5
lea edx, [edx + ecx*4]
mov ecx, esi
and ecx, 0x1f
mov edi, 1
shl edi, cl
test dword [edx], edi
je 0x407c67
mov byte [esp + 0xf], 1
jmp case.default.0x4077e3
fstp st(3)
xor ecx, ecx
fstp st(2)
fstp st(0)
fld qword [ebx]
fstp qword [esp + 0xc8]
fld qword [ebx + 8]
fstp qword [esp + 0xd0]
fld qword [esp + ecx*8 + 0xc8]
inc ecx
fchs
fstp qword [esp + ecx*8 + 0xc0]
cmp ecx, 2
jb 0x407c82
fld qword [esp + 0xc8]
xor ecx, ecx
fld st(0)
fst qword [esp + 0x40]
fld qword [esp + 0xd0]
fst qword [esp + 0x48]
fchs
fst qword [esp + 0x18]
fxch st(2)
fst qword [esp + 0x20]
test esi, esi
je 0x407cee
jge 0x407ce1
mov edx, esi
neg edx
je 0x407ce1
or ecx, 0xffffffff
sub ecx, esi
shr ecx, 5
add ecx, ecx
add ecx, ecx
mov edx, 0xfffffffc
sub edx, ecx
add eax, edx
jmp 0x407ce9
mov ecx, esi
shr ecx, 5
lea eax, [eax + ecx*4]
mov ecx, esi
and ecx, 0x1f
mov edx, 1
shl edx, cl
inc esi
mov dword [esp + 0x34], esi
or dword [eax], edx
cmp esi, dword [esp + 0x14]
jne 0x407d0a
mov dword [esp + 0x34], 0
fxch st(2)
fxch st(3)
fxch st(1)
fxch st(2)
jmp case.default.0x4077e3
mov eax, dword [esp + 0x10]
mov edi, dword [esp + 0x28]
mov eax, dword [eax + 0x18]
xor ecx, ecx
mov edx, eax
test edi, edi
je 0x407d56
jge 0x407d49
mov ecx, edi
neg ecx
je 0x407d49
or ecx, 0xffffffff
sub ecx, edi
shr ecx, 5
add ecx, ecx
add ecx, ecx
mov ebx, 0xfffffffc
sub ebx, ecx
add edx, ebx
jmp 0x407d51
mov ecx, edi
shr ecx, 5
lea edx, [edx + ecx*4]
mov ecx, edi
and ecx, 0x1f
mov ebx, 1
shl ebx, cl
test dword [edx], ebx
je 0x407d6b
mov byte [esp + 0xf], 1
jmp case.default.0x4077e3
fstp st(3)
xor ecx, ecx
fstp st(2)
fstp st(0)
fld qword [esi]
fstp qword [esp + 0xe0]
fld qword [esi + 8]
fstp qword [esp + 0xe8]
fld qword [esp + ecx*8 + 0xe0]
inc ecx
fchs
fstp qword [esp + ecx*8 + 0xd8]
cmp ecx, 2
jb 0x407d86
fld qword [esp + 0xe0]
xor ecx, ecx
fld st(0)
fst qword [esp + 0x18]
fld qword [esp + 0xe8]
fld st(0)
fst qword [esp + 0x20]
fxch st(1)
fst qword [esp + 0x40]
fxch st(3)
fchs
fstp qword [esp + 0x48]
test edi, edi
je 0x407df6
jge 0x407de9
mov edx, edi
neg edx
je 0x407de9
or ecx, 0xffffffff
sub ecx, edi
shr ecx, 5
add ecx, ecx
add ecx, ecx
mov edx, 0xfffffffc
sub edx, ecx
add eax, edx
jmp 0x407df1
mov ecx, edi
shr ecx, 5
lea eax, [eax + ecx*4]
mov ecx, edi
and ecx, 0x1f
mov edx, 1
shl edx, cl
inc edi
mov dword [esp + 0x28], edi
or dword [eax], edx
cmp edi, dword [esp + 0x14]
jne 0x4078af
mov dword [esp + 0x28], 0
jmp 0x4078af
fstp st(0)
fstp st(0)
fstp st(0)
fxch st(2)
fxch st(3)
cmp byte [esp + 0xf], 0
je 0x4076f2
fstp st(1)
mov al, 1
fstp st(0)
fstp st(0)
fstp st(0)
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
pop edi
pop esi
xor al, al
pop ebx
mov esp, ebp
pop ebp
ret 0xc