.class  Gcd
.super  java/lang/Object
.field private r I

.method <init>(II)V
    .limit stack 5
    .limit locals 4
    aload_0
    invokespecial java/lang/Object/<init>()V
    aload_0
    iconst_0
    putfield Gcd/r I
    iload_2
    ifne Label1
    aload_0
    iload_1
    putfield Gcd/r I
    goto Label2
Label1:
    new Gcd
    dup
    iload_2
    iload_1
    iload_2
    irem
    invokespecial Gcd/<init>(II)V
    astore_3
    aload_0
    aload_3
    invokevirtual Gcd/result()I
    putfield Gcd/r I
Label2:
    return
.end method

.method public static main([Ljava/lang/String;)V
    .limit stack 4
    .limit locals 4
    iconst_0
    istore_1
    iconst_0
    istore_2
Label1:
    aload_0
    iconst_0
    aaload
    invokestatic java/lang/Integer/parseInt(Ljava/lang/String;)I
    istore_1
    aload_0
    iconst_1
    aaload
    invokestatic java/lang/Integer/parseInt(Ljava/lang/String;)I
    istore_2
Label2:
    goto Label4
Label3:
    astore_3
    aload_3
    invokevirtual java/lang/Throwable/printStackTrace()V
    getstatic java/lang/System/err Ljava/io/PrintStream;
    ldc "arguments expected."
    invokevirtual java/io/PrintStream/println(Ljava/lang/String;)V
    iconst_1
    invokestatic java/lang/System/exit(I)V
Label4:
    iload_1
    ifle Label5
    iload_2
    ifgt Label6
Label5:
    getstatic java/lang/System/err Ljava/io/PrintStream;
    ldc "Only support a>0 and b>0."
    invokevirtual java/io/PrintStream/println(Ljava/lang/String;)V
    iconst_2
    invokestatic java/lang/System/exit(I)V
Label6:
    new Gcd
    dup
    iload_1
    iload_2
    invokespecial Gcd/<init>(II)V
    astore_3
    getstatic java/lang/System/out Ljava/io/PrintStream;
    new java/lang/StringBuffer
    dup
    iload_1
    invokestatic java/lang/String/valueOf(I)Ljava/lang/String;
    invokespecial java/lang/StringBuffer/<init>(Ljava/lang/String;)V
    ldc ","
    invokevirtual java/lang/StringBuffer/append(Ljava/lang/String;)Ljava/lang/StringBuffer;
    iload_2
    invokevirtual java/lang/StringBuffer/append(I)Ljava/lang/StringBuffer;
    ldc "="
    invokevirtual java/lang/StringBuffer/append(Ljava/lang/String;)Ljava/lang/StringBuffer;
    aload_3
    invokevirtual Gcd/result()I
    invokevirtual java/lang/StringBuffer/append(I)Ljava/lang/StringBuffer;
    invokevirtual java/lang/StringBuffer/toString()Ljava/lang/String;
    invokevirtual java/io/PrintStream/println(Ljava/lang/String;)V
    return
.catch java/lang/Exception from Label1 to Label2 using Label3
.end method

.method result()I
    .limit stack 1
    .limit locals 1
    aload_0
    getfield Gcd/r I
    ireturn
.end method