; ; atan2f from 0x1801304e4 to 0x1801308d4 (1008 bytes) ; ; 18 xrefs: ; > sub_18007AC90 @ 0x18007b10f ; > sub_18007AC90 @ 0x18007b12f ; > sub_18007AC90 @ 0x18007b184 ; > sub_18007AC90 @ 0x18007b1bb ; > sub_1800E9310 @ 0x1800e93a5 ; > sub_1800E9310 @ 0x1800e93ea ; > sub_1800E9310 @ 0x1800e9564 ; > sub_1800E9310 @ 0x1800e95ad ; > sub_1801009B0 @ 0x180100b21 ; > sub_1801009B0 @ 0x180100c15 ; > sub_1801009B0 @ 0x180100d0d ; > sub_1801009B0 @ 0x180100e05 ; > sub_180101160 @ 0x180101351 ; > sub_180101160 @ 0x1801013dc ; > sub_18010A910 @ 0x18010aa22 ; > sub_18010A910 @ 0x18010aa4d ; > sub_18010BC70 @ 0x18010be8f ; > @ 0x180202e1c ; ; 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 ; mov [rsp+arg_8], rbx ; +0x0, 0x1801304e4 push rbp ; +0x5, 0x1801304e9 push rsi ; +0x6, 0x1801304ea push rdi ; +0x7, 0x1801304eb push r12 ; +0x8, 0x1801304ec push r13 ; +0xa, 0x1801304ee push r14 ; +0xc, 0x1801304f0 push r15 ; +0xe, 0x1801304f2 sub rsp, 40h ; +0x10, 0x1801304f4 movaps [rsp+78h+var_48], xmm6 ; +0x14, 0x1801304f8 mov ecx, 7FFh ; +0x19, 0x1801304fd movaps [rsp+78h+var_58], xmm7 ; +0x1e, 0x180130502 mov rdx, 7FFFFFFFFFFFFFFFh ; +0x23, 0x180130507 xorps xmm7, xmm7 ; +0x2d, 0x180130511 xorps xmm6, xmm6 ; +0x30, 0x180130514 cvtss2sd xmm7, xmm1 ; +0x33, 0x180130517 mov r12, 7FF0000000000000h ; +0x37, 0x18013051b cvtss2sd xmm6, xmm0 ; +0x41, 0x180130525 movsd [rsp+78h+arg_10], xmm7 ; +0x45, 0x180130529 mov rbp, [rsp+78h+arg_10] ; +0x4e, 0x180130532 movsd [rsp+78h+arg_10], xmm6 ; +0x56, 0x18013053a mov rax, rbp ; +0x5f, 0x180130543 mov rdi, [rsp+78h+arg_10] ; +0x62, 0x180130546 mov r15, rbp ; +0x6a, 0x18013054e shr rax, 34h ; +0x6d, 0x180130551 mov rsi, rdi ; +0x71, 0x180130555 shr rsi, 34h ; +0x74, 0x180130558 and eax, ecx ; +0x78, 0x18013055c and esi, ecx ; +0x7a, 0x18013055e mov r14, rdi ; +0x7c, 0x180130560 sub esi, eax ; +0x7f, 0x180130563 and r15, rdx ; +0x81, 0x180130565 and r14, rdx ; +0x84, 0x180130568 cmp r15, r12 ; +0x87, 0x18013056b jbe short loc_18013058A ; +0x8a, 0x18013056e movss [rsp+78h+arg_0], xmm1 ; +0x8c, 0x180130570 mov ecx, [rsp+78h+arg_0] ; +0x95, 0x180130579 call _handle_nanf ; +0x9c, 0x180130580 jmp loc_1801308B2 ; +0xa1, 0x180130585 cmp r14, r12 ; +0xa6, 0x18013058a jbe short loc_18013059A ; +0xa9, 0x18013058d movss [rsp+78h+arg_0], xmm0 ; +0xab, 0x18013058f jmp short loc_180130579 ; +0xb4, 0x180130598 xor ebx, ebx ; +0xb6, 0x18013059a lea r13d, [rbx+20h] ; +0xb8, 0x18013059c test r14, r14 ; +0xbc, 0x1801305a0 jnz short loc_1801305B7 ; +0xbf, 0x1801305a3 test rbp, rbp ; +0xc1, 0x1801305a5 js loc_18013071E ; +0xc4, 0x1801305a8 cvtpd2ps xmm0, xmm6 ; +0xca, 0x1801305ae jmp loc_1801308B2 ; +0xce, 0x1801305b2 test r15, r15 ; +0xd3, 0x1801305b7 jnz short loc_1801305D3 ; +0xd6, 0x1801305ba test rdi, rdi ; +0xd8, 0x1801305bc js short loc_1801305DD ; +0xdb, 0x1801305bf mov rcx, r13 ; +0xdd, 0x1801305c1 call _set_statfp ; +0xe0, 0x1801305c4 mov rdx, 7FFFFFFFFFFFFFFFh ; +0xe5, 0x1801305c9 cmp esi, 1Ah ; +0xef, 0x1801305d3 jle short loc_1801305FF ; +0xf2, 0x1801305d6 test rdi, rdi ; +0xf4, 0x1801305d8 jns short loc_1801305E7 ; +0xf7, 0x1801305db movss xmm6, cs:dword_180168E90 ; +0xf9, 0x1801305dd jmp short loc_1801305EF ; +0x101, 0x1801305e5 movss xmm6, cs:dword_180166F14 ; +0x103, 0x1801305e7 mov rcx, r13 ; +0x10b, 0x1801305ef call _set_statfp ; +0x10e, 0x1801305f2 movaps xmm0, xmm6 ; +0x113, 0x1801305f7 jmp loc_1801308B2 ; +0x116, 0x1801305fa cmp esi, 0FFFFFFF3h ; +0x11b, 0x1801305ff jge loc_180130714 ; +0x11e, 0x180130602 test rbp, rbp ; +0x124, 0x180130608 js loc_180130714 ; +0x127, 0x18013060b cmp esi, 0FFFFFF6Ah ; +0x12d, 0x180130611 jge short loc_180130633 ; +0x133, 0x180130617 test rdi, rdi ; +0x135, 0x180130619 jns short loc_18013062B ; +0x138, 0x18013061c movss xmm6, cs:dword_180172C68 ; +0x13a, 0x18013061e jmp loc_180130701 ; +0x142, 0x180130626 xorps xmm6, xmm6 ; +0x147, 0x18013062b jmp loc_180130701 ; +0x14a, 0x18013062e cmp esi, 0FFFFFF82h ; +0x14f, 0x180130633 jge loc_18013070B ; +0x152, 0x180130636 mov rax, 4630000000000000h ; +0x158, 0x18013063c mov rcx, 8000000000000000h ; +0x162, 0x180130646 mov [rsp+78h+arg_10], rax ; +0x16c, 0x180130650 movsd xmm0, [rsp+78h+arg_10] ; +0x174, 0x180130658 mulsd xmm0, xmm6 ; +0x17d, 0x180130661 divsd xmm0, xmm7 ; +0x181, 0x180130665 movsd [rsp+78h+arg_10], xmm0 ; +0x185, 0x180130669 mov rax, [rsp+78h+arg_10] ; +0x18e, 0x180130672 mov r8, rax ; +0x196, 0x18013067a and rax, rdx ; +0x199, 0x18013067d mov rdx, rax ; +0x19c, 0x180130680 and r8, rcx ; +0x19f, 0x180130683 shr rdx, 34h ; +0x1a2, 0x180130686 cmp edx, 64h ; 'd' ; +0x1a6, 0x18013068a jbe short loc_1801306A9 ; +0x1a9, 0x18013068d lea rbx, [rdx-64h] ; +0x1ab, 0x18013068f mov rcx, 800FFFFFFFFFFFFFh ; +0x1af, 0x180130693 shl rbx, 34h ; +0x1b9, 0x18013069d and rax, rcx ; +0x1bd, 0x1801306a1 or rbx, rax ; +0x1c0, 0x1801306a4 jmp short loc_1801306E0 ; +0x1c3, 0x1801306a7 mov rcx, 801FFFFFFFFFFFFFh ; +0x1c5, 0x1801306a9 and rax, rcx ; +0x1cf, 0x1801306b3 mov rcx, 10000000000000h ; +0x1d2, 0x1801306b6 or rax, rcx ; +0x1dc, 0x1801306c0 mov ecx, 65h ; 'e' ; +0x1df, 0x1801306c3 sub ecx, edx ; +0x1e4, 0x1801306c8 cmp ecx, 36h ; '6' ; +0x1e6, 0x1801306ca jg short loc_1801306E0 ; +0x1e9, 0x1801306cd dec ecx ; +0x1eb, 0x1801306cf shr rax, cl ; +0x1ed, 0x1801306d1 mov rbx, rax ; +0x1f0, 0x1801306d4 and eax, 1 ; +0x1f3, 0x1801306d7 shr rbx, 1 ; +0x1f6, 0x1801306da add rbx, rax ; +0x1f9, 0x1801306dd or rbx, r8 ; +0x1fc, 0x1801306e0 mov [rsp+78h+arg_10], rbx ; +0x1ff, 0x1801306e3 movsd xmm0, [rsp+78h+arg_10] ; +0x207, 0x1801306eb cvtpd2ps xmm6, xmm0 ; +0x210, 0x1801306f4 test r12, rbx ; +0x214, 0x1801306f8 jnz loc_1801305F7 ; +0x217, 0x1801306fb mov ecx, 30h ; '0' ; +0x21d, 0x180130701 jmp loc_1801305F2 ; +0x222, 0x180130706 divsd xmm6, xmm7 ; +0x227, 0x18013070b jmp loc_1801305AE ; +0x22b, 0x18013070f cmp esi, 0FFFFFFE6h ; +0x230, 0x180130714 jge short loc_18013073D ; +0x233, 0x180130717 test rbp, rbp ; +0x235, 0x180130719 jns short loc_18013073D ; +0x238, 0x18013071c test rdi, rdi ; +0x23a, 0x18013071e jns short loc_180130730 ; +0x23d, 0x180130721 movss xmm6, cs:dword_180168E94 ; +0x23f, 0x180130723 jmp loc_1801305EF ; +0x247, 0x18013072b movss xmm6, cs:dword_180164B80 ; +0x24c, 0x180130730 jmp loc_1801305EF ; +0x254, 0x180130738 cmp r14, r12 ; +0x259, 0x18013073d jnz short loc_18013078A ; +0x25c, 0x180130740 cmp r15, r12 ; +0x25e, 0x180130742 jnz short loc_18013078A ; +0x261, 0x180130745 test rbp, rbp ; +0x263, 0x180130747 jns short loc_18013076B ; +0x266, 0x18013074a test rdi, rdi ; +0x268, 0x18013074c jns short loc_18013075E ; +0x26b, 0x18013074f movss xmm6, cs:dword_180172C70 ; +0x26d, 0x180130751 jmp loc_1801305EF ; +0x275, 0x180130759 movss xmm6, cs:dword_180172C58 ; +0x27a, 0x18013075e jmp loc_1801305EF ; +0x282, 0x180130766 test rdi, rdi ; +0x287, 0x18013076b jns short loc_18013077D ; +0x28a, 0x18013076e movss xmm6, cs:dword_180172C6C ; +0x28c, 0x180130770 jmp loc_1801305EF ; +0x294, 0x180130778 movss xmm6, cs:dword_18016E558 ; +0x299, 0x18013077d jmp loc_1801305EF ; +0x2a1, 0x180130785 movsd xmm5, qword ptr cs:xmmword_1801445D0 ; +0x2a6, 0x18013078a test rbp, rbp ; +0x2ae, 0x180130792 jns short loc_18013079A ; +0x2b1, 0x180130795 xorps xmm7, xmm5 ; +0x2b3, 0x180130797 test rdi, rdi ; +0x2b6, 0x18013079a jns short loc_1801307A2 ; +0x2b9, 0x18013079d xorps xmm6, xmm5 ; +0x2bb, 0x18013079f comisd xmm6, xmm7 ; +0x2be, 0x1801307a2 mov edx, ebx ; +0x2c2, 0x1801307a6 setnbe dl ; +0x2c4, 0x1801307a8 test edx, edx ; +0x2c7, 0x1801307ab jz short loc_1801307B8 ; +0x2c9, 0x1801307ad movaps xmm0, xmm7 ; +0x2cb, 0x1801307af movaps xmm7, xmm6 ; +0x2ce, 0x1801307b2 movaps xmm6, xmm0 ; +0x2d1, 0x1801307b5 movaps xmm4, xmm6 ; +0x2d4, 0x1801307b8 divsd xmm4, xmm7 ; +0x2d7, 0x1801307bb comisd xmm4, cs:qword_180172C30 ; +0x2db, 0x1801307bf jbe short loc_180130834 ; +0x2e3, 0x1801307c7 movsd xmm2, cs:qword_180172C60 ; +0x2e5, 0x1801307c9 xorps xmm1, xmm1 ; +0x2ed, 0x1801307d1 mulsd xmm4, xmm2 ; +0x2f0, 0x1801307d4 movaps xmm3, xmm6 ; +0x2f4, 0x1801307d8 mulsd xmm3, xmm2 ; +0x2f7, 0x1801307db addsd xmm4, cs:qword_18016F8A8 ; +0x2fb, 0x1801307df cvttsd2si ecx, xmm4 ; +0x303, 0x1801307e7 mov eax, ecx ; +0x307, 0x1801307eb add ecx, 0FFFFFFF0h ; +0x309, 0x1801307ed cvtsi2sd xmm1, rax ; +0x30c, 0x1801307f0 lea rax, dbl_1801724A0 ; +0x311, 0x1801307f5 movaps xmm0, xmm1 ; +0x318, 0x1801307fc mulsd xmm1, xmm6 ; +0x31b, 0x1801307ff mulsd xmm0, xmm7 ; +0x31f, 0x180130803 mulsd xmm7, xmm2 ; +0x323, 0x180130807 subsd xmm3, xmm0 ; +0x327, 0x18013080b addsd xmm1, xmm7 ; +0x32b, 0x18013080f divsd xmm3, xmm1 ; +0x32f, 0x180130813 movaps xmm0, xmm3 ; +0x333, 0x180130817 movaps xmm4, xmm3 ; +0x336, 0x18013081a addsd xmm4, qword ptr [rax+rcx*8] ; +0x339, 0x18013081d mulsd xmm0, xmm3 ; +0x33e, 0x180130822 mulsd xmm0, xmm3 ; +0x342, 0x180130826 mulsd xmm0, cs:qword_180172C48 ; +0x346, 0x18013082a jmp short loc_180130878 ; +0x34e, 0x180130832 movsd xmm0, cs:qword_180172C28 ; +0x350, 0x180130834 comisd xmm0, xmm4 ; +0x358, 0x18013083c ja short loc_18013087C ; +0x35c, 0x180130840 movsd xmm1, cs:qword_180172C40 ; +0x35e, 0x180130842 movaps xmm2, xmm4 ; +0x366, 0x18013084a mulsd xmm2, xmm4 ; +0x369, 0x18013084d movaps xmm0, xmm2 ; +0x36d, 0x180130851 mulsd xmm0, cs:qword_180172C38 ; +0x370, 0x180130854 subsd xmm1, xmm0 ; +0x378, 0x18013085c movsd xmm0, cs:qword_180172C50 ; +0x37c, 0x180130860 mulsd xmm1, xmm2 ; +0x384, 0x180130868 mulsd xmm2, xmm4 ; +0x388, 0x18013086c subsd xmm0, xmm1 ; +0x38c, 0x180130870 mulsd xmm0, xmm2 ; +0x390, 0x180130874 subsd xmm4, xmm0 ; +0x394, 0x180130878 test edx, edx ; +0x398, 0x18013087c jz short loc_18013088F ; +0x39a, 0x18013087e movsd xmm0, cs:qword_180170C50 ; +0x39c, 0x180130880 subsd xmm0, xmm4 ; +0x3a4, 0x180130888 movaps xmm4, xmm0 ; +0x3a8, 0x18013088c test rbp, rbp ; +0x3ab, 0x18013088f jns short loc_1801308A3 ; +0x3ae, 0x180130892 movsd xmm0, cs:qword_180170C58 ; +0x3b0, 0x180130894 subsd xmm0, xmm4 ; +0x3b8, 0x18013089c movaps xmm4, xmm0 ; +0x3bc, 0x1801308a0 test rdi, rdi ; +0x3bf, 0x1801308a3 jns short loc_1801308AB ; +0x3c2, 0x1801308a6 xorps xmm4, xmm5 ; +0x3c4, 0x1801308a8 xorps xmm0, xmm0 ; +0x3c7, 0x1801308ab cvtsd2ss xmm0, xmm4 ; +0x3ca, 0x1801308ae mov rbx, [rsp+78h+arg_8] ; +0x3ce, 0x1801308b2 movaps xmm6, [rsp+78h+var_48] ; +0x3d6, 0x1801308ba movaps xmm7, [rsp+78h+var_58] ; +0x3db, 0x1801308bf add rsp, 40h ; +0x3e0, 0x1801308c4 pop r15 ; +0x3e4, 0x1801308c8 pop r14 ; +0x3e6, 0x1801308ca pop r13 ; +0x3e8, 0x1801308cc pop r12 ; +0x3ea, 0x1801308ce pop rdi ; +0x3ec, 0x1801308d0 pop rsi ; +0x3ed, 0x1801308d1 pop rbp ; +0x3ee, 0x1801308d2 retn ; +0x3ef, 0x1801308d3