Guest User

Untitled

a guest
Nov 26th, 2018
298
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 131.95 KB | None | 0 0
  1. package com.blizzard.wow.net.session; class Session {/*
  2.  
  3. .class public Lcom/blizzard/wow/net/session/Session;
  4. .super Ljava/lang/Object;
  5. .source "Session.java"
  6.  
  7. # interfaces
  8. .implements Lcom/blizzard/wow/net/protocol/ProtocolConnection$OnConnectionListener;
  9. .implements Lcom/blizzard/wow/net/protocol/ProtocolConnection$OnRequestSentListener;
  10. .implements Lcom/blizzard/wow/net/protocol/ProtocolConnection$OnResponseReceivedListener;
  11.  
  12.  
  13. # annotations
  14. .annotation system Ldalvik/annotation/MemberClasses;
  15.     value = {
  16.         Lcom/blizzard/wow/net/session/Session$Error;,
  17.         Lcom/blizzard/wow/net/session/Session$HardLoginCallback;,
  18.         Lcom/blizzard/wow/net/session/Session$TickTimerTask;
  19.     }
  20. .end annotation
  21.  
  22.  
  23. # static fields
  24. .field private static CONN_OPEN_ERROR:Lcom/blizzard/wow/net/session/Session$Error; = null
  25.  
  26. .field private static LOGIN_TIMEOUT_ERROR:Lcom/blizzard/wow/net/session/Session$Error; = null
  27.  
  28. .field private static SESSION_AUTH_ERROR:Lcom/blizzard/wow/net/session/Session$Error; = null
  29.  
  30. .field public static final STATE_CLOSED:I = 0x1000000
  31.  
  32. .field public static final STATE_CLOSING:I = 0x1000001
  33.  
  34. .field public static final STATE_CONN_CLOSING:I = 0x2000001
  35.  
  36. .field public static final STATE_CONN_ESTABLISHED:I = 0x2000002
  37.  
  38. .field public static final STATE_CONN_OPENING:I = 0x2000000
  39.  
  40. .field public static final STATE_ESTABLISHED:I = 0x4000000
  41.  
  42. .field public static final STATE_HARD_LOGIN_1:I = 0x4000001
  43.  
  44. .field public static final STATE_HARD_LOGIN_2:I = 0x4000003
  45.  
  46. .field public static final STATE_HARD_LOGIN_AUTH:I = 0x4000002
  47.  
  48. .field public static final STATE_LOGIN:I = 0x2000007
  49.  
  50. .field public static final STATE_LOGIN_AUTHENTICATE_1:I = 0x2000004
  51.  
  52. .field public static final STATE_LOGIN_AUTHENTICATE_2:I = 0x2000005
  53.  
  54. .field public static final STATE_LOGIN_RECONNECT_1:I = 0x2000006
  55.  
  56. .field public static final STATE_LOGIN_RETRY:I = 0x2000003
  57.  
  58. .field private static final STATE_MASK_CLOSED:I = 0x1000000
  59.  
  60. .field private static final STATE_MASK_ESTABLISHED:I = 0x4000000
  61.  
  62. .field private static final STATE_MASK_LOGIN:I = 0x2000000
  63.  
  64. .field static final TAG:Ljava/lang/String; = null
  65.  
  66. .field public static final TICK_INTERVAL:I = 0x1388
  67.  
  68.  
  69. # instance fields
  70. .field account:Lcom/blizzard/wow/user/Account;
  71.  
  72. .field private clientSalt:[B
  73.  
  74. .field conn:Lcom/blizzard/wow/net/protocol/ProtocolConnection;
  75.  
  76. .field private volatile connectionTimeout:J
  77.  
  78. .field volatile counter:B
  79.  
  80. .field hardLoginCallbackRef:Ljava/lang/ref/Reference;
  81.     .annotation system Ldalvik/annotation/Signature;
  82.         value = {
  83.             "Ljava/lang/ref/Reference",
  84.             "<",
  85.             "Lcom/blizzard/wow/net/session/Session$HardLoginCallback;",
  86.             ">;"
  87.         }
  88.     .end annotation
  89. .end field
  90.  
  91. .field hardLoginClientProof:[B
  92.  
  93. .field lastError:Lcom/blizzard/wow/net/session/Session$Error;
  94.  
  95. .field listeners:Ljava/util/ArrayList;
  96.     .annotation system Ldalvik/annotation/Signature;
  97.         value = {
  98.             "Ljava/util/ArrayList",
  99.             "<",
  100.             "Ljava/lang/ref/Reference",
  101.             "<+",
  102.             "Lcom/blizzard/wow/net/session/SessionListener;",
  103.             ">;>;"
  104.         }
  105.     .end annotation
  106. .end field
  107.  
  108. .field listenersRefQueue:Ljava/lang/ref/ReferenceQueue;
  109.     .annotation system Ldalvik/annotation/Signature;
  110.         value = {
  111.             "Ljava/lang/ref/ReferenceQueue",
  112.             "<",
  113.             "Lcom/blizzard/wow/net/session/SessionListener;",
  114.             ">;"
  115.         }
  116.     .end annotation
  117. .end field
  118.  
  119. .field loginMsgId:I
  120.  
  121. .field private loginParams:Ljava/util/HashMap;
  122.     .annotation system Ldalvik/annotation/Signature;
  123.         value = {
  124.             "Ljava/util/HashMap",
  125.             "<",
  126.             "Ljava/lang/String;",
  127.             "Ljava/lang/String;",
  128.             ">;"
  129.         }
  130.     .end annotation
  131. .end field
  132.  
  133. .field private volatile loginTimeout:J
  134.  
  135. .field private srp:Lcom/blizzard/security/srp/client/ClientSRP;
  136.  
  137. .field private srpSession:Lcom/blizzard/security/srp/client/ClientSession;
  138.  
  139. .field private volatile state:Lcom/blizzard/util/State;
  140.  
  141. .field private suppressCloseCallback:Z
  142.  
  143. .field private tickTimerTask:Ljava/util/TimerTask;
  144.  
  145. .field private useNioProtocolConnection:Z
  146.  
  147.  
  148. # direct methods
  149. .method static constructor <clinit>()V
  150.     .locals 1
  151.  
  152.     .prologue
  153.     .line 86
  154.     const-class v0, Lcom/blizzard/wow/net/session/Session;
  155.  
  156.     #v0=(Reference);
  157.     invoke-virtual {v0}, Ljava/lang/Class;->getSimpleName()Ljava/lang/String;
  158.  
  159.     move-result-object v0
  160.  
  161.     sput-object v0, Lcom/blizzard/wow/net/session/Session;->TAG:Ljava/lang/String;
  162.  
  163.     .line 44
  164.     return-void
  165. .end method
  166.  
  167. .method public constructor <init>(Landroid/content/Context;)V
  168.     .locals 6
  169.     .parameter "context"
  170.  
  171.     .prologue
  172.     const-wide/16 v4, -0x1
  173.  
  174.     #v4=(LongLo);v5=(LongHi);
  175.     const/4 v3, 0x0
  176.  
  177.     .line 147
  178.     #v3=(Null);
  179.     invoke-direct {p0}, Ljava/lang/Object;-><init>()V
  180.  
  181.     .line 122
  182.     #p0=(Reference);
  183.     new-instance v1, Ljava/util/HashMap;
  184.  
  185.     #v1=(UninitRef);
  186.     invoke-direct {v1}, Ljava/util/HashMap;-><init>()V
  187.  
  188.     #v1=(Reference);
  189.     iput-object v1, p0, Lcom/blizzard/wow/net/session/Session;->loginParams:Ljava/util/HashMap;
  190.  
  191.     .line 124
  192.     new-instance v1, Lcom/blizzard/util/State;
  193.  
  194.     #v1=(UninitRef);
  195.     const/high16 v2, 0x100
  196.  
  197.     #v2=(Integer);
  198.     invoke-direct {v1, v2}, Lcom/blizzard/util/State;-><init>(I)V
  199.  
  200.     #v1=(Reference);
  201.     iput-object v1, p0, Lcom/blizzard/wow/net/session/Session;->state:Lcom/blizzard/util/State;
  202.  
  203.     .line 125
  204.     iput-boolean v3, p0, Lcom/blizzard/wow/net/session/Session;->suppressCloseCallback:Z
  205.  
  206.     .line 129
  207.     const/4 v1, -0x1
  208.  
  209.     #v1=(Byte);
  210.     iput v1, p0, Lcom/blizzard/wow/net/session/Session;->loginMsgId:I
  211.  
  212.     .line 134
  213.     new-instance v1, Ljava/util/ArrayList;
  214.  
  215.     #v1=(UninitRef);
  216.     invoke-direct {v1}, Ljava/util/ArrayList;-><init>()V
  217.  
  218.     #v1=(Reference);
  219.     iput-object v1, p0, Lcom/blizzard/wow/net/session/Session;->listeners:Ljava/util/ArrayList;
  220.  
  221.     .line 135
  222.     new-instance v1, Ljava/lang/ref/ReferenceQueue;
  223.  
  224.     #v1=(UninitRef);
  225.     invoke-direct {v1}, Ljava/lang/ref/ReferenceQueue;-><init>()V
  226.  
  227.     #v1=(Reference);
  228.     iput-object v1, p0, Lcom/blizzard/wow/net/session/Session;->listenersRefQueue:Ljava/lang/ref/ReferenceQueue;
  229.  
  230.     .line 144
  231.     iput-wide v4, p0, Lcom/blizzard/wow/net/session/Session;->connectionTimeout:J
  232.  
  233.     iput-wide v4, p0, Lcom/blizzard/wow/net/session/Session;->loginTimeout:J
  234.  
  235.     .line 148
  236.     sget-object v1, Lcom/blizzard/wow/net/session/Session;->CONN_OPEN_ERROR:Lcom/blizzard/wow/net/session/Session$Error;
  237.  
  238.     if-eqz v1, :cond_0
  239.  
  240.     .line 149
  241.     sget-object v1, Lcom/blizzard/wow/net/session/Session;->LOGIN_TIMEOUT_ERROR:Lcom/blizzard/wow/net/session/Session$Error;
  242.  
  243.     if-eqz v1, :cond_0
  244.  
  245.     .line 150
  246.     sget-object v1, Lcom/blizzard/wow/net/session/Session;->SESSION_AUTH_ERROR:Lcom/blizzard/wow/net/session/Session$Error;
  247.  
  248.     if-nez v1, :cond_1
  249.  
  250.     .line 151
  251.     :cond_0
  252.     invoke-static {p1}, Lcom/blizzard/wow/net/session/Session;->initGenericErrors(Landroid/content/Context;)V
  253.  
  254.     .line 154
  255.     :cond_1
  256.     const/4 v1, 0x1
  257.  
  258.     #v1=(One);
  259.     iput-boolean v1, p0, Lcom/blizzard/wow/net/session/Session;->useNioProtocolConnection:Z
  260.  
  261.     .line 156
  262.     sget-boolean v1, Lcom/blizzard/wow/app/ArmoryApplication;->MANUFACTURER_MOTOROLA:Z
  263.  
  264.     #v1=(Boolean);
  265.     if-eqz v1, :cond_3
  266.  
  267.     .line 157
  268.     sget-object v0, Landroid/os/Build;->MODEL:Ljava/lang/String;
  269.  
  270.     .line 158
  271.     .local v0, model:Ljava/lang/String;
  272.     #v0=(Reference);
  273.     if-eqz v0, :cond_3
  274.  
  275.     .line 159
  276.     const-string v1, "DROIDX"
  277.  
  278.     #v1=(Reference);
  279.     invoke-virtual {v0, v1}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z
  280.  
  281.     move-result v1
  282.  
  283.     #v1=(Boolean);
  284.     if-nez v1, :cond_2
  285.  
  286.     .line 160
  287.     const-string v1, "DROID2"
  288.  
  289.     #v1=(Reference);
  290.     invoke-virtual {v0, v1}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z
  291.  
  292.     move-result v1
  293.  
  294.     #v1=(Boolean);
  295.     if-eqz v1, :cond_3
  296.  
  297.     .line 161
  298.     :cond_2
  299.     iput-boolean v3, p0, Lcom/blizzard/wow/net/session/Session;->useNioProtocolConnection:Z
  300.  
  301.     .line 164
  302.     .end local v0           #model:Ljava/lang/String;
  303.     :cond_3
  304.     #v0=(Conflicted);
  305.     return-void
  306. .end method
  307.  
  308. .method public static clearStringsOnLocaleChange()V
  309.     .locals 1
  310.  
  311.     .prologue
  312.     .line 1077
  313.     sget-object v0, Lcom/blizzard/wow/app/ArmoryApplication;->appInstance:Lcom/blizzard/wow/app/ArmoryApplication;
  314.  
  315.     .line 1078
  316.     .local v0, context:Landroid/content/Context;
  317.     #v0=(Reference);
  318.     invoke-static {v0}, Lcom/blizzard/wow/net/session/Session;->initGenericErrors(Landroid/content/Context;)V
  319.  
  320.     .line 1079
  321.     return-void
  322. .end method
  323.  
  324. .method private declared-synchronized connectionCloseCleanup()V
  325.     .locals 6
  326.  
  327.     .prologue
  328.     .line 378
  329.     monitor-enter p0
  330.  
  331.     :try_start_0
  332.     iget-object v3, p0, Lcom/blizzard/wow/net/session/Session;->state:Lcom/blizzard/util/State;
  333.  
  334.     #v3=(Reference);
  335.     const v4, 0x1000001
  336.  
  337.     #v4=(Integer);
  338.     invoke-virtual {v3, v4}, Lcom/blizzard/util/State;->set(I)Z
  339.  
  340.     .line 380
  341.     invoke-direct {p0}, Lcom/blizzard/wow/net/session/Session;->stopTick()V
  342.  
  343.     .line 381
  344.     const-wide/16 v3, -0x1
  345.  
  346.     #v3=(LongLo);v4=(LongHi);
  347.     iput-wide v3, p0, Lcom/blizzard/wow/net/session/Session;->connectionTimeout:J
  348.  
  349.     .line 382
  350.     const-wide/16 v3, -0x1
  351.  
  352.     iput-wide v3, p0, Lcom/blizzard/wow/net/session/Session;->loginTimeout:J
  353.  
  354.     .line 384
  355.     iget-object v3, p0, Lcom/blizzard/wow/net/session/Session;->hardLoginCallbackRef:Ljava/lang/ref/Reference;
  356.  
  357.     #v3=(Reference);
  358.     if-eqz v3, :cond_0
  359.  
  360.     .line 389
  361.     const/4 v3, 0x0
  362.  
  363.     #v3=(Null);
  364.     iput-object v3, p0, Lcom/blizzard/wow/net/session/Session;->hardLoginCallbackRef:Ljava/lang/ref/Reference;
  365.  
  366.     .line 392
  367.     :cond_0
  368.     #v3=(Reference);
  369.     iget-boolean v3, p0, Lcom/blizzard/wow/net/session/Session;->suppressCloseCallback:Z
  370.  
  371.     #v3=(Boolean);
  372.     if-nez v3, :cond_2
  373.  
  374.     .line 393
  375.     new-instance v1, Ljava/util/ArrayList;
  376.  
  377.     #v1=(UninitRef);
  378.     invoke-direct {v1}, Ljava/util/ArrayList;-><init>()V
  379.  
  380.     .line 394
  381.     .local v1, listenersCopy:Ljava/util/List;,"Ljava/util/List<Lcom/blizzard/wow/net/session/SessionListener;>;"
  382.     #v1=(Reference);
  383.     iget-object v4, p0, Lcom/blizzard/wow/net/session/Session;->listeners:Ljava/util/ArrayList;
  384.  
  385.     #v4=(Reference);
  386.     monitor-enter v4
  387.     :try_end_0
  388.     .catchall {:try_start_0 .. :try_end_0} :catchall_1
  389.  
  390.     .line 396
  391.     :try_start_1
  392.     iget-object v3, p0, Lcom/blizzard/wow/net/session/Session;->listeners:Ljava/util/ArrayList;
  393.  
  394.     #v3=(Reference);
  395.     invoke-virtual {v3}, Ljava/util/ArrayList;->iterator()Ljava/util/Iterator;
  396.  
  397.     move-result-object v3
  398.  
  399.     :cond_1
  400.     :goto_0
  401.     #v0=(Conflicted);v2=(Conflicted);v5=(Conflicted);
  402.     invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z
  403.  
  404.     move-result v5
  405.  
  406.     #v5=(Boolean);
  407.     if-nez v5, :cond_3
  408.  
  409.     .line 394
  410.     monitor-exit v4
  411.     :try_end_1
  412.     .catchall {:try_start_1 .. :try_end_1} :catchall_0
  413.  
  414.     .line 403
  415.     :try_start_2
  416.     invoke-interface {v1}, Ljava/util/List;->iterator()Ljava/util/Iterator;
  417.  
  418.     move-result-object v3
  419.  
  420.     :goto_1
  421.     #v5=(Conflicted);
  422.     invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z
  423.  
  424.     move-result v4
  425.  
  426.     #v4=(Boolean);
  427.     if-nez v4, :cond_4
  428.  
  429.     .line 406
  430.     const/4 v3, 0x0
  431.  
  432.     #v3=(Null);
  433.     iput-object v3, p0, Lcom/blizzard/wow/net/session/Session;->lastError:Lcom/blizzard/wow/net/session/Session$Error;
  434.  
  435.     .line 408
  436.     .end local v1           #listenersCopy:Ljava/util/List;,"Ljava/util/List<Lcom/blizzard/wow/net/session/SessionListener;>;"
  437.     :cond_2
  438.     #v1=(Conflicted);v3=(Boolean);v4=(Conflicted);
  439.     const/4 v3, 0x0
  440.  
  441.     #v3=(Null);
  442.     iput-boolean v3, p0, Lcom/blizzard/wow/net/session/Session;->suppressCloseCallback:Z
  443.  
  444.     .line 410
  445.     iget-object v3, p0, Lcom/blizzard/wow/net/session/Session;->state:Lcom/blizzard/util/State;
  446.  
  447.     #v3=(Reference);
  448.     const v4, 0x1000001
  449.  
  450.     #v4=(Integer);
  451.     const/high16 v5, 0x100
  452.  
  453.     #v5=(Integer);
  454.     invoke-virtual {v3, v4, v5}, Lcom/blizzard/util/State;->compareAndSet(II)Z
  455.     :try_end_2
  456.     .catchall {:try_start_2 .. :try_end_2} :catchall_1
  457.  
  458.     .line 411
  459.     monitor-exit p0
  460.  
  461.     return-void
  462.  
  463.     .line 396
  464.     .restart local v1       #listenersCopy:Ljava/util/List;,"Ljava/util/List<Lcom/blizzard/wow/net/session/SessionListener;>;"
  465.     :cond_3
  466.     :try_start_3
  467.     #v1=(Reference);v4=(Reference);v5=(Boolean);
  468.     invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
  469.  
  470.     move-result-object v2
  471.  
  472.     #v2=(Reference);
  473.     check-cast v2, Ljava/lang/ref/Reference;
  474.  
  475.     .line 397
  476.     .local v2, lref:Ljava/lang/ref/Reference;,"Ljava/lang/ref/Reference<+Lcom/blizzard/wow/net/session/SessionListener;>;"
  477.     invoke-virtual {v2}, Ljava/lang/ref/Reference;->get()Ljava/lang/Object;
  478.  
  479.     move-result-object v0
  480.  
  481.     #v0=(Reference);
  482.     check-cast v0, Lcom/blizzard/wow/net/session/SessionListener;
  483.  
  484.     .line 398
  485.     .local v0, listener:Lcom/blizzard/wow/net/session/SessionListener;
  486.     if-eqz v0, :cond_1
  487.  
  488.     .line 399
  489.     invoke-interface {v1, v0}, Ljava/util/List;->add(Ljava/lang/Object;)Z
  490.  
  491.     goto :goto_0
  492.  
  493.     .line 394
  494.     .end local v0           #listener:Lcom/blizzard/wow/net/session/SessionListener;
  495.     .end local v2           #lref:Ljava/lang/ref/Reference;,"Ljava/lang/ref/Reference<+Lcom/blizzard/wow/net/session/SessionListener;>;"
  496.     :catchall_0
  497.     #v0=(Conflicted);v2=(Conflicted);v3=(Conflicted);v5=(Conflicted);
  498.     move-exception v3
  499.  
  500.     #v3=(Reference);
  501.     monitor-exit v4
  502.     :try_end_3
  503.     .catchall {:try_start_3 .. :try_end_3} :catchall_0
  504.  
  505.     :try_start_4
  506.     throw v3
  507.     :try_end_4
  508.     .catchall {:try_start_4 .. :try_end_4} :catchall_1
  509.  
  510.     .line 378
  511.     .end local v1           #listenersCopy:Ljava/util/List;,"Ljava/util/List<Lcom/blizzard/wow/net/session/SessionListener;>;"
  512.     :catchall_1
  513.     #v1=(Conflicted);v3=(Conflicted);v4=(Conflicted);
  514.     move-exception v3
  515.  
  516.     #v3=(Reference);
  517.     monitor-exit p0
  518.  
  519.     throw v3
  520.  
  521.     .line 403
  522.     .restart local v1       #listenersCopy:Ljava/util/List;,"Ljava/util/List<Lcom/blizzard/wow/net/session/SessionListener;>;"
  523.     :cond_4
  524.     :try_start_5
  525.     #v1=(Reference);v4=(Boolean);
  526.     invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
  527.  
  528.     move-result-object v0
  529.  
  530.     #v0=(Reference);
  531.     check-cast v0, Lcom/blizzard/wow/net/session/SessionListener;
  532.  
  533.     .line 404
  534.     .restart local v0       #listener:Lcom/blizzard/wow/net/session/SessionListener;
  535.     iget-object v4, p0, Lcom/blizzard/wow/net/session/Session;->account:Lcom/blizzard/wow/user/Account;
  536.  
  537.     #v4=(Reference);
  538.     iget-object v5, p0, Lcom/blizzard/wow/net/session/Session;->lastError:Lcom/blizzard/wow/net/session/Session$Error;
  539.  
  540.     #v5=(Reference);
  541.     invoke-interface {v0, v4, v5}, Lcom/blizzard/wow/net/session/SessionListener;->onSessionEnded(Lcom/blizzard/wow/user/Account;Lcom/blizzard/wow/net/session/Session$Error;)V
  542.     :try_end_5
  543.     .catchall {:try_start_5 .. :try_end_5} :catchall_1
  544.  
  545.     goto :goto_1
  546. .end method
  547.  
  548. .method private final handleAuthenticate1Response(Lcom/blizzard/wow/net/message/Response;)V
  549.     .locals 6
  550.     .parameter "response"
  551.  
  552.     .prologue
  553.     .line 593
  554.     invoke-virtual {p1}, Lcom/blizzard/wow/net/message/Response;->isError()Z
  555.  
  556.     move-result v3
  557.  
  558.     #v3=(Boolean);
  559.     if-eqz v3, :cond_0
  560.  
  561.     .line 594
  562.     new-instance v3, Lcom/blizzard/wow/net/session/Session$Error;
  563.  
  564.     #v3=(UninitRef);
  565.     iget-object v4, p1, Lcom/blizzard/wow/net/message/Response;->error:Ljava/lang/String;
  566.  
  567.     #v4=(Reference);
  568.     iget-object v5, p1, Lcom/blizzard/wow/net/message/Response;->errorDescription:Ljava/lang/String;
  569.  
  570.     #v5=(Reference);
  571.     invoke-direct {v3, v4, v5}, Lcom/blizzard/wow/net/session/Session$Error;-><init>(Ljava/lang/String;Ljava/lang/String;)V
  572.  
  573.     #v3=(Reference);
  574.     invoke-virtual {p0, v3}, Lcom/blizzard/wow/net/session/Session;->disconnect(Lcom/blizzard/wow/net/session/Session$Error;)V
  575.  
  576.     .line 621
  577.     :goto_0
  578.     #v0=(Conflicted);v1=(Conflicted);v2=(Conflicted);v3=(Conflicted);v4=(Conflicted);v5=(Conflicted);
  579.     return-void
  580.  
  581.     .line 601
  582.     :cond_0
  583.     #v0=(Uninit);v1=(Uninit);v2=(Uninit);v3=(Boolean);v4=(Uninit);v5=(Uninit);
  584.     const/4 v3, 0x0
  585.  
  586.     #v3=(Null);
  587.     invoke-direct {p0, p1, v3}, Lcom/blizzard/wow/net/session/Session;->validateStage1Response(Lcom/blizzard/wow/net/message/Response;Ljava/lang/String;)[B
  588.  
  589.     move-result-object v1
  590.  
  591.     .line 602
  592.     .local v1, clientProof:[B
  593.     #v1=(Reference);
  594.     if-eqz v1, :cond_1
  595.  
  596.     .line 603
  597.     iget-object v3, p0, Lcom/blizzard/wow/net/session/Session;->state:Lcom/blizzard/util/State;
  598.  
  599.     #v3=(Reference);
  600.     const v4, 0x2000004
  601.  
  602.     .line 604
  603.     #v4=(Integer);
  604.     const v5, 0x2000005
  605.  
  606.     .line 603
  607.     #v5=(Integer);
  608.     invoke-virtual {v3, v4, v5}, Lcom/blizzard/util/State;->compareAndSet(II)Z
  609.  
  610.     move-result v3
  611.  
  612.     #v3=(Boolean);
  613.     if-eqz v3, :cond_1
  614.  
  615.     .line 606
  616.     new-instance v0, Lcom/blizzard/wow/net/message/Request;
  617.  
  618.     #v0=(UninitRef);
  619.     const-string v3, "/authenticate2"
  620.  
  621.     #v3=(Reference);
  622.     invoke-direct {v0, v3}, Lcom/blizzard/wow/net/message/Request;-><init>(Ljava/lang/String;)V
  623.  
  624.     .line 607
  625.     .local v0, auth2Message:Lcom/blizzard/wow/net/message/Request;
  626.     #v0=(Reference);
  627.     iget-object v3, v0, Lcom/blizzard/wow/net/message/Request;->body:Ljava/util/HashMap;
  628.  
  629.     const-string v4, "clientProof"
  630.  
  631.     #v4=(Reference);
  632.     invoke-virtual {v3, v4, v1}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
  633.  
  634.     .line 609
  635.     invoke-virtual {p0, v0}, Lcom/blizzard/wow/net/session/Session;->sendRequest(Lcom/blizzard/wow/net/message/Request;)Z
  636.  
  637.     move-result v2
  638.  
  639.     .line 610
  640.     .local v2, success:Z
  641.     #v2=(Boolean);
  642.     if-eqz v2, :cond_1
  643.  
  644.     .line 611
  645.     iget v3, v0, Lcom/blizzard/wow/net/message/Request;->id:I
  646.  
  647.     #v3=(Integer);
  648.     iput v3, p0, Lcom/blizzard/wow/net/session/Session;->loginMsgId:I
  649.  
  650.     goto :goto_0
  651.  
  652.     .line 620
  653.     .end local v0           #auth2Message:Lcom/blizzard/wow/net/message/Request;
  654.     .end local v2           #success:Z
  655.     :cond_1
  656.     #v0=(Conflicted);v2=(Conflicted);v3=(Conflicted);v4=(Conflicted);v5=(Conflicted);
  657.     sget-object v3, Lcom/blizzard/wow/net/session/Session;->SESSION_AUTH_ERROR:Lcom/blizzard/wow/net/session/Session$Error;
  658.  
  659.     #v3=(Reference);
  660.     invoke-virtual {p0, v3}, Lcom/blizzard/wow/net/session/Session;->disconnect(Lcom/blizzard/wow/net/session/Session$Error;)V
  661.  
  662.     goto :goto_0
  663. .end method
  664.  
  665. .method private final handleAuthenticate2Response(Lcom/blizzard/wow/net/message/Response;)V
  666.     .locals 5
  667.     .parameter "response"
  668.  
  669.     .prologue
  670.     .line 624
  671.     invoke-virtual {p1}, Lcom/blizzard/wow/net/message/Response;->isError()Z
  672.  
  673.     move-result v2
  674.  
  675.     #v2=(Boolean);
  676.     if-eqz v2, :cond_1
  677.  
  678.     .line 625
  679.     new-instance v2, Lcom/blizzard/wow/net/session/Session$Error;
  680.  
  681.     #v2=(UninitRef);
  682.     iget-object v3, p1, Lcom/blizzard/wow/net/message/Response;->error:Ljava/lang/String;
  683.  
  684.     #v3=(Reference);
  685.     iget-object v4, p1, Lcom/blizzard/wow/net/message/Response;->errorDescription:Ljava/lang/String;
  686.  
  687.     #v4=(Reference);
  688.     invoke-direct {v2, v3, v4}, Lcom/blizzard/wow/net/session/Session$Error;-><init>(Ljava/lang/String;Ljava/lang/String;)V
  689.  
  690.     #v2=(Reference);
  691.     invoke-virtual {p0, v2}, Lcom/blizzard/wow/net/session/Session;->disconnect(Lcom/blizzard/wow/net/session/Session$Error;)V
  692.  
  693.     .line 652
  694.     :cond_0
  695.     :goto_0
  696.     #v0=(Conflicted);v1=(Conflicted);v2=(Conflicted);v3=(Conflicted);v4=(Conflicted);
  697.     return-void
  698.  
  699.     .line 632
  700.     :cond_1
  701.     #v0=(Uninit);v1=(Uninit);v2=(Boolean);v3=(Uninit);v4=(Uninit);
  702.     invoke-direct {p0, p1}, Lcom/blizzard/wow/net/session/Session;->validateStage2Response(Lcom/blizzard/wow/net/message/Response;)Z
  703.  
  704.     move-result v2
  705.  
  706.     if-nez v2, :cond_2
  707.  
  708.     .line 633
  709.     sget-object v2, Lcom/blizzard/wow/net/session/Session;->SESSION_AUTH_ERROR:Lcom/blizzard/wow/net/session/Session$Error;
  710.  
  711.     #v2=(Reference);
  712.     invoke-virtual {p0, v2}, Lcom/blizzard/wow/net/session/Session;->disconnect(Lcom/blizzard/wow/net/session/Session$Error;)V
  713.  
  714.     goto :goto_0
  715.  
  716.     .line 638
  717.     :cond_2
  718.     #v2=(Boolean);
  719.     iget-object v2, p0, Lcom/blizzard/wow/net/session/Session;->state:Lcom/blizzard/util/State;
  720.  
  721.     #v2=(Reference);
  722.     const v3, 0x2000005
  723.  
  724.     #v3=(Integer);
  725.     const v4, 0x2000007
  726.  
  727.     #v4=(Integer);
  728.     invoke-virtual {v2, v3, v4}, Lcom/blizzard/util/State;->compareAndSet(II)Z
  729.  
  730.     move-result v2
  731.  
  732.     #v2=(Boolean);
  733.     if-eqz v2, :cond_0
  734.  
  735.     .line 639
  736.     new-instance v0, Lcom/blizzard/wow/net/message/Request;
  737.  
  738.     .line 640
  739.     #v0=(UninitRef);
  740.     const-string v2, "/authenticate2"
  741.  
  742.     .line 639
  743.     #v2=(Reference);
  744.     invoke-direct {v0, v2}, Lcom/blizzard/wow/net/message/Request;-><init>(Ljava/lang/String;)V
  745.  
  746.     .line 641
  747.     .local v0, auth2DummyMessage:Lcom/blizzard/wow/net/message/Request;
  748.     #v0=(Reference);
  749.     iget-object v2, v0, Lcom/blizzard/wow/net/message/Request;->body:Ljava/util/HashMap;
  750.  
  751.     const-string v3, "clientProof"
  752.  
  753.     #v3=(Reference);
  754.     const/4 v4, 0x0
  755.  
  756.     #v4=(Null);
  757.     new-array v4, v4, [B
  758.  
  759.     #v4=(Reference);
  760.     invoke-virtual {v2, v3, v4}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
  761.  
  762.     .line 643
  763.     invoke-virtual {p0, v0}, Lcom/blizzard/wow/net/session/Session;->sendRequest(Lcom/blizzard/wow/net/message/Request;)Z
  764.  
  765.     move-result v1
  766.  
  767.     .line 644
  768.     .local v1, success:Z
  769.     #v1=(Boolean);
  770.     if-eqz v1, :cond_3
  771.  
  772.     .line 645
  773.     iget v2, v0, Lcom/blizzard/wow/net/message/Request;->id:I
  774.  
  775.     #v2=(Integer);
  776.     iput v2, p0, Lcom/blizzard/wow/net/session/Session;->loginMsgId:I
  777.  
  778.     goto :goto_0
  779.  
  780.     .line 647
  781.     :cond_3
  782.     #v2=(Reference);
  783.     sget-object v2, Lcom/blizzard/wow/net/session/Session;->SESSION_AUTH_ERROR:Lcom/blizzard/wow/net/session/Session$Error;
  784.  
  785.     invoke-virtual {p0, v2}, Lcom/blizzard/wow/net/session/Session;->disconnect(Lcom/blizzard/wow/net/session/Session$Error;)V
  786.  
  787.     goto :goto_0
  788. .end method
  789.  
  790. .method private handleHardLogin1Response(Lcom/blizzard/wow/net/message/Response;)V
  791.     .locals 5
  792.     .parameter "response"
  793.  
  794.     .prologue
  795.     const/4 v4, 0x0
  796.  
  797.     .line 816
  798.     #v4=(Null);
  799.     const/4 v1, 0x0
  800.  
  801.     .line 817
  802.     .local v1, callback:Lcom/blizzard/wow/net/session/Session$HardLoginCallback;
  803.     #v1=(Null);
  804.     iget-object v2, p0, Lcom/blizzard/wow/net/session/Session;->hardLoginCallbackRef:Ljava/lang/ref/Reference;
  805.  
  806.     #v2=(Reference);
  807.     if-eqz v2, :cond_0
  808.  
  809.     .line 818
  810.     iget-object v2, p0, Lcom/blizzard/wow/net/session/Session;->hardLoginCallbackRef:Ljava/lang/ref/Reference;
  811.  
  812.     invoke-virtual {v2}, Ljava/lang/ref/Reference;->get()Ljava/lang/Object;
  813.  
  814.     move-result-object v1
  815.  
  816.     .end local v1           #callback:Lcom/blizzard/wow/net/session/Session$HardLoginCallback;
  817.     #v1=(Reference);
  818.     check-cast v1, Lcom/blizzard/wow/net/session/Session$HardLoginCallback;
  819.  
  820.     .line 820
  821.     .restart local v1       #callback:Lcom/blizzard/wow/net/session/Session$HardLoginCallback;
  822.     :cond_0
  823.     if-nez v1, :cond_1
  824.  
  825.     .line 821
  826.     invoke-direct {p0}, Lcom/blizzard/wow/net/session/Session;->hardLoginCleanup()V
  827.  
  828.     .line 853
  829.     :goto_0
  830.     #v0=(Conflicted);v2=(Conflicted);v3=(Conflicted);v4=(Integer);
  831.     return-void
  832.  
  833.     .line 825
  834.     :cond_1
  835.     #v0=(Uninit);v2=(Reference);v3=(Uninit);v4=(Null);
  836.     invoke-virtual {p1}, Lcom/blizzard/wow/net/message/Response;->isError()Z
  837.  
  838.     move-result v2
  839.  
  840.     #v2=(Boolean);
  841.     if-eqz v2, :cond_2
  842.  
  843.     .line 828
  844.     invoke-interface {v1, p1}, Lcom/blizzard/wow/net/session/Session$HardLoginCallback;->hardLoginFailed(Lcom/blizzard/wow/net/message/Response;)V
  845.  
  846.     .line 829
  847.     invoke-direct {p0}, Lcom/blizzard/wow/net/session/Session;->hardLoginCleanup()V
  848.  
  849.     goto :goto_0
  850.  
  851.     .line 833
  852.     :cond_2
  853.     invoke-interface {v1}, Lcom/blizzard/wow/net/session/Session$HardLoginCallback;->hardLoginPassword()Ljava/lang/String;
  854.  
  855.     move-result-object v2
  856.  
  857.     #v2=(Reference);
  858.     invoke-direct {p0, p1, v2}, Lcom/blizzard/wow/net/session/Session;->validateStage1Response(Lcom/blizzard/wow/net/message/Response;Ljava/lang/String;)[B
  859.  
  860.     move-result-object v2
  861.  
  862.     iput-object v2, p0, Lcom/blizzard/wow/net/session/Session;->hardLoginClientProof:[B
  863.  
  864.     .line 834
  865.     iget-object v2, p0, Lcom/blizzard/wow/net/session/Session;->hardLoginClientProof:[B
  866.  
  867.     if-eqz v2, :cond_5
  868.  
  869.     .line 835
  870.     iget-object v2, p1, Lcom/blizzard/wow/net/message/Response;->body:Ljava/util/HashMap;
  871.  
  872.     const-string v3, "authenticator"
  873.  
  874.     #v3=(Reference);
  875.     invoke-virtual {v2, v3}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
  876.  
  877.     move-result-object v0
  878.  
  879.     #v0=(Reference);
  880.     check-cast v0, Ljava/util/HashMap;
  881.  
  882.     .line 836
  883.     .local v0, authenticatorHash:Ljava/util/HashMap;,"Ljava/util/HashMap<Ljava/lang/String;Ljava/lang/Object;>;"
  884.     if-eqz v0, :cond_4
  885.  
  886.     .line 837
  887.     iget-object v2, p0, Lcom/blizzard/wow/net/session/Session;->state:Lcom/blizzard/util/State;
  888.  
  889.     const v3, 0x4000001
  890.  
  891.     .line 838
  892.     #v3=(Integer);
  893.     const v4, 0x4000002
  894.  
  895.     .line 837
  896.     #v4=(Integer);
  897.     invoke-virtual {v2, v3, v4}, Lcom/blizzard/util/State;->compareAndSet(II)Z
  898.  
  899.     move-result v2
  900.  
  901.     #v2=(Boolean);
  902.     if-eqz v2, :cond_3
  903.  
  904.     .line 840
  905.     invoke-interface {v1, v0}, Lcom/blizzard/wow/net/session/Session$HardLoginCallback;->hardLoginAuthenticatorRequired(Ljava/util/HashMap;)V
  906.  
  907.     goto :goto_0
  908.  
  909.     .line 843
  910.     :cond_3
  911.     invoke-direct {p0}, Lcom/blizzard/wow/net/session/Session;->hardLoginCleanup()V
  912.  
  913.     goto :goto_0
  914.  
  915.     .line 847
  916.     :cond_4
  917.     #v2=(Reference);v3=(Reference);v4=(Null);
  918.     invoke-direct {p0, v4}, Lcom/blizzard/wow/net/session/Session;->sendHardLogin2Request(Ljava/lang/String;)Z
  919.  
  920.     goto :goto_0
  921.  
  922.     .line 850
  923.     .end local v0           #authenticatorHash:Ljava/util/HashMap;,"Ljava/util/HashMap<Ljava/lang/String;Ljava/lang/Object;>;"
  924.     :cond_5
  925.     #v0=(Uninit);v3=(Uninit);
  926.     invoke-interface {v1, v4}, Lcom/blizzard/wow/net/session/Session$HardLoginCallback;->hardLoginFailed(Lcom/blizzard/wow/net/message/Response;)V
  927.  
  928.     .line 851
  929.     invoke-direct {p0}, Lcom/blizzard/wow/net/session/Session;->hardLoginCleanup()V
  930.  
  931.     goto :goto_0
  932. .end method
  933.  
  934. .method private final handleHardLogin2Response(Lcom/blizzard/wow/net/message/Response;)V
  935.     .locals 4
  936.     .parameter "response"
  937.  
  938.     .prologue
  939.     .line 929
  940.     const/4 v0, 0x0
  941.  
  942.     .line 930
  943.     .local v0, callback:Lcom/blizzard/wow/net/session/Session$HardLoginCallback;
  944.     #v0=(Null);
  945.     iget-object v2, p0, Lcom/blizzard/wow/net/session/Session;->hardLoginCallbackRef:Ljava/lang/ref/Reference;
  946.  
  947.     #v2=(Reference);
  948.     if-eqz v2, :cond_0
  949.  
  950.     .line 931
  951.     iget-object v2, p0, Lcom/blizzard/wow/net/session/Session;->hardLoginCallbackRef:Ljava/lang/ref/Reference;
  952.  
  953.     invoke-virtual {v2}, Ljava/lang/ref/Reference;->get()Ljava/lang/Object;
  954.  
  955.     move-result-object v0
  956.  
  957.     .end local v0           #callback:Lcom/blizzard/wow/net/session/Session$HardLoginCallback;
  958.     #v0=(Reference);
  959.     check-cast v0, Lcom/blizzard/wow/net/session/Session$HardLoginCallback;
  960.  
  961.     .line 933
  962.     .restart local v0       #callback:Lcom/blizzard/wow/net/session/Session$HardLoginCallback;
  963.     :cond_0
  964.     if-nez v0, :cond_1
  965.  
  966.     .line 934
  967.     invoke-direct {p0}, Lcom/blizzard/wow/net/session/Session;->hardLoginCleanup()V
  968.  
  969.     .line 955
  970.     :goto_0
  971.     #v1=(Conflicted);v2=(Conflicted);v3=(Conflicted);
  972.     return-void
  973.  
  974.     .line 938
  975.     :cond_1
  976.     #v1=(Uninit);v2=(Reference);v3=(Uninit);
  977.     invoke-virtual {p1}, Lcom/blizzard/wow/net/message/Response;->isError()Z
  978.  
  979.     move-result v2
  980.  
  981.     #v2=(Boolean);
  982.     if-eqz v2, :cond_2
  983.  
  984.     .line 941
  985.     invoke-interface {v0, p1}, Lcom/blizzard/wow/net/session/Session$HardLoginCallback;->hardLoginFailed(Lcom/blizzard/wow/net/message/Response;)V
  986.  
  987.     .line 942
  988.     invoke-direct {p0}, Lcom/blizzard/wow/net/session/Session;->hardLoginCleanup()V
  989.  
  990.     goto :goto_0
  991.  
  992.     .line 946
  993.     :cond_2
  994.     invoke-direct {p0, p1}, Lcom/blizzard/wow/net/session/Session;->validateStage2Response(Lcom/blizzard/wow/net/message/Response;)Z
  995.  
  996.     move-result v2
  997.  
  998.     if-eqz v2, :cond_3
  999.  
  1000.     .line 947
  1001.     iget-object v2, p1, Lcom/blizzard/wow/net/message/Response;->body:Ljava/util/HashMap;
  1002.  
  1003.     #v2=(Reference);
  1004.     const-string v3, "sessionCode"
  1005.  
  1006.     #v3=(Reference);
  1007.     invoke-virtual {v2, v3}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
  1008.  
  1009.     move-result-object v1
  1010.  
  1011.     #v1=(Reference);
  1012.     check-cast v1, Ljava/lang/String;
  1013.  
  1014.     .line 948
  1015.     .local v1, sessionCode:Ljava/lang/String;
  1016.     iget-object v2, p0, Lcom/blizzard/wow/net/session/Session;->account:Lcom/blizzard/wow/user/Account;
  1017.  
  1018.     invoke-virtual {v2, v1}, Lcom/blizzard/wow/user/Account;->updateSession(Ljava/lang/String;)Z
  1019.  
  1020.     .line 949
  1021.     invoke-interface {v0}, Lcom/blizzard/wow/net/session/Session$HardLoginCallback;->hardLoginSuccess()V
  1022.  
  1023.     .line 954
  1024.     .end local v1           #sessionCode:Ljava/lang/String;
  1025.     :goto_1
  1026.     #v1=(Conflicted);v3=(Conflicted);
  1027.     invoke-direct {p0}, Lcom/blizzard/wow/net/session/Session;->hardLoginCleanup()V
  1028.  
  1029.     goto :goto_0
  1030.  
  1031.     .line 951
  1032.     :cond_3
  1033.     #v1=(Uninit);v2=(Boolean);v3=(Uninit);
  1034.     const/4 v2, 0x0
  1035.  
  1036.     #v2=(Null);
  1037.     invoke-interface {v0, v2}, Lcom/blizzard/wow/net/session/Session$HardLoginCallback;->hardLoginFailed(Lcom/blizzard/wow/net/message/Response;)V
  1038.  
  1039.     goto :goto_1
  1040. .end method
  1041.  
  1042. .method private final handleLogin(Lcom/blizzard/wow/net/message/Response;)V
  1043.     .locals 7
  1044.     .parameter "response"
  1045.  
  1046.     .prologue
  1047.     .line 754
  1048.     invoke-virtual {p1}, Lcom/blizzard/wow/net/message/Response;->isError()Z
  1049.  
  1050.     move-result v4
  1051.  
  1052.     #v4=(Boolean);
  1053.     if-eqz v4, :cond_1
  1054.  
  1055.     .line 755
  1056.     new-instance v4, Lcom/blizzard/wow/net/session/Session$Error;
  1057.  
  1058.     #v4=(UninitRef);
  1059.     iget-object v5, p1, Lcom/blizzard/wow/net/message/Response;->error:Ljava/lang/String;
  1060.  
  1061.     #v5=(Reference);
  1062.     iget-object v6, p1, Lcom/blizzard/wow/net/message/Response;->errorDescription:Ljava/lang/String;
  1063.  
  1064.     #v6=(Reference);
  1065.     invoke-direct {v4, v5, v6}, Lcom/blizzard/wow/net/session/Session$Error;-><init>(Ljava/lang/String;Ljava/lang/String;)V
  1066.  
  1067.     #v4=(Reference);
  1068.     invoke-virtual {p0, v4}, Lcom/blizzard/wow/net/session/Session;->disconnect(Lcom/blizzard/wow/net/session/Session$Error;)V
  1069.  
  1070.     .line 786
  1071.     :cond_0
  1072.     #v0=(Conflicted);v1=(Conflicted);v2=(Conflicted);v3=(Conflicted);v4=(Conflicted);v5=(Conflicted);v6=(Conflicted);
  1073.     return-void
  1074.  
  1075.     .line 761
  1076.     :cond_1
  1077.     #v0=(Uninit);v1=(Uninit);v2=(Uninit);v3=(Uninit);v4=(Boolean);v5=(Uninit);v6=(Uninit);
  1078.     iget-object v4, p0, Lcom/blizzard/wow/net/session/Session;->state:Lcom/blizzard/util/State;
  1079.  
  1080.     #v4=(Reference);
  1081.     const v5, 0x2000007
  1082.  
  1083.     #v5=(Integer);
  1084.     const/high16 v6, 0x400
  1085.  
  1086.     #v6=(Integer);
  1087.     invoke-virtual {v4, v5, v6}, Lcom/blizzard/util/State;->compareAndSet(II)Z
  1088.  
  1089.     move-result v4
  1090.  
  1091.     #v4=(Boolean);
  1092.     if-eqz v4, :cond_0
  1093.  
  1094.     .line 763
  1095.     iget-object v4, p1, Lcom/blizzard/wow/net/message/Response;->body:Ljava/util/HashMap;
  1096.  
  1097.     #v4=(Reference);
  1098.     const-string v5, "sessionCode"
  1099.  
  1100.     #v5=(Reference);
  1101.     invoke-virtual {v4, v5}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
  1102.  
  1103.     move-result-object v3
  1104.  
  1105.     #v3=(Reference);
  1106.     check-cast v3, Ljava/lang/String;
  1107.  
  1108.     .line 764
  1109.     .local v3, sessionCode:Ljava/lang/String;
  1110.     iget-object v4, p0, Lcom/blizzard/wow/net/session/Session;->account:Lcom/blizzard/wow/user/Account;
  1111.  
  1112.     invoke-virtual {v4, v3}, Lcom/blizzard/wow/user/Account;->updateSession(Ljava/lang/String;)Z
  1113.  
  1114.     .line 765
  1115.     const/4 v4, 0x0
  1116.  
  1117.     #v4=(Null);
  1118.     iput-object v4, p0, Lcom/blizzard/wow/net/session/Session;->clientSalt:[B
  1119.  
  1120.     .line 767
  1121.     const/4 v4, -0x1
  1122.  
  1123.     #v4=(Byte);
  1124.     iput v4, p0, Lcom/blizzard/wow/net/session/Session;->loginMsgId:I
  1125.  
  1126.     .line 770
  1127.     invoke-virtual {p0}, Lcom/blizzard/wow/net/session/Session;->onSessionEstablished()V
  1128.  
  1129.     .line 772
  1130.     new-instance v1, Ljava/util/ArrayList;
  1131.  
  1132.     #v1=(UninitRef);
  1133.     invoke-direct {v1}, Ljava/util/ArrayList;-><init>()V
  1134.  
  1135.     .line 773
  1136.     .local v1, listenersCopy:Ljava/util/List;,"Ljava/util/List<Lcom/blizzard/wow/net/session/SessionListener;>;"
  1137.     #v1=(Reference);
  1138.     iget-object v5, p0, Lcom/blizzard/wow/net/session/Session;->listeners:Ljava/util/ArrayList;
  1139.  
  1140.     monitor-enter v5
  1141.  
  1142.     .line 775
  1143.     :try_start_0
  1144.     iget-object v4, p0, Lcom/blizzard/wow/net/session/Session;->listeners:Ljava/util/ArrayList;
  1145.  
  1146.     #v4=(Reference);
  1147.     invoke-virtual {v4}, Ljava/util/ArrayList;->iterator()Ljava/util/Iterator;
  1148.  
  1149.     move-result-object v4
  1150.  
  1151.     :cond_2
  1152.     :goto_0
  1153.     #v0=(Conflicted);v2=(Conflicted);
  1154.     invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z
  1155.  
  1156.     move-result v6
  1157.  
  1158.     #v6=(Boolean);
  1159.     if-nez v6, :cond_3
  1160.  
  1161.     .line 773
  1162.     monitor-exit v5
  1163.     :try_end_0
  1164.     .catchall {:try_start_0 .. :try_end_0} :catchall_0
  1165.  
  1166.     .line 782
  1167.     invoke-interface {v1}, Ljava/util/List;->iterator()Ljava/util/Iterator;
  1168.  
  1169.     move-result-object v4
  1170.  
  1171.     :goto_1
  1172.     #v5=(Conflicted);
  1173.     invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z
  1174.  
  1175.     move-result v5
  1176.  
  1177.     #v5=(Boolean);
  1178.     if-eqz v5, :cond_0
  1179.  
  1180.     invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;
  1181.  
  1182.     move-result-object v0
  1183.  
  1184.     #v0=(Reference);
  1185.     check-cast v0, Lcom/blizzard/wow/net/session/SessionListener;
  1186.  
  1187.     .line 783
  1188.     .local v0, listener:Lcom/blizzard/wow/net/session/SessionListener;
  1189.     invoke-interface {v0, p1}, Lcom/blizzard/wow/net/session/SessionListener;->onSessionEstablished(Lcom/blizzard/wow/net/message/Response;)V
  1190.  
  1191.     goto :goto_1
  1192.  
  1193.     .line 775
  1194.     .end local v0           #listener:Lcom/blizzard/wow/net/session/SessionListener;
  1195.     :cond_3
  1196.     :try_start_1
  1197.     #v0=(Conflicted);v5=(Reference);
  1198.     invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;
  1199.  
  1200.     move-result-object v2
  1201.  
  1202.     #v2=(Reference);
  1203.     check-cast v2, Ljava/lang/ref/Reference;
  1204.  
  1205.     .line 776
  1206.     .local v2, lref:Ljava/lang/ref/Reference;,"Ljava/lang/ref/Reference<+Lcom/blizzard/wow/net/session/SessionListener;>;"
  1207.     invoke-virtual {v2}, Ljava/lang/ref/Reference;->get()Ljava/lang/Object;
  1208.  
  1209.     move-result-object v0
  1210.  
  1211.     #v0=(Reference);
  1212.     check-cast v0, Lcom/blizzard/wow/net/session/SessionListener;
  1213.  
  1214.     .line 777
  1215.     .restart local v0       #listener:Lcom/blizzard/wow/net/session/SessionListener;
  1216.     if-eqz v0, :cond_2
  1217.  
  1218.     .line 778
  1219.     invoke-interface {v1, v0}, Ljava/util/List;->add(Ljava/lang/Object;)Z
  1220.  
  1221.     goto :goto_0
  1222.  
  1223.     .line 773
  1224.     .end local v0           #listener:Lcom/blizzard/wow/net/session/SessionListener;
  1225.     .end local v2           #lref:Ljava/lang/ref/Reference;,"Ljava/lang/ref/Reference<+Lcom/blizzard/wow/net/session/SessionListener;>;"
  1226.     :catchall_0
  1227.     #v0=(Conflicted);v2=(Conflicted);v4=(Conflicted);v6=(Integer);
  1228.     move-exception v4
  1229.  
  1230.     #v4=(Reference);
  1231.     monitor-exit v5
  1232.     :try_end_1
  1233.     .catchall {:try_start_1 .. :try_end_1} :catchall_0
  1234.  
  1235.     throw v4
  1236. .end method
  1237.  
  1238. .method private final handleReconnect1Response(Lcom/blizzard/wow/net/message/Response;)V
  1239.     .locals 17
  1240.     .parameter "response"
  1241.  
  1242.     .prologue
  1243.     .line 680
  1244.     invoke-virtual/range {p1 .. p1}, Lcom/blizzard/wow/net/message/Response;->isError()Z
  1245.  
  1246.     move-result v14
  1247.  
  1248.     #v14=(Boolean);
  1249.     if-eqz v14, :cond_1
  1250.  
  1251.     .line 681
  1252.     new-instance v14, Lcom/blizzard/wow/net/session/Session$Error;
  1253.  
  1254.     #v14=(UninitRef);
  1255.     move-object/from16 v0, p1
  1256.  
  1257.     #v0=(Reference);
  1258.     iget-object v15, v0, Lcom/blizzard/wow/net/message/Response;->error:Ljava/lang/String;
  1259.  
  1260.     #v15=(Reference);
  1261.     move-object/from16 v0, p1
  1262.  
  1263.     iget-object v0, v0, Lcom/blizzard/wow/net/message/Response;->errorDescription:Ljava/lang/String;
  1264.  
  1265.     move-object/from16 v16, v0
  1266.  
  1267.     #v16=(Reference);
  1268.     invoke-direct/range {v14 .. v16}, Lcom/blizzard/wow/net/session/Session$Error;-><init>(Ljava/lang/String;Ljava/lang/String;)V
  1269.  
  1270.     #v14=(Reference);
  1271.     move-object/from16 v0, p0
  1272.  
  1273.     invoke-virtual {v0, v14}, Lcom/blizzard/wow/net/session/Session;->disconnect(Lcom/blizzard/wow/net/session/Session$Error;)V
  1274.  
  1275.     .line 751
  1276.     :cond_0
  1277.     :goto_0
  1278.     #v1=(Conflicted);v2=(Conflicted);v3=(Conflicted);v4=(Conflicted);v5=(Conflicted);v6=(Conflicted);v7=(Conflicted);v8=(Conflicted);v9=(Conflicted);v10=(Conflicted);v11=(Conflicted);v12=(Conflicted);v13=(Conflicted);v14=(Conflicted);v15=(Conflicted);v16=(Conflicted);
  1279.     return-void
  1280.  
  1281.     .line 688
  1282.     :cond_1
  1283.     #v0=(Uninit);v1=(Uninit);v2=(Uninit);v3=(Uninit);v4=(Uninit);v5=(Uninit);v6=(Uninit);v7=(Uninit);v8=(Uninit);v9=(Uninit);v10=(Uninit);v11=(Uninit);v12=(Uninit);v13=(Uninit);v14=(Boolean);v15=(Uninit);v16=(Uninit);
  1284.     move-object/from16 v0, p1
  1285.  
  1286.     #v0=(Reference);
  1287.     iget-object v14, v0, Lcom/blizzard/wow/net/message/Response;->body:Ljava/util/HashMap;
  1288.  
  1289.     #v14=(Reference);
  1290.     const-string v15, "serverProof"
  1291.  
  1292.     #v15=(Reference);
  1293.     invoke-virtual {v14, v15}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
  1294.  
  1295.     move-result-object v7
  1296.  
  1297.     #v7=(Reference);
  1298.     check-cast v7, [B
  1299.  
  1300.     .line 689
  1301.     .local v7, serverProof:[B
  1302.     move-object/from16 v0, p1
  1303.  
  1304.     iget-object v14, v0, Lcom/blizzard/wow/net/message/Response;->body:Ljava/util/HashMap;
  1305.  
  1306.     const-string v15, "serverSalt"
  1307.  
  1308.     invoke-virtual {v14, v15}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
  1309.  
  1310.     move-result-object v9
  1311.  
  1312.     #v9=(Reference);
  1313.     check-cast v9, [B
  1314.  
  1315.     .line 691
  1316.     .local v9, serverSalt:[B
  1317.     move-object/from16 v0, p0
  1318.  
  1319.     iget-object v14, v0, Lcom/blizzard/wow/net/session/Session;->account:Lcom/blizzard/wow/user/Account;
  1320.  
  1321.     invoke-virtual {v14}, Lcom/blizzard/wow/user/Account;->getSessionKey()[B
  1322.  
  1323.     move-result-object v10
  1324.  
  1325.     .line 692
  1326.     .local v10, sessionKey:[B
  1327.     #v10=(Reference);
  1328.     array-length v11, v10
  1329.  
  1330.     .line 694
  1331.     .local v11, sessionKeySize:I
  1332.     #v11=(Integer);
  1333.     const/4 v5, 0x0
  1334.  
  1335.     #v5=(Null);
  1336.     check-cast v5, [B
  1337.  
  1338.     .local v5, newSessionKey:[B
  1339.     #v5=(Reference);
  1340.     const/4 v1, 0x0
  1341.  
  1342.     #v1=(Null);
  1343.     check-cast v1, [B
  1344.  
  1345.     .line 697
  1346.     .local v1, clientProof:[B
  1347.     :try_start_0
  1348.     #v1=(Reference);
  1349.     new-instance v4, Ljavax/crypto/spec/SecretKeySpec;
  1350.  
  1351.     #v4=(UninitRef);
  1352.     const-string v14, "MacSHA256"
  1353.  
  1354.     invoke-direct {v4, v10, v14}, Ljavax/crypto/spec/SecretKeySpec;-><init>([BLjava/lang/String;)V
  1355.  
  1356.     .line 699
  1357.     .local v4, macKey:Ljava/security/Key;
  1358.     #v4=(Reference);
  1359.     const-string v14, "HMacSHA256"
  1360.  
  1361.     invoke-static {v14}, Ljavax/crypto/Mac;->getInstance(Ljava/lang/String;)Ljavax/crypto/Mac;
  1362.  
  1363.     move-result-object v3
  1364.  
  1365.     .line 700
  1366.     .local v3, mac:Ljavax/crypto/Mac;
  1367.     #v3=(Reference);
  1368.     invoke-virtual {v3, v4}, Ljavax/crypto/Mac;->init(Ljava/security/Key;)V
  1369.  
  1370.     .line 701
  1371.     const/4 v14, 0x0
  1372.  
  1373.     #v14=(Null);
  1374.     invoke-virtual {v3, v14}, Ljavax/crypto/Mac;->update(B)V
  1375.  
  1376.     .line 702
  1377.     move-object/from16 v0, p0
  1378.  
  1379.     iget-object v14, v0, Lcom/blizzard/wow/net/session/Session;->clientSalt:[B
  1380.  
  1381.     #v14=(Reference);
  1382.     invoke-virtual {v3, v14}, Ljavax/crypto/Mac;->update([B)V
  1383.  
  1384.     .line 703
  1385.     invoke-virtual {v3, v9}, Ljavax/crypto/Mac;->update([B)V
  1386.  
  1387.     .line 704
  1388.     invoke-virtual {v3}, Ljavax/crypto/Mac;->doFinal()[B
  1389.  
  1390.     move-result-object v8
  1391.  
  1392.     .line 706
  1393.     .local v8, serverProofCheck:[B
  1394.     #v8=(Reference);
  1395.     invoke-static {v7, v8}, Lcom/blizzard/wow/net/session/Session;->utilByteArrayCmp([B[B)Z
  1396.  
  1397.     move-result v14
  1398.  
  1399.     #v14=(Boolean);
  1400.     if-nez v14, :cond_2
  1401.  
  1402.     .line 708
  1403.     new-instance v14, Ljava/lang/Exception;
  1404.  
  1405.     #v14=(UninitRef);
  1406.     const-string v15, "Server proof validation failed"
  1407.  
  1408.     invoke-direct {v14, v15}, Ljava/lang/Exception;-><init>(Ljava/lang/String;)V
  1409.  
  1410.     #v14=(Reference);
  1411.     throw v14
  1412.     :try_end_0
  1413.     .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0
  1414.  
  1415.     .line 728
  1416.     .end local v3           #mac:Ljavax/crypto/Mac;
  1417.     .end local v4           #macKey:Ljava/security/Key;
  1418.     .end local v8           #serverProofCheck:[B
  1419.     :catch_0
  1420.     #v3=(Conflicted);v4=(Conflicted);v8=(Conflicted);v12=(Conflicted);v14=(Conflicted);v16=(Conflicted);
  1421.     move-exception v2
  1422.  
  1423.     .line 729
  1424.     .local v2, e:Ljava/lang/Exception;
  1425.     #v2=(Reference);
  1426.     sget-object v14, Lcom/blizzard/wow/net/session/Session;->SESSION_AUTH_ERROR:Lcom/blizzard/wow/net/session/Session$Error;
  1427.  
  1428.     #v14=(Reference);
  1429.     move-object/from16 v0, p0
  1430.  
  1431.     invoke-virtual {v0, v14}, Lcom/blizzard/wow/net/session/Session;->disconnect(Lcom/blizzard/wow/net/session/Session$Error;)V
  1432.  
  1433.     goto :goto_0
  1434.  
  1435.     .line 712
  1436.     .end local v2           #e:Ljava/lang/Exception;
  1437.     .restart local v3       #mac:Ljavax/crypto/Mac;
  1438.     .restart local v4       #macKey:Ljava/security/Key;
  1439.     .restart local v8       #serverProofCheck:[B
  1440.     :cond_2
  1441.     :try_start_1
  1442.     #v2=(Uninit);v3=(Reference);v4=(Reference);v8=(Reference);v12=(Uninit);v14=(Boolean);v16=(Uninit);
  1443.     invoke-virtual {v3, v4}, Ljavax/crypto/Mac;->init(Ljava/security/Key;)V
  1444.  
  1445.     .line 713
  1446.     const/4 v14, 0x1
  1447.  
  1448.     #v14=(One);
  1449.     invoke-virtual {v3, v14}, Ljavax/crypto/Mac;->update(B)V
  1450.  
  1451.     .line 714
  1452.     move-object/from16 v0, p0
  1453.  
  1454.     iget-object v14, v0, Lcom/blizzard/wow/net/session/Session;->clientSalt:[B
  1455.  
  1456.     #v14=(Reference);
  1457.     invoke-virtual {v3, v14}, Ljavax/crypto/Mac;->update([B)V
  1458.  
  1459.     .line 715
  1460.     invoke-virtual {v3, v9}, Ljavax/crypto/Mac;->update([B)V
  1461.  
  1462.     .line 716
  1463.     invoke-virtual {v3}, Ljavax/crypto/Mac;->doFinal()[B
  1464.  
  1465.     move-result-object v1
  1466.  
  1467.     .line 719
  1468.     new-array v5, v11, [B
  1469.  
  1470.     .line 720
  1471.     div-int/lit8 v12, v11, 0x2
  1472.  
  1473.     .line 722
  1474.     .local v12, sessionKeySizeHalf:I
  1475.     #v12=(Integer);
  1476.     invoke-virtual {v3, v4}, Ljavax/crypto/Mac;->init(Ljava/security/Key;)V
  1477.  
  1478.     .line 723
  1479.     invoke-virtual {v3, v1}, Ljavax/crypto/Mac;->update([B)V
  1480.  
  1481.     .line 724
  1482.     invoke-virtual {v3}, Ljavax/crypto/Mac;->doFinal()[B
  1483.  
  1484.     move-result-object v14
  1485.  
  1486.     const/4 v15, 0x0
  1487.  
  1488.     #v15=(Null);
  1489.     const/16 v16, 0x0
  1490.  
  1491.     #v16=(Null);
  1492.     move/from16 v0, v16
  1493.  
  1494.     #v0=(Null);
  1495.     invoke-static {v14, v15, v5, v0, v12}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
  1496.  
  1497.     .line 725
  1498.     invoke-virtual {v3, v4}, Ljavax/crypto/Mac;->init(Ljava/security/Key;)V
  1499.  
  1500.     .line 726
  1501.     invoke-virtual {v3, v7}, Ljavax/crypto/Mac;->update([B)V
  1502.  
  1503.     .line 727
  1504.     invoke-virtual {v3}, Ljavax/crypto/Mac;->doFinal()[B
  1505.  
  1506.     move-result-object v14
  1507.  
  1508.     const/4 v15, 0x0
  1509.  
  1510.     invoke-static {v14, v15, v5, v12, v12}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
  1511.     :try_end_1
  1512.     .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_0
  1513.  
  1514.     .line 734
  1515.     move-object/from16 v0, p0
  1516.  
  1517.     #v0=(Reference);
  1518.     iget-object v14, v0, Lcom/blizzard/wow/net/session/Session;->account:Lcom/blizzard/wow/user/Account;
  1519.  
  1520.     invoke-virtual {v14, v5}, Lcom/blizzard/wow/user/Account;->setNewSessionKey([B)V
  1521.  
  1522.     .line 736
  1523.     move-object/from16 v0, p0
  1524.  
  1525.     iget-object v14, v0, Lcom/blizzard/wow/net/session/Session;->state:Lcom/blizzard/util/State;
  1526.  
  1527.     const v15, 0x2000006
  1528.  
  1529.     #v15=(Integer);
  1530.     const v16, 0x2000007
  1531.  
  1532.     #v16=(Integer);
  1533.     invoke-virtual/range {v14 .. v16}, Lcom/blizzard/util/State;->compareAndSet(II)Z
  1534.  
  1535.     move-result v14
  1536.  
  1537.     #v14=(Boolean);
  1538.     if-eqz v14, :cond_0
  1539.  
  1540.     .line 738
  1541.     new-instance v6, Lcom/blizzard/wow/net/message/Request;
  1542.  
  1543.     .line 739
  1544.     #v6=(UninitRef);
  1545.     const-string v14, "/reconnect2"
  1546.  
  1547.     .line 738
  1548.     #v14=(Reference);
  1549.     invoke-direct {v6, v14}, Lcom/blizzard/wow/net/message/Request;-><init>(Ljava/lang/String;)V
  1550.  
  1551.     .line 740
  1552.     .local v6, reconn2Message:Lcom/blizzard/wow/net/message/Request;
  1553.     #v6=(Reference);
  1554.     iget-object v14, v6, Lcom/blizzard/wow/net/message/Request;->body:Ljava/util/HashMap;
  1555.  
  1556.     const-string v15, "clientProof"
  1557.  
  1558.     #v15=(Reference);
  1559.     invoke-virtual {v14, v15, v1}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
  1560.  
  1561.     .line 742
  1562.     move-object/from16 v0, p0
  1563.  
  1564.     invoke-virtual {v0, v6}, Lcom/blizzard/wow/net/session/Session;->sendRequest(Lcom/blizzard/wow/net/message/Request;)Z
  1565.  
  1566.     move-result v13
  1567.  
  1568.     .line 743
  1569.     .local v13, success:Z
  1570.     #v13=(Boolean);
  1571.     if-eqz v13, :cond_3
  1572.  
  1573.     .line 744
  1574.     iget v14, v6, Lcom/blizzard/wow/net/message/Request;->id:I
  1575.  
  1576.     #v14=(Integer);
  1577.     move-object/from16 v0, p0
  1578.  
  1579.     iput v14, v0, Lcom/blizzard/wow/net/session/Session;->loginMsgId:I
  1580.  
  1581.     goto/16 :goto_0
  1582.  
  1583.     .line 746
  1584.     :cond_3
  1585.     #v14=(Reference);
  1586.     invoke-virtual/range {p0 .. p0}, Lcom/blizzard/wow/net/session/Session;->disconnect()V
  1587.  
  1588.     goto/16 :goto_0
  1589. .end method
  1590.  
  1591. .method private hardLoginCleanup()V
  1592.     .locals 2
  1593.  
  1594.     .prologue
  1595.     const/4 v0, 0x0
  1596.  
  1597.     #v0=(Null);
  1598.     const/high16 v1, 0x400
  1599.  
  1600.     .line 959
  1601.     #v1=(Integer);
  1602.     iput-object v0, p0, Lcom/blizzard/wow/net/session/Session;->hardLoginCallbackRef:Ljava/lang/ref/Reference;
  1603.  
  1604.     .line 960
  1605.     iput-object v0, p0, Lcom/blizzard/wow/net/session/Session;->hardLoginClientProof:[B
  1606.  
  1607.     .line 962
  1608.     iget-object v0, p0, Lcom/blizzard/wow/net/session/Session;->state:Lcom/blizzard/util/State;
  1609.  
  1610.     #v0=(Reference);
  1611.     invoke-virtual {v0, v1, v1}, Lcom/blizzard/util/State;->compareMaskAndSet(II)Z
  1612.  
  1613.     .line 964
  1614.     return-void
  1615. .end method
  1616.  
  1617. .method public static initGenericErrors(Landroid/content/Context;)V
  1618.     .locals 5
  1619.     .parameter "context"
  1620.  
  1621.     .prologue
  1622.     const v4, 0x7f060139
  1623.  
  1624.     #v4=(Integer);
  1625.     const v3, 0x7f060138
  1626.  
  1627.     .line 1082
  1628.     #v3=(Integer);
  1629.     sget-object v0, Lcom/blizzard/wow/net/session/Session;->CONN_OPEN_ERROR:Lcom/blizzard/wow/net/session/Session$Error;
  1630.  
  1631.     #v0=(Reference);
  1632.     if-nez v0, :cond_0
  1633.  
  1634.     .line 1083
  1635.     new-instance v0, Lcom/blizzard/wow/net/session/Session$Error;
  1636.  
  1637.     .line 1084
  1638.     #v0=(UninitRef);
  1639.     invoke-virtual {p0, v3}, Landroid/content/Context;->getString(I)Ljava/lang/String;
  1640.  
  1641.     move-result-object v1
  1642.  
  1643.     .line 1085
  1644.     #v1=(Reference);
  1645.     invoke-virtual {p0, v4}, Landroid/content/Context;->getString(I)Ljava/lang/String;
  1646.  
  1647.     move-result-object v2
  1648.  
  1649.     .line 1083
  1650.     #v2=(Reference);
  1651.     invoke-direct {v0, v1, v2}, Lcom/blizzard/wow/net/session/Session$Error;-><init>(Ljava/lang/String;Ljava/lang/String;)V
  1652.  
  1653.     #v0=(Reference);
  1654.     sput-object v0, Lcom/blizzard/wow/net/session/Session;->CONN_OPEN_ERROR:Lcom/blizzard/wow/net/session/Session$Error;
  1655.  
  1656.     .line 1087
  1657.     :cond_0
  1658.     #v1=(Conflicted);v2=(Conflicted);
  1659.     sget-object v0, Lcom/blizzard/wow/net/session/Session;->LOGIN_TIMEOUT_ERROR:Lcom/blizzard/wow/net/session/Session$Error;
  1660.  
  1661.     if-nez v0, :cond_1
  1662.  
  1663.     .line 1088
  1664.     new-instance v0, Lcom/blizzard/wow/net/session/Session$Error;
  1665.  
  1666.     .line 1089
  1667.     #v0=(UninitRef);
  1668.     invoke-virtual {p0, v3}, Landroid/content/Context;->getString(I)Ljava/lang/String;
  1669.  
  1670.     move-result-object v1
  1671.  
  1672.     .line 1090
  1673.     #v1=(Reference);
  1674.     const v2, 0x7f06013a
  1675.  
  1676.     #v2=(Integer);
  1677.     invoke-virtual {p0, v2}, Landroid/content/Context;->getString(I)Ljava/lang/String;
  1678.  
  1679.     move-result-object v2
  1680.  
  1681.     .line 1088
  1682.     #v2=(Reference);
  1683.     invoke-direct {v0, v1, v2}, Lcom/blizzard/wow/net/session/Session$Error;-><init>(Ljava/lang/String;Ljava/lang/String;)V
  1684.  
  1685.     #v0=(Reference);
  1686.     sput-object v0, Lcom/blizzard/wow/net/session/Session;->LOGIN_TIMEOUT_ERROR:Lcom/blizzard/wow/net/session/Session$Error;
  1687.  
  1688.     .line 1092
  1689.     :cond_1
  1690.     #v1=(Conflicted);v2=(Conflicted);
  1691.     sget-object v0, Lcom/blizzard/wow/net/session/Session;->SESSION_AUTH_ERROR:Lcom/blizzard/wow/net/session/Session$Error;
  1692.  
  1693.     if-nez v0, :cond_2
  1694.  
  1695.     .line 1093
  1696.     new-instance v0, Lcom/blizzard/wow/net/session/Session$Error;
  1697.  
  1698.     .line 1094
  1699.     #v0=(UninitRef);
  1700.     invoke-virtual {p0, v3}, Landroid/content/Context;->getString(I)Ljava/lang/String;
  1701.  
  1702.     move-result-object v1
  1703.  
  1704.     .line 1095
  1705.     #v1=(Reference);
  1706.     invoke-virtual {p0, v4}, Landroid/content/Context;->getString(I)Ljava/lang/String;
  1707.  
  1708.     move-result-object v2
  1709.  
  1710.     .line 1093
  1711.     #v2=(Reference);
  1712.     invoke-direct {v0, v1, v2}, Lcom/blizzard/wow/net/session/Session$Error;-><init>(Ljava/lang/String;Ljava/lang/String;)V
  1713.  
  1714.     #v0=(Reference);
  1715.     sput-object v0, Lcom/blizzard/wow/net/session/Session;->SESSION_AUTH_ERROR:Lcom/blizzard/wow/net/session/Session$Error;
  1716.  
  1717.     .line 1097
  1718.     :cond_2
  1719.     #v1=(Conflicted);v2=(Conflicted);
  1720.     return-void
  1721. .end method
  1722.  
  1723. .method private initializeProtocolConnection(Ljava/lang/String;I)V
  1724.     .locals 2
  1725.     .parameter "serverHost"
  1726.     .parameter "serverPort"
  1727.  
  1728.     .prologue
  1729.     .line 337
  1730.     const/4 v0, 0x0
  1731.  
  1732.     #v0=(Null);
  1733.     iput-object v0, p0, Lcom/blizzard/wow/net/session/Session;->conn:Lcom/blizzard/wow/net/protocol/ProtocolConnection;
  1734.  
  1735.     .line 339
  1736.     iget-boolean v0, p0, Lcom/blizzard/wow/net/session/Session;->useNioProtocolConnection:Z
  1737.  
  1738.     #v0=(Boolean);
  1739.     if-eqz v0, :cond_0
  1740.  
  1741.     .line 340
  1742.     new-instance v0, Lcom/blizzard/wow/net/protocol/binary/BinaryProtocolConnectionNio;
  1743.  
  1744.     .line 341
  1745.     #v0=(UninitRef);
  1746.     invoke-virtual {p0}, Lcom/blizzard/wow/net/session/Session;->getHandler()Landroid/os/Handler;
  1747.  
  1748.     move-result-object v1
  1749.  
  1750.     #v1=(Reference);
  1751.     invoke-direct {v0, p1, p2, v1}, Lcom/blizzard/wow/net/protocol/binary/BinaryProtocolConnectionNio;-><init>(Ljava/lang/String;ILandroid/os/Handler;)V
  1752.  
  1753.     .line 340
  1754.     #v0=(Reference);
  1755.     iput-object v0, p0, Lcom/blizzard/wow/net/session/Session;->conn:Lcom/blizzard/wow/net/protocol/ProtocolConnection;
  1756.  
  1757.     .line 347
  1758.     :goto_0
  1759.     #v1=(Conflicted);
  1760.     iget-object v0, p0, Lcom/blizzard/wow/net/session/Session;->conn:Lcom/blizzard/wow/net/protocol/ProtocolConnection;
  1761.  
  1762.     invoke-interface {v0, p0}, Lcom/blizzard/wow/net/protocol/ProtocolConnection;->setOnConnectionListener(Lcom/blizzard/wow/net/protocol/ProtocolConnection$OnConnectionListener;)V
  1763.  
  1764.     .line 348
  1765.     iget-object v0, p0, Lcom/blizzard/wow/net/session/Session;->conn:Lcom/blizzard/wow/net/protocol/ProtocolConnection;
  1766.  
  1767.     invoke-interface {v0, p0}, Lcom/blizzard/wow/net/protocol/ProtocolConnection;->setOnRequestSentListener(Lcom/blizzard/wow/net/protocol/ProtocolConnection$OnRequestSentListener;)V
  1768.  
  1769.     .line 349
  1770.     iget-object v0, p0, Lcom/blizzard/wow/net/session/Session;->conn:Lcom/blizzard/wow/net/protocol/ProtocolConnection;
  1771.  
  1772.     invoke-interface {v0, p0}, Lcom/blizzard/wow/net/protocol/ProtocolConnection;->setOnResponseReceivedListener(Lcom/blizzard/wow/net/protocol/ProtocolConnection$OnResponseReceivedListener;)V
  1773.  
  1774.     .line 350
  1775.     return-void
  1776.  
  1777.     .line 343
  1778.     :cond_0
  1779.     #v0=(Boolean);v1=(Uninit);
  1780.     new-instance v0, Lcom/blizzard/wow/net/protocol/binary/BinaryProtocolConnection;
  1781.  
  1782.     #v0=(UninitRef);
  1783.     invoke-direct {v0, p1, p2}, Lcom/blizzard/wow/net/protocol/binary/BinaryProtocolConnection;-><init>(Ljava/lang/String;I)V
  1784.  
  1785.     #v0=(Reference);
  1786.     iput-object v0, p0, Lcom/blizzard/wow/net/session/Session;->conn:Lcom/blizzard/wow/net/protocol/ProtocolConnection;
  1787.  
  1788.     goto :goto_0
  1789. .end method
  1790.  
  1791. .method private prepareStage1Request(Ljava/lang/String;)Lcom/blizzard/wow/net/message/Request;
  1792.     .locals 6
  1793.     .parameter "target"
  1794.  
  1795.     .prologue
  1796.     .line 968
  1797.     iget-object v2, p0, Lcom/blizzard/wow/net/session/Session;->srp:Lcom/blizzard/security/srp/client/ClientSRP;
  1798.  
  1799.     #v2=(Reference);
  1800.     if-nez v2, :cond_0
  1801.  
  1802.     .line 970
  1803.     sget v2, Lcom/blizzard/wow/user/Account;->ACCOUNT_TYPE_BATTLE_NET:I
  1804.  
  1805.     #v2=(Integer);
  1806.     iget-object v3, p0, Lcom/blizzard/wow/net/session/Session;->account:Lcom/blizzard/wow/user/Account;
  1807.  
  1808.     #v3=(Reference);
  1809.     iget v3, v3, Lcom/blizzard/wow/user/Account;->accountType:I
  1810.  
  1811.     #v3=(Integer);
  1812.     if-ne v2, v3, :cond_1
  1813.  
  1814.     .line 971
  1815.     sget-object v0, Lcom/blizzard/security/srp/client/ClientConstants$Mode;->BATTLE_NET:Lcom/blizzard/security/srp/client/ClientConstants$Mode;
  1816.  
  1817.     .line 972
  1818.     .local v0, srpMode:Lcom/blizzard/security/srp/client/ClientConstants$Mode;
  1819.     :goto_0
  1820.     #v0=(Reference);
  1821.     new-instance v2, Lcom/blizzard/security/srp/client/ClientSRP;
  1822.  
  1823.     #v2=(UninitRef);
  1824.     invoke-direct {v2, v0}, Lcom/blizzard/security/srp/client/ClientSRP;-><init>(Lcom/blizzard/security/srp/client/ClientConstants$Mode;)V
  1825.  
  1826.     #v2=(Reference);
  1827.     iput-object v2, p0, Lcom/blizzard/wow/net/session/Session;->srp:Lcom/blizzard/security/srp/client/ClientSRP;
  1828.  
  1829.     .line 973
  1830.     new-instance v2, Lcom/blizzard/security/srp/client/ClientSession;
  1831.  
  1832.     #v2=(UninitRef);
  1833.     iget-object v3, p0, Lcom/blizzard/wow/net/session/Session;->srp:Lcom/blizzard/security/srp/client/ClientSRP;
  1834.  
  1835.     #v3=(Reference);
  1836.     invoke-direct {v2, v3}, Lcom/blizzard/security/srp/client/ClientSession;-><init>(Lcom/blizzard/security/srp/client/ClientSRP;)V
  1837.  
  1838.     #v2=(Reference);
  1839.     iput-object v2, p0, Lcom/blizzard/wow/net/session/Session;->srpSession:Lcom/blizzard/security/srp/client/ClientSession;
  1840.  
  1841.     .line 976
  1842.     .end local v0           #srpMode:Lcom/blizzard/security/srp/client/ClientConstants$Mode;
  1843.     :cond_0
  1844.     #v0=(Conflicted);v3=(Conflicted);
  1845.     const/4 v2, 0x1
  1846.  
  1847.     #v2=(One);
  1848.     invoke-virtual {p0, p1, v2}, Lcom/blizzard/wow/net/session/Session;->loginMessage(Ljava/lang/String;Z)Lcom/blizzard/wow/net/message/Request;
  1849.  
  1850.     move-result-object v1
  1851.  
  1852.     .line 977
  1853.     .local v1, stage1Message:Lcom/blizzard/wow/net/message/Request;
  1854.     #v1=(Reference);
  1855.     iget-object v2, v1, Lcom/blizzard/wow/net/message/Request;->body:Ljava/util/HashMap;
  1856.  
  1857.     #v2=(Reference);
  1858.     const-string v3, "clientA"
  1859.  
  1860.     #v3=(Reference);
  1861.     iget-object v4, p0, Lcom/blizzard/wow/net/session/Session;->srpSession:Lcom/blizzard/security/srp/client/ClientSession;
  1862.  
  1863.     #v4=(Reference);
  1864.     iget-object v5, p0, Lcom/blizzard/wow/net/session/Session;->srp:Lcom/blizzard/security/srp/client/ClientSRP;
  1865.  
  1866.     #v5=(Reference);
  1867.     invoke-virtual {v4, v5}, Lcom/blizzard/security/srp/client/ClientSession;->getChallenge(Lcom/blizzard/security/srp/client/ClientSRP;)Lcom/blizzard/security/srp/client/ClientSession$ClientChallenge;
  1868.  
  1869.     move-result-object v4
  1870.  
  1871.     invoke-virtual {v4}, Lcom/blizzard/security/srp/client/ClientSession$ClientChallenge;->getChallenge_A()[B
  1872.  
  1873.     move-result-object v4
  1874.  
  1875.     invoke-virtual {v2, v3, v4}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
  1876.  
  1877.     .line 978
  1878.     return-object v1
  1879.  
  1880.     .line 971
  1881.     .end local v1           #stage1Message:Lcom/blizzard/wow/net/message/Request;
  1882.     :cond_1
  1883.     #v0=(Uninit);v1=(Uninit);v2=(Integer);v3=(Integer);v4=(Uninit);v5=(Uninit);
  1884.     sget-object v0, Lcom/blizzard/security/srp/client/ClientConstants$Mode;->WOW:Lcom/blizzard/security/srp/client/ClientConstants$Mode;
  1885.  
  1886.     #v0=(Reference);
  1887.     goto :goto_0
  1888. .end method
  1889.  
  1890. .method private final sendAuthenticate1()V
  1891.     .locals 5
  1892.  
  1893.     .prologue
  1894.     const v4, 0x2000004
  1895.  
  1896.     .line 574
  1897.     #v4=(Integer);
  1898.     iget-object v2, p0, Lcom/blizzard/wow/net/session/Session;->state:Lcom/blizzard/util/State;
  1899.  
  1900.     #v2=(Reference);
  1901.     const v3, 0x2000002
  1902.  
  1903.     #v3=(Integer);
  1904.     invoke-virtual {v2, v3, v4}, Lcom/blizzard/util/State;->compareAndSet(II)Z
  1905.  
  1906.     move-result v2
  1907.  
  1908.     #v2=(Boolean);
  1909.     if-nez v2, :cond_0
  1910.  
  1911.     .line 576
  1912.     iget-object v2, p0, Lcom/blizzard/wow/net/session/Session;->state:Lcom/blizzard/util/State;
  1913.  
  1914.     #v2=(Reference);
  1915.     const v3, 0x2000003
  1916.  
  1917.     invoke-virtual {v2, v3, v4}, Lcom/blizzard/util/State;->compareAndSet(II)Z
  1918.  
  1919.     move-result v2
  1920.  
  1921.     #v2=(Boolean);
  1922.     if-eqz v2, :cond_1
  1923.  
  1924.     .line 579
  1925.     :cond_0
  1926.     const-string v2, "/authenticate1"
  1927.  
  1928.     #v2=(Reference);
  1929.     invoke-direct {p0, v2}, Lcom/blizzard/wow/net/session/Session;->prepareStage1Request(Ljava/lang/String;)Lcom/blizzard/wow/net/message/Request;
  1930.  
  1931.     move-result-object v0
  1932.  
  1933.     .line 581
  1934.     .local v0, auth1Message:Lcom/blizzard/wow/net/message/Request;
  1935.     #v0=(Reference);
  1936.     invoke-virtual {p0, v0}, Lcom/blizzard/wow/net/session/Session;->sendRequest(Lcom/blizzard/wow/net/message/Request;)Z
  1937.  
  1938.     move-result v1
  1939.  
  1940.     .line 582
  1941.     .local v1, success:Z
  1942.     #v1=(Boolean);
  1943.     if-eqz v1, :cond_2
  1944.  
  1945.     .line 583
  1946.     iget v2, v0, Lcom/blizzard/wow/net/message/Request;->id:I
  1947.  
  1948.     #v2=(Integer);
  1949.     iput v2, p0, Lcom/blizzard/wow/net/session/Session;->loginMsgId:I
  1950.  
  1951.     .line 590
  1952.     .end local v0           #auth1Message:Lcom/blizzard/wow/net/message/Request;
  1953.     .end local v1           #success:Z
  1954.     :cond_1
  1955.     :goto_0
  1956.     #v0=(Conflicted);v1=(Conflicted);v2=(Conflicted);
  1957.     return-void
  1958.  
  1959.     .line 585
  1960.     .restart local v0       #auth1Message:Lcom/blizzard/wow/net/message/Request;
  1961.     .restart local v1       #success:Z
  1962.     :cond_2
  1963.     #v0=(Reference);v1=(Boolean);v2=(Reference);
  1964.     sget-object v2, Lcom/blizzard/wow/net/session/Session;->CONN_OPEN_ERROR:Lcom/blizzard/wow/net/session/Session$Error;
  1965.  
  1966.     invoke-virtual {p0, v2}, Lcom/blizzard/wow/net/session/Session;->disconnect(Lcom/blizzard/wow/net/session/Session$Error;)V
  1967.  
  1968.     goto :goto_0
  1969. .end method
  1970.  
  1971. .method private sendHardLogin2Request(Ljava/lang/String;)Z
  1972.     .locals 13
  1973.     .parameter "authenticatorToken"
  1974.  
  1975.     .prologue
  1976.     .line 868
  1977.     const/4 v1, 0x0
  1978.  
  1979.     .line 869
  1980.     .local v1, callback:Lcom/blizzard/wow/net/session/Session$HardLoginCallback;
  1981.     #v1=(Null);
  1982.     iget-object v10, p0, Lcom/blizzard/wow/net/session/Session;->hardLoginCallbackRef:Ljava/lang/ref/Reference;
  1983.  
  1984.     #v10=(Reference);
  1985.     if-eqz v10, :cond_0
  1986.  
  1987.     .line 870
  1988.     iget-object v10, p0, Lcom/blizzard/wow/net/session/Session;->hardLoginCallbackRef:Ljava/lang/ref/Reference;
  1989.  
  1990.     invoke-virtual {v10}, Ljava/lang/ref/Reference;->get()Ljava/lang/Object;
  1991.  
  1992.     move-result-object v1
  1993.  
  1994.     .end local v1           #callback:Lcom/blizzard/wow/net/session/Session$HardLoginCallback;
  1995.     #v1=(Reference);
  1996.     check-cast v1, Lcom/blizzard/wow/net/session/Session$HardLoginCallback;
  1997.  
  1998.     .line 872
  1999.     .restart local v1       #callback:Lcom/blizzard/wow/net/session/Session$HardLoginCallback;
  2000.     :cond_0
  2001.     if-nez v1, :cond_1
  2002.  
  2003.     .line 873
  2004.     invoke-direct {p0}, Lcom/blizzard/wow/net/session/Session;->hardLoginCleanup()V
  2005.  
  2006.     .line 874
  2007.     const/4 v10, 0x0
  2008.  
  2009.     .line 925
  2010.     :goto_0
  2011.     #v0=(Conflicted);v2=(Conflicted);v3=(Conflicted);v4=(Conflicted);v5=(Conflicted);v6=(Conflicted);v7=(Conflicted);v8=(Conflicted);v9=(Conflicted);v10=(Boolean);v11=(Conflicted);v12=(Conflicted);
  2012.     return v10
  2013.  
  2014.     .line 877
  2015.     :cond_1
  2016.     #v0=(Uninit);v2=(Uninit);v3=(Uninit);v4=(Uninit);v5=(Uninit);v6=(Uninit);v7=(Uninit);v8=(Uninit);v9=(Uninit);v10=(Reference);v11=(Uninit);v12=(Uninit);
  2017.     iget-object v10, p0, Lcom/blizzard/wow/net/session/Session;->state:Lcom/blizzard/util/State;
  2018.  
  2019.     const v11, 0x4000001
  2020.  
  2021.     #v11=(Integer);
  2022.     const v12, 0x4000003
  2023.  
  2024.     #v12=(Integer);
  2025.     invoke-virtual {v10, v11, v12}, Lcom/blizzard/util/State;->compareAndSet(II)Z
  2026.  
  2027.     move-result v10
  2028.  
  2029.     #v10=(Boolean);
  2030.     if-nez v10, :cond_2
  2031.  
  2032.     .line 878
  2033.     iget-object v10, p0, Lcom/blizzard/wow/net/session/Session;->state:Lcom/blizzard/util/State;
  2034.  
  2035.     #v10=(Reference);
  2036.     const v11, 0x4000002
  2037.  
  2038.     .line 879
  2039.     const v12, 0x4000003
  2040.  
  2041.     .line 878
  2042.     invoke-virtual {v10, v11, v12}, Lcom/blizzard/util/State;->compareAndSet(II)Z
  2043.  
  2044.     move-result v10
  2045.  
  2046.     #v10=(Boolean);
  2047.     if-eqz v10, :cond_6
  2048.  
  2049.     .line 880
  2050.     :cond_2
  2051.     new-instance v4, Lcom/blizzard/wow/net/message/Request;
  2052.  
  2053.     .line 881
  2054.     #v4=(UninitRef);
  2055.     const-string v10, "/hardLogin2"
  2056.  
  2057.     .line 880
  2058.     #v10=(Reference);
  2059.     invoke-direct {v4, v10}, Lcom/blizzard/wow/net/message/Request;-><init>(Ljava/lang/String;)V
  2060.  
  2061.     .line 882
  2062.     .local v4, hardLogin2Message:Lcom/blizzard/wow/net/message/Request;
  2063.     #v4=(Reference);
  2064.     iget-object v10, v4, Lcom/blizzard/wow/net/message/Request;->body:Ljava/util/HashMap;
  2065.  
  2066.     const-string v11, "clientProof"
  2067.  
  2068.     #v11=(Reference);
  2069.     iget-object v12, p0, Lcom/blizzard/wow/net/session/Session;->hardLoginClientProof:[B
  2070.  
  2071.     #v12=(Reference);
  2072.     invoke-virtual {v10, v11, v12}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
  2073.  
  2074.     .line 883
  2075.     if-eqz p1, :cond_3
  2076.  
  2077.     .line 886
  2078.     :try_start_0
  2079.     iget-object v10, p0, Lcom/blizzard/wow/net/session/Session;->srp:Lcom/blizzard/security/srp/client/ClientSRP;
  2080.  
  2081.     invoke-virtual {v10}, Lcom/blizzard/security/srp/client/ClientSRP;->getDigest()Ljava/security/MessageDigest;
  2082.  
  2083.     move-result-object v2
  2084.  
  2085.     .line 888
  2086.     .local v2, digest:Ljava/security/MessageDigest;
  2087.     #v2=(Reference);
  2088.     const-string v10, "UTF-8"
  2089.  
  2090.     invoke-virtual {p1, v10}, Ljava/lang/String;->getBytes(Ljava/lang/String;)[B
  2091.  
  2092.     move-result-object v0
  2093.  
  2094.     .line 892
  2095.     .local v0, authenticatorBytes:[B
  2096.     #v0=(Reference);
  2097.     iget-byte v10, p0, Lcom/blizzard/wow/net/session/Session;->counter:B
  2098.  
  2099.     #v10=(Byte);
  2100.     add-int/lit8 v11, v10, 0x1
  2101.  
  2102.     #v11=(Integer);
  2103.     int-to-byte v11, v11
  2104.  
  2105.     #v11=(Byte);
  2106.     iput-byte v11, p0, Lcom/blizzard/wow/net/session/Session;->counter:B
  2107.  
  2108.     invoke-virtual {v2, v10}, Ljava/security/MessageDigest;->update(B)V
  2109.  
  2110.     .line 893
  2111.     iget-object v10, p0, Lcom/blizzard/wow/net/session/Session;->account:Lcom/blizzard/wow/user/Account;
  2112.  
  2113.     #v10=(Reference);
  2114.     invoke-virtual {v10}, Lcom/blizzard/wow/user/Account;->getSessionKey()[B
  2115.  
  2116.     move-result-object v10
  2117.  
  2118.     invoke-virtual {v2, v10}, Ljava/security/MessageDigest;->update([B)V
  2119.  
  2120.     .line 894
  2121.     invoke-virtual {v2}, Ljava/security/MessageDigest;->digest()[B
  2122.  
  2123.     move-result-object v8
  2124.  
  2125.     .line 895
  2126.     .local v8, xorData:[B
  2127.     #v8=(Reference);
  2128.     array-length v9, v8
  2129.  
  2130.     .line 897
  2131.     .local v9, xorDataSize:I
  2132.     #v9=(Integer);
  2133.     const/4 v5, 0x0
  2134.  
  2135.     .local v5, i:I
  2136.     #v5=(Null);
  2137.     array-length v6, v0
  2138.  
  2139.     .local v6, size:I
  2140.     :goto_1
  2141.     #v5=(Integer);v6=(Integer);v10=(Conflicted);
  2142.     if-lt v5, v6, :cond_4
  2143.  
  2144.     .line 901
  2145.     iget-object v10, v4, Lcom/blizzard/wow/net/message/Request;->body:Ljava/util/HashMap;
  2146.  
  2147.     #v10=(Reference);
  2148.     const-string v11, "authenticatorProof"
  2149.  
  2150.     #v11=(Reference);
  2151.     invoke-virtual {v10, v11, v0}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
  2152.     :try_end_0
  2153.     .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0
  2154.  
  2155.     .line 910
  2156.     .end local v0           #authenticatorBytes:[B
  2157.     .end local v2           #digest:Ljava/security/MessageDigest;
  2158.     .end local v5           #i:I
  2159.     .end local v6           #size:I
  2160.     .end local v8           #xorData:[B
  2161.     .end local v9           #xorDataSize:I
  2162.     :cond_3
  2163.     #v0=(Conflicted);v2=(Conflicted);v5=(Conflicted);v6=(Conflicted);v8=(Conflicted);v9=(Conflicted);
  2164.     invoke-virtual {p0, v4}, Lcom/blizzard/wow/net/session/Session;->sendRequest(Lcom/blizzard/wow/net/message/Request;)Z
  2165.  
  2166.     move-result v7
  2167.  
  2168.     .line 911
  2169.     .local v7, success:Z
  2170.     #v7=(Boolean);
  2171.     if-eqz v7, :cond_5
  2172.  
  2173.     .line 912
  2174.     iget v10, v4, Lcom/blizzard/wow/net/message/Request;->id:I
  2175.  
  2176.     #v10=(Integer);
  2177.     iput v10, p0, Lcom/blizzard/wow/net/session/Session;->loginMsgId:I
  2178.  
  2179.     .line 914
  2180.     const/4 v10, 0x1
  2181.  
  2182.     #v10=(One);
  2183.     goto :goto_0
  2184.  
  2185.     .line 898
  2186.     .end local v7           #success:Z
  2187.     .restart local v0       #authenticatorBytes:[B
  2188.     .restart local v2       #digest:Ljava/security/MessageDigest;
  2189.     .restart local v5       #i:I
  2190.     .restart local v6       #size:I
  2191.     .restart local v8       #xorData:[B
  2192.     .restart local v9       #xorDataSize:I
  2193.     :cond_4
  2194.     :try_start_1
  2195.     #v0=(Reference);v2=(Reference);v5=(Integer);v6=(Integer);v7=(Uninit);v8=(Reference);v9=(Integer);v10=(Conflicted);v11=(Byte);
  2196.     aget-byte v10, v0, v5
  2197.  
  2198.     #v10=(Byte);
  2199.     rem-int v11, v5, v9
  2200.  
  2201.     #v11=(Integer);
  2202.     aget-byte v11, v8, v11
  2203.  
  2204.     #v11=(Byte);
  2205.     xor-int/2addr v10, v11
  2206.  
  2207.     #v10=(Integer);
  2208.     int-to-byte v10, v10
  2209.  
  2210.     #v10=(Byte);
  2211.     aput-byte v10, v0, v5
  2212.     :try_end_1
  2213.     .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_0
  2214.  
  2215.     .line 897
  2216.     add-int/lit8 v5, v5, 0x1
  2217.  
  2218.     goto :goto_1
  2219.  
  2220.     .line 903
  2221.     .end local v0           #authenticatorBytes:[B
  2222.     .end local v2           #digest:Ljava/security/MessageDigest;
  2223.     .end local v5           #i:I
  2224.     .end local v6           #size:I
  2225.     .end local v8           #xorData:[B
  2226.     .end local v9           #xorDataSize:I
  2227.     :catch_0
  2228.     #v0=(Conflicted);v2=(Conflicted);v5=(Conflicted);v6=(Conflicted);v8=(Conflicted);v9=(Conflicted);v10=(Conflicted);v11=(Conflicted);
  2229.     move-exception v3
  2230.  
  2231.     .line 904
  2232.     .local v3, e:Ljava/lang/Exception;
  2233.     #v3=(Reference);
  2234.     sget-object v10, Lcom/blizzard/wow/net/session/Session;->TAG:Ljava/lang/String;
  2235.  
  2236.     #v10=(Reference);
  2237.     invoke-static {v10, v3}, Lcom/blizzard/wow/data/Util;->logStackTrace(Ljava/lang/String;Ljava/lang/Throwable;)V
  2238.  
  2239.     .line 905
  2240.     const/4 v10, 0x0
  2241.  
  2242.     #v10=(Null);
  2243.     invoke-interface {v1, v10}, Lcom/blizzard/wow/net/session/Session$HardLoginCallback;->hardLoginFailed(Lcom/blizzard/wow/net/message/Response;)V
  2244.  
  2245.     .line 906
  2246.     invoke-direct {p0}, Lcom/blizzard/wow/net/session/Session;->hardLoginCleanup()V
  2247.  
  2248.     .line 907
  2249.     const/4 v10, 0x0
  2250.  
  2251.     goto/16 :goto_0
  2252.  
  2253.     .line 918
  2254.     .end local v3           #e:Ljava/lang/Exception;
  2255.     .restart local v7       #success:Z
  2256.     :cond_5
  2257.     #v3=(Uninit);v7=(Boolean);v10=(Reference);v11=(Reference);
  2258.     const/4 v10, 0x0
  2259.  
  2260.     #v10=(Null);
  2261.     invoke-interface {v1, v10}, Lcom/blizzard/wow/net/session/Session$HardLoginCallback;->hardLoginFailed(Lcom/blizzard/wow/net/message/Response;)V
  2262.  
  2263.     .line 919
  2264.     invoke-direct {p0}, Lcom/blizzard/wow/net/session/Session;->hardLoginCleanup()V
  2265.  
  2266.     .line 921
  2267.     const/4 v10, 0x0
  2268.  
  2269.     goto/16 :goto_0
  2270.  
  2271.     .line 925
  2272.     .end local v4           #hardLogin2Message:Lcom/blizzard/wow/net/message/Request;
  2273.     .end local v7           #success:Z
  2274.     :cond_6
  2275.     #v0=(Uninit);v2=(Uninit);v4=(Uninit);v5=(Uninit);v6=(Uninit);v7=(Uninit);v8=(Uninit);v9=(Uninit);v10=(Boolean);v11=(Integer);v12=(Integer);
  2276.     const/4 v10, 0x0
  2277.  
  2278.     #v10=(Null);
  2279.     goto/16 :goto_0
  2280. .end method
  2281.  
  2282. .method private final sendReconnect1()V
  2283.     .locals 6
  2284.  
  2285.     .prologue
  2286.     .line 655
  2287.     iget-object v3, p0, Lcom/blizzard/wow/net/session/Session;->state:Lcom/blizzard/util/State;
  2288.  
  2289.     #v3=(Reference);
  2290.     const v4, 0x2000002
  2291.  
  2292.     .line 656
  2293.     #v4=(Integer);
  2294.     const v5, 0x2000006
  2295.  
  2296.     .line 655
  2297.     #v5=(Integer);
  2298.     invoke-virtual {v3, v4, v5}, Lcom/blizzard/util/State;->compareAndSet(II)Z
  2299.  
  2300.     move-result v3
  2301.  
  2302.     #v3=(Boolean);
  2303.     if-eqz v3, :cond_0
  2304.  
  2305.     .line 658
  2306.     new-instance v1, Ljava/security/SecureRandom;
  2307.  
  2308.     #v1=(UninitRef);
  2309.     invoke-direct {v1}, Ljava/security/SecureRandom;-><init>()V
  2310.  
  2311.     .line 659
  2312.     .local v1, srand:Ljava/security/SecureRandom;
  2313.     #v1=(Reference);
  2314.     const/16 v3, 0x20
  2315.  
  2316.     #v3=(PosByte);
  2317.     new-array v3, v3, [B
  2318.  
  2319.     #v3=(Reference);
  2320.     iput-object v3, p0, Lcom/blizzard/wow/net/session/Session;->clientSalt:[B
  2321.  
  2322.     .line 660
  2323.     iget-object v3, p0, Lcom/blizzard/wow/net/session/Session;->clientSalt:[B
  2324.  
  2325.     invoke-virtual {v1, v3}, Ljava/security/SecureRandom;->nextBytes([B)V
  2326.  
  2327.     .line 664
  2328.     const-string v3, "/reconnect1"
  2329.  
  2330.     const/4 v4, 0x1
  2331.  
  2332.     .line 663
  2333.     #v4=(One);
  2334.     invoke-virtual {p0, v3, v4}, Lcom/blizzard/wow/net/session/Session;->loginMessage(Ljava/lang/String;Z)Lcom/blizzard/wow/net/message/Request;
  2335.  
  2336.     move-result-object v0
  2337.  
  2338.     .line 665
  2339.     .local v0, reconn1Message:Lcom/blizzard/wow/net/message/Request;
  2340.     #v0=(Reference);
  2341.     iget-object v3, v0, Lcom/blizzard/wow/net/message/Request;->body:Ljava/util/HashMap;
  2342.  
  2343.     const-string v4, "clientSalt"
  2344.  
  2345.     #v4=(Reference);
  2346.     iget-object v5, p0, Lcom/blizzard/wow/net/session/Session;->clientSalt:[B
  2347.  
  2348.     #v5=(Reference);
  2349.     invoke-virtual {v3, v4, v5}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
  2350.  
  2351.     .line 666
  2352.     iget-object v3, v0, Lcom/blizzard/wow/net/message/Request;->body:Ljava/util/HashMap;
  2353.  
  2354.     const-string v4, "sessionCode"
  2355.  
  2356.     iget-object v5, p0, Lcom/blizzard/wow/net/session/Session;->account:Lcom/blizzard/wow/user/Account;
  2357.  
  2358.     invoke-virtual {v5}, Lcom/blizzard/wow/user/Account;->getSessionCode()Ljava/lang/String;
  2359.  
  2360.     move-result-object v5
  2361.  
  2362.     invoke-virtual {v3, v4, v5}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
  2363.  
  2364.     .line 668
  2365.     invoke-virtual {p0, v0}, Lcom/blizzard/wow/net/session/Session;->sendRequest(Lcom/blizzard/wow/net/message/Request;)Z
  2366.  
  2367.     move-result v2
  2368.  
  2369.     .line 669
  2370.     .local v2, success:Z
  2371.     #v2=(Boolean);
  2372.     if-eqz v2, :cond_1
  2373.  
  2374.     .line 670
  2375.     iget v3, v0, Lcom/blizzard/wow/net/message/Request;->id:I
  2376.  
  2377.     #v3=(Integer);
  2378.     iput v3, p0, Lcom/blizzard/wow/net/session/Session;->loginMsgId:I
  2379.  
  2380.     .line 677
  2381.     .end local v0           #reconn1Message:Lcom/blizzard/wow/net/message/Request;
  2382.     .end local v1           #srand:Ljava/security/SecureRandom;
  2383.     .end local v2           #success:Z
  2384.     :cond_0
  2385.     :goto_0
  2386.     #v0=(Conflicted);v1=(Conflicted);v2=(Conflicted);v3=(Conflicted);v4=(Conflicted);v5=(Conflicted);
  2387.     return-void
  2388.  
  2389.     .line 672
  2390.     .restart local v0       #reconn1Message:Lcom/blizzard/wow/net/message/Request;
  2391.     .restart local v1       #srand:Ljava/security/SecureRandom;
  2392.     .restart local v2       #success:Z
  2393.     :cond_1
  2394.     #v0=(Reference);v1=(Reference);v2=(Boolean);v3=(Reference);v4=(Reference);v5=(Reference);
  2395.     sget-object v3, Lcom/blizzard/wow/net/session/Session;->CONN_OPEN_ERROR:Lcom/blizzard/wow/net/session/Session$Error;
  2396.  
  2397.     invoke-virtual {p0, v3}, Lcom/blizzard/wow/net/session/Session;->disconnect(Lcom/blizzard/wow/net/session/Session$Error;)V
  2398.  
  2399.     goto :goto_0
  2400. .end method
  2401.  
  2402. .method private startTick()V
  2403.     .locals 4
  2404.  
  2405.     .prologue
  2406.     .line 172
  2407.     iget-object v0, p0, Lcom/blizzard/wow/net/session/Session;->tickTimerTask:Ljava/util/TimerTask;
  2408.  
  2409.     #v0=(Reference);
  2410.     if-nez v0, :cond_0
  2411.  
  2412.     .line 173
  2413.     new-instance v0, Lcom/blizzard/wow/net/session/Session$TickTimerTask;
  2414.  
  2415.     #v0=(UninitRef);
  2416.     const/4 v1, 0x0
  2417.  
  2418.     #v1=(Null);
  2419.     invoke-direct {v0, p0, v1}, Lcom/blizzard/wow/net/session/Session$TickTimerTask;-><init>(Lcom/blizzard/wow/net/session/Session;Lcom/blizzard/wow/net/session/Session$TickTimerTask;)V
  2420.  
  2421.     #v0=(Reference);
  2422.     iput-object v0, p0, Lcom/blizzard/wow/net/session/Session;->tickTimerTask:Ljava/util/TimerTask;
  2423.  
  2424.     .line 174
  2425.     invoke-virtual {p0}, Lcom/blizzard/wow/net/session/Session;->getHandler()Landroid/os/Handler;
  2426.  
  2427.     move-result-object v0
  2428.  
  2429.     iget-object v1, p0, Lcom/blizzard/wow/net/session/Session;->tickTimerTask:Ljava/util/TimerTask;
  2430.  
  2431.     #v1=(Reference);
  2432.     const-wide/16 v2, 0x1388
  2433.  
  2434.     #v2=(LongLo);v3=(LongHi);
  2435.     invoke-virtual {v0, v1, v2, v3}, Landroid/os/Handler;->postDelayed(Ljava/lang/Runnable;J)Z
  2436.  
  2437.     .line 176
  2438.     :cond_0
  2439.     #v1=(Conflicted);v2=(Conflicted);v3=(Conflicted);
  2440.     return-void
  2441. .end method
  2442.  
  2443. .method private stopTick()V
  2444.     .locals 2
  2445.  
  2446.     .prologue
  2447.     .line 179
  2448.     iget-object v0, p0, Lcom/blizzard/wow/net/session/Session;->tickTimerTask:Ljava/util/TimerTask;
  2449.  
  2450.     #v0=(Reference);
  2451.     if-eqz v0, :cond_0
  2452.  
  2453.     .line 180
  2454.     invoke-virtual {p0}, Lcom/blizzard/wow/net/session/Session;->getHandler()Landroid/os/Handler;
  2455.  
  2456.     move-result-object v0
  2457.  
  2458.     iget-object v1, p0, Lcom/blizzard/wow/net/session/Session;->tickTimerTask:Ljava/util/TimerTask;
  2459.  
  2460.     #v1=(Reference);
  2461.     invoke-virtual {v0, v1}, Landroid/os/Handler;->removeCallbacks(Ljava/lang/Runnable;)V
  2462.  
  2463.     .line 181
  2464.     const/4 v0, 0x0
  2465.  
  2466.     #v0=(Null);
  2467.     iput-object v0, p0, Lcom/blizzard/wow/net/session/Session;->tickTimerTask:Ljava/util/TimerTask;
  2468.  
  2469.     .line 183
  2470.     :cond_0
  2471.     #v0=(Reference);v1=(Conflicted);
  2472.     return-void
  2473. .end method
  2474.  
  2475. .method static utilByteArrayCmp([B[B)Z
  2476.     .locals 6
  2477.     .parameter "a"
  2478.     .parameter "b"
  2479.  
  2480.     .prologue
  2481.     const/4 v3, 0x0
  2482.  
  2483.     .line 1062
  2484.     #v3=(Null);
  2485.     array-length v1, p0
  2486.  
  2487.     .line 1063
  2488.     .local v1, size_a:I
  2489.     #v1=(Integer);
  2490.     array-length v2, p1
  2491.  
  2492.     .line 1064
  2493.     .local v2, size_b:I
  2494.     #v2=(Integer);
  2495.     if-eq v1, v2, :cond_1
  2496.  
  2497.     .line 1072
  2498.     :cond_0
  2499.     :goto_0
  2500.     #v0=(Conflicted);v3=(Boolean);v4=(Conflicted);v5=(Conflicted);
  2501.     return v3
  2502.  
  2503.     .line 1067
  2504.     :cond_1
  2505.     #v0=(Uninit);v3=(Null);v4=(Uninit);v5=(Uninit);
  2506.     const/4 v0, 0x0
  2507.  
  2508.     .local v0, i:I
  2509.     :goto_1
  2510.     #v0=(Integer);v4=(Conflicted);v5=(Conflicted);
  2511.     if-lt v0, v1, :cond_2
  2512.  
  2513.     .line 1072
  2514.     const/4 v3, 0x1
  2515.  
  2516.     #v3=(One);
  2517.     goto :goto_0
  2518.  
  2519.     .line 1068
  2520.     :cond_2
  2521.     #v3=(Null);
  2522.     aget-byte v4, p0, v0
  2523.  
  2524.     #v4=(Byte);
  2525.     aget-byte v5, p1, v0
  2526.  
  2527.     #v5=(Byte);
  2528.     if-ne v4, v5, :cond_0
  2529.  
  2530.     .line 1067
  2531.     add-int/lit8 v0, v0, 0x1
  2532.  
  2533.     goto :goto_1
  2534. .end method
  2535.  
  2536. .method private validateStage1Response(Lcom/blizzard/wow/net/message/Response;Ljava/lang/String;)[B
  2537.     .locals 15
  2538.     .parameter "response"
  2539.     .parameter "password"
  2540.  
  2541.     .prologue
  2542.     .line 983
  2543.     move-object/from16 v0, p1
  2544.  
  2545.     #v0=(Reference);
  2546.     iget-object v1, v0, Lcom/blizzard/wow/net/message/Response;->body:Ljava/util/HashMap;
  2547.  
  2548.     #v1=(Reference);
  2549.     const-string v2, "B"
  2550.  
  2551.     #v2=(Reference);
  2552.     invoke-virtual {v1, v2}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
  2553.  
  2554.     move-result-object v6
  2555.  
  2556.     #v6=(Reference);
  2557.     check-cast v6, [B
  2558.  
  2559.     .line 984
  2560.     .local v6, B:[B
  2561.     move-object/from16 v0, p1
  2562.  
  2563.     iget-object v1, v0, Lcom/blizzard/wow/net/message/Response;->body:Ljava/util/HashMap;
  2564.  
  2565.     const-string v2, "salt"
  2566.  
  2567.     invoke-virtual {v1, v2}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
  2568.  
  2569.     move-result-object v5
  2570.  
  2571.     #v5=(Reference);
  2572.     check-cast v5, [B
  2573.  
  2574.     .line 985
  2575.     .local v5, salt:[B
  2576.     new-instance v3, Ljava/lang/String;
  2577.  
  2578.     #v3=(UninitRef);
  2579.     move-object/from16 v0, p1
  2580.  
  2581.     iget-object v1, v0, Lcom/blizzard/wow/net/message/Response;->body:Ljava/util/HashMap;
  2582.  
  2583.     const-string v2, "user"
  2584.  
  2585.     invoke-virtual {v1, v2}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
  2586.  
  2587.     move-result-object v1
  2588.  
  2589.     check-cast v1, [B
  2590.  
  2591.     invoke-direct {v3, v1}, Ljava/lang/String;-><init>([B)V
  2592.  
  2593.     .line 987
  2594.     .local v3, user:Ljava/lang/String;
  2595.     #v3=(Reference);
  2596.     const/4 v13, 0x0
  2597.  
  2598.     #v13=(Null);
  2599.     check-cast v13, [B
  2600.  
  2601.     .line 989
  2602.     .local v13, clientProof:[B
  2603.     :try_start_0
  2604.     #v13=(Reference);
  2605.     const-string v1, "/authenticate1"
  2606.  
  2607.     move-object/from16 v0, p1
  2608.  
  2609.     iget-object v2, v0, Lcom/blizzard/wow/net/message/Response;->target:Ljava/lang/String;
  2610.  
  2611.     invoke-virtual {v1, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
  2612.  
  2613.     move-result v1
  2614.  
  2615.     #v1=(Boolean);
  2616.     if-eqz v1, :cond_1
  2617.  
  2618.     .line 990
  2619.     iget-object v1, p0, Lcom/blizzard/wow/net/session/Session;->account:Lcom/blizzard/wow/user/Account;
  2620.  
  2621.     #v1=(Reference);
  2622.     invoke-virtual {v1}, Lcom/blizzard/wow/user/Account;->getUserHash()Ljava/lang/String;
  2623.  
  2624.     move-result-object v4
  2625.  
  2626.     .line 991
  2627.     .local v4, userHash:Ljava/lang/String;
  2628.     #v4=(Reference);
  2629.     if-eqz v4, :cond_0
  2630.  
  2631.     .line 992
  2632.     iget-object v1, p0, Lcom/blizzard/wow/net/session/Session;->srpSession:Lcom/blizzard/security/srp/client/ClientSession;
  2633.  
  2634.     iget-object v2, p0, Lcom/blizzard/wow/net/session/Session;->srp:Lcom/blizzard/security/srp/client/ClientSRP;
  2635.  
  2636.     invoke-virtual/range {v1 .. v6}, Lcom/blizzard/security/srp/client/ClientSession;->generateProof_M1_userhash(Lcom/blizzard/security/srp/client/ClientSRP;Ljava/lang/String;Ljava/lang/String;[B[B)[B
  2637.  
  2638.     move-result-object v13
  2639.  
  2640.     .line 1004
  2641.     .end local v4           #userHash:Ljava/lang/String;
  2642.     :goto_0
  2643.     #v1=(Conflicted);v4=(Conflicted);v7=(Conflicted);v8=(Conflicted);v9=(Conflicted);v10=(Conflicted);v11=(Conflicted);v12=(Conflicted);v14=(Conflicted);
  2644.     return-object v13
  2645.  
  2646.     .line 994
  2647.     .restart local v4       #userHash:Ljava/lang/String;
  2648.     :cond_0
  2649.     #v1=(Reference);v4=(Reference);v7=(Uninit);v8=(Uninit);v9=(Uninit);v10=(Uninit);v11=(Uninit);v12=(Uninit);v14=(Uninit);
  2650.     iget-object v7, p0, Lcom/blizzard/wow/net/session/Session;->srpSession:Lcom/blizzard/security/srp/client/ClientSession;
  2651.  
  2652.     #v7=(Reference);
  2653.     iget-object v8, p0, Lcom/blizzard/wow/net/session/Session;->srp:Lcom/blizzard/security/srp/client/ClientSRP;
  2654.  
  2655.     #v8=(Reference);
  2656.     invoke-virtual {p0}, Lcom/blizzard/wow/net/session/Session;->sessionAccountPassword()Ljava/lang/String;
  2657.  
  2658.     move-result-object v10
  2659.  
  2660.     #v10=(Reference);
  2661.     move-object v9, v3
  2662.  
  2663.     #v9=(Reference);
  2664.     move-object v11, v5
  2665.  
  2666.     #v11=(Reference);
  2667.     move-object v12, v6
  2668.  
  2669.     #v12=(Reference);
  2670.     invoke-virtual/range {v7 .. v12}, Lcom/blizzard/security/srp/client/ClientSession;->generateProof_M1_password(Lcom/blizzard/security/srp/client/ClientSRP;Ljava/lang/String;Ljava/lang/String;[B[B)[B
  2671.  
  2672.     move-result-object v13
  2673.  
  2674.     goto :goto_0
  2675.  
  2676.     .line 997
  2677.     .end local v4           #userHash:Ljava/lang/String;
  2678.     :cond_1
  2679.     #v1=(Boolean);v4=(Uninit);v7=(Uninit);v8=(Uninit);v9=(Uninit);v10=(Uninit);v11=(Uninit);v12=(Uninit);
  2680.     iget-object v7, p0, Lcom/blizzard/wow/net/session/Session;->srpSession:Lcom/blizzard/security/srp/client/ClientSession;
  2681.  
  2682.     #v7=(Reference);
  2683.     iget-object v8, p0, Lcom/blizzard/wow/net/session/Session;->srp:Lcom/blizzard/security/srp/client/ClientSRP;
  2684.  
  2685.     #v8=(Reference);
  2686.     move-object/from16 v0, p2
  2687.  
  2688.     invoke-virtual {p0, v0}, Lcom/blizzard/wow/net/session/Session;->sessionAccountPassword(Ljava/lang/String;)Ljava/lang/String;
  2689.  
  2690.     move-result-object v10
  2691.  
  2692.     #v10=(Reference);
  2693.     move-object v9, v3
  2694.  
  2695.     #v9=(Reference);
  2696.     move-object v11, v5
  2697.  
  2698.     #v11=(Reference);
  2699.     move-object v12, v6
  2700.  
  2701.     #v12=(Reference);
  2702.     invoke-virtual/range {v7 .. v12}, Lcom/blizzard/security/srp/client/ClientSession;->generateProof_M1_password(Lcom/blizzard/security/srp/client/ClientSRP;Ljava/lang/String;Ljava/lang/String;[B[B)[B
  2703.     :try_end_0
  2704.     .catch Lcom/blizzard/security/srp/SrpAuthenticationFailedException; {:try_start_0 .. :try_end_0} :catch_0
  2705.  
  2706.     move-result-object v13
  2707.  
  2708.     goto :goto_0
  2709.  
  2710.     .line 999
  2711.     :catch_0
  2712.     #v1=(Conflicted);v4=(Conflicted);v7=(Conflicted);v8=(Conflicted);v9=(Conflicted);v10=(Conflicted);v11=(Conflicted);v12=(Conflicted);
  2713.     move-exception v14
  2714.  
  2715.     .line 1002
  2716.     .local v14, e:Lcom/blizzard/security/srp/SrpAuthenticationFailedException;
  2717.     #v14=(Reference);
  2718.     const/4 v13, 0x0
  2719.  
  2720.     #v13=(Null);
  2721.     check-cast v13, [B
  2722.  
  2723.     #v13=(Reference);
  2724.     goto :goto_0
  2725. .end method
  2726.  
  2727. .method private final validateStage2Response(Lcom/blizzard/wow/net/message/Response;)Z
  2728.     .locals 5
  2729.     .parameter "response"
  2730.  
  2731.     .prologue
  2732.     .line 1009
  2733.     iget-object v3, p1, Lcom/blizzard/wow/net/message/Response;->body:Ljava/util/HashMap;
  2734.  
  2735.     #v3=(Reference);
  2736.     const-string v4, "serverProof"
  2737.  
  2738.     #v4=(Reference);
  2739.     invoke-virtual {v3, v4}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
  2740.  
  2741.     move-result-object v1
  2742.  
  2743.     #v1=(Reference);
  2744.     check-cast v1, [B
  2745.  
  2746.     .line 1010
  2747.     .local v1, serverProof:[B
  2748.     const/4 v2, 0x0
  2749.  
  2750.     #v2=(Null);
  2751.     check-cast v2, [B
  2752.  
  2753.     .line 1012
  2754.     .local v2, sessionKey:[B
  2755.     :try_start_0
  2756.     #v2=(Reference);
  2757.     iget-object v3, p0, Lcom/blizzard/wow/net/session/Session;->srpSession:Lcom/blizzard/security/srp/client/ClientSession;
  2758.  
  2759.     iget-object v4, p0, Lcom/blizzard/wow/net/session/Session;->srp:Lcom/blizzard/security/srp/client/ClientSRP;
  2760.  
  2761.     invoke-virtual {v3, v4, v1}, Lcom/blizzard/security/srp/client/ClientSession;->validateServerProof(Lcom/blizzard/security/srp/client/ClientSRP;[B)[B
  2762.     :try_end_0
  2763.     .catch Lcom/blizzard/security/srp/SrpAuthenticationFailedException; {:try_start_0 .. :try_end_0} :catch_0
  2764.  
  2765.     move-result-object v2
  2766.  
  2767.     .line 1018
  2768.     iget-object v3, p0, Lcom/blizzard/wow/net/session/Session;->account:Lcom/blizzard/wow/user/Account;
  2769.  
  2770.     iget-object v4, p0, Lcom/blizzard/wow/net/session/Session;->srpSession:Lcom/blizzard/security/srp/client/ClientSession;
  2771.  
  2772.     invoke-virtual {v4}, Lcom/blizzard/security/srp/client/ClientSession;->getUserHash()Ljava/lang/String;
  2773.  
  2774.     move-result-object v4
  2775.  
  2776.     invoke-virtual {v3, v4}, Lcom/blizzard/wow/user/Account;->setUserHash(Ljava/lang/String;)V
  2777.  
  2778.     .line 1019
  2779.     iget-object v3, p0, Lcom/blizzard/wow/net/session/Session;->account:Lcom/blizzard/wow/user/Account;
  2780.  
  2781.     invoke-virtual {v3, v2}, Lcom/blizzard/wow/user/Account;->setNewSessionKey([B)V
  2782.  
  2783.     .line 1021
  2784.     const/4 v3, 0x1
  2785.  
  2786.     :goto_0
  2787.     #v0=(Conflicted);v3=(Boolean);
  2788.     return v3
  2789.  
  2790.     .line 1013
  2791.     :catch_0
  2792.     #v0=(Uninit);v3=(Reference);
  2793.     move-exception v0
  2794.  
  2795.     .line 1016
  2796.     .local v0, e:Lcom/blizzard/security/srp/SrpAuthenticationFailedException;
  2797.     #v0=(Reference);
  2798.     const/4 v3, 0x0
  2799.  
  2800.     #v3=(Null);
  2801.     goto :goto_0
  2802. .end method
  2803.  
  2804.  
  2805. # virtual methods
  2806. .method public addListener(Lcom/blizzard/wow/net/session/SessionListener;)V
  2807.     .locals 5
  2808.     .parameter "listener"
  2809.  
  2810.     .prologue
  2811.     .line 251
  2812.     iget-object v2, p0, Lcom/blizzard/wow/net/session/Session;->listeners:Ljava/util/ArrayList;
  2813.  
  2814.     #v2=(Reference);
  2815.     monitor-enter v2
  2816.  
  2817.     .line 252
  2818.     :try_start_0
  2819.     iget-object v1, p0, Lcom/blizzard/wow/net/session/Session;->listeners:Ljava/util/ArrayList;
  2820.  
  2821.     #v1=(Reference);
  2822.     invoke-virtual {v1}, Ljava/util/ArrayList;->iterator()Ljava/util/Iterator;
  2823.  
  2824.     move-result-object v1
  2825.  
  2826.     :cond_0
  2827.     #v0=(Conflicted);v3=(Conflicted);
  2828.     invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
  2829.  
  2830.     move-result v3
  2831.  
  2832.     #v3=(Boolean);
  2833.     if-nez v3, :cond_1
  2834.  
  2835.     .line 257
  2836.     iget-object v1, p0, Lcom/blizzard/wow/net/session/Session;->listeners:Ljava/util/ArrayList;
  2837.  
  2838.     new-instance v3, Ljava/lang/ref/WeakReference;
  2839.  
  2840.     #v3=(UninitRef);
  2841.     iget-object v4, p0, Lcom/blizzard/wow/net/session/Session;->listenersRefQueue:Ljava/lang/ref/ReferenceQueue;
  2842.  
  2843.     #v4=(Reference);
  2844.     invoke-direct {v3, p1, v4}, Ljava/lang/ref/WeakReference;-><init>(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V
  2845.  
  2846.     #v3=(Reference);
  2847.     invoke-virtual {v1, v3}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
  2848.  
  2849.     .line 251
  2850.     monitor-exit v2
  2851.  
  2852.     .line 259
  2853.     :goto_0
  2854.     #v4=(Conflicted);
  2855.     return-void
  2856.  
  2857.     .line 252
  2858.     :cond_1
  2859.     #v3=(Boolean);v4=(Uninit);
  2860.     invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
  2861.  
  2862.     move-result-object v0
  2863.  
  2864.     #v0=(Reference);
  2865.     check-cast v0, Ljava/lang/ref/Reference;
  2866.  
  2867.     .line 253
  2868.     .local v0, listenerRef:Ljava/lang/ref/Reference;,"Ljava/lang/ref/Reference<+Lcom/blizzard/wow/net/session/SessionListener;>;"
  2869.     invoke-virtual {v0}, Ljava/lang/ref/Reference;->get()Ljava/lang/Object;
  2870.  
  2871.     move-result-object v3
  2872.  
  2873.     #v3=(Reference);
  2874.     if-ne p1, v3, :cond_0
  2875.  
  2876.     .line 254
  2877.     monitor-exit v2
  2878.  
  2879.     goto :goto_0
  2880.  
  2881.     .line 251
  2882.     .end local v0           #listenerRef:Ljava/lang/ref/Reference;,"Ljava/lang/ref/Reference<+Lcom/blizzard/wow/net/session/SessionListener;>;"
  2883.     :catchall_0
  2884.     #v0=(Conflicted);v1=(Conflicted);v3=(Conflicted);v4=(Conflicted);
  2885.     move-exception v1
  2886.  
  2887.     #v1=(Reference);
  2888.     monitor-exit v2
  2889.     :try_end_0
  2890.     .catchall {:try_start_0 .. :try_end_0} :catchall_0
  2891.  
  2892.     throw v1
  2893. .end method
  2894.  
  2895. .method public declared-synchronized cleanup()V
  2896.     .locals 2
  2897.  
  2898.     .prologue
  2899.     .line 234
  2900.     monitor-enter p0
  2901.  
  2902.     :try_start_0
  2903.     iget-object v0, p0, Lcom/blizzard/wow/net/session/Session;->state:Lcom/blizzard/util/State;
  2904.  
  2905.     #v0=(Reference);
  2906.     const/high16 v1, 0x100
  2907.  
  2908.     #v1=(Integer);
  2909.     invoke-virtual {v0, v1}, Lcom/blizzard/util/State;->set(I)Z
  2910.  
  2911.     .line 236
  2912.     invoke-virtual {p0}, Lcom/blizzard/wow/net/session/Session;->disconnect()V
  2913.  
  2914.     .line 238
  2915.     const/4 v0, 0x0
  2916.  
  2917.     #v0=(Null);
  2918.     iput-object v0, p0, Lcom/blizzard/wow/net/session/Session;->account:Lcom/blizzard/wow/user/Account;
  2919.  
  2920.     .line 239
  2921.     const/4 v0, 0x0
  2922.  
  2923.     iput-object v0, p0, Lcom/blizzard/wow/net/session/Session;->srp:Lcom/blizzard/security/srp/client/ClientSRP;
  2924.  
  2925.     .line 240
  2926.     const/4 v0, 0x0
  2927.  
  2928.     iput-object v0, p0, Lcom/blizzard/wow/net/session/Session;->srpSession:Lcom/blizzard/security/srp/client/ClientSession;
  2929.  
  2930.     .line 241
  2931.     const/4 v0, 0x0
  2932.  
  2933.     iput-object v0, p0, Lcom/blizzard/wow/net/session/Session;->clientSalt:[B
  2934.     :try_end_0
  2935.     .catchall {:try_start_0 .. :try_end_0} :catchall_0
  2936.  
  2937.     .line 242
  2938.     monitor-exit p0
  2939.  
  2940.     return-void
  2941.  
  2942.     .line 234
  2943.     :catchall_0
  2944.     #v0=(Conflicted);v1=(Conflicted);
  2945.     move-exception v0
  2946.  
  2947.     #v0=(Reference);
  2948.     monitor-exit p0
  2949.  
  2950.     throw v0
  2951. .end method
  2952.  
  2953. .method public declared-synchronized connect(Ljava/lang/String;ILcom/blizzard/wow/user/Account;)V
  2954.     .locals 7
  2955.     .parameter "serverHost"
  2956.     .parameter "serverPort"
  2957.     .parameter "account"
  2958.  
  2959.     .prologue
  2960.     const/4 v2, 0x0
  2961.  
  2962.     .line 282
  2963.     #v2=(Null);
  2964.     monitor-enter p0
  2965.  
  2966.     if-nez p3, :cond_0
  2967.  
  2968.     .line 283
  2969.     :try_start_0
  2970.     new-instance v3, Ljava/lang/RuntimeException;
  2971.  
  2972.     #v3=(UninitRef);
  2973.     const-string v4, "Account passed to Session.connect() is null."
  2974.  
  2975.     #v4=(Reference);
  2976.     invoke-direct {v3, v4}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V
  2977.  
  2978.     #v3=(Reference);
  2979.     throw v3
  2980.     :try_end_0
  2981.     .catchall {:try_start_0 .. :try_end_0} :catchall_0
  2982.  
  2983.     .line 282
  2984.     :catchall_0
  2985.     #v0=(Conflicted);v1=(Conflicted);v2=(Integer);v3=(Conflicted);v4=(Conflicted);v5=(Conflicted);v6=(Conflicted);
  2986.     move-exception v3
  2987.  
  2988.     #v3=(Reference);
  2989.     monitor-exit p0
  2990.  
  2991.     throw v3
  2992.  
  2993.     .line 285
  2994.     :cond_0
  2995.     :try_start_1
  2996.     #v0=(Uninit);v1=(Uninit);v2=(Null);v3=(Uninit);v4=(Uninit);v5=(Uninit);v6=(Uninit);
  2997.     iget-object v3, p0, Lcom/blizzard/wow/net/session/Session;->account:Lcom/blizzard/wow/user/Account;
  2998.  
  2999.     #v3=(Reference);
  3000.     if-eqz v3, :cond_2
  3001.  
  3002.     .line 286
  3003.     iget-object v3, p0, Lcom/blizzard/wow/net/session/Session;->account:Lcom/blizzard/wow/user/Account;
  3004.  
  3005.     invoke-virtual {v3, p3}, Lcom/blizzard/wow/user/Account;->equals(Ljava/lang/Object;)Z
  3006.  
  3007.     move-result v3
  3008.  
  3009.     #v3=(Boolean);
  3010.     if-nez v3, :cond_2
  3011.  
  3012.     .line 288
  3013.     iget-object v3, p0, Lcom/blizzard/wow/net/session/Session;->conn:Lcom/blizzard/wow/net/protocol/ProtocolConnection;
  3014.  
  3015.     #v3=(Reference);
  3016.     if-eqz v3, :cond_1
  3017.  
  3018.     .line 289
  3019.     const/4 v3, 0x0
  3020.  
  3021.     #v3=(Null);
  3022.     invoke-virtual {p0, v3}, Lcom/blizzard/wow/net/session/Session;->disconnect(Lcom/blizzard/wow/net/session/Session$Error;)V
  3023.  
  3024.     .line 291
  3025.     :cond_1
  3026.     #v3=(Reference);
  3027.     const/4 v3, 0x0
  3028.  
  3029.     #v3=(Null);
  3030.     iput-object v3, p0, Lcom/blizzard/wow/net/session/Session;->srp:Lcom/blizzard/security/srp/client/ClientSRP;
  3031.  
  3032.     .line 292
  3033.     const/4 v3, 0x0
  3034.  
  3035.     iput-object v3, p0, Lcom/blizzard/wow/net/session/Session;->srpSession:Lcom/blizzard/security/srp/client/ClientSession;
  3036.  
  3037.     .line 294
  3038.     :cond_2
  3039.     #v3=(Conflicted);
  3040.     iget-object v3, p0, Lcom/blizzard/wow/net/session/Session;->conn:Lcom/blizzard/wow/net/protocol/ProtocolConnection;
  3041.  
  3042.     #v3=(Reference);
  3043.     if-eqz v3, :cond_3
  3044.  
  3045.     .line 295
  3046.     iget-object v3, p0, Lcom/blizzard/wow/net/session/Session;->conn:Lcom/blizzard/wow/net/protocol/ProtocolConnection;
  3047.  
  3048.     invoke-interface {v3}, Lcom/blizzard/wow/net/protocol/ProtocolConnection;->isClosed()Z
  3049.  
  3050.     move-result v3
  3051.  
  3052.     #v3=(Boolean);
  3053.     if-eqz v3, :cond_5
  3054.  
  3055.     .line 297
  3056.     :cond_3
  3057.     #v3=(Conflicted);
  3058.     iget-object v3, p0, Lcom/blizzard/wow/net/session/Session;->state:Lcom/blizzard/util/State;
  3059.  
  3060.     #v3=(Reference);
  3061.     const/high16 v4, 0x100
  3062.  
  3063.     #v4=(Integer);
  3064.     const/high16 v5, 0x200
  3065.  
  3066.     #v5=(Integer);
  3067.     invoke-virtual {v3, v4, v5}, Lcom/blizzard/util/State;->compareAndSet(II)Z
  3068.  
  3069.     move-result v3
  3070.  
  3071.     #v3=(Boolean);
  3072.     if-eqz v3, :cond_5
  3073.  
  3074.     .line 300
  3075.     iput-object p3, p0, Lcom/blizzard/wow/net/session/Session;->account:Lcom/blizzard/wow/user/Account;
  3076.  
  3077.     .line 301
  3078.     sget-object v3, Lcom/blizzard/wow/net/session/Session;->CONN_OPEN_ERROR:Lcom/blizzard/wow/net/session/Session$Error;
  3079.  
  3080.     #v3=(Reference);
  3081.     iput-object v3, p0, Lcom/blizzard/wow/net/session/Session;->lastError:Lcom/blizzard/wow/net/session/Session$Error;
  3082.  
  3083.     .line 304
  3084.     const/4 v0, 0x0
  3085.  
  3086.     .line 305
  3087.     .local v0, connOpening:Z
  3088.     #v0=(Null);
  3089.     iget-boolean v3, p0, Lcom/blizzard/wow/net/session/Session;->useNioProtocolConnection:Z
  3090.  
  3091.     #v3=(Boolean);
  3092.     if-eqz v3, :cond_4
  3093.  
  3094.     const/4 v2, 0x1
  3095.  
  3096.     .local v2, i:I
  3097.     :cond_4
  3098.     :goto_0
  3099.     #v1=(Conflicted);v2=(Integer);v4=(Conflicted);
  3100.     if-gez v2, :cond_6
  3101.  
  3102.     .line 322
  3103.     :goto_1
  3104.     #v0=(Boolean);v3=(Conflicted);
  3105.     if-eqz v0, :cond_8
  3106.  
  3107.     .line 324
  3108.     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
  3109.  
  3110.     move-result-wide v3
  3111.  
  3112.     .line 325
  3113.     #v3=(LongLo);v4=(LongHi);
  3114.     const-wide/16 v5, 0x7530
  3115.  
  3116.     #v5=(LongLo);v6=(LongHi);
  3117.     add-long/2addr v3, v5
  3118.  
  3119.     .line 324
  3120.     iput-wide v3, p0, Lcom/blizzard/wow/net/session/Session;->connectionTimeout:J
  3121.  
  3122.     .line 326
  3123.     invoke-direct {p0}, Lcom/blizzard/wow/net/session/Session;->startTick()V
  3124.     :try_end_1
  3125.     .catchall {:try_start_1 .. :try_end_1} :catchall_0
  3126.  
  3127.     .line 333
  3128.     .end local v0           #connOpening:Z
  3129.     .end local v2           #i:I
  3130.     :cond_5
  3131.     :goto_2
  3132.     #v0=(Conflicted);v3=(Conflicted);v4=(Conflicted);v5=(Conflicted);v6=(Conflicted);
  3133.     monitor-exit p0
  3134.  
  3135.     return-void
  3136.  
  3137.     .line 306
  3138.     .restart local v0       #connOpening:Z
  3139.     .restart local v2       #i:I
  3140.     :cond_6
  3141.     :try_start_2
  3142.     #v0=(Null);v3=(Boolean);v5=(Integer);v6=(Uninit);
  3143.     invoke-direct {p0, p1, p2}, Lcom/blizzard/wow/net/session/Session;->initializeProtocolConnection(Ljava/lang/String;I)V
  3144.     :try_end_2
  3145.     .catchall {:try_start_2 .. :try_end_2} :catchall_0
  3146.  
  3147.     .line 309
  3148.     :try_start_3
  3149.     iget-object v3, p0, Lcom/blizzard/wow/net/session/Session;->conn:Lcom/blizzard/wow/net/protocol/ProtocolConnection;
  3150.  
  3151.     #v3=(Reference);
  3152.     invoke-interface {v3}, Lcom/blizzard/wow/net/protocol/ProtocolConnection;->open()Z
  3153.     :try_end_3
  3154.     .catchall {:try_start_3 .. :try_end_3} :catchall_0
  3155.     .catch Ljava/lang/Exception; {:try_start_3 .. :try_end_3} :catch_0
  3156.  
  3157.     move-result v0
  3158.  
  3159.     #v0=(Boolean);
  3160.     goto :goto_1
  3161.  
  3162.     .line 311
  3163.     :catch_0
  3164.     #v0=(Null);v3=(Conflicted);
  3165.     move-exception v1
  3166.  
  3167.     .line 312
  3168.     .local v1, e:Ljava/lang/Exception;
  3169.     :try_start_4
  3170.     #v1=(Reference);
  3171.     iget-boolean v3, p0, Lcom/blizzard/wow/net/session/Session;->useNioProtocolConnection:Z
  3172.  
  3173.     #v3=(Boolean);
  3174.     if-eqz v3, :cond_7
  3175.  
  3176.     .line 313
  3177.     sget-object v3, Lcom/blizzard/wow/app/ArmoryApplication;->appInstance:Lcom/blizzard/wow/app/ArmoryApplication;
  3178.  
  3179.     .line 314
  3180.     #v3=(Reference);
  3181.     const-string v4, "NIO open error"
  3182.  
  3183.     #v4=(Reference);
  3184.     const/4 v5, 0x0
  3185.  
  3186.     .line 313
  3187.     #v5=(Null);
  3188.     invoke-virtual {v3, v4, v5}, Lcom/blizzard/wow/app/ArmoryApplication;->analyticsTrackException(Ljava/lang/String;Z)V
  3189.  
  3190.     .line 317
  3191.     :cond_7
  3192.     #v3=(Conflicted);v4=(Conflicted);v5=(Integer);
  3193.     const/4 v3, 0x0
  3194.  
  3195.     #v3=(Null);
  3196.     iput-boolean v3, p0, Lcom/blizzard/wow/net/session/Session;->useNioProtocolConnection:Z
  3197.  
  3198.     .line 305
  3199.     add-int/lit8 v2, v2, -0x1
  3200.  
  3201.     goto :goto_0
  3202.  
  3203.     .line 329
  3204.     .end local v1           #e:Ljava/lang/Exception;
  3205.     :cond_8
  3206.     #v0=(Boolean);v1=(Conflicted);v3=(Conflicted);
  3207.     invoke-direct {p0}, Lcom/blizzard/wow/net/session/Session;->connectionCloseCleanup()V
  3208.     :try_end_4
  3209.     .catchall {:try_start_4 .. :try_end_4} :catchall_0
  3210.  
  3211.     goto :goto_2
  3212. .end method
  3213.  
  3214. .method public disconnect()V
  3215.     .locals 3
  3216.  
  3217.     .prologue
  3218.     .line 353
  3219.     iget-object v0, p0, Lcom/blizzard/wow/net/session/Session;->state:Lcom/blizzard/util/State;
  3220.  
  3221.     .line 354
  3222.     #v0=(Reference);
  3223.     const/high16 v1, 0x100
  3224.  
  3225.     #v1=(Integer);
  3226.     const v2, 0x2000001
  3227.  
  3228.     .line 353
  3229.     #v2=(Integer);
  3230.     invoke-virtual {v0, v1, v2}, Lcom/blizzard/util/State;->compareNotMaskAndSet(II)Z
  3231.  
  3232.     move-result v0
  3233.  
  3234.     #v0=(Boolean);
  3235.     if-eqz v0, :cond_0
  3236.  
  3237.     .line 355
  3238.     const/4 v0, 0x0
  3239.  
  3240.     #v0=(Null);
  3241.     iput-object v0, p0, Lcom/blizzard/wow/net/session/Session;->lastError:Lcom/blizzard/wow/net/session/Session$Error;
  3242.  
  3243.     .line 356
  3244.     iget-object v0, p0, Lcom/blizzard/wow/net/session/Session;->conn:Lcom/blizzard/wow/net/protocol/ProtocolConnection;
  3245.  
  3246.     #v0=(Reference);
  3247.     if-eqz v0, :cond_0
  3248.  
  3249.     .line 357
  3250.     iget-object v0, p0, Lcom/blizzard/wow/net/session/Session;->conn:Lcom/blizzard/wow/net/protocol/ProtocolConnection;
  3251.  
  3252.     invoke-interface {v0}, Lcom/blizzard/wow/net/protocol/ProtocolConnection;->close()V
  3253.  
  3254.     .line 360
  3255.     :cond_0
  3256.     #v0=(Conflicted);
  3257.     return-void
  3258. .end method
  3259.  
  3260. .method protected disconnect(Lcom/blizzard/wow/net/session/Session$Error;)V
  3261.     .locals 6
  3262.     .parameter "error"
  3263.  
  3264.     .prologue
  3265.     const-wide/16 v4, -0x1
  3266.  
  3267.     .line 363
  3268.     #v4=(LongLo);v5=(LongHi);
  3269.     iget-object v0, p0, Lcom/blizzard/wow/net/session/Session;->state:Lcom/blizzard/util/State;
  3270.  
  3271.     .line 364
  3272.     #v0=(Reference);
  3273.     const/high16 v1, 0x100
  3274.  
  3275.     #v1=(Integer);
  3276.     const v2, 0x2000001
  3277.  
  3278.     .line 363
  3279.     #v2=(Integer);
  3280.     invoke-virtual {v0, v1, v2}, Lcom/blizzard/util/State;->compareNotMaskAndSet(II)Z
  3281.  
  3282.     move-result v0
  3283.  
  3284.     #v0=(Boolean);
  3285.     if-eqz v0, :cond_0
  3286.  
  3287.     .line 365
  3288.     iget-wide v0, p0, Lcom/blizzard/wow/net/session/Session;->connectionTimeout:J
  3289.  
  3290.     #v0=(LongLo);v1=(LongHi);
  3291.     const-wide/16 v2, 0x0
  3292.  
  3293.     #v2=(LongLo);v3=(LongHi);
  3294.     cmp-long v0, v0, v2
  3295.  
  3296.     #v0=(Byte);
  3297.     if-lez v0, :cond_1
  3298.  
  3299.     sget-object v0, Lcom/blizzard/wow/net/session/Session;->CONN_OPEN_ERROR:Lcom/blizzard/wow/net/session/Session$Error;
  3300.  
  3301.     :goto_0
  3302.     #v0=(Reference);
  3303.     iput-object v0, p0, Lcom/blizzard/wow/net/session/Session;->lastError:Lcom/blizzard/wow/net/session/Session$Error;
  3304.  
  3305.     .line 366
  3306.     if-nez p1, :cond_2
  3307.  
  3308.     const/4 v0, 0x1
  3309.  
  3310.     :goto_1
  3311.     #v0=(Boolean);
  3312.     iput-boolean v0, p0, Lcom/blizzard/wow/net/session/Session;->suppressCloseCallback:Z
  3313.  
  3314.     .line 368
  3315.     iput-wide v4, p0, Lcom/blizzard/wow/net/session/Session;->connectionTimeout:J
  3316.  
  3317.     .line 369
  3318.     iput-wide v4, p0, Lcom/blizzard/wow/net/session/Session;->loginTimeout:J
  3319.  
  3320.     .line 371
  3321.     iget-object v0, p0, Lcom/blizzard/wow/net/session/Session;->conn:Lcom/blizzard/wow/net/protocol/ProtocolConnection;
  3322.  
  3323.     #v0=(Reference);
  3324.     if-eqz v0, :cond_0
  3325.  
  3326.     .line 372
  3327.     iget-object v0, p0, Lcom/blizzard/wow/net/session/Session;->conn:Lcom/blizzard/wow/net/protocol/ProtocolConnection;
  3328.  
  3329.     invoke-interface {v0}, Lcom/blizzard/wow/net/protocol/ProtocolConnection;->close()V
  3330.  
  3331.     .line 375
  3332.     :cond_0
  3333.     #v0=(Conflicted);v1=(Conflicted);v2=(Conflicted);v3=(Conflicted);
  3334.     return-void
  3335.  
  3336.     :cond_1
  3337.     #v0=(Byte);v1=(LongHi);v2=(LongLo);v3=(LongHi);
  3338.     move-object v0, p1
  3339.  
  3340.     .line 365
  3341.     #v0=(Reference);
  3342.     goto :goto_0
  3343.  
  3344.     .line 366
  3345.     :cond_2
  3346.     const/4 v0, 0x0
  3347.  
  3348.     #v0=(Null);
  3349.     goto :goto_1
  3350. .end method
  3351.  
  3352. .method public getAccount()Lcom/blizzard/wow/user/Account;
  3353.     .locals 1
  3354.  
  3355.     .prologue
  3356.     .line 434
  3357.     iget-object v0, p0, Lcom/blizzard/wow/net/session/Session;->account:Lcom/blizzard/wow/user/Account;
  3358.  
  3359.     #v0=(Reference);
  3360.     return-object v0
  3361. .end method
  3362.  
  3363. .method public getConnection()Lcom/blizzard/wow/net/protocol/ProtocolConnection;
  3364.     .locals 1
  3365.  
  3366.     .prologue
  3367.     .line 246
  3368.     iget-object v0, p0, Lcom/blizzard/wow/net/session/Session;->conn:Lcom/blizzard/wow/net/protocol/ProtocolConnection;
  3369.  
  3370.     #v0=(Reference);
  3371.     return-object v0
  3372. .end method
  3373.  
  3374. .method public getHandler()Landroid/os/Handler;
  3375.     .locals 1
  3376.  
  3377.     .prologue
  3378.     .line 167
  3379.     sget-object v0, Lcom/blizzard/wow/app/ArmoryApplication;->appInstance:Lcom/blizzard/wow/app/ArmoryApplication;
  3380.  
  3381.     #v0=(Reference);
  3382.     invoke-virtual {v0}, Lcom/blizzard/wow/app/ArmoryApplication;->getWorkerHandler()Landroid/os/Handler;
  3383.  
  3384.     move-result-object v0
  3385.  
  3386.     return-object v0
  3387. .end method
  3388.  
  3389. .method public isClosed()Z
  3390.     .locals 3
  3391.  
  3392.     .prologue
  3393.     .line 425
  3394.     iget-object v1, p0, Lcom/blizzard/wow/net/session/Session;->state:Lcom/blizzard/util/State;
  3395.  
  3396.     #v1=(Reference);
  3397.     invoke-virtual {v1}, Lcom/blizzard/util/State;->get()I
  3398.  
  3399.     move-result v1
  3400.  
  3401.     #v1=(Integer);
  3402.     const/high16 v2, 0x100
  3403.  
  3404.     #v2=(Integer);
  3405.     and-int/2addr v1, v2
  3406.  
  3407.     if-eqz v1, :cond_0
  3408.  
  3409.     const/4 v0, 0x1
  3410.  
  3411.     .line 426
  3412.     .local v0, isClosed:Z
  3413.     :goto_0
  3414.     #v0=(Boolean);
  3415.     return v0
  3416.  
  3417.     .line 425
  3418.     .end local v0           #isClosed:Z
  3419.     :cond_0
  3420.     #v0=(Uninit);
  3421.     const/4 v0, 0x0
  3422.  
  3423.     #v0=(Null);
  3424.     goto :goto_0
  3425. .end method
  3426.  
  3427. .method public isConnected()Z
  3428.     .locals 3
  3429.  
  3430.     .prologue
  3431.     .line 420
  3432.     iget-object v1, p0, Lcom/blizzard/wow/net/session/Session;->state:Lcom/blizzard/util/State;
  3433.  
  3434.     #v1=(Reference);
  3435.     invoke-virtual {v1}, Lcom/blizzard/util/State;->get()I
  3436.  
  3437.     move-result v1
  3438.  
  3439.     #v1=(Integer);
  3440.     const/high16 v2, 0x400
  3441.  
  3442.     #v2=(Integer);
  3443.     and-int/2addr v1, v2
  3444.  
  3445.     if-eqz v1, :cond_0
  3446.  
  3447.     const/4 v0, 0x1
  3448.  
  3449.     .line 421
  3450.     .local v0, isConnected:Z
  3451.     :goto_0
  3452.     #v0=(Boolean);
  3453.     return v0
  3454.  
  3455.     .line 420
  3456.     .end local v0           #isConnected:Z
  3457.     :cond_0
  3458.     #v0=(Uninit);
  3459.     const/4 v0, 0x0
  3460.  
  3461.     #v0=(Null);
  3462.     goto :goto_0
  3463. .end method
  3464.  
  3465. .method public isConnecting()Z
  3466.     .locals 3
  3467.  
  3468.     .prologue
  3469.     .line 415
  3470.     iget-object v1, p0, Lcom/blizzard/wow/net/session/Session;->state:Lcom/blizzard/util/State;
  3471.  
  3472.     #v1=(Reference);
  3473.     invoke-virtual {v1}, Lcom/blizzard/util/State;->get()I
  3474.  
  3475.     move-result v1
  3476.  
  3477.     #v1=(Integer);
  3478.     const/high16 v2, 0x200
  3479.  
  3480.     #v2=(Integer);
  3481.     and-int/2addr v1, v2
  3482.  
  3483.     if-eqz v1, :cond_0
  3484.  
  3485.     const/4 v0, 0x1
  3486.  
  3487.     .line 416
  3488.     .local v0, isConnecting:Z
  3489.     :goto_0
  3490.     #v0=(Boolean);
  3491.     return v0
  3492.  
  3493.     .line 415
  3494.     .end local v0           #isConnecting:Z
  3495.     :cond_0
  3496.     #v0=(Uninit);
  3497.     const/4 v0, 0x0
  3498.  
  3499.     #v0=(Null);
  3500.     goto :goto_0
  3501. .end method
  3502.  
  3503. .method public isConnectionIdle(J)Z
  3504.     .locals 5
  3505.     .parameter "threshold"
  3506.  
  3507.     .prologue
  3508.     const/4 v2, 0x1
  3509.  
  3510.     .line 475
  3511.     #v2=(One);
  3512.     iget-object v3, p0, Lcom/blizzard/wow/net/session/Session;->conn:Lcom/blizzard/wow/net/protocol/ProtocolConnection;
  3513.  
  3514.     #v3=(Reference);
  3515.     if-eqz v3, :cond_0
  3516.  
  3517.     .line 476
  3518.     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
  3519.  
  3520.     move-result-wide v0
  3521.  
  3522.     .line 477
  3523.     .local v0, now:J
  3524.     #v0=(LongLo);v1=(LongHi);
  3525.     iget-object v3, p0, Lcom/blizzard/wow/net/session/Session;->conn:Lcom/blizzard/wow/net/protocol/ProtocolConnection;
  3526.  
  3527.     invoke-interface {v3}, Lcom/blizzard/wow/net/protocol/ProtocolConnection;->getLastReceivedTime()J
  3528.  
  3529.     move-result-wide v3
  3530.  
  3531.     #v3=(LongLo);v4=(LongHi);
  3532.     sub-long v3, v0, v3
  3533.  
  3534.     cmp-long v3, v3, p1
  3535.  
  3536.     #v3=(Byte);
  3537.     if-lez v3, :cond_1
  3538.  
  3539.     .line 479
  3540.     .end local v0           #now:J
  3541.     :cond_0
  3542.     :goto_0
  3543.     #v0=(Conflicted);v1=(Conflicted);v2=(Boolean);v3=(Conflicted);v4=(Conflicted);
  3544.     return v2
  3545.  
  3546.     .line 477
  3547.     .restart local v0       #now:J
  3548.     :cond_1
  3549.     #v0=(LongLo);v1=(LongHi);v2=(One);v3=(Byte);v4=(LongHi);
  3550.     const/4 v2, 0x0
  3551.  
  3552.     #v2=(Null);
  3553.     goto :goto_0
  3554. .end method
  3555.  
  3556. .method public isNotConnected()Z
  3557.     .locals 1
  3558.  
  3559.     .prologue
  3560.     .line 430
  3561.     iget-object v0, p0, Lcom/blizzard/wow/net/session/Session;->conn:Lcom/blizzard/wow/net/protocol/ProtocolConnection;
  3562.  
  3563.     #v0=(Reference);
  3564.     if-eqz v0, :cond_0
  3565.  
  3566.     iget-object v0, p0, Lcom/blizzard/wow/net/session/Session;->conn:Lcom/blizzard/wow/net/protocol/ProtocolConnection;
  3567.  
  3568.     invoke-interface {v0}, Lcom/blizzard/wow/net/protocol/ProtocolConnection;->isClosed()Z
  3569.  
  3570.     move-result v0
  3571.  
  3572.     #v0=(Boolean);
  3573.     if-nez v0, :cond_0
  3574.  
  3575.     const/4 v0, 0x0
  3576.  
  3577.     :goto_0
  3578.     return v0
  3579.  
  3580.     :cond_0
  3581.     #v0=(Conflicted);
  3582.     const/4 v0, 0x1
  3583.  
  3584.     #v0=(One);
  3585.     goto :goto_0
  3586. .end method
  3587.  
  3588. .method public isUsingNioApi()Z
  3589.     .locals 1
  3590.  
  3591.     .prologue
  3592.     .line 278
  3593.     iget-object v0, p0, Lcom/blizzard/wow/net/session/Session;->conn:Lcom/blizzard/wow/net/protocol/ProtocolConnection;
  3594.  
  3595.     #v0=(Reference);
  3596.     instance-of v0, v0, Lcom/blizzard/wow/net/protocol/binary/BinaryProtocolConnectionNio;
  3597.  
  3598.     #v0=(Boolean);
  3599.     return v0
  3600. .end method
  3601.  
  3602. .method loginMessage(Ljava/lang/String;Z)Lcom/blizzard/wow/net/message/Request;
  3603.     .locals 6
  3604.     .parameter "target"
  3605.     .parameter "includeLoginParams"
  3606.  
  3607.     .prologue
  3608.     .line 1041
  3609.     const/4 v0, 0x0
  3610.  
  3611.     .line 1042
  3612.     .local v0, message:Lcom/blizzard/wow/net/message/Request;
  3613.     #v0=(Null);
  3614.     if-eqz p2, :cond_0
  3615.  
  3616.     .line 1043
  3617.     new-instance v0, Lcom/blizzard/wow/net/message/Request;
  3618.  
  3619.     .end local v0           #message:Lcom/blizzard/wow/net/message/Request;
  3620.     #v0=(UninitRef);
  3621.     iget-object v2, p0, Lcom/blizzard/wow/net/session/Session;->loginParams:Ljava/util/HashMap;
  3622.  
  3623.     #v2=(Reference);
  3624.     invoke-direct {v0, p1, v2}, Lcom/blizzard/wow/net/message/Request;-><init>(Ljava/lang/String;Ljava/util/HashMap;)V
  3625.  
  3626.     .line 1047
  3627.     .restart local v0       #message:Lcom/blizzard/wow/net/message/Request;
  3628.     :goto_0
  3629.     #v0=(Reference);v2=(Conflicted);
  3630.     iget-object v2, v0, Lcom/blizzard/wow/net/message/Request;->body:Ljava/util/HashMap;
  3631.  
  3632.     #v2=(Reference);
  3633.     const-string v3, "accountName"
  3634.  
  3635.     #v3=(Reference);
  3636.     invoke-virtual {p0}, Lcom/blizzard/wow/net/session/Session;->sessionAccountName()Ljava/lang/String;
  3637.  
  3638.     move-result-object v4
  3639.  
  3640.     #v4=(Reference);
  3641.     invoke-virtual {v2, v3, v4}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
  3642.  
  3643.     .line 1048
  3644.     iget-object v2, v0, Lcom/blizzard/wow/net/message/Request;->body:Ljava/util/HashMap;
  3645.  
  3646.     const-string v3, "deviceTime"
  3647.  
  3648.     invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
  3649.  
  3650.     move-result-wide v4
  3651.  
  3652.     #v4=(LongLo);v5=(LongHi);
  3653.     invoke-static {v4, v5}, Ljava/lang/Long;->toString(J)Ljava/lang/String;
  3654.  
  3655.     move-result-object v4
  3656.  
  3657.     #v4=(Reference);
  3658.     invoke-virtual {v2, v3, v4}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
  3659.  
  3660.     .line 1049
  3661.     invoke-static {}, Ljava/util/TimeZone;->getDefault()Ljava/util/TimeZone;
  3662.  
  3663.     move-result-object v1
  3664.  
  3665.     .line 1050
  3666.     .local v1, tz:Ljava/util/TimeZone;
  3667.     #v1=(Reference);
  3668.     iget-object v2, v0, Lcom/blizzard/wow/net/message/Request;->body:Ljava/util/HashMap;
  3669.  
  3670.     const-string v3, "deviceTimeZone"
  3671.  
  3672.     invoke-virtual {v1}, Ljava/util/TimeZone;->getRawOffset()I
  3673.  
  3674.     move-result v4
  3675.  
  3676.     #v4=(Integer);
  3677.     invoke-static {v4}, Ljava/lang/Integer;->toString(I)Ljava/lang/String;
  3678.  
  3679.     move-result-object v4
  3680.  
  3681.     #v4=(Reference);
  3682.     invoke-virtual {v2, v3, v4}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
  3683.  
  3684.     .line 1051
  3685.     iget-object v2, v0, Lcom/blizzard/wow/net/message/Request;->body:Ljava/util/HashMap;
  3686.  
  3687.     const-string v3, "deviceTimeZoneID"
  3688.  
  3689.     invoke-virtual {v1}, Ljava/util/TimeZone;->getID()Ljava/lang/String;
  3690.  
  3691.     move-result-object v4
  3692.  
  3693.     invoke-virtual {v2, v3, v4}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
  3694.  
  3695.     .line 1053
  3696.     return-object v0
  3697.  
  3698.     .line 1045
  3699.     .end local v1           #tz:Ljava/util/TimeZone;
  3700.     :cond_0
  3701.     #v0=(Null);v1=(Uninit);v2=(Uninit);v3=(Uninit);v4=(Uninit);v5=(Uninit);
  3702.     new-instance v0, Lcom/blizzard/wow/net/message/Request;
  3703.  
  3704.     .end local v0           #message:Lcom/blizzard/wow/net/message/Request;
  3705.     #v0=(UninitRef);
  3706.     invoke-direct {v0, p1}, Lcom/blizzard/wow/net/message/Request;-><init>(Ljava/lang/String;)V
  3707.  
  3708.     .restart local v0       #message:Lcom/blizzard/wow/net/message/Request;
  3709.     #v0=(Reference);
  3710.     goto :goto_0
  3711. .end method
  3712.  
  3713. .method public declared-synchronized onConnectionClosed()Z
  3714.     .locals 2
  3715.  
  3716.     .prologue
  3717.     .line 462
  3718.     monitor-enter p0
  3719.  
  3720.     const/4 v0, 0x0
  3721.  
  3722.     :try_start_0
  3723.     #v0=(Null);
  3724.     iput-object v0, p0, Lcom/blizzard/wow/net/session/Session;->conn:Lcom/blizzard/wow/net/protocol/ProtocolConnection;
  3725.  
  3726.     .line 463
  3727.     const/4 v0, 0x0
  3728.  
  3729.     iput-object v0, p0, Lcom/blizzard/wow/net/session/Session;->clientSalt:[B
  3730.  
  3731.     .line 465
  3732.     const-wide/16 v0, -0x1
  3733.  
  3734.     #v0=(LongLo);v1=(LongHi);
  3735.     iput-wide v0, p0, Lcom/blizzard/wow/net/session/Session;->loginTimeout:J
  3736.  
  3737.     .line 466
  3738.     const/4 v0, -0x1
  3739.  
  3740.     #v0=(Byte);
  3741.     iput v0, p0, Lcom/blizzard/wow/net/session/Session;->loginMsgId:I
  3742.  
  3743.     .line 468
  3744.     invoke-direct {p0}, Lcom/blizzard/wow/net/session/Session;->connectionCloseCleanup()V
  3745.     :try_end_0
  3746.     .catchall {:try_start_0 .. :try_end_0} :catchall_0
  3747.  
  3748.     .line 470
  3749.     const/4 v0, 0x1
  3750.  
  3751.     #v0=(One);
  3752.     monitor-exit p0
  3753.  
  3754.     return v0
  3755.  
  3756.     .line 462
  3757.     :catchall_0
  3758.     #v0=(Conflicted);v1=(Conflicted);
  3759.     move-exception v0
  3760.  
  3761.     #v0=(Reference);
  3762.     monitor-exit p0
  3763.  
  3764.     throw v0
  3765. .end method
  3766.  
  3767. .method public declared-synchronized onConnectionEstablished()Z
  3768.     .locals 3
  3769.  
  3770.     .prologue
  3771.     .line 443
  3772.     monitor-enter p0
  3773.  
  3774.     :try_start_0
  3775.     iget-object v0, p0, Lcom/blizzard/wow/net/session/Session;->state:Lcom/blizzard/util/State;
  3776.  
  3777.     #v0=(Reference);
  3778.     const/high16 v1, 0x200
  3779.  
  3780.     #v1=(Integer);
  3781.     const v2, 0x2000002
  3782.  
  3783.     #v2=(Integer);
  3784.     invoke-virtual {v0, v1, v2}, Lcom/blizzard/util/State;->compareAndSet(II)Z
  3785.  
  3786.     move-result v0
  3787.  
  3788.     #v0=(Boolean);
  3789.     if-eqz v0, :cond_0
  3790.  
  3791.     .line 446
  3792.     const-wide/16 v0, -0x1
  3793.  
  3794.     #v0=(LongLo);v1=(LongHi);
  3795.     iput-wide v0, p0, Lcom/blizzard/wow/net/session/Session;->connectionTimeout:J
  3796.  
  3797.     .line 447
  3798.     const/4 v0, 0x0
  3799.  
  3800.     #v0=(Null);
  3801.     iput-byte v0, p0, Lcom/blizzard/wow/net/session/Session;->counter:B
  3802.  
  3803.     .line 449
  3804.     iget-object v0, p0, Lcom/blizzard/wow/net/session/Session;->account:Lcom/blizzard/wow/user/Account;
  3805.  
  3806.     #v0=(Reference);
  3807.     invoke-virtual {v0}, Lcom/blizzard/wow/user/Account;->getSessionCode()Ljava/lang/String;
  3808.  
  3809.     move-result-object v0
  3810.  
  3811.     if-nez v0, :cond_1
  3812.  
  3813.     .line 451
  3814.     invoke-direct {p0}, Lcom/blizzard/wow/net/session/Session;->sendAuthenticate1()V
  3815.     :try_end_0
  3816.     .catchall {:try_start_0 .. :try_end_0} :catchall_0
  3817.  
  3818.     .line 458
  3819.     :cond_0
  3820.     :goto_0
  3821.     #v0=(Conflicted);v1=(Conflicted);
  3822.     const/4 v0, 0x1
  3823.  
  3824.     #v0=(One);
  3825.     monitor-exit p0
  3826.  
  3827.     return v0
  3828.  
  3829.     .line 454
  3830.     :cond_1
  3831.     :try_start_1
  3832.     #v0=(Reference);v1=(LongHi);
  3833.     invoke-direct {p0}, Lcom/blizzard/wow/net/session/Session;->sendReconnect1()V
  3834.     :try_end_1
  3835.     .catchall {:try_start_1 .. :try_end_1} :catchall_0
  3836.  
  3837.     goto :goto_0
  3838.  
  3839.     .line 443
  3840.     :catchall_0
  3841.     #v0=(Conflicted);v1=(Conflicted);v2=(Conflicted);
  3842.     move-exception v0
  3843.  
  3844.     #v0=(Reference);
  3845.     monitor-exit p0
  3846.  
  3847.     throw v0
  3848. .end method
  3849.  
  3850. .method public declared-synchronized onRequestSent(Lcom/blizzard/wow/net/message/Request;)Z
  3851.     .locals 4
  3852.     .parameter "request"
  3853.  
  3854.     .prologue
  3855.     .line 491
  3856.     monitor-enter p0
  3857.  
  3858.     :try_start_0
  3859.     iget v0, p0, Lcom/blizzard/wow/net/session/Session;->loginMsgId:I
  3860.  
  3861.     #v0=(Integer);
  3862.     if-ltz v0, :cond_0
  3863.  
  3864.     .line 492
  3865.     iget v0, p1, Lcom/blizzard/wow/net/message/Request;->id:I
  3866.  
  3867.     iget v1, p0, Lcom/blizzard/wow/net/session/Session;->loginMsgId:I
  3868.  
  3869.     #v1=(Integer);
  3870.     if-ne v0, v1, :cond_0
  3871.  
  3872.     .line 496
  3873.     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
  3874.  
  3875.     move-result-wide v0
  3876.  
  3877.     .line 497
  3878.     #v0=(LongLo);v1=(LongHi);
  3879.     const-wide/16 v2, 0x7530
  3880.  
  3881.     #v2=(LongLo);v3=(LongHi);
  3882.     add-long/2addr v0, v2
  3883.  
  3884.     .line 496
  3885.     iput-wide v0, p0, Lcom/blizzard/wow/net/session/Session;->loginTimeout:J
  3886.     :try_end_0
  3887.     .catchall {:try_start_0 .. :try_end_0} :catchall_0
  3888.  
  3889.     .line 499
  3890.     const/4 v0, 0x1
  3891.  
  3892.     .line 502
  3893.     :goto_0
  3894.     #v0=(Boolean);v1=(Conflicted);v2=(Conflicted);v3=(Conflicted);
  3895.     monitor-exit p0
  3896.  
  3897.     return v0
  3898.  
  3899.     :cond_0
  3900.     #v0=(Integer);v2=(Uninit);v3=(Uninit);
  3901.     const/4 v0, 0x0
  3902.  
  3903.     #v0=(Null);
  3904.     goto :goto_0
  3905.  
  3906.     .line 491
  3907.     :catchall_0
  3908.     #v0=(Conflicted);v2=(Conflicted);v3=(Conflicted);
  3909.     move-exception v0
  3910.  
  3911.     #v0=(Reference);
  3912.     monitor-exit p0
  3913.  
  3914.     throw v0
  3915. .end method
  3916.  
  3917. .method public declared-synchronized onResponseReceived(Lcom/blizzard/wow/net/message/Response;)Z
  3918.     .locals 10
  3919.     .parameter "response"
  3920.  
  3921.     .prologue
  3922.     const/4 v3, 0x0
  3923.  
  3924.     #v3=(Null);
  3925.     const/4 v2, 0x0
  3926.  
  3927.     #v2=(Null);
  3928.     const/4 v9, 0x1
  3929.  
  3930.     .line 506
  3931.     #v9=(One);
  3932.     monitor-enter p0
  3933.  
  3934.     :try_start_0
  3935.     invoke-virtual {p0}, Lcom/blizzard/wow/net/session/Session;->isClosed()Z
  3936.     :try_end_0
  3937.     .catchall {:try_start_0 .. :try_end_0} :catchall_0
  3938.  
  3939.     move-result v1
  3940.  
  3941.     #v1=(Boolean);
  3942.     if-eqz v1, :cond_0
  3943.  
  3944.     move v1, v9
  3945.  
  3946.     .line 569
  3947.     :goto_0
  3948.     #v0=(Conflicted);v2=(Conflicted);v3=(Conflicted);v4=(Conflicted);v5=(Conflicted);v6=(Conflicted);v7=(Conflicted);v8=(Conflicted);
  3949.     monitor-exit p0
  3950.  
  3951.     return v1
  3952.  
  3953.     .line 514
  3954.     :cond_0
  3955.     :try_start_1
  3956.     #v0=(Uninit);v2=(Null);v3=(Null);v4=(Uninit);v5=(Uninit);v6=(Uninit);v7=(Uninit);v8=(Uninit);
  3957.     invoke-virtual {p1}, Lcom/blizzard/wow/net/message/Response;->isError()Z
  3958.  
  3959.     move-result v1
  3960.  
  3961.     if-eqz v1, :cond_6
  3962.  
  3963.     .line 515
  3964.     iget v8, p1, Lcom/blizzard/wow/net/message/Response;->statusCode:I
  3965.  
  3966.     .line 516
  3967.     .local v8, statusCode:I
  3968.     #v8=(Integer);
  3969.     const/16 v1, 0x12c
  3970.  
  3971.     #v1=(PosShort);
  3972.     if-ne v1, v8, :cond_4
  3973.  
  3974.     .line 519
  3975.     const-wide/16 v4, -0x1
  3976.  
  3977.     #v4=(LongLo);v5=(LongHi);
  3978.     iput-wide v4, p0, Lcom/blizzard/wow/net/session/Session;->loginTimeout:J
  3979.  
  3980.     .line 520
  3981.     iget-object v1, p1, Lcom/blizzard/wow/net/message/Response;->body:Ljava/util/HashMap;
  3982.  
  3983.     #v1=(Reference);
  3984.     if-eqz v1, :cond_3
  3985.  
  3986.     move v7, v9
  3987.  
  3988.     .line 521
  3989.     .local v7, hasResponseBody:Z
  3990.     :goto_1
  3991.     #v7=(Boolean);
  3992.     new-instance v0, Lcom/blizzard/wow/net/session/Session$Error;
  3993.  
  3994.     #v0=(UninitRef);
  3995.     const/4 v1, 0x1
  3996.  
  3997.     .line 522
  3998.     #v1=(One);
  3999.     if-eqz v7, :cond_1
  4000.  
  4001.     iget-object v2, p1, Lcom/blizzard/wow/net/message/Response;->body:Ljava/util/HashMap;
  4002.  
  4003.     #v2=(Reference);
  4004.     const-string v4, "badLogin"
  4005.  
  4006.     #v4=(Reference);
  4007.     invoke-virtual {v2, v4}, Ljava/util/HashMap;->containsKey(Ljava/lang/Object;)Z
  4008.  
  4009.     move-result v2
  4010.  
  4011.     .line 523
  4012.     :cond_1
  4013.     #v2=(Boolean);v4=(Conflicted);
  4014.     if-eqz v7, :cond_2
  4015.  
  4016.     iget-object v3, p1, Lcom/blizzard/wow/net/message/Response;->body:Ljava/util/HashMap;
  4017.  
  4018.     #v3=(Reference);
  4019.     const-string v4, "url"
  4020.  
  4021.     #v4=(Reference);
  4022.     invoke-virtual {v3, v4}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
  4023.  
  4024.     move-result-object v3
  4025.  
  4026.     check-cast v3, Ljava/lang/String;
  4027.  
  4028.     .line 524
  4029.     :cond_2
  4030.     #v4=(Conflicted);
  4031.     iget-object v4, p1, Lcom/blizzard/wow/net/message/Response;->error:Ljava/lang/String;
  4032.  
  4033.     #v4=(Reference);
  4034.     iget-object v5, p1, Lcom/blizzard/wow/net/message/Response;->errorDescription:Ljava/lang/String;
  4035.  
  4036.     .line 521
  4037.     #v5=(Reference);
  4038.     invoke-direct/range {v0 .. v5}, Lcom/blizzard/wow/net/session/Session$Error;-><init>(ZZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
  4039.  
  4040.     .line 527
  4041.     .local v0, sessionError:Lcom/blizzard/wow/net/session/Session$Error;
  4042.     #v0=(Reference);
  4043.     invoke-virtual {p0, v0}, Lcom/blizzard/wow/net/session/Session;->disconnect(Lcom/blizzard/wow/net/session/Session$Error;)V
  4044.  
  4045.     move v1, v9
  4046.  
  4047.     .line 528
  4048.     goto :goto_0
  4049.  
  4050.     .end local v0           #sessionError:Lcom/blizzard/wow/net/session/Session$Error;
  4051.     .end local v7           #hasResponseBody:Z
  4052.     :cond_3
  4053.     #v0=(Uninit);v1=(Reference);v2=(Null);v3=(Null);v4=(LongLo);v5=(LongHi);v7=(Uninit);
  4054.     move v7, v2
  4055.  
  4056.     .line 520
  4057.     #v7=(Null);
  4058.     goto :goto_1
  4059.  
  4060.     .line 530
  4061.     :cond_4
  4062.     #v1=(PosShort);v4=(Uninit);v5=(Uninit);v7=(Uninit);
  4063.     const/16 v1, 0x12d
  4064.  
  4065.     if-ne v1, v8, :cond_6
  4066.  
  4067.     .line 533
  4068.     const-wide/16 v1, -0x1
  4069.  
  4070.     #v1=(LongLo);v2=(LongHi);
  4071.     iput-wide v1, p0, Lcom/blizzard/wow/net/session/Session;->loginTimeout:J
  4072.  
  4073.     .line 535
  4074.     iget-object v1, p0, Lcom/blizzard/wow/net/session/Session;->state:Lcom/blizzard/util/State;
  4075.  
  4076.     #v1=(Reference);
  4077.     const/high16 v2, 0x200
  4078.  
  4079.     .line 536
  4080.     #v2=(Integer);
  4081.     const v3, 0x2000003
  4082.  
  4083.     .line 535
  4084.     #v3=(Integer);
  4085.     invoke-virtual {v1, v2, v3}, Lcom/blizzard/util/State;->compareMaskAndSet(II)Z
  4086.  
  4087.     move-result v1
  4088.  
  4089.     #v1=(Boolean);
  4090.     if-eqz v1, :cond_5
  4091.  
  4092.     .line 538
  4093.     iget-object v1, p0, Lcom/blizzard/wow/net/session/Session;->account:Lcom/blizzard/wow/user/Account;
  4094.  
  4095.     #v1=(Reference);
  4096.     invoke-virtual {v1}, Lcom/blizzard/wow/user/Account;->deleteSession()V
  4097.  
  4098.     .line 539
  4099.     invoke-direct {p0}, Lcom/blizzard/wow/net/session/Session;->sendAuthenticate1()V
  4100.  
  4101.     :cond_5
  4102.     #v1=(Conflicted);
  4103.     move v1, v9
  4104.  
  4105.     .line 541
  4106.     #v1=(One);
  4107.     goto :goto_0
  4108.  
  4109.     .line 545
  4110.     .end local v8           #statusCode:I
  4111.     :cond_6
  4112.     #v1=(PosShort);v2=(Null);v3=(Null);v8=(Conflicted);
  4113.     iget v1, p0, Lcom/blizzard/wow/net/session/Session;->loginMsgId:I
  4114.  
  4115.     #v1=(Integer);
  4116.     if-ltz v1, :cond_d
  4117.  
  4118.     .line 546
  4119.     iget v1, p1, Lcom/blizzard/wow/net/message/Response;->id:I
  4120.  
  4121.     iget v3, p0, Lcom/blizzard/wow/net/session/Session;->loginMsgId:I
  4122.  
  4123.     #v3=(Integer);
  4124.     if-ne v1, v3, :cond_d
  4125.  
  4126.     .line 549
  4127.     const-wide/16 v1, -0x1
  4128.  
  4129.     #v1=(LongLo);v2=(LongHi);
  4130.     iput-wide v1, p0, Lcom/blizzard/wow/net/session/Session;->loginTimeout:J
  4131.  
  4132.     .line 550
  4133.     const/4 v1, 0x0
  4134.  
  4135.     #v1=(Null);
  4136.     iput-object v1, p0, Lcom/blizzard/wow/net/session/Session;->lastError:Lcom/blizzard/wow/net/session/Session$Error;
  4137.  
  4138.     .line 551
  4139.     iget-object v1, p0, Lcom/blizzard/wow/net/session/Session;->state:Lcom/blizzard/util/State;
  4140.  
  4141.     #v1=(Reference);
  4142.     invoke-virtual {v1}, Lcom/blizzard/util/State;->get()I
  4143.  
  4144.     move-result v6
  4145.  
  4146.     .line 552
  4147.     .local v6, currentStatus:I
  4148.     #v6=(Integer);
  4149.     const v1, 0x2000004
  4150.  
  4151.     #v1=(Integer);
  4152.     if-ne v1, v6, :cond_8
  4153.  
  4154.     .line 553
  4155.     invoke-direct {p0, p1}, Lcom/blizzard/wow/net/session/Session;->handleAuthenticate1Response(Lcom/blizzard/wow/net/message/Response;)V
  4156.  
  4157.     :cond_7
  4158.     :goto_2
  4159.     move v1, v9
  4160.  
  4161.     .line 566
  4162.     #v1=(One);
  4163.     goto :goto_0
  4164.  
  4165.     .line 554
  4166.     :cond_8
  4167.     #v1=(Integer);
  4168.     const v1, 0x2000005
  4169.  
  4170.     if-ne v1, v6, :cond_9
  4171.  
  4172.     .line 555
  4173.     invoke-direct {p0, p1}, Lcom/blizzard/wow/net/session/Session;->handleAuthenticate2Response(Lcom/blizzard/wow/net/message/Response;)V
  4174.     :try_end_1
  4175.     .catchall {:try_start_1 .. :try_end_1} :catchall_0
  4176.  
  4177.     goto :goto_2
  4178.  
  4179.     .line 506
  4180.     .end local v6           #currentStatus:I
  4181.     :catchall_0
  4182.     #v0=(Conflicted);v1=(Conflicted);v2=(Conflicted);v3=(Conflicted);v4=(Conflicted);v5=(Conflicted);v6=(Conflicted);v7=(Conflicted);
  4183.     move-exception v1
  4184.  
  4185.     #v1=(Reference);
  4186.     monitor-exit p0
  4187.  
  4188.     throw v1
  4189.  
  4190.     .line 556
  4191.     .restart local v6       #currentStatus:I
  4192.     :cond_9
  4193.     #v0=(Uninit);v1=(Integer);v2=(LongHi);v3=(Integer);v4=(Uninit);v5=(Uninit);v6=(Integer);v7=(Uninit);
  4194.     const v1, 0x2000006
  4195.  
  4196.     if-ne v1, v6, :cond_a
  4197.  
  4198.     .line 557
  4199.     :try_start_2
  4200.     invoke-direct {p0, p1}, Lcom/blizzard/wow/net/session/Session;->handleReconnect1Response(Lcom/blizzard/wow/net/message/Response;)V
  4201.  
  4202.     goto :goto_2
  4203.  
  4204.     .line 558
  4205.     :cond_a
  4206.     const v1, 0x2000007
  4207.  
  4208.     if-ne v1, v6, :cond_b
  4209.  
  4210.     .line 559
  4211.     invoke-direct {p0, p1}, Lcom/blizzard/wow/net/session/Session;->handleLogin(Lcom/blizzard/wow/net/message/Response;)V
  4212.  
  4213.     goto :goto_2
  4214.  
  4215.     .line 560
  4216.     :cond_b
  4217.     const v1, 0x4000001
  4218.  
  4219.     if-ne v1, v6, :cond_c
  4220.  
  4221.     .line 561
  4222.     invoke-direct {p0, p1}, Lcom/blizzard/wow/net/session/Session;->handleHardLogin1Response(Lcom/blizzard/wow/net/message/Response;)V
  4223.  
  4224.     goto :goto_2
  4225.  
  4226.     .line 562
  4227.     :cond_c
  4228.     const v1, 0x4000003
  4229.  
  4230.     if-ne v1, v6, :cond_7
  4231.  
  4232.     .line 563
  4233.     invoke-direct {p0, p1}, Lcom/blizzard/wow/net/session/Session;->handleHardLogin2Response(Lcom/blizzard/wow/net/message/Response;)V
  4234.     :try_end_2
  4235.     .catchall {:try_start_2 .. :try_end_2} :catchall_0
  4236.  
  4237.     goto :goto_2
  4238.  
  4239.     .end local v6           #currentStatus:I
  4240.     :cond_d
  4241.     #v2=(Null);v6=(Uninit);
  4242.     move v1, v2
  4243.  
  4244.     .line 569
  4245.     #v1=(Null);
  4246.     goto/16 :goto_0
  4247. .end method
  4248.  
  4249. .method public onSessionEstablished()V
  4250.     .locals 0
  4251.  
  4252.     .prologue
  4253.     .line 440
  4254.     return-void
  4255. .end method
  4256.  
  4257. .method public putLoginParam(Ljava/lang/String;Ljava/lang/String;)V
  4258.     .locals 1
  4259.     .parameter "key"
  4260.     .parameter "value"
  4261.  
  4262.     .prologue
  4263.     .line 1057
  4264.     iget-object v0, p0, Lcom/blizzard/wow/net/session/Session;->loginParams:Ljava/util/HashMap;
  4265.  
  4266.     #v0=(Reference);
  4267.     invoke-virtual {v0, p1, p2}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
  4268.  
  4269.     .line 1058
  4270.     return-void
  4271. .end method
  4272.  
  4273. .method public removeListener(Lcom/blizzard/wow/net/session/SessionListener;)V
  4274.     .locals 3
  4275.     .parameter "listener"
  4276.  
  4277.     .prologue
  4278.     .line 262
  4279.     iget-object v2, p0, Lcom/blizzard/wow/net/session/Session;->listeners:Ljava/util/ArrayList;
  4280.  
  4281.     #v2=(Reference);
  4282.     monitor-enter v2
  4283.  
  4284.     .line 263
  4285.     :try_start_0
  4286.     iget-object v1, p0, Lcom/blizzard/wow/net/session/Session;->listeners:Ljava/util/ArrayList;
  4287.  
  4288.     #v1=(Reference);
  4289.     invoke-virtual {v1}, Ljava/util/ArrayList;->isEmpty()Z
  4290.  
  4291.     move-result v1
  4292.  
  4293.     #v1=(Boolean);
  4294.     if-eqz v1, :cond_0
  4295.  
  4296.     .line 264
  4297.     monitor-exit v2
  4298.  
  4299.     .line 274
  4300.     :goto_0
  4301.     #v0=(Conflicted);v1=(Conflicted);
  4302.     return-void
  4303.  
  4304.     .line 266
  4305.     :cond_0
  4306.     #v0=(Uninit);v1=(Boolean);
  4307.     iget-object v1, p0, Lcom/blizzard/wow/net/session/Session;->listeners:Ljava/util/ArrayList;
  4308.  
  4309.     #v1=(Reference);
  4310.     invoke-virtual {v1}, Ljava/util/ArrayList;->iterator()Ljava/util/Iterator;
  4311.  
  4312.     move-result-object v0
  4313.  
  4314.     .line 267
  4315.     .local v0, iter:Ljava/util/Iterator;,"Ljava/util/Iterator<Ljava/lang/ref/Reference<+Lcom/blizzard/wow/net/session/SessionListener;>;>;"
  4316.     :cond_1
  4317.     #v0=(Reference);
  4318.     invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z
  4319.  
  4320.     move-result v1
  4321.  
  4322.     #v1=(Boolean);
  4323.     if-nez v1, :cond_2
  4324.  
  4325.     .line 262
  4326.     monitor-exit v2
  4327.  
  4328.     goto :goto_0
  4329.  
  4330.     .end local v0           #iter:Ljava/util/Iterator;,"Ljava/util/Iterator<Ljava/lang/ref/Reference<+Lcom/blizzard/wow/net/session/SessionListener;>;>;"
  4331.     :catchall_0
  4332.     #v0=(Conflicted);v1=(Conflicted);
  4333.     move-exception v1
  4334.  
  4335.     #v1=(Reference);
  4336.     monitor-exit v2
  4337.     :try_end_0
  4338.     .catchall {:try_start_0 .. :try_end_0} :catchall_0
  4339.  
  4340.     throw v1
  4341.  
  4342.     .line 268
  4343.     .restart local v0       #iter:Ljava/util/Iterator;,"Ljava/util/Iterator<Ljava/lang/ref/Reference<+Lcom/blizzard/wow/net/session/SessionListener;>;>;"
  4344.     :cond_2
  4345.     :try_start_1
  4346.     #v0=(Reference);v1=(Boolean);
  4347.     invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
  4348.  
  4349.     move-result-object v1
  4350.  
  4351.     #v1=(Reference);
  4352.     check-cast v1, Ljava/lang/ref/Reference;
  4353.  
  4354.     invoke-virtual {v1}, Ljava/lang/ref/Reference;->get()Ljava/lang/Object;
  4355.  
  4356.     move-result-object v1
  4357.  
  4358.     if-ne p1, v1, :cond_1
  4359.  
  4360.     .line 269
  4361.     invoke-interface {v0}, Ljava/util/Iterator;->remove()V
  4362.  
  4363.     .line 270
  4364.     monitor-exit v2
  4365.     :try_end_1
  4366.     .catchall {:try_start_1 .. :try_end_1} :catchall_0
  4367.  
  4368.     goto :goto_0
  4369. .end method
  4370.  
  4371. .method public resumeHardLogin(Ljava/lang/String;)Z
  4372.     .locals 2
  4373.     .parameter "authenticatorToken"
  4374.  
  4375.     .prologue
  4376.     .line 856
  4377.     const v0, 0x4000002
  4378.  
  4379.     #v0=(Integer);
  4380.     iget-object v1, p0, Lcom/blizzard/wow/net/session/Session;->state:Lcom/blizzard/util/State;
  4381.  
  4382.     #v1=(Reference);
  4383.     invoke-virtual {v1}, Lcom/blizzard/util/State;->get()I
  4384.  
  4385.     move-result v1
  4386.  
  4387.     #v1=(Integer);
  4388.     if-ne v0, v1, :cond_0
  4389.  
  4390.     .line 857
  4391.     if-eqz p1, :cond_0
  4392.  
  4393.     .line 858
  4394.     invoke-direct {p0, p1}, Lcom/blizzard/wow/net/session/Session;->sendHardLogin2Request(Ljava/lang/String;)Z
  4395.  
  4396.     move-result v0
  4397.  
  4398.     .line 862
  4399.     :goto_0
  4400.     #v0=(Boolean);
  4401.     return v0
  4402.  
  4403.     .line 861
  4404.     :cond_0
  4405.     #v0=(Integer);
  4406.     invoke-direct {p0}, Lcom/blizzard/wow/net/session/Session;->hardLoginCleanup()V
  4407.  
  4408.     .line 862
  4409.     const/4 v0, 0x0
  4410.  
  4411.     #v0=(Null);
  4412.     goto :goto_0
  4413. .end method
  4414.  
  4415. .method sendRequest(Lcom/blizzard/wow/net/message/Request;)Z
  4416.     .locals 1
  4417.     .parameter "request"
  4418.  
  4419.     .prologue
  4420.     .line 484
  4421.     iget-object v0, p0, Lcom/blizzard/wow/net/session/Session;->conn:Lcom/blizzard/wow/net/protocol/ProtocolConnection;
  4422.  
  4423.     #v0=(Reference);
  4424.     if-eqz v0, :cond_0
  4425.  
  4426.     .line 485
  4427.     iget-object v0, p0, Lcom/blizzard/wow/net/session/Session;->conn:Lcom/blizzard/wow/net/protocol/ProtocolConnection;
  4428.  
  4429.     invoke-interface {v0, p1}, Lcom/blizzard/wow/net/protocol/ProtocolConnection;->queueRequest(Lcom/blizzard/wow/net/message/Request;)Z
  4430.  
  4431.     move-result v0
  4432.  
  4433.     .line 487
  4434.     :goto_0
  4435.     #v0=(Boolean);
  4436.     return v0
  4437.  
  4438.     :cond_0
  4439.     #v0=(Reference);
  4440.     const/4 v0, 0x0
  4441.  
  4442.     #v0=(Null);
  4443.     goto :goto_0
  4444. .end method
  4445.  
  4446. .method sessionAccountName()Ljava/lang/String;
  4447.     .locals 2
  4448.  
  4449.     .prologue
  4450.     .line 1026
  4451.     iget-object v0, p0, Lcom/blizzard/wow/net/session/Session;->account:Lcom/blizzard/wow/user/Account;
  4452.  
  4453.     #v0=(Reference);
  4454.     iget-object v0, v0, Lcom/blizzard/wow/user/Account;->accountName:Ljava/lang/String;
  4455.  
  4456.     sget-object v1, Ljava/util/Locale;->ENGLISH:Ljava/util/Locale;
  4457.  
  4458.     #v1=(Reference);
  4459.     invoke-virtual {v0, v1}, Ljava/lang/String;->toUpperCase(Ljava/util/Locale;)Ljava/lang/String;
  4460.  
  4461.     move-result-object v0
  4462.  
  4463.     return-object v0
  4464. .end method
  4465.  
  4466. .method sessionAccountPassword()Ljava/lang/String;
  4467.     .locals 1
  4468.  
  4469.     .prologue
  4470.     .line 1030
  4471.     iget-object v0, p0, Lcom/blizzard/wow/net/session/Session;->account:Lcom/blizzard/wow/user/Account;
  4472.  
  4473.     #v0=(Reference);
  4474.     iget-object v0, v0, Lcom/blizzard/wow/user/Account;->accountPassword:Ljava/lang/String;
  4475.  
  4476.     invoke-virtual {p0, v0}, Lcom/blizzard/wow/net/session/Session;->sessionAccountPassword(Ljava/lang/String;)Ljava/lang/String;
  4477.  
  4478.     move-result-object v0
  4479.  
  4480.     return-object v0
  4481. .end method
  4482.  
  4483. .method sessionAccountPassword(Ljava/lang/String;)Ljava/lang/String;
  4484.     .locals 2
  4485.     .parameter "accountPassword"
  4486.  
  4487.     .prologue
  4488.     const/16 v1, 0x10
  4489.  
  4490.     .line 1034
  4491.     #v1=(PosByte);
  4492.     invoke-virtual {p1}, Ljava/lang/String;->length()I
  4493.  
  4494.     move-result v0
  4495.  
  4496.     #v0=(Integer);
  4497.     if-le v0, v1, :cond_0
  4498.  
  4499.     .line 1035
  4500.     const/4 v0, 0x0
  4501.  
  4502.     #v0=(Null);
  4503.     invoke-virtual {p1, v0, v1}, Ljava/lang/String;->substring(II)Ljava/lang/String;
  4504.  
  4505.     move-result-object v0
  4506.  
  4507.     #v0=(Reference);
  4508.     sget-object v1, Ljava/util/Locale;->ENGLISH:Ljava/util/Locale;
  4509.  
  4510.     #v1=(Reference);
  4511.     invoke-virtual {v0, v1}, Ljava/lang/String;->toUpperCase(Ljava/util/Locale;)Ljava/lang/String;
  4512.  
  4513.     move-result-object v0
  4514.  
  4515.     .line 1037
  4516.     :goto_0
  4517.     #v1=(Conflicted);
  4518.     return-object v0
  4519.  
  4520.     :cond_0
  4521.     #v0=(Integer);v1=(PosByte);
  4522.     sget-object v0, Ljava/util/Locale;->ENGLISH:Ljava/util/Locale;
  4523.  
  4524.     #v0=(Reference);
  4525.     invoke-virtual {p1, v0}, Ljava/lang/String;->toUpperCase(Ljava/util/Locale;)Ljava/lang/String;
  4526.  
  4527.     move-result-object v0
  4528.  
  4529.     goto :goto_0
  4530. .end method
  4531.  
  4532. .method public startHardLogin(Lcom/blizzard/wow/net/session/Session$HardLoginCallback;)Z
  4533.     .locals 6
  4534.     .parameter "callback"
  4535.  
  4536.     .prologue
  4537.     const/4 v2, 0x0
  4538.  
  4539.     .line 790
  4540.     #v2=(Null);
  4541.     invoke-direct {p0}, Lcom/blizzard/wow/net/session/Session;->hardLoginCleanup()V
  4542.  
  4543.     .line 792
  4544.     if-eqz p1, :cond_0
  4545.  
  4546.     .line 793
  4547.     iget-object v3, p0, Lcom/blizzard/wow/net/session/Session;->state:Lcom/blizzard/util/State;
  4548.  
  4549.     .line 794
  4550.     #v3=(Reference);
  4551.     const/high16 v4, 0x400
  4552.  
  4553.     #v4=(Integer);
  4554.     const v5, 0x4000001
  4555.  
  4556.     .line 793
  4557.     #v5=(Integer);
  4558.     invoke-virtual {v3, v4, v5}, Lcom/blizzard/util/State;->compareAndSet(II)Z
  4559.  
  4560.     move-result v3
  4561.  
  4562.     #v3=(Boolean);
  4563.     if-eqz v3, :cond_0
  4564.  
  4565.     .line 795
  4566.     const/4 v3, 0x0
  4567.  
  4568.     #v3=(Null);
  4569.     iput-object v3, p0, Lcom/blizzard/wow/net/session/Session;->hardLoginCallbackRef:Ljava/lang/ref/Reference;
  4570.  
  4571.     .line 797
  4572.     const-string v3, "/hardLogin1"
  4573.  
  4574.     #v3=(Reference);
  4575.     invoke-direct {p0, v3}, Lcom/blizzard/wow/net/session/Session;->prepareStage1Request(Ljava/lang/String;)Lcom/blizzard/wow/net/message/Request;
  4576.  
  4577.     move-result-object v0
  4578.  
  4579.     .line 798
  4580.     .local v0, hardLogin1Message:Lcom/blizzard/wow/net/message/Request;
  4581.     #v0=(Reference);
  4582.     invoke-virtual {p0, v0}, Lcom/blizzard/wow/net/session/Session;->sendRequest(Lcom/blizzard/wow/net/message/Request;)Z
  4583.  
  4584.     move-result v1
  4585.  
  4586.     .line 799
  4587.     .local v1, success:Z
  4588.     #v1=(Boolean);
  4589.     if-eqz v1, :cond_1
  4590.  
  4591.     .line 800
  4592.     iget v2, v0, Lcom/blizzard/wow/net/message/Request;->id:I
  4593.  
  4594.     #v2=(Integer);
  4595.     iput v2, p0, Lcom/blizzard/wow/net/session/Session;->loginMsgId:I
  4596.  
  4597.     .line 808
  4598.     new-instance v2, Ljava/lang/ref/WeakReference;
  4599.  
  4600.     #v2=(UninitRef);
  4601.     invoke-direct {v2, p1}, Ljava/lang/ref/WeakReference;-><init>(Ljava/lang/Object;)V
  4602.  
  4603.     #v2=(Reference);
  4604.     iput-object v2, p0, Lcom/blizzard/wow/net/session/Session;->hardLoginCallbackRef:Ljava/lang/ref/Reference;
  4605.  
  4606.     .line 809
  4607.     const/4 v2, 0x1
  4608.  
  4609.     .line 812
  4610.     .end local v0           #hardLogin1Message:Lcom/blizzard/wow/net/message/Request;
  4611.     .end local v1           #success:Z
  4612.     :cond_0
  4613.     :goto_0
  4614.     #v0=(Conflicted);v1=(Conflicted);v2=(Boolean);v3=(Conflicted);v4=(Conflicted);v5=(Conflicted);
  4615.     return v2
  4616.  
  4617.     .line 804
  4618.     .restart local v0       #hardLogin1Message:Lcom/blizzard/wow/net/message/Request;
  4619.     .restart local v1       #success:Z
  4620.     :cond_1
  4621.     #v0=(Reference);v1=(Boolean);v2=(Null);v3=(Reference);v4=(Integer);v5=(Integer);
  4622.     invoke-direct {p0}, Lcom/blizzard/wow/net/session/Session;->hardLoginCleanup()V
  4623.  
  4624.     goto :goto_0
  4625. .end method
  4626.  
  4627. .method protected tick(J)Z
  4628.     .locals 10
  4629.     .parameter "now"
  4630.  
  4631.     .prologue
  4632.     const-wide/16 v8, 0x0
  4633.  
  4634.     #v8=(LongLo);v9=(LongHi);
  4635.     const/4 v5, 0x0
  4636.  
  4637.     #v5=(Null);
  4638.     const/4 v4, 0x1
  4639.  
  4640.     .line 186
  4641.     #v4=(One);
  4642.     iget-wide v6, p0, Lcom/blizzard/wow/net/session/Session;->connectionTimeout:J
  4643.  
  4644.     #v6=(LongLo);v7=(LongHi);
  4645.     cmp-long v6, v6, v8
  4646.  
  4647.     #v6=(Byte);
  4648.     if-lez v6, :cond_1
  4649.  
  4650.     .line 187
  4651.     iget-wide v5, p0, Lcom/blizzard/wow/net/session/Session;->connectionTimeout:J
  4652.  
  4653.     #v5=(LongLo);v6=(LongHi);
  4654.     cmp-long v5, p1, v5
  4655.  
  4656.     #v5=(Byte);
  4657.     if-ltz v5, :cond_0
  4658.  
  4659.     .line 189
  4660.     iget-object v5, p0, Lcom/blizzard/wow/net/session/Session;->conn:Lcom/blizzard/wow/net/protocol/ProtocolConnection;
  4661.  
  4662.     #v5=(Reference);
  4663.     if-eqz v5, :cond_0
  4664.  
  4665.     .line 190
  4666.     iget-object v5, p0, Lcom/blizzard/wow/net/session/Session;->conn:Lcom/blizzard/wow/net/protocol/ProtocolConnection;
  4667.  
  4668.     invoke-interface {v5}, Lcom/blizzard/wow/net/protocol/ProtocolConnection;->isOpen()Z
  4669.  
  4670.     move-result v5
  4671.  
  4672.     #v5=(Boolean);
  4673.     if-nez v5, :cond_0
  4674.  
  4675.     .line 192
  4676.     sget-object v5, Lcom/blizzard/wow/net/session/Session;->CONN_OPEN_ERROR:Lcom/blizzard/wow/net/session/Session$Error;
  4677.  
  4678.     #v5=(Reference);
  4679.     invoke-virtual {p0, v5}, Lcom/blizzard/wow/net/session/Session;->disconnect(Lcom/blizzard/wow/net/session/Session$Error;)V
  4680.  
  4681.     .line 229
  4682.     :cond_0
  4683.     :goto_0
  4684.     #v0=(Conflicted);v1=(Conflicted);v2=(Conflicted);v3=(Conflicted);v4=(Boolean);v5=(Conflicted);v6=(Conflicted);v7=(Conflicted);v8=(Conflicted);v9=(Conflicted);
  4685.     return v4
  4686.  
  4687.     .line 199
  4688.     :cond_1
  4689.     #v0=(Uninit);v1=(Uninit);v2=(Uninit);v3=(Uninit);v4=(One);v5=(Null);v6=(Byte);v7=(LongHi);v8=(LongLo);v9=(LongHi);
  4690.     iget-wide v6, p0, Lcom/blizzard/wow/net/session/Session;->loginTimeout:J
  4691.  
  4692.     #v6=(LongLo);
  4693.     cmp-long v6, v6, v8
  4694.  
  4695.     #v6=(Byte);
  4696.     if-lez v6, :cond_4
  4697.  
  4698.     .line 200
  4699.     iget-wide v6, p0, Lcom/blizzard/wow/net/session/Session;->loginTimeout:J
  4700.  
  4701.     #v6=(LongLo);
  4702.     const-wide/16 v8, 0x7530
  4703.  
  4704.     add-long/2addr v6, v8
  4705.  
  4706.     cmp-long v6, p1, v6
  4707.  
  4708.     #v6=(Byte);
  4709.     if-ltz v6, :cond_0
  4710.  
  4711.     .line 203
  4712.     sget-object v6, Lcom/blizzard/wow/service/ArmoryService;->serviceInstance:Lcom/blizzard/wow/service/ArmoryService;
  4713.  
  4714.     #v6=(Reference);
  4715.     if-eqz v6, :cond_2
  4716.  
  4717.     .line 204
  4718.     sget-object v6, Lcom/blizzard/wow/service/ArmoryService;->serviceInstance:Lcom/blizzard/wow/service/ArmoryService;
  4719.  
  4720.     invoke-virtual {v6}, Lcom/blizzard/wow/service/ArmoryService;->isWifi()Z
  4721.  
  4722.     move-result v6
  4723.  
  4724.     #v6=(Boolean);
  4725.     if-eqz v6, :cond_2
  4726.  
  4727.     .line 205
  4728.     sget-object v0, Lcom/blizzard/wow/app/ArmoryApplication;->appInstance:Lcom/blizzard/wow/app/ArmoryApplication;
  4729.  
  4730.     .line 206
  4731.     .local v0, context:Landroid/content/Context;
  4732.     #v0=(Reference);
  4733.     sget-object v6, Lcom/blizzard/wow/service/ArmoryService;->serviceInstance:Lcom/blizzard/wow/service/ArmoryService;
  4734.  
  4735.     .line 207
  4736.     #v6=(Reference);
  4737.     invoke-virtual {v6}, Lcom/blizzard/wow/service/ArmoryService;->getLocalServerPort()I
  4738.  
  4739.     move-result v2
  4740.  
  4741.     .line 208
  4742.     .local v2, port:I
  4743.     #v2=(Integer);
  4744.     new-instance v3, Lcom/blizzard/wow/net/session/Session$Error;
  4745.  
  4746.     .line 209
  4747.     #v3=(UninitRef);
  4748.     const v6, 0x7f060138
  4749.  
  4750.     #v6=(Integer);
  4751.     invoke-virtual {v0, v6}, Landroid/content/Context;->getString(I)Ljava/lang/String;
  4752.  
  4753.     move-result-object v6
  4754.  
  4755.     .line 211
  4756.     #v6=(Reference);
  4757.     const v7, 0x7f060155
  4758.  
  4759.     #v7=(Integer);
  4760.     invoke-virtual {v0, v7}, Landroid/content/Context;->getString(I)Ljava/lang/String;
  4761.  
  4762.     move-result-object v7
  4763.  
  4764.     #v7=(Reference);
  4765.     new-array v8, v4, [Ljava/lang/Object;
  4766.  
  4767.     .line 212
  4768.     #v8=(Reference);
  4769.     invoke-static {v2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
  4770.  
  4771.     move-result-object v9
  4772.  
  4773.     #v9=(Reference);
  4774.     aput-object v9, v8, v5
  4775.  
  4776.     .line 210
  4777.     invoke-static {v7, v8}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
  4778.  
  4779.     move-result-object v5
  4780.  
  4781.     .line 208
  4782.     #v5=(Reference);
  4783.     invoke-direct {v3, v6, v5}, Lcom/blizzard/wow/net/session/Session$Error;-><init>(Ljava/lang/String;Ljava/lang/String;)V
  4784.  
  4785.     .line 213
  4786.     .local v3, timeoutWifiError:Lcom/blizzard/wow/net/session/Session$Error;
  4787.     #v3=(Reference);
  4788.     invoke-virtual {p0, v3}, Lcom/blizzard/wow/net/session/Session;->disconnect(Lcom/blizzard/wow/net/session/Session$Error;)V
  4789.  
  4790.     goto :goto_0
  4791.  
  4792.     .line 215
  4793.     .end local v0           #context:Landroid/content/Context;
  4794.     .end local v2           #port:I
  4795.     .end local v3           #timeoutWifiError:Lcom/blizzard/wow/net/session/Session$Error;
  4796.     :cond_2
  4797.     #v0=(Uninit);v2=(Uninit);v3=(Uninit);v5=(Null);v6=(Conflicted);v7=(LongHi);v8=(LongLo);v9=(LongHi);
  4798.     sget-object v5, Lcom/blizzard/wow/net/session/Session;->LOGIN_TIMEOUT_ERROR:Lcom/blizzard/wow/net/session/Session$Error;
  4799.  
  4800.     #v5=(Reference);
  4801.     invoke-virtual {p0, v5}, Lcom/blizzard/wow/net/session/Session;->disconnect(Lcom/blizzard/wow/net/session/Session$Error;)V
  4802.  
  4803.     goto :goto_0
  4804.  
  4805.     .line 224
  4806.     .local v1, listenerRef:Ljava/lang/ref/Reference;,"Ljava/lang/ref/Reference<+Lcom/blizzard/wow/net/session/SessionListener;>;"
  4807.     :cond_3
  4808.     #v1=(Reference);v4=(Reference);v5=(Null);
  4809.     iget-object v6, p0, Lcom/blizzard/wow/net/session/Session;->listeners:Ljava/util/ArrayList;
  4810.  
  4811.     #v6=(Reference);
  4812.     monitor-enter v6
  4813.  
  4814.     .line 225
  4815.     :try_start_0
  4816.     iget-object v4, p0, Lcom/blizzard/wow/net/session/Session;->listeners:Ljava/util/ArrayList;
  4817.  
  4818.     invoke-virtual {v4, v1}, Ljava/util/ArrayList;->remove(Ljava/lang/Object;)Z
  4819.  
  4820.     .line 224
  4821.     monitor-exit v6
  4822.     :try_end_0
  4823.     .catchall {:try_start_0 .. :try_end_0} :catchall_0
  4824.  
  4825.     .line 223
  4826.     .end local v1           #listenerRef:Ljava/lang/ref/Reference;,"Ljava/lang/ref/Reference<+Lcom/blizzard/wow/net/session/SessionListener;>;"
  4827.     :cond_4
  4828.     #v1=(Conflicted);v4=(Conflicted);v6=(Conflicted);
  4829.     iget-object v4, p0, Lcom/blizzard/wow/net/session/Session;->listenersRefQueue:Ljava/lang/ref/ReferenceQueue;
  4830.  
  4831.     #v4=(Reference);
  4832.     invoke-virtual {v4}, Ljava/lang/ref/ReferenceQueue;->poll()Ljava/lang/ref/Reference;
  4833.  
  4834.     move-result-object v1
  4835.  
  4836.     .restart local v1       #listenerRef:Ljava/lang/ref/Reference;,"Ljava/lang/ref/Reference<+Lcom/blizzard/wow/net/session/SessionListener;>;"
  4837.     #v1=(Reference);
  4838.     if-nez v1, :cond_3
  4839.  
  4840.     move v4, v5
  4841.  
  4842.     .line 229
  4843.     #v4=(Null);
  4844.     goto :goto_0
  4845.  
  4846.     .line 224
  4847.     :catchall_0
  4848.     #v4=(Reference);v6=(Reference);
  4849.     move-exception v4
  4850.  
  4851.     :try_start_1
  4852.     monitor-exit v6
  4853.     :try_end_1
  4854.     .catchall {:try_start_1 .. :try_end_1} :catchall_0
  4855.  
  4856.     throw v4
  4857. .end method
  4858.  
  4859. */}
Add Comment
Please, Sign In to add comment