Rabbit-R1/original r1/smali/smali_classes3/okhttp3/internal/http2/Huffman.smali
2024-05-21 17:08:36 -04:00

1054 lines
19 KiB
Smali

.class public final Lokhttp3/internal/http2/Huffman;
.super Ljava/lang/Object;
.source "Huffman.kt"
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lokhttp3/internal/http2/Huffman$Node;
}
.end annotation
.annotation runtime Lkotlin/Metadata;
bv = {
0x1,
0x0,
0x3
}
d1 = {
"\u0000F\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0002\u0008\u0002\n\u0002\u0010\u0015\n\u0000\n\u0002\u0010\u0012\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u0002\n\u0000\n\u0002\u0010\u0008\n\u0002\u0008\u0004\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\t\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\u0008\u0004\u0008\u00c6\u0002\u0018\u00002\u00020\u0001:\u0001\u001aB\u0007\u0008\u0002\u00a2\u0006\u0002\u0010\u0002J \u0010\t\u001a\u00020\n2\u0006\u0010\u000b\u001a\u00020\u000c2\u0006\u0010\r\u001a\u00020\u000c2\u0006\u0010\u000e\u001a\u00020\u000cH\u0002J\u001e\u0010\u000f\u001a\u00020\n2\u0006\u0010\u0010\u001a\u00020\u00112\u0006\u0010\u0012\u001a\u00020\u00132\u0006\u0010\u0014\u001a\u00020\u0015J\u0016\u0010\u0016\u001a\u00020\n2\u0006\u0010\u0010\u001a\u00020\u00172\u0006\u0010\u0014\u001a\u00020\u0015J\u000e\u0010\u0018\u001a\u00020\u000c2\u0006\u0010\u0019\u001a\u00020\u0017R\u000e\u0010\u0003\u001a\u00020\u0004X\u0082\u0004\u00a2\u0006\u0002\n\u0000R\u000e\u0010\u0005\u001a\u00020\u0006X\u0082\u0004\u00a2\u0006\u0002\n\u0000R\u000e\u0010\u0007\u001a\u00020\u0008X\u0082\u0004\u00a2\u0006\u0002\n\u0000\u00a8\u0006\u001b"
}
d2 = {
"Lokhttp3/internal/http2/Huffman;",
"",
"()V",
"CODES",
"",
"CODE_BIT_COUNTS",
"",
"root",
"Lokhttp3/internal/http2/Huffman$Node;",
"addCode",
"",
"symbol",
"",
"code",
"codeBitCount",
"decode",
"source",
"Lokio/BufferedSource;",
"byteCount",
"",
"sink",
"Lokio/BufferedSink;",
"encode",
"Lokio/ByteString;",
"encodedLength",
"bytes",
"Node",
"okhttp"
}
k = 0x1
mv = {
0x1,
0x4,
0x0
}
.end annotation
# static fields
.field private static final CODES:[I
.field private static final CODE_BIT_COUNTS:[B
.field public static final INSTANCE:Lokhttp3/internal/http2/Huffman;
.field private static final root:Lokhttp3/internal/http2/Huffman$Node;
# direct methods
.method static constructor <clinit>()V
.locals 5
.line 34
new-instance v0, Lokhttp3/internal/http2/Huffman;
invoke-direct {v0}, Lokhttp3/internal/http2/Huffman;-><init>()V
sput-object v0, Lokhttp3/internal/http2/Huffman;->INSTANCE:Lokhttp3/internal/http2/Huffman;
const/16 v1, 0x100
new-array v2, v1, [I
fill-array-data v2, :array_0
sput-object v2, Lokhttp3/internal/http2/Huffman;->CODES:[I
new-array v1, v1, [B
fill-array-data v1, :array_1
sput-object v1, Lokhttp3/internal/http2/Huffman;->CODE_BIT_COUNTS:[B
.line 79
new-instance v2, Lokhttp3/internal/http2/Huffman$Node;
invoke-direct {v2}, Lokhttp3/internal/http2/Huffman$Node;-><init>()V
sput-object v2, Lokhttp3/internal/http2/Huffman;->root:Lokhttp3/internal/http2/Huffman$Node;
array-length v1, v1
const/4 v2, 0x0
:goto_0
if-ge v2, v1, :cond_0
sget-object v3, Lokhttp3/internal/http2/Huffman;->CODES:[I
.line 82
aget v3, v3, v2
sget-object v4, Lokhttp3/internal/http2/Huffman;->CODE_BIT_COUNTS:[B
aget-byte v4, v4, v2
invoke-direct {v0, v2, v3, v4}, Lokhttp3/internal/http2/Huffman;->addCode(III)V
add-int/lit8 v2, v2, 0x1
goto :goto_0
:cond_0
return-void
nop
:array_0
.array-data 4
0x1ff8
0x7fffd8
0xfffffe2
0xfffffe3
0xfffffe4
0xfffffe5
0xfffffe6
0xfffffe7
0xfffffe8
0xffffea
0x3ffffffc # 1.9999995f
0xfffffe9
0xfffffea
0x3ffffffd # 1.9999996f
0xfffffeb
0xfffffec
0xfffffed
0xfffffee
0xfffffef
0xffffff0
0xffffff1
0xffffff2
0x3ffffffe # 1.9999998f
0xffffff3
0xffffff4
0xffffff5
0xffffff6
0xffffff7
0xffffff8
0xffffff9
0xffffffa
0xffffffb
0x14
0x3f8
0x3f9
0xffa
0x1ff9
0x15
0xf8
0x7fa
0x3fa
0x3fb
0xf9
0x7fb
0xfa
0x16
0x17
0x18
0x0
0x1
0x2
0x19
0x1a
0x1b
0x1c
0x1d
0x1e
0x1f
0x5c
0xfb
0x7ffc
0x20
0xffb
0x3fc
0x1ffa
0x21
0x5d
0x5e
0x5f
0x60
0x61
0x62
0x63
0x64
0x65
0x66
0x67
0x68
0x69
0x6a
0x6b
0x6c
0x6d
0x6e
0x6f
0x70
0x71
0x72
0xfc
0x73
0xfd
0x1ffb
0x7fff0
0x1ffc
0x3ffc
0x22
0x7ffd
0x3
0x23
0x4
0x24
0x5
0x25
0x26
0x27
0x6
0x74
0x75
0x28
0x29
0x2a
0x7
0x2b
0x76
0x2c
0x8
0x9
0x2d
0x77
0x78
0x79
0x7a
0x7b
0x7ffe
0x7fc
0x3ffd
0x1ffd
0xffffffc
0xfffe6
0x3fffd2
0xfffe7
0xfffe8
0x3fffd3
0x3fffd4
0x3fffd5
0x7fffd9
0x3fffd6
0x7fffda
0x7fffdb
0x7fffdc
0x7fffdd
0x7fffde
0xffffeb
0x7fffdf
0xffffec
0xffffed
0x3fffd7
0x7fffe0
0xffffee
0x7fffe1
0x7fffe2
0x7fffe3
0x7fffe4
0x1fffdc
0x3fffd8
0x7fffe5
0x3fffd9
0x7fffe6
0x7fffe7
0xffffef
0x3fffda
0x1fffdd
0xfffe9
0x3fffdb
0x3fffdc
0x7fffe8
0x7fffe9
0x1fffde
0x7fffea
0x3fffdd
0x3fffde
0xfffff0
0x1fffdf
0x3fffdf
0x7fffeb
0x7fffec
0x1fffe0
0x1fffe1
0x3fffe0
0x1fffe2
0x7fffed
0x3fffe1
0x7fffee
0x7fffef
0xfffea
0x3fffe2
0x3fffe3
0x3fffe4
0x7ffff0
0x3fffe5
0x3fffe6
0x7ffff1
0x3ffffe0
0x3ffffe1
0xfffeb
0x7fff1
0x3fffe7
0x7ffff2
0x3fffe8
0x1ffffec
0x3ffffe2
0x3ffffe3
0x3ffffe4
0x7ffffde
0x7ffffdf
0x3ffffe5
0xfffff1
0x1ffffed
0x7fff2
0x1fffe3
0x3ffffe6
0x7ffffe0
0x7ffffe1
0x3ffffe7
0x7ffffe2
0xfffff2
0x1fffe4
0x1fffe5
0x3ffffe8
0x3ffffe9
0xffffffd
0x7ffffe3
0x7ffffe4
0x7ffffe5
0xfffec
0xfffff3
0xfffed
0x1fffe6
0x3fffe9
0x1fffe7
0x1fffe8
0x7ffff3
0x3fffea
0x3fffeb
0x1ffffee
0x1ffffef
0xfffff4
0xfffff5
0x3ffffea
0x7ffff4
0x3ffffeb
0x7ffffe6
0x3ffffec
0x3ffffed
0x7ffffe7
0x7ffffe8
0x7ffffe9
0x7ffffea
0x7ffffeb
0xffffffe
0x7ffffec
0x7ffffed
0x7ffffee
0x7ffffef
0x7fffff0
0x3ffffee
.end array-data
:array_1
.array-data 1
0xdt
0x17t
0x1ct
0x1ct
0x1ct
0x1ct
0x1ct
0x1ct
0x1ct
0x18t
0x1et
0x1ct
0x1ct
0x1et
0x1ct
0x1ct
0x1ct
0x1ct
0x1ct
0x1ct
0x1ct
0x1ct
0x1et
0x1ct
0x1ct
0x1ct
0x1ct
0x1ct
0x1ct
0x1ct
0x1ct
0x1ct
0x6t
0xat
0xat
0xct
0xdt
0x6t
0x8t
0xbt
0xat
0xat
0x8t
0xbt
0x8t
0x6t
0x6t
0x6t
0x5t
0x5t
0x5t
0x6t
0x6t
0x6t
0x6t
0x6t
0x6t
0x6t
0x7t
0x8t
0xft
0x6t
0xct
0xat
0xdt
0x6t
0x7t
0x7t
0x7t
0x7t
0x7t
0x7t
0x7t
0x7t
0x7t
0x7t
0x7t
0x7t
0x7t
0x7t
0x7t
0x7t
0x7t
0x7t
0x7t
0x7t
0x7t
0x7t
0x8t
0x7t
0x8t
0xdt
0x13t
0xdt
0xet
0x6t
0xft
0x5t
0x6t
0x5t
0x6t
0x5t
0x6t
0x6t
0x6t
0x5t
0x7t
0x7t
0x6t
0x6t
0x6t
0x5t
0x6t
0x7t
0x6t
0x5t
0x5t
0x6t
0x7t
0x7t
0x7t
0x7t
0x7t
0xft
0xbt
0xet
0xdt
0x1ct
0x14t
0x16t
0x14t
0x14t
0x16t
0x16t
0x16t
0x17t
0x16t
0x17t
0x17t
0x17t
0x17t
0x17t
0x18t
0x17t
0x18t
0x18t
0x16t
0x17t
0x18t
0x17t
0x17t
0x17t
0x17t
0x15t
0x16t
0x17t
0x16t
0x17t
0x17t
0x18t
0x16t
0x15t
0x14t
0x16t
0x16t
0x17t
0x17t
0x15t
0x17t
0x16t
0x16t
0x18t
0x15t
0x16t
0x17t
0x17t
0x15t
0x15t
0x16t
0x15t
0x17t
0x16t
0x17t
0x17t
0x14t
0x16t
0x16t
0x16t
0x17t
0x16t
0x16t
0x17t
0x1at
0x1at
0x14t
0x13t
0x16t
0x17t
0x16t
0x19t
0x1at
0x1at
0x1at
0x1bt
0x1bt
0x1at
0x18t
0x19t
0x13t
0x15t
0x1at
0x1bt
0x1bt
0x1at
0x1bt
0x18t
0x15t
0x15t
0x1at
0x1at
0x1ct
0x1bt
0x1bt
0x1bt
0x14t
0x18t
0x14t
0x15t
0x16t
0x15t
0x15t
0x17t
0x16t
0x16t
0x19t
0x19t
0x18t
0x18t
0x1at
0x17t
0x1at
0x1bt
0x1at
0x1at
0x1bt
0x1bt
0x1bt
0x1bt
0x1bt
0x1ct
0x1bt
0x1bt
0x1bt
0x1bt
0x1bt
0x1at
.end array-data
.end method
.method private constructor <init>()V
.locals 0
.line 34
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method private final addCode(III)V
.locals 2
.line 159
new-instance p0, Lokhttp3/internal/http2/Huffman$Node;
invoke-direct {p0, p1, p3}, Lokhttp3/internal/http2/Huffman$Node;-><init>(II)V
sget-object p1, Lokhttp3/internal/http2/Huffman;->root:Lokhttp3/internal/http2/Huffman$Node;
:goto_0
const/16 v0, 0x8
if-le p3, v0, :cond_1
add-int/lit8 p3, p3, -0x8
ushr-int v0, p2, p3
and-int/lit16 v0, v0, 0xff
.line 166
invoke-virtual {p1}, Lokhttp3/internal/http2/Huffman$Node;->getChildren()[Lokhttp3/internal/http2/Huffman$Node;
move-result-object p1
invoke-static {p1}, Lkotlin/jvm/internal/Intrinsics;->checkNotNull(Ljava/lang/Object;)V
.line 167
aget-object v1, p1, v0
if-nez v1, :cond_0
.line 169
new-instance v1, Lokhttp3/internal/http2/Huffman$Node;
invoke-direct {v1}, Lokhttp3/internal/http2/Huffman$Node;-><init>()V
.line 170
aput-object v1, p1, v0
:cond_0
move-object p1, v1
goto :goto_0
:cond_1
sub-int/2addr v0, p3
shl-int/2addr p2, v0
and-int/lit16 p2, p2, 0xff
const/4 p3, 0x1
shl-int/2addr p3, v0
.line 178
invoke-virtual {p1}, Lokhttp3/internal/http2/Huffman$Node;->getChildren()[Lokhttp3/internal/http2/Huffman$Node;
move-result-object p1
invoke-static {p1}, Lkotlin/jvm/internal/Intrinsics;->checkNotNull(Ljava/lang/Object;)V
add-int/2addr p3, p2
invoke-static {p1, p0, p2, p3}, Lkotlin/collections/ArraysKt;->fill([Ljava/lang/Object;Ljava/lang/Object;II)V
return-void
.end method
# virtual methods
.method public final decode(Lokio/BufferedSource;JLokio/BufferedSink;)V
.locals 7
const-string p0, "source"
invoke-static {p1, p0}, Lkotlin/jvm/internal/Intrinsics;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V
const-string p0, "sink"
invoke-static {p4, p0}, Lkotlin/jvm/internal/Intrinsics;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V
sget-object p0, Lokhttp3/internal/http2/Huffman;->root:Lokhttp3/internal/http2/Huffman$Node;
const/4 v0, 0x0
const-wide/16 v1, 0x0
move-wide v2, v1
move v1, v0
:goto_0
cmp-long v4, v2, p2
const/16 v5, 0xff
if-gez v4, :cond_2
.line 128
invoke-interface {p1}, Lokio/BufferedSource;->readByte()B
move-result v4
invoke-static {v4, v5}, Lokhttp3/internal/Util;->and(BI)I
move-result v4
shl-int/lit8 v0, v0, 0x8
or-int/2addr v0, v4
add-int/lit8 v1, v1, 0x8
:goto_1
const/16 v4, 0x8
if-lt v1, v4, :cond_1
add-int/lit8 v4, v1, -0x8
ushr-int v6, v0, v4
and-int/2addr v6, v5
.line 133
invoke-virtual {p0}, Lokhttp3/internal/http2/Huffman$Node;->getChildren()[Lokhttp3/internal/http2/Huffman$Node;
move-result-object p0
invoke-static {p0}, Lkotlin/jvm/internal/Intrinsics;->checkNotNull(Ljava/lang/Object;)V
aget-object p0, p0, v6
invoke-static {p0}, Lkotlin/jvm/internal/Intrinsics;->checkNotNull(Ljava/lang/Object;)V
.line 134
invoke-virtual {p0}, Lokhttp3/internal/http2/Huffman$Node;->getChildren()[Lokhttp3/internal/http2/Huffman$Node;
move-result-object v6
if-nez v6, :cond_0
.line 136
invoke-virtual {p0}, Lokhttp3/internal/http2/Huffman$Node;->getSymbol()I
move-result v4
invoke-interface {p4, v4}, Lokio/BufferedSink;->writeByte(I)Lokio/BufferedSink;
.line 137
invoke-virtual {p0}, Lokhttp3/internal/http2/Huffman$Node;->getTerminalBitCount()I
move-result p0
sub-int/2addr v1, p0
sget-object p0, Lokhttp3/internal/http2/Huffman;->root:Lokhttp3/internal/http2/Huffman$Node;
goto :goto_1
:cond_0
move v1, v4
goto :goto_1
:cond_1
const-wide/16 v4, 0x1
add-long/2addr v2, v4
goto :goto_0
:cond_2
:goto_2
if-lez v1, :cond_4
rsub-int/lit8 p1, v1, 0x8
shl-int p1, v0, p1
and-int/2addr p1, v5
.line 148
invoke-virtual {p0}, Lokhttp3/internal/http2/Huffman$Node;->getChildren()[Lokhttp3/internal/http2/Huffman$Node;
move-result-object p0
invoke-static {p0}, Lkotlin/jvm/internal/Intrinsics;->checkNotNull(Ljava/lang/Object;)V
aget-object p0, p0, p1
invoke-static {p0}, Lkotlin/jvm/internal/Intrinsics;->checkNotNull(Ljava/lang/Object;)V
.line 149
invoke-virtual {p0}, Lokhttp3/internal/http2/Huffman$Node;->getChildren()[Lokhttp3/internal/http2/Huffman$Node;
move-result-object p1
if-nez p1, :cond_4
invoke-virtual {p0}, Lokhttp3/internal/http2/Huffman$Node;->getTerminalBitCount()I
move-result p1
if-le p1, v1, :cond_3
goto :goto_3
.line 152
:cond_3
invoke-virtual {p0}, Lokhttp3/internal/http2/Huffman$Node;->getSymbol()I
move-result p1
invoke-interface {p4, p1}, Lokio/BufferedSink;->writeByte(I)Lokio/BufferedSink;
.line 153
invoke-virtual {p0}, Lokhttp3/internal/http2/Huffman$Node;->getTerminalBitCount()I
move-result p0
sub-int/2addr v1, p0
sget-object p0, Lokhttp3/internal/http2/Huffman;->root:Lokhttp3/internal/http2/Huffman$Node;
goto :goto_2
:cond_4
:goto_3
return-void
.end method
.method public final encode(Lokio/ByteString;Lokio/BufferedSink;)V
.locals 7
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
const-string p0, "source"
invoke-static {p1, p0}, Lkotlin/jvm/internal/Intrinsics;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V
const-string p0, "sink"
invoke-static {p2, p0}, Lkotlin/jvm/internal/Intrinsics;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V
.line 91
invoke-virtual {p1}, Lokio/ByteString;->size()I
move-result p0
const-wide/16 v0, 0x0
const/4 v2, 0x0
move v3, v2
:goto_0
if-ge v2, p0, :cond_1
.line 92
invoke-virtual {p1, v2}, Lokio/ByteString;->getByte(I)B
move-result v4
const/16 v5, 0xff
invoke-static {v4, v5}, Lokhttp3/internal/Util;->and(BI)I
move-result v4
sget-object v5, Lokhttp3/internal/http2/Huffman;->CODES:[I
.line 93
aget v5, v5, v4
sget-object v6, Lokhttp3/internal/http2/Huffman;->CODE_BIT_COUNTS:[B
.line 94
aget-byte v4, v6, v4
shl-long/2addr v0, v4
int-to-long v5, v5
or-long/2addr v0, v5
add-int/2addr v3, v4
:goto_1
const/16 v4, 0x8
if-lt v3, v4, :cond_0
add-int/lit8 v3, v3, -0x8
shr-long v4, v0, v3
long-to-int v4, v4
.line 101
invoke-interface {p2, v4}, Lokio/BufferedSink;->writeByte(I)Lokio/BufferedSink;
goto :goto_1
:cond_0
add-int/lit8 v2, v2, 0x1
goto :goto_0
:cond_1
if-lez v3, :cond_2
rsub-int/lit8 p0, v3, 0x8
shl-long p0, v0, p0
const-wide/16 v0, 0xff
ushr-long/2addr v0, v3
or-long/2addr p0, v0
long-to-int p0, p0
.line 108
invoke-interface {p2, p0}, Lokio/BufferedSink;->writeByte(I)Lokio/BufferedSink;
:cond_2
return-void
.end method
.method public final encodedLength(Lokio/ByteString;)I
.locals 5
const-string p0, "bytes"
invoke-static {p1, p0}, Lkotlin/jvm/internal/Intrinsics;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V
.line 115
invoke-virtual {p1}, Lokio/ByteString;->size()I
move-result p0
const-wide/16 v0, 0x0
const/4 v2, 0x0
:goto_0
if-ge v2, p0, :cond_0
.line 116
invoke-virtual {p1, v2}, Lokio/ByteString;->getByte(I)B
move-result v3
const/16 v4, 0xff
invoke-static {v3, v4}, Lokhttp3/internal/Util;->and(BI)I
move-result v3
sget-object v4, Lokhttp3/internal/http2/Huffman;->CODE_BIT_COUNTS:[B
.line 117
aget-byte v3, v4, v3
int-to-long v3, v3
add-long/2addr v0, v3
add-int/lit8 v2, v2, 0x1
goto :goto_0
:cond_0
const/4 p0, 0x7
int-to-long p0, p0
add-long/2addr v0, p0
const/4 p0, 0x3
shr-long p0, v0, p0
long-to-int p0, p0
return p0
.end method