IndexGenerator$BitString.smali
.class public Lorg/spongycastle/pqc/crypto/ntru/IndexGenerator$BitString;
.super Ljava/lang/Object;
.source "IndexGenerator.java"
# instance fields
.field bytes:[B
.field lastByteBits:I
.field numBytes:I
# direct methods
.method public constructor <init>()V
.registers 2
.prologue
.line 121
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 123
const/4 v0, 0x4
new-array v0, v0, [B
iput-object v0, p0, Lorg/spongycastle/pqc/crypto/ntru/IndexGenerator$BitString;->bytes:[B
return-void
.end method
# virtual methods
.method public appendBits(B)V
.registers 8
.prologue
const/16 v2, 0x8
.line 147
iget v0, p0, Lorg/spongycastle/pqc/crypto/ntru/IndexGenerator$BitString;->numBytes:I
iget-object v1, p0, Lorg/spongycastle/pqc/crypto/ntru/IndexGenerator$BitString;->bytes:[B
array-length v1, v1
if-ne v0, v1, :cond_16
.line 149
iget-object v0, p0, Lorg/spongycastle/pqc/crypto/ntru/IndexGenerator$BitString;->bytes:[B
iget-object v1, p0, Lorg/spongycastle/pqc/crypto/ntru/IndexGenerator$BitString;->bytes:[B
array-length v1, v1
mul-int/lit8 v1, v1, 0x2
# invokes: Lorg/spongycastle/pqc/crypto/ntru/IndexGenerator;->copyOf([BI)[B
invoke-static {v0, v1}, Lorg/spongycastle/pqc/crypto/ntru/IndexGenerator;->access$000([BI)[B
move-result-object v0
iput-object v0, p0, Lorg/spongycastle/pqc/crypto/ntru/IndexGenerator$BitString;->bytes:[B
.line 152
:cond_16
iget v0, p0, Lorg/spongycastle/pqc/crypto/ntru/IndexGenerator$BitString;->numBytes:I
if-nez v0, :cond_25
.line 154
const/4 v0, 0x1
iput v0, p0, Lorg/spongycastle/pqc/crypto/ntru/IndexGenerator$BitString;->numBytes:I
.line 155
iget-object v0, p0, Lorg/spongycastle/pqc/crypto/ntru/IndexGenerator$BitString;->bytes:[B
const/4 v1, 0x0
aput-byte p1, v0, v1
.line 156
iput v2, p0, Lorg/spongycastle/pqc/crypto/ntru/IndexGenerator$BitString;->lastByteBits:I
.line 168
:goto_24
return-void
.line 158
:cond_25
iget v0, p0, Lorg/spongycastle/pqc/crypto/ntru/IndexGenerator$BitString;->lastByteBits:I
if-ne v0, v2, :cond_34
.line 160
iget-object v0, p0, Lorg/spongycastle/pqc/crypto/ntru/IndexGenerator$BitString;->bytes:[B
iget v1, p0, Lorg/spongycastle/pqc/crypto/ntru/IndexGenerator$BitString;->numBytes:I
add-int/lit8 v2, v1, 0x1
iput v2, p0, Lorg/spongycastle/pqc/crypto/ntru/IndexGenerator$BitString;->numBytes:I
aput-byte p1, v0, v1
goto :goto_24
.line 164
:cond_34
iget v0, p0, Lorg/spongycastle/pqc/crypto/ntru/IndexGenerator$BitString;->lastByteBits:I
rsub-int/lit8 v0, v0, 0x8
.line 165
iget-object v1, p0, Lorg/spongycastle/pqc/crypto/ntru/IndexGenerator$BitString;->bytes:[B
iget v2, p0, Lorg/spongycastle/pqc/crypto/ntru/IndexGenerator$BitString;->numBytes:I
add-int/lit8 v2, v2, -0x1
aget-byte v3, v1, v2
and-int/lit16 v4, p1, 0xff
iget v5, p0, Lorg/spongycastle/pqc/crypto/ntru/IndexGenerator$BitString;->lastByteBits:I
shl-int/2addr v4, v5
or-int/2addr v3, v4
int-to-byte v3, v3
aput-byte v3, v1, v2
.line 166
iget-object v1, p0, Lorg/spongycastle/pqc/crypto/ntru/IndexGenerator$BitString;->bytes:[B
iget v2, p0, Lorg/spongycastle/pqc/crypto/ntru/IndexGenerator$BitString;->numBytes:I
add-int/lit8 v3, v2, 0x1
iput v3, p0, Lorg/spongycastle/pqc/crypto/ntru/IndexGenerator$BitString;->numBytes:I
and-int/lit16 v3, p1, 0xff
shr-int v0, v3, v0
int-to-byte v0, v0
aput-byte v0, v1, v2
goto :goto_24
.end method
.method appendBits([B)V
.registers 4
.prologue
.line 134
const/4 v0, 0x0
:goto_1
array-length v1, p1
if-eq v0, v1, :cond_c
.line 136
aget-byte v1, p1, v0
invoke-virtual {p0, v1}, Lorg/spongycastle/pqc/crypto/ntru/IndexGenerator$BitString;->appendBits(B)V
.line 134
add-int/lit8 v0, v0, 0x1
goto :goto_1
.line 138
:cond_c
return-void
.end method
.method public getBytes()[B
.registers 2
.prologue
.line 225
iget-object v0, p0, Lorg/spongycastle/pqc/crypto/ntru/IndexGenerator$BitString;->bytes:[B
invoke-static {v0}, Lorg/spongycastle/util/Arrays;->clone([B)[B
move-result-object v0
return-object v0
.end method
.method public getLeadingAsInt(I)I
.registers 6
.prologue
.line 208
iget v0, p0, Lorg/spongycastle/pqc/crypto/ntru/IndexGenerator$BitString;->numBytes:I
add-int/lit8 v0, v0, -0x1
shl-int/lit8 v0, v0, 0x3
iget v1, p0, Lorg/spongycastle/pqc/crypto/ntru/IndexGenerator$BitString;->lastByteBits:I
add-int/2addr v0, v1
sub-int/2addr v0, p1
.line 209
div-int/lit8 v1, v0, 0x8
.line 211
rem-int/lit8 v2, v0, 0x8
.line 212
iget-object v0, p0, Lorg/spongycastle/pqc/crypto/ntru/IndexGenerator$BitString;->bytes:[B
aget-byte v0, v0, v1
and-int/lit16 v0, v0, 0xff
ushr-int/2addr v0, v2
.line 213
rsub-int/lit8 v2, v2, 0x8
.line 214
add-int/lit8 v1, v1, 0x1
:goto_19
iget v3, p0, Lorg/spongycastle/pqc/crypto/ntru/IndexGenerator$BitString;->numBytes:I
if-ge v1, v3, :cond_2a
.line 216
iget-object v3, p0, Lorg/spongycastle/pqc/crypto/ntru/IndexGenerator$BitString;->bytes:[B
aget-byte v3, v3, v1
and-int/lit16 v3, v3, 0xff
shl-int/2addr v3, v2
or-int/2addr v0, v3
.line 217
add-int/lit8 v2, v2, 0x8
.line 214
add-int/lit8 v1, v1, 0x1
goto :goto_19
.line 220
:cond_2a
return v0
.end method
.method public getTrailing(I)Lorg/spongycastle/pqc/crypto/ntru/IndexGenerator$BitString;
.registers 8
.prologue
.line 178
new-instance v1, Lorg/spongycastle/pqc/crypto/ntru/IndexGenerator$BitString;
invoke-direct {v1}, Lorg/spongycastle/pqc/crypto/ntru/IndexGenerator$BitString;-><init>()V
.line 179
add-int/lit8 v0, p1, 0x7
div-int/lit8 v0, v0, 0x8
iput v0, v1, Lorg/spongycastle/pqc/crypto/ntru/IndexGenerator$BitString;->numBytes:I
.line 180
iget v0, v1, Lorg/spongycastle/pqc/crypto/ntru/IndexGenerator$BitString;->numBytes:I
new-array v0, v0, [B
iput-object v0, v1, Lorg/spongycastle/pqc/crypto/ntru/IndexGenerator$BitString;->bytes:[B
.line 181
const/4 v0, 0x0
:goto_12
iget v2, v1, Lorg/spongycastle/pqc/crypto/ntru/IndexGenerator$BitString;->numBytes:I
if-ge v0, v2, :cond_21
.line 183
iget-object v2, v1, Lorg/spongycastle/pqc/crypto/ntru/IndexGenerator$BitString;->bytes:[B
iget-object v3, p0, Lorg/spongycastle/pqc/crypto/ntru/IndexGenerator$BitString;->bytes:[B
aget-byte v3, v3, v0
aput-byte v3, v2, v0
.line 181
add-int/lit8 v0, v0, 0x1
goto :goto_12
.line 186
:cond_21
rem-int/lit8 v0, p1, 0x8
iput v0, v1, Lorg/spongycastle/pqc/crypto/ntru/IndexGenerator$BitString;->lastByteBits:I
.line 187
iget v0, v1, Lorg/spongycastle/pqc/crypto/ntru/IndexGenerator$BitString;->lastByteBits:I
if-nez v0, :cond_2e
.line 189
const/16 v0, 0x8
iput v0, v1, Lorg/spongycastle/pqc/crypto/ntru/IndexGenerator$BitString;->lastByteBits:I
.line 197
:goto_2d
return-object v1
.line 193
:cond_2e
iget v0, v1, Lorg/spongycastle/pqc/crypto/ntru/IndexGenerator$BitString;->lastByteBits:I
rsub-int/lit8 v0, v0, 0x20
.line 194
iget-object v2, v1, Lorg/spongycastle/pqc/crypto/ntru/IndexGenerator$BitString;->bytes:[B
iget v3, v1, Lorg/spongycastle/pqc/crypto/ntru/IndexGenerator$BitString;->numBytes:I
add-int/lit8 v3, v3, -0x1
iget-object v4, v1, Lorg/spongycastle/pqc/crypto/ntru/IndexGenerator$BitString;->bytes:[B
iget v5, v1, Lorg/spongycastle/pqc/crypto/ntru/IndexGenerator$BitString;->numBytes:I
add-int/lit8 v5, v5, -0x1
aget-byte v4, v4, v5
shl-int/2addr v4, v0
ushr-int v0, v4, v0
int-to-byte v0, v0
aput-byte v0, v2, v3
goto :goto_2d
.end method