.class public final Lm/w/d; .super Lm/w/c; .source "XorWowRandom.kt" # instance fields .field public c:I .field public d:I .field public e:I .field public f:I .field public g:I .field public h:I # direct methods .method public constructor (II)V .locals 3 not-int v0, p1 shl-int/lit8 v1, p1, 0xa ushr-int/lit8 v2, p2, 0x4 xor-int/2addr v1, v2 invoke-direct {p0}, Lm/w/c;->()V iput p1, p0, Lm/w/d;->c:I iput p2, p0, Lm/w/d;->d:I const/4 p1, 0x0 iput p1, p0, Lm/w/d;->e:I iput p1, p0, Lm/w/d;->f:I iput v0, p0, Lm/w/d;->g:I iput v1, p0, Lm/w/d;->h:I iget p2, p0, Lm/w/d;->c:I iget v0, p0, Lm/w/d;->d:I or-int/2addr p2, v0 iget v0, p0, Lm/w/d;->e:I or-int/2addr p2, v0 iget v0, p0, Lm/w/d;->f:I or-int/2addr p2, v0 iget v0, p0, Lm/w/d;->g:I or-int/2addr p2, v0 if-eqz p2, :cond_0 const/4 p2, 0x1 goto :goto_0 :cond_0 const/4 p2, 0x0 :goto_0 if-eqz p2, :cond_2 const/16 p2, 0x40 :goto_1 if-ge p1, p2, :cond_1 invoke-virtual {p0}, Lm/w/d;->nextInt()I add-int/lit8 p1, p1, 0x1 goto :goto_1 :cond_1 return-void :cond_2 new-instance p1, Ljava/lang/IllegalArgumentException; const-string p2, "Initial state must have at least one non-zero element." invoke-virtual {p2}, Ljava/lang/Object;->toString()Ljava/lang/String; move-result-object p2 invoke-direct {p1, p2}, Ljava/lang/IllegalArgumentException;->(Ljava/lang/String;)V throw p1 .end method # virtual methods .method public nextBits(I)I .locals 2 invoke-virtual {p0}, Lm/w/d;->nextInt()I move-result v0 rsub-int/lit8 v1, p1, 0x20 ushr-int/2addr v0, v1 neg-int p1, p1 shr-int/lit8 p1, p1, 0x1f and-int/2addr p1, v0 return p1 .end method .method public nextInt()I .locals 3 iget v0, p0, Lm/w/d;->c:I ushr-int/lit8 v1, v0, 0x2 xor-int/2addr v0, v1 iget v1, p0, Lm/w/d;->d:I iput v1, p0, Lm/w/d;->c:I iget v1, p0, Lm/w/d;->e:I iput v1, p0, Lm/w/d;->d:I iget v1, p0, Lm/w/d;->f:I iput v1, p0, Lm/w/d;->e:I iget v1, p0, Lm/w/d;->g:I iput v1, p0, Lm/w/d;->f:I shl-int/lit8 v2, v0, 0x1 xor-int/2addr v0, v2 xor-int/2addr v0, v1 shl-int/lit8 v1, v1, 0x4 xor-int/2addr v0, v1 iput v0, p0, Lm/w/d;->g:I iget v1, p0, Lm/w/d;->h:I const v2, 0x587c5 add-int/2addr v1, v2 iput v1, p0, Lm/w/d;->h:I iget v1, p0, Lm/w/d;->h:I add-int/2addr v0, v1 return v0 .end method