; ; ldexp from 0x1801274e0 to 0x18012764e (366 bytes) ; ; 7 xrefs: ; > sub_180001A10 @ 0x180001bee ; > sub_180001A10 @ 0x180001c2d ; > sub_180012FF0 @ 0x18001309f ; > sub_180012FF0 @ 0x1800130c9 ; > sub_1800501A0 @ 0x18005020c ; > sub_1800501A0 @ 0x180050242 ; > @ 0x1802029f0 ; ; 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 rax, rsp ; +0x0, 0x1801274e0 mov [rax+10h], rbx ; +0x3, 0x1801274e3 mov [rax+20h], rsi ; +0x7, 0x1801274e7 movsd qword ptr [rax+8], xmm0 ; +0xb, 0x1801274eb push rdi ; +0x10, 0x1801274f0 sub rsp, 40h ; +0x11, 0x1801274f1 mov ebx, edx ; +0x15, 0x1801274f5 movaps xmmword ptr [rax-18h], xmm6 ; +0x17, 0x1801274f7 mov esi, 0FFC0h ; +0x1b, 0x1801274fb mov ecx, 1F80h ; +0x20, 0x180127500 mov edx, esi ; +0x25, 0x180127505 movaps xmm6, xmm0 ; +0x27, 0x180127507 call _ctrlfp ; +0x2a, 0x18012750a movzx ecx, [rsp+48h+arg_6] ; +0x2f, 0x18012750f mov rdi, rax ; +0x34, 0x180127514 mov eax, 7FF0h ; +0x37, 0x180127517 and cx, ax ; +0x3c, 0x18012751c cmp cx, ax ; +0x3f, 0x18012751f jnz short loc_180127575 ; +0x42, 0x180127522 movaps xmm0, xmm6 ; +0x44, 0x180127524 call _sptype ; +0x47, 0x180127527 test eax, eax ; +0x4c, 0x18012752c jle short loc_180127560 ; +0x4e, 0x18012752e cmp eax, 2 ; +0x50, 0x180127530 jle short loc_18012754D ; +0x53, 0x180127533 cmp eax, 3 ; +0x55, 0x180127535 jnz short loc_180127560 ; +0x58, 0x180127538 movd xmm1, ebx ; +0x5a, 0x18012753a movaps xmm0, xmm6 ; +0x5e, 0x18012753e cvtdq2pd xmm1, xmm1 ; +0x61, 0x180127541 call _handle_qnan2 ; +0x65, 0x180127545 movaps xmm6, xmm0 ; +0x6a, 0x18012754a mov rdx, rsi ; +0x6d, 0x18012754d mov rcx, rdi ; +0x70, 0x180127550 call _ctrlfp ; +0x73, 0x180127553 movaps xmm0, xmm6 ; +0x78, 0x180127558 jmp loc_180127639 ; +0x7b, 0x18012755b movaps xmm0, xmm6 ; +0x80, 0x180127560 mov ecx, 8 ; +0x83, 0x180127563 addsd xmm0, cs:qword_18016F8B0 ; +0x88, 0x180127568 jmp loc_180127619 ; +0x90, 0x180127570 ucomisd xmm6, cs:qword_180170C20 ; +0x95, 0x180127575 jp short loc_180127581 ; +0x9d, 0x18012757d jz short loc_18012754D ; +0x9f, 0x18012757f lea rdx, [rsp+48h+arg_10] ; +0xa1, 0x180127581 movaps xmm0, xmm6 ; +0xa6, 0x180127586 call _decomp ; +0xa9, 0x180127589 mov ecx, [rsp+48h+arg_10] ; +0xae, 0x18012758e test ebx, ebx ; +0xb2, 0x180127592 jns short loc_1801275A3 ; +0xb4, 0x180127594 mov eax, 80000000h ; +0xb6, 0x180127596 sub eax, ebx ; +0xbb, 0x18012759b cmp ecx, eax ; +0xbd, 0x18012759d jl short loc_1801275D6 ; +0xbf, 0x18012759f jmp short loc_1801275AE ; +0xc1, 0x1801275a1 mov eax, 7FFFFFFFh ; +0xc3, 0x1801275a3 sub eax, ebx ; +0xc8, 0x1801275a8 cmp ecx, eax ; +0xca, 0x1801275aa jg short loc_180127604 ; +0xcc, 0x1801275ac lea edx, [rcx+rbx] ; +0xce, 0x1801275ae cmp edx, 0A00h ; +0xd1, 0x1801275b1 jg short loc_180127604 ; +0xd7, 0x1801275b7 cmp edx, 400h ; +0xd9, 0x1801275b9 jle short loc_1801275CE ; +0xdf, 0x1801275bf add edx, 0FFFFFA00h ; +0xe1, 0x1801275c1 call _set_exp ; +0xe7, 0x1801275c7 jmp short loc_180127614 ; +0xec, 0x1801275cc cmp edx, 0FFFFF603h ; +0xee, 0x1801275ce jge short loc_1801275E5 ; +0xf4, 0x1801275d4 mulsd xmm0, cs:qword_180170C20 ; +0xf6, 0x1801275d6 mov ecx, 12h ; +0xfe, 0x1801275de jmp short loc_180127619 ; +0x103, 0x1801275e3 cmp edx, 0FFFFFC03h ; +0x105, 0x1801275e5 jge short loc_1801275FA ; +0x10b, 0x1801275eb add edx, 600h ; +0x10d, 0x1801275ed call _set_exp ; +0x113, 0x1801275f3 jmp short loc_1801275DE ; +0x118, 0x1801275f8 call _set_exp ; +0x11a, 0x1801275fa jmp loc_18012754A ; +0x11f, 0x1801275ff movaps xmm1, xmm0; Sign ; +0x124, 0x180127604 movsd xmm0, cs:Number; Number ; +0x127, 0x180127607 call _copysign ; +0x12f, 0x18012760f mov ecx, 11h ; +0x134, 0x180127614 movd xmm3, ebx ; +0x139, 0x180127619 movaps xmm2, xmm6 ; +0x13d, 0x18012761d cvtdq2pd xmm3, xmm3 ; +0x140, 0x180127620 mov [rsp+48h+var_20], rdi ; +0x144, 0x180127624 mov edx, 19h ; +0x149, 0x180127629 movsd [rsp+48h+var_28], xmm0 ; +0x14e, 0x18012762e call _except2 ; +0x154, 0x180127634 mov rbx, [rsp+48h+arg_8] ; +0x159, 0x180127639 mov rsi, [rsp+48h+arg_18] ; +0x15e, 0x18012763e movaps xmm6, [rsp+48h+var_18] ; +0x163, 0x180127643 add rsp, 40h ; +0x168, 0x180127648 pop rdi ; +0x16c, 0x18012764c retn ; +0x16d, 0x18012764d