{"type": "func", "start": 6443675536, "end": 6443676815, "name": "cosf", "pseudocode": "// \n// cosf from 0x18012af90 to 0x18012b48f (1279 bytes)\n// \n// 20 xrefs:\n// > sub_180028BE0 @ 0x180028d64\n// > sub_180032180 @ 0x1800323be\n// > sub_180032180 @ 0x1800323f9\n// > sub_180032180 @ 0x18003245e\n// > sub_180032180 @ 0x18003247e\n// > sub_180032180 @ 0x18003249d\n// > sub_180032180 @ 0x1800324e3\n// > sub_180032180 @ 0x18003254b\n// > sub_180032180 @ 0x18003258b\n// > sub_180032180 @ 0x18003264f\n// > sub_180053BD0 @ 0x180053c0b\n// > sub_180069DE0 @ 0x180069e1b\n// > sub_18006B8A0 @ 0x18006b8db\n// > sub_18006E7E0 @ 0x18006e82d\n// > sub_180077F30 @ 0x180077f6b\n// > sub_1800894D0 @ 0x180089524\n// > sub_1800899C0 @ 0x180089a1b\n// > sub_1800F8FF0 @ 0x1800f905e\n// > sub_1800F8FF0 @ 0x1800f9080\n// > <???> @ 0x180202b10\n// \n// This function is hookable on this platform!\n// \n// Using BromaIDA 8.0.0 @ https://github.com/Stazzical/BromaIDA\n// Using bindings at commit ba9f177b at Thu Jul 16 22:52:06 2026 from https://github.com/geode-sdk/bindings\n// \n\n// local variable allocation has failed, the output may be wrong!\nfloat __cdecl cosf(float X)\n{\n  __int64 v1; // rcx\n  unsigned __int64 v2; // r10\n  char v3; // al\n  __m128i v4; // xmm0\n  double v5; // xmm2_8\n  double v6; // xmm4_8\n  double v7; // xmm2_8\n  double v8; // xmm2_8\n\n  if ( !dword_1801F4D54 )\n  {\n    if ( (_mm_cvtsi128_si32(*(__m128i *)&X) & 0x7F800000) != 0x7F800000 )\n    {\n      *(double *)&X = X;\n      v2 = *(_QWORD *)&X & 0x7FFFFFFFFFFFFFFFLL;\n      if ( (*(_QWORD *)&X & 0x7FFFFFFFFFFFFFFFuLL) > 0x3FE921FB54442D18LL )\n      {\n        if ( v2 >= 0x411E848000000000LL )\n        {\n          *(double *)&X = _remainder_piby2d2f_forAsm(v1, *(_QWORD *)&X, 1);\n        }\n        else\n        {\n          v4 = _mm_cvttpd_epi32((__m128d)COERCE_UNSIGNED_INT64(*(double *)&v2 * 0.6366197723675814 + 0.5));\n          v5 = _mm_cvtepi32_pd(v4).m128d_f64[0];\n          v6 = *(double *)&v2 - 1.570796326734126 * v5;\n          v3 = _mm_cvtsi128_si32(v4);\n          *(double *)&X = v6 - 6.077100506506192e-11 * v5;\n          if ( (__int64)((v2 >> 52) - ((unsigned __int64)(2LL * *(_QWORD *)&X) >> 53)) > 15 )\n            *(double *)&X = v6\n                          - 6.077100506303966e-11 * v5\n                          - (2.022266248795951e-21 * v5\n                           - (v6\n                            - (v6\n                             - 6.077100506303966e-11 * v5)\n                            - 6.077100506303966e-11 * v5));\n          if ( (unsigned __int64)(2 * COERCE__INT64(v6 - 6.077100506506192e-11 * v5)) >> 53 < 0x3F2 )\n          {\n            if ( (unsigned __int64)(2 * COERCE__INT64(v6 - 6.077100506506192e-11 * v5)) >> 53 <= 0x3DE )\n            {\n              if ( (v3 & 1) == 0 )\n                *(_QWORD *)&X = 0x3FF0000000000000LL;\n            }\n            else\n            {\n              v7 = *(double *)&X * *(double *)&X;\n              if ( (v3 & 1) != 0 )\n                *(double *)&X = *(double *)&X - 0.1666666666666667 * *(double *)&X * v7;\n              else\n                *(double *)&X = 1.0 - v7 * 0.5;\n            }\n            goto Lcosf_sse2_adjust_region;\n          }\n        }\n      }\n      else\n      {\n        v3 = 0;\n      }\n      v8 = *(double *)&X * *(double *)&X;\n      if ( (v3 & 1) != 0 )\n        *(double *)&X = *(double *)&X\n                      + ((0.000002755731922398589 * v8 + -0.0001984126984126984) * (v8 * v8)\n                       + 0.008333333333333333 * v8\n                       + -0.1666666666666667)\n                      * (*(double *)&X\n                       * v8);\n      else\n        *(double *)&X = -0.5 * v8\n                      + 1.0\n                      + ((-0.0000002755731922398589 * v8 + 0.0000248015873015873) * (v8 * v8)\n                       + -0.001388888888888889 * v8\n                       + 0.04166666666666666)\n                      * (v8\n                       * v8);\nLcosf_sse2_adjust_region:\n      if ( ((v3 + 1) & 2) != 0 )\n        *(double *)&X = 0.0 - *(double *)&X;\n      return *(double *)&X;\n    }\n    return cosf_special();\n  }\n  __asm { vmovd   eax, xmm0 }\n  if ( (_EAX & 0x7F800000) == 0x7F800000 )\n    return cosf_special();\n  __asm\n  {\n    vcvtss2sd xmm5, xmm0, xmm0\n    vmovq   r9, xmm5\n  }\n  _R9 = _R9 & 0x7FFFFFFFFFFFFFFFLL;\n  if ( _R9 > 0x3FE921FB54442D18LL )\n  {\n    __asm { vmovq   xmm0, r9 }\n    if ( _R9 >= 0x41E921FB60000000LL )\n    {\n      __asm { vmovq   xmm0, r9 }\n      _RAX = _remainder_piby2_fma3();\n    }\n    else\n    {\n      __asm\n      {\n        vandpd  xmm1, xmm0, cs:xmmword_180171AF0\n        vmovapd xmm2, cs:xmmword_180171A60\n        vfmadd213sd xmm2, xmm1, cs:qword_180171A50\n        vcvttpd2dq xmm2, xmm2\n        vpmovsxdq xmm1, xmm2\n        vandpd  xmm4, xmm1, cs:xmmword_180171B00\n        vshufps xmm1, xmm1, xmm1, 8\n        vcvtdq2pd xmm1, xmm1\n        vmovdqa xmm2, xmm0\n        vfnmadd231sd xmm2, xmm1, cs:qword_180171A90\n        vmulsd  xmm3, xmm1, cs:qword_180171AA0\n        vsubsd  xmm0, xmm2, xmm3\n        vsubsd  xmm2, xmm2, xmm0\n        vsubsd  xmm1, xmm2, xmm3\n        vmovq   rax, xmm4\n      }\n    }\n    if ( (_RAX & 1) != 0 )\n    {\n      __asm\n      {\n        vmovsd  xmm1, cs:qword_180175680\n        vmulsd  xmm3, xmm0, xmm0\n        vfmadd231sd xmm1, xmm3, cs:qword_180175688\n        vfmadd213sd xmm1, xmm3, cs:qword_180175678\n        vfmadd213sd xmm1, xmm3, cs:qword_180175670\n        vmulsd  xmm3, xmm0, xmm3\n        vfmadd231sd xmm0, xmm1, xmm3\n      }\n    }\n    else\n    {\n      __asm\n      {\n        vmovapd xmm2, cs:xmmword_180171A40\n        vmulsd  xmm3, xmm0, xmm0\n        vmulsd  xmm1, xmm3, cs:qword_180171A50\n        vsubsd  xmm2, xmm2, xmm1\n        vmovsd  xmm1, cs:qword_180175658\n        vfmadd231sd xmm1, xmm3, cs:qword_180175660\n        vfmadd213sd xmm1, xmm3, cs:qword_180175650\n        vfmadd213sd xmm1, xmm3, cs:qword_180175648\n        vmulsd  xmm3, xmm3, xmm3\n        vmovdqa xmm0, xmm2\n        vfmadd231sd xmm0, xmm1, xmm3\n      }\n    }\n    _RAX = (unsigned __int64)(_RAX + 1) >> 1 << 63;\n    __asm\n    {\n      vmovq   xmm3, rax\n      vxorpd  xmm0, xmm0, xmm3\n      vcvtsd2ss xmm0, xmm0, xmm0\n    }\n  }\n  else if ( _R9 >= 0x3F80000000000000LL )\n  {\n    *(double *)&_XMM0 = *(double *)&_XMM5;\n    __asm\n    {\n      vmovapd xmm2, cs:xmmword_180171A40\n      vmulsd  xmm3, xmm0, xmm0\n      vmulsd  xmm1, xmm3, cs:qword_180171A50\n      vsubsd  xmm2, xmm2, xmm1\n      vmovsd  xmm1, cs:qword_180175658\n      vfmadd231sd xmm1, xmm3, cs:qword_180175660\n      vfmadd213sd xmm1, xmm3, cs:qword_180175650\n      vfmadd213sd xmm1, xmm3, cs:qword_180175648\n      vmulsd  xmm3, xmm3, xmm3\n      vmovdqa xmm0, xmm2\n      vfmadd231sd xmm0, xmm1, xmm3\n      vcvtsd2ss xmm0, xmm0, xmm0\n    }\n  }\n  else if ( _R9 >= 0x3F20000000000000LL )\n  {\n    __asm\n    {\n      vmulsd  xmm0, xmm5, cs:qword_180171A50\n      vfnmadd213sd xmm0, xmm5, qword ptr cs:xmmword_180171A40\n      vcvtsd2ss xmm0, xmm0, xmm0\n    }\n  }\n  else\n  {\n    __asm\n    {\n      vaddss  xmm1, xmm0, cs:dword_180171B40\n      vmovd   xmm0, cs:dword_180171B48\n    }\n  }\n  return X;\n}", "assembly": "; \n; cosf from 0x18012af90 to 0x18012b48f (1279 bytes)\n; \n; 20 xrefs:\n; > sub_180028BE0 @ 0x180028d64\n; > sub_180032180 @ 0x1800323be\n; > sub_180032180 @ 0x1800323f9\n; > sub_180032180 @ 0x18003245e\n; > sub_180032180 @ 0x18003247e\n; > sub_180032180 @ 0x18003249d\n; > sub_180032180 @ 0x1800324e3\n; > sub_180032180 @ 0x18003254b\n; > sub_180032180 @ 0x18003258b\n; > sub_180032180 @ 0x18003264f\n; > sub_180053BD0 @ 0x180053c0b\n; > sub_180069DE0 @ 0x180069e1b\n; > sub_18006B8A0 @ 0x18006b8db\n; > sub_18006E7E0 @ 0x18006e82d\n; > sub_180077F30 @ 0x180077f6b\n; > sub_1800894D0 @ 0x180089524\n; > sub_1800899C0 @ 0x180089a1b\n; > sub_1800F8FF0 @ 0x1800f905e\n; > sub_1800F8FF0 @ 0x1800f9080\n; > <???> @ 0x180202b10\n; \n; This function is hookable on this platform!\n; \n; Using BromaIDA 8.0.0 @ https:;github.com/Stazzical/BromaIDA\n; Using bindings at commit ba9f177b at Thu Jul 16 22:52:06 2026 from https:;github.com/geode-sdk/bindings\n; \n\nsub     rsp, 68h                                                       ; +0x0, 0x18012af90\ncmp     cs:dword_1801F4D54, 0                                          ; +0x4, 0x18012af94\njnz     Lcosf_fma3                                                     ; +0xb, 0x18012af9b\nxorpd   xmm2, xmm2                                                     ; +0x11, 0x18012afa1\nmovd    edx, xmm0                                                      ; +0x15, 0x18012afa5\nmov     eax, 7F800000h                                                 ; +0x19, 0x18012afa9\nmov     r10d, eax                                                      ; +0x1e, 0x18012afae\nand     r10d, edx                                                      ; +0x21, 0x18012afb1\ncmp     r10d, eax                                                      ; +0x24, 0x18012afb4\njz      Lcosf_sse2_naninf                                              ; +0x27, 0x18012afb7\ncvtss2sd xmm0, xmm0                                                    ; +0x2d, 0x18012afbd\nmovq    rdx, xmm0                                                      ; +0x31, 0x18012afc1\nmov     r10, rdx                                                       ; +0x36, 0x18012afc6\nbtr     r10, 3Fh ; '?'                                                 ; +0x39, 0x18012afc9\nmov     r8d, 1                                                         ; +0x3e, 0x18012afce\nmovapd  xmm1, xmm0                                                     ; +0x44, 0x18012afd4\nmov     rax, 3FE921FB54442D18h                                         ; +0x48, 0x18012afd8\ncmp     r10, rax                                                       ; +0x52, 0x18012afe2\njg      short Lcosf_sse2_absx_gt_piby4                                 ; +0x55, 0x18012afe5\nmovapd  xmm2, xmm0                                                     ; +0x57, 0x18012afe7\nmulsd   xmm2, xmm2                                                     ; +0x5b, 0x18012afeb\nxor     eax, eax                                                       ; +0x5f, 0x18012afef\nmov     rdx, r10                                                       ; +0x61, 0x18012aff1\nmovsd   xmm5, cs:qword_180171A50                                       ; +0x64, 0x18012aff4\njmp     Lcosf_sse2_calc_sincosf_piby4                                  ; +0x6c, 0x18012affc\nalign 10h                                                              ; +0x71, 0x18012b001\nmovq    xmm0, r10                                                      ; +0x80, 0x18012b010\ncmp     r10, cs:qword_180171AD0                                        ; +0x85, 0x18012b015\njnb     Lcosf_sse2_reduce_precise                                      ; +0x8c, 0x18012b01c\nmovapd  xmm2, xmm0                                                     ; +0x92, 0x18012b022\nmovsd   xmm3, qword ptr cs:xmmword_180171A60                           ; +0x96, 0x18012b026\nmovapd  xmm4, xmm0                                                     ; +0x9e, 0x18012b02e\nmovsd   xmm5, cs:qword_180171A50                                       ; +0xa2, 0x18012b032\nmulsd   xmm2, xmm3                                                     ; +0xaa, 0x18012b03a\nmov     r9, r10                                                        ; +0xae, 0x18012b03e\nshr     r9, 34h                                                        ; +0xb1, 0x18012b041\naddsd   xmm2, xmm5                                                     ; +0xb5, 0x18012b045\nmovsd   xmm3, cs:qword_180171A90                                       ; +0xb9, 0x18012b049\ncvttpd2dq xmm0, xmm2                                                   ; +0xc1, 0x18012b051\nmovsd   xmm1, cs:qword_180171AA0                                       ; +0xc5, 0x18012b055\ncvtdq2pd xmm2, xmm0                                                    ; +0xcd, 0x18012b05d\nmulsd   xmm3, xmm2                                                     ; +0xd1, 0x18012b061\nsubsd   xmm4, xmm3                                                     ; +0xd5, 0x18012b065\nmulsd   xmm1, xmm2                                                     ; +0xd9, 0x18012b069\nmovd    eax, xmm0                                                      ; +0xdd, 0x18012b06d\nmovapd  xmm0, xmm4                                                     ; +0xe1, 0x18012b071\nsubsd   xmm0, xmm1                                                     ; +0xe5, 0x18012b075\nmovsd   xmm3, cs:qword_180171AB0                                       ; +0xe9, 0x18012b079\nmovq    rcx, xmm0                                                      ; +0xf1, 0x18012b081\nmovsd   xmm5, cs:qword_180171AC0                                       ; +0xf6, 0x18012b086\nshl     rcx, 1                                                         ; +0xfe, 0x18012b08e\nshr     rcx, 35h                                                       ; +0x101, 0x18012b091\nsub     r9, rcx                                                        ; +0x105, 0x18012b095\ncmp     r9, 0Fh                                                        ; +0x108, 0x18012b098\njle     short Lcosf_sse2_expdiff_le_15                                 ; +0x10c, 0x18012b09c\nmovapd  xmm1, xmm4                                                     ; +0x10e, 0x18012b09e\nmulsd   xmm3, xmm2                                                     ; +0x112, 0x18012b0a2\nmulsd   xmm5, xmm2                                                     ; +0x116, 0x18012b0a6\nsubsd   xmm4, xmm3                                                     ; +0x11a, 0x18012b0aa\nsubsd   xmm1, xmm4                                                     ; +0x11e, 0x18012b0ae\nsubsd   xmm1, xmm3                                                     ; +0x122, 0x18012b0b2\nsubsd   xmm5, xmm1                                                     ; +0x126, 0x18012b0b6\nmovapd  xmm0, xmm4                                                     ; +0x12a, 0x18012b0ba\nmovapd  xmm1, xmm5                                                     ; +0x12e, 0x18012b0be\nsubsd   xmm0, xmm5                                                     ; +0x132, 0x18012b0c2\ncmp     rcx, 3F2h                                                      ; +0x136, 0x18012b0c6\njge     Lcosf_sse2_calc_sincosf_piby4                                  ; +0x13d, 0x18012b0cd\ncmp     rcx, 3DEh                                                      ; +0x143, 0x18012b0d3\njle     short Lcosf_sse2_r_very_small                                  ; +0x14a, 0x18012b0da\nmovapd  xmm2, xmm0                                                     ; +0x14c, 0x18012b0dc\nmulsd   xmm2, xmm0                                                     ; +0x150, 0x18012b0e0\nand     r8d, eax                                                       ; +0x154, 0x18012b0e4\njz      short Lcosf_sse2_r_small_calc_sin                              ; +0x157, 0x18012b0e7\nmovsd   xmm3, cs:qword_180171A70                                       ; +0x159, 0x18012b0e9\nmulsd   xmm3, xmm0                                                     ; +0x161, 0x18012b0f1\nmulsd   xmm3, xmm2                                                     ; +0x165, 0x18012b0f5\nsubsd   xmm0, xmm3                                                     ; +0x169, 0x18012b0f9\njmp     Lcosf_sse2_adjust_region                                       ; +0x16d, 0x18012b0fd\nalign 10h                                                              ; +0x172, 0x18012b102\nmovsd   xmm0, qword ptr cs:xmmword_180171A40                           ; +0x180, 0x18012b110\nmulsd   xmm2, cs:qword_180171A50                                       ; +0x188, 0x18012b118\nsubsd   xmm0, xmm2                                                     ; +0x190, 0x18012b120\njmp     Lcosf_sse2_adjust_region                                       ; +0x194, 0x18012b124\nalign 10h                                                              ; +0x199, 0x18012b129\nand     r8d, eax                                                       ; +0x1a0, 0x18012b130\njnz     Lcosf_sse2_adjust_region                                       ; +0x1a3, 0x18012b133\nmovsd   xmm0, qword ptr cs:xmmword_180171A40                           ; +0x1a9, 0x18012b139\njmp     Lcosf_sse2_adjust_region                                       ; +0x1b1, 0x18012b141\nalign 10h                                                              ; +0x1b6, 0x18012b146\nmov     [rsp+68h+var_48], rdx                                          ; +0x1c0, 0x18012b150\nmov     [rsp+68h+var_38], r10                                          ; +0x1c5, 0x18012b155\ncall    __remainder_piby2d2f_forAsm                                    ; +0x1ca, 0x18012b15a\nmov     rdx, [rsp+68h+var_48]                                          ; +0x1cf, 0x18012b15f\nmov     r10, [rsp+68h+var_38]                                          ; +0x1d4, 0x18012b164\nmov     r8d, 1                                                         ; +0x1d9, 0x18012b169\nmovapd  xmm1, xmm0                                                     ; +0x1df, 0x18012b16f\nmovsd   xmm5, cs:qword_180171A50                                       ; +0x1e3, 0x18012b173\njmp     short Lcosf_sse2_calc_sincosf_piby4                            ; +0x1eb, 0x18012b17b\nalign 20h                                                              ; +0x1ed, 0x18012b17d\nmovapd  xmm2, xmm0                                                     ; +0x1f0, 0x18012b180\nmulsd   xmm2, xmm0                                                     ; +0x1f4, 0x18012b184\nand     r8d, eax                                                       ; +0x1f8, 0x18012b188\njz      short Lcosf_sse2_do_cosf_calc                                  ; +0x1fb, 0x18012b18b\nmovsd   xmm1, cs:qword_180175688                                       ; +0x1fd, 0x18012b18d\nmulsd   xmm1, xmm2                                                     ; +0x205, 0x18012b195\nmovsd   xmm4, xmm2                                                     ; +0x209, 0x18012b199\nmulsd   xmm4, xmm2                                                     ; +0x20d, 0x18012b19d\nmovsd   xmm5, cs:qword_180175678                                       ; +0x211, 0x18012b1a1\nmulsd   xmm5, xmm2                                                     ; +0x219, 0x18012b1a9\nmovsd   xmm3, xmm0                                                     ; +0x21d, 0x18012b1ad\nmulsd   xmm3, xmm2                                                     ; +0x221, 0x18012b1b1\naddsd   xmm1, cs:qword_180175680                                       ; +0x225, 0x18012b1b5\nmulsd   xmm1, xmm4                                                     ; +0x22d, 0x18012b1bd\naddsd   xmm5, cs:qword_180175670                                       ; +0x231, 0x18012b1c1\naddsd   xmm1, xmm5                                                     ; +0x239, 0x18012b1c9\nmulsd   xmm1, xmm3                                                     ; +0x23d, 0x18012b1cd\naddsd   xmm0, xmm1                                                     ; +0x241, 0x18012b1d1\njmp     short Lcosf_sse2_adjust_region                                 ; +0x245, 0x18012b1d5\nalign 20h                                                              ; +0x247, 0x18012b1d7\nmovsd   xmm1, cs:qword_180175660                                       ; +0x250, 0x18012b1e0\nmovsd   xmm4, xmm2                                                     ; +0x258, 0x18012b1e8\nmulsd   xmm1, xmm2                                                     ; +0x25c, 0x18012b1ec\nmovsd   xmm3, cs:qword_180175650                                       ; +0x260, 0x18012b1f0\nmulsd   xmm4, xmm2                                                     ; +0x268, 0x18012b1f8\nmovsd   xmm0, cs:qword_180175640                                       ; +0x26c, 0x18012b1fc\nmulsd   xmm3, xmm2                                                     ; +0x274, 0x18012b204\nmulsd   xmm0, xmm2                                                     ; +0x278, 0x18012b208\naddsd   xmm1, cs:qword_180175658                                       ; +0x27c, 0x18012b20c\nmulsd   xmm1, xmm4                                                     ; +0x284, 0x18012b214\naddsd   xmm3, cs:qword_180175648                                       ; +0x288, 0x18012b218\naddsd   xmm1, xmm3                                                     ; +0x290, 0x18012b220\nmulsd   xmm1, xmm4                                                     ; +0x294, 0x18012b224\naddsd   xmm0, qword ptr cs:xmmword_180171A40                           ; +0x298, 0x18012b228\naddsd   xmm0, xmm1                                                     ; +0x2a0, 0x18012b230\nadd     eax, 1                                                         ; +0x2a4, 0x18012b234\nand     eax, 2                                                         ; +0x2a7, 0x18012b237\njz      short Lcosf_sse2_cleanup                                       ; +0x2aa, 0x18012b23a\nxorpd   xmm2, xmm2                                                     ; +0x2ac, 0x18012b23c\nsubsd   xmm2, xmm0                                                     ; +0x2b0, 0x18012b240\nmovapd  xmm0, xmm2                                                     ; +0x2b4, 0x18012b244\nnop     dword ptr [rax+rax+00000000h]                                  ; +0x2b8, 0x18012b248\ncvtsd2ss xmm0, xmm0                                                    ; +0x2c0, 0x18012b250\nadd     rsp, 68h                                                       ; +0x2c4, 0x18012b254\nretn                                                                   ; +0x2c8, 0x18012b258\ncall    _cosf_special                                                  ; +0x2c9, 0x18012b259\nadd     rsp, 68h                                                       ; +0x2ce, 0x18012b25e\nretn                                                                   ; +0x2d2, 0x18012b262\nalign 10h                                                              ; +0x2d3, 0x18012b263\nvmovd   eax, xmm0                                                      ; +0x2e0, 0x18012b270\nmov     r8d, cs:dword_180171B50                                        ; +0x2e4, 0x18012b274\nand     eax, r8d                                                       ; +0x2eb, 0x18012b27b\ncmp     eax, r8d                                                       ; +0x2ee, 0x18012b27e\njz      Lcosf_fma3_naninf                                              ; +0x2f1, 0x18012b281\nvcvtss2sd xmm5, xmm0, xmm0                                             ; +0x2f7, 0x18012b287\nvmovq   r9, xmm5                                                       ; +0x2fb, 0x18012b28b\nbtr     r9, 3Fh ; '?'                                                  ; +0x300, 0x18012b290\ncmp     r9, cs:qword_180171A80                                         ; +0x305, 0x18012b295\njg      Lcosf_fma3_range_reduce                                        ; +0x30c, 0x18012b29c\ncmp     r9, cs:qword_180171B20                                         ; +0x312, 0x18012b2a2\njge     short Lcosf_fma3_compute_cosf_piby_4                           ; +0x319, 0x18012b2a9\ncmp     r9, cs:qword_180171B30                                         ; +0x31b, 0x18012b2ab\njge     short Lcosf_fma3_compute_1_xx_5                                ; +0x322, 0x18012b2b2\nvaddss  xmm1, xmm0, cs:dword_180171B40                                 ; +0x324, 0x18012b2b4\nvmovd   xmm0, cs:dword_180171B48                                       ; +0x32c, 0x18012b2bc\nadd     rsp, 68h                                                       ; +0x334, 0x18012b2c4\nretn                                                                   ; +0x338, 0x18012b2c8\nalign 10h                                                              ; +0x339, 0x18012b2c9\nvmulsd  xmm0, xmm5, cs:qword_180171A50                                 ; +0x340, 0x18012b2d0\nvfnmadd213sd xmm0, xmm5, qword ptr cs:xmmword_180171A40                ; +0x348, 0x18012b2d8\nvcvtsd2ss xmm0, xmm0, xmm0                                             ; +0x351, 0x18012b2e1\nadd     rsp, 68h                                                       ; +0x355, 0x18012b2e5\nretn                                                                   ; +0x359, 0x18012b2e9\nalign 10h                                                              ; +0x35a, 0x18012b2ea\nmovsd   xmm0, xmm5                                                     ; +0x360, 0x18012b2f0\nvmovapd xmm2, cs:xmmword_180171A40                                     ; +0x364, 0x18012b2f4\nvmulsd  xmm3, xmm0, xmm0                                               ; +0x36c, 0x18012b2fc\nvmulsd  xmm1, xmm3, cs:qword_180171A50                                 ; +0x370, 0x18012b300\nvsubsd  xmm2, xmm2, xmm1                                               ; +0x378, 0x18012b308\nvmovsd  xmm1, cs:qword_180175658                                       ; +0x37c, 0x18012b30c\nvfmadd231sd xmm1, xmm3, cs:qword_180175660                             ; +0x384, 0x18012b314\nvfmadd213sd xmm1, xmm3, cs:qword_180175650                             ; +0x38d, 0x18012b31d\nvfmadd213sd xmm1, xmm3, cs:qword_180175648                             ; +0x396, 0x18012b326\nvmulsd  xmm3, xmm3, xmm3                                               ; +0x39f, 0x18012b32f\nvmovdqa xmm0, xmm2                                                     ; +0x3a3, 0x18012b333\nvfmadd231sd xmm0, xmm1, xmm3                                           ; +0x3a7, 0x18012b337\nvcvtsd2ss xmm0, xmm0, xmm0                                             ; +0x3ac, 0x18012b33c\nadd     rsp, 68h                                                       ; +0x3b0, 0x18012b340\nretn                                                                   ; +0x3b4, 0x18012b344\nalign 10h                                                              ; +0x3b5, 0x18012b345\nvmovq   xmm0, r9                                                       ; +0x3c0, 0x18012b350\ncmp     r9, cs:qword_180171AE0                                         ; +0x3c5, 0x18012b355\njge     short Lcosf_reduce_precise                                     ; +0x3cc, 0x18012b35c\nvandpd  xmm1, xmm0, cs:xmmword_180171AF0                               ; +0x3ce, 0x18012b35e\nvmovapd xmm2, cs:xmmword_180171A60                                     ; +0x3d6, 0x18012b366\nvfmadd213sd xmm2, xmm1, cs:qword_180171A50                             ; +0x3de, 0x18012b36e\nvcvttpd2dq xmm2, xmm2                                                  ; +0x3e7, 0x18012b377\nvpmovsxdq xmm1, xmm2                                                   ; +0x3eb, 0x18012b37b\nvandpd  xmm4, xmm1, cs:xmmword_180171B00                               ; +0x3f0, 0x18012b380\nvshufps xmm1, xmm1, xmm1, 8                                            ; +0x3f8, 0x18012b388\nvcvtdq2pd xmm1, xmm1                                                   ; +0x3fd, 0x18012b38d\nvmovdqa xmm2, xmm0                                                     ; +0x401, 0x18012b391\nvfnmadd231sd xmm2, xmm1, cs:qword_180171A90                            ; +0x405, 0x18012b395\nvmulsd  xmm3, xmm1, cs:qword_180171AA0                                 ; +0x40e, 0x18012b39e\nvsubsd  xmm0, xmm2, xmm3                                               ; +0x416, 0x18012b3a6\nvsubsd  xmm2, xmm2, xmm0                                               ; +0x41a, 0x18012b3aa\nvsubsd  xmm1, xmm2, xmm3                                               ; +0x41e, 0x18012b3ae\nvmovq   rax, xmm4                                                      ; +0x422, 0x18012b3b2\njmp     short Lcosf_exit_s                                             ; +0x427, 0x18012b3b7\nalign 20h                                                              ; +0x429, 0x18012b3b9\nvmovq   xmm0, r9                                                       ; +0x430, 0x18012b3c0\ncmp     r9, cs:qword_180171AE0                                         ; +0x435, 0x18012b3c5\njge     short Lcos_remainder_piby2                                     ; +0x43c, 0x18012b3cc\ncall    __remainder_piby2_fma3_bdl                                     ; +0x43e, 0x18012b3ce\njmp     short Lcosf_exit_s                                             ; +0x443, 0x18012b3d3\nalign 20h                                                              ; +0x445, 0x18012b3d5\ncall    __remainder_piby2_fma3                                         ; +0x450, 0x18012b3e0\nbt      rax, 0                                                         ; +0x455, 0x18012b3e5\njnb     short Lcosf_piby4_compute                                      ; +0x45a, 0x18012b3ea\nvmovsd  xmm1, cs:qword_180175680                                       ; +0x45c, 0x18012b3ec\nvmulsd  xmm3, xmm0, xmm0                                               ; +0x464, 0x18012b3f4\nvfmadd231sd xmm1, xmm3, cs:qword_180175688                             ; +0x468, 0x18012b3f8\nvfmadd213sd xmm1, xmm3, cs:qword_180175678                             ; +0x471, 0x18012b401\nvfmadd213sd xmm1, xmm3, cs:qword_180175670                             ; +0x47a, 0x18012b40a\nvmulsd  xmm3, xmm0, xmm3                                               ; +0x483, 0x18012b413\nvfmadd231sd xmm0, xmm1, xmm3                                           ; +0x487, 0x18012b417\njmp     short Lcosf_fma3_adjust_sign                                   ; +0x48c, 0x18012b41c\nalign 20h                                                              ; +0x48e, 0x18012b41e\nvmovapd xmm2, cs:xmmword_180171A40                                     ; +0x490, 0x18012b420\nvmulsd  xmm3, xmm0, xmm0                                               ; +0x498, 0x18012b428\nvmulsd  xmm1, xmm3, cs:qword_180171A50                                 ; +0x49c, 0x18012b42c\nvsubsd  xmm2, xmm2, xmm1                                               ; +0x4a4, 0x18012b434\nvmovsd  xmm1, cs:qword_180175658                                       ; +0x4a8, 0x18012b438\nvfmadd231sd xmm1, xmm3, cs:qword_180175660                             ; +0x4b0, 0x18012b440\nvfmadd213sd xmm1, xmm3, cs:qword_180175650                             ; +0x4b9, 0x18012b449\nvfmadd213sd xmm1, xmm3, cs:qword_180175648                             ; +0x4c2, 0x18012b452\nvmulsd  xmm3, xmm3, xmm3                                               ; +0x4cb, 0x18012b45b\nvmovdqa xmm0, xmm2                                                     ; +0x4cf, 0x18012b45f\nvfmadd231sd xmm0, xmm1, xmm3                                           ; +0x4d3, 0x18012b463\nadd     rax, 1                                                         ; +0x4d8, 0x18012b468\nshr     rax, 1                                                         ; +0x4dc, 0x18012b46c\nshl     rax, 3Fh                                                       ; +0x4df, 0x18012b46f\nvmovq   xmm3, rax                                                      ; +0x4e3, 0x18012b473\nvxorpd  xmm0, xmm0, xmm3                                               ; +0x4e8, 0x18012b478\nvcvtsd2ss xmm0, xmm0, xmm0                                             ; +0x4ec, 0x18012b47c\nadd     rsp, 68h                                                       ; +0x4f0, 0x18012b480\nretn                                                                   ; +0x4f4, 0x18012b484\ncall    _cosf_special                                                  ; +0x4f5, 0x18012b485\nadd     rsp, 68h                                                       ; +0x4fa, 0x18012b48a\nretn                                                                   ; +0x4fe, 0x18012b48e", "xrefs": ["sub_180028BE0 @ 0x180028d64", "sub_180032180 @ 0x1800323be", "sub_180032180 @ 0x1800323f9", "sub_180032180 @ 0x18003245e", "sub_180032180 @ 0x18003247e", "sub_180032180 @ 0x18003249d", "sub_180032180 @ 0x1800324e3", "sub_180032180 @ 0x18003254b", "sub_180032180 @ 0x18003258b", "sub_180032180 @ 0x18003264f", "sub_180053BD0 @ 0x180053c0b", "sub_180069DE0 @ 0x180069e1b", "sub_18006B8A0 @ 0x18006b8db", "sub_18006E7E0 @ 0x18006e82d", "sub_180077F30 @ 0x180077f6b", "sub_1800894D0 @ 0x180089524", "sub_1800899C0 @ 0x180089a1b", "sub_1800F8FF0 @ 0x1800f905e", "sub_1800F8FF0 @ 0x1800f9080", "<???> @ 0x180202b10"], "is_objc": false, "is_arm32": false, "is_arm64": false, "bida_info": "8.0.0 @ https://github.com/Stazzical/BromaIDA", "bindings_info": "commit ba9f177b at Thu Jul 16 22:52:06 2026 from https://github.com/geode-sdk/bindings"}