tabACos dd -0.0,1.0,0.141592654,\     ; pi-3
    3.0,1.17123365,0.745630503,0.329797238,0.294789612,1.30136144,\
    0.930340230,0.0114133256,0.0189007167
@ACos:
    mov edx,tabACos			;xmm0=x
    vucomiss xmm0,[edx]             ; Set cf if x<0
    vorps xmm0,xmm0,[edx]           ; xmm0 = -|x|
    vmovups xmm3,[edx+16]           ; xmm3 = b2: b0 : a2 : a0
    vshufps xmm1,xmm0,xmm0,0        ; xmm1 = -|x| : -|x| : -|x| : -|x|
    vaddss xmm0,xmm0,[edx+4]        ; xmm0 = 1-|x|
    vfnmadd231ps xmm3,xmm1,[edx+32] ; xmm3 = b2+b3*|x|=q1 : a2+a3*|x|=p1 : b0+b1*|x|=q0 : a0+a1*|x|=p0
    vmulps xmm2,xmm1,xmm1           ; xmm2 = x^2 : x^2 : x^2 : x^2
    vmovhlps xmm1,xmm3,xmm3         ; xmm1 = b2+b3*|x|=q1 : a2+a3*|x|=p1
    vfmadd132ps xmm1,xmm3,xmm2      ; xmm1 = q0+q1*x^2=q : p0+p1*x^2=p
    vsqrtss xmm0,xmm0,xmm0          ; xmm0 = (1-|x|)^0.5
    vmovshdup xmm2,xmm1             ; xmm2 = q
    vdivss xmm1,xmm1,xmm2           ; xmm1 = p/q = f(t)
    jnc arccos_plus                 ; Goto if x>=0
    vfnmadd213ss xmm0,xmm1,[edx+8]  ; xmm0 = pi-3-(1+x)^0.5*p/q
    vaddss xmm0,xmm0,[edx+12]       ; xmm0 = pi-(1+x)^0.5*p/q
    ret
      arccos_plus:                  ; Case of x>=0
    vmulss xmm0,xmm0,xmm1           ; xmm0 = (1-x)^0.5*p/q
    ret