// // strnlen from 0x1801340e4 to 0x180134234 (336 bytes) // // 2 xrefs: // > common_getenv @ 0x180128cef // > unknown_libname_53 @ 0x18012ebc6 // // 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 // size_t __cdecl strnlen(const char *String, size_t MaxCount) { const char *v4; // r9 size_t v5; // r10 const char *v6; // rax const char *v7; // rcx size_t v8; // rcx const char *v9; // r8 size_t v11; // r10 const char *v12; // rax const char *v13; // rcx const char *v14; // r8 const char *i; // rax v4 = String; if ( dword_1801B1700 < 5 ) { if ( dword_1801B1700 < 1 ) { for ( i = &String[MaxCount]; String != i; ++String ) { if ( !*String ) break; } return String - v4; } v11 = (16LL - ((unsigned __int8)String & 0xF)) & -(__int64)(((unsigned __int8)String & 0xF) != 0); v12 = String; if ( MaxCount < v11 ) v11 = MaxCount; v13 = &String[v11]; if ( v4 != &v4[v11] ) { do { if ( !*v12 ) break; ++v12; } while ( v12 != v13 ); } v8 = v12 - v4; if ( v12 - v4 == v11 ) { String = v12; v14 = &v12[(MaxCount - v11) & 0xFFFFFFFFFFFFFFF0uLL]; if ( v12 != v14 ) { do { if ( _mm_movemask_epi8(_mm_cmpeq_epi8((__m128i)0LL, *(__m128i *)String)) ) break; String += 16; } while ( String != v14 ); } while ( String != &v4[MaxCount] && *String ) ++String; return String - v4; } } else { v5 = (32LL - ((unsigned __int8)String & 0x1F)) & -(__int64)(((unsigned __int8)String & 0x1F) != 0); v6 = String; if ( MaxCount < v5 ) v5 = MaxCount; v7 = &String[v5]; if ( v4 != v7 ) { do { if ( !*v6 ) break; ++v6; } while ( v6 != v7 ); } v8 = v6 - v4; if ( v6 - v4 == v5 ) { String = v6; v9 = &v6[(MaxCount - v5) & 0xFFFFFFFFFFFFFFE0uLL]; if ( v6 != v9 ) { do { __asm { vpxor xmm1, xmm1, xmm1 vpcmpeqb ymm1, ymm1, ymmword ptr [rcx] vpmovmskb eax, ymm1 } __asm { vzeroupper } if ( _EAX ) break; String += 32; } while ( String != v9 ); } while ( String != &v4[MaxCount] && *String ) ++String; return String - v4; } } return v8; }