// // strncmp from 0x180130d90 to 0x180130e0d (125 bytes) // // 2 xrefs: // > sub_1800FAC10 @ 0x1800faeb0 // > @ 0x180202ea0 // // 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 strncmp(const char *Str1, const char *Str2, size_t MaxCount) { signed __int64 v3; // rdx unsigned __int8 v4; // al __int64 v5; // rax bool v6; // cc __int64 v7; // rax v3 = Str2 - Str1; if ( MaxCount ) { if ( ((unsigned __int8)Str1 & 7) != 0 ) goto comp_head_loop_begin; LABEL_7: while ( (((_WORD)v3 + (_WORD)Str1) & 0xFFFu) <= 0xFF8 ) { v5 = *(_QWORD *)Str1; if ( *(_QWORD *)Str1 != *(_QWORD *)&Str1[v3] ) break; Str1 += 8; v6 = MaxCount <= 8; MaxCount -= 8LL; if ( v6 || ((v5 - 0x101010101010101LL) & ~v5 & 0x8080808080808080uLL) != 0 ) goto return_equal; } comp_head_loop_begin: while ( 1 ) { v4 = *Str1; if ( *Str1 != Str1[v3] ) return -(__int64)(v4 < (unsigned int)Str1[v3]) | 1; ++Str1; if ( !--MaxCount || !v4 ) goto return_equal; if ( ((unsigned __int8)Str1 & 7) == 0 ) goto LABEL_7; } } else { return_equal: LODWORD(v7) = 0; } return v7; }