Do you know what those data correspond and extract aglorithme, seem difficult ^^:
;=============================================================================================================
; float sin[4], cos[4] sincosps (float angle_radians[4])
; Calcule les fonctions sin et cos des 4 angles contenu dans angle_radians[4].
; Entrée : angle_radians[4] xmm7
; Sortie: sin[4] xmm0 et cos[4] xmm6
; Destroyed: xmm0 - xmm1 - xmm2 - xmm3
; xmm4 - xmm5 - xmm6 - xmm7
; DATA:
_ps_am_inv_sign_mask dd 0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF
_ps_am_sign_mask dd -0.0, -0.0, -0.0, -0.0
_ps_am_2_o_pi dd 0.63661977, 0.63661977, 0.63661977, 0.63661977 ; 2/PI
_ps_am_1 dd 1.0, 1.0, 1.0, 1.0
_epi32_1 dd 1.0, 1.0, 1.0, 1.0
_epi32_2 dd 2.0, 2.0, 2.0, 2.0
_ps_sincos_p3 dd -0.00468175, -0.00468175, -0.00468175, -0.00468175
_ps_sincos_p2 dd 0.07969262, 0.07969262, 0.07969262, 0.07969262
_ps_sincos_p1 dd -0.64596409, -0.64596409, -0.64596409, -0.64596409
_ps_sincos_p0 dd 1.57079632, 1.57079632, 1.57079632, 1.57079632 ; PI/2
;=============================================================================================================
sincosps:
vmovups xmm0, [sincosps_angle_rad] ;;; xmm0 = angle
vmovaps xmm7, xmm0 ;;; xmm7 = angle
vandps xmm0, xmm0, [_ps_am_inv_sign_mask] ;;; xmm0 = abs(angle)
vandps xmm7, xmm7, [_ps_am_sign_mask] ;;; xmm7 = neg(angle)
vmulps xmm0, xmm0, [_ps_am_2_o_pi] ;;; xmm0 = (2*angle)/PI
vpxor xmm3, xmm3, xmm3 ;;; xmm3 = 0
vmovups xmm5, [_epi32_1] ;;; xmm5 = 1
vcvttps2dq xmm2, xmm0 ;;; xmm2 = (int)(0.63661977 * angle)
vpand xmm5, xmm5, xmm2 ;;; xmm5 = 1 AND xmm2
vpcmpeqd xmm5, xmm5, xmm3 ;;; xmm5 = if(xmm5 == xmm3)
;;; xmm5 = 0xFFFFFFFF;
;;; else
;;; xmm5 = 0;
vmovups xmm3, [_epi32_1] ;;; xmm3 = 1
vcvtdq2ps xmm6, xmm2 ;;; xmm6 = (float)xmm2
vpaddd xmm3, xmm3, xmm2 ;;; xmm3 = 1 + (int)(0.63661977 * angle)
vpand xmm2, xmm2, [_epi32_2] ;;; xmm2 = xmm2 AND 2
vpand xmm3, xmm3, [_epi32_2] ;;; xmm3 = xmm3 AND 2
vsubps xmm0, xmm0, xmm6 ;;; xmm0 = xmm0 - xmm6
vpslld xmm2, xmm2, 30 ;;; xmm2 = xmm2 * 1073741824
vminps xmm0, xmm0, [_ps_am_1] ;;; xmm0 = min(xmm0, 1)
vmovups xmm4, [_ps_am_1] ;;; xmm4 = 1
vsubps xmm4, xmm4, xmm0 ;;; xmm4 = 1 - xmm0
vpslld xmm3, xmm3, 30 ;;; xmm3 = xmm3 * 1073741824
vmovaps xmm6, xmm4 ;;; xmm6 = xmm4
vxorps xmm2, xmm2, xmm7 ;;; xmm2 = xmm2 XOR -angle
vmovaps xmm7, xmm5 ;;; xmm7 = xmm5
vandps xmm6, xmm6, xmm7 ;;; xmm6 = xmm6 AND xmm7
vandnps xmm7, xmm7, xmm0 ;;; xmm7 = xmm7 NAND xmm0
vandps xmm0, xmm0, xmm5 ;;; xmm0 = xmm0 AND xmm5
vandnps xmm5, xmm5, xmm4 ;;; xmm5 = xmm5 NAND xmm4
vorps xmm6, xmm6, xmm7 ;;; xmm6 = xmm6 OR xmm7
vorps xmm0, xmm0, xmm5 ;;; xmm0 = xmm0 OR xmm5
vmovaps xmm1, xmm0 ;;; xmm1 = xmm0
vmovaps xmm7, xmm6 ;;; xmm7 = xmm6
vmulps xmm0, xmm0, xmm0 ;;; xmm0 = xmm0 * xmm0
vmulps xmm6, xmm6, xmm6 ;;; xmm6 = xmm6 * xmm6
vorps xmm1, xmm1, xmm2 ;;; xmm1 = xmm1 OR xmm2
vorps xmm7, xmm7, xmm3 ;;; xmm7 = xmm7 OR xmm3
vmovaps xmm2, xmm0 ;;; xmm2 = xmm0
vmovaps xmm3, xmm6 ;;; xmm3 = xmm6
vmulps xmm0, xmm0, [_ps_sincos_p3] ;;; xmm0 = xmm0 * xmm4
vmulps xmm6, xmm6, [_ps_sincos_p3] ;;; xmm6 = xmm6 * xmm4
vaddps xmm0, xmm0, [_ps_sincos_p2] ;;; xmm0 = xmm0 + 0.07969262
vaddps xmm6, xmm6, [_ps_sincos_p2] ;;; xmm6 = xmm6 + 0.07969262
vmulps xmm0, xmm0, xmm2 ;;; xmm0 = xmm0 * xmm0
vmulps xmm6, xmm6, xmm3 ;;; xmm6 = xmm6 * xmm6
vaddps xmm0, xmm0, [_ps_sincos_p1] ;;; xmm0 = xmm0 + -0.64596409
vaddps xmm6, xmm6, [_ps_sincos_p1] ;;; xmm6 = xmm6 + -0.64596409
vmulps xmm0, xmm0, xmm2 ;;; xmm0 = xmm0 * xmm0
vmulps xmm6, xmm6, xmm3 ;;; xmm6 = xmm6 * xmm6
vaddps xmm0, xmm0, [_ps_sincos_p0] ;;; xmm0 = xmm0 + PI/2
vaddps xmm6, xmm6, [_ps_sincos_p0] ;;; xmm6 = xmm6 + PI/2
vmulps xmm0, xmm0, xmm1 ;;; xmm0 = xmm0 * xmm1
vmulps xmm6, xmm6, xmm7 ;;; xmm6 = xmm6 * xmm7
vmovups [sincosps_sin], xmm0 ;;; sinus(xmm0)
vmovups [sincosps_cos], xmm6 ;;; cosinus(xmm0)
ret
;=============================================================================================================
; / sincosps
;=============================================================================================================