// https://en.wikipedia.org/wiki/Determinant
fun det(matrix: Array<DoubleArray>): Double {
    val EPS = 1e-10
    val a = matrix.map { it.copyOf() }.toTypedArray()
    val n = a.size
    var res = 1.0
    for (i in 0 until n) {
        val p = (i until n).maxBy { Math.abs(a[it][i]) }!!
        if (Math.abs(a[p][i]) < EPS)
            return 0.0
        if (i != p) {
            res = -res
            a[i] = a[p].also { a[p] = a[i] }
        }
        res *= a[i][i]
        for (j in i + 1 until n)
            a[i][j] /= a[i][i]
        for (j in 0 until n)
            if (j != i && Math.abs(a[j][i]) > EPS /*optimizes overall complexity to O(n^2) for sparse matrices*/)
                for (k in i + 1 until n)
                    a[j][k] -= a[i][k] * a[j][i]
    }
    return res
}

// Usage example
fun main() {
    val d = det(arrayOf(doubleArrayOf(0.0, 1.0), doubleArrayOf(-1.0, 0.0)))
    println(Math.abs(d - 1) < 1e-10)
}

Compiled from "Determinant.kt"
public final class DeterminantKt {
  public static final double det(double[][]);
    Code:
       0: aload_0
       1: ldc           #9                  // String matrix
       3: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: ldc2_w        #16                 // double 1.0E-10d
       9: dstore_1
      10: aload_0
      11: checkcast     #19                 // class "[Ljava/lang/Object;"
      14: astore        4
      16: iconst_0
      17: istore        5
      19: aload         4
      21: astore        6
      23: new           #21                 // class java/util/ArrayList
      26: dup
      27: aload         4
      29: arraylength
      30: invokespecial #25                 // Method java/util/ArrayList."<init>":(I)V
      33: checkcast     #27                 // class java/util/Collection
      36: astore        7
      38: iconst_0
      39: istore        8
      41: iconst_0
      42: istore        9
      44: aload         6
      46: arraylength
      47: istore        10
      49: iload         9
      51: iload         10
      53: if_icmpge     106
      56: aload         6
      58: iload         9
      60: aaload
      61: astore        11
      63: aload         7
      65: aload         11
      67: checkcast     #29                 // class "[D"
      70: astore        12
      72: astore        19
      74: iconst_0
      75: istore        13
      77: aload         12
      79: dup
      80: arraylength
      81: invokestatic  #35                 // Method java/util/Arrays.copyOf:([DI)[D
      84: dup
      85: ldc           #37                 // String copyOf(...)
      87: invokestatic  #40                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
      90: nop
      91: aload         19
      93: swap
      94: invokeinterface #44,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
      99: pop
     100: iinc          9, 1
     103: goto          49
     106: aload         7
     108: checkcast     #46                 // class java/util/List
     111: nop
     112: checkcast     #27                 // class java/util/Collection
     115: astore        4
     117: nop
     118: iconst_0
     119: istore        5
     121: aload         4
     123: astore        6
     125: aload         6
     127: iconst_0
     128: anewarray     #29                 // class "[D"
     131: invokeinterface #50,  2           // InterfaceMethod java/util/Collection.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
     136: checkcast     #52                 // class "[[D"
     139: astore_3
     140: aload_3
     141: checkcast     #19                 // class "[Ljava/lang/Object;"
     144: arraylength
     145: istore        4
     147: dconst_1
     148: dstore        5
     150: iconst_0
     151: istore        7
     153: iload         7
     155: iload         4
     157: if_icmpge     534
     160: iload         7
     162: iload         4
     164: invokestatic  #58                 // Method kotlin/ranges/RangesKt.until:(II)Lkotlin/ranges/IntRange;
     167: checkcast     #60                 // class java/lang/Iterable
     170: astore        9
     172: iconst_0
     173: istore        10
     175: aload         9
     177: invokeinterface #64,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     182: astore        11
     184: aload         11
     186: invokeinterface #70,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     191: ifne          202
     194: new           #72                 // class java/util/NoSuchElementException
     197: dup
     198: invokespecial #75                 // Method java/util/NoSuchElementException."<init>":()V
     201: athrow
     202: aload         11
     204: checkcast     #77                 // class kotlin/collections/IntIterator
     207: invokevirtual #81                 // Method kotlin/collections/IntIterator.nextInt:()I
     210: istore        12
     212: aload         11
     214: invokeinterface #70,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     219: ifne          227
     222: iload         12
     224: goto          305
     227: iload         12
     229: istore        13
     231: iconst_0
     232: istore        15
     234: aload_3
     235: iload         13
     237: aaload
     238: iload         7
     240: daload
     241: invokestatic  #87                 // Method java/lang/Math.abs:(D)D
     244: dstore        13
     246: aload         11
     248: checkcast     #77                 // class kotlin/collections/IntIterator
     251: invokevirtual #81                 // Method kotlin/collections/IntIterator.nextInt:()I
     254: istore        15
     256: iload         15
     258: istore        16
     260: iconst_0
     261: istore        18
     263: aload_3
     264: iload         16
     266: aaload
     267: iload         7
     269: daload
     270: invokestatic  #87                 // Method java/lang/Math.abs:(D)D
     273: dstore        16
     275: dload         13
     277: dload         16
     279: invokestatic  #93                 // Method java/lang/Double.compare:(DD)I
     282: ifge          293
     285: iload         15
     287: istore        12
     289: dload         16
     291: dstore        13
     293: aload         11
     295: invokeinterface #70,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     300: ifne          246
     303: iload         12
     305: istore        8
     307: aload_3
     308: iload         8
     310: aaload
     311: iload         7
     313: daload
     314: invokestatic  #87                 // Method java/lang/Math.abs:(D)D
     317: dload_1
     318: dcmpg
     319: ifge          324
     322: dconst_0
     323: dreturn
     324: iload         7
     326: iload         8
     328: if_icmpeq     376
     331: dload         5
     333: dneg
     334: dstore        5
     336: aload_3
     337: iload         7
     339: aload_3
     340: iload         8
     342: aaload
     343: astore        9
     345: aload         9
     347: astore        10
     349: istore        20
     351: astore        19
     353: iconst_0
     354: istore        11
     356: aload_3
     357: iload         8
     359: aload_3
     360: iload         7
     362: aaload
     363: aastore
     364: getstatic     #99                 // Field kotlin/Unit.INSTANCE:Lkotlin/Unit;
     367: astore        21
     369: aload         19
     371: iload         20
     373: aload         9
     375: aastore
     376: dload         5
     378: aload_3
     379: iload         7
     381: aaload
     382: iload         7
     384: daload
     385: dmul
     386: dstore        5
     388: iload         7
     390: iconst_1
     391: iadd
     392: istore        9
     394: iload         9
     396: iload         4
     398: if_icmpge     435
     401: aload_3
     402: iload         7
     404: aaload
     405: astore        10
     407: iload         9
     409: istore        11
     411: aload         10
     413: iload         11
     415: aload         10
     417: iload         11
     419: daload
     420: aload_3
     421: iload         7
     423: aaload
     424: iload         7
     426: daload
     427: ddiv
     428: dastore
     429: iinc          9, 1
     432: goto          394
     435: iconst_0
     436: istore        9
     438: iload         9
     440: iload         4
     442: if_icmpge     528
     445: iload         9
     447: iload         7
     449: if_icmpeq     522
     452: aload_3
     453: iload         9
     455: aaload
     456: iload         7
     458: daload
     459: invokestatic  #87                 // Method java/lang/Math.abs:(D)D
     462: dload_1
     463: dcmpl
     464: ifle          522
     467: iload         7
     469: iconst_1
     470: iadd
     471: istore        10
     473: iload         10
     475: iload         4
     477: if_icmpge     522
     480: aload_3
     481: iload         9
     483: aaload
     484: astore        11
     486: iload         10
     488: istore        12
     490: aload         11
     492: iload         12
     494: aload         11
     496: iload         12
     498: daload
     499: aload_3
     500: iload         7
     502: aaload
     503: iload         10
     505: daload
     506: aload_3
     507: iload         9
     509: aaload
     510: iload         7
     512: daload
     513: dmul
     514: dsub
     515: dastore
     516: iinc          10, 1
     519: goto          473
     522: iinc          9, 1
     525: goto          438
     528: iinc          7, 1
     531: goto          153
     534: dload         5
     536: dreturn

  public static final void main();
    Code:
       0: iconst_2
       1: anewarray     #29                 // class "[D"
       4: astore_2
       5: aload_2
       6: iconst_0
       7: iconst_2
       8: newarray       double
      10: astore_3
      11: aload_3
      12: iconst_0
      13: dconst_0
      14: dastore
      15: aload_3
      16: iconst_1
      17: dconst_1
      18: dastore
      19: aload_3
      20: aastore
      21: aload_2
      22: iconst_1
      23: iconst_2
      24: newarray       double
      26: astore_3
      27: aload_3
      28: iconst_0
      29: ldc2_w        #135                // double -1.0d
      32: dastore
      33: aload_3
      34: iconst_1
      35: dconst_0
      36: dastore
      37: aload_3
      38: aastore
      39: aload_2
      40: invokestatic  #138                // Method det:([[D)D
      43: dstore_0
      44: dload_0
      45: iconst_1
      46: i2d
      47: dsub
      48: invokestatic  #87                 // Method java/lang/Math.abs:(D)D
      51: ldc2_w        #16                 // double 1.0E-10d
      54: dcmpg
      55: ifge          62
      58: iconst_1
      59: goto          63
      62: iconst_0
      63: istore_2
      64: getstatic     #144                // Field java/lang/System.out:Ljava/io/PrintStream;
      67: iload_2
      68: invokevirtual #150                // Method java/io/PrintStream.println:(Z)V
      71: return

  public static void main(java.lang.String[]);
    Code:
       0: invokestatic  #154                // Method main:()V
       3: return
}


fun main() {
    val (h1, w1) = readLine()!!.split(" ").map { it.toInt() }
    val a = List(h1) { readLine()!!.split(" ") }
    val (h2, w2) = readLine()!!.split(" ").map { it.toInt() }
    val b = List(h2) { readLine()!!.split(" ") }
    for (r in (0 until h1).combinations(h1 - h2)) {
        val w = a.filterIndexed { i, _ -> i !in r }
        for (c in (0 until w1).combinations(w1 - w2))
            if (w.map { it.filterIndexed { i, _ -> i !in c } } == b) return print("Yes")
    }
    print("No")
}

fun <T> Iterable<T>.combinations(r: Int): Sequence<List<T>> = sequence {
    if (r < 1) yield(emptyList())
    else forEachIndexed { i, e -> drop(i + 1).combinations(r - 1).forEach { yield(listOf(e) + it) } }
}

Compiled from "Main.kt"
final class MainKt$combinations$1 extends kotlin.coroutines.jvm.internal.RestrictedSuspendLambda implements kotlin.jvm.functions.Function2<kotlin.sequences.SequenceScope<? super java.util.List<? extends T>>, kotlin.coroutines.Continuation<? super kotlin.Unit>, java.lang.Object> {
  java.lang.Object L$1;

  java.lang.Object L$2;

  java.lang.Object L$3;

  java.lang.Object L$4;

  int I$0;

  int I$1;

  int label;

  private java.lang.Object L$0;

  final int $r;

  final java.lang.Iterable<T> $this_combinations;

  MainKt$combinations$1(int, java.lang.Iterable<? extends T>, kotlin.coroutines.Continuation<? super MainKt$combinations$1>);
    Code:
       0: aload_0
       1: iload_1
       2: putfield      #14                 // Field $r:I
       5: aload_0
       6: aload_2
       7: putfield      #18                 // Field $this_combinations:Ljava/lang/Iterable;
      10: aload_0
      11: iconst_2
      12: aload_3
      13: invokespecial #21                 // Method kotlin/coroutines/jvm/internal/RestrictedSuspendLambda."<init>":(ILkotlin/coroutines/Continuation;)V
      16: return

  public final java.lang.Object invokeSuspend(java.lang.Object);
    Code:
       0: invokestatic  #57                 // Method kotlin/coroutines/intrinsics/IntrinsicsKt.getCOROUTINE_SUSPENDED:()Ljava/lang/Object;
       3: astore        20
       5: aload_0
       6: getfield      #60                 // Field label:I
       9: tableswitch   { // 0 to 2
                     0: 36
                     1: 81
                     2: 304
               default: 388
          }
      36: aload_1
      37: invokestatic  #66                 // Method kotlin/ResultKt.throwOnFailure:(Ljava/lang/Object;)V
      40: aload_0
      41: getfield      #68                 // Field L$0:Ljava/lang/Object;
      44: checkcast     #70                 // class kotlin/sequences/SequenceScope
      47: astore_2
      48: aload_0
      49: getfield      #14                 // Field $r:I
      52: iconst_1
      53: if_icmpge     90
      56: aload_2
      57: invokestatic  #76                 // Method kotlin/collections/CollectionsKt.emptyList:()Ljava/util/List;
      60: aload_0
      61: checkcast     #78                 // class kotlin/coroutines/Continuation
      64: aload_0
      65: iconst_1
      66: putfield      #60                 // Field label:I
      69: invokevirtual #82                 // Method kotlin/sequences/SequenceScope.yield:(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
      72: dup
      73: aload         20
      75: if_acmpne     86
      78: aload         20
      80: areturn
      81: aload_1
      82: invokestatic  #66                 // Method kotlin/ResultKt.throwOnFailure:(Ljava/lang/Object;)V
      85: aload_1
      86: pop
      87: goto          384
      90: aload_0
      91: getfield      #18                 // Field $this_combinations:Ljava/lang/Iterable;
      94: astore_3
      95: aload_0
      96: getfield      #18                 // Field $this_combinations:Ljava/lang/Iterable;
      99: astore        4
     101: aload_0
     102: getfield      #14                 // Field $r:I
     105: istore        5
     107: iconst_0
     108: istore        6
     110: iconst_0
     111: istore        7
     113: aload_3
     114: invokeinterface #88,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     119: astore        8
     121: aload         8
     123: invokeinterface #94,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     128: ifeq          383
     131: aload         8
     133: invokeinterface #97,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     138: astore        9
     140: iload         7
     142: iinc          7, 1
     145: istore        10
     147: iload         10
     149: ifge          155
     152: invokestatic  #101                // Method kotlin/collections/CollectionsKt.throwIndexOverflow:()V
     155: iload         10
     157: aload         9
     159: astore        11
     161: istore        12
     163: iconst_0
     164: istore        13
     166: aload         4
     168: iload         12
     170: iconst_1
     171: iadd
     172: invokestatic  #105                // Method kotlin/collections/CollectionsKt.drop:(Ljava/lang/Iterable;I)Ljava/util/List;
     175: checkcast     #84                 // class java/lang/Iterable
     178: iload         5
     180: iconst_1
     181: isub
     182: invokestatic  #111                // Method MainKt.combinations:(Ljava/lang/Iterable;I)Lkotlin/sequences/Sequence;
     185: astore        14
     187: iconst_0
     188: istore        15
     190: aload         14
     192: invokeinterface #114,  1          // InterfaceMethod kotlin/sequences/Sequence.iterator:()Ljava/util/Iterator;
     197: astore        16
     199: aload         16
     201: invokeinterface #94,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     206: ifeq          378
     209: aload         16
     211: invokeinterface #97,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     216: astore        17
     218: aload         17
     220: checkcast     #116                // class java/util/List
     223: astore        18
     225: iconst_0
     226: istore        19
     228: aload_2
     229: aload         11
     231: invokestatic  #120                // Method kotlin/collections/CollectionsKt.listOf:(Ljava/lang/Object;)Ljava/util/List;
     234: checkcast     #122                // class java/util/Collection
     237: aload         18
     239: checkcast     #84                 // class java/lang/Iterable
     242: invokestatic  #126                // Method kotlin/collections/CollectionsKt.plus:(Ljava/util/Collection;Ljava/lang/Iterable;)Ljava/util/List;
     245: aload_0
     246: aload_0
     247: aload_2
     248: putfield      #68                 // Field L$0:Ljava/lang/Object;
     251: aload_0
     252: aload         4
     254: putfield      #128                // Field L$1:Ljava/lang/Object;
     257: aload_0
     258: aload         8
     260: putfield      #130                // Field L$2:Ljava/lang/Object;
     263: aload_0
     264: aload         11
     266: putfield      #132                // Field L$3:Ljava/lang/Object;
     269: aload_0
     270: aload         16
     272: putfield      #134                // Field L$4:Ljava/lang/Object;
     275: aload_0
     276: iload         5
     278: putfield      #136                // Field I$0:I
     281: aload_0
     282: iload         7
     284: putfield      #138                // Field I$1:I
     287: aload_0
     288: iconst_2
     289: putfield      #60                 // Field label:I
     292: invokevirtual #82                 // Method kotlin/sequences/SequenceScope.yield:(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
     295: dup
     296: aload         20
     298: if_acmpne     374
     301: aload         20
     303: areturn
     304: iconst_0
     305: istore        6
     307: iconst_0
     308: istore        13
     310: iconst_0
     311: istore        15
     313: iconst_0
     314: istore        19
     316: aload_0
     317: getfield      #138                // Field I$1:I
     320: istore        7
     322: aload_0
     323: getfield      #136                // Field I$0:I
     326: istore        5
     328: aload_0
     329: getfield      #134                // Field L$4:Ljava/lang/Object;
     332: checkcast     #90                 // class java/util/Iterator
     335: astore        16
     337: aload_0
     338: getfield      #132                // Field L$3:Ljava/lang/Object;
     341: astore        11
     343: aload_0
     344: getfield      #130                // Field L$2:Ljava/lang/Object;
     347: checkcast     #90                 // class java/util/Iterator
     350: astore        8
     352: aload_0
     353: getfield      #128                // Field L$1:Ljava/lang/Object;
     356: checkcast     #84                 // class java/lang/Iterable
     359: astore        4
     361: aload_0
     362: getfield      #68                 // Field L$0:Ljava/lang/Object;
     365: checkcast     #70                 // class kotlin/sequences/SequenceScope
     368: astore_2
     369: aload_1
     370: invokestatic  #66                 // Method kotlin/ResultKt.throwOnFailure:(Ljava/lang/Object;)V
     373: aload_1
     374: pop
     375: goto          199
     378: nop
     379: nop
     380: goto          121
     383: nop
     384: getstatic     #144                // Field kotlin/Unit.INSTANCE:Lkotlin/Unit;
     387: areturn
     388: new           #146                // class java/lang/IllegalStateException
     391: dup
     392: ldc           #148                // String call to \'resume\' before \'invoke\' with coroutine
     394: invokespecial #151                // Method java/lang/IllegalStateException."<init>":(Ljava/lang/String;)V
     397: athrow

  public final kotlin.coroutines.Continuation<kotlin.Unit> create(java.lang.Object, kotlin.coroutines.Continuation<?>);
    Code:
       0: new           #2                  // class MainKt$combinations$1
       3: dup
       4: aload_0
       5: getfield      #14                 // Field $r:I
       8: aload_0
       9: getfield      #18                 // Field $this_combinations:Ljava/lang/Iterable;
      12: aload_2
      13: invokespecial #171                // Method "<init>":(ILjava/lang/Iterable;Lkotlin/coroutines/Continuation;)V
      16: astore_3
      17: aload_3
      18: aload_1
      19: putfield      #68                 // Field L$0:Ljava/lang/Object;
      22: aload_3
      23: checkcast     #78                 // class kotlin/coroutines/Continuation
      26: areturn

  public final java.lang.Object invoke(kotlin.sequences.SequenceScope<? super java.util.List<? extends T>>, kotlin.coroutines.Continuation<? super kotlin.Unit>);
    Code:
       0: aload_0
       1: aload_1
       2: aload_2
       3: invokevirtual #177                // Method create:(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
       6: checkcast     #2                  // class MainKt$combinations$1
       9: getstatic     #144                // Field kotlin/Unit.INSTANCE:Lkotlin/Unit;
      12: invokevirtual #179                // Method invokeSuspend:(Ljava/lang/Object;)Ljava/lang/Object;
      15: areturn

  public java.lang.Object invoke(java.lang.Object, java.lang.Object);
    Code:
       0: aload_0
       1: aload_1
       2: checkcast     #70                 // class kotlin/sequences/SequenceScope
       5: aload_2
       6: checkcast     #78                 // class kotlin/coroutines/Continuation
       9: invokevirtual #184                // Method invoke:(Lkotlin/sequences/SequenceScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
      12: areturn
}

Compiled from "Main.kt"
public final class MainKt {
  public static final void main();
    Code:
       0: invokestatic  #12                 // Method kotlin/io/ConsoleKt.readLine:()Ljava/lang/String;
       3: dup
       4: invokestatic  #18                 // Method kotlin/jvm/internal/Intrinsics.checkNotNull:(Ljava/lang/Object;)V
       7: checkcast     #20                 // class java/lang/CharSequence
      10: iconst_1
      11: anewarray     #22                 // class java/lang/String
      14: astore_1
      15: aload_1
      16: iconst_0
      17: ldc           #24                 // String
      19: aastore
      20: aload_1
      21: iconst_0
      22: iconst_0
      23: bipush        6
      25: aconst_null
      26: invokestatic  #30                 // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
      29: checkcast     #32                 // class java/lang/Iterable
      32: astore_1
      33: iconst_0
      34: istore_2
      35: aload_1
      36: astore_3
      37: new           #34                 // class java/util/ArrayList
      40: dup
      41: aload_1
      42: bipush        10
      44: invokestatic  #40                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      47: invokespecial #44                 // Method java/util/ArrayList."<init>":(I)V
      50: checkcast     #46                 // class java/util/Collection
      53: astore        4
      55: iconst_0
      56: istore        5
      58: aload_3
      59: invokeinterface #50,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      64: astore        6
      66: aload         6
      68: invokeinterface #56,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      73: ifeq          120
      76: aload         6
      78: invokeinterface #60,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      83: astore        7
      85: aload         4
      87: aload         7
      89: checkcast     #22                 // class java/lang/String
      92: astore        8
      94: astore        38
      96: iconst_0
      97: istore        9
      99: aload         8
     101: invokestatic  #66                 // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
     104: nop
     105: invokestatic  #70                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     108: aload         38
     110: swap
     111: invokeinterface #74,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     116: pop
     117: goto          66
     120: aload         4
     122: checkcast     #76                 // class java/util/List
     125: nop
     126: astore_0
     127: aload_0
     128: iconst_0
     129: invokeinterface #80,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     134: checkcast     #82                 // class java/lang/Number
     137: invokevirtual #86                 // Method java/lang/Number.intValue:()I
     140: istore_1
     141: aload_0
     142: iconst_1
     143: invokeinterface #80,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     148: checkcast     #82                 // class java/lang/Number
     151: invokevirtual #86                 // Method java/lang/Number.intValue:()I
     154: istore_2
     155: new           #34                 // class java/util/ArrayList
     158: dup
     159: iload_1
     160: invokespecial #44                 // Method java/util/ArrayList."<init>":(I)V
     163: astore        4
     165: iconst_0
     166: istore        5
     168: iload         5
     170: iload_1
     171: if_icmpge     234
     174: iload         5
     176: istore        6
     178: aload         4
     180: iload         6
     182: istore        7
     184: astore        38
     186: iconst_0
     187: istore        8
     189: invokestatic  #12                 // Method kotlin/io/ConsoleKt.readLine:()Ljava/lang/String;
     192: dup
     193: invokestatic  #18                 // Method kotlin/jvm/internal/Intrinsics.checkNotNull:(Ljava/lang/Object;)V
     196: checkcast     #20                 // class java/lang/CharSequence
     199: iconst_1
     200: anewarray     #22                 // class java/lang/String
     203: astore        9
     205: aload         9
     207: iconst_0
     208: ldc           #24                 // String
     210: aastore
     211: aload         9
     213: iconst_0
     214: iconst_0
     215: bipush        6
     217: aconst_null
     218: invokestatic  #30                 // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
     221: aload         38
     223: swap
     224: invokevirtual #87                 // Method java/util/ArrayList.add:(Ljava/lang/Object;)Z
     227: pop
     228: iinc          5, 1
     231: goto          168
     234: aload         4
     236: checkcast     #76                 // class java/util/List
     239: astore_3
     240: invokestatic  #12                 // Method kotlin/io/ConsoleKt.readLine:()Ljava/lang/String;
     243: dup
     244: invokestatic  #18                 // Method kotlin/jvm/internal/Intrinsics.checkNotNull:(Ljava/lang/Object;)V
     247: checkcast     #20                 // class java/lang/CharSequence
     250: iconst_1
     251: anewarray     #22                 // class java/lang/String
     254: astore        5
     256: aload         5
     258: iconst_0
     259: ldc           #24                 // String
     261: aastore
     262: aload         5
     264: iconst_0
     265: iconst_0
     266: bipush        6
     268: aconst_null
     269: invokestatic  #30                 // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
     272: checkcast     #32                 // class java/lang/Iterable
     275: astore        5
     277: iconst_0
     278: istore        6
     280: aload         5
     282: astore        7
     284: new           #34                 // class java/util/ArrayList
     287: dup
     288: aload         5
     290: bipush        10
     292: invokestatic  #40                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     295: invokespecial #44                 // Method java/util/ArrayList."<init>":(I)V
     298: checkcast     #46                 // class java/util/Collection
     301: astore        8
     303: iconst_0
     304: istore        9
     306: aload         7
     308: invokeinterface #50,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     313: astore        10
     315: aload         10
     317: invokeinterface #56,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     322: ifeq          369
     325: aload         10
     327: invokeinterface #60,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     332: astore        11
     334: aload         8
     336: aload         11
     338: checkcast     #22                 // class java/lang/String
     341: astore        12
     343: astore        38
     345: iconst_0
     346: istore        13
     348: aload         12
     350: invokestatic  #66                 // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
     353: nop
     354: invokestatic  #70                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     357: aload         38
     359: swap
     360: invokeinterface #74,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     365: pop
     366: goto          315
     369: aload         8
     371: checkcast     #76                 // class java/util/List
     374: nop
     375: astore        4
     377: aload         4
     379: iconst_0
     380: invokeinterface #80,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     385: checkcast     #82                 // class java/lang/Number
     388: invokevirtual #86                 // Method java/lang/Number.intValue:()I
     391: istore        5
     393: aload         4
     395: iconst_1
     396: invokeinterface #80,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     401: checkcast     #82                 // class java/lang/Number
     404: invokevirtual #86                 // Method java/lang/Number.intValue:()I
     407: istore        6
     409: new           #34                 // class java/util/ArrayList
     412: dup
     413: iload         5
     415: invokespecial #44                 // Method java/util/ArrayList."<init>":(I)V
     418: astore        8
     420: iconst_0
     421: istore        9
     423: iload         9
     425: iload         5
     427: if_icmpge     490
     430: iload         9
     432: istore        10
     434: aload         8
     436: iload         10
     438: istore        11
     440: astore        38
     442: iconst_0
     443: istore        12
     445: invokestatic  #12                 // Method kotlin/io/ConsoleKt.readLine:()Ljava/lang/String;
     448: dup
     449: invokestatic  #18                 // Method kotlin/jvm/internal/Intrinsics.checkNotNull:(Ljava/lang/Object;)V
     452: checkcast     #20                 // class java/lang/CharSequence
     455: iconst_1
     456: anewarray     #22                 // class java/lang/String
     459: astore        13
     461: aload         13
     463: iconst_0
     464: ldc           #24                 // String
     466: aastore
     467: aload         13
     469: iconst_0
     470: iconst_0
     471: bipush        6
     473: aconst_null
     474: invokestatic  #30                 // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
     477: aload         38
     479: swap
     480: invokevirtual #87                 // Method java/util/ArrayList.add:(Ljava/lang/Object;)Z
     483: pop
     484: iinc          9, 1
     487: goto          423
     490: aload         8
     492: checkcast     #76                 // class java/util/List
     495: astore        7
     497: iconst_0
     498: iload_1
     499: invokestatic  #93                 // Method kotlin/ranges/RangesKt.until:(II)Lkotlin/ranges/IntRange;
     502: checkcast     #32                 // class java/lang/Iterable
     505: iload_1
     506: iload         5
     508: isub
     509: invokestatic  #97                 // Method combinations:(Ljava/lang/Iterable;I)Lkotlin/sequences/Sequence;
     512: invokeinterface #100,  1          // InterfaceMethod kotlin/sequences/Sequence.iterator:()Ljava/util/Iterator;
     517: astore        8
     519: aload         8
     521: invokeinterface #56,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     526: ifeq          1003
     529: aload         8
     531: invokeinterface #60,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     536: checkcast     #76                 // class java/util/List
     539: astore        9
     541: aload_3
     542: checkcast     #32                 // class java/lang/Iterable
     545: astore        11
     547: iconst_0
     548: istore        12
     550: aload         11
     552: astore        13
     554: new           #34                 // class java/util/ArrayList
     557: dup
     558: invokespecial #102                // Method java/util/ArrayList."<init>":()V
     561: checkcast     #46                 // class java/util/Collection
     564: astore        14
     566: iconst_0
     567: istore        15
     569: aload         13
     571: astore        16
     573: iconst_0
     574: istore        17
     576: iconst_0
     577: istore        18
     579: aload         16
     581: invokeinterface #50,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     586: astore        19
     588: aload         19
     590: invokeinterface #56,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     595: ifeq          684
     598: aload         19
     600: invokeinterface #60,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     605: astore        20
     607: iload         18
     609: iinc          18, 1
     612: istore        21
     614: iload         21
     616: ifge          622
     619: invokestatic  #105                // Method kotlin/collections/CollectionsKt.throwIndexOverflow:()V
     622: iload         21
     624: aload         20
     626: astore        22
     628: istore        23
     630: iconst_0
     631: istore        24
     633: iload         23
     635: aload         22
     637: checkcast     #76                 // class java/util/List
     640: pop
     641: istore        26
     643: iconst_0
     644: istore        27
     646: aload         9
     648: iload         26
     650: invokestatic  #70                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     653: invokeinterface #108,  2          // InterfaceMethod java/util/List.contains:(Ljava/lang/Object;)Z
     658: ifne          665
     661: iconst_1
     662: goto          666
     665: iconst_0
     666: ifeq          679
     669: aload         14
     671: aload         22
     673: invokeinterface #74,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     678: pop
     679: nop
     680: nop
     681: goto          588
     684: nop
     685: aload         14
     687: checkcast     #76                 // class java/util/List
     690: nop
     691: astore        10
     693: iconst_0
     694: iload_2
     695: invokestatic  #93                 // Method kotlin/ranges/RangesKt.until:(II)Lkotlin/ranges/IntRange;
     698: checkcast     #32                 // class java/lang/Iterable
     701: iload_2
     702: iload         6
     704: isub
     705: invokestatic  #97                 // Method combinations:(Ljava/lang/Iterable;I)Lkotlin/sequences/Sequence;
     708: invokeinterface #100,  1          // InterfaceMethod kotlin/sequences/Sequence.iterator:()Ljava/util/Iterator;
     713: astore        11
     715: aload         11
     717: invokeinterface #56,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     722: ifeq          519
     725: aload         11
     727: invokeinterface #60,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     732: checkcast     #76                 // class java/util/List
     735: astore        12
     737: aload         10
     739: checkcast     #32                 // class java/lang/Iterable
     742: astore        13
     744: iconst_0
     745: istore        14
     747: aload         13
     749: astore        15
     751: new           #34                 // class java/util/ArrayList
     754: dup
     755: aload         13
     757: bipush        10
     759: invokestatic  #40                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     762: invokespecial #44                 // Method java/util/ArrayList."<init>":(I)V
     765: checkcast     #46                 // class java/util/Collection
     768: astore        16
     770: iconst_0
     771: istore        17
     773: aload         15
     775: invokeinterface #50,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     780: astore        18
     782: aload         18
     784: invokeinterface #56,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     789: ifeq          979
     792: aload         18
     794: invokeinterface #60,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     799: astore        19
     801: aload         16
     803: aload         19
     805: checkcast     #76                 // class java/util/List
     808: astore        20
     810: astore        38
     812: iconst_0
     813: istore        21
     815: aload         20
     817: checkcast     #32                 // class java/lang/Iterable
     820: astore        22
     822: iconst_0
     823: istore        23
     825: aload         22
     827: astore        24
     829: new           #34                 // class java/util/ArrayList
     832: dup
     833: invokespecial #102                // Method java/util/ArrayList."<init>":()V
     836: checkcast     #46                 // class java/util/Collection
     839: astore        25
     841: iconst_0
     842: istore        26
     844: aload         24
     846: astore        27
     848: iconst_0
     849: istore        28
     851: iconst_0
     852: istore        29
     854: aload         27
     856: invokeinterface #50,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     861: astore        30
     863: aload         30
     865: invokeinterface #56,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     870: ifeq          959
     873: aload         30
     875: invokeinterface #60,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     880: astore        31
     882: iload         29
     884: iinc          29, 1
     887: istore        32
     889: iload         32
     891: ifge          897
     894: invokestatic  #105                // Method kotlin/collections/CollectionsKt.throwIndexOverflow:()V
     897: iload         32
     899: aload         31
     901: astore        33
     903: istore        34
     905: iconst_0
     906: istore        35
     908: iload         34
     910: aload         33
     912: checkcast     #22                 // class java/lang/String
     915: pop
     916: istore        36
     918: iconst_0
     919: istore        37
     921: aload         12
     923: iload         36
     925: invokestatic  #70                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     928: invokeinterface #108,  2          // InterfaceMethod java/util/List.contains:(Ljava/lang/Object;)Z
     933: ifne          940
     936: iconst_1
     937: goto          941
     940: iconst_0
     941: ifeq          954
     944: aload         25
     946: aload         33
     948: invokeinterface #74,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     953: pop
     954: nop
     955: nop
     956: goto          863
     959: nop
     960: aload         25
     962: checkcast     #76                 // class java/util/List
     965: nop
     966: nop
     967: aload         38
     969: swap
     970: invokeinterface #74,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     975: pop
     976: goto          782
     979: aload         16
     981: checkcast     #76                 // class java/util/List
     984: nop
     985: aload         7
     987: invokestatic  #112                // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
     990: ifeq          715
     993: ldc           #114                // String Yes
     995: getstatic     #120                // Field java/lang/System.out:Ljava/io/PrintStream;
     998: swap
     999: invokevirtual #125                // Method java/io/PrintStream.print:(Ljava/lang/Object;)V
    1002: return
    1003: ldc           #127                // String No
    1005: getstatic     #120                // Field java/lang/System.out:Ljava/io/PrintStream;
    1008: swap
    1009: invokevirtual #125                // Method java/io/PrintStream.print:(Ljava/lang/Object;)V
    1012: return

  public static final <T> kotlin.sequences.Sequence<java.util.List<T>> combinations(java.lang.Iterable<? extends T>, int);
    Code:
       0: aload_0
       1: ldc           #172                // String <this>
       3: invokestatic  #176                // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: new           #178                // class MainKt$combinations$1
       9: dup
      10: iload_1
      11: aload_0
      12: aconst_null
      13: invokespecial #181                // Method MainKt$combinations$1."<init>":(ILjava/lang/Iterable;Lkotlin/coroutines/Continuation;)V
      16: checkcast     #183                // class kotlin/jvm/functions/Function2
      19: invokestatic  #189                // Method kotlin/sequences/SequencesKt.sequence:(Lkotlin/jvm/functions/Function2;)Lkotlin/sequences/Sequence;
      22: areturn

  public static void main(java.lang.String[]);
    Code:
       0: invokestatic  #193                // Method main:()V
       3: return
}


fun main() {
    fun gameResult(yourMove: HandShape, opponentMove: HandShape) =
        when (yourMove) {
            opponentMove.greater() -> GameResult.WIN
            opponentMove.lower() -> GameResult.LOSS
            else -> GameResult.DRAW
        }

    fun part1(input: List<Pair<HandShape, HandShape>>): Int {
        return input.sumOf { (opponentMove, yourMove) ->
            yourMove.score + gameResult(yourMove, opponentMove).score
        }
    }

    fun getMoveForExpectedResult(opponentMove: HandShape, expectedResult: GameResult) =
        when (expectedResult) {
            GameResult.LOSS -> opponentMove.lower()
            GameResult.DRAW -> opponentMove
            GameResult.WIN -> opponentMove.greater()
        }

    fun part2(input: List<Pair<HandShape, GameResult>>) =
        input.sumOf {
            val (opponentMove, gameResult) = it
            gameResult.score + getMoveForExpectedResult(opponentMove, gameResult).score
        }

    val testInputPart1 = parseInput("Day02_test", String::toHandShape, String::toHandShape)
    check(part1(testInputPart1) == 15)

    val testInputPart2 = parseInput("Day02_test", String::toHandShape, String::toGameResult)
    check(part2(testInputPart2) == 12)

    val inputForPart1 = parseInput("Day02", String::toHandShape, String::toHandShape)
    println(part1(inputForPart1))

    val inputForPart2 = parseInput("Day02", String::toHandShape, String::toGameResult)
    println(part2(inputForPart2))
}

private fun <T, U> parseInput(name: String, firstArgParser: (String) -> T, secondArgParser: (String) -> U) =
    readInput(name).map { round ->
        round.split(" ").let {
            Pair(firstArgParser.invoke(it[0]), secondArgParser.invoke(it[1]))
        }
    }

private fun String.toHandShape(): HandShape {
    return when (this) {
        "A", "X" -> HandShape.ROCK
        "B", "Y" -> HandShape.PAPER
        "C", "Z" -> HandShape.SCISSORS
        else -> throw IllegalArgumentException()
    }
}

private fun String.toGameResult(): GameResult {
    return when (this) {
        "X" -> GameResult.LOSS
        "Y" -> GameResult.DRAW
        "Z" -> GameResult.WIN
        else -> throw IllegalArgumentException()
    }
}

private enum class HandShape(val score: Int) {
    ROCK(1) {
        override fun greater() = PAPER
        override fun lower() = SCISSORS
    },
    PAPER(2) {
        override fun greater() = SCISSORS
        override fun lower() = ROCK
    },
    SCISSORS(3) {
        override fun greater() = ROCK
        override fun lower() = PAPER
    };

    abstract fun greater(): HandShape
    abstract fun lower(): HandShape
}

private enum class GameResult(val score: Int) {
    LOSS(0),
    DRAW(3),
    WIN(6)
}

Compiled from "Day02.kt"
final class Day02Kt$main$testInputPart2$2 extends kotlin.jvm.internal.FunctionReferenceImpl implements kotlin.jvm.functions.Function1<java.lang.String, GameResult> {
  public static final Day02Kt$main$testInputPart2$2 INSTANCE;

  Day02Kt$main$testInputPart2$2();
    Code:
       0: aload_0
       1: iconst_1
       2: ldc           #11                 // class Day02Kt
       4: ldc           #13                 // String toGameResult
       6: ldc           #15                 // String toGameResult(Ljava/lang/String;)LGameResult;
       8: iconst_1
       9: invokespecial #18                 // Method kotlin/jvm/internal/FunctionReferenceImpl."<init>":(ILjava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V
      12: return

  public final GameResult invoke(java.lang.String);
    Code:
       0: aload_1
       1: ldc           #24                 // String p0
       3: invokestatic  #30                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_1
       7: invokestatic  #33                 // Method Day02Kt.access$toGameResult:(Ljava/lang/String;)LGameResult;
      10: areturn

  public java.lang.Object invoke(java.lang.Object);
    Code:
       0: aload_0
       1: aload_1
       2: checkcast     #37                 // class java/lang/String
       5: invokevirtual #39                 // Method invoke:(Ljava/lang/String;)LGameResult;
       8: areturn

  static {};
    Code:
       0: new           #2                  // class Day02Kt$main$testInputPart2$2
       3: dup
       4: invokespecial #44                 // Method "<init>":()V
       7: putstatic     #47                 // Field INSTANCE:LDay02Kt$main$testInputPart2$2;
      10: return
}

Compiled from "Day02.kt"
final class Day02Kt$main$testInputPart1$1 extends kotlin.jvm.internal.FunctionReferenceImpl implements kotlin.jvm.functions.Function1<java.lang.String, HandShape> {
  public static final Day02Kt$main$testInputPart1$1 INSTANCE;

  Day02Kt$main$testInputPart1$1();
    Code:
       0: aload_0
       1: iconst_1
       2: ldc           #11                 // class Day02Kt
       4: ldc           #13                 // String toHandShape
       6: ldc           #15                 // String toHandShape(Ljava/lang/String;)LHandShape;
       8: iconst_1
       9: invokespecial #18                 // Method kotlin/jvm/internal/FunctionReferenceImpl."<init>":(ILjava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V
      12: return

  public final HandShape invoke(java.lang.String);
    Code:
       0: aload_1
       1: ldc           #24                 // String p0
       3: invokestatic  #30                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_1
       7: invokestatic  #33                 // Method Day02Kt.access$toHandShape:(Ljava/lang/String;)LHandShape;
      10: areturn

  public java.lang.Object invoke(java.lang.Object);
    Code:
       0: aload_0
       1: aload_1
       2: checkcast     #37                 // class java/lang/String
       5: invokevirtual #39                 // Method invoke:(Ljava/lang/String;)LHandShape;
       8: areturn

  static {};
    Code:
       0: new           #2                  // class Day02Kt$main$testInputPart1$1
       3: dup
       4: invokespecial #44                 // Method "<init>":()V
       7: putstatic     #47                 // Field INSTANCE:LDay02Kt$main$testInputPart1$1;
      10: return
}

Compiled from "Day02.kt"
final class Day02Kt$main$inputForPart2$1 extends kotlin.jvm.internal.FunctionReferenceImpl implements kotlin.jvm.functions.Function1<java.lang.String, HandShape> {
  public static final Day02Kt$main$inputForPart2$1 INSTANCE;

  Day02Kt$main$inputForPart2$1();
    Code:
       0: aload_0
       1: iconst_1
       2: ldc           #11                 // class Day02Kt
       4: ldc           #13                 // String toHandShape
       6: ldc           #15                 // String toHandShape(Ljava/lang/String;)LHandShape;
       8: iconst_1
       9: invokespecial #18                 // Method kotlin/jvm/internal/FunctionReferenceImpl."<init>":(ILjava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V
      12: return

  public final HandShape invoke(java.lang.String);
    Code:
       0: aload_1
       1: ldc           #24                 // String p0
       3: invokestatic  #30                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_1
       7: invokestatic  #33                 // Method Day02Kt.access$toHandShape:(Ljava/lang/String;)LHandShape;
      10: areturn

  public java.lang.Object invoke(java.lang.Object);
    Code:
       0: aload_0
       1: aload_1
       2: checkcast     #37                 // class java/lang/String
       5: invokevirtual #39                 // Method invoke:(Ljava/lang/String;)LHandShape;
       8: areturn

  static {};
    Code:
       0: new           #2                  // class Day02Kt$main$inputForPart2$1
       3: dup
       4: invokespecial #44                 // Method "<init>":()V
       7: putstatic     #47                 // Field INSTANCE:LDay02Kt$main$inputForPart2$1;
      10: return
}

Compiled from "Day02.kt"
final class Day02Kt$main$inputForPart1$2 extends kotlin.jvm.internal.FunctionReferenceImpl implements kotlin.jvm.functions.Function1<java.lang.String, HandShape> {
  public static final Day02Kt$main$inputForPart1$2 INSTANCE;

  Day02Kt$main$inputForPart1$2();
    Code:
       0: aload_0
       1: iconst_1
       2: ldc           #11                 // class Day02Kt
       4: ldc           #13                 // String toHandShape
       6: ldc           #15                 // String toHandShape(Ljava/lang/String;)LHandShape;
       8: iconst_1
       9: invokespecial #18                 // Method kotlin/jvm/internal/FunctionReferenceImpl."<init>":(ILjava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V
      12: return

  public final HandShape invoke(java.lang.String);
    Code:
       0: aload_1
       1: ldc           #24                 // String p0
       3: invokestatic  #30                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_1
       7: invokestatic  #33                 // Method Day02Kt.access$toHandShape:(Ljava/lang/String;)LHandShape;
      10: areturn

  public java.lang.Object invoke(java.lang.Object);
    Code:
       0: aload_0
       1: aload_1
       2: checkcast     #37                 // class java/lang/String
       5: invokevirtual #39                 // Method invoke:(Ljava/lang/String;)LHandShape;
       8: areturn

  static {};
    Code:
       0: new           #2                  // class Day02Kt$main$inputForPart1$2
       3: dup
       4: invokespecial #44                 // Method "<init>":()V
       7: putstatic     #47                 // Field INSTANCE:LDay02Kt$main$inputForPart1$2;
      10: return
}

Compiled from "Day02.kt"
final class Day02Kt$main$testInputPart2$1 extends kotlin.jvm.internal.FunctionReferenceImpl implements kotlin.jvm.functions.Function1<java.lang.String, HandShape> {
  public static final Day02Kt$main$testInputPart2$1 INSTANCE;

  Day02Kt$main$testInputPart2$1();
    Code:
       0: aload_0
       1: iconst_1
       2: ldc           #11                 // class Day02Kt
       4: ldc           #13                 // String toHandShape
       6: ldc           #15                 // String toHandShape(Ljava/lang/String;)LHandShape;
       8: iconst_1
       9: invokespecial #18                 // Method kotlin/jvm/internal/FunctionReferenceImpl."<init>":(ILjava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V
      12: return

  public final HandShape invoke(java.lang.String);
    Code:
       0: aload_1
       1: ldc           #24                 // String p0
       3: invokestatic  #30                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_1
       7: invokestatic  #33                 // Method Day02Kt.access$toHandShape:(Ljava/lang/String;)LHandShape;
      10: areturn

  public java.lang.Object invoke(java.lang.Object);
    Code:
       0: aload_0
       1: aload_1
       2: checkcast     #37                 // class java/lang/String
       5: invokevirtual #39                 // Method invoke:(Ljava/lang/String;)LHandShape;
       8: areturn

  static {};
    Code:
       0: new           #2                  // class Day02Kt$main$testInputPart2$1
       3: dup
       4: invokespecial #44                 // Method "<init>":()V
       7: putstatic     #47                 // Field INSTANCE:LDay02Kt$main$testInputPart2$1;
      10: return
}

Compiled from "Day02.kt"
final class Day02Kt$main$testInputPart1$2 extends kotlin.jvm.internal.FunctionReferenceImpl implements kotlin.jvm.functions.Function1<java.lang.String, HandShape> {
  public static final Day02Kt$main$testInputPart1$2 INSTANCE;

  Day02Kt$main$testInputPart1$2();
    Code:
       0: aload_0
       1: iconst_1
       2: ldc           #11                 // class Day02Kt
       4: ldc           #13                 // String toHandShape
       6: ldc           #15                 // String toHandShape(Ljava/lang/String;)LHandShape;
       8: iconst_1
       9: invokespecial #18                 // Method kotlin/jvm/internal/FunctionReferenceImpl."<init>":(ILjava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V
      12: return

  public final HandShape invoke(java.lang.String);
    Code:
       0: aload_1
       1: ldc           #24                 // String p0
       3: invokestatic  #30                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_1
       7: invokestatic  #33                 // Method Day02Kt.access$toHandShape:(Ljava/lang/String;)LHandShape;
      10: areturn

  public java.lang.Object invoke(java.lang.Object);
    Code:
       0: aload_0
       1: aload_1
       2: checkcast     #37                 // class java/lang/String
       5: invokevirtual #39                 // Method invoke:(Ljava/lang/String;)LHandShape;
       8: areturn

  static {};
    Code:
       0: new           #2                  // class Day02Kt$main$testInputPart1$2
       3: dup
       4: invokespecial #44                 // Method "<init>":()V
       7: putstatic     #47                 // Field INSTANCE:LDay02Kt$main$testInputPart1$2;
      10: return
}

Compiled from "Day02.kt"
final class Day02Kt$main$inputForPart2$2 extends kotlin.jvm.internal.FunctionReferenceImpl implements kotlin.jvm.functions.Function1<java.lang.String, GameResult> {
  public static final Day02Kt$main$inputForPart2$2 INSTANCE;

  Day02Kt$main$inputForPart2$2();
    Code:
       0: aload_0
       1: iconst_1
       2: ldc           #11                 // class Day02Kt
       4: ldc           #13                 // String toGameResult
       6: ldc           #15                 // String toGameResult(Ljava/lang/String;)LGameResult;
       8: iconst_1
       9: invokespecial #18                 // Method kotlin/jvm/internal/FunctionReferenceImpl."<init>":(ILjava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V
      12: return

  public final GameResult invoke(java.lang.String);
    Code:
       0: aload_1
       1: ldc           #24                 // String p0
       3: invokestatic  #30                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_1
       7: invokestatic  #33                 // Method Day02Kt.access$toGameResult:(Ljava/lang/String;)LGameResult;
      10: areturn

  public java.lang.Object invoke(java.lang.Object);
    Code:
       0: aload_0
       1: aload_1
       2: checkcast     #37                 // class java/lang/String
       5: invokevirtual #39                 // Method invoke:(Ljava/lang/String;)LGameResult;
       8: areturn

  static {};
    Code:
       0: new           #2                  // class Day02Kt$main$inputForPart2$2
       3: dup
       4: invokespecial #44                 // Method "<init>":()V
       7: putstatic     #47                 // Field INSTANCE:LDay02Kt$main$inputForPart2$2;
      10: return
}

Compiled from "Day02.kt"
final class Day02Kt$main$inputForPart1$1 extends kotlin.jvm.internal.FunctionReferenceImpl implements kotlin.jvm.functions.Function1<java.lang.String, HandShape> {
  public static final Day02Kt$main$inputForPart1$1 INSTANCE;

  Day02Kt$main$inputForPart1$1();
    Code:
       0: aload_0
       1: iconst_1
       2: ldc           #11                 // class Day02Kt
       4: ldc           #13                 // String toHandShape
       6: ldc           #15                 // String toHandShape(Ljava/lang/String;)LHandShape;
       8: iconst_1
       9: invokespecial #18                 // Method kotlin/jvm/internal/FunctionReferenceImpl."<init>":(ILjava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V
      12: return

  public final HandShape invoke(java.lang.String);
    Code:
       0: aload_1
       1: ldc           #24                 // String p0
       3: invokestatic  #30                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_1
       7: invokestatic  #33                 // Method Day02Kt.access$toHandShape:(Ljava/lang/String;)LHandShape;
      10: areturn

  public java.lang.Object invoke(java.lang.Object);
    Code:
       0: aload_0
       1: aload_1
       2: checkcast     #37                 // class java/lang/String
       5: invokevirtual #39                 // Method invoke:(Ljava/lang/String;)LHandShape;
       8: areturn

  static {};
    Code:
       0: new           #2                  // class Day02Kt$main$inputForPart1$1
       3: dup
       4: invokespecial #44                 // Method "<init>":()V
       7: putstatic     #47                 // Field INSTANCE:LDay02Kt$main$inputForPart1$1;
      10: return
}

Compiled from "Day02.kt"
public final class Day02Kt {
  public static final void main();
    Code:
       0: ldc           #8                  // String Day02_test
       2: getstatic     #14                 // Field Day02Kt$main$testInputPart1$1.INSTANCE:LDay02Kt$main$testInputPart1$1;
       5: checkcast     #16                 // class kotlin/jvm/functions/Function1
       8: getstatic     #21                 // Field Day02Kt$main$testInputPart1$2.INSTANCE:LDay02Kt$main$testInputPart1$2;
      11: checkcast     #16                 // class kotlin/jvm/functions/Function1
      14: invokestatic  #25                 // Method parseInput:(Ljava/lang/String;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Ljava/util/List;
      17: astore_0
      18: aload_0
      19: invokestatic  #29                 // Method main$part1:(Ljava/util/List;)I
      22: bipush        15
      24: if_icmpne     31
      27: iconst_1
      28: goto          32
      31: iconst_0
      32: ifne          45
      35: new           #31                 // class java/lang/IllegalStateException
      38: dup
      39: ldc           #33                 // String Check failed.
      41: invokespecial #37                 // Method java/lang/IllegalStateException."<init>":(Ljava/lang/String;)V
      44: athrow
      45: ldc           #8                  // String Day02_test
      47: getstatic     #42                 // Field Day02Kt$main$testInputPart2$1.INSTANCE:LDay02Kt$main$testInputPart2$1;
      50: checkcast     #16                 // class kotlin/jvm/functions/Function1
      53: getstatic     #47                 // Field Day02Kt$main$testInputPart2$2.INSTANCE:LDay02Kt$main$testInputPart2$2;
      56: checkcast     #16                 // class kotlin/jvm/functions/Function1
      59: invokestatic  #25                 // Method parseInput:(Ljava/lang/String;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Ljava/util/List;
      62: astore_1
      63: aload_1
      64: invokestatic  #50                 // Method main$part2:(Ljava/util/List;)I
      67: bipush        12
      69: if_icmpne     76
      72: iconst_1
      73: goto          77
      76: iconst_0
      77: ifne          90
      80: new           #31                 // class java/lang/IllegalStateException
      83: dup
      84: ldc           #33                 // String Check failed.
      86: invokespecial #37                 // Method java/lang/IllegalStateException."<init>":(Ljava/lang/String;)V
      89: athrow
      90: ldc           #52                 // String Day02
      92: getstatic     #57                 // Field Day02Kt$main$inputForPart1$1.INSTANCE:LDay02Kt$main$inputForPart1$1;
      95: checkcast     #16                 // class kotlin/jvm/functions/Function1
      98: getstatic     #62                 // Field Day02Kt$main$inputForPart1$2.INSTANCE:LDay02Kt$main$inputForPart1$2;
     101: checkcast     #16                 // class kotlin/jvm/functions/Function1
     104: invokestatic  #25                 // Method parseInput:(Ljava/lang/String;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Ljava/util/List;
     107: astore_2
     108: aload_2
     109: invokestatic  #29                 // Method main$part1:(Ljava/util/List;)I
     112: istore_3
     113: getstatic     #68                 // Field java/lang/System.out:Ljava/io/PrintStream;
     116: iload_3
     117: invokevirtual #74                 // Method java/io/PrintStream.println:(I)V
     120: ldc           #52                 // String Day02
     122: getstatic     #79                 // Field Day02Kt$main$inputForPart2$1.INSTANCE:LDay02Kt$main$inputForPart2$1;
     125: checkcast     #16                 // class kotlin/jvm/functions/Function1
     128: getstatic     #84                 // Field Day02Kt$main$inputForPart2$2.INSTANCE:LDay02Kt$main$inputForPart2$2;
     131: checkcast     #16                 // class kotlin/jvm/functions/Function1
     134: invokestatic  #25                 // Method parseInput:(Ljava/lang/String;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Ljava/util/List;
     137: astore_3
     138: aload_3
     139: invokestatic  #50                 // Method main$part2:(Ljava/util/List;)I
     142: istore        4
     144: getstatic     #68                 // Field java/lang/System.out:Ljava/io/PrintStream;
     147: iload         4
     149: invokevirtual #74                 // Method java/io/PrintStream.println:(I)V
     152: return

  private static final <T, U> java.util.List<kotlin.Pair<T, U>> parseInput(java.lang.String, kotlin.jvm.functions.Function1<? super java.lang.String, ? extends T>, kotlin.jvm.functions.Function1<? super java.lang.String, ? extends U>);
    Code:
       0: aload_0
       1: invokestatic  #98                 // Method UtilsKt.readInput:(Ljava/lang/String;)Ljava/util/List;
       4: checkcast     #100                // class java/lang/Iterable
       7: astore_3
       8: iconst_0
       9: istore        4
      11: aload_3
      12: astore        5
      14: new           #102                // class java/util/ArrayList
      17: dup
      18: aload_3
      19: bipush        10
      21: invokestatic  #108                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      24: invokespecial #110                // Method java/util/ArrayList."<init>":(I)V
      27: checkcast     #112                // class java/util/Collection
      30: astore        6
      32: iconst_0
      33: istore        7
      35: aload         5
      37: invokeinterface #116,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      42: astore        8
      44: aload         8
      46: invokeinterface #122,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
      51: ifeq          158
      54: aload         8
      56: invokeinterface #126,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      61: astore        9
      63: aload         6
      65: aload         9
      67: checkcast     #128                // class java/lang/String
      70: astore        10
      72: astore        15
      74: iconst_0
      75: istore        11
      77: aload         10
      79: checkcast     #130                // class java/lang/CharSequence
      82: iconst_1
      83: anewarray     #128                // class java/lang/String
      86: astore        12
      88: aload         12
      90: iconst_0
      91: ldc           #132                // String
      93: aastore
      94: aload         12
      96: iconst_0
      97: iconst_0
      98: bipush        6
     100: aconst_null
     101: invokestatic  #138                // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
     104: astore        13
     106: iconst_0
     107: istore        14
     109: new           #140                // class kotlin/Pair
     112: dup
     113: aload_1
     114: aload         13
     116: iconst_0
     117: invokeinterface #144,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     122: invokeinterface #148,  2          // InterfaceMethod kotlin/jvm/functions/Function1.invoke:(Ljava/lang/Object;)Ljava/lang/Object;
     127: aload_2
     128: aload         13
     130: iconst_1
     131: invokeinterface #144,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     136: invokeinterface #148,  2          // InterfaceMethod kotlin/jvm/functions/Function1.invoke:(Ljava/lang/Object;)Ljava/lang/Object;
     141: invokespecial #151                // Method kotlin/Pair."<init>":(Ljava/lang/Object;Ljava/lang/Object;)V
     144: nop
     145: nop
     146: aload         15
     148: swap
     149: invokeinterface #155,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     154: pop
     155: goto          44
     158: aload         6
     160: checkcast     #91                 // class java/util/List
     163: nop
     164: areturn

  private static final HandShape toHandShape(java.lang.String);
    Code:
       0: aload_0
       1: astore_1
       2: aload_1
       3: invokevirtual #180                // Method java/lang/String.hashCode:()I
       6: lookupswitch  { // 6
                    65: 64
                    66: 76
                    67: 88
                    88: 100
                    89: 112
                    90: 124
               default: 154
          }
      64: aload_1
      65: ldc           #182                // String A
      67: invokevirtual #185                // Method java/lang/String.equals:(Ljava/lang/Object;)Z
      70: ifne          136
      73: goto          154
      76: aload_1
      77: ldc           #187                // String B
      79: invokevirtual #185                // Method java/lang/String.equals:(Ljava/lang/Object;)Z
      82: ifne          142
      85: goto          154
      88: aload_1
      89: ldc           #189                // String C
      91: invokevirtual #185                // Method java/lang/String.equals:(Ljava/lang/Object;)Z
      94: ifne          148
      97: goto          154
     100: aload_1
     101: ldc           #191                // String X
     103: invokevirtual #185                // Method java/lang/String.equals:(Ljava/lang/Object;)Z
     106: ifne          136
     109: goto          154
     112: aload_1
     113: ldc           #193                // String Y
     115: invokevirtual #185                // Method java/lang/String.equals:(Ljava/lang/Object;)Z
     118: ifne          142
     121: goto          154
     124: aload_1
     125: ldc           #195                // String Z
     127: invokevirtual #185                // Method java/lang/String.equals:(Ljava/lang/Object;)Z
     130: ifne          148
     133: goto          154
     136: getstatic     #201                // Field HandShape.ROCK:LHandShape;
     139: goto          162
     142: getstatic     #204                // Field HandShape.PAPER:LHandShape;
     145: goto          162
     148: getstatic     #207                // Field HandShape.SCISSORS:LHandShape;
     151: goto          162
     154: new           #209                // class java/lang/IllegalArgumentException
     157: dup
     158: invokespecial #211                // Method java/lang/IllegalArgumentException."<init>":()V
     161: athrow
     162: areturn

  private static final GameResult toGameResult(java.lang.String);
    Code:
       0: aload_0
       1: astore_1
       2: aload_1
       3: invokevirtual #180                // Method java/lang/String.hashCode:()I
       6: tableswitch   { // 88 to 90
                    88: 32
                    89: 44
                    90: 56
               default: 86
          }
      32: aload_1
      33: ldc           #191                // String X
      35: invokevirtual #185                // Method java/lang/String.equals:(Ljava/lang/Object;)Z
      38: ifne          68
      41: goto          86
      44: aload_1
      45: ldc           #193                // String Y
      47: invokevirtual #185                // Method java/lang/String.equals:(Ljava/lang/Object;)Z
      50: ifne          74
      53: goto          86
      56: aload_1
      57: ldc           #195                // String Z
      59: invokevirtual #185                // Method java/lang/String.equals:(Ljava/lang/Object;)Z
      62: ifne          80
      65: goto          86
      68: getstatic     #220                // Field GameResult.LOSS:LGameResult;
      71: goto          94
      74: getstatic     #223                // Field GameResult.DRAW:LGameResult;
      77: goto          94
      80: getstatic     #226                // Field GameResult.WIN:LGameResult;
      83: goto          94
      86: new           #209                // class java/lang/IllegalArgumentException
      89: dup
      90: invokespecial #211                // Method java/lang/IllegalArgumentException."<init>":()V
      93: athrow
      94: areturn

  public static void main(java.lang.String[]);
    Code:
       0: invokestatic  #230                // Method main:()V
       3: return

  private static final GameResult main$gameResult(HandShape, HandShape);
    Code:
       0: aload_0
       1: astore_2
       2: aload_2
       3: aload_1
       4: invokevirtual #238                // Method HandShape.greater:()LHandShape;
       7: if_acmpne     16
      10: getstatic     #226                // Field GameResult.WIN:LGameResult;
      13: goto          33
      16: aload_2
      17: aload_1
      18: invokevirtual #241                // Method HandShape.lower:()LHandShape;
      21: if_acmpne     30
      24: getstatic     #220                // Field GameResult.LOSS:LGameResult;
      27: goto          33
      30: getstatic     #223                // Field GameResult.DRAW:LGameResult;
      33: areturn

  private static final int main$part1(java.util.List<? extends kotlin.Pair<? extends HandShape, ? extends HandShape>>);
    Code:
       0: aload_0
       1: checkcast     #100                // class java/lang/Iterable
       4: astore_1
       5: iconst_0
       6: istore_2
       7: aload_1
       8: invokeinterface #116,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      13: astore_3
      14: aload_3
      15: invokeinterface #122,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
      20: ifeq          91
      23: aload_3
      24: invokeinterface #126,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      29: astore        4
      31: iload_2
      32: aload         4
      34: checkcast     #140                // class kotlin/Pair
      37: astore        5
      39: istore        9
      41: iconst_0
      42: istore        6
      44: aload         5
      46: invokevirtual #247                // Method kotlin/Pair.component1:()Ljava/lang/Object;
      49: checkcast     #197                // class HandShape
      52: astore        7
      54: aload         5
      56: invokevirtual #250                // Method kotlin/Pair.component2:()Ljava/lang/Object;
      59: checkcast     #197                // class HandShape
      62: astore        8
      64: aload         8
      66: invokevirtual #253                // Method HandShape.getScore:()I
      69: aload         8
      71: aload         7
      73: invokestatic  #255                // Method main$gameResult:(LHandShape;LHandShape;)LGameResult;
      76: invokevirtual #256                // Method GameResult.getScore:()I
      79: iadd
      80: istore        10
      82: iload         9
      84: iload         10
      86: iadd
      87: istore_2
      88: goto          14
      91: iload_2
      92: ireturn

  private static final HandShape main$getMoveForExpectedResult(HandShape, GameResult);
    Code:
       0: aload_1
       1: getstatic     #266                // Field Day02Kt$WhenMappings.$EnumSwitchMapping$0:[I
       4: swap
       5: invokevirtual #269                // Method GameResult.ordinal:()I
       8: iaload
       9: tableswitch   { // 1 to 3
                     1: 36
                     2: 43
                     3: 47
               default: 54
          }
      36: aload_0
      37: invokevirtual #241                // Method HandShape.lower:()LHandShape;
      40: goto          62
      43: aload_0
      44: goto          62
      47: aload_0
      48: invokevirtual #238                // Method HandShape.greater:()LHandShape;
      51: goto          62
      54: new           #271                // class kotlin/NoWhenBranchMatchedException
      57: dup
      58: invokespecial #272                // Method kotlin/NoWhenBranchMatchedException."<init>":()V
      61: athrow
      62: areturn

  private static final int main$part2(java.util.List<? extends kotlin.Pair<? extends HandShape, ? extends GameResult>>);
    Code:
       0: aload_0
       1: checkcast     #100                // class java/lang/Iterable
       4: astore_1
       5: iconst_0
       6: istore_2
       7: aload_1
       8: invokeinterface #116,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      13: astore_3
      14: aload_3
      15: invokeinterface #122,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
      20: ifeq          91
      23: aload_3
      24: invokeinterface #126,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      29: astore        4
      31: iload_2
      32: aload         4
      34: checkcast     #140                // class kotlin/Pair
      37: astore        5
      39: istore        9
      41: iconst_0
      42: istore        6
      44: aload         5
      46: invokevirtual #247                // Method kotlin/Pair.component1:()Ljava/lang/Object;
      49: checkcast     #197                // class HandShape
      52: astore        7
      54: aload         5
      56: invokevirtual #250                // Method kotlin/Pair.component2:()Ljava/lang/Object;
      59: checkcast     #216                // class GameResult
      62: astore        8
      64: aload         8
      66: invokevirtual #256                // Method GameResult.getScore:()I
      69: aload         7
      71: aload         8
      73: invokestatic  #276                // Method main$getMoveForExpectedResult:(LHandShape;LGameResult;)LHandShape;
      76: invokevirtual #253                // Method HandShape.getScore:()I
      79: iadd
      80: istore        10
      82: iload         9
      84: iload         10
      86: iadd
      87: istore_2
      88: goto          14
      91: iload_2
      92: ireturn

  public static final HandShape access$toHandShape(java.lang.String);
    Code:
       0: aload_0
       1: invokestatic  #282                // Method toHandShape:(Ljava/lang/String;)LHandShape;
       4: areturn

  public static final GameResult access$toGameResult(java.lang.String);
    Code:
       0: aload_0
       1: invokestatic  #286                // Method toGameResult:(Ljava/lang/String;)LGameResult;
       4: areturn
}

Compiled from "Day02.kt"
public final class Day02Kt$WhenMappings {
  public static final int[] $EnumSwitchMapping$0;

  static {};
    Code:
       0: invokestatic  #14                 // Method GameResult.values:()[LGameResult;
       3: arraylength
       4: newarray       int
       6: astore_0
       7: nop
       8: aload_0
       9: getstatic     #18                 // Field GameResult.LOSS:LGameResult;
      12: invokevirtual #22                 // Method GameResult.ordinal:()I
      15: iconst_1
      16: iastore
      17: goto          21
      20: astore_1
      21: nop
      22: aload_0
      23: getstatic     #25                 // Field GameResult.DRAW:LGameResult;
      26: invokevirtual #22                 // Method GameResult.ordinal:()I
      29: iconst_2
      30: iastore
      31: goto          35
      34: astore_1
      35: nop
      36: aload_0
      37: getstatic     #28                 // Field GameResult.WIN:LGameResult;
      40: invokevirtual #22                 // Method GameResult.ordinal:()I
      43: iconst_3
      44: iastore
      45: goto          49
      48: astore_1
      49: aload_0
      50: putstatic     #32                 // Field $EnumSwitchMapping$0:[I
      53: return
    Exception table:
       from    to  target type
           7    17    20   Class java/lang/NoSuchFieldError
          21    31    34   Class java/lang/NoSuchFieldError
          35    45    48   Class java/lang/NoSuchFieldError
}