mirror of
https://github.com/Pinball3D/Rabbit-R1.git
synced 2025-01-09 13:43:22 +00:00
206 lines
3.9 KiB
Smali
206 lines
3.9 KiB
Smali
![]() |
.class final enum Lcom/google/common/math/LongMath$MillerRabinTester$2;
|
||
|
.super Lcom/google/common/math/LongMath$MillerRabinTester;
|
||
|
.source "LongMath.java"
|
||
|
|
||
|
|
||
|
# annotations
|
||
|
.annotation system Ldalvik/annotation/EnclosingClass;
|
||
|
value = Lcom/google/common/math/LongMath$MillerRabinTester;
|
||
|
.end annotation
|
||
|
|
||
|
.annotation system Ldalvik/annotation/InnerClass;
|
||
|
accessFlags = 0x4010
|
||
|
name = null
|
||
|
.end annotation
|
||
|
|
||
|
|
||
|
# direct methods
|
||
|
.method constructor <init>(Ljava/lang/String;I)V
|
||
|
.locals 1
|
||
|
|
||
|
const/4 v0, 0x0
|
||
|
|
||
|
.line 1109
|
||
|
invoke-direct {p0, p1, p2, v0}, Lcom/google/common/math/LongMath$MillerRabinTester;-><init>(Ljava/lang/String;ILcom/google/common/math/LongMath$1;)V
|
||
|
|
||
|
return-void
|
||
|
.end method
|
||
|
|
||
|
.method private plusMod(JJJ)J
|
||
|
.locals 2
|
||
|
|
||
|
sub-long v0, p5, p3
|
||
|
|
||
|
cmp-long p0, p1, v0
|
||
|
|
||
|
add-long/2addr p1, p3
|
||
|
|
||
|
if-ltz p0, :cond_0
|
||
|
|
||
|
sub-long/2addr p1, p5
|
||
|
|
||
|
:cond_0
|
||
|
return-wide p1
|
||
|
.end method
|
||
|
|
||
|
.method private times2ToThe32Mod(JJ)J
|
||
|
.locals 1
|
||
|
|
||
|
const/16 p0, 0x20
|
||
|
|
||
|
.line 1119
|
||
|
:cond_0
|
||
|
invoke-static {p1, p2}, Ljava/lang/Long;->numberOfLeadingZeros(J)I
|
||
|
|
||
|
move-result v0
|
||
|
|
||
|
invoke-static {p0, v0}, Ljava/lang/Math;->min(II)I
|
||
|
|
||
|
move-result v0
|
||
|
|
||
|
shl-long/2addr p1, v0
|
||
|
|
||
|
.line 1122
|
||
|
invoke-static {p1, p2, p3, p4}, Lcom/google/common/primitives/UnsignedLongs;->remainder(JJ)J
|
||
|
|
||
|
move-result-wide p1
|
||
|
|
||
|
sub-int/2addr p0, v0
|
||
|
|
||
|
if-gtz p0, :cond_0
|
||
|
|
||
|
return-wide p1
|
||
|
.end method
|
||
|
|
||
|
|
||
|
# virtual methods
|
||
|
.method mulMod(JJJ)J
|
||
|
.locals 15
|
||
|
|
||
|
move-object v0, p0
|
||
|
|
||
|
move-wide/from16 v5, p5
|
||
|
|
||
|
const/16 v1, 0x20
|
||
|
|
||
|
ushr-long v2, p1, v1
|
||
|
|
||
|
ushr-long v7, p3, v1
|
||
|
|
||
|
const-wide v9, 0xffffffffL
|
||
|
|
||
|
and-long v11, p1, v9
|
||
|
|
||
|
and-long v9, p3, v9
|
||
|
|
||
|
mul-long v13, v2, v7
|
||
|
|
||
|
.line 1143
|
||
|
invoke-direct {p0, v13, v14, v5, v6}, Lcom/google/common/math/LongMath$MillerRabinTester$2;->times2ToThe32Mod(JJ)J
|
||
|
|
||
|
move-result-wide v13
|
||
|
|
||
|
mul-long/2addr v2, v9
|
||
|
|
||
|
add-long/2addr v13, v2
|
||
|
|
||
|
const-wide/16 v1, 0x0
|
||
|
|
||
|
cmp-long v1, v13, v1
|
||
|
|
||
|
if-gez v1, :cond_0
|
||
|
|
||
|
.line 1146
|
||
|
invoke-static {v13, v14, v5, v6}, Lcom/google/common/primitives/UnsignedLongs;->remainder(JJ)J
|
||
|
|
||
|
move-result-wide v13
|
||
|
|
||
|
:cond_0
|
||
|
mul-long/2addr v7, v11
|
||
|
|
||
|
add-long/2addr v13, v7
|
||
|
|
||
|
.line 1150
|
||
|
invoke-direct {p0, v13, v14, v5, v6}, Lcom/google/common/math/LongMath$MillerRabinTester$2;->times2ToThe32Mod(JJ)J
|
||
|
|
||
|
move-result-wide v1
|
||
|
|
||
|
mul-long/2addr v11, v9
|
||
|
|
||
|
.line 1151
|
||
|
invoke-static {v11, v12, v5, v6}, Lcom/google/common/primitives/UnsignedLongs;->remainder(JJ)J
|
||
|
|
||
|
move-result-wide v3
|
||
|
|
||
|
move-object v0, p0
|
||
|
|
||
|
move-wide/from16 v5, p5
|
||
|
|
||
|
invoke-direct/range {v0 .. v6}, Lcom/google/common/math/LongMath$MillerRabinTester$2;->plusMod(JJJ)J
|
||
|
|
||
|
move-result-wide v0
|
||
|
|
||
|
return-wide v0
|
||
|
.end method
|
||
|
|
||
|
.method squareMod(JJ)J
|
||
|
.locals 11
|
||
|
|
||
|
const/16 v0, 0x20
|
||
|
|
||
|
ushr-long v0, p1, v0
|
||
|
|
||
|
const-wide v2, 0xffffffffL
|
||
|
|
||
|
and-long/2addr p1, v2
|
||
|
|
||
|
mul-long v2, v0, v0
|
||
|
|
||
|
.line 1166
|
||
|
invoke-direct {p0, v2, v3, p3, p4}, Lcom/google/common/math/LongMath$MillerRabinTester$2;->times2ToThe32Mod(JJ)J
|
||
|
|
||
|
move-result-wide v2
|
||
|
|
||
|
mul-long/2addr v0, p1
|
||
|
|
||
|
const-wide/16 v4, 0x2
|
||
|
|
||
|
mul-long/2addr v0, v4
|
||
|
|
||
|
const-wide/16 v4, 0x0
|
||
|
|
||
|
cmp-long v4, v0, v4
|
||
|
|
||
|
if-gez v4, :cond_0
|
||
|
|
||
|
.line 1169
|
||
|
invoke-static {v0, v1, p3, p4}, Lcom/google/common/primitives/UnsignedLongs;->remainder(JJ)J
|
||
|
|
||
|
move-result-wide v0
|
||
|
|
||
|
:cond_0
|
||
|
add-long/2addr v2, v0
|
||
|
|
||
|
.line 1173
|
||
|
invoke-direct {p0, v2, v3, p3, p4}, Lcom/google/common/math/LongMath$MillerRabinTester$2;->times2ToThe32Mod(JJ)J
|
||
|
|
||
|
move-result-wide v5
|
||
|
|
||
|
mul-long/2addr p1, p1
|
||
|
|
||
|
.line 1174
|
||
|
invoke-static {p1, p2, p3, p4}, Lcom/google/common/primitives/UnsignedLongs;->remainder(JJ)J
|
||
|
|
||
|
move-result-wide v7
|
||
|
|
||
|
move-object v4, p0
|
||
|
|
||
|
move-wide v9, p3
|
||
|
|
||
|
invoke-direct/range {v4 .. v10}, Lcom/google/common/math/LongMath$MillerRabinTester$2;->plusMod(JJJ)J
|
||
|
|
||
|
move-result-wide p0
|
||
|
|
||
|
return-wide p0
|
||
|
.end method
|