// // should_round_up from 0x180137ec8 to 0x180137fde (278 bytes) // // 3 xrefs: // > fp_format_a @ 0x1801377c7 // > @ 0x180203620 // > @ 0x18020362c // // 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 should_round_up(unsigned __int64 *a1, __int64 a2, __int16 a3, int a4) { int v4; // r14d unsigned __int64 v6; // rbx int v9; // eax unsigned __int64 v10; // r8 unsigned __int64 v11; // rax char v12; // dl v4 = a3; v6 = (a2 & *a1 & 0xFFFFFFFFFFFFFLL) >> a3; if ( !a4 ) return (unsigned __int16)v6 >= 8u; v9 = fegetround(); switch ( v9 ) { case 0: v10 = *a1; v11 = (a2 & *a1 & 0xFFFFFFFFFFFFFLL) >> v4; if ( (unsigned __int16)v11 > 8u ) return 1; if ( (unsigned __int16)v11 >= 8u ) { v12 = 1; if ( (v10 & ((1LL << v4) - 1) & 0xFFFFFFFFFFFFFLL) == 0 ) { if ( v4 == 48 ) LOBYTE(v10) = (v10 & 0x7FF0000000000000LL) != 0; else v10 = (a2 & (v10 >> 4) & 0xFFFFFFFFFFFFLL) >> v4; return v10 & 1; } return v12; } return 0; case 512: return (_WORD)v6 && (*a1 & 0x8000000000000000uLL) == 0LL; case 256: return (_WORD)v6 && (*a1 & 0x8000000000000000uLL) != 0LL; } return 0; }