e.smali

.class public Lio/reactivex/internal/subscriptions/e;
.super Ljava/util/concurrent/atomic/AtomicInteger;
.source "SourceFile"

# interfaces
.implements Lorg/reactivestreams/c;


# static fields
.field private static final serialVersionUID:J = -0x1e62bfbf4b5b12feL


# instance fields
.field public a:Lorg/reactivestreams/c;

.field public b:J

.field public final c:Ljava/util/concurrent/atomic/AtomicReference;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/concurrent/atomic/AtomicReference<",
            "Lorg/reactivestreams/c;",
            ">;"
        }
    .end annotation
.end field

.field public final d:Ljava/util/concurrent/atomic/AtomicLong;

.field public final e:Ljava/util/concurrent/atomic/AtomicLong;

.field public volatile f:Z

.field public g:Z


# direct methods
.method public constructor <init>()V
    .registers 2

    .line 1
    invoke-direct {p0}, Ljava/util/concurrent/atomic/AtomicInteger;-><init>()V

    .line 2
    new-instance v0, Ljava/util/concurrent/atomic/AtomicReference;

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

    iput-object v0, p0, Lio/reactivex/internal/subscriptions/e;->c:Ljava/util/concurrent/atomic/AtomicReference;

    .line 3
    new-instance v0, Ljava/util/concurrent/atomic/AtomicLong;

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

    iput-object v0, p0, Lio/reactivex/internal/subscriptions/e;->d:Ljava/util/concurrent/atomic/AtomicLong;

    .line 4
    new-instance v0, Ljava/util/concurrent/atomic/AtomicLong;

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

    iput-object v0, p0, Lio/reactivex/internal/subscriptions/e;->e:Ljava/util/concurrent/atomic/AtomicLong;

    return-void
.end method


# virtual methods
.method final c()V
    .registers 2

    .line 1
    invoke-virtual {p0}, Ljava/util/concurrent/atomic/AtomicInteger;->getAndIncrement()I

    move-result v0

    if-eqz v0, :cond_7

    return-void

    .line 2
    :cond_7
    invoke-virtual {p0}, Lio/reactivex/internal/subscriptions/e;->d()V

    return-void
.end method

.method public cancel()V
    .registers 2

    .line 1
    iget-boolean v0, p0, Lio/reactivex/internal/subscriptions/e;->f:Z

    if-nez v0, :cond_a

    const/4 v0, 0x1

    .line 2
    iput-boolean v0, p0, Lio/reactivex/internal/subscriptions/e;->f:Z

    .line 3
    invoke-virtual {p0}, Lio/reactivex/internal/subscriptions/e;->c()V

    :cond_a
    return-void
.end method

.method final d()V
    .registers 20

    move-object/from16 v0, p0

    const/4 v1, 0x0

    const-wide/16 v2, 0x0

    const/4 v4, 0x1

    move-object v7, v1

    move-wide v5, v2

    .line 1
    :cond_8
    iget-object v8, v0, Lio/reactivex/internal/subscriptions/e;->c:Ljava/util/concurrent/atomic/AtomicReference;

    invoke-virtual {v8}, Ljava/util/concurrent/atomic/AtomicReference;->get()Ljava/lang/Object;

    move-result-object v8

    check-cast v8, Lorg/reactivestreams/c;

    if-eqz v8, :cond_1a

    .line 2
    iget-object v8, v0, Lio/reactivex/internal/subscriptions/e;->c:Ljava/util/concurrent/atomic/AtomicReference;

    invoke-virtual {v8, v1}, Ljava/util/concurrent/atomic/AtomicReference;->getAndSet(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v8

    check-cast v8, Lorg/reactivestreams/c;

    .line 3
    :cond_1a
    iget-object v9, v0, Lio/reactivex/internal/subscriptions/e;->d:Ljava/util/concurrent/atomic/AtomicLong;

    invoke-virtual {v9}, Ljava/util/concurrent/atomic/AtomicLong;->get()J

    move-result-wide v9

    cmp-long v11, v9, v2

    if-eqz v11, :cond_2a

    .line 4
    iget-object v9, v0, Lio/reactivex/internal/subscriptions/e;->d:Ljava/util/concurrent/atomic/AtomicLong;

    invoke-virtual {v9, v2, v3}, Ljava/util/concurrent/atomic/AtomicLong;->getAndSet(J)J

    move-result-wide v9

    .line 5
    :cond_2a
    iget-object v11, v0, Lio/reactivex/internal/subscriptions/e;->e:Ljava/util/concurrent/atomic/AtomicLong;

    invoke-virtual {v11}, Ljava/util/concurrent/atomic/AtomicLong;->get()J

    move-result-wide v11

    cmp-long v13, v11, v2

    if-eqz v13, :cond_3a

    .line 6
    iget-object v11, v0, Lio/reactivex/internal/subscriptions/e;->e:Ljava/util/concurrent/atomic/AtomicLong;

    invoke-virtual {v11, v2, v3}, Ljava/util/concurrent/atomic/AtomicLong;->getAndSet(J)J

    move-result-wide v11

    .line 7
    :cond_3a
    iget-object v13, v0, Lio/reactivex/internal/subscriptions/e;->a:Lorg/reactivestreams/c;

    .line 8
    iget-boolean v14, v0, Lio/reactivex/internal/subscriptions/e;->f:Z

    if-eqz v14, :cond_4d

    if-eqz v13, :cond_47

    .line 9
    invoke-interface {v13}, Lorg/reactivestreams/c;->cancel()V

    .line 10
    iput-object v1, v0, Lio/reactivex/internal/subscriptions/e;->a:Lorg/reactivestreams/c;

    :cond_47
    if-eqz v8, :cond_89

    .line 11
    invoke-interface {v8}, Lorg/reactivestreams/c;->cancel()V

    goto :goto_89

    .line 12
    :cond_4d
    iget-wide v14, v0, Lio/reactivex/internal/subscriptions/e;->b:J

    const-wide v16, 0x7fffffffffffffffL

    cmp-long v18, v14, v16

    if-eqz v18, :cond_6b

    .line 13
    invoke-static {v14, v15, v9, v10}, Lcom/garena/android/appkit/logging/a;->k(JJ)J

    move-result-wide v14

    cmp-long v18, v14, v16

    if-eqz v18, :cond_69

    sub-long/2addr v14, v11

    cmp-long v11, v14, v2

    if-gez v11, :cond_69

    .line 14
    invoke-static {v14, v15}, Lio/reactivex/internal/subscriptions/f;->reportMoreProduced(J)V

    move-wide v14, v2

    .line 15
    :cond_69
    iput-wide v14, v0, Lio/reactivex/internal/subscriptions/e;->b:J

    :cond_6b
    if-eqz v8, :cond_7e

    if-eqz v13, :cond_72

    .line 16
    invoke-interface {v13}, Lorg/reactivestreams/c;->cancel()V

    .line 17
    :cond_72
    iput-object v8, v0, Lio/reactivex/internal/subscriptions/e;->a:Lorg/reactivestreams/c;

    cmp-long v9, v14, v2

    if-eqz v9, :cond_89

    .line 18
    invoke-static {v5, v6, v14, v15}, Lcom/garena/android/appkit/logging/a;->k(JJ)J

    move-result-wide v5

    move-object v7, v8

    goto :goto_89

    :cond_7e
    if-eqz v13, :cond_89

    cmp-long v8, v9, v2

    if-eqz v8, :cond_89

    .line 19
    invoke-static {v5, v6, v9, v10}, Lcom/garena/android/appkit/logging/a;->k(JJ)J

    move-result-wide v5

    move-object v7, v13

    :cond_89
    :goto_89
    neg-int v4, v4

    .line 20
    invoke-virtual {v0, v4}, Ljava/util/concurrent/atomic/AtomicInteger;->addAndGet(I)I

    move-result v4

    if-nez v4, :cond_8

    cmp-long v1, v5, v2

    if-eqz v1, :cond_97

    .line 21
    invoke-interface {v7, v5, v6}, Lorg/reactivestreams/c;->request(J)V

    :cond_97
    return-void
.end method

.method public final e(J)V
    .registers 8

    .line 1
    iget-boolean v0, p0, Lio/reactivex/internal/subscriptions/e;->g:Z

    if-eqz v0, :cond_5

    return-void

    .line 2
    :cond_5
    invoke-virtual {p0}, Ljava/util/concurrent/atomic/AtomicInteger;->get()I

    move-result v0

    if-nez v0, :cond_36

    const/4 v0, 0x0

    const/4 v1, 0x1

    invoke-virtual {p0, v0, v1}, Ljava/util/concurrent/atomic/AtomicInteger;->compareAndSet(II)Z

    move-result v0

    if-eqz v0, :cond_36

    .line 3
    iget-wide v0, p0, Lio/reactivex/internal/subscriptions/e;->b:J

    const-wide v2, 0x7fffffffffffffffL

    cmp-long v4, v0, v2

    if-eqz v4, :cond_2b

    sub-long/2addr v0, p1

    const-wide/16 p1, 0x0

    cmp-long v2, v0, p1

    if-gez v2, :cond_29

    .line 4
    invoke-static {v0, v1}, Lio/reactivex/internal/subscriptions/f;->reportMoreProduced(J)V

    move-wide v0, p1

    .line 5
    :cond_29
    iput-wide v0, p0, Lio/reactivex/internal/subscriptions/e;->b:J

    .line 6
    :cond_2b
    invoke-virtual {p0}, Ljava/util/concurrent/atomic/AtomicInteger;->decrementAndGet()I

    move-result p1

    if-nez p1, :cond_32

    return-void

    .line 7
    :cond_32
    invoke-virtual {p0}, Lio/reactivex/internal/subscriptions/e;->d()V

    return-void

    .line 8
    :cond_36
    iget-object v0, p0, Lio/reactivex/internal/subscriptions/e;->e:Ljava/util/concurrent/atomic/AtomicLong;

    invoke-static {v0, p1, p2}, Lcom/garena/android/appkit/logging/a;->j(Ljava/util/concurrent/atomic/AtomicLong;J)J

    .line 9
    invoke-virtual {p0}, Lio/reactivex/internal/subscriptions/e;->c()V

    return-void
.end method

.method public final f(Lorg/reactivestreams/c;)V
    .registers 7

    .line 1
    iget-boolean v0, p0, Lio/reactivex/internal/subscriptions/e;->f:Z

    if-eqz v0, :cond_8

    .line 2
    invoke-interface {p1}, Lorg/reactivestreams/c;->cancel()V

    return-void

    :cond_8
    const-string v0, "s is null"

    .line 3
    invoke-static {p1, v0}, Ljava/util/Objects;->requireNonNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;

    .line 4
    invoke-virtual {p0}, Ljava/util/concurrent/atomic/AtomicInteger;->get()I

    move-result v0

    if-nez v0, :cond_39

    const/4 v0, 0x0

    const/4 v1, 0x1

    invoke-virtual {p0, v0, v1}, Ljava/util/concurrent/atomic/AtomicInteger;->compareAndSet(II)Z

    move-result v0

    if-eqz v0, :cond_39

    .line 5
    iget-object v0, p0, Lio/reactivex/internal/subscriptions/e;->a:Lorg/reactivestreams/c;

    if-eqz v0, :cond_22

    .line 6
    invoke-interface {v0}, Lorg/reactivestreams/c;->cancel()V

    .line 7
    :cond_22
    iput-object p1, p0, Lio/reactivex/internal/subscriptions/e;->a:Lorg/reactivestreams/c;

    .line 8
    iget-wide v0, p0, Lio/reactivex/internal/subscriptions/e;->b:J

    .line 9
    invoke-virtual {p0}, Ljava/util/concurrent/atomic/AtomicInteger;->decrementAndGet()I

    move-result v2

    if-eqz v2, :cond_2f

    .line 10
    invoke-virtual {p0}, Lio/reactivex/internal/subscriptions/e;->d()V

    :cond_2f
    const-wide/16 v2, 0x0

    cmp-long v4, v0, v2

    if-eqz v4, :cond_38

    .line 11
    invoke-interface {p1, v0, v1}, Lorg/reactivestreams/c;->request(J)V

    :cond_38
    return-void

    .line 12
    :cond_39
    iget-object v0, p0, Lio/reactivex/internal/subscriptions/e;->c:Ljava/util/concurrent/atomic/AtomicReference;

    invoke-virtual {v0, p1}, Ljava/util/concurrent/atomic/AtomicReference;->getAndSet(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object p1

    check-cast p1, Lorg/reactivestreams/c;

    if-eqz p1, :cond_46

    .line 13
    invoke-interface {p1}, Lorg/reactivestreams/c;->cancel()V

    .line 14
    :cond_46
    invoke-virtual {p0}, Lio/reactivex/internal/subscriptions/e;->c()V

    return-void
.end method

.method public final request(J)V
    .registers 9

    .line 1
    invoke-static {p1, p2}, Lio/reactivex/internal/subscriptions/f;->validate(J)Z

    move-result v0

    if-eqz v0, :cond_49

    .line 2
    iget-boolean v0, p0, Lio/reactivex/internal/subscriptions/e;->g:Z

    if-eqz v0, :cond_b

    return-void

    .line 3
    :cond_b
    invoke-virtual {p0}, Ljava/util/concurrent/atomic/AtomicInteger;->get()I

    move-result v0

    if-nez v0, :cond_41

    const/4 v0, 0x0

    const/4 v1, 0x1

    invoke-virtual {p0, v0, v1}, Ljava/util/concurrent/atomic/AtomicInteger;->compareAndSet(II)Z

    move-result v0

    if-eqz v0, :cond_41

    .line 4
    iget-wide v2, p0, Lio/reactivex/internal/subscriptions/e;->b:J

    const-wide v4, 0x7fffffffffffffffL

    cmp-long v0, v2, v4

    if-eqz v0, :cond_30

    .line 5
    invoke-static {v2, v3, p1, p2}, Lcom/garena/android/appkit/logging/a;->k(JJ)J

    move-result-wide v2

    .line 6
    iput-wide v2, p0, Lio/reactivex/internal/subscriptions/e;->b:J

    cmp-long v0, v2, v4

    if-nez v0, :cond_30

    .line 7
    iput-boolean v1, p0, Lio/reactivex/internal/subscriptions/e;->g:Z

    .line 8
    :cond_30
    iget-object v0, p0, Lio/reactivex/internal/subscriptions/e;->a:Lorg/reactivestreams/c;

    .line 9
    invoke-virtual {p0}, Ljava/util/concurrent/atomic/AtomicInteger;->decrementAndGet()I

    move-result v1

    if-eqz v1, :cond_3b

    .line 10
    invoke-virtual {p0}, Lio/reactivex/internal/subscriptions/e;->d()V

    :cond_3b
    if-eqz v0, :cond_40

    .line 11
    invoke-interface {v0, p1, p2}, Lorg/reactivestreams/c;->request(J)V

    :cond_40
    return-void

    .line 12
    :cond_41
    iget-object v0, p0, Lio/reactivex/internal/subscriptions/e;->d:Ljava/util/concurrent/atomic/AtomicLong;

    invoke-static {v0, p1, p2}, Lcom/garena/android/appkit/logging/a;->j(Ljava/util/concurrent/atomic/AtomicLong;J)J

    .line 13
    invoke-virtual {p0}, Lio/reactivex/internal/subscriptions/e;->c()V

    :cond_49
    return-void
.end method