// // memcmp from 0x1801247b0 to 0x180124877 (199 bytes) // // 7 xrefs: // > sub_180045B60 @ 0x180045f2b // > sub_18005A650 @ 0x18005a90d // > sub_1800B80C0 @ 0x1800b813b // > sub_1800D4BB0 @ 0x1800d4be3 // > sub_1800EABD0 @ 0x1800ead6a // > sub_1800EB320 @ 0x1800eb411 // > @ 0x18020266c // // 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 // int __cdecl memcmp(const void *Buf1, const void *Buf2, size_t Size) { signed __int64 v3; // rdx bool v4; // cf size_t v6; // r9 unsigned __int64 v7; // rax size_t v8; // r9 v3 = (_BYTE *)Buf2 - (_BYTE *)Buf1; if ( Size < 8 ) goto mcmp30; for ( ; ((unsigned __int8)Buf1 & 7) != 0; --Size ) { v4 = *(_BYTE *)Buf1 < *((_BYTE *)Buf1 + v3); if ( *(_BYTE *)Buf1 != *((_BYTE *)Buf1 + v3) ) return -v4 - (v4 - 1); Buf1 = (char *)Buf1 + 1; } if ( !(Size >> 3) ) { mcmp30: if ( !Size ) return 0; while ( 1 ) { v4 = *(_BYTE *)Buf1 < *((_BYTE *)Buf1 + v3); if ( *(_BYTE *)Buf1 != *((_BYTE *)Buf1 + v3) ) break; Buf1 = (char *)Buf1 + 1; if ( !--Size ) return 0; } return -v4 - (v4 - 1); } v6 = Size >> 5; if ( Size >> 5 ) { while ( 1 ) { v7 = *(_QWORD *)Buf1; if ( *(_QWORD *)Buf1 != *(_QWORD *)((char *)Buf1 + v3) ) break; v7 = *((_QWORD *)Buf1 + 1); if ( v7 != *(_QWORD *)((char *)Buf1 + v3 + 8) ) goto mcmp_adjust8; v7 = *((_QWORD *)Buf1 + 2); if ( v7 != *(_QWORD *)((char *)Buf1 + v3 + 16) ) goto mcmp_adjust16; v7 = *((_QWORD *)Buf1 + 3); if ( v7 != *(_QWORD *)((char *)Buf1 + v3 + 24) ) { Buf1 = (char *)Buf1 + 8; mcmp_adjust16: Buf1 = (char *)Buf1 + 8; mcmp_adjust8: Buf1 = (char *)Buf1 + 8; break; } Buf1 = (char *)Buf1 + 32; if ( !--v6 ) { Size &= 0x1Fu; goto mcmp70; } } } else { mcmp70: v8 = Size >> 3; if ( !(Size >> 3) ) goto mcmp30; while ( 1 ) { v7 = *(_QWORD *)Buf1; if ( *(_QWORD *)Buf1 != *(_QWORD *)((char *)Buf1 + v3) ) break; Buf1 = (char *)Buf1 + 8; if ( !--v8 ) { Size &= 7u; goto mcmp30; } } } v4 = _byteswap_uint64(v7) < _byteswap_uint64(*(_QWORD *)((char *)Buf1 + v3)); return -v4 - (v4 - 1); }