; ; expf from 0x18012faf0 to 0x18012fd97 (679 bytes) ; ; 11 xrefs: ; > sub_1800564A0 @ 0x18005663e ; > sub_1800564A0 @ 0x180056696 ; > sub_1800895C0 @ 0x1800895f3 ; > sub_1800DBF50 @ 0x1800dbfc0 ; > sub_1800DBF50 @ 0x1800dbff9 ; > sub_1800DBF50 @ 0x1800dc03d ; > sub_1800DC760 @ 0x1800dc84c ; > sub_1800DC760 @ 0x1800dc89e ; > sub_1800F23B0 @ 0x1800f2468 ; > sub_1800F23B0 @ 0x1800f24c4 ; > @ 0x180202de0 ; ; This function is hookable on this platform! ; ; Using BromaIDA 8.0.0 @ https:;github.com/Stazzical/BromaIDA ; Using bindings at commit ba9f177b at Thu Jul 16 22:52:06 2026 from https:;github.com/geode-sdk/bindings ; sub rsp, 38h ; +0x0, 0x18012faf0 cmp cs:dword_1801F4D54, 0 ; +0x4, 0x18012faf4 jnz Lexpf_fma3 ; +0xb, 0x18012fafb movd edx, xmm0 ; +0x11, 0x18012fb01 btr edx, 1Fh ; +0x15, 0x18012fb05 cmp edx, dword ptr cs:xmmword_1801721B0 ; +0x19, 0x18012fb09 jge Lexpf_x_is_inf_or_nan ; +0x1f, 0x18012fb0f cvtss2sd xmm0, xmm0 ; +0x25, 0x18012fb15 movapd xmm3, cs:xmmword_1801721E0 ; +0x29, 0x18012fb19 mulsd xmm3, xmm0 ; +0x31, 0x18012fb21 comisd xmm3, cs:qword_1801721C0 ; +0x35, 0x18012fb25 jnb Lexpf_y_is_inf ; +0x3d, 0x18012fb2d comisd xmm3, cs:qword_1801721D0 ; +0x43, 0x18012fb33 jb Lexpf_y_is_zero ; +0x4b, 0x18012fb3b cvtpd2dq xmm4, xmm3 ; +0x51, 0x18012fb41 lea r10, dbl_180173A60 ; +0x55, 0x18012fb45 cvtdq2pd xmm1, xmm4 ; +0x5c, 0x18012fb4c movapd xmm2, cs:xmmword_1801721F0 ; +0x60, 0x18012fb50 mulpd xmm2, xmm1 ; +0x68, 0x18012fb58 movd ecx, xmm4 ; +0x6c, 0x18012fb5c mov rax, 3Fh ; '?' ; +0x70, 0x18012fb60 and eax, ecx ; +0x77, 0x18012fb67 subpd xmm0, xmm2 ; +0x79, 0x18012fb69 movapd xmm1, xmm0 ; +0x7d, 0x18012fb6d sub ecx, eax ; +0x81, 0x18012fb71 sar ecx, 6 ; +0x83, 0x18012fb73 movapd xmm3, cs:xmmword_180172200 ; +0x86, 0x18012fb76 mulpd xmm3, xmm0 ; +0x8e, 0x18012fb7e mulpd xmm0, xmm0 ; +0x92, 0x18012fb82 addpd xmm3, cs:xmmword_180172210 ; +0x96, 0x18012fb86 mulpd xmm0, xmm3 ; +0x9e, 0x18012fb8e addpd xmm0, xmm1 ; +0xa2, 0x18012fb92 add rcx, 3FFh ; +0xa6, 0x18012fb96 shl rcx, 34h ; +0xad, 0x18012fb9d movsd xmm2, qword ptr [r10+rax*8] ; +0xb1, 0x18012fba1 mulpd xmm0, xmm2 ; +0xb7, 0x18012fba7 addpd xmm0, xmm2 ; +0xbb, 0x18012fbab movq xmm1, rcx ; +0xbf, 0x18012fbaf mulpd xmm0, xmm1 ; +0xc4, 0x18012fbb4 cvtsd2ss xmm0, xmm0 ; +0xc8, 0x18012fbb8 add rsp, 38h ; +0xcc, 0x18012fbbc retn ; +0xd0, 0x18012fbc0 align 10h ; +0xd1, 0x18012fbc1 xorps xmm1, xmm1 ; +0xe0, 0x18012fbd0 movd xmm0, edx ; +0xe3, 0x18012fbd3 mov r8d, cs:dword_180172230 ; +0xe7, 0x18012fbd7 call _expf_special ; +0xee, 0x18012fbde jmp short Lexpf_finish ; +0xf3, 0x18012fbe3 align 10h ; +0xf5, 0x18012fbe5 movaps xmm1, cs:xmmword_1801721B0 ; +0x100, 0x18012fbf0 movd xmm0, edx ; +0x107, 0x18012fbf7 mov r8d, cs:dword_180172234 ; +0x10b, 0x18012fbfb call _expf_special ; +0x112, 0x18012fc02 jmp short Lexpf_finish ; +0x117, 0x18012fc07 align 10h ; +0x119, 0x18012fc09 xorps xmm0, xmm0 ; +0x120, 0x18012fc10 add rsp, 38h ; +0x123, 0x18012fc13 retn ; +0x127, 0x18012fc17 align 20h ; +0x128, 0x18012fc18 add rsp, 38h ; +0x130, 0x18012fc20 retn ; +0x134, 0x18012fc24 align 10h ; +0x135, 0x18012fc25 movd edx, xmm0 ; +0x140, 0x18012fc30 cmp edx, dword ptr cs:xmmword_1801721B0 ; +0x144, 0x18012fc34 jz short Lexpf_finish ; +0x14a, 0x18012fc3a cmp edx, cs:dword_180172220 ; +0x14c, 0x18012fc3c jz short Lexpf_process_zero ; +0x152, 0x18012fc42 or edx, cs:dword_180172224 ; +0x154, 0x18012fc44 movd xmm1, edx ; +0x15a, 0x18012fc4a mov r8d, cs:dword_18017222C ; +0x15e, 0x18012fc4e call _expf_special ; +0x165, 0x18012fc55 jmp short Lexpf_finish ; +0x16a, 0x18012fc5a align 20h ; +0x16c, 0x18012fc5c vmovd edx, xmm0 ; +0x170, 0x18012fc60 btr edx, 1Fh ; +0x174, 0x18012fc64 cmp edx, dword ptr cs:xmmword_1801721B0 ; +0x178, 0x18012fc68 jge Lexpf_fma3_x_is_inf_or_nan ; +0x17e, 0x18012fc6e vcvtss2sd xmm0, xmm0, xmm0 ; +0x184, 0x18012fc74 vmulsd xmm3, xmm0, qword ptr cs:xmmword_1801721E0 ; +0x188, 0x18012fc78 vcomisd xmm3, cs:qword_1801721C0 ; +0x190, 0x18012fc80 jnb Lexpf_fma3_y_is_inf ; +0x198, 0x18012fc88 vucomisd xmm3, cs:qword_1801721D0 ; +0x19e, 0x18012fc8e jb short Lexpf_fma3_y_is_zero ; +0x1a6, 0x18012fc96 vcvtpd2dq xmm4, xmm3 ; +0x1a8, 0x18012fc98 lea r10, dbl_180173A60 ; +0x1ac, 0x18012fc9c vcvtdq2pd xmm1, xmm4 ; +0x1b3, 0x18012fca3 vfnmadd231sd xmm0, xmm1, qword ptr cs:xmmword_1801721F0 ; +0x1b7, 0x18012fca7 vmovd ecx, xmm4 ; +0x1c0, 0x18012fcb0 mov rax, 3Fh ; '?' ; +0x1c4, 0x18012fcb4 and eax, ecx ; +0x1cb, 0x18012fcbb vmovapd xmm1, xmm0 ; +0x1cd, 0x18012fcbd sub ecx, eax ; +0x1d1, 0x18012fcc1 sar ecx, 6 ; +0x1d3, 0x18012fcc3 vmovapd xmm3, cs:xmmword_180172200 ; +0x1d6, 0x18012fcc6 vmulsd xmm0, xmm0, xmm0 ; +0x1de, 0x18012fcce vfmadd213sd xmm3, xmm1, qword ptr cs:xmmword_180172210 ; +0x1e2, 0x18012fcd2 vfmadd213sd xmm0, xmm3, xmm1 ; +0x1eb, 0x18012fcdb add rcx, 3FFh ; +0x1f0, 0x18012fce0 shl rcx, 34h ; +0x1f7, 0x18012fce7 vmovsd xmm2, qword ptr [r10+rax*8] ; +0x1fb, 0x18012fceb vfmadd213sd xmm0, xmm2, xmm2 ; +0x201, 0x18012fcf1 vmovq xmm2, rcx ; +0x206, 0x18012fcf6 vmulsd xmm0, xmm0, xmm2 ; +0x20b, 0x18012fcfb vcvtsd2ss xmm0, xmm0, xmm0 ; +0x20f, 0x18012fcff add rsp, 38h ; +0x213, 0x18012fd03 retn ; +0x217, 0x18012fd07 align 10h ; +0x218, 0x18012fd08 vxorps xmm1, xmm1, xmm1 ; +0x220, 0x18012fd10 vmovd xmm0, edx ; +0x224, 0x18012fd14 mov r8d, cs:dword_180172230 ; +0x228, 0x18012fd18 call _expf_special ; +0x22f, 0x18012fd1f jmp short Lexpf_fma3_finish ; +0x234, 0x18012fd24 align 10h ; +0x236, 0x18012fd26 vmovaps xmm1, cs:xmmword_1801721B0 ; +0x240, 0x18012fd30 vmovd xmm0, edx ; +0x248, 0x18012fd38 mov r8d, cs:dword_180172234 ; +0x24c, 0x18012fd3c call _expf_special ; +0x253, 0x18012fd43 jmp short $+2 ; +0x258, 0x18012fd48 add rsp, 38h ; +0x25a, 0x18012fd4a retn ; +0x25e, 0x18012fd4e vxorps xmm0, xmm0, xmm0 ; +0x25f, 0x18012fd4f jmp short Lexpf_fma3_final_check ; +0x263, 0x18012fd53 align 20h ; +0x265, 0x18012fd55 vmovd edx, xmm0 ; +0x270, 0x18012fd60 cmp edx, dword ptr cs:xmmword_1801721B0 ; +0x274, 0x18012fd64 jz Lexpf_finish ; +0x27a, 0x18012fd6a cmp edx, cs:dword_180172220 ; +0x280, 0x18012fd70 jz Lexpf_process_zero ; +0x286, 0x18012fd76 or edx, cs:dword_180172224 ; +0x28c, 0x18012fd7c vmovd xmm1, edx ; +0x292, 0x18012fd82 mov r8d, cs:dword_18017222C ; +0x296, 0x18012fd86 call _expf_special ; +0x29d, 0x18012fd8d jmp Lexpf_finish ; +0x2a2, 0x18012fd92