You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1063 lines
18 KiB
1063 lines
18 KiB
.class Lokhttp3/internal/framed/Huffman; |
|
.super Ljava/lang/Object; |
|
.source "Huffman.java" |
|
|
|
|
|
# annotations |
|
.annotation system Ldalvik/annotation/MemberClasses; |
|
value = { |
|
Lokhttp3/internal/framed/Huffman$Node; |
|
} |
|
.end annotation |
|
|
|
|
|
# static fields |
|
.field private static final CODES:[I |
|
|
|
.field private static final CODE_LENGTHS:[B |
|
|
|
.field private static final INSTANCE:Lokhttp3/internal/framed/Huffman; |
|
|
|
|
|
# instance fields |
|
.field private final root:Lokhttp3/internal/framed/Huffman$Node; |
|
|
|
|
|
# direct methods |
|
.method static constructor <clinit>()V |
|
.locals 2 |
|
|
|
.prologue |
|
const/16 v1, 0x100 |
|
|
|
.line 36 |
|
new-array v0, v1, [I |
|
|
|
fill-array-data v0, :array_0 |
|
|
|
sput-object v0, Lokhttp3/internal/framed/Huffman;->CODES:[I |
|
|
|
.line 64 |
|
new-array v0, v1, [B |
|
|
|
fill-array-data v0, :array_1 |
|
|
|
sput-object v0, Lokhttp3/internal/framed/Huffman;->CODE_LENGTHS:[B |
|
|
|
.line 78 |
|
new-instance v0, Lokhttp3/internal/framed/Huffman; |
|
|
|
invoke-direct {v0}, Lokhttp3/internal/framed/Huffman;-><init>()V |
|
|
|
sput-object v0, Lokhttp3/internal/framed/Huffman;->INSTANCE:Lokhttp3/internal/framed/Huffman; |
|
|
|
return-void |
|
|
|
.line 36 |
|
: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 |
|
|
|
.line 64 |
|
: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 1 |
|
|
|
.prologue |
|
.line 86 |
|
invoke-direct {p0}, Ljava/lang/Object;-><init>()V |
|
|
|
.line 84 |
|
new-instance v0, Lokhttp3/internal/framed/Huffman$Node; |
|
|
|
invoke-direct {v0}, Lokhttp3/internal/framed/Huffman$Node;-><init>()V |
|
|
|
iput-object v0, p0, Lokhttp3/internal/framed/Huffman;->root:Lokhttp3/internal/framed/Huffman$Node; |
|
|
|
.line 87 |
|
invoke-direct {p0}, Lokhttp3/internal/framed/Huffman;->buildTree()V |
|
|
|
.line 88 |
|
return-void |
|
.end method |
|
|
|
.method private addCode(IIB)V |
|
.locals 6 |
|
|
|
.prologue |
|
.line 172 |
|
new-instance v3, Lokhttp3/internal/framed/Huffman$Node; |
|
|
|
invoke-direct {v3, p1, p3}, Lokhttp3/internal/framed/Huffman$Node;-><init>(II)V |
|
|
|
.line 174 |
|
iget-object v0, p0, Lokhttp3/internal/framed/Huffman;->root:Lokhttp3/internal/framed/Huffman$Node; |
|
|
|
move-object v2, v0 |
|
|
|
.line 175 |
|
:goto_0 |
|
const/16 v0, 0x8 |
|
|
|
if-le p3, v0, :cond_2 |
|
|
|
.line 176 |
|
add-int/lit8 v0, p3, -0x8 |
|
|
|
int-to-byte p3, v0 |
|
|
|
.line 177 |
|
ushr-int v0, p2, p3 |
|
|
|
and-int/lit16 v0, v0, 0xff |
|
|
|
.line 178 |
|
invoke-static {v2}, Lokhttp3/internal/framed/Huffman$Node;->access$000(Lokhttp3/internal/framed/Huffman$Node;)[Lokhttp3/internal/framed/Huffman$Node; |
|
|
|
move-result-object v1 |
|
|
|
if-nez v1, :cond_0 |
|
|
|
.line 179 |
|
new-instance v0, Ljava/lang/IllegalStateException; |
|
|
|
const-string v1, "invalid dictionary: prefix not unique" |
|
|
|
invoke-direct {v0, v1}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V |
|
|
|
throw v0 |
|
|
|
.line 181 |
|
:cond_0 |
|
invoke-static {v2}, Lokhttp3/internal/framed/Huffman$Node;->access$000(Lokhttp3/internal/framed/Huffman$Node;)[Lokhttp3/internal/framed/Huffman$Node; |
|
|
|
move-result-object v1 |
|
|
|
aget-object v1, v1, v0 |
|
|
|
if-nez v1, :cond_1 |
|
|
|
.line 182 |
|
invoke-static {v2}, Lokhttp3/internal/framed/Huffman$Node;->access$000(Lokhttp3/internal/framed/Huffman$Node;)[Lokhttp3/internal/framed/Huffman$Node; |
|
|
|
move-result-object v1 |
|
|
|
new-instance v4, Lokhttp3/internal/framed/Huffman$Node; |
|
|
|
invoke-direct {v4}, Lokhttp3/internal/framed/Huffman$Node;-><init>()V |
|
|
|
aput-object v4, v1, v0 |
|
|
|
.line 184 |
|
:cond_1 |
|
invoke-static {v2}, Lokhttp3/internal/framed/Huffman$Node;->access$000(Lokhttp3/internal/framed/Huffman$Node;)[Lokhttp3/internal/framed/Huffman$Node; |
|
|
|
move-result-object v1 |
|
|
|
aget-object v0, v1, v0 |
|
|
|
move-object v2, v0 |
|
|
|
.line 185 |
|
goto :goto_0 |
|
|
|
.line 187 |
|
:cond_2 |
|
rsub-int/lit8 v0, p3, 0x8 |
|
|
|
.line 188 |
|
shl-int v1, p2, v0 |
|
|
|
and-int/lit16 v1, v1, 0xff |
|
|
|
.line 189 |
|
const/4 v4, 0x1 |
|
|
|
shl-int/2addr v4, v0 |
|
|
|
move v0, v1 |
|
|
|
.line 190 |
|
:goto_1 |
|
add-int v5, v1, v4 |
|
|
|
if-ge v0, v5, :cond_3 |
|
|
|
.line 191 |
|
invoke-static {v2}, Lokhttp3/internal/framed/Huffman$Node;->access$000(Lokhttp3/internal/framed/Huffman$Node;)[Lokhttp3/internal/framed/Huffman$Node; |
|
|
|
move-result-object v5 |
|
|
|
aput-object v3, v5, v0 |
|
|
|
.line 190 |
|
add-int/lit8 v0, v0, 0x1 |
|
|
|
goto :goto_1 |
|
|
|
.line 193 |
|
:cond_3 |
|
return-void |
|
.end method |
|
|
|
.method private buildTree()V |
|
.locals 3 |
|
|
|
.prologue |
|
.line 166 |
|
const/4 v0, 0x0 |
|
|
|
:goto_0 |
|
sget-object v1, Lokhttp3/internal/framed/Huffman;->CODE_LENGTHS:[B |
|
|
|
array-length v1, v1 |
|
|
|
if-ge v0, v1, :cond_0 |
|
|
|
.line 167 |
|
sget-object v1, Lokhttp3/internal/framed/Huffman;->CODES:[I |
|
|
|
aget v1, v1, v0 |
|
|
|
sget-object v2, Lokhttp3/internal/framed/Huffman;->CODE_LENGTHS:[B |
|
|
|
aget-byte v2, v2, v0 |
|
|
|
invoke-direct {p0, v0, v1, v2}, Lokhttp3/internal/framed/Huffman;->addCode(IIB)V |
|
|
|
.line 166 |
|
add-int/lit8 v0, v0, 0x1 |
|
|
|
goto :goto_0 |
|
|
|
.line 169 |
|
:cond_0 |
|
return-void |
|
.end method |
|
|
|
.method public static get()Lokhttp3/internal/framed/Huffman; |
|
.locals 1 |
|
|
|
.prologue |
|
.line 81 |
|
sget-object v0, Lokhttp3/internal/framed/Huffman;->INSTANCE:Lokhttp3/internal/framed/Huffman; |
|
|
|
return-object v0 |
|
.end method |
|
|
|
|
|
# virtual methods |
|
.method decode([B)[B |
|
.locals 6 |
|
|
|
.prologue |
|
const/4 v0, 0x0 |
|
|
|
.line 128 |
|
new-instance v4, Ljava/io/ByteArrayOutputStream; |
|
|
|
invoke-direct {v4}, Ljava/io/ByteArrayOutputStream;-><init>()V |
|
|
|
.line 129 |
|
iget-object v1, p0, Lokhttp3/internal/framed/Huffman;->root:Lokhttp3/internal/framed/Huffman$Node; |
|
|
|
move v2, v0 |
|
|
|
move-object v3, v1 |
|
|
|
move v1, v0 |
|
|
|
.line 132 |
|
:goto_0 |
|
array-length v5, p1 |
|
|
|
if-ge v0, v5, :cond_3 |
|
|
|
.line 133 |
|
aget-byte v5, p1, v0 |
|
|
|
and-int/lit16 v5, v5, 0xff |
|
|
|
.line 134 |
|
shl-int/lit8 v2, v2, 0x8 |
|
|
|
or-int/2addr v2, v5 |
|
|
|
.line 135 |
|
add-int/lit8 v1, v1, 0x8 |
|
|
|
.line 136 |
|
:goto_1 |
|
const/16 v5, 0x8 |
|
|
|
if-lt v1, v5, :cond_1 |
|
|
|
.line 137 |
|
add-int/lit8 v5, v1, -0x8 |
|
|
|
ushr-int v5, v2, v5 |
|
|
|
and-int/lit16 v5, v5, 0xff |
|
|
|
.line 138 |
|
invoke-static {v3}, Lokhttp3/internal/framed/Huffman$Node;->access$000(Lokhttp3/internal/framed/Huffman$Node;)[Lokhttp3/internal/framed/Huffman$Node; |
|
|
|
move-result-object v3 |
|
|
|
aget-object v3, v3, v5 |
|
|
|
.line 139 |
|
invoke-static {v3}, Lokhttp3/internal/framed/Huffman$Node;->access$000(Lokhttp3/internal/framed/Huffman$Node;)[Lokhttp3/internal/framed/Huffman$Node; |
|
|
|
move-result-object v5 |
|
|
|
if-nez v5, :cond_0 |
|
|
|
.line 141 |
|
invoke-static {v3}, Lokhttp3/internal/framed/Huffman$Node;->access$100(Lokhttp3/internal/framed/Huffman$Node;)I |
|
|
|
move-result v5 |
|
|
|
invoke-virtual {v4, v5}, Ljava/io/ByteArrayOutputStream;->write(I)V |
|
|
|
.line 142 |
|
invoke-static {v3}, Lokhttp3/internal/framed/Huffman$Node;->access$200(Lokhttp3/internal/framed/Huffman$Node;)I |
|
|
|
move-result v3 |
|
|
|
sub-int/2addr v1, v3 |
|
|
|
.line 143 |
|
iget-object v3, p0, Lokhttp3/internal/framed/Huffman;->root:Lokhttp3/internal/framed/Huffman$Node; |
|
|
|
goto :goto_1 |
|
|
|
.line 146 |
|
:cond_0 |
|
add-int/lit8 v1, v1, -0x8 |
|
|
|
goto :goto_1 |
|
|
|
.line 132 |
|
:cond_1 |
|
add-int/lit8 v0, v0, 0x1 |
|
|
|
goto :goto_0 |
|
|
|
.line 157 |
|
:cond_2 |
|
invoke-static {v0}, Lokhttp3/internal/framed/Huffman$Node;->access$100(Lokhttp3/internal/framed/Huffman$Node;)I |
|
|
|
move-result v3 |
|
|
|
invoke-virtual {v4, v3}, Ljava/io/ByteArrayOutputStream;->write(I)V |
|
|
|
.line 158 |
|
invoke-static {v0}, Lokhttp3/internal/framed/Huffman$Node;->access$200(Lokhttp3/internal/framed/Huffman$Node;)I |
|
|
|
move-result v0 |
|
|
|
sub-int/2addr v1, v0 |
|
|
|
.line 159 |
|
iget-object v3, p0, Lokhttp3/internal/framed/Huffman;->root:Lokhttp3/internal/framed/Huffman$Node; |
|
|
|
.line 151 |
|
:cond_3 |
|
if-lez v1, :cond_4 |
|
|
|
.line 152 |
|
rsub-int/lit8 v0, v1, 0x8 |
|
|
|
shl-int v0, v2, v0 |
|
|
|
and-int/lit16 v0, v0, 0xff |
|
|
|
.line 153 |
|
invoke-static {v3}, Lokhttp3/internal/framed/Huffman$Node;->access$000(Lokhttp3/internal/framed/Huffman$Node;)[Lokhttp3/internal/framed/Huffman$Node; |
|
|
|
move-result-object v3 |
|
|
|
aget-object v0, v3, v0 |
|
|
|
.line 154 |
|
invoke-static {v0}, Lokhttp3/internal/framed/Huffman$Node;->access$000(Lokhttp3/internal/framed/Huffman$Node;)[Lokhttp3/internal/framed/Huffman$Node; |
|
|
|
move-result-object v3 |
|
|
|
if-nez v3, :cond_4 |
|
|
|
invoke-static {v0}, Lokhttp3/internal/framed/Huffman$Node;->access$200(Lokhttp3/internal/framed/Huffman$Node;)I |
|
|
|
move-result v3 |
|
|
|
if-le v3, v1, :cond_2 |
|
|
|
.line 162 |
|
:cond_4 |
|
invoke-virtual {v4}, Ljava/io/ByteArrayOutputStream;->toByteArray()[B |
|
|
|
move-result-object v0 |
|
|
|
return-object v0 |
|
.end method |
|
|
|
.method encode([BLjava/io/OutputStream;)V |
|
.locals 8 |
|
|
|
.prologue |
|
const/4 v0, 0x0 |
|
|
|
.line 91 |
|
const-wide/16 v2, 0x0 |
|
|
|
move v1, v0 |
|
|
|
.line 94 |
|
:goto_0 |
|
array-length v4, p1 |
|
|
|
if-ge v0, v4, :cond_1 |
|
|
|
.line 95 |
|
aget-byte v4, p1, v0 |
|
|
|
and-int/lit16 v4, v4, 0xff |
|
|
|
.line 96 |
|
sget-object v5, Lokhttp3/internal/framed/Huffman;->CODES:[I |
|
|
|
aget v5, v5, v4 |
|
|
|
.line 97 |
|
sget-object v6, Lokhttp3/internal/framed/Huffman;->CODE_LENGTHS:[B |
|
|
|
aget-byte v4, v6, v4 |
|
|
|
.line 99 |
|
shl-long/2addr v2, v4 |
|
|
|
.line 100 |
|
int-to-long v6, v5 |
|
|
|
or-long/2addr v2, v6 |
|
|
|
.line 101 |
|
add-int/2addr v1, v4 |
|
|
|
.line 103 |
|
:goto_1 |
|
const/16 v4, 0x8 |
|
|
|
if-lt v1, v4, :cond_0 |
|
|
|
.line 104 |
|
add-int/lit8 v1, v1, -0x8 |
|
|
|
.line 105 |
|
shr-long v4, v2, v1 |
|
|
|
long-to-int v4, v4 |
|
|
|
invoke-virtual {p2, v4}, Ljava/io/OutputStream;->write(I)V |
|
|
|
goto :goto_1 |
|
|
|
.line 94 |
|
:cond_0 |
|
add-int/lit8 v0, v0, 0x1 |
|
|
|
goto :goto_0 |
|
|
|
.line 109 |
|
:cond_1 |
|
if-lez v1, :cond_2 |
|
|
|
.line 110 |
|
rsub-int/lit8 v0, v1, 0x8 |
|
|
|
shl-long/2addr v2, v0 |
|
|
|
.line 111 |
|
const/16 v0, 0xff |
|
|
|
ushr-int/2addr v0, v1 |
|
|
|
int-to-long v0, v0 |
|
|
|
or-long/2addr v0, v2 |
|
|
|
.line 112 |
|
long-to-int v0, v0 |
|
|
|
invoke-virtual {p2, v0}, Ljava/io/OutputStream;->write(I)V |
|
|
|
.line 114 |
|
:cond_2 |
|
return-void |
|
.end method |
|
|
|
.method encodedLength([B)I |
|
.locals 6 |
|
|
|
.prologue |
|
.line 117 |
|
const-wide/16 v2, 0x0 |
|
|
|
.line 119 |
|
const/4 v0, 0x0 |
|
|
|
:goto_0 |
|
array-length v1, p1 |
|
|
|
if-ge v0, v1, :cond_0 |
|
|
|
.line 120 |
|
aget-byte v1, p1, v0 |
|
|
|
and-int/lit16 v1, v1, 0xff |
|
|
|
.line 121 |
|
sget-object v4, Lokhttp3/internal/framed/Huffman;->CODE_LENGTHS:[B |
|
|
|
aget-byte v1, v4, v1 |
|
|
|
int-to-long v4, v1 |
|
|
|
add-long/2addr v2, v4 |
|
|
|
.line 119 |
|
add-int/lit8 v0, v0, 0x1 |
|
|
|
goto :goto_0 |
|
|
|
.line 124 |
|
:cond_0 |
|
const-wide/16 v0, 0x7 |
|
|
|
add-long/2addr v0, v2 |
|
|
|
const/4 v2, 0x3 |
|
|
|
shr-long/2addr v0, v2 |
|
|
|
long-to-int v0, v0 |
|
|
|
return v0 |
|
.end method
|
|
|