; ; fp_format_e_internal from 0x180137a40 to 0x180137c12 (466 bytes) ; ; 4 xrefs: ; > sub_180137954 @ 0x180137a26 ; > sub_180137D7C @ 0x180137ead ; > @ 0x1802035fc ; > @ 0x180203608 ; ; 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, 0x180137a40 mov [rax+8], rbx ; +0x3, 0x180137a43 mov [rax+10h], rbp ; +0x7, 0x180137a47 mov [rax+18h], rsi ; +0xb, 0x180137a4b mov [rax+20h], rdi ; +0xf, 0x180137a4f push r15 ; +0x13, 0x180137a53 sub rsp, 50h ; +0x15, 0x180137a55 xor eax, eax ; +0x19, 0x180137a59 movsxd rbx, r8d ; +0x1b, 0x180137a5b test r8d, r8d ; +0x1e, 0x180137a5e mov r15b, r9b ; +0x21, 0x180137a61 mov rbp, rdx ; +0x24, 0x180137a64 mov rdi, rcx ; +0x27, 0x180137a67 cmovg eax, ebx ; +0x2a, 0x180137a6a add eax, 9 ; +0x2d, 0x180137a6d cdqe ; +0x30, 0x180137a70 cmp rdx, rax ; +0x32, 0x180137a72 ja short loc_180137AA5 ; +0x35, 0x180137a75 call _errno ; +0x37, 0x180137a77 mov ebx, 22h ; '"' ; +0x3c, 0x180137a7c mov [rax], ebx ; +0x41, 0x180137a81 call _invalid_parameter_noinfo ; +0x43, 0x180137a83 mov eax, ebx ; +0x48, 0x180137a88 mov rbx, [rsp+58h+arg_0] ; +0x4a, 0x180137a8a mov rbp, [rsp+58h+arg_8] ; +0x4f, 0x180137a8f mov rsi, [rsp+58h+arg_10] ; +0x54, 0x180137a94 mov rdi, [rsp+58h+arg_18] ; +0x59, 0x180137a99 add rsp, 50h ; +0x5e, 0x180137a9e pop r15 ; +0x62, 0x180137aa2 retn ; +0x64, 0x180137aa4 mov rdx, [rsp+58h+arg_38]; struct __crt_locale_pointers * ; +0x65, 0x180137aa5 lea rcx, [rsp+58h+var_28]; this ; +0x6d, 0x180137aad call ??0_LocaleUpdate@@QEAA@QEAU__crt_locale_pointers@@@Z ; +0x72, 0x180137ab2 cmp [rsp+58h+arg_30], 0 ; +0x77, 0x180137ab7 mov rsi, [rsp+58h+arg_28] ; +0x7f, 0x180137abf jz short loc_180137AF2 ; +0x87, 0x180137ac7 xor edx, edx ; +0x89, 0x180137ac9 cmp dword ptr [rsi], 2Dh ; '-' ; +0x8b, 0x180137acb setz dl ; +0x8e, 0x180137ace add rdx, rdi; Src ; +0x91, 0x180137ad1 test ebx, ebx ; +0x94, 0x180137ad4 jle short loc_180137AF2 ; +0x96, 0x180137ad6 or r8, 0FFFFFFFFFFFFFFFFh ; +0x98, 0x180137ad8 inc r8 ; +0x9c, 0x180137adc cmp byte ptr [rdx+r8], 0 ; +0x9f, 0x180137adf jnz short loc_180137ADC ; +0xa4, 0x180137ae4 inc r8; Size ; +0xa6, 0x180137ae6 lea rcx, [rdx+1]; void * ; +0xa9, 0x180137ae9 call memmove ; +0xad, 0x180137aed cmp dword ptr [rsi], 2Dh ; '-' ; +0xb2, 0x180137af2 mov rdx, rdi ; +0xb5, 0x180137af5 jnz short loc_180137B01 ; +0xb8, 0x180137af8 mov byte ptr [rdi], 2Dh ; '-' ; +0xba, 0x180137afa lea rdx, [rdi+1] ; +0xbd, 0x180137afd test ebx, ebx ; +0xc1, 0x180137b01 jle short loc_180137B20 ; +0xc3, 0x180137b03 mov al, [rdx+1] ; +0xc5, 0x180137b05 mov [rdx], al ; +0xc8, 0x180137b08 inc rdx ; +0xca, 0x180137b0a mov rax, [rsp+58h+var_20] ; +0xcd, 0x180137b0d mov rcx, [rax+0F8h] ; +0xd2, 0x180137b12 mov rax, [rcx] ; +0xd9, 0x180137b19 mov cl, [rax] ; +0xdc, 0x180137b1c mov [rdx], cl ; +0xde, 0x180137b1e movzx ecx, [rsp+58h+arg_30] ; +0xe0, 0x180137b20 lea r8, aE000 ; +0xe8, 0x180137b28 add rbx, rdx ; +0xef, 0x180137b2f xor rcx, 1 ; +0xf2, 0x180137b32 add rbx, rcx ; +0xf6, 0x180137b36 sub rdi, rbx ; +0xf9, 0x180137b39 mov rcx, rbx; Destination ; +0xfc, 0x180137b3c cmp rbp, 0FFFFFFFFFFFFFFFFh ; +0xff, 0x180137b3f lea rdx, [rdi+rbp] ; +0x103, 0x180137b43 cmovz rdx, rbp; SizeInBytes ; +0x107, 0x180137b47 call strcpy_s ; +0x10b, 0x180137b4b test eax, eax ; +0x110, 0x180137b50 jnz loc_180137BFC ; +0x112, 0x180137b52 lea rcx, [rbx+2]; void * ; +0x118, 0x180137b58 test r15b, r15b ; +0x11c, 0x180137b5c jz short loc_180137B64 ; +0x11f, 0x180137b5f mov byte ptr [rbx], 45h ; 'E' ; +0x121, 0x180137b61 mov rax, [rsi+8] ; +0x124, 0x180137b64 cmp byte ptr [rax], 30h ; '0' ; +0x128, 0x180137b68 jz short loc_180137BC4 ; +0x12b, 0x180137b6b mov r8d, [rsi+4] ; +0x12d, 0x180137b6d sub r8d, 1 ; +0x131, 0x180137b71 jns short loc_180137B7E ; +0x135, 0x180137b75 neg r8d ; +0x137, 0x180137b77 mov byte ptr [rbx+1], 2Dh ; '-' ; +0x13a, 0x180137b7a cmp r8d, 64h ; 'd' ; +0x13e, 0x180137b7e jl short loc_180137B9F ; +0x142, 0x180137b82 mov eax, 51EB851Fh ; +0x144, 0x180137b84 imul r8d ; +0x149, 0x180137b89 sar edx, 5 ; +0x14c, 0x180137b8c mov eax, edx ; +0x14f, 0x180137b8f shr eax, 1Fh ; +0x151, 0x180137b91 add edx, eax ; +0x154, 0x180137b94 add [rbx+2], dl ; +0x156, 0x180137b96 imul eax, edx, -64h ; +0x159, 0x180137b99 add r8d, eax ; +0x15c, 0x180137b9c cmp r8d, 0Ah ; +0x15f, 0x180137b9f jl short loc_180137BC0 ; +0x163, 0x180137ba3 mov eax, 66666667h ; +0x165, 0x180137ba5 imul r8d ; +0x16a, 0x180137baa sar edx, 2 ; +0x16d, 0x180137bad mov eax, edx ; +0x170, 0x180137bb0 shr eax, 1Fh ; +0x172, 0x180137bb2 add edx, eax ; +0x175, 0x180137bb5 add [rbx+3], dl ; +0x177, 0x180137bb7 imul eax, edx, -0Ah ; +0x17a, 0x180137bba add r8d, eax ; +0x17d, 0x180137bbd add [rbx+4], r8b ; +0x180, 0x180137bc0 cmp [rsp+58h+arg_20], 2 ; +0x184, 0x180137bc4 jnz short loc_180137BE2 ; +0x18c, 0x180137bcc cmp byte ptr [rcx], 30h ; '0' ; +0x18e, 0x180137bce jnz short loc_180137BE2 ; +0x191, 0x180137bd1 lea rdx, [rcx+1]; Src ; +0x193, 0x180137bd3 mov r8d, 3; Size ; +0x197, 0x180137bd7 call memmove ; +0x19d, 0x180137bdd cmp [rsp+58h+var_10], 0 ; +0x1a2, 0x180137be2 jz short loc_180137BF5 ; +0x1a7, 0x180137be7 mov rax, [rsp+58h+var_28] ; +0x1a9, 0x180137be9 and dword ptr [rax+3A8h], 0FFFFFFFDh ; +0x1ae, 0x180137bee xor eax, eax ; +0x1b5, 0x180137bf5 jmp loc_180137A8A ; +0x1b7, 0x180137bf7 and [rsp+58h+var_38], 0 ; +0x1bc, 0x180137bfc xor r9d, r9d; LineNo ; +0x1c2, 0x180137c02 xor r8d, r8d; FileName ; +0x1c5, 0x180137c05 xor edx, edx; FunctionName ; +0x1c8, 0x180137c08 xor ecx, ecx; Expression ; +0x1ca, 0x180137c0a call _invoke_watson ; +0x1cc, 0x180137c0c db 0CCh ; +0x1d1, 0x180137c11