e0fc42e955
Three Android-specific optimizations: 1. Use Math.unsignedMultiplyHigh on API 35+ (Android 15): single UMULH instruction, eliminates the 4-insn signed→unsigned correction that the fallback path requires. Same optimization as our JVM 18+ path. 2. Use Math.multiplyHigh + correction on API 31-34 (Android 12-14): avoids the pure-Kotlin 4×32-bit sub-product fallback entirely. 3. Resolve API level check ONCE at class load via static final fields (HAS_MULTIPLY_HIGH, HAS_UNSIGNED_MULTIPLY_HIGH) instead of checking Build.VERSION.SDK_INT on every call. These functions are called 16× per field multiply (~12,000× per signature verify), so eliminating the per-call branch matters. Performance tiers on Android: API 35+ (Android 15): ~same as JVM 18+ (UMULH intrinsic) API 31-34 (Android 12-14): SMULH + 3 correction insns per product API 26-30 (Android 8-11): pure-Kotlin fallback (4 sub-products) https://claude.ai/code/session_01BhU63WUe9AhikZxRdw3Lpg