.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 ()V .locals 5 .line 34 new-instance v0, Lokhttp3/internal/http2/Huffman; invoke-direct {v0}, Lokhttp3/internal/http2/Huffman;->()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;->()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 ()V .locals 0 .line 34 invoke-direct {p0}, Ljava/lang/Object;->()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;->(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;->()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