; ; fp_format_a from 0x1801375d4 to 0x180137954 (896 bytes) ; ; 3 xrefs: ; > sub_180137FE0 @ 0x1801382e6 ; > @ 0x1802035e4 ; > @ 0x1802035f0 ; ; 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 r11, rsp ; +0x0, 0x1801375d4 mov [r11+8], rbx ; +0x3, 0x1801375d7 mov [r11+10h], rbp ; +0x7, 0x1801375db mov [r11+18h], rsi ; +0xb, 0x1801375df push rdi ; +0xf, 0x1801375e3 push r12 ; +0x10, 0x1801375e4 push r13 ; +0x12, 0x1801375e6 push r14 ; +0x14, 0x1801375e8 push r15 ; +0x16, 0x1801375ea sub rsp, 70h ; +0x18, 0x1801375ec mov eax, dword ptr [rsp+98h+Size] ; +0x1c, 0x1801375f0 xor r14d, r14d ; +0x23, 0x1801375f7 test eax, eax ; +0x26, 0x1801375fa mov [rdx], r14b ; +0x28, 0x1801375fc mov rbx, rdx ; +0x2b, 0x1801375ff mov r15, rcx ; +0x2e, 0x180137602 mov rdx, [rsp+98h+arg_40]; struct __crt_locale_pointers * ; +0x31, 0x180137605 lea rcx, [r11-48h]; this ; +0x39, 0x18013760d mov edi, r14d ; +0x3d, 0x180137611 mov rbp, r9 ; +0x40, 0x180137614 cmovns edi, eax ; +0x43, 0x180137617 mov rsi, r8 ; +0x46, 0x18013761a call ??0_LocaleUpdate@@QEAA@QEAU__crt_locale_pointers@@@Z ; +0x49, 0x18013761d lea eax, [rdi+0Bh] ; +0x4e, 0x180137622 movsxd rcx, eax ; +0x51, 0x180137625 cmp rsi, rcx ; +0x54, 0x180137628 ja short loc_180137642 ; +0x57, 0x18013762b call _errno ; +0x59, 0x18013762d lea edi, [r14+22h] ; +0x5e, 0x180137632 mov [rax], edi ; +0x62, 0x180137636 call _invalid_parameter_noinfo ; +0x64, 0x180137638 jmp loc_180137921 ; +0x69, 0x18013763d mov rcx, [r15] ; +0x6e, 0x180137642 mov edx, 7FFh ; +0x71, 0x180137645 mov rax, rcx ; +0x76, 0x18013764a shr rax, 34h ; +0x79, 0x18013764d and rax, rdx ; +0x7d, 0x180137651 cmp rax, rdx ; +0x80, 0x180137654 jnz loc_1801376DE ; +0x83, 0x180137657 mov eax, [rsp+98h+arg_48] ; +0x89, 0x18013765d mov r9, rbp ; +0x90, 0x180137664 mov [rsp+98h+var_50], eax ; +0x93, 0x180137667 mov r8, rsi ; +0x97, 0x18013766b mov eax, [rsp+98h+arg_38] ; +0x9a, 0x18013766e mov rdx, rbx ; +0xa1, 0x180137675 mov [rsp+98h+var_58], r14 ; +0xa4, 0x180137678 mov rcx, r15 ; +0xa9, 0x18013767d mov [rsp+98h+var_60], eax ; +0xac, 0x180137680 mov rax, [rsp+98h+arg_20] ; +0xb0, 0x180137684 mov [rsp+98h+var_68], r14b ; +0xb8, 0x18013768c mov [rsp+98h+var_70], edi ; +0xbd, 0x180137691 mov [rsp+98h+var_78], rax ; +0xc1, 0x180137695 call sub_180137954 ; +0xc6, 0x18013769a mov edi, eax ; +0xcb, 0x18013769f test eax, eax ; +0xcd, 0x1801376a1 jz short loc_1801376AD ; +0xcf, 0x1801376a3 mov [rbx], r14b ; +0xd1, 0x1801376a5 jmp loc_180137921 ; +0xd4, 0x1801376a8 mov edx, 65h ; 'e'; Ch ; +0xd9, 0x1801376ad mov rcx, rbx; Str ; +0xde, 0x1801376b2 call strrchr ; +0xe1, 0x1801376b5 test rax, rax ; +0xe6, 0x1801376ba jz loc_18013791E ; +0xe9, 0x1801376bd mov cl, [rsp+98h+arg_30] ; +0xef, 0x1801376c3 xor cl, 1 ; +0xf6, 0x1801376ca shl cl, 5 ; +0xf9, 0x1801376cd add cl, 50h ; 'P' ; +0xfc, 0x1801376d0 mov [rax], cl ; +0xff, 0x1801376d3 mov [rax+3], r14b ; +0x101, 0x1801376d5 jmp loc_18013791E ; +0x105, 0x1801376d9 mov eax, 2Dh ; '-' ; +0x10a, 0x1801376de test rcx, rcx ; +0x10f, 0x1801376e3 jns short loc_1801376F0 ; +0x112, 0x1801376e6 mov [rbx], al ; +0x114, 0x1801376e8 inc rbx ; +0x116, 0x1801376ea mov rcx, [r15] ; +0x119, 0x1801376ed mov al, [rsp+98h+arg_30] ; +0x11c, 0x1801376f0 lea rbp, [rbx+1] ; +0x123, 0x1801376f7 xor al, 1 ; +0x127, 0x1801376fb mov r12d, 3FFh ; +0x129, 0x1801376fd movzx r13d, al ; +0x12f, 0x180137703 mov r9d, 30h ; '0' ; +0x133, 0x180137707 mov esi, r13d ; +0x139, 0x18013770d mov rax, 7FF0000000000000h ; +0x13c, 0x180137710 shl esi, 5 ; +0x146, 0x18013771a mov r10, 0FFFFFFFFFFFFFh ; +0x149, 0x18013771d add esi, 7 ; +0x153, 0x180137727 test rax, rcx ; +0x156, 0x18013772a jnz short loc_180137747 ; +0x159, 0x18013772d mov [rbx], r9b ; +0x15b, 0x18013772f mov rax, [r15] ; +0x15e, 0x180137732 and rax, r10 ; +0x161, 0x180137735 neg rax ; +0x164, 0x180137738 sbb r12, r12 ; +0x167, 0x18013773b and r12d, 3FEh ; +0x16a, 0x18013773e jmp short loc_18013774A ; +0x171, 0x180137745 mov byte ptr [rbx], 31h ; '1' ; +0x173, 0x180137747 xor ebx, ebx ; +0x176, 0x18013774a lea r14, [rbp+1] ; +0x178, 0x18013774c test edi, edi ; +0x17c, 0x180137750 jnz short loc_180137758 ; +0x17e, 0x180137752 mov al, bl ; +0x180, 0x180137754 jmp short loc_180137769 ; +0x182, 0x180137756 mov rax, [rsp+98h+var_40] ; +0x184, 0x180137758 mov rcx, [rax+0F8h] ; +0x189, 0x18013775d mov rax, [rcx] ; +0x190, 0x180137764 mov al, [rax] ; +0x193, 0x180137767 mov [rbp+0], al ; +0x195, 0x180137769 test [r15], r10 ; +0x198, 0x18013776c jbe loc_180137806 ; +0x19b, 0x18013776f movzx r8d, r9w ; +0x1a1, 0x180137775 mov rdx, 0F000000000000h ; +0x1a5, 0x180137779 test edi, edi ; +0x1af, 0x180137783 jle short loc_1801377B6 ; +0x1b1, 0x180137785 mov rax, [r15] ; +0x1b3, 0x180137787 mov cl, r8b ; +0x1b6, 0x18013778a and rax, rdx ; +0x1b9, 0x18013778d and rax, r10 ; +0x1bc, 0x180137790 shr rax, cl ; +0x1bf, 0x180137793 add ax, r9w ; +0x1c2, 0x180137796 cmp ax, 39h ; '9' ; +0x1c6, 0x18013779a jbe short loc_1801377A3 ; +0x1ca, 0x18013779e add ax, si ; +0x1cc, 0x1801377a0 mov [r14], al ; +0x1cf, 0x1801377a3 dec edi ; +0x1d2, 0x1801377a6 inc r14 ; +0x1d4, 0x1801377a8 shr rdx, 4 ; +0x1d7, 0x1801377ab add r8w, 0FFFCh ; +0x1db, 0x1801377af jns short loc_180137783 ; +0x1e0, 0x1801377b4 test r8w, r8w ; +0x1e2, 0x1801377b6 js short loc_180137806 ; +0x1e6, 0x1801377ba mov r9d, [rsp+98h+arg_48] ; +0x1e8, 0x1801377bc mov rcx, r15 ; +0x1f0, 0x1801377c4 call ?should_round_up@@YA_NQEBN_KFW4__acrt_rounding_mode@@@Z ; +0x1f3, 0x1801377c7 mov r9d, 30h ; '0' ; +0x1f8, 0x1801377cc test al, al ; +0x1fe, 0x1801377d2 jz short loc_180137806 ; +0x200, 0x1801377d4 lea rcx, [r14-1] ; +0x202, 0x1801377d6 mov dl, [rcx] ; +0x206, 0x1801377da lea eax, [rdx-46h] ; +0x208, 0x1801377dc test al, 0DFh ; +0x20b, 0x1801377df jnz short loc_1801377EB ; +0x20d, 0x1801377e1 mov [rcx], r9b ; +0x20f, 0x1801377e3 dec rcx ; +0x212, 0x1801377e6 jmp short loc_1801377DA ; +0x215, 0x1801377e9 cmp rcx, rbp ; +0x217, 0x1801377eb jz short loc_180137803 ; +0x21a, 0x1801377ee cmp dl, 39h ; '9' ; +0x21c, 0x1801377f0 jnz short loc_1801377FB ; +0x21f, 0x1801377f3 add sil, 3Ah ; ':' ; +0x221, 0x1801377f5 jmp short loc_1801377FE ; +0x225, 0x1801377f9 lea esi, [rdx+1] ; +0x227, 0x1801377fb mov [rcx], sil ; +0x22a, 0x1801377fe jmp short loc_180137806 ; +0x22d, 0x180137801 inc byte ptr [rcx-1] ; +0x22f, 0x180137803 test edi, edi ; +0x232, 0x180137806 jle short loc_18013781F ; +0x234, 0x180137808 mov r8d, edi; Size ; +0x236, 0x18013780a mov dl, r9b; Val ; +0x239, 0x18013780d mov rcx, r14; void * ; +0x23c, 0x180137810 mov ebx, edi ; +0x23f, 0x180137813 call memset ; +0x241, 0x180137815 add r14, rbx ; +0x246, 0x18013781a xor ebx, ebx ; +0x249, 0x18013781d cmp [rbp+0], bl ; +0x24b, 0x18013781f cmovnz rbp, r14 ; +0x24e, 0x180137822 shl r13b, 5 ; +0x252, 0x180137826 add r13b, 50h ; 'P' ; +0x256, 0x18013782a mov [rbp+0], r13b ; +0x25a, 0x18013782e lea r9, [rbp+2] ; +0x25e, 0x180137832 mov rax, [r15] ; +0x262, 0x180137836 shr rax, 34h ; +0x265, 0x180137839 and eax, 7FFh ; +0x269, 0x18013783d mov ecx, eax ; +0x26e, 0x180137842 sub rcx, r12 ; +0x270, 0x180137844 mov rdx, rcx ; +0x273, 0x180137847 jns short loc_180137852 ; +0x276, 0x18013784a mov rcx, r12 ; +0x278, 0x18013784c sub rcx, rax ; +0x27b, 0x18013784f mov eax, 2Bh ; '+' ; +0x27e, 0x180137852 xor r14d, r14d ; +0x283, 0x180137857 test rdx, rdx ; +0x286, 0x18013785a mov r8, r9 ; +0x289, 0x18013785d lea edx, [rax+2] ; +0x28c, 0x180137860 cmovs eax, edx ; +0x28f, 0x180137863 mov [rbp+1], al ; +0x292, 0x180137866 mov byte ptr [r9], 30h ; '0' ; +0x295, 0x180137869 cmp rcx, 3E8h ; +0x299, 0x18013786d jl short loc_1801378A5 ; +0x2a0, 0x180137874 mov rax, 20C49BA5E353F7CFh ; +0x2a2, 0x180137876 lea r8, [r9+1] ; +0x2ac, 0x180137880 imul rcx ; +0x2b0, 0x180137884 sar rdx, 7 ; +0x2b3, 0x180137887 mov rax, rdx ; +0x2b7, 0x18013788b shr rax, 3Fh ; +0x2ba, 0x18013788e add rdx, rax ; +0x2be, 0x180137892 lea eax, [rdx+30h] ; +0x2c1, 0x180137895 mov [r9], al ; +0x2c4, 0x180137898 imul rax, rdx, 0FFFFFFFFFFFFFC18h ; +0x2c7, 0x18013789b add rcx, rax ; +0x2ce, 0x1801378a2 cmp r8, r9 ; +0x2d1, 0x1801378a5 jnz short loc_1801378B0 ; +0x2d4, 0x1801378a8 cmp rcx, 64h ; 'd' ; +0x2d6, 0x1801378aa jl short loc_1801378DE ; +0x2da, 0x1801378ae mov rax, 0A3D70A3D70A3D70Bh ; +0x2dc, 0x1801378b0 imul rcx ; +0x2e6, 0x1801378ba add rdx, rcx ; +0x2e9, 0x1801378bd sar rdx, 6 ; +0x2ec, 0x1801378c0 mov rax, rdx ; +0x2f0, 0x1801378c4 shr rax, 3Fh ; +0x2f3, 0x1801378c7 add rdx, rax ; +0x2f7, 0x1801378cb lea eax, [rdx+30h] ; +0x2fa, 0x1801378ce mov [r8], al ; +0x2fd, 0x1801378d1 inc r8 ; +0x300, 0x1801378d4 imul rax, rdx, -64h ; +0x303, 0x1801378d7 add rcx, rax ; +0x307, 0x1801378db cmp r8, r9 ; +0x30a, 0x1801378de jnz short loc_1801378E9 ; +0x30d, 0x1801378e1 cmp rcx, 0Ah ; +0x30f, 0x1801378e3 jl short loc_180137914 ; +0x313, 0x1801378e7 mov rax, 6666666666666667h ; +0x315, 0x1801378e9 imul rcx ; +0x31f, 0x1801378f3 sar rdx, 2 ; +0x322, 0x1801378f6 mov rax, rdx ; +0x326, 0x1801378fa shr rax, 3Fh ; +0x329, 0x1801378fd add rdx, rax ; +0x32d, 0x180137901 lea eax, [rdx+30h] ; +0x330, 0x180137904 mov [r8], al ; +0x333, 0x180137907 inc r8 ; +0x336, 0x18013790a imul rax, rdx, -0Ah ; +0x339, 0x18013790d add rcx, rax ; +0x33d, 0x180137911 add cl, 30h ; '0' ; +0x340, 0x180137914 mov [r8], cl ; +0x343, 0x180137917 mov [r8+1], r14b ; +0x346, 0x18013791a mov edi, r14d ; +0x34a, 0x18013791e cmp [rsp+98h+var_30], r14b ; +0x34d, 0x180137921 jz short loc_180137934 ; +0x352, 0x180137926 mov rcx, [rsp+98h+var_48] ; +0x354, 0x180137928 and dword ptr [rcx+3A8h], 0FFFFFFFDh ; +0x359, 0x18013792d lea r11, [rsp+98h+var_28] ; +0x360, 0x180137934 mov eax, edi ; +0x365, 0x180137939 mov rbx, [r11+30h] ; +0x367, 0x18013793b mov rbp, [r11+38h] ; +0x36b, 0x18013793f mov rsi, [r11+40h] ; +0x36f, 0x180137943 mov rsp, r11 ; +0x373, 0x180137947 pop r15 ; +0x376, 0x18013794a pop r14 ; +0x378, 0x18013794c pop r13 ; +0x37a, 0x18013794e pop r12 ; +0x37c, 0x180137950 pop rdi ; +0x37e, 0x180137952 retn ; +0x37f, 0x180137953