// // __multtenpow12 from 0x18012d8dc to 0x18012dba6 (714 bytes) // // 3 xrefs: // > __crt_stdio_output::output_processor,__crt_stdio_output::standard_base>>::process @ 0x18012cc6a // > sub_18012D200 @ 0x18012d222 // > @ 0x180202c78 // // 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 // char __fastcall _multtenpow12(__int64 a1, __int64 a2, __int64 a3) { unsigned __int16 v3; // ax __int16 v4; // si __int64 v5; // rbx char v6; // al __int64 v7; // rdx int v8; // ecx int v10; // edx __int64 v11; // rdi __int16 v12; // ax __int16 v13; // cx bool v14; // r8 int v15; // ebp int v16; // ecx int v17; // [rsp+30h] [rbp-38h] BYREF __int16 v18; // [rsp+34h] [rbp-34h] v3 = *(_WORD *)(a1 + 66); v4 = 120; v5 = a1; if ( v3 > 0x64u ) { if ( v3 <= 0x67u ) goto LABEL_34; if ( v3 != 105 ) { switch ( v3 ) { case 'n': v6 = unknown_libname_52(); goto LABEL_35; case 'o': v8 = *(_DWORD *)(a1 + 48); if ( (v8 & 0x20) != 0 ) *(_DWORD *)(v5 + 48) = v8 | 0x80; v7 = 8; a1 = v5; goto LABEL_32; case 'p': *(_DWORD *)(a1 + 56) = 16; *(_DWORD *)(a1 + 60) = 11; LABEL_25: LOBYTE(a3) = 1; v7 = 16; LABEL_33: v6 = sub_18012E820(a1, v7, a3); goto LABEL_35; case 's': LABEL_23: v6 = unknown_libname_55(); goto LABEL_35; } if ( v3 != 117 ) { if ( v3 != 120 ) return 0; v7 = 16; goto LABEL_32; } LABEL_31: v7 = 10; LABEL_32: a3 = 0; goto LABEL_33; } LABEL_30: *(_DWORD *)(a1 + 48) |= 0x10u; goto LABEL_31; } if ( v3 == 100 ) goto LABEL_30; if ( v3 != 65 ) { if ( v3 == 67 ) { LABEL_12: v6 = unknown_libname_49(a1, 0); goto LABEL_35; } if ( v3 <= 0x44u ) return 0; if ( v3 > 0x47u ) { if ( v3 != 83 ) { if ( v3 != 88 ) { if ( v3 == 90 ) { v6 = unknown_libname_43(); goto LABEL_35; } if ( v3 != 97 ) { if ( v3 == 99 ) goto LABEL_12; return 0; } goto LABEL_34; } goto LABEL_25; } goto LABEL_23; } } LABEL_34: v6 = unknown_libname_46(); LABEL_35: if ( !v6 ) return 0; if ( !*(_BYTE *)(v5 + 64) ) { v10 = *(_DWORD *)(v5 + 48); v17 = 0; v11 = 0; v18 = 0; if ( (v10 & 0x10) == 0 ) goto LABEL_47; if ( (v10 & 0x40) != 0 ) { v12 = 45; } else { if ( (v10 & 1) == 0 ) { if ( (v10 & 2) == 0 ) goto LABEL_47; LOWORD(v17) = 32; LABEL_46: v11 = 1; LABEL_47: v13 = *(_WORD *)(v5 + 66); v14 = ((v13 - 88) & 0xFFDF) == 0 && (v10 & 0x20) != 0; if ( v14 || ((v13 - 65) & 0xFFDF) == 0 ) { *((_WORD *)&v17 + v11) = 48; if ( v13 == 88 || v13 == 65 ) v4 = 88; *((_WORD *)&v17 + v11 + 1) = v4; LODWORD(v11) = v11 + 2; } v15 = *(_DWORD *)(v5 + 52) - *(_DWORD *)(v5 + 80) - v11; if ( (v10 & 0xC) == 0 ) unknown_libname_36((__int64 *)(v5 + 1128), 32, v15, (int *)(v5 + 40)); unknown_libname_60(v5 + 1128, &v17, (unsigned int)v11, v5 + 40, v5 + 16); v16 = *(_DWORD *)(v5 + 48); if ( (v16 & 8) != 0 && (v16 & 4) == 0 ) unknown_libname_36((__int64 *)(v5 + 1128), 48, v15, (int *)(v5 + 40)); unknown_libname_58(v5, 0); if ( *(int *)(v5 + 40) >= 0 && (*(_DWORD *)(v5 + 48) & 4) != 0 ) unknown_libname_36((__int64 *)(v5 + 1128), 32, v15, (int *)(v5 + 40)); return 1; } v12 = 43; } LOWORD(v17) = v12; goto LABEL_46; } return 1; }