VoIPService.smali

.class public Lim/tpelyyftgw/messenger/voip/VoIPService;
.super Lim/tpelyyftgw/messenger/voip/VoIPBaseService;
.source "VoIPService.java"


# static fields
.field public static final CALL_MAX_LAYER:I

.field public static final CALL_MIN_LAYER:I = 0x41

.field public static final STATE_BUSY:I = 0x11

.field public static final STATE_EXCHANGING_KEYS:I = 0xc

.field public static final STATE_HANGING_UP:I = 0xa

.field public static final STATE_REQUESTING:I = 0xe

.field public static final STATE_RINGING:I = 0x10

.field public static final STATE_WAITING:I = 0xd

.field public static final STATE_WAITING_INCOMING:I = 0xf

.field public static callIShouldHavePutIntoIntent:Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;


# instance fields
.field private a_or_b:[B

.field private authKey:[B

.field private call:Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;

.field private callReqId:I

.field private debugLog:Ljava/lang/String;

.field private delayedStartOutgoingCall:Ljava/lang/Runnable;

.field private endCallAfterRequest:Z

.field private forceRating:Z

.field private g_a:[B

.field private g_a_hash:[B

.field private groupCallEncryptionKey:[B

.field private groupCallKeyFingerprint:J

.field private groupUsersToAdd:Ljava/util/List;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/List<",
            "Ljava/lang/Integer;",
            ">;"
        }
    .end annotation
.end field

.field private joiningGroupCall:Z

.field private keyFingerprint:J

.field private needSendDebugLog:Z

.field private peerCapabilities:I

.field private pendingUpdates:Ljava/util/ArrayList;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/ArrayList<",
            "Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;",
            ">;"
        }
    .end annotation
.end field

.field private startedRinging:Z

.field private upgrading:Z

.field private user:Lim/tpelyyftgw/tgnet/TLRPC$User;


# direct methods
.method static constructor <clinit>()V
    .registers 1

    .line 59
    invoke-static {}, Lim/tpelyyftgw/messenger/voip/VoIPController;->getConnectionMaxLayer()I

    move-result v0

    sput v0, Lim/tpelyyftgw/messenger/voip/VoIPService;->CALL_MAX_LAYER:I

    return-void
.end method

.method public constructor <init>()V
    .registers 3

    .line 56
    invoke-direct {p0}, Lim/tpelyyftgw/messenger/voip/VoIPBaseService;-><init>()V

    .line 82
    const/4 v0, 0x0

    iput-boolean v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->needSendDebugLog:Z

    .line 83
    iput-boolean v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->endCallAfterRequest:Z

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

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

    iput-object v1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->pendingUpdates:Ljava/util/ArrayList;

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

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

    iput-object v1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->groupUsersToAdd:Ljava/util/List;

    .line 95
    iput-boolean v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->startedRinging:Z

    return-void
.end method

.method static synthetic access$002(Lim/tpelyyftgw/messenger/voip/VoIPService;Ljava/lang/Runnable;)Ljava/lang/Runnable;
    .registers 2
    .param p0, "x0"    # Lim/tpelyyftgw/messenger/voip/VoIPService;
    .param p1, "x1"    # Ljava/lang/Runnable;

    .line 56
    iput-object p1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->delayedStartOutgoingCall:Ljava/lang/Runnable;

    return-object p1
.end method

.method static synthetic access$100(Lim/tpelyyftgw/messenger/voip/VoIPService;)V
    .registers 1
    .param p0, "x0"    # Lim/tpelyyftgw/messenger/voip/VoIPService;

    .line 56
    invoke-direct {p0}, Lim/tpelyyftgw/messenger/voip/VoIPService;->startOutgoingCall()V

    return-void
.end method

.method static synthetic access$1000(Lim/tpelyyftgw/messenger/voip/VoIPService;)V
    .registers 1
    .param p0, "x0"    # Lim/tpelyyftgw/messenger/voip/VoIPService;

    .line 56
    invoke-direct {p0}, Lim/tpelyyftgw/messenger/voip/VoIPService;->initiateActualEncryptedCall()V

    return-void
.end method

.method static synthetic access$202(Lim/tpelyyftgw/messenger/voip/VoIPService;I)I
    .registers 2
    .param p0, "x0"    # Lim/tpelyyftgw/messenger/voip/VoIPService;
    .param p1, "x1"    # I

    .line 56
    iput p1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->callReqId:I

    return p1
.end method

.method static synthetic access$300(Lim/tpelyyftgw/messenger/voip/VoIPService;)Z
    .registers 2
    .param p0, "x0"    # Lim/tpelyyftgw/messenger/voip/VoIPService;

    .line 56
    iget-boolean v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->endCallAfterRequest:Z

    return v0
.end method

.method static synthetic access$400(Lim/tpelyyftgw/messenger/voip/VoIPService;)Lim/tpelyyftgw/tgnet/TLRPC$User;
    .registers 2
    .param p0, "x0"    # Lim/tpelyyftgw/messenger/voip/VoIPService;

    .line 56
    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->user:Lim/tpelyyftgw/tgnet/TLRPC$User;

    return-object v0
.end method

.method static synthetic access$502(Lim/tpelyyftgw/messenger/voip/VoIPService;[B)[B
    .registers 2
    .param p0, "x0"    # Lim/tpelyyftgw/messenger/voip/VoIPService;
    .param p1, "x1"    # [B

    .line 56
    iput-object p1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->g_a:[B

    return-object p1
.end method

.method static synthetic access$600(Lim/tpelyyftgw/messenger/voip/VoIPService;)Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;
    .registers 2
    .param p0, "x0"    # Lim/tpelyyftgw/messenger/voip/VoIPService;

    .line 56
    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->call:Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;

    return-object v0
.end method

.method static synthetic access$602(Lim/tpelyyftgw/messenger/voip/VoIPService;Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;)Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;
    .registers 2
    .param p0, "x0"    # Lim/tpelyyftgw/messenger/voip/VoIPService;
    .param p1, "x1"    # Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;

    .line 56
    iput-object p1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->call:Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;

    return-object p1
.end method

.method static synthetic access$702(Lim/tpelyyftgw/messenger/voip/VoIPService;[B)[B
    .registers 2
    .param p0, "x0"    # Lim/tpelyyftgw/messenger/voip/VoIPService;
    .param p1, "x1"    # [B

    .line 56
    iput-object p1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->a_or_b:[B

    return-object p1
.end method

.method static synthetic access$800(Lim/tpelyyftgw/messenger/voip/VoIPService;)Ljava/util/ArrayList;
    .registers 2
    .param p0, "x0"    # Lim/tpelyyftgw/messenger/voip/VoIPService;

    .line 56
    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->pendingUpdates:Ljava/util/ArrayList;

    return-object v0
.end method

.method static synthetic access$902(Lim/tpelyyftgw/messenger/voip/VoIPService;[B)[B
    .registers 2
    .param p0, "x0"    # Lim/tpelyyftgw/messenger/voip/VoIPService;
    .param p1, "x1"    # [B

    .line 56
    iput-object p1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->g_a_hash:[B

    return-object p1
.end method

.method private acknowledgeCall(Z)V
    .registers 6
    .param p1, "startRinging"    # Z

    .line 383
    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->call:Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;

    instance-of v0, v0, Lim/tpelyyftgw/tgnet/TLRPC$TL_phoneCallDiscarded;

    if-eqz v0, :cond_2b

    .line 384
    sget-boolean v0, Lim/tpelyyftgw/messenger/BuildVars;->LOGS_ENABLED:Z

    if-eqz v0, :cond_27

    .line 385
    new-instance v0, Ljava/lang/StringBuilder;

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

    const-string v1, "Call "

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

    iget-object v1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->call:Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;

    iget-wide v1, v1, Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;->id:J

    invoke-virtual {v0, v1, v2}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;

    const-string v1, " was discarded before the service started, stopping"

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

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

    move-result-object v0

    invoke-static {v0}, Lim/tpelyyftgw/messenger/FileLog;->w(Ljava/lang/String;)V

    .line 387
    :cond_27
    invoke-virtual {p0}, Lim/tpelyyftgw/messenger/voip/VoIPService;->stopSelf()V

    .line 388
    return-void

    .line 390
    :cond_2b
    sget v0, Landroid/os/Build$VERSION;->SDK_INT:I

    const/16 v1, 0x13

    if-lt v0, v1, :cond_5a

    invoke-static {}, Lim/tpelyyftgw/messenger/XiaomiUtilities;->isMIUI()Z

    move-result v0

    if-eqz v0, :cond_5a

    const/16 v0, 0x2724

    invoke-static {v0}, Lim/tpelyyftgw/messenger/XiaomiUtilities;->isCustomPermissionGranted(I)Z

    move-result v0

    if-nez v0, :cond_5a

    .line 391
    const-string v0, "keyguard"

    invoke-virtual {p0, v0}, Lim/tpelyyftgw/messenger/voip/VoIPService;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Landroid/app/KeyguardManager;

    invoke-virtual {v0}, Landroid/app/KeyguardManager;->inKeyguardRestrictedInputMode()Z

    move-result v0

    if-eqz v0, :cond_5a

    .line 392
    sget-boolean v0, Lim/tpelyyftgw/messenger/BuildVars;->LOGS_ENABLED:Z

    if-eqz v0, :cond_56

    .line 393
    const-string v0, "MIUI: no permission to show when locked but the screen is locked. \u00af\\_(\u30c4)_/\u00af"

    invoke-static {v0}, Lim/tpelyyftgw/messenger/FileLog;->e(Ljava/lang/String;)V

    .line 394
    :cond_56
    invoke-virtual {p0}, Lim/tpelyyftgw/messenger/voip/VoIPService;->stopSelf()V

    .line 395
    return-void

    .line 398
    :cond_5a
    new-instance v0, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_receivedCall;

    invoke-direct {v0}, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_receivedCall;-><init>()V

    .line 399
    .local v0, "req":Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_receivedCall;
    new-instance v1, Lim/tpelyyftgw/tgnet/TLRPC$TL_inputPhoneCall;

    invoke-direct {v1}, Lim/tpelyyftgw/tgnet/TLRPC$TL_inputPhoneCall;-><init>()V

    iput-object v1, v0, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_receivedCall;->peer:Lim/tpelyyftgw/tgnet/TLRPC$TL_inputPhoneCall;

    .line 400
    iget-object v1, v0, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_receivedCall;->peer:Lim/tpelyyftgw/tgnet/TLRPC$TL_inputPhoneCall;

    iget-object v2, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->call:Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;

    iget-wide v2, v2, Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;->id:J

    iput-wide v2, v1, Lim/tpelyyftgw/tgnet/TLRPC$TL_inputPhoneCall;->id:J

    .line 401
    iget-object v1, v0, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_receivedCall;->peer:Lim/tpelyyftgw/tgnet/TLRPC$TL_inputPhoneCall;

    iget-object v2, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->call:Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;

    iget-wide v2, v2, Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;->access_hash:J

    iput-wide v2, v1, Lim/tpelyyftgw/tgnet/TLRPC$TL_inputPhoneCall;->access_hash:J

    .line 402
    iget v1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->currentAccount:I

    invoke-static {v1}, Lim/tpelyyftgw/tgnet/ConnectionsManager;->getInstance(I)Lim/tpelyyftgw/tgnet/ConnectionsManager;

    move-result-object v1

    new-instance v2, Lim/tpelyyftgw/messenger/voip/VoIPService$5;

    invoke-direct {v2, p0, p1}, Lim/tpelyyftgw/messenger/voip/VoIPService$5;-><init>(Lim/tpelyyftgw/messenger/voip/VoIPService;Z)V

    const/4 v3, 0x2

    invoke-virtual {v1, v0, v2, v3}, Lim/tpelyyftgw/tgnet/ConnectionsManager;->sendRequest(Lim/tpelyyftgw/tgnet/TLObject;Lim/tpelyyftgw/tgnet/RequestDelegate;I)I

    .line 433
    return-void
.end method

.method private convertDataSavingMode(I)I
    .registers 3
    .param p1, "mode"    # I

    .line 936
    const/4 v0, 0x3

    if-eq p1, v0, :cond_4

    .line 937
    return p1

    .line 938
    :cond_4
    invoke-static {}, Lim/tpelyyftgw/messenger/ApplicationLoader;->isRoaming()Z

    move-result v0

    return v0
.end method

.method private dumpCallObject()V
    .registers 7

    .line 697
    :try_start_0
    sget-boolean v0, Lim/tpelyyftgw/messenger/BuildVars;->LOGS_ENABLED:Z

    if-eqz v0, :cond_34

    .line 698
    const-class v0, Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;

    invoke-virtual {v0}, Ljava/lang/Class;->getFields()[Ljava/lang/reflect/Field;

    move-result-object v0

    .line 699
    .local v0, "flds":[Ljava/lang/reflect/Field;
    array-length v1, v0

    const/4 v2, 0x0

    :goto_c
    if-ge v2, v1, :cond_34

    aget-object v3, v0, v2

    .line 700
    .local v3, "f":Ljava/lang/reflect/Field;
    new-instance v4, Ljava/lang/StringBuilder;

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

    invoke-virtual {v3}, Ljava/lang/reflect/Field;->getName()Ljava/lang/String;

    move-result-object v5

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

    const-string v5, " = "

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

    iget-object v5, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->call:Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;

    invoke-virtual {v3, v5}, Ljava/lang/reflect/Field;->get(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v5

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

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

    move-result-object v4

    invoke-static {v4}, Lim/tpelyyftgw/messenger/FileLog;->d(Ljava/lang/String;)V
    :try_end_31
    .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_31} :catch_35

    .line 699
    .end local v3    # "f":Ljava/lang/reflect/Field;
    add-int/lit8 v2, v2, 0x1

    goto :goto_c

    .line 707
    .end local v0    # "flds":[Ljava/lang/reflect/Field;
    :cond_34
    goto :goto_3d

    .line 703
    :catch_35
    move-exception v0

    .line 704
    .local v0, "x":Ljava/lang/Exception;
    sget-boolean v1, Lim/tpelyyftgw/messenger/BuildVars;->LOGS_ENABLED:Z

    if-eqz v1, :cond_3d

    .line 705
    invoke-static {v0}, Lim/tpelyyftgw/messenger/FileLog;->e(Ljava/lang/Throwable;)V

    .line 708
    .end local v0    # "x":Ljava/lang/Exception;
    :cond_3d
    :goto_3d
    return-void
.end method

.method private getEmoji()[Ljava/lang/String;
    .registers 5

    .line 1155
    new-instance v0, Ljava/io/ByteArrayOutputStream;

    invoke-direct {v0}, Ljava/io/ByteArrayOutputStream;-><init>()V

    .line 1157
    .local v0, "os":Ljava/io/ByteArrayOutputStream;
    :try_start_5
    iget-object v1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->authKey:[B

    invoke-virtual {v0, v1}, Ljava/io/ByteArrayOutputStream;->write([B)V

    .line 1158
    iget-object v1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->g_a:[B

    invoke-virtual {v0, v1}, Ljava/io/ByteArrayOutputStream;->write([B)V
    :try_end_f
    .catch Ljava/io/IOException; {:try_start_5 .. :try_end_f} :catch_10

    .line 1160
    goto :goto_11

    .line 1159
    :catch_10
    move-exception v1

    .line 1161
    :goto_11
    invoke-virtual {v0}, Ljava/io/ByteArrayOutputStream;->toByteArray()[B

    move-result-object v1

    const/4 v2, 0x0

    invoke-virtual {v0}, Ljava/io/ByteArrayOutputStream;->size()I

    move-result v3

    invoke-static {v1, v2, v3}, Lim/tpelyyftgw/messenger/Utilities;->computeSHA256([BII)[B

    move-result-object v1

    invoke-static {v1}, Lim/tpelyyftgw/messenger/voip/EncryptionKeyEmojifier;->emojifyForCall([B)[Ljava/lang/String;

    move-result-object v1

    return-object v1
.end method

.method public static getSharedInstance()Lim/tpelyyftgw/messenger/voip/VoIPService;
    .registers 1

    .line 224
    sget-object v0, Lim/tpelyyftgw/messenger/voip/VoIPService;->sharedInstance:Lim/tpelyyftgw/messenger/voip/VoIPBaseService;

    instance-of v0, v0, Lim/tpelyyftgw/messenger/voip/VoIPService;

    if-eqz v0, :cond_b

    sget-object v0, Lim/tpelyyftgw/messenger/voip/VoIPService;->sharedInstance:Lim/tpelyyftgw/messenger/voip/VoIPBaseService;

    check-cast v0, Lim/tpelyyftgw/messenger/voip/VoIPService;

    goto :goto_c

    :cond_b
    const/4 v0, 0x0

    :goto_c
    return-object v0
.end method

.method private initiateActualEncryptedCall()V
    .registers 16

    .line 942
    const-string v0, "dbg_force_tcp_in_calls"

    const-string v1, "calls_access_hashes"

    const-string v2, " "

    iget-object v3, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->timeoutRunnable:Ljava/lang/Runnable;

    const/4 v4, 0x0

    if-eqz v3, :cond_12

    .line 943
    iget-object v3, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->timeoutRunnable:Ljava/lang/Runnable;

    invoke-static {v3}, Lim/tpelyyftgw/messenger/AndroidUtilities;->cancelRunOnUIThread(Ljava/lang/Runnable;)V

    .line 944
    iput-object v4, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->timeoutRunnable:Ljava/lang/Runnable;

    .line 947
    :cond_12
    :try_start_12
    sget-boolean v3, Lim/tpelyyftgw/messenger/BuildVars;->LOGS_ENABLED:Z

    if-eqz v3, :cond_2c

    .line 948
    new-instance v3, Ljava/lang/StringBuilder;

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

    const-string v5, "InitCall: keyID="

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

    iget-wide v5, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->keyFingerprint:J

    invoke-virtual {v3, v5, v6}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;

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

    move-result-object v3

    invoke-static {v3}, Lim/tpelyyftgw/messenger/FileLog;->d(Ljava/lang/String;)V

    .line 950
    :cond_2c
    iget v3, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->currentAccount:I

    invoke-static {v3}, Lim/tpelyyftgw/messenger/MessagesController;->getNotificationsSettings(I)Landroid/content/SharedPreferences;

    move-result-object v3

    .line 951
    .local v3, "nprefs":Landroid/content/SharedPreferences;
    new-instance v5, Ljava/util/HashSet;

    sget-object v6, Ljava/util/Collections;->EMPTY_SET:Ljava/util/Set;

    invoke-interface {v3, v1, v6}, Landroid/content/SharedPreferences;->getStringSet(Ljava/lang/String;Ljava/util/Set;)Ljava/util/Set;

    move-result-object v6

    invoke-direct {v5, v6}, Ljava/util/HashSet;-><init>(Ljava/util/Collection;)V

    .line 952
    .local v5, "hashes":Ljava/util/HashSet;, "Ljava/util/HashSet<Ljava/lang/String;>;"
    new-instance v6, Ljava/lang/StringBuilder;

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

    iget-object v7, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->call:Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;

    iget-wide v7, v7, Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;->id:J

    invoke-virtual {v6, v7, v8}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;

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

    iget-object v7, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->call:Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;

    iget-wide v7, v7, Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;->access_hash:J

    invoke-virtual {v6, v7, v8}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;

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

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

    move-result-wide v7

    invoke-virtual {v6, v7, v8}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;

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

    move-result-object v6

    invoke-virtual {v5, v6}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z

    .line 953
    :goto_64
    invoke-virtual {v5}, Ljava/util/HashSet;->size()I

    move-result v6

    const/16 v7, 0x14

    if-le v6, v7, :cond_a6

    .line 954
    const/4 v6, 0x0

    .line 955
    .local v6, "oldest":Ljava/lang/String;
    const-wide v7, 0x7fffffffffffffffL

    .line 956
    .local v7, "oldestTime":J
    invoke-virtual {v5}, Ljava/util/HashSet;->iterator()Ljava/util/Iterator;

    move-result-object v9

    .line 957
    .local v9, "itr":Ljava/util/Iterator;, "Ljava/util/Iterator<Ljava/lang/String;>;"
    :goto_76
    invoke-interface {v9}, Ljava/util/Iterator;->hasNext()Z

    move-result v10

    if-eqz v10, :cond_a0

    .line 958
    invoke-interface {v9}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v10

    check-cast v10, Ljava/lang/String;

    .line 959
    .local v10, "item":Ljava/lang/String;
    invoke-virtual {v10, v2}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String;

    move-result-object v11

    .line 960
    .local v11, "s":[Ljava/lang/String;
    array-length v12, v11

    const/4 v13, 0x2

    if-ge v12, v13, :cond_8e

    .line 961
    invoke-interface {v9}, Ljava/util/Iterator;->remove()V
    :try_end_8d
    .catch Ljava/lang/Exception; {:try_start_12 .. :try_end_8d} :catch_190

    goto :goto_9f

    .line 964
    :cond_8e
    :try_start_8e
    aget-object v12, v11, v13

    invoke-static {v12}, Ljava/lang/Long;->parseLong(Ljava/lang/String;)J

    move-result-wide v12
    :try_end_94
    .catch Ljava/lang/Exception; {:try_start_8e .. :try_end_94} :catch_9b

    .line 965
    .local v12, "t":J
    cmp-long v14, v12, v7

    if-gez v14, :cond_9a

    .line 966
    move-wide v7, v12

    .line 967
    move-object v6, v10

    .line 971
    .end local v12    # "t":J
    :cond_9a
    goto :goto_9f

    .line 969
    :catch_9b
    move-exception v12

    .line 970
    .local v12, "x":Ljava/lang/Exception;
    :try_start_9c
    invoke-interface {v9}, Ljava/util/Iterator;->remove()V

    .line 973
    .end local v10    # "item":Ljava/lang/String;
    .end local v11    # "s":[Ljava/lang/String;
    .end local v12    # "x":Ljava/lang/Exception;
    :goto_9f
    goto :goto_76

    .line 974
    :cond_a0
    if-eqz v6, :cond_a5

    .line 975
    invoke-virtual {v5, v6}, Ljava/util/HashSet;->remove(Ljava/lang/Object;)Z

    .line 976
    .end local v6    # "oldest":Ljava/lang/String;
    .end local v7    # "oldestTime":J
    .end local v9    # "itr":Ljava/util/Iterator;, "Ljava/util/Iterator<Ljava/lang/String;>;"
    :cond_a5
    goto :goto_64

    .line 977
    :cond_a6
    invoke-interface {v3}, Landroid/content/SharedPreferences;->edit()Landroid/content/SharedPreferences$Editor;

    move-result-object v2

    invoke-interface {v2, v1, v5}, Landroid/content/SharedPreferences$Editor;->putStringSet(Ljava/lang/String;Ljava/util/Set;)Landroid/content/SharedPreferences$Editor;

    move-result-object v1

    invoke-interface {v1}, Landroid/content/SharedPreferences$Editor;->commit()Z

    .line 978
    invoke-static {}, Lim/tpelyyftgw/messenger/MessagesController;->getGlobalMainSettings()Landroid/content/SharedPreferences;

    move-result-object v1

    .line 979
    .local v1, "preferences":Landroid/content/SharedPreferences;
    iget-object v6, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->controller:Lim/tpelyyftgw/messenger/voip/VoIPController;

    iget v2, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->currentAccount:I

    invoke-static {v2}, Lim/tpelyyftgw/messenger/MessagesController;->getInstance(I)Lim/tpelyyftgw/messenger/MessagesController;

    move-result-object v2

    iget v2, v2, Lim/tpelyyftgw/messenger/MessagesController;->callPacketTimeout:I
    :try_end_bf
    .catch Ljava/lang/Exception; {:try_start_9c .. :try_end_bf} :catch_190

    int-to-double v7, v2

    const-wide v9, 0x408f400000000000L    # 1000.0

    invoke-static {v7, v8}, Ljava/lang/Double;->isNaN(D)Z

    div-double/2addr v7, v9

    :try_start_c9
    iget v2, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->currentAccount:I

    invoke-static {v2}, Lim/tpelyyftgw/messenger/MessagesController;->getInstance(I)Lim/tpelyyftgw/messenger/MessagesController;

    move-result-object v2

    iget v2, v2, Lim/tpelyyftgw/messenger/MessagesController;->callConnectTimeout:I
    :try_end_d1
    .catch Ljava/lang/Exception; {:try_start_c9 .. :try_end_d1} :catch_190

    int-to-double v11, v2

    invoke-static {v11, v12}, Ljava/lang/Double;->isNaN(D)Z

    div-double v9, v11, v9

    :try_start_d7
    const-string v2, "VoipDataSaving"

    .line 980
    invoke-static {}, Lim/tpelyyftgw/ui/components/voip/VoIPHelper;->getDataSavingDefault()I

    move-result v11

    invoke-interface {v1, v2, v11}, Landroid/content/SharedPreferences;->getInt(Ljava/lang/String;I)I

    move-result v2

    invoke-direct {p0, v2}, Lim/tpelyyftgw/messenger/voip/VoIPService;->convertDataSavingMode(I)I

    move-result v11

    iget-object v2, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->call:Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;

    iget-wide v12, v2, Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;->id:J

    .line 979
    invoke-virtual/range {v6 .. v13}, Lim/tpelyyftgw/messenger/voip/VoIPController;->setConfig(DDIJ)V

    .line 981
    iget-object v2, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->controller:Lim/tpelyyftgw/messenger/voip/VoIPController;

    iget-object v6, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->authKey:[B

    iget-boolean v7, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->isOutgoing:Z

    invoke-virtual {v2, v6, v7}, Lim/tpelyyftgw/messenger/voip/VoIPController;->setEncryptionKey([BZ)V

    .line 982
    iget-object v2, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->call:Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;

    iget-object v2, v2, Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;->connections:Ljava/util/ArrayList;

    iget-object v6, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->call:Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;

    iget-object v6, v6, Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;->connections:Ljava/util/ArrayList;

    invoke-virtual {v6}, Ljava/util/ArrayList;->size()I

    move-result v6

    new-array v6, v6, [Lim/tpelyyftgw/tgnet/TLRPC$TL_phoneConnection;

    invoke-virtual {v2, v6}, Ljava/util/ArrayList;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;

    move-result-object v2

    check-cast v2, [Lim/tpelyyftgw/tgnet/TLRPC$TL_phoneConnection;

    .line 984
    .local v2, "endpoints":[Lim/tpelyyftgw/tgnet/TLRPC$TL_phoneConnection;
    invoke-static {}, Lim/tpelyyftgw/messenger/MessagesController;->getGlobalMainSettings()Landroid/content/SharedPreferences;

    move-result-object v6

    .line 986
    .local v6, "prefs":Landroid/content/SharedPreferences;
    iget-object v7, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->controller:Lim/tpelyyftgw/messenger/voip/VoIPController;

    iget-object v8, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->call:Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;

    iget-boolean v8, v8, Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;->p2p_allowed:Z

    const/4 v9, 0x0

    invoke-interface {v6, v0, v9}, Landroid/content/SharedPreferences;->getBoolean(Ljava/lang/String;Z)Z

    move-result v10

    iget-object v11, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->call:Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;

    iget-object v11, v11, Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;->protocol:Lim/tpelyyftgw/tgnet/TLRPC$TL_phoneCallProtocol;

    iget v11, v11, Lim/tpelyyftgw/tgnet/TLRPC$TL_phoneCallProtocol;->max_layer:I

    invoke-virtual {v7, v2, v8, v10, v11}, Lim/tpelyyftgw/messenger/voip/VoIPController;->setRemoteEndpoints([Lim/tpelyyftgw/tgnet/TLRPC$TL_phoneConnection;ZZI)V

    .line 987
    invoke-interface {v6, v0, v9}, Landroid/content/SharedPreferences;->getBoolean(Ljava/lang/String;Z)Z

    move-result v0

    if-eqz v0, :cond_12f

    .line 988
    new-instance v0, Lim/tpelyyftgw/messenger/voip/VoIPService$14;

    invoke-direct {v0, p0}, Lim/tpelyyftgw/messenger/voip/VoIPService$14;-><init>(Lim/tpelyyftgw/messenger/voip/VoIPService;)V

    invoke-static {v0}, Lim/tpelyyftgw/messenger/AndroidUtilities;->runOnUIThread(Ljava/lang/Runnable;)V

    .line 995
    :cond_12f
    const-string/jumbo v0, "proxy_enabled"

    invoke-interface {v6, v0, v9}, Landroid/content/SharedPreferences;->getBoolean(Ljava/lang/String;Z)Z

    move-result v0

    if-eqz v0, :cond_175

    const-string/jumbo v0, "proxy_enabled_calls"

    invoke-interface {v6, v0, v9}, Landroid/content/SharedPreferences;->getBoolean(Ljava/lang/String;Z)Z

    move-result v0

    if-eqz v0, :cond_175

    .line 996
    const-string/jumbo v0, "proxy_ip"

    invoke-interface {v6, v0, v4}, Landroid/content/SharedPreferences;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;

    move-result-object v0

    .line 997
    .local v0, "server":Ljava/lang/String;
    const-string/jumbo v7, "proxy_secret"

    invoke-interface {v6, v7, v4}, Landroid/content/SharedPreferences;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;

    move-result-object v7

    .line 998
    .local v7, "secret":Ljava/lang/String;
    invoke-static {v0}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z

    move-result v8

    if-nez v8, :cond_175

    invoke-static {v7}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z

    move-result v8

    if-eqz v8, :cond_175

    .line 999
    iget-object v8, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->controller:Lim/tpelyyftgw/messenger/voip/VoIPController;

    const-string/jumbo v10, "proxy_port"

    invoke-interface {v6, v10, v9}, Landroid/content/SharedPreferences;->getInt(Ljava/lang/String;I)I

    move-result v9

    const-string/jumbo v10, "proxy_user"

    invoke-interface {v6, v10, v4}, Landroid/content/SharedPreferences;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;

    move-result-object v10

    const-string/jumbo v11, "proxy_pass"

    invoke-interface {v6, v11, v4}, Landroid/content/SharedPreferences;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;

    move-result-object v4

    invoke-virtual {v8, v0, v9, v10, v4}, Lim/tpelyyftgw/messenger/voip/VoIPController;->setProxy(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V

    .line 1002
    .end local v0    # "server":Ljava/lang/String;
    .end local v7    # "secret":Ljava/lang/String;
    :cond_175
    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->controller:Lim/tpelyyftgw/messenger/voip/VoIPController;

    invoke-virtual {v0}, Lim/tpelyyftgw/messenger/voip/VoIPController;->start()V

    .line 1003
    invoke-virtual {p0}, Lim/tpelyyftgw/messenger/voip/VoIPService;->updateNetworkType()V

    .line 1004
    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->controller:Lim/tpelyyftgw/messenger/voip/VoIPController;

    invoke-virtual {v0}, Lim/tpelyyftgw/messenger/voip/VoIPController;->connect()V

    .line 1005
    const/4 v0, 0x1

    iput-boolean v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->controllerStarted:Z

    .line 1006
    new-instance v0, Lim/tpelyyftgw/messenger/voip/VoIPService$15;

    invoke-direct {v0, p0}, Lim/tpelyyftgw/messenger/voip/VoIPService$15;-><init>(Lim/tpelyyftgw/messenger/voip/VoIPService;)V

    const-wide/16 v7, 0x1388

    invoke-static {v0, v7, v8}, Lim/tpelyyftgw/messenger/AndroidUtilities;->runOnUIThread(Ljava/lang/Runnable;J)V
    :try_end_18f
    .catch Ljava/lang/Exception; {:try_start_d7 .. :try_end_18f} :catch_190

    .line 1020
    .end local v1    # "preferences":Landroid/content/SharedPreferences;
    .end local v2    # "endpoints":[Lim/tpelyyftgw/tgnet/TLRPC$TL_phoneConnection;
    .end local v3    # "nprefs":Landroid/content/SharedPreferences;
    .end local v5    # "hashes":Ljava/util/HashSet;, "Ljava/util/HashSet<Ljava/lang/String;>;"
    .end local v6    # "prefs":Landroid/content/SharedPreferences;
    goto :goto_19d

    .line 1015
    :catch_190
    move-exception v0

    .line 1016
    .local v0, "x":Ljava/lang/Exception;
    sget-boolean v1, Lim/tpelyyftgw/messenger/BuildVars;->LOGS_ENABLED:Z

    if-eqz v1, :cond_19a

    .line 1017
    const-string v1, "error starting call"

    invoke-static {v1, v0}, Lim/tpelyyftgw/messenger/FileLog;->e(Ljava/lang/String;Ljava/lang/Throwable;)V

    .line 1019
    :cond_19a
    invoke-virtual {p0}, Lim/tpelyyftgw/messenger/voip/VoIPService;->callFailed()V

    .line 1021
    .end local v0    # "x":Ljava/lang/Exception;
    :goto_19d
    return-void
.end method

.method private processAcceptedCall()V
    .registers 13

    .line 874
    const/16 v0, 0xc

    invoke-virtual {p0, v0}, Lim/tpelyyftgw/messenger/voip/VoIPService;->dispatchStateChanged(I)V

    .line 875
    new-instance v0, Ljava/math/BigInteger;

    iget v1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->currentAccount:I

    invoke-static {v1}, Lim/tpelyyftgw/messenger/MessagesStorage;->getInstance(I)Lim/tpelyyftgw/messenger/MessagesStorage;

    move-result-object v1

    invoke-virtual {v1}, Lim/tpelyyftgw/messenger/MessagesStorage;->getSecretPBytes()[B

    move-result-object v1

    const/4 v2, 0x1

    invoke-direct {v0, v2, v1}, Ljava/math/BigInteger;-><init>(I[B)V

    .line 876
    .local v0, "p":Ljava/math/BigInteger;
    new-instance v1, Ljava/math/BigInteger;

    iget-object v3, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->call:Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;

    iget-object v3, v3, Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;->g_b:[B

    invoke-direct {v1, v2, v3}, Ljava/math/BigInteger;-><init>(I[B)V

    .line 878
    .local v1, "i_authKey":Ljava/math/BigInteger;
    invoke-static {v1, v0}, Lim/tpelyyftgw/messenger/Utilities;->isGoodGaAndGb(Ljava/math/BigInteger;Ljava/math/BigInteger;)Z

    move-result v3

    if-nez v3, :cond_32

    .line 879
    sget-boolean v2, Lim/tpelyyftgw/messenger/BuildVars;->LOGS_ENABLED:Z

    if-eqz v2, :cond_2e

    .line 880
    const-string/jumbo v2, "stopping VoIP service, bad Ga and Gb"

    invoke-static {v2}, Lim/tpelyyftgw/messenger/FileLog;->w(Ljava/lang/String;)V

    .line 882
    :cond_2e
    invoke-virtual {p0}, Lim/tpelyyftgw/messenger/voip/VoIPService;->callFailed()V

    .line 883
    return-void

    .line 886
    :cond_32
    new-instance v3, Ljava/math/BigInteger;

    iget-object v4, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->a_or_b:[B

    invoke-direct {v3, v2, v4}, Ljava/math/BigInteger;-><init>(I[B)V

    invoke-virtual {v1, v3, v0}, Ljava/math/BigInteger;->modPow(Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;

    move-result-object v1

    .line 888
    invoke-virtual {v1}, Ljava/math/BigInteger;->toByteArray()[B

    move-result-object v3

    .line 889
    .local v3, "authKey":[B
    array-length v4, v3

    const/4 v5, 0x0

    const/16 v6, 0x100

    if-le v4, v6, :cond_50

    .line 890
    new-array v4, v6, [B

    .line 891
    .local v4, "correctedAuth":[B
    array-length v7, v3

    sub-int/2addr v7, v6

    invoke-static {v3, v7, v4, v5, v6}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    .line 892
    move-object v3, v4

    .end local v4    # "correctedAuth":[B
    goto :goto_69

    .line 893
    :cond_50
    array-length v4, v3

    if-ge v4, v6, :cond_69

    .line 894
    new-array v4, v6, [B

    .line 895
    .restart local v4    # "correctedAuth":[B
    array-length v7, v3

    rsub-int v7, v7, 0x100

    array-length v8, v3

    invoke-static {v3, v5, v4, v7, v8}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    .line 896
    const/4 v7, 0x0

    .local v7, "a":I
    :goto_5d
    array-length v8, v3

    rsub-int v8, v8, 0x100

    if-ge v7, v8, :cond_67

    .line 897
    aput-byte v5, v4, v7

    .line 896
    add-int/lit8 v7, v7, 0x1

    goto :goto_5d

    .line 899
    .end local v7    # "a":I
    :cond_67
    move-object v3, v4

    goto :goto_6a

    .line 893
    .end local v4    # "correctedAuth":[B
    :cond_69
    :goto_69
    nop

    .line 901
    :goto_6a
    invoke-static {v3}, Lim/tpelyyftgw/messenger/Utilities;->computeSHA1([B)[B

    move-result-object v4

    .line 902
    .local v4, "authKeyHash":[B
    const/16 v6, 0x8

    new-array v7, v6, [B

    .line 903
    .local v7, "authKeyId":[B
    array-length v8, v4

    sub-int/2addr v8, v6

    invoke-static {v4, v8, v7, v5, v6}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    .line 904
    invoke-static {v7}, Lim/tpelyyftgw/messenger/Utilities;->bytesToLong([B)J

    move-result-wide v5

    .line 905
    .local v5, "fingerprint":J
    iput-object v3, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->authKey:[B

    .line 906
    iput-wide v5, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->keyFingerprint:J

    .line 907
    new-instance v8, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_confirmCall;

    invoke-direct {v8}, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_confirmCall;-><init>()V

    .line 908
    .local v8, "req":Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_confirmCall;
    iget-object v9, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->g_a:[B

    iput-object v9, v8, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_confirmCall;->g_a:[B

    .line 909
    iput-wide v5, v8, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_confirmCall;->key_fingerprint:J

    .line 910
    new-instance v9, Lim/tpelyyftgw/tgnet/TLRPC$TL_inputPhoneCall;

    invoke-direct {v9}, Lim/tpelyyftgw/tgnet/TLRPC$TL_inputPhoneCall;-><init>()V

    iput-object v9, v8, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_confirmCall;->peer:Lim/tpelyyftgw/tgnet/TLRPC$TL_inputPhoneCall;

    .line 911
    iget-object v9, v8, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_confirmCall;->peer:Lim/tpelyyftgw/tgnet/TLRPC$TL_inputPhoneCall;

    iget-object v10, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->call:Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;

    iget-wide v10, v10, Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;->id:J

    iput-wide v10, v9, Lim/tpelyyftgw/tgnet/TLRPC$TL_inputPhoneCall;->id:J

    .line 912
    iget-object v9, v8, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_confirmCall;->peer:Lim/tpelyyftgw/tgnet/TLRPC$TL_inputPhoneCall;

    iget-object v10, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->call:Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;

    iget-wide v10, v10, Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;->access_hash:J

    iput-wide v10, v9, Lim/tpelyyftgw/tgnet/TLRPC$TL_inputPhoneCall;->access_hash:J

    .line 913
    new-instance v9, Lim/tpelyyftgw/tgnet/TLRPC$TL_phoneCallProtocol;

    invoke-direct {v9}, Lim/tpelyyftgw/tgnet/TLRPC$TL_phoneCallProtocol;-><init>()V

    iput-object v9, v8, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_confirmCall;->protocol:Lim/tpelyyftgw/tgnet/TLRPC$TL_phoneCallProtocol;

    .line 914
    iget-object v9, v8, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_confirmCall;->protocol:Lim/tpelyyftgw/tgnet/TLRPC$TL_phoneCallProtocol;

    sget v10, Lim/tpelyyftgw/messenger/voip/VoIPService;->CALL_MAX_LAYER:I

    iput v10, v9, Lim/tpelyyftgw/tgnet/TLRPC$TL_phoneCallProtocol;->max_layer:I

    .line 915
    iget-object v9, v8, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_confirmCall;->protocol:Lim/tpelyyftgw/tgnet/TLRPC$TL_phoneCallProtocol;

    const/16 v10, 0x41

    iput v10, v9, Lim/tpelyyftgw/tgnet/TLRPC$TL_phoneCallProtocol;->min_layer:I

    .line 916
    iget-object v9, v8, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_confirmCall;->protocol:Lim/tpelyyftgw/tgnet/TLRPC$TL_phoneCallProtocol;

    iget-object v10, v8, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_confirmCall;->protocol:Lim/tpelyyftgw/tgnet/TLRPC$TL_phoneCallProtocol;

    iput-boolean v2, v10, Lim/tpelyyftgw/tgnet/TLRPC$TL_phoneCallProtocol;->udp_reflector:Z

    iput-boolean v2, v9, Lim/tpelyyftgw/tgnet/TLRPC$TL_phoneCallProtocol;->udp_p2p:Z

    .line 917
    iget v2, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->currentAccount:I

    invoke-static {v2}, Lim/tpelyyftgw/tgnet/ConnectionsManager;->getInstance(I)Lim/tpelyyftgw/tgnet/ConnectionsManager;

    move-result-object v2

    new-instance v9, Lim/tpelyyftgw/messenger/voip/VoIPService$13;

    invoke-direct {v9, p0}, Lim/tpelyyftgw/messenger/voip/VoIPService$13;-><init>(Lim/tpelyyftgw/messenger/voip/VoIPService;)V

    invoke-virtual {v2, v8, v9}, Lim/tpelyyftgw/tgnet/ConnectionsManager;->sendRequest(Lim/tpelyyftgw/tgnet/TLObject;Lim/tpelyyftgw/tgnet/RequestDelegate;)I

    .line 933
    return-void
.end method

.method private startConnectingSound()V
    .registers 10

    .line 1028
    iget v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->spPlayID:I

    if-eqz v0, :cond_b

    .line 1029
    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->soundPool:Landroid/media/SoundPool;

    iget v1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->spPlayID:I

    invoke-virtual {v0, v1}, Landroid/media/SoundPool;->stop(I)V

    .line 1030
    :cond_b
    iget-object v2, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->soundPool:Landroid/media/SoundPool;

    iget v3, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->spConnectingId:I

    const/high16 v4, 0x3f800000    # 1.0f

    const/high16 v5, 0x3f800000    # 1.0f

    const/4 v6, 0x0

    const/4 v7, -0x1

    const/high16 v8, 0x3f800000    # 1.0f

    invoke-virtual/range {v2 .. v8}, Landroid/media/SoundPool;->play(IFFIIF)I

    move-result v0

    iput v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->spPlayID:I

    .line 1031
    iget v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->spPlayID:I

    if-nez v0, :cond_2d

    .line 1032
    new-instance v0, Lim/tpelyyftgw/messenger/voip/VoIPService$16;

    invoke-direct {v0, p0}, Lim/tpelyyftgw/messenger/voip/VoIPService$16;-><init>(Lim/tpelyyftgw/messenger/voip/VoIPService;)V

    iput-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->connectingSoundRunnable:Ljava/lang/Runnable;

    const-wide/16 v1, 0x64

    invoke-static {v0, v1, v2}, Lim/tpelyyftgw/messenger/AndroidUtilities;->runOnUIThread(Ljava/lang/Runnable;J)V

    .line 1046
    :cond_2d
    return-void
.end method

.method private startOutgoingCall()V
    .registers 7

    .line 240
    sget-boolean v0, Lim/tpelyyftgw/messenger/voip/VoIPService;->USE_CONNECTION_SERVICE:Z

    if-eqz v0, :cond_d

    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->systemCallConnection:Lim/tpelyyftgw/messenger/voip/VoIPBaseService$CallConnection;

    if-eqz v0, :cond_d

    .line 241
    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->systemCallConnection:Lim/tpelyyftgw/messenger/voip/VoIPBaseService$CallConnection;

    invoke-virtual {v0}, Lim/tpelyyftgw/messenger/voip/VoIPBaseService$CallConnection;->setDialing()V

    .line 242
    :cond_d
    invoke-virtual {p0}, Lim/tpelyyftgw/messenger/voip/VoIPService;->configureDeviceForCall()V

    .line 243
    invoke-virtual {p0}, Lim/tpelyyftgw/messenger/voip/VoIPService;->showNotification()V

    .line 244
    invoke-direct {p0}, Lim/tpelyyftgw/messenger/voip/VoIPService;->startConnectingSound()V

    .line 245
    const/16 v0, 0xe

    invoke-virtual {p0, v0}, Lim/tpelyyftgw/messenger/voip/VoIPService;->dispatchStateChanged(I)V

    .line 246
    new-instance v0, Lim/tpelyyftgw/messenger/voip/VoIPService$3;

    invoke-direct {v0, p0}, Lim/tpelyyftgw/messenger/voip/VoIPService$3;-><init>(Lim/tpelyyftgw/messenger/voip/VoIPService;)V

    invoke-static {v0}, Lim/tpelyyftgw/messenger/AndroidUtilities;->runOnUIThread(Ljava/lang/Runnable;)V

    .line 252
    const/16 v0, 0x100

    new-array v1, v0, [B

    .line 253
    .local v1, "salt":[B
    sget-object v2, Lim/tpelyyftgw/messenger/Utilities;->random:Ljava/security/SecureRandom;

    invoke-virtual {v2, v1}, Ljava/security/SecureRandom;->nextBytes([B)V

    .line 255
    new-instance v2, Lim/tpelyyftgw/tgnet/TLRPC$TL_messages_getDhConfig;

    invoke-direct {v2}, Lim/tpelyyftgw/tgnet/TLRPC$TL_messages_getDhConfig;-><init>()V

    .line 256
    .local v2, "req":Lim/tpelyyftgw/tgnet/TLRPC$TL_messages_getDhConfig;
    iput v0, v2, Lim/tpelyyftgw/tgnet/TLRPC$TL_messages_getDhConfig;->random_length:I

    .line 257
    iget v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->currentAccount:I

    invoke-static {v0}, Lim/tpelyyftgw/messenger/MessagesStorage;->getInstance(I)Lim/tpelyyftgw/messenger/MessagesStorage;

    move-result-object v0

    .line 258
    .local v0, "messagesStorage":Lim/tpelyyftgw/messenger/MessagesStorage;
    invoke-virtual {v0}, Lim/tpelyyftgw/messenger/MessagesStorage;->getLastSecretVersion()I

    move-result v3

    iput v3, v2, Lim/tpelyyftgw/tgnet/TLRPC$TL_messages_getDhConfig;->version:I

    .line 259
    iget v3, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->currentAccount:I

    invoke-static {v3}, Lim/tpelyyftgw/tgnet/ConnectionsManager;->getInstance(I)Lim/tpelyyftgw/tgnet/ConnectionsManager;

    move-result-object v3

    new-instance v4, Lim/tpelyyftgw/messenger/voip/VoIPService$4;

    invoke-direct {v4, p0, v0}, Lim/tpelyyftgw/messenger/voip/VoIPService$4;-><init>(Lim/tpelyyftgw/messenger/voip/VoIPService;Lim/tpelyyftgw/messenger/MessagesStorage;)V

    const/4 v5, 0x2

    invoke-virtual {v3, v2, v4, v5}, Lim/tpelyyftgw/tgnet/ConnectionsManager;->sendRequest(Lim/tpelyyftgw/tgnet/TLObject;Lim/tpelyyftgw/tgnet/RequestDelegate;I)I

    move-result v3

    iput v3, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->callReqId:I

    .line 380
    return-void
.end method

.method private startRatingActivity()V
    .registers 5

    .line 856
    :try_start_0
    new-instance v0, Landroid/content/Intent;

    const-class v1, Lim/tpelyyftgw/ui/VoIPFeedbackActivity;

    invoke-direct {v0, p0, v1}, Landroid/content/Intent;-><init>(Landroid/content/Context;Ljava/lang/Class;)V

    const-string v1, "call_id"

    iget-object v2, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->call:Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;

    iget-wide v2, v2, Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;->id:J

    .line 857
    invoke-virtual {v0, v1, v2, v3}, Landroid/content/Intent;->putExtra(Ljava/lang/String;J)Landroid/content/Intent;

    move-result-object v0

    const-string v1, "call_access_hash"

    iget-object v2, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->call:Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;

    iget-wide v2, v2, Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;->access_hash:J

    .line 858
    invoke-virtual {v0, v1, v2, v3}, Landroid/content/Intent;->putExtra(Ljava/lang/String;J)Landroid/content/Intent;

    move-result-object v0

    const-string v1, "account"

    iget v2, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->currentAccount:I

    .line 859
    invoke-virtual {v0, v1, v2}, Landroid/content/Intent;->putExtra(Ljava/lang/String;I)Landroid/content/Intent;

    move-result-object v0

    const/high16 v1, 0x30000000

    .line 860
    invoke-virtual {v0, v1}, Landroid/content/Intent;->addFlags(I)Landroid/content/Intent;

    move-result-object v0

    .line 856
    const/4 v1, 0x0

    invoke-static {p0, v1, v0, v1}, Landroid/app/PendingIntent;->getActivity(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent;

    move-result-object v0

    .line 860
    invoke-virtual {v0}, Landroid/app/PendingIntent;->send()V
    :try_end_31
    .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_31} :catch_32

    .line 865
    goto :goto_3c

    .line 861
    :catch_32
    move-exception v0

    .line 862
    .local v0, "x":Ljava/lang/Exception;
    sget-boolean v1, Lim/tpelyyftgw/messenger/BuildVars;->LOGS_ENABLED:Z

    if-eqz v1, :cond_3c

    .line 863
    const-string v1, "Error starting incall activity"

    invoke-static {v1, v0}, Lim/tpelyyftgw/messenger/FileLog;->e(Ljava/lang/String;Ljava/lang/Throwable;)V

    .line 866
    .end local v0    # "x":Ljava/lang/Exception;
    :cond_3c
    :goto_3c
    return-void
.end method


# virtual methods
.method public acceptIncomingCall()V
    .registers 5

    .line 479
    invoke-virtual {p0}, Lim/tpelyyftgw/messenger/voip/VoIPService;->stopRinging()V

    .line 480
    invoke-virtual {p0}, Lim/tpelyyftgw/messenger/voip/VoIPService;->showNotification()V

    .line 481
    invoke-virtual {p0}, Lim/tpelyyftgw/messenger/voip/VoIPService;->configureDeviceForCall()V

    .line 482
    invoke-direct {p0}, Lim/tpelyyftgw/messenger/voip/VoIPService;->startConnectingSound()V

    .line 483
    const/16 v0, 0xc

    invoke-virtual {p0, v0}, Lim/tpelyyftgw/messenger/voip/VoIPService;->dispatchStateChanged(I)V

    .line 484
    new-instance v0, Lim/tpelyyftgw/messenger/voip/VoIPService$6;

    invoke-direct {v0, p0}, Lim/tpelyyftgw/messenger/voip/VoIPService$6;-><init>(Lim/tpelyyftgw/messenger/voip/VoIPService;)V

    invoke-static {v0}, Lim/tpelyyftgw/messenger/AndroidUtilities;->runOnUIThread(Ljava/lang/Runnable;)V

    .line 490
    iget v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->currentAccount:I

    invoke-static {v0}, Lim/tpelyyftgw/messenger/MessagesStorage;->getInstance(I)Lim/tpelyyftgw/messenger/MessagesStorage;

    move-result-object v0

    .line 491
    .local v0, "messagesStorage":Lim/tpelyyftgw/messenger/MessagesStorage;
    new-instance v1, Lim/tpelyyftgw/tgnet/TLRPC$TL_messages_getDhConfig;

    invoke-direct {v1}, Lim/tpelyyftgw/tgnet/TLRPC$TL_messages_getDhConfig;-><init>()V

    .line 492
    .local v1, "req":Lim/tpelyyftgw/tgnet/TLRPC$TL_messages_getDhConfig;
    const/16 v2, 0x100

    iput v2, v1, Lim/tpelyyftgw/tgnet/TLRPC$TL_messages_getDhConfig;->random_length:I

    .line 493
    invoke-virtual {v0}, Lim/tpelyyftgw/messenger/MessagesStorage;->getLastSecretVersion()I

    move-result v2

    iput v2, v1, Lim/tpelyyftgw/tgnet/TLRPC$TL_messages_getDhConfig;->version:I

    .line 494
    iget v2, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->currentAccount:I

    invoke-static {v2}, Lim/tpelyyftgw/tgnet/ConnectionsManager;->getInstance(I)Lim/tpelyyftgw/tgnet/ConnectionsManager;

    move-result-object v2

    new-instance v3, Lim/tpelyyftgw/messenger/voip/VoIPService$7;

    invoke-direct {v3, p0, v0}, Lim/tpelyyftgw/messenger/voip/VoIPService$7;-><init>(Lim/tpelyyftgw/messenger/voip/VoIPService;Lim/tpelyyftgw/messenger/MessagesStorage;)V

    invoke-virtual {v2, v1, v3}, Lim/tpelyyftgw/tgnet/ConnectionsManager;->sendRequest(Lim/tpelyyftgw/tgnet/TLObject;Lim/tpelyyftgw/tgnet/RequestDelegate;)I

    .line 581
    return-void
.end method

.method protected callFailed(I)V
    .registers 7
    .param p1, "errorCode"    # I

    .line 1049
    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->call:Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;

    if-eqz v0, :cond_67

    .line 1050
    sget-boolean v0, Lim/tpelyyftgw/messenger/BuildVars;->LOGS_ENABLED:Z

    if-eqz v0, :cond_d

    .line 1051
    const-string v0, "Discarding failed call"

    invoke-static {v0}, Lim/tpelyyftgw/messenger/FileLog;->d(Ljava/lang/String;)V

    .line 1053
    :cond_d
    new-instance v0, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_discardCall;

    invoke-direct {v0}, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_discardCall;-><init>()V

    .line 1054
    .local v0, "req":Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_discardCall;
    new-instance v1, Lim/tpelyyftgw/tgnet/TLRPC$TL_inputPhoneCall;

    invoke-direct {v1}, Lim/tpelyyftgw/tgnet/TLRPC$TL_inputPhoneCall;-><init>()V

    iput-object v1, v0, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_discardCall;->peer:Lim/tpelyyftgw/tgnet/TLRPC$TL_inputPhoneCall;

    .line 1055
    iget-object v1, v0, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_discardCall;->peer:Lim/tpelyyftgw/tgnet/TLRPC$TL_inputPhoneCall;

    iget-object v2, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->call:Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;

    iget-wide v2, v2, Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;->access_hash:J

    iput-wide v2, v1, Lim/tpelyyftgw/tgnet/TLRPC$TL_inputPhoneCall;->access_hash:J

    .line 1056
    iget-object v1, v0, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_discardCall;->peer:Lim/tpelyyftgw/tgnet/TLRPC$TL_inputPhoneCall;

    iget-object v2, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->call:Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;

    iget-wide v2, v2, Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;->id:J

    iput-wide v2, v1, Lim/tpelyyftgw/tgnet/TLRPC$TL_inputPhoneCall;->id:J

    .line 1057
    iget-object v1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->controller:Lim/tpelyyftgw/messenger/voip/VoIPController;

    if-eqz v1, :cond_3c

    iget-boolean v1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->controllerStarted:Z

    if-eqz v1, :cond_3c

    iget-object v1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->controller:Lim/tpelyyftgw/messenger/voip/VoIPController;

    invoke-virtual {v1}, Lim/tpelyyftgw/messenger/voip/VoIPController;->getCallDuration()J

    move-result-wide v1

    const-wide/16 v3, 0x3e8

    div-long/2addr v1, v3

    long-to-int v2, v1

    goto :goto_3d

    :cond_3c
    const/4 v2, 0x0

    :goto_3d
    iput v2, v0, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_discardCall;->duration:I

    .line 1058
    iget-object v1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->controller:Lim/tpelyyftgw/messenger/voip/VoIPController;

    if-eqz v1, :cond_4e

    iget-boolean v1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->controllerStarted:Z

    if-eqz v1, :cond_4e

    iget-object v1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->controller:Lim/tpelyyftgw/messenger/voip/VoIPController;

    invoke-virtual {v1}, Lim/tpelyyftgw/messenger/voip/VoIPController;->getPreferredRelayID()J

    move-result-wide v1

    goto :goto_50

    :cond_4e
    const-wide/16 v1, 0x0

    :goto_50
    iput-wide v1, v0, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_discardCall;->connection_id:J

    .line 1059
    new-instance v1, Lim/tpelyyftgw/tgnet/TLRPC$TL_phoneCallDiscardReasonDisconnect;

    invoke-direct {v1}, Lim/tpelyyftgw/tgnet/TLRPC$TL_phoneCallDiscardReasonDisconnect;-><init>()V

    iput-object v1, v0, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_discardCall;->reason:Lim/tpelyyftgw/tgnet/TLRPC$PhoneCallDiscardReason;

    .line 1060
    iget v1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->currentAccount:I

    invoke-static {v1}, Lim/tpelyyftgw/tgnet/ConnectionsManager;->getInstance(I)Lim/tpelyyftgw/tgnet/ConnectionsManager;

    move-result-object v1

    new-instance v2, Lim/tpelyyftgw/messenger/voip/VoIPService$17;

    invoke-direct {v2, p0}, Lim/tpelyyftgw/messenger/voip/VoIPService$17;-><init>(Lim/tpelyyftgw/messenger/voip/VoIPService;)V

    invoke-virtual {v1, v0, v2}, Lim/tpelyyftgw/tgnet/ConnectionsManager;->sendRequest(Lim/tpelyyftgw/tgnet/TLObject;Lim/tpelyyftgw/tgnet/RequestDelegate;)I

    .line 1075
    .end local v0    # "req":Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_discardCall;
    :cond_67
    invoke-super {p0, p1}, Lim/tpelyyftgw/messenger/voip/VoIPBaseService;->callFailed(I)V

    .line 1076
    return-void
.end method

.method public canUpgrate()Z
    .registers 3

    .line 1165
    iget v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->peerCapabilities:I

    const/4 v1, 0x1

    and-int/2addr v0, v1

    if-ne v0, v1, :cond_7

    goto :goto_8

    :cond_7
    const/4 v1, 0x0

    :goto_8
    return v1
.end method

.method public debugCtl(II)V
    .registers 4
    .param p1, "request"    # I
    .param p2, "param"    # I

    .line 1135
    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->controller:Lim/tpelyyftgw/messenger/voip/VoIPController;

    if-eqz v0, :cond_9

    .line 1136
    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->controller:Lim/tpelyyftgw/messenger/voip/VoIPController;

    invoke-virtual {v0, p1, p2}, Lim/tpelyyftgw/messenger/voip/VoIPController;->debugCtl(II)V

    .line 1137
    :cond_9
    return-void
.end method

.method public declineIncomingCall()V
    .registers 3

    .line 584
    const/4 v0, 0x1

    const/4 v1, 0x0

    invoke-virtual {p0, v0, v1}, Lim/tpelyyftgw/messenger/voip/VoIPService;->declineIncomingCall(ILjava/lang/Runnable;)V

    .line 585
    return-void
.end method

.method public declineIncomingCall(ILjava/lang/Runnable;)V
    .registers 12
    .param p1, "reason"    # I
    .param p2, "onDone"    # Ljava/lang/Runnable;

    .line 593
    invoke-virtual {p0}, Lim/tpelyyftgw/messenger/voip/VoIPService;->stopRinging()V

    .line 594
    iput p1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->callDiscardReason:I

    .line 595
    iget v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->currentState:I

    const/4 v1, 0x1

    const/16 v2, 0xa

    const/16 v3, 0xe

    if-ne v0, v3, :cond_29

    .line 596
    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->delayedStartOutgoingCall:Ljava/lang/Runnable;

    if-eqz v0, :cond_19

    .line 597
    invoke-static {v0}, Lim/tpelyyftgw/messenger/AndroidUtilities;->cancelRunOnUIThread(Ljava/lang/Runnable;)V

    .line 598
    invoke-virtual {p0}, Lim/tpelyyftgw/messenger/voip/VoIPService;->callEnded()V

    goto :goto_28

    .line 600
    :cond_19
    invoke-virtual {p0, v2}, Lim/tpelyyftgw/messenger/voip/VoIPService;->dispatchStateChanged(I)V

    .line 601
    iput-boolean v1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->endCallAfterRequest:Z

    .line 602
    new-instance v0, Lim/tpelyyftgw/messenger/voip/VoIPService$8;

    invoke-direct {v0, p0}, Lim/tpelyyftgw/messenger/voip/VoIPService$8;-><init>(Lim/tpelyyftgw/messenger/voip/VoIPService;)V

    const-wide/16 v1, 0x1388

    invoke-static {v0, v1, v2}, Lim/tpelyyftgw/messenger/AndroidUtilities;->runOnUIThread(Ljava/lang/Runnable;J)V

    .line 611
    :goto_28
    return-void

    .line 613
    :cond_29
    iget v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->currentState:I

    if-eq v0, v2, :cond_107

    iget v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->currentState:I

    const/16 v3, 0xb

    if-ne v0, v3, :cond_35

    goto/16 :goto_107

    .line 615
    :cond_35
    invoke-virtual {p0, v2}, Lim/tpelyyftgw/messenger/voip/VoIPService;->dispatchStateChanged(I)V

    .line 616
    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->call:Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;

    const/4 v2, 0x0

    if-nez v0, :cond_57

    .line 617
    if-eqz p2, :cond_42

    .line 618
    invoke-interface {p2}, Ljava/lang/Runnable;->run()V

    .line 619
    :cond_42
    invoke-virtual {p0}, Lim/tpelyyftgw/messenger/voip/VoIPService;->callEnded()V

    .line 620
    iget v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->callReqId:I

    if-eqz v0, :cond_56

    .line 621
    iget v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->currentAccount:I

    invoke-static {v0}, Lim/tpelyyftgw/tgnet/ConnectionsManager;->getInstance(I)Lim/tpelyyftgw/tgnet/ConnectionsManager;

    move-result-object v0

    iget v1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->callReqId:I

    invoke-virtual {v0, v1, v2}, Lim/tpelyyftgw/tgnet/ConnectionsManager;->cancelRequest(IZ)V

    .line 622
    iput v2, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->callReqId:I

    .line 624
    :cond_56
    return-void

    .line 626
    :cond_57
    new-instance v0, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_discardCall;

    invoke-direct {v0}, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_discardCall;-><init>()V

    .line 627
    .local v0, "req":Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_discardCall;
    new-instance v3, Lim/tpelyyftgw/tgnet/TLRPC$TL_inputPhoneCall;

    invoke-direct {v3}, Lim/tpelyyftgw/tgnet/TLRPC$TL_inputPhoneCall;-><init>()V

    iput-object v3, v0, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_discardCall;->peer:Lim/tpelyyftgw/tgnet/TLRPC$TL_inputPhoneCall;

    .line 628
    iget-object v3, v0, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_discardCall;->peer:Lim/tpelyyftgw/tgnet/TLRPC$TL_inputPhoneCall;

    iget-object v4, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->call:Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;

    iget-wide v4, v4, Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;->access_hash:J

    iput-wide v4, v3, Lim/tpelyyftgw/tgnet/TLRPC$TL_inputPhoneCall;->access_hash:J

    .line 629
    iget-object v3, v0, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_discardCall;->peer:Lim/tpelyyftgw/tgnet/TLRPC$TL_inputPhoneCall;

    iget-object v4, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->call:Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;

    iget-wide v4, v4, Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;->id:J

    iput-wide v4, v3, Lim/tpelyyftgw/tgnet/TLRPC$TL_inputPhoneCall;->id:J

    .line 630
    iget-object v3, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->controller:Lim/tpelyyftgw/messenger/voip/VoIPController;

    if-eqz v3, :cond_86

    iget-boolean v3, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->controllerStarted:Z

    if-eqz v3, :cond_86

    iget-object v3, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->controller:Lim/tpelyyftgw/messenger/voip/VoIPController;

    invoke-virtual {v3}, Lim/tpelyyftgw/messenger/voip/VoIPController;->getCallDuration()J

    move-result-wide v3

    const-wide/16 v5, 0x3e8

    div-long/2addr v3, v5

    long-to-int v4, v3

    goto :goto_87

    :cond_86
    const/4 v4, 0x0

    :goto_87
    iput v4, v0, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_discardCall;->duration:I

    .line 631
    iget-object v3, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->controller:Lim/tpelyyftgw/messenger/voip/VoIPController;

    if-eqz v3, :cond_98

    iget-boolean v3, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->controllerStarted:Z

    if-eqz v3, :cond_98

    iget-object v3, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->controller:Lim/tpelyyftgw/messenger/voip/VoIPController;

    invoke-virtual {v3}, Lim/tpelyyftgw/messenger/voip/VoIPController;->getPreferredRelayID()J

    move-result-wide v3

    goto :goto_9a

    :cond_98
    const-wide/16 v3, 0x0

    :goto_9a
    iput-wide v3, v0, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_discardCall;->connection_id:J

    .line 632
    const/4 v3, 0x3

    const/4 v4, 0x2

    if-eq p1, v4, :cond_bd

    if-eq p1, v3, :cond_b5

    const/4 v5, 0x4

    if-eq p1, v5, :cond_ad

    .line 644
    new-instance v5, Lim/tpelyyftgw/tgnet/TLRPC$TL_phoneCallDiscardReasonHangup;

    invoke-direct {v5}, Lim/tpelyyftgw/tgnet/TLRPC$TL_phoneCallDiscardReasonHangup;-><init>()V

    iput-object v5, v0, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_discardCall;->reason:Lim/tpelyyftgw/tgnet/TLRPC$PhoneCallDiscardReason;

    goto :goto_c5

    .line 640
    :cond_ad
    new-instance v5, Lim/tpelyyftgw/tgnet/TLRPC$TL_phoneCallDiscardReasonBusy;

    invoke-direct {v5}, Lim/tpelyyftgw/tgnet/TLRPC$TL_phoneCallDiscardReasonBusy;-><init>()V

    iput-object v5, v0, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_discardCall;->reason:Lim/tpelyyftgw/tgnet/TLRPC$PhoneCallDiscardReason;

    .line 641
    goto :goto_c5

    .line 637
    :cond_b5
    new-instance v5, Lim/tpelyyftgw/tgnet/TLRPC$TL_phoneCallDiscardReasonMissed;

    invoke-direct {v5}, Lim/tpelyyftgw/tgnet/TLRPC$TL_phoneCallDiscardReasonMissed;-><init>()V

    iput-object v5, v0, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_discardCall;->reason:Lim/tpelyyftgw/tgnet/TLRPC$PhoneCallDiscardReason;

    .line 638
    goto :goto_c5

    .line 634
    :cond_bd
    new-instance v5, Lim/tpelyyftgw/tgnet/TLRPC$TL_phoneCallDiscardReasonDisconnect;

    invoke-direct {v5}, Lim/tpelyyftgw/tgnet/TLRPC$TL_phoneCallDiscardReasonDisconnect;-><init>()V

    iput-object v5, v0, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_discardCall;->reason:Lim/tpelyyftgw/tgnet/TLRPC$PhoneCallDiscardReason;

    .line 635
    nop

    .line 647
    :goto_c5
    iget v5, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->currentAccount:I

    invoke-static {v5}, Lim/tpelyyftgw/tgnet/ConnectionsManager;->getInstance(I)Lim/tpelyyftgw/tgnet/ConnectionsManager;

    move-result-object v5

    invoke-virtual {v5}, Lim/tpelyyftgw/tgnet/ConnectionsManager;->getConnectionState()I

    move-result v5

    if-eq v5, v3, :cond_d2

    goto :goto_d3

    :cond_d2
    const/4 v1, 0x0

    .line 649
    .local v1, "wasNotConnected":Z
    :goto_d3
    if-eqz v1, :cond_df

    .line 650
    if-eqz p2, :cond_da

    .line 651
    invoke-interface {p2}, Ljava/lang/Runnable;->run()V

    .line 652
    :cond_da
    invoke-virtual {p0}, Lim/tpelyyftgw/messenger/voip/VoIPService;->callEnded()V

    .line 653
    const/4 v2, 0x0

    .local v2, "stopper":Ljava/lang/Runnable;
    goto :goto_f8

    .line 655
    .end local v2    # "stopper":Ljava/lang/Runnable;
    :cond_df
    new-instance v2, Lim/tpelyyftgw/messenger/voip/VoIPService$9;

    invoke-direct {v2, p0, p2}, Lim/tpelyyftgw/messenger/voip/VoIPService$9;-><init>(Lim/tpelyyftgw/messenger/voip/VoIPService;Ljava/lang/Runnable;)V

    .line 668
    .restart local v2    # "stopper":Ljava/lang/Runnable;
    const-wide/high16 v5, 0x4014000000000000L    # 5.0

    const-string v3, "hangup_ui_timeout"

    invoke-static {v3, v5, v6}, Lim/tpelyyftgw/messenger/voip/VoIPServerConfig;->getDouble(Ljava/lang/String;D)D

    move-result-wide v5

    const-wide v7, 0x408f400000000000L    # 1000.0

    mul-double v5, v5, v7

    double-to-int v3, v5

    int-to-long v5, v3

    invoke-static {v2, v5, v6}, Lim/tpelyyftgw/messenger/AndroidUtilities;->runOnUIThread(Ljava/lang/Runnable;J)V

    .line 670
    :goto_f8
    iget v3, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->currentAccount:I

    invoke-static {v3}, Lim/tpelyyftgw/tgnet/ConnectionsManager;->getInstance(I)Lim/tpelyyftgw/tgnet/ConnectionsManager;

    move-result-object v3

    new-instance v5, Lim/tpelyyftgw/messenger/voip/VoIPService$10;

    invoke-direct {v5, p0, v1, v2, p2}, Lim/tpelyyftgw/messenger/voip/VoIPService$10;-><init>(Lim/tpelyyftgw/messenger/voip/VoIPService;ZLjava/lang/Runnable;Ljava/lang/Runnable;)V

    invoke-virtual {v3, v0, v5, v4}, Lim/tpelyyftgw/tgnet/ConnectionsManager;->sendRequest(Lim/tpelyyftgw/tgnet/TLObject;Lim/tpelyyftgw/tgnet/RequestDelegate;I)I

    .line 693
    return-void

    .line 614
    .end local v0    # "req":Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_discardCall;
    .end local v1    # "wasNotConnected":Z
    .end local v2    # "stopper":Ljava/lang/Runnable;
    :cond_107
    :goto_107
    return-void
.end method

.method public varargs didReceivedNotification(II[Ljava/lang/Object;)V
    .registers 5
    .param p1, "id"    # I
    .param p2, "account"    # I
    .param p3, "args"    # [Ljava/lang/Object;

    .line 1145
    sget v0, Lim/tpelyyftgw/messenger/NotificationCenter;->appDidLogout:I

    if-ne p1, v0, :cond_7

    .line 1146
    invoke-virtual {p0}, Lim/tpelyyftgw/messenger/voip/VoIPService;->callEnded()V

    .line 1148
    :cond_7
    return-void
.end method

.method public forceRating()V
    .registers 2

    .line 1151
    const/4 v0, 0x1

    iput-boolean v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->forceRating:Z

    .line 1152
    return-void
.end method

.method public getCallID()J
    .registers 3

    .line 1080
    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->call:Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;

    if-eqz v0, :cond_7

    iget-wide v0, v0, Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;->id:J

    goto :goto_9

    :cond_7
    const-wide/16 v0, 0x0

    :goto_9
    return-wide v0
.end method

.method public getConnectionAndStartCall()Lim/tpelyyftgw/messenger/voip/VoIPBaseService$CallConnection;
    .registers 5

    .line 1263
    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->systemCallConnection:Lim/tpelyyftgw/messenger/voip/VoIPBaseService$CallConnection;

    if-nez v0, :cond_5d

    .line 1264
    sget-boolean v0, Lim/tpelyyftgw/messenger/BuildVars;->LOGS_ENABLED:Z

    if-eqz v0, :cond_d

    .line 1265
    const-string v0, "creating call connection"

    invoke-static {v0}, Lim/tpelyyftgw/messenger/FileLog;->d(Ljava/lang/String;)V

    .line 1266
    :cond_d
    new-instance v0, Lim/tpelyyftgw/messenger/voip/VoIPBaseService$CallConnection;

    invoke-direct {v0, p0}, Lim/tpelyyftgw/messenger/voip/VoIPBaseService$CallConnection;-><init>(Lim/tpelyyftgw/messenger/voip/VoIPBaseService;)V

    iput-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->systemCallConnection:Lim/tpelyyftgw/messenger/voip/VoIPBaseService$CallConnection;

    .line 1267
    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->systemCallConnection:Lim/tpelyyftgw/messenger/voip/VoIPBaseService$CallConnection;

    invoke-virtual {v0}, Lim/tpelyyftgw/messenger/voip/VoIPBaseService$CallConnection;->setInitializing()V

    .line 1268
    iget-boolean v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->isOutgoing:Z

    if-eqz v0, :cond_29

    .line 1269
    new-instance v0, Lim/tpelyyftgw/messenger/voip/VoIPService$19;

    invoke-direct {v0, p0}, Lim/tpelyyftgw/messenger/voip/VoIPService$19;-><init>(Lim/tpelyyftgw/messenger/voip/VoIPService;)V

    iput-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->delayedStartOutgoingCall:Ljava/lang/Runnable;

    .line 1276
    const-wide/16 v1, 0x7d0

    invoke-static {v0, v1, v2}, Lim/tpelyyftgw/messenger/AndroidUtilities;->runOnUIThread(Ljava/lang/Runnable;J)V

    .line 1278
    :cond_29
    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->systemCallConnection:Lim/tpelyyftgw/messenger/voip/VoIPBaseService$CallConnection;

    new-instance v1, Ljava/lang/StringBuilder;

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

    const-string v2, "+99084"

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

    iget-object v2, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->user:Lim/tpelyyftgw/tgnet/TLRPC$User;

    iget v2, v2, Lim/tpelyyftgw/tgnet/TLRPC$User;->id:I

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

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

    move-result-object v1

    const/4 v2, 0x0

    const-string/jumbo v3, "tel"

    invoke-static {v3, v1, v2}, Landroid/net/Uri;->fromParts(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri;

    move-result-object v1

    const/4 v2, 0x1

    invoke-virtual {v0, v1, v2}, Lim/tpelyyftgw/messenger/voip/VoIPBaseService$CallConnection;->setAddress(Landroid/net/Uri;I)V

    .line 1279
    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->systemCallConnection:Lim/tpelyyftgw/messenger/voip/VoIPBaseService$CallConnection;

    iget-object v1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->user:Lim/tpelyyftgw/tgnet/TLRPC$User;

    iget-object v1, v1, Lim/tpelyyftgw/tgnet/TLRPC$User;->first_name:Ljava/lang/String;

    iget-object v3, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->user:Lim/tpelyyftgw/tgnet/TLRPC$User;

    iget-object v3, v3, Lim/tpelyyftgw/tgnet/TLRPC$User;->last_name:Ljava/lang/String;

    invoke-static {v1, v3}, Lim/tpelyyftgw/messenger/ContactsController;->formatName(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;

    move-result-object v1

    invoke-virtual {v0, v1, v2}, Lim/tpelyyftgw/messenger/voip/VoIPBaseService$CallConnection;->setCallerDisplayName(Ljava/lang/String;I)V

    .line 1281
    :cond_5d
    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->systemCallConnection:Lim/tpelyyftgw/messenger/voip/VoIPBaseService$CallConnection;

    return-object v0
.end method

.method public getEncryptionKey()[B
    .registers 2

    .line 869
    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->authKey:[B

    return-object v0
.end method

.method public getGA()[B
    .registers 2

    .line 1140
    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->g_a:[B

    return-object v0
.end method

.method protected getUIActivityClass()Ljava/lang/Class;
    .registers 2
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "()",
            "Ljava/lang/Class<",
            "+",
            "Landroid/app/Activity;",
            ">;"
        }
    .end annotation

    .line 589
    const-class v0, Lim/tpelyyftgw/ui/VoIPActivity;

    return-object v0
.end method

.method public getUser()Lim/tpelyyftgw/tgnet/TLRPC$User;
    .registers 2

    .line 228
    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->user:Lim/tpelyyftgw/tgnet/TLRPC$User;

    return-object v0
.end method

.method public hangUp()V
    .registers 3

    .line 232
    iget v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->currentState:I

    const/16 v1, 0x10

    if-eq v0, v1, :cond_13

    iget v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->currentState:I

    const/16 v1, 0xd

    if-ne v0, v1, :cond_11

    iget-boolean v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->isOutgoing:Z

    if-eqz v0, :cond_11

    goto :goto_13

    :cond_11
    const/4 v0, 0x1

    goto :goto_14

    :cond_13
    :goto_13
    const/4 v0, 0x3

    :goto_14
    const/4 v1, 0x0

    invoke-virtual {p0, v0, v1}, Lim/tpelyyftgw/messenger/voip/VoIPService;->declineIncomingCall(ILjava/lang/Runnable;)V

    .line 233
    return-void
.end method

.method public hangUp(Ljava/lang/Runnable;)V
    .registers 4
    .param p1, "onDone"    # Ljava/lang/Runnable;

    .line 236
    iget v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->currentState:I

    const/16 v1, 0x10

    if-eq v0, v1, :cond_13

    iget v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->currentState:I

    const/16 v1, 0xd

    if-ne v0, v1, :cond_11

    iget-boolean v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->isOutgoing:Z

    if-eqz v0, :cond_11

    goto :goto_13

    :cond_11
    const/4 v0, 0x1

    goto :goto_14

    :cond_13
    :goto_13
    const/4 v0, 0x3

    :goto_14
    invoke-virtual {p0, v0, p1}, Lim/tpelyyftgw/messenger/voip/VoIPService;->declineIncomingCall(ILjava/lang/Runnable;)V

    .line 237
    return-void
.end method

.method protected isRinging()Z
    .registers 3

    .line 475
    iget v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->currentState:I

    const/16 v1, 0xf

    if-ne v0, v1, :cond_8

    const/4 v0, 0x1

    goto :goto_9

    :cond_8
    const/4 v0, 0x0

    :goto_9
    return v0
.end method

.method public onBind(Landroid/content/Intent;)Landroid/os/IBinder;
    .registers 3
    .param p1, "intent"    # Landroid/content/Intent;

    .line 100
    const/4 v0, 0x0

    return-object v0
.end method

.method public onCallUpdated(Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;)V
    .registers 12
    .param p1, "call"    # Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;

    .line 711
    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->call:Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;

    if-nez v0, :cond_a

    .line 712
    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->pendingUpdates:Ljava/util/ArrayList;

    invoke-virtual {v0, p1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z

    .line 713
    return-void

    .line 715
    :cond_a
    if-nez p1, :cond_d

    .line 716
    return-void

    .line 717
    :cond_d
    iget-wide v0, p1, Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;->id:J

    iget-object v2, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->call:Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;

    iget-wide v2, v2, Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;->id:J

    cmp-long v4, v0, v2

    if-eqz v4, :cond_43

    .line 718
    sget-boolean v0, Lim/tpelyyftgw/messenger/BuildVars;->LOGS_ENABLED:Z

    if-eqz v0, :cond_42

    .line 719
    new-instance v0, Ljava/lang/StringBuilder;

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

    const-string v1, "onCallUpdated called with wrong call id (got "

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

    iget-wide v1, p1, Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;->id:J

    invoke-virtual {v0, v1, v2}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;

    const-string v1, ", expected "

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

    iget-object v1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->call:Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;

    iget-wide v1, v1, Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;->id:J

    invoke-virtual {v0, v1, v2}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;

    const-string v1, ")"

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

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

    move-result-object v0

    invoke-static {v0}, Lim/tpelyyftgw/messenger/FileLog;->w(Ljava/lang/String;)V

    .line 721
    :cond_42
    return-void

    .line 723
    :cond_43
    iget-wide v0, p1, Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;->access_hash:J

    const-wide/16 v2, 0x0

    cmp-long v4, v0, v2

    if-nez v4, :cond_51

    .line 724
    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->call:Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;

    iget-wide v0, v0, Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;->access_hash:J

    iput-wide v0, p1, Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;->access_hash:J

    .line 725
    :cond_51
    sget-boolean v0, Lim/tpelyyftgw/messenger/BuildVars;->LOGS_ENABLED:Z

    if-eqz v0, :cond_6c

    .line 726
    new-instance v0, Ljava/lang/StringBuilder;

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

    const-string v1, "Call updated: "

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

    invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

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

    move-result-object v0

    invoke-static {v0}, Lim/tpelyyftgw/messenger/FileLog;->d(Ljava/lang/String;)V

    .line 727
    invoke-direct {p0}, Lim/tpelyyftgw/messenger/voip/VoIPService;->dumpCallObject()V

    .line 729
    :cond_6c
    iput-object p1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->call:Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;

    .line 730
    instance-of v0, p1, Lim/tpelyyftgw/tgnet/TLRPC$TL_phoneCallDiscarded;

    const/4 v1, 0x1

    if-eqz v0, :cond_119

    .line 731
    iget-boolean v0, p1, Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;->need_debug:Z

    iput-boolean v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->needSendDebugLog:Z

    .line 732
    sget-boolean v0, Lim/tpelyyftgw/messenger/BuildVars;->LOGS_ENABLED:Z

    if-eqz v0, :cond_80

    .line 733
    const-string v0, "call discarded, stopping service"

    invoke-static {v0}, Lim/tpelyyftgw/messenger/FileLog;->d(Ljava/lang/String;)V

    .line 735
    :cond_80
    iget-object v0, p1, Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;->reason:Lim/tpelyyftgw/tgnet/TLRPC$PhoneCallDiscardReason;

    instance-of v0, v0, Lim/tpelyyftgw/tgnet/TLRPC$TL_phoneCallDiscardReasonBusy;

    if-eqz v0, :cond_aa

    .line 736
    const/16 v0, 0x11

    invoke-virtual {p0, v0}, Lim/tpelyyftgw/messenger/voip/VoIPService;->dispatchStateChanged(I)V

    .line 737
    iput-boolean v1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->playingSound:Z

    .line 738
    iget-object v2, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->soundPool:Landroid/media/SoundPool;

    iget v3, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->spBusyId:I

    const/high16 v4, 0x3f800000    # 1.0f

    const/high16 v5, 0x3f800000    # 1.0f

    const/4 v6, 0x0

    const/4 v7, -0x1

    const/high16 v8, 0x3f800000    # 1.0f

    invoke-virtual/range {v2 .. v8}, Landroid/media/SoundPool;->play(IFFIIF)I

    .line 739
    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->afterSoundRunnable:Ljava/lang/Runnable;

    const-wide/16 v2, 0x5dc

    invoke-static {v0, v2, v3}, Lim/tpelyyftgw/messenger/AndroidUtilities;->runOnUIThread(Ljava/lang/Runnable;J)V

    .line 740
    invoke-virtual {p0, v2, v3}, Lim/tpelyyftgw/messenger/voip/VoIPService;->endConnectionServiceCall(J)V

    .line 741
    invoke-virtual {p0}, Lim/tpelyyftgw/messenger/voip/VoIPService;->stopSelf()V

    goto :goto_ad

    .line 743
    :cond_aa
    invoke-virtual {p0}, Lim/tpelyyftgw/messenger/voip/VoIPService;->callEnded()V

    .line 745
    :goto_ad
    iget-boolean v0, p1, Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;->need_rating:Z

    if-nez v0, :cond_c9

    iget-boolean v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->forceRating:Z

    if-nez v0, :cond_c9

    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->controller:Lim/tpelyyftgw/messenger/voip/VoIPController;

    if-eqz v0, :cond_cc

    const-string v0, "bad_call_rating"

    invoke-static {v0, v1}, Lim/tpelyyftgw/messenger/voip/VoIPServerConfig;->getBoolean(Ljava/lang/String;Z)Z

    move-result v0

    if-eqz v0, :cond_cc

    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->controller:Lim/tpelyyftgw/messenger/voip/VoIPController;

    invoke-virtual {v0}, Lim/tpelyyftgw/messenger/voip/VoIPController;->needRate()Z

    move-result v0

    if-eqz v0, :cond_cc

    .line 746
    :cond_c9
    invoke-direct {p0}, Lim/tpelyyftgw/messenger/voip/VoIPService;->startRatingActivity()V

    .line 748
    :cond_cc
    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->debugLog:Ljava/lang/String;

    if-nez v0, :cond_dc

    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->controller:Lim/tpelyyftgw/messenger/voip/VoIPController;

    if-eqz v0, :cond_dc

    .line 749
    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->controller:Lim/tpelyyftgw/messenger/voip/VoIPController;

    invoke-virtual {v0}, Lim/tpelyyftgw/messenger/voip/VoIPController;->getDebugLog()Ljava/lang/String;

    move-result-object v0

    iput-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->debugLog:Ljava/lang/String;

    .line 751
    :cond_dc
    iget-boolean v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->needSendDebugLog:Z

    if-eqz v0, :cond_251

    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->debugLog:Ljava/lang/String;

    if-eqz v0, :cond_251

    .line 752
    new-instance v0, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_saveCallDebug;

    invoke-direct {v0}, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_saveCallDebug;-><init>()V

    .line 753
    .local v0, "req":Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_saveCallDebug;
    new-instance v1, Lim/tpelyyftgw/tgnet/TLRPC$TL_dataJSON;

    invoke-direct {v1}, Lim/tpelyyftgw/tgnet/TLRPC$TL_dataJSON;-><init>()V

    iput-object v1, v0, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_saveCallDebug;->debug:Lim/tpelyyftgw/tgnet/TLRPC$TL_dataJSON;

    .line 754
    iget-object v1, v0, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_saveCallDebug;->debug:Lim/tpelyyftgw/tgnet/TLRPC$TL_dataJSON;

    iget-object v2, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->debugLog:Ljava/lang/String;

    iput-object v2, v1, Lim/tpelyyftgw/tgnet/TLRPC$TL_dataJSON;->data:Ljava/lang/String;

    .line 755
    new-instance v1, Lim/tpelyyftgw/tgnet/TLRPC$TL_inputPhoneCall;

    invoke-direct {v1}, Lim/tpelyyftgw/tgnet/TLRPC$TL_inputPhoneCall;-><init>()V

    iput-object v1, v0, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_saveCallDebug;->peer:Lim/tpelyyftgw/tgnet/TLRPC$TL_inputPhoneCall;

    .line 756
    iget-object v1, v0, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_saveCallDebug;->peer:Lim/tpelyyftgw/tgnet/TLRPC$TL_inputPhoneCall;

    iget-wide v2, p1, Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;->access_hash:J

    iput-wide v2, v1, Lim/tpelyyftgw/tgnet/TLRPC$TL_inputPhoneCall;->access_hash:J

    .line 757
    iget-object v1, v0, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_saveCallDebug;->peer:Lim/tpelyyftgw/tgnet/TLRPC$TL_inputPhoneCall;

    iget-wide v2, p1, Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;->id:J

    iput-wide v2, v1, Lim/tpelyyftgw/tgnet/TLRPC$TL_inputPhoneCall;->id:J

    .line 758
    iget v1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->currentAccount:I

    invoke-static {v1}, Lim/tpelyyftgw/tgnet/ConnectionsManager;->getInstance(I)Lim/tpelyyftgw/tgnet/ConnectionsManager;

    move-result-object v1

    new-instance v2, Lim/tpelyyftgw/messenger/voip/VoIPService$11;

    invoke-direct {v2, p0}, Lim/tpelyyftgw/messenger/voip/VoIPService$11;-><init>(Lim/tpelyyftgw/messenger/voip/VoIPService;)V

    invoke-virtual {v1, v0, v2}, Lim/tpelyyftgw/tgnet/ConnectionsManager;->sendRequest(Lim/tpelyyftgw/tgnet/TLObject;Lim/tpelyyftgw/tgnet/RequestDelegate;)I

    .line 766
    .end local v0    # "req":Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_saveCallDebug;
    goto/16 :goto_251

    .line 767
    :cond_119
    instance-of v0, p1, Lim/tpelyyftgw/tgnet/TLRPC$TL_phoneCall;

    if-eqz v0, :cond_1e4

    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->authKey:[B

    if-nez v0, :cond_1e4

    .line 768
    iget-object v0, p1, Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;->g_a_or_b:[B

    if-nez v0, :cond_133

    .line 769
    sget-boolean v0, Lim/tpelyyftgw/messenger/BuildVars;->LOGS_ENABLED:Z

    if-eqz v0, :cond_12f

    .line 770
    const-string/jumbo v0, "stopping VoIP service, Ga == null"

    invoke-static {v0}, Lim/tpelyyftgw/messenger/FileLog;->w(Ljava/lang/String;)V

    .line 772
    :cond_12f
    invoke-virtual {p0}, Lim/tpelyyftgw/messenger/voip/VoIPService;->callFailed()V

    .line 773
    return-void

    .line 775
    :cond_133
    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->g_a_hash:[B

    iget-object v2, p1, Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;->g_a_or_b:[B

    iget-object v3, p1, Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;->g_a_or_b:[B

    array-length v3, v3

    const/4 v4, 0x0

    invoke-static {v2, v4, v3}, Lim/tpelyyftgw/messenger/Utilities;->computeSHA256([BII)[B

    move-result-object v2

    invoke-static {v0, v2}, Ljava/util/Arrays;->equals([B[B)Z

    move-result v0

    if-nez v0, :cond_153

    .line 776
    sget-boolean v0, Lim/tpelyyftgw/messenger/BuildVars;->LOGS_ENABLED:Z

    if-eqz v0, :cond_14f

    .line 777
    const-string/jumbo v0, "stopping VoIP service, Ga hash doesn\'t match"

    invoke-static {v0}, Lim/tpelyyftgw/messenger/FileLog;->w(Ljava/lang/String;)V

    .line 779
    :cond_14f
    invoke-virtual {p0}, Lim/tpelyyftgw/messenger/voip/VoIPService;->callFailed()V

    .line 780
    return-void

    .line 782
    :cond_153
    iget-object v0, p1, Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;->g_a_or_b:[B

    iput-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->g_a:[B

    .line 783
    new-instance v0, Ljava/math/BigInteger;

    iget-object v2, p1, Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;->g_a_or_b:[B

    invoke-direct {v0, v1, v2}, Ljava/math/BigInteger;-><init>(I[B)V

    .line 784
    .local v0, "g_a":Ljava/math/BigInteger;
    new-instance v2, Ljava/math/BigInteger;

    iget v3, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->currentAccount:I

    invoke-static {v3}, Lim/tpelyyftgw/messenger/MessagesStorage;->getInstance(I)Lim/tpelyyftgw/messenger/MessagesStorage;

    move-result-object v3

    invoke-virtual {v3}, Lim/tpelyyftgw/messenger/MessagesStorage;->getSecretPBytes()[B

    move-result-object v3

    invoke-direct {v2, v1, v3}, Ljava/math/BigInteger;-><init>(I[B)V

    .line 786
    .local v2, "p":Ljava/math/BigInteger;
    invoke-static {v0, v2}, Lim/tpelyyftgw/messenger/Utilities;->isGoodGaAndGb(Ljava/math/BigInteger;Ljava/math/BigInteger;)Z

    move-result v3

    if-nez v3, :cond_181

    .line 787
    sget-boolean v1, Lim/tpelyyftgw/messenger/BuildVars;->LOGS_ENABLED:Z

    if-eqz v1, :cond_17d

    .line 788
    const-string/jumbo v1, "stopping VoIP service, bad Ga and Gb (accepting)"

    invoke-static {v1}, Lim/tpelyyftgw/messenger/FileLog;->w(Ljava/lang/String;)V

    .line 790
    :cond_17d
    invoke-virtual {p0}, Lim/tpelyyftgw/messenger/voip/VoIPService;->callFailed()V

    .line 791
    return-void

    .line 793
    :cond_181
    new-instance v3, Ljava/math/BigInteger;

    iget-object v5, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->a_or_b:[B

    invoke-direct {v3, v1, v5}, Ljava/math/BigInteger;-><init>(I[B)V

    invoke-virtual {v0, v3, v2}, Ljava/math/BigInteger;->modPow(Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;

    move-result-object v0

    .line 795
    invoke-virtual {v0}, Ljava/math/BigInteger;->toByteArray()[B

    move-result-object v1

    .line 796
    .local v1, "authKey":[B
    array-length v3, v1

    const/16 v5, 0x100

    if-le v3, v5, :cond_19e

    .line 797
    new-array v3, v5, [B

    .line 798
    .local v3, "correctedAuth":[B
    array-length v6, v1

    sub-int/2addr v6, v5

    invoke-static {v1, v6, v3, v4, v5}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    .line 799
    move-object v1, v3

    .end local v3    # "correctedAuth":[B
    goto :goto_1b7

    .line 800
    :cond_19e
    array-length v3, v1

    if-ge v3, v5, :cond_1b7

    .line 801
    new-array v3, v5, [B

    .line 802
    .restart local v3    # "correctedAuth":[B
    array-length v6, v1

    rsub-int v6, v6, 0x100

    array-length v7, v1

    invoke-static {v1, v4, v3, v6, v7}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    .line 803
    const/4 v6, 0x0

    .local v6, "a":I
    :goto_1ab
    array-length v7, v1

    rsub-int v7, v7, 0x100

    if-ge v6, v7, :cond_1b5

    .line 804
    aput-byte v4, v3, v6

    .line 803
    add-int/lit8 v6, v6, 0x1

    goto :goto_1ab

    .line 806
    .end local v6    # "a":I
    :cond_1b5
    move-object v1, v3

    goto :goto_1b8

    .line 800
    .end local v3    # "correctedAuth":[B
    :cond_1b7
    :goto_1b7
    nop

    .line 808
    :goto_1b8
    invoke-static {v1}, Lim/tpelyyftgw/messenger/Utilities;->computeSHA1([B)[B

    move-result-object v3

    .line 809
    .local v3, "authKeyHash":[B
    const/16 v5, 0x8

    new-array v6, v5, [B

    .line 810
    .local v6, "authKeyId":[B
    array-length v7, v3

    sub-int/2addr v7, v5

    invoke-static {v3, v7, v6, v4, v5}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    .line 811
    iput-object v1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->authKey:[B

    .line 812
    invoke-static {v6}, Lim/tpelyyftgw/messenger/Utilities;->bytesToLong([B)J

    move-result-wide v4

    iput-wide v4, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->keyFingerprint:J

    .line 814
    iget-wide v7, p1, Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;->key_fingerprint:J

    cmp-long v9, v4, v7

    if-eqz v9, :cond_1e0

    .line 815
    sget-boolean v4, Lim/tpelyyftgw/messenger/BuildVars;->LOGS_ENABLED:Z

    if-eqz v4, :cond_1dc

    .line 816
    const-string v4, "key fingerprints don\'t match"

    invoke-static {v4}, Lim/tpelyyftgw/messenger/FileLog;->w(Ljava/lang/String;)V

    .line 818
    :cond_1dc
    invoke-virtual {p0}, Lim/tpelyyftgw/messenger/voip/VoIPService;->callFailed()V

    .line 819
    return-void

    .line 822
    :cond_1e0
    invoke-direct {p0}, Lim/tpelyyftgw/messenger/voip/VoIPService;->initiateActualEncryptedCall()V

    .line 823
    .end local v0    # "g_a":Ljava/math/BigInteger;
    .end local v1    # "authKey":[B
    .end local v2    # "p":Ljava/math/BigInteger;
    .end local v3    # "authKeyHash":[B
    .end local v6    # "authKeyId":[B
    goto :goto_251

    :cond_1e4
    instance-of v0, p1, Lim/tpelyyftgw/tgnet/TLRPC$TL_phoneCallAccepted;

    if-eqz v0, :cond_1f0

    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->authKey:[B

    if-nez v0, :cond_1f0

    .line 824
    invoke-direct {p0}, Lim/tpelyyftgw/messenger/voip/VoIPService;->processAcceptedCall()V

    goto :goto_251

    .line 826
    :cond_1f0
    iget v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->currentState:I

    const/16 v1, 0xd

    if-ne v0, v1, :cond_251

    iget v0, p1, Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;->receive_date:I

    if-eqz v0, :cond_251

    .line 827
    const/16 v0, 0x10

    invoke-virtual {p0, v0}, Lim/tpelyyftgw/messenger/voip/VoIPService;->dispatchStateChanged(I)V

    .line 828
    sget-boolean v0, Lim/tpelyyftgw/messenger/BuildVars;->LOGS_ENABLED:Z

    if-eqz v0, :cond_208

    .line 829
    const-string v0, "!!!!!! CALL RECEIVED"

    invoke-static {v0}, Lim/tpelyyftgw/messenger/FileLog;->d(Ljava/lang/String;)V

    .line 831
    :cond_208
    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->connectingSoundRunnable:Ljava/lang/Runnable;

    const/4 v1, 0x0

    if-eqz v0, :cond_214

    .line 832
    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->connectingSoundRunnable:Ljava/lang/Runnable;

    invoke-static {v0}, Lim/tpelyyftgw/messenger/AndroidUtilities;->cancelRunOnUIThread(Ljava/lang/Runnable;)V

    .line 833
    iput-object v1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->connectingSoundRunnable:Ljava/lang/Runnable;

    .line 835
    :cond_214
    iget v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->spPlayID:I

    if-eqz v0, :cond_21f

    .line 836
    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->soundPool:Landroid/media/SoundPool;

    iget v2, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->spPlayID:I

    invoke-virtual {v0, v2}, Landroid/media/SoundPool;->stop(I)V

    .line 837
    :cond_21f
    iget-object v3, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->soundPool:Landroid/media/SoundPool;

    iget v4, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->spRingbackID:I

    const/high16 v5, 0x3f800000    # 1.0f

    const/high16 v6, 0x3f800000    # 1.0f

    const/4 v7, 0x0

    const/4 v8, -0x1

    const/high16 v9, 0x3f800000    # 1.0f

    invoke-virtual/range {v3 .. v9}, Landroid/media/SoundPool;->play(IFFIIF)I

    move-result v0

    iput v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->spPlayID:I

    .line 838
    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->timeoutRunnable:Ljava/lang/Runnable;

    if-eqz v0, :cond_23c

    .line 839
    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->timeoutRunnable:Ljava/lang/Runnable;

    invoke-static {v0}, Lim/tpelyyftgw/messenger/AndroidUtilities;->cancelRunOnUIThread(Ljava/lang/Runnable;)V

    .line 840
    iput-object v1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->timeoutRunnable:Ljava/lang/Runnable;

    .line 842
    :cond_23c
    new-instance v0, Lim/tpelyyftgw/messenger/voip/VoIPService$12;

    invoke-direct {v0, p0}, Lim/tpelyyftgw/messenger/voip/VoIPService$12;-><init>(Lim/tpelyyftgw/messenger/voip/VoIPService;)V

    iput-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->timeoutRunnable:Ljava/lang/Runnable;

    .line 849
    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->timeoutRunnable:Ljava/lang/Runnable;

    iget v1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->currentAccount:I

    invoke-static {v1}, Lim/tpelyyftgw/messenger/MessagesController;->getInstance(I)Lim/tpelyyftgw/messenger/MessagesController;

    move-result-object v1

    iget v1, v1, Lim/tpelyyftgw/messenger/MessagesController;->callRingTimeout:I

    int-to-long v1, v1

    invoke-static {v0, v1, v2}, Lim/tpelyyftgw/messenger/AndroidUtilities;->runOnUIThread(Ljava/lang/Runnable;J)V

    .line 852
    :cond_251
    :goto_251
    return-void
.end method

.method public onCallUpgradeRequestReceived()V
    .registers 2

    .line 1257
    new-instance v0, Ljava/util/ArrayList;

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

    invoke-virtual {p0, v0}, Lim/tpelyyftgw/messenger/voip/VoIPService;->upgradeToGroupCall(Ljava/util/List;)V

    .line 1258
    return-void
.end method

.method public onConnectionStateChanged(I)V
    .registers 3
    .param p1, "newState"    # I

    .line 1232
    const/4 v0, 0x3

    if-ne p1, v0, :cond_b

    .line 1233
    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->controller:Lim/tpelyyftgw/messenger/voip/VoIPController;

    invoke-virtual {v0}, Lim/tpelyyftgw/messenger/voip/VoIPController;->getPeerCapabilities()I

    move-result v0

    iput v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->peerCapabilities:I

    .line 1235
    :cond_b
    invoke-super {p0, p1}, Lim/tpelyyftgw/messenger/voip/VoIPBaseService;->onConnectionStateChanged(I)V

    .line 1236
    return-void
.end method

.method protected onControllerPreRelease()V
    .registers 2

    .line 219
    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->debugLog:Ljava/lang/String;

    if-nez v0, :cond_c

    .line 220
    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->controller:Lim/tpelyyftgw/messenger/voip/VoIPController;

    invoke-virtual {v0}, Lim/tpelyyftgw/messenger/voip/VoIPController;->getDebugLog()Ljava/lang/String;

    move-result-object v0

    iput-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->debugLog:Ljava/lang/String;

    .line 221
    :cond_c
    return-void
.end method

.method public onCreate()V
    .registers 4

    .line 173
    invoke-super {p0}, Lim/tpelyyftgw/messenger/voip/VoIPBaseService;->onCreate()V

    .line 174
    sget-object v0, Lim/tpelyyftgw/messenger/voip/VoIPService;->callIShouldHavePutIntoIntent:Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;

    if-eqz v0, :cond_39

    sget v0, Landroid/os/Build$VERSION;->SDK_INT:I

    const/16 v1, 0x1a

    if-lt v0, v1, :cond_39

    .line 175
    invoke-static {}, Lim/tpelyyftgw/messenger/NotificationsController;->checkOtherNotificationsChannel()V

    .line 176
    new-instance v0, Landroid/app/Notification$Builder;

    sget-object v1, Lim/tpelyyftgw/messenger/NotificationsController;->OTHER_NOTIFICATIONS_CHANNEL:Ljava/lang/String;

    invoke-direct {v0, p0, v1}, Landroid/app/Notification$Builder;-><init>(Landroid/content/Context;Ljava/lang/String;)V

    const v1, 0x7f0d01ad

    .line 177
    invoke-virtual {v0, v1}, Landroid/app/Notification$Builder;->setSmallIcon(I)Landroid/app/Notification$Builder;

    move-result-object v0

    const v1, 0x7f0f124b

    .line 178
    const-string v2, "VoipOutgoingCall"

    invoke-static {v2, v1}, Lim/tpelyyftgw/messenger/LocaleController;->getString(Ljava/lang/String;I)Ljava/lang/String;

    move-result-object v1

    invoke-virtual {v0, v1}, Landroid/app/Notification$Builder;->setContentTitle(Ljava/lang/CharSequence;)Landroid/app/Notification$Builder;

    move-result-object v0

    const/4 v1, 0x0

    .line 179
    invoke-virtual {v0, v1}, Landroid/app/Notification$Builder;->setShowWhen(Z)Landroid/app/Notification$Builder;

    move-result-object v0

    .line 180
    .local v0, "bldr":Landroid/app/Notification$Builder;
    const/16 v1, 0xc9

    invoke-virtual {v0}, Landroid/app/Notification$Builder;->build()Landroid/app/Notification;

    move-result-object v2

    invoke-virtual {p0, v1, v2}, Lim/tpelyyftgw/messenger/voip/VoIPService;->startForeground(ILandroid/app/Notification;)V

    .line 182
    .end local v0    # "bldr":Landroid/app/Notification$Builder;
    :cond_39
    return-void
.end method

.method public onGroupCallKeyReceived([B)V
    .registers 7
    .param p1, "key"    # [B

    .line 1240
    const/4 v0, 0x1

    iput-boolean v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->joiningGroupCall:Z

    .line 1241
    iput-object p1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->groupCallEncryptionKey:[B

    .line 1242
    invoke-static {p1}, Lim/tpelyyftgw/messenger/Utilities;->computeSHA1([B)[B

    move-result-object v0

    .line 1243
    .local v0, "authKeyHash":[B
    const/16 v1, 0x8

    new-array v2, v1, [B

    .line 1244
    .local v2, "authKeyId":[B
    array-length v3, v0

    sub-int/2addr v3, v1

    const/4 v4, 0x0

    invoke-static {v0, v3, v2, v4, v1}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    .line 1245
    invoke-static {v2}, Lim/tpelyyftgw/messenger/Utilities;->bytesToLong([B)J

    move-result-wide v3

    iput-wide v3, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->groupCallKeyFingerprint:J

    .line 1246
    return-void
.end method

.method public onGroupCallKeySent()V
    .registers 2

    .line 1250
    iget-boolean v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->isOutgoing:Z

    .line 1253
    return-void
.end method

.method onMediaButtonEvent(Landroid/view/KeyEvent;)V
    .registers 5
    .param p1, "ev"    # Landroid/view/KeyEvent;

    .line 1121
    invoke-virtual {p1}, Landroid/view/KeyEvent;->getKeyCode()I

    move-result v0

    const/16 v1, 0x4f

    if-eq v0, v1, :cond_18

    invoke-virtual {p1}, Landroid/view/KeyEvent;->getKeyCode()I

    move-result v0

    const/16 v1, 0x7f

    if-eq v0, v1, :cond_18

    invoke-virtual {p1}, Landroid/view/KeyEvent;->getKeyCode()I

    move-result v0

    const/16 v1, 0x55

    if-ne v0, v1, :cond_47

    .line 1122
    :cond_18
    invoke-virtual {p1}, Landroid/view/KeyEvent;->getAction()I

    move-result v0

    const/4 v1, 0x1

    if-ne v0, v1, :cond_47

    .line 1123
    iget v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->currentState:I

    const/16 v2, 0xf

    if-ne v0, v2, :cond_29

    .line 1124
    invoke-virtual {p0}, Lim/tpelyyftgw/messenger/voip/VoIPService;->acceptIncomingCall()V

    goto :goto_47

    .line 1126
    :cond_29
    invoke-virtual {p0}, Lim/tpelyyftgw/messenger/voip/VoIPService;->isMicMute()Z

    move-result v0

    xor-int/2addr v0, v1

    invoke-virtual {p0, v0}, Lim/tpelyyftgw/messenger/voip/VoIPService;->setMicMute(Z)V

    .line 1127
    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->stateListeners:Ljava/util/ArrayList;

    invoke-virtual {v0}, Ljava/util/ArrayList;->iterator()Ljava/util/Iterator;

    move-result-object v0

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

    move-result v1

    if-eqz v1, :cond_47

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

    move-result-object v1

    check-cast v1, Lim/tpelyyftgw/messenger/voip/VoIPBaseService$StateListener;

    .line 1128
    .local v1, "l":Lim/tpelyyftgw/messenger/voip/VoIPBaseService$StateListener;
    invoke-interface {v1}, Lim/tpelyyftgw/messenger/voip/VoIPBaseService$StateListener;->onAudioSettingsChanged()V

    .end local v1    # "l":Lim/tpelyyftgw/messenger/voip/VoIPBaseService$StateListener;
    goto :goto_37

    .line 1132
    :cond_47
    :goto_47
    return-void
.end method

.method public onStartCommand(Landroid/content/Intent;II)I
    .registers 15
    .param p1, "intent"    # Landroid/content/Intent;
    .param p2, "flags"    # I
    .param p3, "startId"    # I

    .line 107
    sget-object v0, Lim/tpelyyftgw/messenger/voip/VoIPService;->sharedInstance:Lim/tpelyyftgw/messenger/voip/VoIPBaseService;

    const/4 v1, 0x2

    if-eqz v0, :cond_f

    .line 108
    sget-boolean v0, Lim/tpelyyftgw/messenger/BuildVars;->LOGS_ENABLED:Z

    if-eqz v0, :cond_e

    .line 109
    const-string v0, "Tried to start the VoIP service when it\'s already started"

    invoke-static {v0}, Lim/tpelyyftgw/messenger/FileLog;->e(Ljava/lang/String;)V

    .line 111
    :cond_e
    return v1

    .line 114
    :cond_f
    const/4 v0, -0x1

    const-string v2, "account"

    invoke-virtual {p1, v2, v0}, Landroid/content/Intent;->getIntExtra(Ljava/lang/String;I)I

    move-result v2

    iput v2, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->currentAccount:I

    .line 115
    iget v2, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->currentAccount:I

    if-eq v2, v0, :cond_100

    .line 117
    const/4 v0, 0x0

    const-string/jumbo v2, "user_id"

    invoke-virtual {p1, v2, v0}, Landroid/content/Intent;->getIntExtra(Ljava/lang/String;I)I

    move-result v2

    .line 118
    .local v2, "userID":I
    const-string v3, "is_outgoing"

    invoke-virtual {p1, v3, v0}, Landroid/content/Intent;->getBooleanExtra(Ljava/lang/String;Z)Z

    move-result v3

    iput-boolean v3, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->isOutgoing:Z

    .line 119
    iget v3, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->currentAccount:I

    invoke-static {v3}, Lim/tpelyyftgw/messenger/MessagesController;->getInstance(I)Lim/tpelyyftgw/messenger/MessagesController;

    move-result-object v3

    invoke-static {v2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v4

    invoke-virtual {v3, v4}, Lim/tpelyyftgw/messenger/MessagesController;->getUser(Ljava/lang/Integer;)Lim/tpelyyftgw/tgnet/TLRPC$User;

    move-result-object v3

    iput-object v3, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->user:Lim/tpelyyftgw/tgnet/TLRPC$User;

    .line 121
    if-nez v3, :cond_4b

    .line 122
    sget-boolean v0, Lim/tpelyyftgw/messenger/BuildVars;->LOGS_ENABLED:Z

    if-eqz v0, :cond_47

    .line 123
    const-string v0, "VoIPService: user==null"

    invoke-static {v0}, Lim/tpelyyftgw/messenger/FileLog;->w(Ljava/lang/String;)V

    .line 125
    :cond_47
    invoke-virtual {p0}, Lim/tpelyyftgw/messenger/voip/VoIPService;->stopSelf()V

    .line 126
    return v1

    .line 128
    :cond_4b
    sput-object p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->sharedInstance:Lim/tpelyyftgw/messenger/voip/VoIPBaseService;

    .line 130
    iget-boolean v3, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->isOutgoing:Z

    const/4 v4, 0x1

    const/4 v5, 0x0

    if-eqz v3, :cond_dd

    .line 131
    const/16 v3, 0xe

    invoke-virtual {p0, v3}, Lim/tpelyyftgw/messenger/voip/VoIPService;->dispatchStateChanged(I)V

    .line 132
    sget-boolean v3, Lim/tpelyyftgw/messenger/voip/VoIPService;->USE_CONNECTION_SERVICE:Z

    if-eqz v3, :cond_b7

    .line 133
    const-string/jumbo v3, "telecom"

    invoke-virtual {p0, v3}, Lim/tpelyyftgw/messenger/voip/VoIPService;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;

    move-result-object v3

    check-cast v3, Landroid/telecom/TelecomManager;

    .line 134
    .local v3, "tm":Landroid/telecom/TelecomManager;
    new-instance v6, Landroid/os/Bundle;

    invoke-direct {v6}, Landroid/os/Bundle;-><init>()V

    .line 135
    .local v6, "extras":Landroid/os/Bundle;
    new-instance v7, Landroid/os/Bundle;

    invoke-direct {v7}, Landroid/os/Bundle;-><init>()V

    .line 136
    .local v7, "myExtras":Landroid/os/Bundle;
    invoke-virtual {p0}, Lim/tpelyyftgw/messenger/voip/VoIPService;->addAccountToTelecomManager()Landroid/telecom/PhoneAccountHandle;

    move-result-object v8

    const-string v9, "android.telecom.extra.PHONE_ACCOUNT_HANDLE"

    invoke-virtual {v6, v9, v8}, Landroid/os/Bundle;->putParcelable(Ljava/lang/String;Landroid/os/Parcelable;)V

    .line 137
    const-string v8, "call_type"

    invoke-virtual {v7, v8, v4}, Landroid/os/Bundle;->putInt(Ljava/lang/String;I)V

    .line 138
    const-string v4, "android.telecom.extra.OUTGOING_CALL_EXTRAS"

    invoke-virtual {v6, v4, v7}, Landroid/os/Bundle;->putBundle(Ljava/lang/String;Landroid/os/Bundle;)V

    .line 139
    iget v4, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->currentAccount:I

    invoke-static {v4}, Lim/tpelyyftgw/messenger/ContactsController;->getInstance(I)Lim/tpelyyftgw/messenger/ContactsController;

    move-result-object v4

    iget-object v8, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->user:Lim/tpelyyftgw/tgnet/TLRPC$User;

    iget v8, v8, Lim/tpelyyftgw/tgnet/TLRPC$User;->id:I

    iget-object v9, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->user:Lim/tpelyyftgw/tgnet/TLRPC$User;

    iget-object v9, v9, Lim/tpelyyftgw/tgnet/TLRPC$User;->first_name:Ljava/lang/String;

    iget-object v10, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->user:Lim/tpelyyftgw/tgnet/TLRPC$User;

    iget-object v10, v10, Lim/tpelyyftgw/tgnet/TLRPC$User;->last_name:Ljava/lang/String;

    invoke-virtual {v4, v8, v9, v10}, Lim/tpelyyftgw/messenger/ContactsController;->createOrUpdateConnectionServiceContact(ILjava/lang/String;Ljava/lang/String;)V

    .line 140
    new-instance v4, Ljava/lang/StringBuilder;

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

    const-string v8, "+99084"

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

    iget-object v8, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->user:Lim/tpelyyftgw/tgnet/TLRPC$User;

    iget v8, v8, Lim/tpelyyftgw/tgnet/TLRPC$User;->id:I

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

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

    move-result-object v4

    const-string/jumbo v8, "tel"

    invoke-static {v8, v4, v5}, Landroid/net/Uri;->fromParts(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri;

    move-result-object v4

    invoke-virtual {v3, v4, v6}, Landroid/telecom/TelecomManager;->placeCall(Landroid/net/Uri;Landroid/os/Bundle;)V

    .line 141
    .end local v3    # "tm":Landroid/telecom/TelecomManager;
    .end local v6    # "extras":Landroid/os/Bundle;
    .end local v7    # "myExtras":Landroid/os/Bundle;
    goto :goto_c3

    .line 142
    :cond_b7
    new-instance v3, Lim/tpelyyftgw/messenger/voip/VoIPService$1;

    invoke-direct {v3, p0}, Lim/tpelyyftgw/messenger/voip/VoIPService$1;-><init>(Lim/tpelyyftgw/messenger/voip/VoIPService;)V

    iput-object v3, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->delayedStartOutgoingCall:Ljava/lang/Runnable;

    .line 149
    const-wide/16 v4, 0x7d0

    invoke-static {v3, v4, v5}, Lim/tpelyyftgw/messenger/AndroidUtilities;->runOnUIThread(Ljava/lang/Runnable;J)V

    .line 151
    :goto_c3
    const-string/jumbo v3, "start_incall_activity"

    invoke-virtual {p1, v3, v0}, Landroid/content/Intent;->getBooleanExtra(Ljava/lang/String;Z)Z

    move-result v0

    if-eqz v0, :cond_fc

    .line 152
    new-instance v0, Landroid/content/Intent;

    const-class v3, Lim/tpelyyftgw/ui/VoIPActivity;

    invoke-direct {v0, p0, v3}, Landroid/content/Intent;-><init>(Landroid/content/Context;Ljava/lang/Class;)V

    const/high16 v3, 0x10000000

    invoke-virtual {v0, v3}, Landroid/content/Intent;->addFlags(I)Landroid/content/Intent;

    move-result-object v0

    invoke-virtual {p0, v0}, Lim/tpelyyftgw/messenger/voip/VoIPService;->startActivity(Landroid/content/Intent;)V

    goto :goto_fc

    .line 155
    :cond_dd
    invoke-static {}, Lim/tpelyyftgw/messenger/NotificationCenter;->getGlobalInstance()Lim/tpelyyftgw/messenger/NotificationCenter;

    move-result-object v3

    sget v6, Lim/tpelyyftgw/messenger/NotificationCenter;->closeInCallActivity:I

    new-array v7, v0, [Ljava/lang/Object;

    invoke-virtual {v3, v6, v7}, Lim/tpelyyftgw/messenger/NotificationCenter;->postNotificationName(I[Ljava/lang/Object;)V

    .line 156
    sget-object v3, Lim/tpelyyftgw/messenger/voip/VoIPService;->callIShouldHavePutIntoIntent:Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;

    iput-object v3, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->call:Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;

    .line 157
    sput-object v5, Lim/tpelyyftgw/messenger/voip/VoIPService;->callIShouldHavePutIntoIntent:Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;

    .line 158
    sget-boolean v3, Lim/tpelyyftgw/messenger/voip/VoIPService;->USE_CONNECTION_SERVICE:Z

    if-eqz v3, :cond_f9

    .line 159
    invoke-direct {p0, v0}, Lim/tpelyyftgw/messenger/voip/VoIPService;->acknowledgeCall(Z)V

    .line 160
    invoke-virtual {p0}, Lim/tpelyyftgw/messenger/voip/VoIPService;->showNotification()V

    goto :goto_fc

    .line 162
    :cond_f9
    invoke-direct {p0, v4}, Lim/tpelyyftgw/messenger/voip/VoIPService;->acknowledgeCall(Z)V

    .line 165
    :cond_fc
    :goto_fc
    invoke-virtual {p0}, Lim/tpelyyftgw/messenger/voip/VoIPService;->initializeAccountRelatedThings()V

    .line 167
    return v1

    .line 116
    .end local v2    # "userID":I
    :cond_100
    new-instance v0, Ljava/lang/IllegalStateException;

    const-string v1, "No account specified when starting VoIP service"

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

    throw v0
.end method

.method public onUIForegroundStateChanged(Z)V
    .registers 11
    .param p1, "isForeground"    # Z

    .line 1084
    sget v0, Landroid/os/Build$VERSION;->SDK_INT:I

    const/16 v1, 0x15

    if-lt v0, v1, :cond_7

    .line 1085
    return-void

    .line 1087
    :cond_7
    iget v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->currentState:I

    const/16 v1, 0xf

    if-ne v0, v1, :cond_54

    .line 1088
    if-eqz p1, :cond_14

    .line 1089
    const/4 v0, 0x1

    invoke-virtual {p0, v0}, Lim/tpelyyftgw/messenger/voip/VoIPService;->stopForeground(Z)V

    goto :goto_54

    .line 1091
    :cond_14
    const-string v0, "keyguard"

    invoke-virtual {p0, v0}, Lim/tpelyyftgw/messenger/voip/VoIPService;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Landroid/app/KeyguardManager;

    invoke-virtual {v0}, Landroid/app/KeyguardManager;->inKeyguardRestrictedInputMode()Z

    move-result v0

    if-nez v0, :cond_4a

    .line 1092
    invoke-static {p0}, Landroidx/core/app/NotificationManagerCompat;->from(Landroid/content/Context;)Landroidx/core/app/NotificationManagerCompat;

    move-result-object v0

    invoke-virtual {v0}, Landroidx/core/app/NotificationManagerCompat;->areNotificationsEnabled()Z

    move-result v0

    if-eqz v0, :cond_44

    .line 1093
    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->user:Lim/tpelyyftgw/tgnet/TLRPC$User;

    iget-object v0, v0, Lim/tpelyyftgw/tgnet/TLRPC$User;->first_name:Ljava/lang/String;

    iget-object v1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->user:Lim/tpelyyftgw/tgnet/TLRPC$User;

    iget-object v1, v1, Lim/tpelyyftgw/tgnet/TLRPC$User;->last_name:Ljava/lang/String;

    invoke-static {v0, v1}, Lim/tpelyyftgw/messenger/ContactsController;->formatName(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;

    move-result-object v3

    const/4 v4, 0x0

    iget-object v5, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->user:Lim/tpelyyftgw/tgnet/TLRPC$User;

    const/4 v6, 0x0

    const/4 v7, 0x0

    const-class v8, Lim/tpelyyftgw/ui/VoIPActivity;

    move-object v2, p0

    invoke-virtual/range {v2 .. v8}, Lim/tpelyyftgw/messenger/voip/VoIPService;->showIncomingNotification(Ljava/lang/String;Ljava/lang/CharSequence;Lim/tpelyyftgw/tgnet/TLObject;Ljava/util/List;ILjava/lang/Class;)V

    goto :goto_54

    .line 1095
    :cond_44
    const/4 v0, 0x4

    const/4 v1, 0x0

    invoke-virtual {p0, v0, v1}, Lim/tpelyyftgw/messenger/voip/VoIPService;->declineIncomingCall(ILjava/lang/Runnable;)V

    goto :goto_54

    .line 1097
    :cond_4a
    new-instance v0, Lim/tpelyyftgw/messenger/voip/VoIPService$18;

    invoke-direct {v0, p0}, Lim/tpelyyftgw/messenger/voip/VoIPService$18;-><init>(Lim/tpelyyftgw/messenger/voip/VoIPService;)V

    const-wide/16 v1, 0x1f4

    invoke-static {v0, v1, v2}, Lim/tpelyyftgw/messenger/AndroidUtilities;->runOnUIThread(Ljava/lang/Runnable;J)V

    .line 1118
    :cond_54
    :goto_54
    return-void
.end method

.method protected showNotification()V
    .registers 4

    .line 1024
    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->user:Lim/tpelyyftgw/tgnet/TLRPC$User;

    iget-object v0, v0, Lim/tpelyyftgw/tgnet/TLRPC$User;->first_name:Ljava/lang/String;

    iget-object v1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->user:Lim/tpelyyftgw/tgnet/TLRPC$User;

    iget-object v1, v1, Lim/tpelyyftgw/tgnet/TLRPC$User;->last_name:Ljava/lang/String;

    invoke-static {v0, v1}, Lim/tpelyyftgw/messenger/ContactsController;->formatName(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;

    move-result-object v0

    iget-object v1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->user:Lim/tpelyyftgw/tgnet/TLRPC$User;

    iget-object v1, v1, Lim/tpelyyftgw/tgnet/TLRPC$User;->photo:Lim/tpelyyftgw/tgnet/TLRPC$UserProfilePhoto;

    if-eqz v1, :cond_19

    iget-object v1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->user:Lim/tpelyyftgw/tgnet/TLRPC$User;

    iget-object v1, v1, Lim/tpelyyftgw/tgnet/TLRPC$User;->photo:Lim/tpelyyftgw/tgnet/TLRPC$UserProfilePhoto;

    iget-object v1, v1, Lim/tpelyyftgw/tgnet/TLRPC$UserProfilePhoto;->photo_small:Lim/tpelyyftgw/tgnet/TLRPC$FileLocation;

    goto :goto_1a

    :cond_19
    const/4 v1, 0x0

    :goto_1a
    const-class v2, Lim/tpelyyftgw/ui/VoIPActivity;

    invoke-virtual {p0, v0, v1, v2}, Lim/tpelyyftgw/messenger/voip/VoIPService;->showNotification(Ljava/lang/String;Lim/tpelyyftgw/tgnet/TLRPC$FileLocation;Ljava/lang/Class;)V

    .line 1025
    return-void
.end method

.method protected startRinging()V
    .registers 10

    .line 436
    iget v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->currentState:I

    const/16 v1, 0xf

    if-ne v0, v1, :cond_7

    .line 437
    return-void

    .line 439
    :cond_7
    sget-boolean v0, Lim/tpelyyftgw/messenger/voip/VoIPService;->USE_CONNECTION_SERVICE:Z

    if-eqz v0, :cond_14

    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->systemCallConnection:Lim/tpelyyftgw/messenger/voip/VoIPBaseService$CallConnection;

    if-eqz v0, :cond_14

    .line 440
    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->systemCallConnection:Lim/tpelyyftgw/messenger/voip/VoIPBaseService$CallConnection;

    invoke-virtual {v0}, Lim/tpelyyftgw/messenger/voip/VoIPBaseService$CallConnection;->setRinging()V

    .line 441
    :cond_14
    sget-boolean v0, Lim/tpelyyftgw/messenger/BuildVars;->LOGS_ENABLED:Z

    if-eqz v0, :cond_31

    .line 442
    new-instance v0, Ljava/lang/StringBuilder;

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

    const-string/jumbo v2, "starting ringing for call "

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

    iget-object v2, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->call:Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;

    iget-wide v2, v2, Lim/tpelyyftgw/tgnet/TLRPC$PhoneCall;->id:J

    invoke-virtual {v0, v2, v3}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;

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

    move-result-object v0

    invoke-static {v0}, Lim/tpelyyftgw/messenger/FileLog;->d(Ljava/lang/String;)V

    .line 444
    :cond_31
    invoke-virtual {p0, v1}, Lim/tpelyyftgw/messenger/voip/VoIPService;->dispatchStateChanged(I)V

    .line 445
    sget v0, Landroid/os/Build$VERSION;->SDK_INT:I

    const/16 v1, 0x15

    if-lt v0, v1, :cond_5b

    .line 446
    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->user:Lim/tpelyyftgw/tgnet/TLRPC$User;

    iget-object v0, v0, Lim/tpelyyftgw/tgnet/TLRPC$User;->first_name:Ljava/lang/String;

    iget-object v1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->user:Lim/tpelyyftgw/tgnet/TLRPC$User;

    iget-object v1, v1, Lim/tpelyyftgw/tgnet/TLRPC$User;->last_name:Ljava/lang/String;

    invoke-static {v0, v1}, Lim/tpelyyftgw/messenger/ContactsController;->formatName(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;

    move-result-object v3

    const/4 v4, 0x0

    iget-object v5, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->user:Lim/tpelyyftgw/tgnet/TLRPC$User;

    const/4 v6, 0x0

    const/4 v7, 0x0

    const-class v8, Lim/tpelyyftgw/ui/VoIPActivity;

    move-object v2, p0

    invoke-virtual/range {v2 .. v8}, Lim/tpelyyftgw/messenger/voip/VoIPService;->showIncomingNotification(Ljava/lang/String;Ljava/lang/CharSequence;Lim/tpelyyftgw/tgnet/TLObject;Ljava/util/List;ILjava/lang/Class;)V

    .line 447
    sget-boolean v0, Lim/tpelyyftgw/messenger/BuildVars;->LOGS_ENABLED:Z

    if-eqz v0, :cond_8d

    .line 448
    const-string v0, "Showing incoming call notification"

    invoke-static {v0}, Lim/tpelyyftgw/messenger/FileLog;->d(Ljava/lang/String;)V

    goto :goto_8d

    .line 451
    :cond_5b
    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->user:Lim/tpelyyftgw/tgnet/TLRPC$User;

    iget v0, v0, Lim/tpelyyftgw/tgnet/TLRPC$User;->id:I

    invoke-virtual {p0, v0}, Lim/tpelyyftgw/messenger/voip/VoIPService;->startRingtoneAndVibration(I)V

    .line 452
    sget-boolean v0, Lim/tpelyyftgw/messenger/BuildVars;->LOGS_ENABLED:Z

    if-eqz v0, :cond_6b

    .line 453
    const-string v0, "Starting incall activity for incoming call"

    invoke-static {v0}, Lim/tpelyyftgw/messenger/FileLog;->d(Ljava/lang/String;)V

    .line 456
    :cond_6b
    const/16 v0, 0x3039

    :try_start_6d
    new-instance v1, Landroid/content/Intent;

    const-class v2, Lim/tpelyyftgw/ui/VoIPActivity;

    invoke-direct {v1, p0, v2}, Landroid/content/Intent;-><init>(Landroid/content/Context;Ljava/lang/Class;)V

    const/high16 v2, 0x10000000

    invoke-virtual {v1, v2}, Landroid/content/Intent;->addFlags(I)Landroid/content/Intent;

    move-result-object v1

    const/4 v2, 0x0

    invoke-static {p0, v0, v1, v2}, Landroid/app/PendingIntent;->getActivity(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent;

    move-result-object v0

    invoke-virtual {v0}, Landroid/app/PendingIntent;->send()V
    :try_end_82
    .catch Ljava/lang/Exception; {:try_start_6d .. :try_end_82} :catch_83

    .line 461
    goto :goto_8d

    .line 457
    :catch_83
    move-exception v0

    .line 458
    .local v0, "x":Ljava/lang/Exception;
    sget-boolean v1, Lim/tpelyyftgw/messenger/BuildVars;->LOGS_ENABLED:Z

    if-eqz v1, :cond_8d

    .line 459
    const-string v1, "Error starting incall activity"

    invoke-static {v1, v0}, Lim/tpelyyftgw/messenger/FileLog;->e(Ljava/lang/String;Ljava/lang/Throwable;)V

    .line 463
    .end local v0    # "x":Ljava/lang/Exception;
    :cond_8d
    :goto_8d
    return-void
.end method

.method public startRingtoneAndVibration()V
    .registers 2

    .line 467
    iget-boolean v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->startedRinging:Z

    if-nez v0, :cond_e

    .line 468
    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->user:Lim/tpelyyftgw/tgnet/TLRPC$User;

    iget v0, v0, Lim/tpelyyftgw/tgnet/TLRPC$User;->id:I

    invoke-virtual {p0, v0}, Lim/tpelyyftgw/messenger/voip/VoIPService;->startRingtoneAndVibration(I)V

    .line 469
    const/4 v0, 0x1

    iput-boolean v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->startedRinging:Z

    .line 471
    :cond_e
    return-void
.end method

.method protected updateServerConfig()V
    .registers 5

    .line 186
    iget v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->currentAccount:I

    invoke-static {v0}, Lim/tpelyyftgw/messenger/MessagesController;->getMainSettings(I)Landroid/content/SharedPreferences;

    move-result-object v0

    .line 187
    .local v0, "preferences":Landroid/content/SharedPreferences;
    const-string/jumbo v1, "voip_server_config"

    const-string/jumbo v2, "{}"

    invoke-interface {v0, v1, v2}, Landroid/content/SharedPreferences;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;

    move-result-object v1

    invoke-static {v1}, Lim/tpelyyftgw/messenger/voip/VoIPServerConfig;->setConfig(Ljava/lang/String;)V

    .line 188
    iget v1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->currentAccount:I

    invoke-static {v1}, Lim/tpelyyftgw/tgnet/ConnectionsManager;->getInstance(I)Lim/tpelyyftgw/tgnet/ConnectionsManager;

    move-result-object v1

    new-instance v2, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_getCallConfig;

    invoke-direct {v2}, Lim/tpelyyftgw/tgnet/TLRPC$TL_phone_getCallConfig;-><init>()V

    new-instance v3, Lim/tpelyyftgw/messenger/voip/VoIPService$2;

    invoke-direct {v3, p0, v0}, Lim/tpelyyftgw/messenger/voip/VoIPService$2;-><init>(Lim/tpelyyftgw/messenger/voip/VoIPService;Landroid/content/SharedPreferences;)V

    invoke-virtual {v1, v2, v3}, Lim/tpelyyftgw/tgnet/ConnectionsManager;->sendRequest(Lim/tpelyyftgw/tgnet/TLObject;Lim/tpelyyftgw/tgnet/RequestDelegate;)I

    .line 198
    return-void
.end method

.method public upgradeToGroupCall(Ljava/util/List;)V
    .registers 7
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/util/List<",
            "Ljava/lang/Integer;",
            ">;)V"
        }
    .end annotation

    .line 1169
    .local p1, "usersToAdd":Ljava/util/List;, "Ljava/util/List<Ljava/lang/Integer;>;"
    iget-boolean v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->upgrading:Z

    if-eqz v0, :cond_5

    .line 1170
    return-void

    .line 1171
    :cond_5
    iput-object p1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->groupUsersToAdd:Ljava/util/List;

    .line 1172
    iget-boolean v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->isOutgoing:Z

    if-nez v0, :cond_11

    .line 1173
    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->controller:Lim/tpelyyftgw/messenger/voip/VoIPController;

    invoke-virtual {v0}, Lim/tpelyyftgw/messenger/voip/VoIPController;->requestCallUpgrade()V

    .line 1174
    return-void

    .line 1176
    :cond_11
    const/4 v0, 0x1

    iput-boolean v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->upgrading:Z

    .line 1177
    const/16 v0, 0x100

    new-array v0, v0, [B

    iput-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->groupCallEncryptionKey:[B

    .line 1178
    sget-object v0, Lim/tpelyyftgw/messenger/Utilities;->random:Ljava/security/SecureRandom;

    iget-object v1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->groupCallEncryptionKey:[B

    invoke-virtual {v0, v1}, Ljava/security/SecureRandom;->nextBytes([B)V

    .line 1179
    iget-object v0, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->groupCallEncryptionKey:[B

    const/4 v1, 0x0

    aget-byte v2, v0, v1

    and-int/lit8 v2, v2, 0x7f

    int-to-byte v2, v2

    aput-byte v2, v0, v1

    .line 1180
    invoke-static {v0}, Lim/tpelyyftgw/messenger/Utilities;->computeSHA1([B)[B

    move-result-object v0

    .line 1181
    .local v0, "authKeyHash":[B
    const/16 v2, 0x8

    new-array v3, v2, [B

    .line 1182
    .local v3, "authKeyId":[B
    array-length v4, v0

    sub-int/2addr v4, v2

    invoke-static {v0, v4, v3, v1, v2}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    .line 1183
    invoke-static {v3}, Lim/tpelyyftgw/messenger/Utilities;->bytesToLong([B)J

    move-result-wide v1

    iput-wide v1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->groupCallKeyFingerprint:J

    .line 1185
    iget-object v1, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->controller:Lim/tpelyyftgw/messenger/voip/VoIPController;

    iget-object v2, p0, Lim/tpelyyftgw/messenger/voip/VoIPService;->groupCallEncryptionKey:[B

    invoke-virtual {v1, v2}, Lim/tpelyyftgw/messenger/voip/VoIPController;->sendGroupCallKey([B)V

    .line 1186
    return-void
.end method