n.smali

.class public Lcom/subgraph/orchid/circuits/hs/n;
.super Ljava/lang/Object;
.source "RendezvousCircuitBuilder.java"

# interfaces
.implements Ljava/util/concurrent/Callable;


# annotations
.annotation system Ldalvik/annotation/Signature;
    value = {
        "Ljava/lang/Object;",
        "Ljava/util/concurrent/Callable",
        "<",
        "Lcom/subgraph/orchid/q;",
        ">;"
    }
.end annotation


# instance fields
.field private final bBL:Lcom/subgraph/orchid/circuits/g;

.field private final bBs:Lcom/subgraph/orchid/j;

.field private final bEL:Lcom/subgraph/orchid/circuits/hs/c;

.field private final bEm:Lcom/subgraph/orchid/circuits/hs/i;

.field private final logger:Ljava/util/logging/Logger;


# direct methods
.method public constructor <init>(Lcom/subgraph/orchid/j;Lcom/subgraph/orchid/circuits/g;Lcom/subgraph/orchid/circuits/hs/i;Lcom/subgraph/orchid/circuits/hs/c;)V
    .registers 6

    .prologue
    .line 24
    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    .line 16
    const-class v0, Lcom/subgraph/orchid/circuits/hs/n;

    invoke-virtual {v0}, Ljava/lang/Class;->getName()Ljava/lang/String;

    move-result-object v0

    invoke-static {v0}, Ljava/util/logging/Logger;->getLogger(Ljava/lang/String;)Ljava/util/logging/Logger;

    move-result-object v0

    iput-object v0, p0, Lcom/subgraph/orchid/circuits/hs/n;->logger:Ljava/util/logging/Logger;

    .line 25
    iput-object p1, p0, Lcom/subgraph/orchid/circuits/hs/n;->bBs:Lcom/subgraph/orchid/j;

    .line 26
    iput-object p2, p0, Lcom/subgraph/orchid/circuits/hs/n;->bBL:Lcom/subgraph/orchid/circuits/g;

    .line 27
    iput-object p3, p0, Lcom/subgraph/orchid/circuits/hs/n;->bEm:Lcom/subgraph/orchid/circuits/hs/i;

    .line 28
    iput-object p4, p0, Lcom/subgraph/orchid/circuits/hs/n;->bEL:Lcom/subgraph/orchid/circuits/hs/c;

    .line 29
    return-void
.end method

.method private Lz()Lcom/subgraph/orchid/circuits/hs/m;
    .registers 5

    .prologue
    .line 73
    iget-object v0, p0, Lcom/subgraph/orchid/circuits/hs/n;->bEL:Lcom/subgraph/orchid/circuits/hs/c;

    .line 13085
    new-instance v1, Ljava/util/ArrayList;

    iget-object v0, v0, Lcom/subgraph/orchid/circuits/hs/c;->bEh:Ljava/util/List;

    invoke-direct {v1, v0}, Ljava/util/ArrayList;-><init>(Ljava/util/Collection;)V

    .line 12089
    invoke-static {v1}, Lcom/subgraph/orchid/circuits/hs/c;->af(Ljava/util/List;)Ljava/util/List;

    move-result-object v0

    .line 73
    invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;

    move-result-object v1

    :cond_11
    invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z

    move-result v0

    if-eqz v0, :cond_2c

    invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lcom/subgraph/orchid/circuits/hs/k;

    .line 74
    invoke-direct {p0, v0}, Lcom/subgraph/orchid/circuits/hs/n;->b(Lcom/subgraph/orchid/circuits/hs/k;)Lcom/subgraph/orchid/c;

    move-result-object v2

    .line 75
    if-eqz v2, :cond_11

    .line 76
    new-instance v1, Lcom/subgraph/orchid/circuits/hs/m;

    iget-object v3, p0, Lcom/subgraph/orchid/circuits/hs/n;->bEm:Lcom/subgraph/orchid/circuits/hs/i;

    invoke-direct {v1, v3, v2, v0}, Lcom/subgraph/orchid/circuits/hs/m;-><init>(Lcom/subgraph/orchid/circuits/hs/i;Lcom/subgraph/orchid/c;Lcom/subgraph/orchid/circuits/hs/k;)V

    move-object v0, v1

    .line 79
    :goto_2b
    return-object v0

    :cond_2c
    const/4 v0, 0x0

    goto :goto_2b
.end method

.method private b(Lcom/subgraph/orchid/circuits/hs/k;)Lcom/subgraph/orchid/c;
    .registers 7

    .prologue
    const/4 v0, 0x0

    .line 83
    iget-object v1, p0, Lcom/subgraph/orchid/circuits/hs/n;->bBs:Lcom/subgraph/orchid/j;

    .line 14040
    iget-object v2, p1, Lcom/subgraph/orchid/circuits/hs/k;->bDD:Lcom/subgraph/orchid/d/c;

    .line 83
    invoke-interface {v1, v2}, Lcom/subgraph/orchid/j;->b(Lcom/subgraph/orchid/d/c;)Lcom/subgraph/orchid/v;

    move-result-object v1

    .line 84
    if-nez v1, :cond_c

    .line 96
    :goto_b
    return-object v0

    .line 89
    :cond_c
    :try_start_c
    iget-object v2, p0, Lcom/subgraph/orchid/circuits/hs/n;->bBL:Lcom/subgraph/orchid/circuits/g;

    invoke-virtual {v2}, Lcom/subgraph/orchid/circuits/g;->KN()Lcom/subgraph/orchid/r;

    move-result-object v2

    .line 90
    invoke-interface {v2, v1}, Lcom/subgraph/orchid/r;->d(Lcom/subgraph/orchid/v;)Lcom/subgraph/orchid/c;
    :try_end_15
    .catch Ljava/lang/InterruptedException; {:try_start_c .. :try_end_15} :catch_17
    .catch Lcom/subgraph/orchid/TorException; {:try_start_c .. :try_end_15} :catch_20

    move-result-object v0

    goto :goto_b

    .line 92
    :catch_17
    move-exception v1

    invoke-static {}, Ljava/lang/Thread;->currentThread()Ljava/lang/Thread;

    move-result-object v1

    invoke-virtual {v1}, Ljava/lang/Thread;->interrupt()V

    goto :goto_b

    .line 94
    :catch_20
    move-exception v1

    .line 95
    iget-object v2, p0, Lcom/subgraph/orchid/circuits/hs/n;->logger:Ljava/util/logging/Logger;

    new-instance v3, Ljava/lang/StringBuilder;

    const-string v4, "cannibalizeTo() failed : "

    invoke-direct {v3, v4}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    invoke-virtual {v1}, Lcom/subgraph/orchid/TorException;->getMessage()Ljava/lang/String;

    move-result-object v1

    invoke-virtual {v3, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v1

    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v1

    invoke-virtual {v2, v1}, Ljava/util/logging/Logger;->fine(Ljava/lang/String;)V

    goto :goto_b
.end method


# virtual methods
.method public final Ly()Lcom/subgraph/orchid/q;
    .registers 20

    .prologue
    .line 33
    move-object/from16 v0, p0

    iget-object v2, v0, Lcom/subgraph/orchid/circuits/hs/n;->logger:Ljava/util/logging/Logger;

    new-instance v3, Ljava/lang/StringBuilder;

    const-string v4, "Opening rendezvous circuit for "

    invoke-direct {v3, v4}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    .line 1069
    move-object/from16 v0, p0

    iget-object v4, v0, Lcom/subgraph/orchid/circuits/hs/n;->bEm:Lcom/subgraph/orchid/circuits/hs/i;

    invoke-virtual {v4}, Lcom/subgraph/orchid/circuits/hs/i;->Lv()Ljava/lang/String;

    move-result-object v4

    .line 33
    invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v3

    invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v3

    invoke-virtual {v2, v3}, Ljava/util/logging/Logger;->fine(Ljava/lang/String;)V

    .line 35
    move-object/from16 v0, p0

    iget-object v2, v0, Lcom/subgraph/orchid/circuits/hs/n;->bBL:Lcom/subgraph/orchid/circuits/g;

    invoke-virtual {v2}, Lcom/subgraph/orchid/circuits/g;->KN()Lcom/subgraph/orchid/r;

    move-result-object v3

    .line 36
    move-object/from16 v0, p0

    iget-object v2, v0, Lcom/subgraph/orchid/circuits/hs/n;->logger:Ljava/util/logging/Logger;

    new-instance v4, Ljava/lang/StringBuilder;

    const-string v5, "Establishing rendezvous for "

    invoke-direct {v4, v5}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    .line 2069
    move-object/from16 v0, p0

    iget-object v5, v0, Lcom/subgraph/orchid/circuits/hs/n;->bEm:Lcom/subgraph/orchid/circuits/hs/i;

    invoke-virtual {v5}, Lcom/subgraph/orchid/circuits/hs/i;->Lv()Ljava/lang/String;

    move-result-object v5

    .line 36
    invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v4

    invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v4

    invoke-virtual {v2, v4}, Ljava/util/logging/Logger;->fine(Ljava/lang/String;)V

    .line 37
    new-instance v4, Lcom/subgraph/orchid/circuits/hs/o;

    invoke-direct {v4, v3}, Lcom/subgraph/orchid/circuits/hs/o;-><init>(Lcom/subgraph/orchid/r;)V

    .line 3033
    iget-object v2, v4, Lcom/subgraph/orchid/circuits/hs/o;->bEM:Lcom/subgraph/orchid/r;

    const/16 v5, 0x21

    const/4 v6, 0x0

    iget-object v7, v4, Lcom/subgraph/orchid/circuits/hs/o;->bEM:Lcom/subgraph/orchid/r;

    invoke-interface {v7}, Lcom/subgraph/orchid/r;->It()Lcom/subgraph/orchid/f;

    move-result-object v7

    invoke-interface {v2, v5, v6, v7}, Lcom/subgraph/orchid/r;->a(IILcom/subgraph/orchid/f;)Lcom/subgraph/orchid/t;

    move-result-object v2

    .line 3034
    iget-object v5, v4, Lcom/subgraph/orchid/circuits/hs/o;->bEN:[B

    invoke-interface {v2, v5}, Lcom/subgraph/orchid/t;->ai([B)V

    .line 3035
    iget-object v5, v4, Lcom/subgraph/orchid/circuits/hs/o;->bEM:Lcom/subgraph/orchid/r;

    invoke-interface {v5, v2}, Lcom/subgraph/orchid/r;->a(Lcom/subgraph/orchid/t;)V

    .line 3036
    iget-object v2, v4, Lcom/subgraph/orchid/circuits/hs/o;->bEM:Lcom/subgraph/orchid/r;

    invoke-interface {v2}, Lcom/subgraph/orchid/r;->Is()Lcom/subgraph/orchid/t;

    move-result-object v2

    .line 3037
    if-nez v2, :cond_79

    .line 3038
    sget-object v2, Lcom/subgraph/orchid/circuits/hs/o;->logger:Ljava/util/logging/Logger;

    const-string v5, "Timeout waiting for Rendezvous establish response"

    invoke-virtual {v2, v5}, Ljava/util/logging/Logger;->info(Ljava/lang/String;)V

    .line 3039
    const/4 v2, 0x0

    .line 38
    :goto_72
    if-nez v2, :cond_9d

    .line 39
    invoke-interface {v3}, Lcom/subgraph/orchid/r;->Iu()V

    .line 40
    const/4 v2, 0x0

    .line 65
    :goto_78
    return-object v2

    .line 3040
    :cond_79
    invoke-interface {v2}, Lcom/subgraph/orchid/t;->Jw()I

    move-result v5

    const/16 v6, 0x27

    if-eq v5, v6, :cond_9b

    .line 3041
    sget-object v5, Lcom/subgraph/orchid/circuits/hs/o;->logger:Ljava/util/logging/Logger;

    new-instance v6, Ljava/lang/StringBuilder;

    const-string v7, "Response received from Rendezvous establish was not expected acknowledgement, Relay Command: "

    invoke-direct {v6, v7}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    invoke-interface {v2}, Lcom/subgraph/orchid/t;->Jw()I

    move-result v2

    invoke-virtual {v6, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    move-result-object v2

    invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v2

    invoke-virtual {v5, v2}, Ljava/util/logging/Logger;->info(Ljava/lang/String;)V

    .line 3042
    const/4 v2, 0x0

    goto :goto_72

    .line 3044
    :cond_9b
    const/4 v2, 0x1

    goto :goto_72

    .line 42
    :cond_9d
    move-object/from16 v0, p0

    iget-object v2, v0, Lcom/subgraph/orchid/circuits/hs/n;->logger:Ljava/util/logging/Logger;

    new-instance v5, Ljava/lang/StringBuilder;

    const-string v6, "Opening introduction circuit for "

    invoke-direct {v5, v6}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    .line 3069
    move-object/from16 v0, p0

    iget-object v6, v0, Lcom/subgraph/orchid/circuits/hs/n;->bEm:Lcom/subgraph/orchid/circuits/hs/i;

    invoke-virtual {v6}, Lcom/subgraph/orchid/circuits/hs/i;->Lv()Ljava/lang/String;

    move-result-object v6

    .line 42
    invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v5

    invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v5

    invoke-virtual {v2, v5}, Ljava/util/logging/Logger;->fine(Ljava/lang/String;)V

    .line 43
    invoke-direct/range {p0 .. p0}, Lcom/subgraph/orchid/circuits/hs/n;->Lz()Lcom/subgraph/orchid/circuits/hs/m;

    move-result-object v5

    .line 44
    if-nez v5, :cond_cf

    .line 45
    move-object/from16 v0, p0

    iget-object v2, v0, Lcom/subgraph/orchid/circuits/hs/n;->logger:Ljava/util/logging/Logger;

    const-string v4, "Failed to open connection to any introduction point"

    invoke-virtual {v2, v4}, Ljava/util/logging/Logger;->info(Ljava/lang/String;)V

    .line 46
    invoke-interface {v3}, Lcom/subgraph/orchid/r;->Iu()V

    .line 47
    const/4 v2, 0x0

    goto :goto_78

    .line 49
    :cond_cf
    move-object/from16 v0, p0

    iget-object v2, v0, Lcom/subgraph/orchid/circuits/hs/n;->logger:Ljava/util/logging/Logger;

    new-instance v6, Ljava/lang/StringBuilder;

    const-string v7, "Sending introduce cell for "

    invoke-direct {v6, v7}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    .line 4069
    move-object/from16 v0, p0

    iget-object v7, v0, Lcom/subgraph/orchid/circuits/hs/n;->bEm:Lcom/subgraph/orchid/circuits/hs/i;

    invoke-virtual {v7}, Lcom/subgraph/orchid/circuits/hs/i;->Lv()Ljava/lang/String;

    move-result-object v7

    .line 49
    invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v6

    invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v6

    invoke-virtual {v2, v6}, Ljava/util/logging/Logger;->fine(Ljava/lang/String;)V

    .line 50
    new-instance v6, Lcom/subgraph/orchid/crypto/s;

    invoke-direct {v6}, Lcom/subgraph/orchid/crypto/s;-><init>()V

    .line 5028
    iget-object v2, v5, Lcom/subgraph/orchid/circuits/hs/m;->bEK:Lcom/subgraph/orchid/circuits/hs/k;

    .line 5056
    iget-object v7, v2, Lcom/subgraph/orchid/circuits/hs/k;->bEE:Lcom/subgraph/orchid/crypto/o;

    .line 51
    invoke-virtual {v6}, Lcom/subgraph/orchid/crypto/s;->getPublicKeyBytes()[B

    move-result-object v8

    .line 5090
    iget-object v9, v4, Lcom/subgraph/orchid/circuits/hs/o;->bEN:[B

    .line 5094
    iget-object v2, v4, Lcom/subgraph/orchid/circuits/hs/o;->bEM:Lcom/subgraph/orchid/r;

    invoke-interface {v2}, Lcom/subgraph/orchid/r;->It()Lcom/subgraph/orchid/f;

    move-result-object v2

    invoke-interface {v2}, Lcom/subgraph/orchid/f;->Iy()Lcom/subgraph/orchid/v;

    move-result-object v2

    .line 6032
    iget-object v10, v5, Lcom/subgraph/orchid/circuits/hs/m;->bEJ:Lcom/subgraph/orchid/c;

    const/16 v11, 0x22

    const/4 v12, 0x0

    iget-object v13, v5, Lcom/subgraph/orchid/circuits/hs/m;->bEJ:Lcom/subgraph/orchid/c;

    invoke-interface {v13}, Lcom/subgraph/orchid/c;->It()Lcom/subgraph/orchid/f;

    move-result-object v13

    invoke-interface {v10, v11, v12, v13}, Lcom/subgraph/orchid/c;->a(IILcom/subgraph/orchid/f;)Lcom/subgraph/orchid/t;

    move-result-object v10

    .line 6060
    invoke-static {}, Ljava/lang/System;->currentTimeMillis()J

    move-result-wide v12

    const-wide/16 v14, 0x3e8

    div-long/2addr v12, v14

    long-to-int v11, v12

    .line 6065
    const/16 v12, 0x200

    invoke-static {v12}, Ljava/nio/ByteBuffer;->allocate(I)Ljava/nio/ByteBuffer;

    move-result-object v12

    .line 6066
    invoke-interface {v2}, Lcom/subgraph/orchid/v;->JC()Lcom/subgraph/orchid/d/d;

    move-result-object v13

    invoke-virtual {v13}, Lcom/subgraph/orchid/d/d;->Mq()[B

    move-result-object v13

    .line 6067
    invoke-interface {v2}, Lcom/subgraph/orchid/v;->JD()I

    move-result v14

    int-to-short v14, v14

    .line 6068
    invoke-interface {v2}, Lcom/subgraph/orchid/v;->JF()Lcom/subgraph/orchid/d/c;

    move-result-object v15

    invoke-virtual {v15}, Lcom/subgraph/orchid/d/c;->Mf()[B

    move-result-object v15

    .line 6069
    invoke-interface {v2}, Lcom/subgraph/orchid/v;->IV()Lcom/subgraph/orchid/crypto/o;

    move-result-object v2

    invoke-virtual {v2}, Lcom/subgraph/orchid/crypto/o;->Mf()[B

    move-result-object v16

    .line 6071
    const/4 v2, 0x3

    invoke-virtual {v12, v2}, Ljava/nio/ByteBuffer;->put(B)Ljava/nio/ByteBuffer;

    .line 6087
    iget-object v2, v5, Lcom/subgraph/orchid/circuits/hs/m;->bEm:Lcom/subgraph/orchid/circuits/hs/i;

    invoke-virtual {v2}, Lcom/subgraph/orchid/circuits/hs/i;->Lx()Lcom/subgraph/orchid/circuits/hs/HSDescriptorCookie;

    move-result-object v17

    .line 6088
    if-nez v17, :cond_1b7

    .line 6089
    const/4 v2, 0x0

    invoke-virtual {v12, v2}, Ljava/nio/ByteBuffer;->put(B)Ljava/nio/ByteBuffer;

    .line 6074
    :goto_150
    invoke-virtual {v12, v11}, Ljava/nio/ByteBuffer;->putInt(I)Ljava/nio/ByteBuffer;

    .line 6075
    invoke-virtual {v12, v13}, Ljava/nio/ByteBuffer;->put([B)Ljava/nio/ByteBuffer;

    .line 6076
    invoke-virtual {v12, v14}, Ljava/nio/ByteBuffer;->putShort(S)Ljava/nio/ByteBuffer;

    .line 6077
    invoke-virtual {v12, v15}, Ljava/nio/ByteBuffer;->put([B)Ljava/nio/ByteBuffer;

    .line 6078
    move-object/from16 v0, v16

    array-length v2, v0

    int-to-short v2, v2

    invoke-virtual {v12, v2}, Ljava/nio/ByteBuffer;->putShort(S)Ljava/nio/ByteBuffer;

    .line 6079
    move-object/from16 v0, v16

    invoke-virtual {v12, v0}, Ljava/nio/ByteBuffer;->put([B)Ljava/nio/ByteBuffer;

    .line 6080
    invoke-virtual {v12, v9}, Ljava/nio/ByteBuffer;->put([B)Ljava/nio/ByteBuffer;

    .line 6081
    invoke-virtual {v12, v8}, Ljava/nio/ByteBuffer;->put([B)Ljava/nio/ByteBuffer;

    .line 8098
    invoke-virtual {v12}, Ljava/nio/ByteBuffer;->position()I

    move-result v2

    .line 8099
    new-array v2, v2, [B

    .line 8100
    invoke-virtual {v12}, Ljava/nio/ByteBuffer;->flip()Ljava/nio/Buffer;

    .line 8101
    invoke-virtual {v12, v2}, Ljava/nio/ByteBuffer;->get([B)Ljava/nio/ByteBuffer;

    .line 8102
    new-instance v8, Lcom/subgraph/orchid/crypto/h;

    invoke-direct {v8}, Lcom/subgraph/orchid/crypto/h;-><init>()V

    .line 8103
    invoke-virtual {v8, v2, v7}, Lcom/subgraph/orchid/crypto/h;->a([BLcom/subgraph/orchid/crypto/o;)[B

    move-result-object v2

    .line 6035
    iget-object v7, v5, Lcom/subgraph/orchid/circuits/hs/m;->bEK:Lcom/subgraph/orchid/circuits/hs/k;

    .line 9056
    iget-object v7, v7, Lcom/subgraph/orchid/circuits/hs/k;->bEE:Lcom/subgraph/orchid/crypto/o;

    .line 6036
    invoke-virtual {v7}, Lcom/subgraph/orchid/crypto/o;->Mg()Lcom/subgraph/orchid/d/c;

    move-result-object v7

    invoke-virtual {v7}, Lcom/subgraph/orchid/d/c;->Mf()[B

    move-result-object v7

    invoke-interface {v10, v7}, Lcom/subgraph/orchid/t;->ai([B)V

    .line 6037
    invoke-interface {v10, v2}, Lcom/subgraph/orchid/t;->ai([B)V

    .line 6038
    iget-object v2, v5, Lcom/subgraph/orchid/circuits/hs/m;->bEJ:Lcom/subgraph/orchid/c;

    invoke-interface {v2, v10}, Lcom/subgraph/orchid/c;->a(Lcom/subgraph/orchid/t;)V

    .line 6040
    iget-object v2, v5, Lcom/subgraph/orchid/circuits/hs/m;->bEJ:Lcom/subgraph/orchid/c;

    invoke-interface {v2}, Lcom/subgraph/orchid/c;->Is()Lcom/subgraph/orchid/t;

    move-result-object v2

    .line 6041
    if-nez v2, :cond_1e6

    .line 6042
    sget-object v2, Lcom/subgraph/orchid/circuits/hs/m;->logger:Ljava/util/logging/Logger;

    const-string v7, "Timeout waiting for response to INTRODUCE1 cell"

    invoke-virtual {v2, v7}, Ljava/util/logging/Logger;->fine(Ljava/lang/String;)V

    .line 6043
    const/4 v2, 0x0

    .line 10056
    :goto_1aa
    iget-object v5, v5, Lcom/subgraph/orchid/circuits/hs/m;->bEJ:Lcom/subgraph/orchid/c;

    invoke-interface {v5}, Lcom/subgraph/orchid/c;->Iu()V

    .line 53
    if-nez v2, :cond_22a

    .line 54
    invoke-interface {v3}, Lcom/subgraph/orchid/r;->Iu()V

    .line 55
    const/4 v2, 0x0

    goto/16 :goto_78

    .line 7016
    :cond_1b7
    sget-object v2, Lcom/subgraph/orchid/circuits/hs/HSDescriptorCookie$1;->bEj:[I

    move-object/from16 v0, v17

    iget-object v0, v0, Lcom/subgraph/orchid/circuits/hs/HSDescriptorCookie;->bEi:Lcom/subgraph/orchid/circuits/hs/HSDescriptorCookie$CookieType;

    move-object/from16 v18, v0

    invoke-virtual/range {v18 .. v18}, Lcom/subgraph/orchid/circuits/hs/HSDescriptorCookie$CookieType;->ordinal()I

    move-result v18

    aget v2, v2, v18

    packed-switch v2, :pswitch_data_2dc

    .line 7022
    new-instance v2, Ljava/lang/IllegalStateException;

    invoke-direct {v2}, Ljava/lang/IllegalStateException;-><init>()V

    throw v2

    .line 7018
    :pswitch_1ce
    const/4 v2, 0x1

    .line 6091
    :goto_1cf
    invoke-virtual {v12, v2}, Ljava/nio/ByteBuffer;->put(B)Ljava/nio/ByteBuffer;

    .line 7031
    move-object/from16 v0, v17

    iget-object v2, v0, Lcom/subgraph/orchid/circuits/hs/HSDescriptorCookie;->value:[B

    .line 6092
    array-length v2, v2

    int-to-short v2, v2

    invoke-virtual {v12, v2}, Ljava/nio/ByteBuffer;->putShort(S)Ljava/nio/ByteBuffer;

    .line 8031
    move-object/from16 v0, v17

    iget-object v2, v0, Lcom/subgraph/orchid/circuits/hs/HSDescriptorCookie;->value:[B

    .line 6093
    invoke-virtual {v12, v2}, Ljava/nio/ByteBuffer;->put([B)Ljava/nio/ByteBuffer;

    goto/16 :goto_150

    .line 7020
    :pswitch_1e4
    const/4 v2, 0x2

    goto :goto_1cf

    .line 6044
    :cond_1e6
    invoke-interface {v2}, Lcom/subgraph/orchid/t;->Jw()I

    move-result v7

    const/16 v8, 0x28

    if-eq v7, v8, :cond_208

    .line 6045
    sget-object v7, Lcom/subgraph/orchid/circuits/hs/m;->logger:Ljava/util/logging/Logger;

    new-instance v8, Ljava/lang/StringBuilder;

    const-string v9, "Unexpected relay cell type received waiting for response to INTRODUCE1 cell: "

    invoke-direct {v8, v9}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    invoke-interface {v2}, Lcom/subgraph/orchid/t;->Jw()I

    move-result v2

    invoke-virtual {v8, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    move-result-object v2

    invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v2

    invoke-virtual {v7, v2}, Ljava/util/logging/Logger;->info(Ljava/lang/String;)V

    .line 6046
    const/4 v2, 0x0

    goto :goto_1aa

    .line 6047
    :cond_208
    invoke-interface {v2}, Lcom/subgraph/orchid/t;->Io()I

    move-result v7

    if-nez v7, :cond_210

    .line 6048
    const/4 v2, 0x1

    goto :goto_1aa

    .line 6050
    :cond_210
    sget-object v7, Lcom/subgraph/orchid/circuits/hs/m;->logger:Ljava/util/logging/Logger;

    new-instance v8, Ljava/lang/StringBuilder;

    const-string v9, "INTRODUCE_ACK indicates that introduction was not forwarded: "

    invoke-direct {v8, v9}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    invoke-interface {v2}, Lcom/subgraph/orchid/t;->Ik()I

    move-result v2

    invoke-virtual {v8, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    move-result-object v2

    invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v2

    invoke-virtual {v7, v2}, Ljava/util/logging/Logger;->info(Ljava/lang/String;)V

    .line 6051
    const/4 v2, 0x0

    goto :goto_1aa

    .line 57
    :cond_22a
    move-object/from16 v0, p0

    iget-object v2, v0, Lcom/subgraph/orchid/circuits/hs/n;->logger:Ljava/util/logging/Logger;

    new-instance v5, Ljava/lang/StringBuilder;

    const-string v7, "Processing RV2 for "

    invoke-direct {v5, v7}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    .line 10069
    move-object/from16 v0, p0

    iget-object v7, v0, Lcom/subgraph/orchid/circuits/hs/n;->bEm:Lcom/subgraph/orchid/circuits/hs/i;

    invoke-virtual {v7}, Lcom/subgraph/orchid/circuits/hs/i;->Lv()Ljava/lang/String;

    move-result-object v7

    .line 57
    invoke-virtual {v5, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v5

    invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v5

    invoke-virtual {v2, v5}, Ljava/util/logging/Logger;->fine(Ljava/lang/String;)V

    .line 11049
    iget-object v2, v4, Lcom/subgraph/orchid/circuits/hs/o;->bEM:Lcom/subgraph/orchid/r;

    invoke-interface {v2}, Lcom/subgraph/orchid/r;->Is()Lcom/subgraph/orchid/t;

    move-result-object v2

    .line 11050
    if-nez v2, :cond_27d

    .line 11051
    sget-object v2, Lcom/subgraph/orchid/circuits/hs/o;->logger:Ljava/util/logging/Logger;

    const-string v4, "Timeout waiting for RENDEZVOUS2"

    invoke-virtual {v2, v4}, Ljava/util/logging/Logger;->info(Ljava/lang/String;)V

    .line 11052
    const/4 v2, 0x0

    .line 59
    :goto_258
    if-nez v2, :cond_25d

    .line 60
    invoke-interface {v3}, Lcom/subgraph/orchid/r;->Iu()V

    .line 63
    :cond_25d
    move-object/from16 v0, p0

    iget-object v3, v0, Lcom/subgraph/orchid/circuits/hs/n;->logger:Ljava/util/logging/Logger;

    new-instance v4, Ljava/lang/StringBuilder;

    const-string v5, "Rendezvous circuit opened for "

    invoke-direct {v4, v5}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    .line 12069
    move-object/from16 v0, p0

    iget-object v5, v0, Lcom/subgraph/orchid/circuits/hs/n;->bEm:Lcom/subgraph/orchid/circuits/hs/i;

    invoke-virtual {v5}, Lcom/subgraph/orchid/circuits/hs/i;->Lv()Ljava/lang/String;

    move-result-object v5

    .line 63
    invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v4

    invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v4

    invoke-virtual {v3, v4}, Ljava/util/logging/Logger;->fine(Ljava/lang/String;)V

    goto/16 :goto_78

    .line 11053
    :cond_27d
    invoke-interface {v2}, Lcom/subgraph/orchid/t;->Jw()I

    move-result v5

    const/16 v7, 0x25

    if-eq v5, v7, :cond_29f

    .line 11054
    sget-object v4, Lcom/subgraph/orchid/circuits/hs/o;->logger:Ljava/util/logging/Logger;

    new-instance v5, Ljava/lang/StringBuilder;

    const-string v6, "Unexpected Relay cell type received while waiting for RENDEZVOUS2: "

    invoke-direct {v5, v6}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    invoke-interface {v2}, Lcom/subgraph/orchid/t;->Jw()I

    move-result v2

    invoke-virtual {v5, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    move-result-object v2

    invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v2

    invoke-virtual {v4, v2}, Ljava/util/logging/Logger;->info(Ljava/lang/String;)V

    .line 11055
    const/4 v2, 0x0

    goto :goto_258

    .line 11057
    :cond_29f
    invoke-static {v2}, Lcom/subgraph/orchid/circuits/hs/o;->e(Lcom/subgraph/orchid/b;)Ljava/math/BigInteger;

    move-result-object v5

    .line 11058
    invoke-static {v2}, Lcom/subgraph/orchid/circuits/hs/o;->f(Lcom/subgraph/orchid/b;)Lcom/subgraph/orchid/d/c;

    move-result-object v2

    .line 11059
    if-eqz v5, :cond_2ab

    if-nez v2, :cond_2ad

    .line 11060
    :cond_2ab
    const/4 v2, 0x0

    goto :goto_258

    .line 11062
    :cond_2ad
    const/16 v7, 0x14

    new-array v7, v7, [B

    .line 11063
    const/16 v8, 0x48

    new-array v8, v8, [B

    .line 11064
    invoke-virtual {v2}, Lcom/subgraph/orchid/d/c;->Mf()[B

    move-result-object v2

    invoke-virtual {v6, v5, v2, v8, v7}, Lcom/subgraph/orchid/crypto/s;->a(Ljava/math/BigInteger;[B[B[B)Z

    move-result v2

    if-nez v2, :cond_2c8

    .line 11065
    sget-object v2, Lcom/subgraph/orchid/circuits/hs/o;->logger:Ljava/util/logging/Logger;

    const-string v4, "Error deriving session keys while extending to hidden service"

    invoke-virtual {v2, v4}, Ljava/util/logging/Logger;->info(Ljava/lang/String;)V

    .line 11066
    const/4 v2, 0x0

    goto :goto_258

    .line 11068
    :cond_2c8
    iget-object v2, v4, Lcom/subgraph/orchid/circuits/hs/o;->bEM:Lcom/subgraph/orchid/r;

    iget-object v4, v4, Lcom/subgraph/orchid/circuits/hs/o;->bEM:Lcom/subgraph/orchid/r;

    invoke-interface {v4}, Lcom/subgraph/orchid/r;->It()Lcom/subgraph/orchid/f;

    move-result-object v4

    .line 12012
    const/4 v5, 0x0

    invoke-static {v5, v4, v8, v7}, Lcom/subgraph/orchid/circuits/k;->a(Lcom/subgraph/orchid/v;Lcom/subgraph/orchid/f;[B[B)Lcom/subgraph/orchid/f;

    move-result-object v4

    .line 11068
    invoke-interface {v2, v4}, Lcom/subgraph/orchid/r;->b(Lcom/subgraph/orchid/f;)Lcom/subgraph/orchid/q;

    move-result-object v2

    goto/16 :goto_258

    .line 7016
    nop

    :pswitch_data_2dc
    .packed-switch 0x1
        :pswitch_1ce
        :pswitch_1e4
    .end packed-switch
.end method

.method public synthetic call()Ljava/lang/Object;
    .registers 2

    .prologue
    .line 15
    invoke-virtual {p0}, Lcom/subgraph/orchid/circuits/hs/n;->Ly()Lcom/subgraph/orchid/q;

    move-result-object v0

    return-object v0
.end method