; ; fp_format_f_internal from 0x180137c14 to 0x180137d79 (357 bytes) ; ; 3 xrefs: ; > sub_180137D7C @ 0x180137e69 ; > sub_180137FE0 @ 0x18013826c ; > @ 0x180203614 ; ; 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, 0x180137c14 mov [rax+8], rbx ; +0x3, 0x180137c17 mov [rax+10h], rbp ; +0x7, 0x180137c1b mov [rax+18h], rsi ; +0xb, 0x180137c1f mov [rax+20h], rdi ; +0xf, 0x180137c23 push r14 ; +0x13, 0x180137c27 sub rsp, 40h ; +0x15, 0x180137c29 mov rdx, [rsp+48h+arg_28]; struct __crt_locale_pointers * ; +0x19, 0x180137c2d mov rbx, rcx ; +0x1e, 0x180137c32 lea rcx, [rax-28h]; this ; +0x21, 0x180137c35 mov r14, r9 ; +0x25, 0x180137c39 mov esi, r8d ; +0x28, 0x180137c3c call ??0_LocaleUpdate@@QEAA@QEAU__crt_locale_pointers@@@Z ; +0x2b, 0x180137c3f cmp [rsp+48h+arg_20], 0 ; +0x30, 0x180137c44 movsxd rcx, dword ptr [r14+4] ; +0x35, 0x180137c49 jz short loc_180137C69 ; +0x39, 0x180137c4d lea eax, [rcx-1] ; +0x3b, 0x180137c4f cmp eax, esi ; +0x3e, 0x180137c52 jnz short loc_180137C69 ; +0x40, 0x180137c54 xor eax, eax ; +0x42, 0x180137c56 cmp dword ptr [r14], 2Dh ; '-' ; +0x44, 0x180137c58 setz al ; +0x48, 0x180137c5c add rax, rbx ; +0x4b, 0x180137c5f mov word ptr [rcx+rax-1], 30h ; '0' ; +0x4e, 0x180137c62 cmp dword ptr [r14], 2Dh ; '-' ; +0x55, 0x180137c69 jnz short loc_180137C75 ; +0x59, 0x180137c6d mov byte ptr [rbx], 2Dh ; '-' ; +0x5b, 0x180137c6f inc rbx ; +0x5e, 0x180137c72 movsxd rax, dword ptr [r14+4] ; +0x61, 0x180137c75 or rdi, 0FFFFFFFFFFFFFFFFh ; +0x65, 0x180137c79 test eax, eax ; +0x69, 0x180137c7d jg short loc_180137CCA ; +0x6b, 0x180137c7f jnz short loc_180137C90 ; +0x6d, 0x180137c81 mov rax, [r14+8] ; +0x6f, 0x180137c83 cmp byte ptr [rax], 30h ; '0' ; +0x73, 0x180137c87 jnz short loc_180137C90 ; +0x76, 0x180137c8a mov al, 1 ; +0x78, 0x180137c8c jmp short loc_180137C92 ; +0x7a, 0x180137c8e xor al, al ; +0x7c, 0x180137c90 cmp [rsp+48h+arg_20], 0 ; +0x7e, 0x180137c92 jz short loc_180137CA3 ; +0x83, 0x180137c97 test al, al ; +0x85, 0x180137c99 jz short loc_180137CA3 ; +0x87, 0x180137c9b lea rbp, [rbx+1] ; +0x89, 0x180137c9d jmp short loc_180137CC2 ; +0x8d, 0x180137ca1 lea rbp, [rbx+1] ; +0x8f, 0x180137ca3 mov r8, rdi ; +0x93, 0x180137ca7 inc r8 ; +0x96, 0x180137caa cmp byte ptr [rbx+r8], 0 ; +0x99, 0x180137cad jnz short loc_180137CAA ; +0x9e, 0x180137cb2 inc r8; Size ; +0xa0, 0x180137cb4 mov rdx, rbx; Src ; +0xa3, 0x180137cb7 mov rcx, rbp; void * ; +0xa6, 0x180137cba call memmove ; +0xa9, 0x180137cbd mov byte ptr [rbx], 30h ; '0' ; +0xae, 0x180137cc2 mov rbx, rbp ; +0xb1, 0x180137cc5 jmp short loc_180137CCD ; +0xb4, 0x180137cc8 add rbx, rax ; +0xb6, 0x180137cca test esi, esi ; +0xb9, 0x180137ccd jle short loc_180137D49 ; +0xbb, 0x180137ccf lea rbp, [rbx+1] ; +0xbd, 0x180137cd1 mov r8, rdi ; +0xc1, 0x180137cd5 inc r8 ; +0xc4, 0x180137cd8 cmp byte ptr [rbx+r8], 0 ; +0xc7, 0x180137cdb jnz short loc_180137CD8 ; +0xcc, 0x180137ce0 inc r8; Size ; +0xce, 0x180137ce2 mov rdx, rbx; Src ; +0xd1, 0x180137ce5 mov rcx, rbp; void * ; +0xd4, 0x180137ce8 call memmove ; +0xd7, 0x180137ceb mov rax, [rsp+48h+var_20] ; +0xdc, 0x180137cf0 mov rcx, [rax+0F8h] ; +0xe1, 0x180137cf5 mov rax, [rcx] ; +0xe8, 0x180137cfc mov cl, [rax] ; +0xeb, 0x180137cff mov [rbx], cl ; +0xed, 0x180137d01 mov eax, [r14+4] ; +0xef, 0x180137d03 test eax, eax ; +0xf3, 0x180137d07 jns short loc_180137D49 ; +0xf5, 0x180137d09 neg eax ; +0xf7, 0x180137d0b cmp [rsp+48h+arg_20], 0 ; +0xf9, 0x180137d0d jnz short loc_180137D18 ; +0xfe, 0x180137d12 cmp eax, esi ; +0x100, 0x180137d14 jge short loc_180137D1A ; +0x102, 0x180137d16 mov esi, eax ; +0x104, 0x180137d18 test esi, esi ; +0x106, 0x180137d1a jz short loc_180137D39 ; +0x108, 0x180137d1c inc rdi ; +0x10a, 0x180137d1e cmp byte ptr [rdi+rbp], 0 ; +0x10d, 0x180137d21 jnz short loc_180137D1E ; +0x111, 0x180137d25 movsxd rcx, esi ; +0x113, 0x180137d27 lea r8, [rdi+1]; Size ; +0x116, 0x180137d2a add rcx, rbp; void * ; +0x11a, 0x180137d2e mov rdx, rbp; Src ; +0x11d, 0x180137d31 call memmove ; +0x120, 0x180137d34 movsxd r8, esi; Size ; +0x125, 0x180137d39 mov edx, 30h ; '0'; Val ; +0x128, 0x180137d3c mov rcx, rbp; void * ; +0x12d, 0x180137d41 call memset ; +0x130, 0x180137d44 cmp [rsp+48h+var_10], 0 ; +0x135, 0x180137d49 jz short loc_180137D5C ; +0x13a, 0x180137d4e mov rax, [rsp+48h+var_28] ; +0x13c, 0x180137d50 and dword ptr [rax+3A8h], 0FFFFFFFDh ; +0x141, 0x180137d55 mov rbx, [rsp+48h+arg_0] ; +0x148, 0x180137d5c xor eax, eax ; +0x14d, 0x180137d61 mov rbp, [rsp+48h+arg_8] ; +0x14f, 0x180137d63 mov rsi, [rsp+48h+arg_10] ; +0x154, 0x180137d68 mov rdi, [rsp+48h+arg_18] ; +0x159, 0x180137d6d add rsp, 40h ; +0x15e, 0x180137d72 pop r14 ; +0x162, 0x180137d76 retn ; +0x164, 0x180137d78