Class #54            -
  Class descriptor  : 'Lcom/valentinedesigns/chromalink/HarmonyGrid;'
  Access flags      : 0x0010 (FINAL)
  Superclass        : 'Ljava/lang/Object;'
  Interfaces        -
  Static fields     -
  Instance fields   -
    #0              : (in Lcom/valentinedesigns/chromalink/HarmonyGrid;)
      name          : 'framesPerBar'
      type          : 'D'
      access        : 0x0012 (PRIVATE FINAL)
    #1              : (in Lcom/valentinedesigns/chromalink/HarmonyGrid;)
      name          : 'roots'
      type          : '[I'
      access        : 0x0012 (PRIVATE FINAL)
  Direct methods    -
    #0              : (in Lcom/valentinedesigns/chromalink/HarmonyGrid;)
      name          : '<init>'
      type          : '(DD[I)V'
      access        : 0x10000 (CONSTRUCTOR)
      code          -
      registers     : 10
      ins           : 6
      outs          : 2
      insns size    : 109 16-bit code units
01e250:                                        |[01e250] com.valentinedesigns.chromalink.HarmonyGrid.<init>:(DD[I)V
01e260: 7010 5006 0400                         |0000: invoke-direct {v4}, Ljava/lang/Object;.<init>:()V // method@0650
01e266: 7120 2806 6500                         |0003: invoke-static {v5, v6}, Ljava/lang/Double;.isFinite:(D)Z // method@0628
01e26c: 0a00                                   |0006: move-result v0
01e26e: 3800 5e00                              |0007: if-eqz v0, 0065 // +005e
01e272: 7120 2806 8700                         |0009: invoke-static {v7, v8}, Ljava/lang/Double;.isFinite:(D)Z // method@0628
01e278: 0a00                                   |000c: move-result v0
01e27a: 3800 5800                              |000d: if-eqz v0, 0065 // +0058
01e27e: 1600 0000                              |000f: const-wide/16 v0, #int 0 // #0
01e282: 3002 0500                              |0011: cmpg-double v2, v5, v0
01e286: 3a02 5200                              |0013: if-ltz v2, 0065 // +0052
01e28a: 3002 0700                              |0015: cmpg-double v2, v7, v0
01e28e: 3d02 4e00                              |0017: if-lez v2, 0065 // +004e
01e292: 2f02 0500                              |0019: cmpl-double v2, v5, v0
01e296: 3d02 0a00                              |001b: if-lez v2, 0025 // +000a
01e29a: 1802 0000 0000 f82f 4441               |001d: const-wide v2, #double 2.646e+06 // #41442ff800000000
01e2a4: cd27                                   |0022: mul-double/2addr v7, v2
01e2a6: ce57                                   |0023: div-double/2addr v7, v5
01e2a8: 2802                                   |0024: goto 0026 // +0002
01e2aa: 0407                                   |0025: move-wide v7, v0
01e2ac: 5a47 d001                              |0026: iput-wide v7, v4, Lcom/valentinedesigns/chromalink/HarmonyGrid;.framesPerBar:D // field@01d0
01e2b0: 1205                                   |0028: const/4 v5, #int 0 // #0
01e2b2: 3909 0500                              |0029: if-nez v9, 002e // +0005
01e2b6: 2356 7501                              |002b: new-array v6, v5, [I // type@0175
01e2ba: 2807                                   |002d: goto 0034 // +0007
01e2bc: 6e10 c906 0900                         |002e: invoke-virtual {v9}, [I.clone:()Ljava/lang/Object; // method@06c9
01e2c2: 0c06                                   |0031: move-result-object v6
01e2c4: 1f06 7501                              |0032: check-cast v6, [I // type@0175
01e2c8: 5b46 d101                              |0034: iput-object v6, v4, Lcom/valentinedesigns/chromalink/HarmonyGrid;.roots:[I // field@01d1
01e2cc: 5346 d001                              |0036: iget-wide v6, v4, Lcom/valentinedesigns/chromalink/HarmonyGrid;.framesPerBar:D // field@01d0
01e2d0: 2f06 0600                              |0038: cmpl-double v6, v6, v0
01e2d4: 3906 1000                              |003a: if-nez v6, 004a // +0010
01e2d8: 5446 d101                              |003c: iget-object v6, v4, Lcom/valentinedesigns/chromalink/HarmonyGrid;.roots:[I // field@01d1
01e2dc: 2166                                   |003e: array-length v6, v6
01e2de: 3c06 0300                              |003f: if-gtz v6, 0042 // +0003
01e2e2: 2809                                   |0041: goto 004a // +0009
01e2e4: 2205 3d01                              |0042: new-instance v5, Ljava/lang/IllegalArgumentException; // type@013d
01e2e8: 1a06 3801                              |0044: const-string v6, "Chord map requires a tempo" // string@0138
01e2ec: 7020 2e06 6500                         |0046: invoke-direct {v5, v6}, Ljava/lang/IllegalArgumentException;.<init>:(Ljava/lang/String;)V // method@062e
01e2f2: 2705                                   |0049: throw v5
01e2f4: 5446 d101                              |004a: iget-object v6, v4, Lcom/valentinedesigns/chromalink/HarmonyGrid;.roots:[I // field@01d1
01e2f8: 2167                                   |004c: array-length v7, v6
01e2fa: 3575 1700                              |004d: if-ge v5, v7, 0064 // +0017
01e2fe: 4408 0605                              |004f: aget v8, v6, v5
01e302: 1309 0c00                              |0051: const/16 v9, #int 12 // #c
01e306: 3498 0900                              |0053: if-lt v8, v9, 005c // +0009
01e30a: 1309 6c00                              |0055: const/16 v9, #int 108 // #6c
01e30e: 3698 0500                              |0057: if-gt v8, v9, 005c // +0005
01e312: d805 0501                              |0059: add-int/lit8 v5, v5, #int 1 // #01
01e316: 28f2                                   |005b: goto 004d // -000e
01e318: 2205 3d01                              |005c: new-instance v5, Ljava/lang/IllegalArgumentException; // type@013d
01e31c: 1a06 ea01                              |005e: const-string v6, "Invalid chord root" // string@01ea
01e320: 7020 2e06 6500                         |0060: invoke-direct {v5, v6}, Ljava/lang/IllegalArgumentException;.<init>:(Ljava/lang/String;)V // method@062e
01e326: 2705                                   |0063: throw v5
01e328: 0e00                                   |0064: return-void
01e32a: 2205 3d01                              |0065: new-instance v5, Ljava/lang/IllegalArgumentException; // type@013d
01e32e: 1a06 e903                              |0067: const-string v6, "Nonnegative tempo and positive meter required" // string@03e9
01e332: 7020 2e06 6500                         |0069: invoke-direct {v5, v6}, Ljava/lang/IllegalArgumentException;.<init>:(Ljava/lang/String;)V // method@062e
01e338: 2705                                   |006c: throw v5
      catches       : (none)
      positions     :
        0x0000 line=7
        0x0003 line=8
        0x0019 line=11
        0x0028 line=12
        0x0036 line=13
        0x004a line=14
        0x0064 line=15
        0x0065 line=9
      locals        :
        0x0000 - 0x006d reg=4 this Lcom/valentinedesigns/chromalink/HarmonyGrid;
        0x0000 - 0x006d reg=5 (null) D
        0x0000 - 0x006d reg=7 (null) D
        0x0000 - 0x006d reg=9 (null) [I

  Virtual methods   -
    #0              : (in Lcom/valentinedesigns/chromalink/HarmonyGrid;)
      name          : 'nearBarStart'
      type          : '(JI)Z'
      access        : 0x0000 ()
      code          -
      registers     : 8
      ins           : 4
      outs          : 4
      insns size    : 31 16-bit code units
01e130:                                        |[01e130] com.valentinedesigns.chromalink.HarmonyGrid.nearBarStart:(JI)Z
01e140: 5340 d001                              |0000: iget-wide v0, v4, Lcom/valentinedesigns/chromalink/HarmonyGrid;.framesPerBar:D // field@01d0
01e144: 1602 0000                              |0002: const-wide/16 v2, #int 0 // #0
01e148: 2f00 0002                              |0004: cmpl-double v0, v0, v2
01e14c: 3d00 1700                              |0006: if-lez v0, 001d // +0017
01e150: 1600 0000                              |0008: const-wide/16 v0, #int 0 // #0
01e154: 7140 4506 1065                         |000a: invoke-static {v0, v1, v5, v6}, Ljava/lang/Math;.max:(JJ)J // method@0645
01e15a: 0b05                                   |000d: move-result-wide v5
01e15c: 8655                                   |000e: long-to-double v5, v5
01e15e: 5340 d001                              |000f: iget-wide v0, v4, Lcom/valentinedesigns/chromalink/HarmonyGrid;.framesPerBar:D // field@01d0
01e162: cf05                                   |0011: rem-double/2addr v5, v0
01e164: 1210                                   |0012: const/4 v0, #int 1 // #1
01e166: 7120 4406 7000                         |0013: invoke-static {v0, v7}, Ljava/lang/Math;.max:(II)I // method@0644
01e16c: 0a07                                   |0016: move-result v7
01e16e: 8371                                   |0017: int-to-double v1, v7
01e170: 3005 0501                              |0018: cmpg-double v5, v5, v1
01e174: 3b05 0300                              |001a: if-gez v5, 001d // +0003
01e178: 2802                                   |001c: goto 001e // +0002
01e17a: 1200                                   |001d: const/4 v0, #int 0 // #0
01e17c: 0f00                                   |001e: return v0
      catches       : (none)
      positions     :
        0x0000 line=16
      locals        :
        0x0000 - 0x001f reg=4 this Lcom/valentinedesigns/chromalink/HarmonyGrid;
        0x0000 - 0x001f reg=5 (null) J
        0x0000 - 0x001f reg=7 (null) I

    #1              : (in Lcom/valentinedesigns/chromalink/HarmonyGrid;)
      name          : 'nearTransition'
      type          : '(JII)Z'
      access        : 0x0000 ()
      code          -
      registers     : 9
      ins           : 5
      outs          : 4
      insns size    : 34 16-bit code units
01e180:                                        |[01e180] com.valentinedesigns.chromalink.HarmonyGrid.nearTransition:(JII)Z
01e190: 5340 d001                              |0000: iget-wide v0, v4, Lcom/valentinedesigns/chromalink/HarmonyGrid;.framesPerBar:D // field@01d0
01e194: 1602 0000                              |0002: const-wide/16 v2, #int 0 // #0
01e198: 2f00 0002                              |0004: cmpl-double v0, v0, v2
01e19c: 3d00 0700                              |0006: if-lez v0, 000d // +0007
01e1a0: 6e40 a203 5476                         |0008: invoke-virtual {v4, v5, v6, v7}, Lcom/valentinedesigns/chromalink/HarmonyGrid;.nearBarStart:(JI)Z // method@03a2
01e1a6: 0a05                                   |000b: move-result v5
01e1a8: 2815                                   |000c: goto 0021 // +0015
01e1aa: 3d08 1300                              |000d: if-lez v8, 0020 // +0013
01e1ae: 8180                                   |000f: int-to-long v0, v8
01e1b0: 7140 4106 6510                         |0010: invoke-static {v5, v6, v0, v1}, Ljava/lang/Math;.floorMod:(JJ)J // method@0641
01e1b6: 0b05                                   |0013: move-result-wide v5
01e1b8: 1218                                   |0014: const/4 v8, #int 1 // #1
01e1ba: 7120 4406 7800                         |0015: invoke-static {v8, v7}, Ljava/lang/Math;.max:(II)I // method@0644
01e1c0: 0a07                                   |0018: move-result v7
01e1c2: 8170                                   |0019: int-to-long v0, v7
01e1c4: 3105 0500                              |001a: cmp-long v5, v5, v0
01e1c8: 3b05 0400                              |001c: if-gez v5, 0020 // +0004
01e1cc: 0185                                   |001e: move v5, v8
01e1ce: 2802                                   |001f: goto 0021 // +0002
01e1d0: 1205                                   |0020: const/4 v5, #int 0 // #0
01e1d2: 0f05                                   |0021: return v5
      catches       : (none)
      positions     :
        0x0000 line=18
      locals        :
        0x0000 - 0x0022 reg=4 this Lcom/valentinedesigns/chromalink/HarmonyGrid;
        0x0000 - 0x0022 reg=5 (null) J
        0x0000 - 0x0022 reg=7 (null) I
        0x0000 - 0x0022 reg=8 (null) I

    #2              : (in Lcom/valentinedesigns/chromalink/HarmonyGrid;)
      name          : 'rootAt'
      type          : '(JF)F'
      access        : 0x0000 ()
      code          -
      registers     : 6
      ins           : 4
      outs          : 4
      insns size    : 54 16-bit code units
01e1d4:                                        |[01e1d4] com.valentinedesigns.chromalink.HarmonyGrid.rootAt:(JF)F
01e1e4: 5420 d101                              |0000: iget-object v0, v2, Lcom/valentinedesigns/chromalink/HarmonyGrid;.roots:[I // field@01d1
01e1e8: 2100                                   |0002: array-length v0, v0
01e1ea: 3900 0300                              |0003: if-nez v0, 0006 // +0003
01e1ee: 0f05                                   |0005: return v5
01e1f0: 1600 0000                              |0006: const-wide/16 v0, #int 0 // #0
01e1f4: 7140 4506 1043                         |0008: invoke-static {v0, v1, v3, v4}, Ljava/lang/Math;.max:(JJ)J // method@0645
01e1fa: 0b03                                   |000b: move-result-wide v3
01e1fc: 8633                                   |000c: long-to-double v3, v3
01e1fe: 1900 e03f                              |000d: const-wide/high16 v0, #long 4602678819172646912 // #3fe0
01e202: cb03                                   |000f: add-double/2addr v3, v0
01e204: 5320 d001                              |0010: iget-wide v0, v2, Lcom/valentinedesigns/chromalink/HarmonyGrid;.framesPerBar:D // field@01d0
01e208: ce03                                   |0012: div-double/2addr v3, v0
01e20a: 7120 3f06 4300                         |0013: invoke-static {v3, v4}, Ljava/lang/Math;.floor:(D)D // method@063f
01e210: 0b03                                   |0016: move-result-wide v3
01e212: 8b33                                   |0017: double-to-long v3, v3
01e214: 5425 d101                              |0018: iget-object v5, v2, Lcom/valentinedesigns/chromalink/HarmonyGrid;.roots:[I // field@01d1
01e218: 5420 d101                              |001a: iget-object v0, v2, Lcom/valentinedesigns/chromalink/HarmonyGrid;.roots:[I // field@01d1
01e21c: 2100                                   |001c: array-length v0, v0
01e21e: 8100                                   |001d: int-to-long v0, v0
01e220: bf03                                   |001e: rem-long/2addr v3, v0
01e222: 8433                                   |001f: long-to-int v3, v3
01e224: 4403 0503                              |0020: aget v3, v5, v3
01e228: d803 03bb                              |0022: add-int/lit8 v3, v3, #int -69 // #bb
01e22c: 8333                                   |0024: int-to-double v3, v3
01e22e: 1900 2840                              |0025: const-wide/high16 v0, #long 4622945017495814144 // #4028
01e232: ce03                                   |0027: div-double/2addr v3, v0
01e234: 1900 0040                              |0028: const-wide/high16 v0, #long 4611686018427387904 // #4000
01e238: 7140 4a06 1043                         |002a: invoke-static {v0, v1, v3, v4}, Ljava/lang/Math;.pow:(DD)D // method@064a
01e23e: 0b03                                   |002d: move-result-wide v3
01e240: 1800 0000 0000 0080 7b40               |002e: const-wide v0, #double 440 // #407b800000000000
01e24a: cd03                                   |0033: mul-double/2addr v3, v0
01e24c: 8c33                                   |0034: double-to-float v3, v3
01e24e: 0f03                                   |0035: return v3
      catches       : (none)
      positions     :
        0x0000 line=21
        0x0006 line=22
        0x0018 line=23
        0x0022 line=24
      locals        :
        0x0000 - 0x0036 reg=2 this Lcom/valentinedesigns/chromalink/HarmonyGrid;
        0x0000 - 0x0036 reg=3 (null) J
        0x0000 - 0x0036 reg=5 (null) F

  source_file_idx   : 431 (HarmonyGrid.java)

