{"type": "func", "start": 6443661440, "end": 6443662454, "name": "logf", "pseudocode": "// \n// logf from 0x180127880 to 0x180127c76 (1014 bytes)\n// \n// 8 xrefs:\n// > sub_18001CFD0 @ 0x18001d61c\n// > sub_18004DE50 @ 0x18004dec0\n// > sub_1800DBF50 @ 0x1800dc01e\n// > sub_1800DBF50 @ 0x1800dc069\n// > sub_1800DC760 @ 0x1800dc7cf\n// > sub_1800DC760 @ 0x1800dc827\n// > sub_1800DC760 @ 0x1800dc869\n// > <???> @ 0x180202a08\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 logf(float X)\n{\n  __int64 v1; // rcx\n  __m128i v2; // xmm3\n  unsigned int v3; // eax\n  float v4; // xmm5_4\n  __m128i v5; // xmm2\n  unsigned int v6; // eax\n  __m128i v7; // xmm1\n  unsigned int v8; // eax\n  float v9; // xmm1_4\n  float v10; // xmm0_4\n  float v11; // xmm1_4\n  __m128i v12; // xmm2\n  __m128i v13; // xmm5\n\n  if ( dword_1801F4D54 )\n  {\n    __asm { vmovaps xmm4, cs:xmmword_180170CA0 }\n    __asm\n    {\n      vpsrld  xmm3, xmm0, 17h\n      vmovd   eax, xmm0\n      vpsubd  xmm3, xmm3, cs:xmmword_180170CF0\n      vcvtdq2ps xmm5, xmm3\n      vpand   xmm1, xmm0, xmm4\n      vcomiss xmm1, xmm4\n    }\n    if ( _EAX == 2139095040 )\n      return X;\n    if ( _EAX == -8388608 )\n    {\n      __asm { vmovaps xmm1, cs:xmmword_180170CC0 }\n    }\n    else\n    {\n      _EAX = _EAX | 0x400000;\n      __asm { vmovd   xmm1, eax }\n    }\n    return logf_special(v1);\n  }\n  v2 = _mm_srli_epi32(*(__m128i *)&X, 0x17u);\n  v3 = _mm_cvtsi128_si32(*(__m128i *)&X);\n  v1 = v3;\n  LODWORD(v1) = v3 & 0x7FFFFFFF;\n  if ( (v3 & 0x7FFFFFFF) >= 0x7F800000 )\n  {\n    if ( v3 == 2139095040 )\n      return X;\n    if ( v3 != -8388608 )\n    {\n      LODWORD(X) = v3 | 0x400000;\n      return X;\n    }\n    return logf_special(v1);\n  }\n  v4 = _mm_cvtepi32_ps(_mm_sub_epi32(v2, (__m128i)xmmword_180170CF0)).m128_f32[0];\n  if ( X <= 0.0 )\n    return logf_special(v1);\n  v5 = _mm_and_si128(*(__m128i *)&X, (__m128i)xmmword_180170CE0);\n  if ( v4 == -127.0 )\n  {\n    v12 = _mm_or_si128(v5, (__m128i)xmmword_180170C70);\n    *(float *)v12.m128i_i32 = *(float *)v12.m128i_i32 - 1.0;\n    v13 = v12;\n    v5 = _mm_and_si128(v12, (__m128i)xmmword_180170CE0);\n    v3 = _mm_cvtsi128_si32(v5);\n    v4 = _mm_cvtepi32_ps(_mm_sub_epi32(_mm_srli_epi32(v13, 0x17u), (__m128i)xmmword_180170D00)).m128_f32[0];\n  }\n  v6 = 2 * (v3 & 0x8000) + (v3 & 0x7F0000);\n  v7 = _mm_cvtsi32_si128(v6);\n  if ( fabs(X - 1.0) < 0.0625 )\n  {\n    v10 = X - 1.0;\n    v11 = v10 / (float)(v10 + 2.0);\n    return v10\n         + (float)((float)((float)((float)((float)((float)(v11 + v11) * (float)(v11 + v11)) * 0.0125) + 0.083333336)\n                         * (float)((float)(v11 + v11) * (float)((float)(v11 + v11) * (float)(v11 + v11))))\n                 - (float)(v10 * v11));\n  }\n  else\n  {\n    v8 = HIWORD(v6);\n    v9 = (float)(*(float *)_mm_or_si128(v7, (__m128i)xmmword_180170D70).m128i_i32\n               - *(float *)_mm_or_si128(v5, (__m128i)xmmword_180170D70).m128i_i32)\n       * flt_180173840[v8];\n    return (float)((float)(0.69311523 * v4) + flt_180173420[v8])\n         + (float)((float)((float)(0.000031946183 * v4)\n                         - (float)(v9 + (float)((float)((float)(v9 * 0.33333334) + 0.5) * (float)(v9 * v9))))\n                 + flt_180173630[v8]);\n  }\n}", "assembly": "; \n; logf from 0x180127880 to 0x180127c76 (1014 bytes)\n; \n; 8 xrefs:\n; > sub_18001CFD0 @ 0x18001d61c\n; > sub_18004DE50 @ 0x18004dec0\n; > sub_1800DBF50 @ 0x1800dc01e\n; > sub_1800DBF50 @ 0x1800dc069\n; > sub_1800DC760 @ 0x1800dc7cf\n; > sub_1800DC760 @ 0x1800dc827\n; > sub_1800DC760 @ 0x1800dc869\n; > <???> @ 0x180202a08\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, 38h                                                       ; +0x0, 0x180127880\ncmp     cs:dword_1801F4D54, 0                                          ; +0x4, 0x180127884\njnz     Llogf_fma3                                                     ; +0xb, 0x18012788b\nxor     rax, rax                                                       ; +0x11, 0x180127891\nmovdqa  xmm3, xmm0                                                     ; +0x14, 0x180127894\nmovaps  xmm4, xmm0                                                     ; +0x18, 0x180127898\npsrld   xmm3, 17h                                                      ; +0x1b, 0x18012789b\nmovd    eax, xmm0                                                      ; +0x20, 0x1801278a0\nmov     ecx, eax                                                       ; +0x24, 0x1801278a4\nbtr     ecx, 1Fh                                                       ; +0x26, 0x1801278a6\ncmp     ecx, dword ptr cs:xmmword_180170CA0                            ; +0x2a, 0x1801278aa\njnb     Llogf_sse2_x_is_inf_or_nan                                     ; +0x30, 0x1801278b0\npsubd   xmm3, cs:xmmword_180170CF0                                     ; +0x36, 0x1801278b6\nmovdqa  xmm2, xmm0                                                     ; +0x3e, 0x1801278be\ncvtdq2ps xmm5, xmm3                                                    ; +0x42, 0x1801278c2\nxorps   xmm1, xmm1                                                     ; +0x45, 0x1801278c5\ncomiss  xmm0, xmm1                                                     ; +0x48, 0x1801278c8\njbe     Llogf_sse2_x_is_zero_or_neg                                    ; +0x4b, 0x1801278cb\npand    xmm2, cs:xmmword_180170CE0                                     ; +0x51, 0x1801278d1\nsubss   xmm4, dword ptr cs:xmmword_180170C70                           ; +0x59, 0x1801278d9\ncomiss  xmm5, cs:dword_180170D94                                       ; +0x61, 0x1801278e1\njz      Llogf_sse2_subnormal_adjust                                    ; +0x68, 0x1801278e8\nmov     r9d, eax                                                       ; +0x6e, 0x1801278ee\nand     eax, dword ptr cs:xmmword_180170D10                            ; +0x71, 0x1801278f1\nand     r9d, dword ptr cs:xmmword_180170D20                            ; +0x77, 0x1801278f7\nshl     r9d, 1                                                         ; +0x7e, 0x1801278fe\nadd     eax, r9d                                                       ; +0x81, 0x180127901\nmovd    xmm1, eax                                                      ; +0x84, 0x180127904\nandps   xmm4, cs:xmmword_180170CD0                                     ; +0x88, 0x180127908\ncomiss  xmm4, cs:dword_180170D9C                                       ; +0x8f, 0x18012790f\njb      Llogf_sse2_near_one                                            ; +0x96, 0x180127916\nshr     eax, 10h                                                       ; +0x9c, 0x18012791c\npor     xmm2, cs:xmmword_180170D70                                     ; +0x9f, 0x18012791f\npor     xmm1, cs:xmmword_180170D70                                     ; +0xa7, 0x180127927\nlea     r9, flt_180173840                                              ; +0xaf, 0x18012792f\nsubss   xmm1, xmm2                                                     ; +0xb6, 0x180127936\nmulss   xmm1, dword ptr [r9+rax*4]                                     ; +0xba, 0x18012793a\nmovaps  xmm2, xmm1                                                     ; +0xc0, 0x180127940\nmovaps  xmm0, xmm1                                                     ; +0xc3, 0x180127943\nmulss   xmm2, dword ptr cs:xmmword_180170D80                           ; +0xc6, 0x180127946\nmulss   xmm0, xmm1                                                     ; +0xce, 0x18012794e\naddss   xmm2, cs:dword_180170D90                                       ; +0xd2, 0x180127952\nmovaps  xmm3, cs:xmmword_180170D60                                     ; +0xda, 0x18012795a\nlea     r9, flt_180173630                                              ; +0xe1, 0x180127961\nlea     r10, flt_180173420                                             ; +0xe8, 0x180127968\nmulss   xmm2, xmm0                                                     ; +0xef, 0x18012796f\nmulss   xmm3, xmm5                                                     ; +0xf3, 0x180127973\naddss   xmm1, xmm2                                                     ; +0xf7, 0x180127977\nmovaps  xmm0, cs:xmmword_180170D50                                     ; +0xfb, 0x18012797b\nsubss   xmm3, xmm1                                                     ; +0x102, 0x180127982\nmulss   xmm0, xmm5                                                     ; +0x106, 0x180127986\naddss   xmm3, dword ptr [r9+rax*4]                                     ; +0x10a, 0x18012798a\naddss   xmm0, dword ptr [r10+rax*4]                                    ; +0x110, 0x180127990\naddss   xmm0, xmm3                                                     ; +0x116, 0x180127996\nadd     rsp, 38h                                                       ; +0x11a, 0x18012799a\nretn                                                                   ; +0x11e, 0x18012799e\nalign 20h                                                              ; +0x11f, 0x18012799f\nmovaps  xmm2, cs:xmmword_180170C80                                     ; +0x120, 0x1801279a0\nsubss   xmm0, dword ptr cs:xmmword_180170C70                           ; +0x127, 0x1801279a7\naddss   xmm2, xmm0                                                     ; +0x12f, 0x1801279af\nmovaps  xmm1, xmm0                                                     ; +0x133, 0x1801279b3\ndivss   xmm1, xmm2                                                     ; +0x136, 0x1801279b6\nmovaps  xmm4, xmm0                                                     ; +0x13a, 0x1801279ba\nmulss   xmm4, xmm1                                                     ; +0x13d, 0x1801279bd\naddss   xmm1, xmm1                                                     ; +0x141, 0x1801279c1\nmovaps  xmm2, xmm1                                                     ; +0x145, 0x1801279c5\nmulss   xmm2, xmm2                                                     ; +0x148, 0x1801279c8\nmovaps  xmm3, xmm1                                                     ; +0x14c, 0x1801279cc\nmulss   xmm3, xmm2                                                     ; +0x14f, 0x1801279cf\nmulss   xmm2, dword ptr cs:xmmword_180170D40                           ; +0x153, 0x1801279d3\naddss   xmm2, cs:dword_180170D30                                       ; +0x15b, 0x1801279db\nmulss   xmm2, xmm3                                                     ; +0x163, 0x1801279e3\nsubss   xmm2, xmm4                                                     ; +0x167, 0x1801279e7\naddss   xmm0, xmm2                                                     ; +0x16b, 0x1801279eb\nadd     rsp, 38h                                                       ; +0x16f, 0x1801279ef\nretn                                                                   ; +0x173, 0x1801279f3\nalign 20h                                                              ; +0x174, 0x1801279f4\npor     xmm2, cs:xmmword_180170C70                                     ; +0x180, 0x180127a00\nsubss   xmm2, dword ptr cs:xmmword_180170C70                           ; +0x188, 0x180127a08\nmovdqa  xmm5, xmm2                                                     ; +0x190, 0x180127a10\npand    xmm2, cs:xmmword_180170CE0                                     ; +0x194, 0x180127a14\nmovd    eax, xmm2                                                      ; +0x19c, 0x180127a1c\npsrld   xmm5, 17h                                                      ; +0x1a0, 0x180127a20\npsubd   xmm5, cs:xmmword_180170D00                                     ; +0x1a5, 0x180127a25\ncvtdq2ps xmm5, xmm5                                                    ; +0x1ad, 0x180127a2d\njmp     Llogf_sse2_continue_common                                     ; +0x1b0, 0x180127a30\njnz     short Llogf_sse2_x_is_neg                                      ; +0x1b5, 0x180127a35\nmovaps  xmm1, cs:xmmword_180170C90                                     ; +0x1b7, 0x180127a37\nmov     r8d, cs:dword_180170DA0                                        ; +0x1be, 0x180127a3e\ncall    _logf_special                                                  ; +0x1c5, 0x180127a45\njmp     short Llogf_sse2_finish                                        ; +0x1ca, 0x180127a4a\nmovaps  xmm1, cs:xmmword_180170CC0                                     ; +0x1cc, 0x180127a4c\nmov     r8d, cs:dword_180170DA4                                        ; +0x1d3, 0x180127a53\ncall    _logf_special                                                  ; +0x1da, 0x180127a5a\njmp     short Llogf_sse2_finish                                        ; +0x1df, 0x180127a5f\ncmp     eax, dword ptr cs:xmmword_180170CA0                            ; +0x1e1, 0x180127a61\njz      short Llogf_sse2_finish                                        ; +0x1e7, 0x180127a67\ncmp     eax, dword ptr cs:xmmword_180170C90                            ; +0x1e9, 0x180127a69\njz      short Llogf_sse2_x_is_neg                                      ; +0x1ef, 0x180127a6f\nor      eax, cs:dword_180170D98                                        ; +0x1f1, 0x180127a71\nmovd    xmm0, eax                                                      ; +0x1f7, 0x180127a77\nadd     rsp, 38h                                                       ; +0x1fb, 0x180127a7b\nretn                                                                   ; +0x1ff, 0x180127a7f\nvmovaps xmm4, cs:xmmword_180170CA0                                     ; +0x200, 0x180127a80\nxor     rax, rax                                                       ; +0x208, 0x180127a88\nvpsrld  xmm3, xmm0, 17h                                                ; +0x20b, 0x180127a8b\nvmovd   eax, xmm0                                                      ; +0x210, 0x180127a90\nvpsubd  xmm3, xmm3, cs:xmmword_180170CF0                               ; +0x214, 0x180127a94\nvcvtdq2ps xmm5, xmm3                                                   ; +0x21c, 0x180127a9c\nvpand   xmm1, xmm0, xmm4                                               ; +0x220, 0x180127aa0\nvcomiss xmm1, xmm4                                                     ; +0x224, 0x180127aa4\njz      Llogf_fma3_x_is_inf_or_nan                                     ; +0x228, 0x180127aa8\nvpxor   xmm1, xmm1, xmm1                                               ; +0x22e, 0x180127aae\nvcomiss xmm0, xmm1                                                     ; +0x232, 0x180127ab2\njbe     Llogf_fma3_x_is_zero_or_neg                                    ; +0x236, 0x180127ab6\nvpand   xmm2, xmm0, cs:xmmword_180170CE0                               ; +0x23c, 0x180127abc\nvsubss  xmm4, xmm0, dword ptr cs:xmmword_180170C70                     ; +0x244, 0x180127ac4\nvcomiss xmm5, cs:dword_180170D94                                       ; +0x24c, 0x180127acc\njz      Llogf_fma3_subnormal_adjust                                    ; +0x254, 0x180127ad4\nvpand   xmm1, xmm0, cs:xmmword_180170D10                               ; +0x25a, 0x180127ada\nvpand   xmm3, xmm0, cs:xmmword_180170D20                               ; +0x262, 0x180127ae2\nvpslld  xmm3, xmm3, 1                                                  ; +0x26a, 0x180127aea\nvpaddd  xmm1, xmm3, xmm1                                               ; +0x26f, 0x180127aef\nvmovd   eax, xmm1                                                      ; +0x273, 0x180127af3\nvandps  xmm4, xmm4, cs:xmmword_180170CD0                               ; +0x277, 0x180127af7\nvcomiss xmm4, cs:dword_180170D9C                                       ; +0x27f, 0x180127aff\njb      Llogf_fma3_near_one                                            ; +0x287, 0x180127b07\nshr     eax, 10h                                                       ; +0x28d, 0x180127b0d\nvpor    xmm2, xmm2, cs:xmmword_180170D70                               ; +0x290, 0x180127b10\nvpor    xmm1, xmm1, cs:xmmword_180170D70                               ; +0x298, 0x180127b18\nlea     r9, flt_180173840                                              ; +0x2a0, 0x180127b20\nvsubss  xmm1, xmm1, xmm2                                               ; +0x2a7, 0x180127b27\nvmulss  xmm1, xmm1, dword ptr [r9+rax*4]                               ; +0x2ab, 0x180127b2b\nvmovaps xmm2, cs:xmmword_180170D80                                     ; +0x2b1, 0x180127b31\nvfmadd213ss xmm2, xmm1, cs:dword_180170D90                             ; +0x2b9, 0x180127b39\nvmulss  xmm0, xmm1, xmm1                                               ; +0x2c2, 0x180127b42\nvmovaps xmm3, cs:xmmword_180170D60                                     ; +0x2c6, 0x180127b46\nlea     r9, flt_180173630                                              ; +0x2ce, 0x180127b4e\nlea     r10, flt_180173420                                             ; +0x2d5, 0x180127b55\nvfmadd231ss xmm1, xmm2, xmm0                                           ; +0x2dc, 0x180127b5c\nvfmsub213ss xmm3, xmm5, xmm1                                           ; +0x2e1, 0x180127b61\nvmovaps xmm0, cs:xmmword_180170D50                                     ; +0x2e6, 0x180127b66\nvfmadd213ss xmm0, xmm5, dword ptr [r10+rax*4]                          ; +0x2ee, 0x180127b6e\nvaddss  xmm3, xmm3, dword ptr [r9+rax*4]                               ; +0x2f4, 0x180127b74\nvaddss  xmm0, xmm0, xmm3                                               ; +0x2fa, 0x180127b7a\nadd     rsp, 38h                                                       ; +0x2fe, 0x180127b7e\nretn                                                                   ; +0x302, 0x180127b82\nalign 10h                                                              ; +0x303, 0x180127b83\nvmovaps xmm2, cs:xmmword_180170C80                                     ; +0x310, 0x180127b90\nvsubss  xmm0, xmm0, dword ptr cs:xmmword_180170C70                     ; +0x318, 0x180127b98\nvaddss  xmm2, xmm2, xmm0                                               ; +0x320, 0x180127ba0\nvdivss  xmm1, xmm0, xmm2                                               ; +0x324, 0x180127ba4\nvmulss  xmm4, xmm0, xmm1                                               ; +0x328, 0x180127ba8\nvaddss  xmm1, xmm1, xmm1                                               ; +0x32c, 0x180127bac\nvmulss  xmm2, xmm1, xmm1                                               ; +0x330, 0x180127bb0\nvmulss  xmm3, xmm1, xmm2                                               ; +0x334, 0x180127bb4\nvmovaps xmm5, cs:xmmword_180170D40                                     ; +0x338, 0x180127bb8\nvfmadd213ss xmm2, xmm5, cs:dword_180170D30                             ; +0x340, 0x180127bc0\nvfmsub213ss xmm2, xmm3, xmm4                                           ; +0x349, 0x180127bc9\nvaddss  xmm0, xmm0, xmm2                                               ; +0x34e, 0x180127bce\nadd     rsp, 38h                                                       ; +0x352, 0x180127bd2\nretn                                                                   ; +0x356, 0x180127bd6\nalign 20h                                                              ; +0x357, 0x180127bd7\nvmovaps xmm3, cs:xmmword_180170C70                                     ; +0x360, 0x180127be0\nvpor    xmm2, xmm2, xmm3                                               ; +0x368, 0x180127be8\nvsubss  xmm2, xmm2, xmm3                                               ; +0x36c, 0x180127bec\nvpsrld  xmm5, xmm2, 17h                                                ; +0x370, 0x180127bf0\nvpand   xmm2, xmm2, cs:xmmword_180170CE0                               ; +0x375, 0x180127bf5\nvmovaps xmm0, xmm2                                                     ; +0x37d, 0x180127bfd\nvpsubd  xmm5, xmm5, cs:xmmword_180170D00                               ; +0x381, 0x180127c01\nvcvtdq2ps xmm5, xmm5                                                   ; +0x389, 0x180127c09\njmp     Llogf_fma3_continue_common                                     ; +0x38d, 0x180127c0d\njnz     short Llogf_fma3_x_is_neg                                      ; +0x392, 0x180127c12\nvmovaps xmm1, cs:xmmword_180170C90                                     ; +0x394, 0x180127c14\nmov     r8d, cs:dword_180170DA0                                        ; +0x39c, 0x180127c1c\ncall    _logf_special                                                  ; +0x3a3, 0x180127c23\nadd     rsp, 38h                                                       ; +0x3a8, 0x180127c28\nretn                                                                   ; +0x3ac, 0x180127c2c\nvmovaps xmm1, cs:xmmword_180170CC0                                     ; +0x3ad, 0x180127c2d\nmov     r8d, cs:dword_180170DA4                                        ; +0x3b5, 0x180127c35\ncall    _logf_special                                                  ; +0x3bc, 0x180127c3c\nadd     rsp, 38h                                                       ; +0x3c1, 0x180127c41\nretn                                                                   ; +0x3c5, 0x180127c45\ncmp     eax, dword ptr cs:xmmword_180170CA0                            ; +0x3c6, 0x180127c46\njz      short Llogf_fma3_finish                                        ; +0x3cc, 0x180127c4c\ncmp     eax, dword ptr cs:xmmword_180170C90                            ; +0x3ce, 0x180127c4e\njz      short Llogf_fma3_x_is_neg                                      ; +0x3d4, 0x180127c54\nor      eax, cs:dword_180170D98                                        ; +0x3d6, 0x180127c56\nvmovd   xmm1, eax                                                      ; +0x3dc, 0x180127c5c\nmov     r8d, cs:dword_180170DA8                                        ; +0x3e0, 0x180127c60\ncall    _logf_special                                                  ; +0x3e7, 0x180127c67\nadd     rsp, 38h                                                       ; +0x3ec, 0x180127c6c\nretn                                                                   ; +0x3f0, 0x180127c70\nadd     rsp, 38h                                                       ; +0x3f1, 0x180127c71\nretn                                                                   ; +0x3f5, 0x180127c75", "xrefs": ["sub_18001CFD0 @ 0x18001d61c", "sub_18004DE50 @ 0x18004dec0", "sub_1800DBF50 @ 0x1800dc01e", "sub_1800DBF50 @ 0x1800dc069", "sub_1800DC760 @ 0x1800dc7cf", "sub_1800DC760 @ 0x1800dc827", "sub_1800DC760 @ 0x1800dc869", "<???> @ 0x180202a08"], "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"}