public class com.android.internal.os.BatteryStatsHelper
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.android.internal.os.BatteryStatsHelper
  super_class: java.lang.Object
{
  static final boolean DEBUG;
    descriptor: Z
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 0

  private static final java.lang.String TAG;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static android.os.BatteryStats sStatsXfer;
    descriptor: Landroid/os/BatteryStats;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static android.content.Intent sBatteryBroadcastXfer;
    descriptor: Landroid/content/Intent;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static android.util.ArrayMap<java.io.File, android.os.BatteryStats> sFileXfer;
    descriptor: Landroid/util/ArrayMap;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Signature: Landroid/util/ArrayMap<Ljava/io/File;Landroid/os/BatteryStats;>;

  private final android.content.Context mContext;
    descriptor: Landroid/content/Context;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final boolean mCollectBatteryBroadcast;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final boolean mWifiOnly;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private com.android.internal.app.IBatteryStats mBatteryInfo;
    descriptor: Lcom/android/internal/app/IBatteryStats;
    flags: (0x0002) ACC_PRIVATE

  private android.os.BatteryStats mStats;
    descriptor: Landroid/os/BatteryStats;
    flags: (0x0002) ACC_PRIVATE

  private android.content.Intent mBatteryBroadcast;
    descriptor: Landroid/content/Intent;
    flags: (0x0002) ACC_PRIVATE

  private com.android.internal.os.PowerProfile mPowerProfile;
    descriptor: Lcom/android/internal/os/PowerProfile;
    flags: (0x0002) ACC_PRIVATE

  private java.lang.String[] mSystemPackageArray;
    descriptor: [Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private java.lang.String[] mServicepackageArray;
    descriptor: [Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private android.content.pm.PackageManager mPackageManager;
    descriptor: Landroid/content/pm/PackageManager;
    flags: (0x0002) ACC_PRIVATE

  private final java.util.List<com.android.internal.os.BatterySipper> mUsageList;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Lcom/android/internal/os/BatterySipper;>;

  private final java.util.List<com.android.internal.os.BatterySipper> mWifiSippers;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Lcom/android/internal/os/BatterySipper;>;

  private final java.util.List<com.android.internal.os.BatterySipper> mBluetoothSippers;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Lcom/android/internal/os/BatterySipper;>;

  private final android.util.SparseArray<java.util.List<com.android.internal.os.BatterySipper>> mUserSippers;
    descriptor: Landroid/util/SparseArray;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Landroid/util/SparseArray<Ljava/util/List<Lcom/android/internal/os/BatterySipper;>;>;

  private final java.util.List<com.android.internal.os.BatterySipper> mMobilemsppList;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Lcom/android/internal/os/BatterySipper;>;

  private int mStatsType;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  long mRawRealtimeUs;
    descriptor: J
    flags: (0x0000) 

  long mRawUptimeUs;
    descriptor: J
    flags: (0x0000) 

  long mBatteryRealtimeUs;
    descriptor: J
    flags: (0x0000) 

  long mBatteryUptimeUs;
    descriptor: J
    flags: (0x0000) 

  long mTypeBatteryRealtimeUs;
    descriptor: J
    flags: (0x0000) 

  long mTypeBatteryUptimeUs;
    descriptor: J
    flags: (0x0000) 

  long mBatteryTimeRemainingUs;
    descriptor: J
    flags: (0x0000) 

  long mChargeTimeRemainingUs;
    descriptor: J
    flags: (0x0000) 

  private long mStatsPeriod;
    descriptor: J
    flags: (0x0002) ACC_PRIVATE

  private double mMaxPower;
    descriptor: D
    flags: (0x0002) ACC_PRIVATE

  private double mMaxRealPower;
    descriptor: D
    flags: (0x0002) ACC_PRIVATE

  private double mComputedPower;
    descriptor: D
    flags: (0x0002) ACC_PRIVATE

  private double mTotalPower;
    descriptor: D
    flags: (0x0002) ACC_PRIVATE

  private double mMinDrainedPower;
    descriptor: D
    flags: (0x0002) ACC_PRIVATE

  private double mMaxDrainedPower;
    descriptor: D
    flags: (0x0002) ACC_PRIVATE

  com.android.internal.os.PowerCalculator mCpuPowerCalculator;
    descriptor: Lcom/android/internal/os/PowerCalculator;
    flags: (0x0000) 

  com.android.internal.os.PowerCalculator mWakelockPowerCalculator;
    descriptor: Lcom/android/internal/os/PowerCalculator;
    flags: (0x0000) 

  com.android.internal.os.MobileRadioPowerCalculator mMobileRadioPowerCalculator;
    descriptor: Lcom/android/internal/os/MobileRadioPowerCalculator;
    flags: (0x0000) 

  com.android.internal.os.PowerCalculator mWifiPowerCalculator;
    descriptor: Lcom/android/internal/os/PowerCalculator;
    flags: (0x0000) 

  com.android.internal.os.PowerCalculator mBluetoothPowerCalculator;
    descriptor: Lcom/android/internal/os/PowerCalculator;
    flags: (0x0000) 

  com.android.internal.os.PowerCalculator mSensorPowerCalculator;
    descriptor: Lcom/android/internal/os/PowerCalculator;
    flags: (0x0000) 

  com.android.internal.os.PowerCalculator mCameraPowerCalculator;
    descriptor: Lcom/android/internal/os/PowerCalculator;
    flags: (0x0000) 

  com.android.internal.os.PowerCalculator mFlashlightPowerCalculator;
    descriptor: Lcom/android/internal/os/PowerCalculator;
    flags: (0x0000) 

  com.android.internal.os.PowerCalculator mMemoryPowerCalculator;
    descriptor: Lcom/android/internal/os/PowerCalculator;
    flags: (0x0000) 

  com.android.internal.os.PowerCalculator mMediaPowerCalculator;
    descriptor: Lcom/android/internal/os/PowerCalculator;
    flags: (0x0000) 

  boolean mHasWifiPowerReporting;
    descriptor: Z
    flags: (0x0000) 

  boolean mHasBluetoothPowerReporting;
    descriptor: Z
    flags: (0x0000) 

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 67
            ldc Lcom/android/internal/os/BatteryStatsHelper;
            invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
            putstatic com.android.internal.os.BatteryStatsHelper.TAG:Ljava/lang/String;
         1: .line 71
            new android.util.ArrayMap
            dup
            invokespecial android.util.ArrayMap.<init>:()V
            putstatic com.android.internal.os.BatteryStatsHelper.sFileXfer:Landroid/util/ArrayMap;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static boolean checkWifiOnly(android.content.Context);
    descriptor: (Landroid/content/Context;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // android.content.Context context
         0: .line 145
            aload 0 /* context */
         1: .line 146
            ldc "connectivity"
         2: .line 145
            invokevirtual android.content.Context.getSystemService:(Ljava/lang/String;)Ljava/lang/Object;
            checkcast android.net.ConnectivityManager
            astore 1 /* cm */
        start local 1 // android.net.ConnectivityManager cm
         3: .line 147
            aload 1 /* cm */
            ifnonnull 5
         4: .line 148
            iconst_0
            ireturn
         5: .line 150
      StackMap locals: android.net.ConnectivityManager
      StackMap stack:
            aload 1 /* cm */
            iconst_0
            invokevirtual android.net.ConnectivityManager.isNetworkSupported:(I)Z
            ifeq 6
            iconst_0
            goto 7
      StackMap locals:
      StackMap stack:
         6: iconst_1
      StackMap locals:
      StackMap stack: int
         7: ireturn
        end local 1 // android.net.ConnectivityManager cm
        end local 0 // android.content.Context context
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    8     0  context  Landroid/content/Context;
            3    8     1       cm  Landroid/net/ConnectivityManager;
    MethodParameters:
         Name  Flags
      context  

  public static boolean checkHasWifiPowerReporting(android.os.BatteryStats, com.android.internal.os.PowerProfile);
    descriptor: (Landroid/os/BatteryStats;Lcom/android/internal/os/PowerProfile;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // android.os.BatteryStats stats
        start local 1 // com.android.internal.os.PowerProfile profile
         0: .line 154
            aload 0 /* stats */
            invokevirtual android.os.BatteryStats.hasWifiActivityReporting:()Z
            ifeq 5
         1: .line 155
            aload 1 /* profile */
            ldc "wifi.controller.idle"
            invokevirtual com.android.internal.os.PowerProfile.getAveragePower:(Ljava/lang/String;)D
            dconst_0
            dcmpl
            ifeq 5
         2: .line 156
            aload 1 /* profile */
            ldc "wifi.controller.rx"
            invokevirtual com.android.internal.os.PowerProfile.getAveragePower:(Ljava/lang/String;)D
            dconst_0
            dcmpl
            ifeq 5
         3: .line 157
            aload 1 /* profile */
            ldc "wifi.controller.tx"
            invokevirtual com.android.internal.os.PowerProfile.getAveragePower:(Ljava/lang/String;)D
            dconst_0
            dcmpl
            ifeq 5
         4: .line 154
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         5: iconst_0
            ireturn
        end local 1 // com.android.internal.os.PowerProfile profile
        end local 0 // android.os.BatteryStats stats
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    6     0    stats  Landroid/os/BatteryStats;
            0    6     1  profile  Lcom/android/internal/os/PowerProfile;
    MethodParameters:
         Name  Flags
      stats    
      profile  

  public static boolean checkHasBluetoothPowerReporting(android.os.BatteryStats, com.android.internal.os.PowerProfile);
    descriptor: (Landroid/os/BatteryStats;Lcom/android/internal/os/PowerProfile;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // android.os.BatteryStats stats
        start local 1 // com.android.internal.os.PowerProfile profile
         0: .line 162
            aload 0 /* stats */
            invokevirtual android.os.BatteryStats.hasBluetoothActivityReporting:()Z
            ifeq 5
         1: .line 163
            aload 1 /* profile */
            ldc "bluetooth.controller.idle"
            invokevirtual com.android.internal.os.PowerProfile.getAveragePower:(Ljava/lang/String;)D
            dconst_0
            dcmpl
            ifeq 5
         2: .line 164
            aload 1 /* profile */
            ldc "bluetooth.controller.rx"
            invokevirtual com.android.internal.os.PowerProfile.getAveragePower:(Ljava/lang/String;)D
            dconst_0
            dcmpl
            ifeq 5
         3: .line 165
            aload 1 /* profile */
            ldc "bluetooth.controller.tx"
            invokevirtual com.android.internal.os.PowerProfile.getAveragePower:(Ljava/lang/String;)D
            dconst_0
            dcmpl
            ifeq 5
         4: .line 162
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         5: iconst_0
            ireturn
        end local 1 // com.android.internal.os.PowerProfile profile
        end local 0 // android.os.BatteryStats stats
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    6     0    stats  Landroid/os/BatteryStats;
            0    6     1  profile  Lcom/android/internal/os/PowerProfile;
    MethodParameters:
         Name  Flags
      stats    
      profile  

  public void <init>(android.content.Context);
    descriptor: (Landroid/content/Context;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.android.internal.os.BatteryStatsHelper this
        start local 1 // android.content.Context context
         0: .line 169
            aload 0 /* this */
            aload 1 /* context */
            iconst_1
            invokespecial com.android.internal.os.BatteryStatsHelper.<init>:(Landroid/content/Context;Z)V
         1: .line 170
            return
        end local 1 // android.content.Context context
        end local 0 // com.android.internal.os.BatteryStatsHelper this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lcom/android/internal/os/BatteryStatsHelper;
            0    2     1  context  Landroid/content/Context;
    MethodParameters:
         Name  Flags
      context  

  public void <init>(android.content.Context, boolean);
    descriptor: (Landroid/content/Context;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // com.android.internal.os.BatteryStatsHelper this
        start local 1 // android.content.Context context
        start local 2 // boolean collectBatteryBroadcast
         0: .line 173
            aload 0 /* this */
            aload 1 /* context */
            iload 2 /* collectBatteryBroadcast */
            aload 1 /* context */
            invokestatic com.android.internal.os.BatteryStatsHelper.checkWifiOnly:(Landroid/content/Context;)Z
            invokespecial com.android.internal.os.BatteryStatsHelper.<init>:(Landroid/content/Context;ZZ)V
         1: .line 174
            return
        end local 2 // boolean collectBatteryBroadcast
        end local 1 // android.content.Context context
        end local 0 // com.android.internal.os.BatteryStatsHelper this
      LocalVariableTable:
        Start  End  Slot                     Name  Signature
            0    2     0                     this  Lcom/android/internal/os/BatteryStatsHelper;
            0    2     1                  context  Landroid/content/Context;
            0    2     2  collectBatteryBroadcast  Z
    MethodParameters:
                         Name  Flags
      context                  
      collectBatteryBroadcast  

  public void <init>(android.content.Context, boolean, boolean);
    descriptor: (Landroid/content/Context;ZZ)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // com.android.internal.os.BatteryStatsHelper this
         0: .line 184
            new java.lang.Error
            dup
            ldc "Unresolved compilation problems: \n\tcom.android.internal.R.array cannot be resolved to a variable\n\tcom.android.internal.R.array cannot be resolved to a variable\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // com.android.internal.os.BatteryStatsHelper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/android/internal/os/BatteryStatsHelper;
    MethodParameters:
                         Name  Flags
      context                  
      collectBatteryBroadcast  
      wifiOnly                 

  public void storeStatsHistoryInFile(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=8, args_size=2
        start local 0 // com.android.internal.os.BatteryStatsHelper this
        start local 1 // java.lang.String fname
         0: .line 190
            getstatic com.android.internal.os.BatteryStatsHelper.sFileXfer:Landroid/util/ArrayMap;
            dup
            astore 2
            monitorenter
         1: .line 191
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mContext:Landroid/content/Context;
            aload 1 /* fname */
            invokestatic com.android.internal.os.BatteryStatsHelper.makeFilePath:(Landroid/content/Context;Ljava/lang/String;)Ljava/io/File;
            astore 3 /* path */
        start local 3 // java.io.File path
         2: .line 192
            getstatic com.android.internal.os.BatteryStatsHelper.sFileXfer:Landroid/util/ArrayMap;
            aload 3 /* path */
            aload 0 /* this */
            invokevirtual com.android.internal.os.BatteryStatsHelper.getStats:()Landroid/os/BatteryStats;
            invokevirtual android.util.ArrayMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 193
            aconst_null
            astore 4 /* fout */
        start local 4 // java.io.FileOutputStream fout
         4: .line 195
            new java.io.FileOutputStream
            dup
            aload 3 /* path */
            invokespecial java.io.FileOutputStream.<init>:(Ljava/io/File;)V
            astore 4 /* fout */
         5: .line 196
            invokestatic android.os.Parcel.obtain:()Landroid/os/Parcel;
            astore 5 /* hist */
        start local 5 // android.os.Parcel hist
         6: .line 197
            aload 0 /* this */
            invokevirtual com.android.internal.os.BatteryStatsHelper.getStats:()Landroid/os/BatteryStats;
            aload 5 /* hist */
            iconst_0
            invokevirtual android.os.BatteryStats.writeToParcelWithoutUids:(Landroid/os/Parcel;I)V
         7: .line 198
            aload 5 /* hist */
            invokevirtual android.os.Parcel.marshall:()[B
            astore 6 /* histData */
        start local 6 // byte[] histData
         8: .line 199
            aload 4 /* fout */
            aload 6 /* histData */
            invokevirtual java.io.FileOutputStream.write:([B)V
        end local 6 // byte[] histData
        end local 5 // android.os.Parcel hist
         9: .line 200
            goto 22
      StackMap locals: com.android.internal.os.BatteryStatsHelper java.lang.String android.util.ArrayMap java.io.File java.io.FileOutputStream
      StackMap stack: java.io.IOException
        10: astore 5 /* e */
        start local 5 // java.io.IOException e
        11: .line 201
            getstatic com.android.internal.os.BatteryStatsHelper.TAG:Ljava/lang/String;
            ldc "Unable to write history to file"
            aload 5 /* e */
            invokestatic android.util.Log.w:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
            pop
        end local 5 // java.io.IOException e
        12: .line 203
            aload 4 /* fout */
            ifnull 26
        13: .line 205
            aload 4 /* fout */
            invokevirtual java.io.FileOutputStream.close:()V
        14: .line 206
            goto 26
      StackMap locals:
      StackMap stack: java.io.IOException
        15: pop
            goto 26
        16: .line 202
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 7
        17: .line 203
            aload 4 /* fout */
            ifnull 21
        18: .line 205
            aload 4 /* fout */
            invokevirtual java.io.FileOutputStream.close:()V
        19: .line 206
            goto 21
      StackMap locals: com.android.internal.os.BatteryStatsHelper java.lang.String android.util.ArrayMap java.io.File java.io.FileOutputStream top top java.lang.Throwable
      StackMap stack: java.io.IOException
        20: pop
        21: .line 209
      StackMap locals:
      StackMap stack:
            aload 7
            athrow
        22: .line 203
      StackMap locals: com.android.internal.os.BatteryStatsHelper java.lang.String android.util.ArrayMap java.io.File java.io.FileOutputStream
      StackMap stack:
            aload 4 /* fout */
            ifnull 26
        23: .line 205
            aload 4 /* fout */
            invokevirtual java.io.FileOutputStream.close:()V
        24: .line 206
            goto 26
      StackMap locals:
      StackMap stack: java.io.IOException
        25: pop
        end local 4 // java.io.FileOutputStream fout
        end local 3 // java.io.File path
        26: .line 190
      StackMap locals:
      StackMap stack:
            aload 2
            monitorexit
        27: goto 30
      StackMap locals:
      StackMap stack: java.lang.Throwable
        28: aload 2
            monitorexit
        29: athrow
        30: .line 211
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.String fname
        end local 0 // com.android.internal.os.BatteryStatsHelper this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   31     0      this  Lcom/android/internal/os/BatteryStatsHelper;
            0   31     1     fname  Ljava/lang/String;
            2   26     3      path  Ljava/io/File;
            4   26     4      fout  Ljava/io/FileOutputStream;
            6    9     5      hist  Landroid/os/Parcel;
            8    9     6  histData  [B
           11   12     5         e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           4     9      10  Class java.io.IOException
          13    14      15  Class java.io.IOException
           4    12      16  any
          18    19      20  Class java.io.IOException
          23    24      25  Class java.io.IOException
           1    27      28  any
          28    29      28  any
    MethodParameters:
       Name  Flags
      fname  

  public static android.os.BatteryStats statsFromFile(android.content.Context, java.lang.String);
    descriptor: (Landroid/content/Context;Ljava/lang/String;)Landroid/os/BatteryStats;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=10, args_size=2
        start local 0 // android.content.Context context
        start local 1 // java.lang.String fname
         0: .line 214
            getstatic com.android.internal.os.BatteryStatsHelper.sFileXfer:Landroid/util/ArrayMap;
            dup
            astore 2
            monitorenter
         1: .line 215
            aload 0 /* context */
            aload 1 /* fname */
            invokestatic com.android.internal.os.BatteryStatsHelper.makeFilePath:(Landroid/content/Context;Ljava/lang/String;)Ljava/io/File;
            astore 3 /* path */
        start local 3 // java.io.File path
         2: .line 216
            getstatic com.android.internal.os.BatteryStatsHelper.sFileXfer:Landroid/util/ArrayMap;
            aload 3 /* path */
            invokevirtual android.util.ArrayMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast android.os.BatteryStats
            astore 4 /* stats */
        start local 4 // android.os.BatteryStats stats
         3: .line 217
            aload 4 /* stats */
            ifnull 6
         4: .line 218
            aload 4 /* stats */
            aload 2
            monitorexit
         5: areturn
         6: .line 220
      StackMap locals: android.util.ArrayMap java.io.File android.os.BatteryStats
      StackMap stack:
            aconst_null
            astore 5 /* fin */
        start local 5 // java.io.FileInputStream fin
         7: .line 222
            new java.io.FileInputStream
            dup
            aload 3 /* path */
            invokespecial java.io.FileInputStream.<init>:(Ljava/io/File;)V
            astore 5 /* fin */
         8: .line 223
            aload 5 /* fin */
            invokestatic com.android.internal.os.BatteryStatsHelper.readFully:(Ljava/io/FileInputStream;)[B
            astore 6 /* data */
        start local 6 // byte[] data
         9: .line 224
            invokestatic android.os.Parcel.obtain:()Landroid/os/Parcel;
            astore 7 /* parcel */
        start local 7 // android.os.Parcel parcel
        10: .line 225
            aload 7 /* parcel */
            aload 6 /* data */
            iconst_0
            aload 6 /* data */
            arraylength
            invokevirtual android.os.Parcel.unmarshall:([BII)V
        11: .line 226
            aload 7 /* parcel */
            iconst_0
            invokevirtual android.os.Parcel.setDataPosition:(I)V
        12: .line 227
            getstatic com.android.internal.os.BatteryStatsImpl.CREATOR:Landroid/os/Parcelable$Creator;
            aload 7 /* parcel */
            invokeinterface android.os.Parcelable$Creator.createFromParcel:(Landroid/os/Parcel;)Ljava/lang/Object;
            checkcast android.os.BatteryStats
            astore 9
        13: .line 231
            aload 5 /* fin */
            ifnull 17
        14: .line 233
            aload 5 /* fin */
            invokevirtual java.io.FileInputStream.close:()V
        15: .line 234
            goto 17
      StackMap locals: android.content.Context java.lang.String android.util.ArrayMap java.io.File android.os.BatteryStats java.io.FileInputStream byte[] android.os.Parcel top android.os.BatteryStats
      StackMap stack: java.io.IOException
        16: pop
        17: .line 227
      StackMap locals:
      StackMap stack:
            aload 2
            monitorexit
        18: aload 9
            areturn
        end local 7 // android.os.Parcel parcel
        end local 6 // byte[] data
        19: .line 228
      StackMap locals: android.content.Context java.lang.String android.util.ArrayMap java.io.File android.os.BatteryStats java.io.FileInputStream
      StackMap stack: java.io.IOException
            astore 6 /* e */
        start local 6 // java.io.IOException e
        20: .line 229
            getstatic com.android.internal.os.BatteryStatsHelper.TAG:Ljava/lang/String;
            ldc "Unable to read history to file"
            aload 6 /* e */
            invokestatic android.util.Log.w:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
            pop
        end local 6 // java.io.IOException e
        21: .line 231
            aload 5 /* fin */
            ifnull 31
        22: .line 233
            aload 5 /* fin */
            invokevirtual java.io.FileInputStream.close:()V
        23: .line 234
            goto 31
      StackMap locals:
      StackMap stack: java.io.IOException
        24: pop
            goto 31
        25: .line 230
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 8
        26: .line 231
            aload 5 /* fin */
            ifnull 30
        27: .line 233
            aload 5 /* fin */
            invokevirtual java.io.FileInputStream.close:()V
        28: .line 234
            goto 30
      StackMap locals: android.content.Context java.lang.String android.util.ArrayMap java.io.File android.os.BatteryStats java.io.FileInputStream top top java.lang.Throwable
      StackMap stack: java.io.IOException
        29: pop
        30: .line 237
      StackMap locals:
      StackMap stack:
            aload 8
            athrow
        end local 5 // java.io.FileInputStream fin
        end local 4 // android.os.BatteryStats stats
        end local 3 // java.io.File path
        31: .line 214
      StackMap locals: android.content.Context java.lang.String android.util.ArrayMap
      StackMap stack:
            aload 2
            monitorexit
        32: goto 35
      StackMap locals:
      StackMap stack: java.lang.Throwable
        33: aload 2
            monitorexit
        34: athrow
        35: .line 240
      StackMap locals:
      StackMap stack:
            ldc "batterystats"
            invokestatic android.os.ServiceManager.getService:(Ljava/lang/String;)Landroid/os/IBinder;
        36: .line 239
            invokestatic com.android.internal.app.IBatteryStats$Stub.asInterface:(Landroid/os/IBinder;)Lcom/android/internal/app/IBatteryStats;
            invokestatic com.android.internal.os.BatteryStatsHelper.getStats:(Lcom/android/internal/app/IBatteryStats;)Lcom/android/internal/os/BatteryStatsImpl;
            areturn
        end local 1 // java.lang.String fname
        end local 0 // android.content.Context context
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   37     0  context  Landroid/content/Context;
            0   37     1    fname  Ljava/lang/String;
            2   31     3     path  Ljava/io/File;
            3   31     4    stats  Landroid/os/BatteryStats;
            7   31     5      fin  Ljava/io/FileInputStream;
            9   19     6     data  [B
           10   19     7   parcel  Landroid/os/Parcel;
           20   21     6        e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
          14    15      16  Class java.io.IOException
           7    13      19  Class java.io.IOException
          22    23      24  Class java.io.IOException
           7    13      25  any
          19    21      25  any
          27    28      29  Class java.io.IOException
           1     5      33  any
           6    18      33  any
          19    32      33  any
          33    34      33  any
    MethodParameters:
         Name  Flags
      context  
      fname    

  public static void dropFile(android.content.Context, java.lang.String);
    descriptor: (Landroid/content/Context;Ljava/lang/String;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.content.Context context
        start local 1 // java.lang.String fname
         0: .line 244
            aload 0 /* context */
            aload 1 /* fname */
            invokestatic com.android.internal.os.BatteryStatsHelper.makeFilePath:(Landroid/content/Context;Ljava/lang/String;)Ljava/io/File;
            invokevirtual java.io.File.delete:()Z
            pop
         1: .line 245
            return
        end local 1 // java.lang.String fname
        end local 0 // android.content.Context context
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0  context  Landroid/content/Context;
            0    2     1    fname  Ljava/lang/String;
    MethodParameters:
         Name  Flags
      context  
      fname    

  private static java.io.File makeFilePath(android.content.Context, java.lang.String);
    descriptor: (Landroid/content/Context;Ljava/lang/String;)Ljava/io/File;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // android.content.Context context
        start local 1 // java.lang.String fname
         0: .line 248
            new java.io.File
            dup
            aload 0 /* context */
            invokevirtual android.content.Context.getFilesDir:()Ljava/io/File;
            aload 1 /* fname */
            invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
            areturn
        end local 1 // java.lang.String fname
        end local 0 // android.content.Context context
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  context  Landroid/content/Context;
            0    1     1    fname  Ljava/lang/String;
    MethodParameters:
         Name  Flags
      context  
      fname    

  public void clearStats();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.android.internal.os.BatteryStatsHelper this
         0: .line 253
            aload 0 /* this */
            aconst_null
            putfield com.android.internal.os.BatteryStatsHelper.mStats:Landroid/os/BatteryStats;
         1: .line 254
            return
        end local 0 // com.android.internal.os.BatteryStatsHelper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/android/internal/os/BatteryStatsHelper;

  public android.os.BatteryStats getStats();
    descriptor: ()Landroid/os/BatteryStats;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.android.internal.os.BatteryStatsHelper this
         0: .line 257
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mStats:Landroid/os/BatteryStats;
            ifnonnull 2
         1: .line 258
            aload 0 /* this */
            invokevirtual com.android.internal.os.BatteryStatsHelper.load:()V
         2: .line 260
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mStats:Landroid/os/BatteryStats;
            areturn
        end local 0 // com.android.internal.os.BatteryStatsHelper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/android/internal/os/BatteryStatsHelper;

  public android.content.Intent getBatteryBroadcast();
    descriptor: ()Landroid/content/Intent;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.android.internal.os.BatteryStatsHelper this
         0: .line 264
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mBatteryBroadcast:Landroid/content/Intent;
            ifnonnull 2
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mCollectBatteryBroadcast:Z
            ifeq 2
         1: .line 265
            aload 0 /* this */
            invokevirtual com.android.internal.os.BatteryStatsHelper.load:()V
         2: .line 267
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mBatteryBroadcast:Landroid/content/Intent;
            areturn
        end local 0 // com.android.internal.os.BatteryStatsHelper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/android/internal/os/BatteryStatsHelper;

  public com.android.internal.os.PowerProfile getPowerProfile();
    descriptor: ()Lcom/android/internal/os/PowerProfile;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.android.internal.os.BatteryStatsHelper this
         0: .line 271
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mPowerProfile:Lcom/android/internal/os/PowerProfile;
            areturn
        end local 0 // com.android.internal.os.BatteryStatsHelper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/android/internal/os/BatteryStatsHelper;

  public void create(android.os.BatteryStats);
    descriptor: (Landroid/os/BatteryStats;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.android.internal.os.BatteryStatsHelper this
        start local 1 // android.os.BatteryStats stats
         0: .line 275
            aload 0 /* this */
            new com.android.internal.os.PowerProfile
            dup
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mContext:Landroid/content/Context;
            invokespecial com.android.internal.os.PowerProfile.<init>:(Landroid/content/Context;)V
            putfield com.android.internal.os.BatteryStatsHelper.mPowerProfile:Lcom/android/internal/os/PowerProfile;
         1: .line 276
            aload 0 /* this */
            aload 1 /* stats */
            putfield com.android.internal.os.BatteryStatsHelper.mStats:Landroid/os/BatteryStats;
         2: .line 277
            return
        end local 1 // android.os.BatteryStats stats
        end local 0 // com.android.internal.os.BatteryStatsHelper this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   this  Lcom/android/internal/os/BatteryStatsHelper;
            0    3     1  stats  Landroid/os/BatteryStats;
    MethodParameters:
       Name  Flags
      stats  

  public void create(android.os.Bundle);
    descriptor: (Landroid/os/Bundle;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.android.internal.os.BatteryStatsHelper this
        start local 1 // android.os.Bundle icicle
         0: .line 280
            aload 1 /* icicle */
            ifnull 3
         1: .line 281
            aload 0 /* this */
            getstatic com.android.internal.os.BatteryStatsHelper.sStatsXfer:Landroid/os/BatteryStats;
            putfield com.android.internal.os.BatteryStatsHelper.mStats:Landroid/os/BatteryStats;
         2: .line 282
            aload 0 /* this */
            getstatic com.android.internal.os.BatteryStatsHelper.sBatteryBroadcastXfer:Landroid/content/Intent;
            putfield com.android.internal.os.BatteryStatsHelper.mBatteryBroadcast:Landroid/content/Intent;
         3: .line 284
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
         4: .line 285
            ldc "batterystats"
            invokestatic android.os.ServiceManager.getService:(Ljava/lang/String;)Landroid/os/IBinder;
         5: .line 284
            invokestatic com.android.internal.app.IBatteryStats$Stub.asInterface:(Landroid/os/IBinder;)Lcom/android/internal/app/IBatteryStats;
            putfield com.android.internal.os.BatteryStatsHelper.mBatteryInfo:Lcom/android/internal/app/IBatteryStats;
         6: .line 286
            aload 0 /* this */
            new com.android.internal.os.PowerProfile
            dup
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mContext:Landroid/content/Context;
            invokespecial com.android.internal.os.PowerProfile.<init>:(Landroid/content/Context;)V
            putfield com.android.internal.os.BatteryStatsHelper.mPowerProfile:Lcom/android/internal/os/PowerProfile;
         7: .line 287
            return
        end local 1 // android.os.Bundle icicle
        end local 0 // com.android.internal.os.BatteryStatsHelper this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    8     0    this  Lcom/android/internal/os/BatteryStatsHelper;
            0    8     1  icicle  Landroid/os/Bundle;
    MethodParameters:
        Name  Flags
      icicle  

  public void storeState();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.android.internal.os.BatteryStatsHelper this
         0: .line 290
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mStats:Landroid/os/BatteryStats;
            putstatic com.android.internal.os.BatteryStatsHelper.sStatsXfer:Landroid/os/BatteryStats;
         1: .line 291
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mBatteryBroadcast:Landroid/content/Intent;
            putstatic com.android.internal.os.BatteryStatsHelper.sBatteryBroadcastXfer:Landroid/content/Intent;
         2: .line 292
            return
        end local 0 // com.android.internal.os.BatteryStatsHelper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/android/internal/os/BatteryStatsHelper;

  public static java.lang.String makemAh(double);
    descriptor: (D)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=7, locals=3, args_size=1
        start local 0 // double power
         0: .line 295
            dload 0 /* power */
            dconst_0
            dcmpl
            ifne 1
            ldc "0"
            areturn
         1: .line 298
      StackMap locals:
      StackMap stack:
            dload 0 /* power */
            ldc 1.0E-5
            dcmpg
            ifge 4
         2: .line 299
            ldc "%.8f"
            astore 2 /* format */
        start local 2 // java.lang.String format
         3: .line 300
            goto 26
        end local 2 // java.lang.String format
      StackMap locals:
      StackMap stack:
         4: dload 0 /* power */
            ldc 1.0E-4
            dcmpg
            ifge 7
         5: .line 301
            ldc "%.7f"
            astore 2 /* format */
        start local 2 // java.lang.String format
         6: .line 302
            goto 26
        end local 2 // java.lang.String format
      StackMap locals:
      StackMap stack:
         7: dload 0 /* power */
            ldc 0.001
            dcmpg
            ifge 10
         8: .line 303
            ldc "%.6f"
            astore 2 /* format */
        start local 2 // java.lang.String format
         9: .line 304
            goto 26
        end local 2 // java.lang.String format
      StackMap locals:
      StackMap stack:
        10: dload 0 /* power */
            ldc 0.01
            dcmpg
            ifge 13
        11: .line 305
            ldc "%.5f"
            astore 2 /* format */
        start local 2 // java.lang.String format
        12: .line 306
            goto 26
        end local 2 // java.lang.String format
      StackMap locals:
      StackMap stack:
        13: dload 0 /* power */
            ldc 0.1
            dcmpg
            ifge 16
        14: .line 307
            ldc "%.4f"
            astore 2 /* format */
        start local 2 // java.lang.String format
        15: .line 308
            goto 26
        end local 2 // java.lang.String format
      StackMap locals:
      StackMap stack:
        16: dload 0 /* power */
            dconst_1
            dcmpg
            ifge 19
        17: .line 309
            ldc "%.3f"
            astore 2 /* format */
        start local 2 // java.lang.String format
        18: .line 310
            goto 26
        end local 2 // java.lang.String format
      StackMap locals:
      StackMap stack:
        19: dload 0 /* power */
            ldc 10.0
            dcmpg
            ifge 22
        20: .line 311
            ldc "%.2f"
            astore 2 /* format */
        start local 2 // java.lang.String format
        21: .line 312
            goto 26
        end local 2 // java.lang.String format
      StackMap locals:
      StackMap stack:
        22: dload 0 /* power */
            ldc 100.0
            dcmpg
            ifge 25
        23: .line 313
            ldc "%.1f"
            astore 2 /* format */
        start local 2 // java.lang.String format
        24: .line 314
            goto 26
        end local 2 // java.lang.String format
        25: .line 315
      StackMap locals:
      StackMap stack:
            ldc "%.0f"
            astore 2 /* format */
        start local 2 // java.lang.String format
        26: .line 319
      StackMap locals: java.lang.String
      StackMap stack:
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            aload 2 /* format */
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            dload 0 /* power */
            invokestatic java.lang.Double.valueOf:(D)Ljava/lang/Double;
            aastore
            invokestatic java.lang.String.format:(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            areturn
        end local 2 // java.lang.String format
        end local 0 // double power
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   27     0   power  D
            3    4     2  format  Ljava/lang/String;
            6    7     2  format  Ljava/lang/String;
            9   10     2  format  Ljava/lang/String;
           12   13     2  format  Ljava/lang/String;
           15   16     2  format  Ljava/lang/String;
           18   19     2  format  Ljava/lang/String;
           21   22     2  format  Ljava/lang/String;
           24   25     2  format  Ljava/lang/String;
           26   27     2  format  Ljava/lang/String;
    MethodParameters:
       Name  Flags
      power  

  public void refreshStats(int, int);
    descriptor: (II)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=3
        start local 0 // com.android.internal.os.BatteryStatsHelper this
        start local 1 // int statsType
        start local 2 // int asUser
         0: .line 326
            new android.util.SparseArray
            dup
            iconst_1
            invokespecial android.util.SparseArray.<init>:(I)V
            astore 3 /* users */
        start local 3 // android.util.SparseArray users
         1: .line 327
            aload 3 /* users */
            iload 2 /* asUser */
            new android.os.UserHandle
            dup
            iload 2 /* asUser */
            invokespecial android.os.UserHandle.<init>:(I)V
            invokevirtual android.util.SparseArray.put:(ILjava/lang/Object;)V
         2: .line 328
            aload 0 /* this */
            iload 1 /* statsType */
            aload 3 /* users */
            invokevirtual com.android.internal.os.BatteryStatsHelper.refreshStats:(ILandroid/util/SparseArray;)V
         3: .line 329
            return
        end local 3 // android.util.SparseArray users
        end local 2 // int asUser
        end local 1 // int statsType
        end local 0 // com.android.internal.os.BatteryStatsHelper this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    4     0       this  Lcom/android/internal/os/BatteryStatsHelper;
            0    4     1  statsType  I
            0    4     2     asUser  I
            1    4     3      users  Landroid/util/SparseArray<Landroid/os/UserHandle;>;
    MethodParameters:
           Name  Flags
      statsType  
      asUser     

  public void refreshStats(int, java.util.List<android.os.UserHandle>);
    descriptor: (ILjava/util/List;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=7, args_size=3
        start local 0 // com.android.internal.os.BatteryStatsHelper this
        start local 1 // int statsType
        start local 2 // java.util.List asUsers
         0: .line 335
            aload 2 /* asUsers */
            invokeinterface java.util.List.size:()I
            istore 3 /* n */
        start local 3 // int n
         1: .line 336
            new android.util.SparseArray
            dup
            iload 3 /* n */
            invokespecial android.util.SparseArray.<init>:(I)V
            astore 4 /* users */
        start local 4 // android.util.SparseArray users
         2: .line 337
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         3: goto 7
         4: .line 338
      StackMap locals: int android.util.SparseArray int
      StackMap stack:
            aload 2 /* asUsers */
            iload 5 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast android.os.UserHandle
            astore 6 /* userHandle */
        start local 6 // android.os.UserHandle userHandle
         5: .line 339
            aload 4 /* users */
            aload 6 /* userHandle */
            invokevirtual android.os.UserHandle.getIdentifier:()I
            aload 6 /* userHandle */
            invokevirtual android.util.SparseArray.put:(ILjava/lang/Object;)V
        end local 6 // android.os.UserHandle userHandle
         6: .line 337
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
         7: iload 5 /* i */
            iload 3 /* n */
            if_icmplt 4
        end local 5 // int i
         8: .line 341
            aload 0 /* this */
            iload 1 /* statsType */
            aload 4 /* users */
            invokevirtual com.android.internal.os.BatteryStatsHelper.refreshStats:(ILandroid/util/SparseArray;)V
         9: .line 342
            return
        end local 4 // android.util.SparseArray users
        end local 3 // int n
        end local 2 // java.util.List asUsers
        end local 1 // int statsType
        end local 0 // com.android.internal.os.BatteryStatsHelper this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   10     0        this  Lcom/android/internal/os/BatteryStatsHelper;
            0   10     1   statsType  I
            0   10     2     asUsers  Ljava/util/List<Landroid/os/UserHandle;>;
            1   10     3           n  I
            2   10     4       users  Landroid/util/SparseArray<Landroid/os/UserHandle;>;
            3    8     5           i  I
            5    6     6  userHandle  Landroid/os/UserHandle;
    Signature: (ILjava/util/List<Landroid/os/UserHandle;>;)V
    MethodParameters:
           Name  Flags
      statsType  
      asUsers    

  public void refreshStats(int, android.util.SparseArray<android.os.UserHandle>);
    descriptor: (ILandroid/util/SparseArray;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=9, locals=3, args_size=3
        start local 0 // com.android.internal.os.BatteryStatsHelper this
        start local 1 // int statsType
        start local 2 // android.util.SparseArray asUsers
         0: .line 348
            aload 0 /* this */
            iload 1 /* statsType */
            aload 2 /* asUsers */
            invokestatic android.os.SystemClock.elapsedRealtime:()J
            ldc 1000
            lmul
         1: .line 349
            invokestatic android.os.SystemClock.uptimeMillis:()J
            ldc 1000
            lmul
         2: .line 348
            invokevirtual com.android.internal.os.BatteryStatsHelper.refreshStats:(ILandroid/util/SparseArray;JJ)V
         3: .line 350
            return
        end local 2 // android.util.SparseArray asUsers
        end local 1 // int statsType
        end local 0 // com.android.internal.os.BatteryStatsHelper this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    4     0       this  Lcom/android/internal/os/BatteryStatsHelper;
            0    4     1  statsType  I
            0    4     2    asUsers  Landroid/util/SparseArray<Landroid/os/UserHandle;>;
    Signature: (ILandroid/util/SparseArray<Landroid/os/UserHandle;>;)V
    MethodParameters:
           Name  Flags
      statsType  
      asUsers    

  public void refreshStats(int, android.util.SparseArray<android.os.UserHandle>, long, );
    descriptor: (ILandroid/util/SparseArray;JJ)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=9, locals=16, args_size=5
        start local 0 // com.android.internal.os.BatteryStatsHelper this
        start local 1 // int statsType
        start local 2 // android.util.SparseArray asUsers
        start local 3 // long rawRealtimeUs
        start local 5 // long rawUptimeUs
         0: .line 355
            aload 0 /* this */
            invokevirtual com.android.internal.os.BatteryStatsHelper.getStats:()Landroid/os/BatteryStats;
            pop
         1: .line 357
            aload 0 /* this */
            dconst_0
            putfield com.android.internal.os.BatteryStatsHelper.mMaxPower:D
         2: .line 358
            aload 0 /* this */
            dconst_0
            putfield com.android.internal.os.BatteryStatsHelper.mMaxRealPower:D
         3: .line 359
            aload 0 /* this */
            dconst_0
            putfield com.android.internal.os.BatteryStatsHelper.mComputedPower:D
         4: .line 360
            aload 0 /* this */
            dconst_0
            putfield com.android.internal.os.BatteryStatsHelper.mTotalPower:D
         5: .line 362
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mUsageList:Ljava/util/List;
            invokeinterface java.util.List.clear:()V
         6: .line 363
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mWifiSippers:Ljava/util/List;
            invokeinterface java.util.List.clear:()V
         7: .line 364
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mBluetoothSippers:Ljava/util/List;
            invokeinterface java.util.List.clear:()V
         8: .line 365
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mUserSippers:Landroid/util/SparseArray;
            invokevirtual android.util.SparseArray.clear:()V
         9: .line 366
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mMobilemsppList:Ljava/util/List;
            invokeinterface java.util.List.clear:()V
        10: .line 368
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mStats:Landroid/os/BatteryStats;
            ifnonnull 12
        11: .line 369
            return
        12: .line 372
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mCpuPowerCalculator:Lcom/android/internal/os/PowerCalculator;
            ifnonnull 14
        13: .line 373
            aload 0 /* this */
            new com.android.internal.os.CpuPowerCalculator
            dup
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mPowerProfile:Lcom/android/internal/os/PowerProfile;
            invokespecial com.android.internal.os.CpuPowerCalculator.<init>:(Lcom/android/internal/os/PowerProfile;)V
            putfield com.android.internal.os.BatteryStatsHelper.mCpuPowerCalculator:Lcom/android/internal/os/PowerCalculator;
        14: .line 375
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mCpuPowerCalculator:Lcom/android/internal/os/PowerCalculator;
            invokevirtual com.android.internal.os.PowerCalculator.reset:()V
        15: .line 377
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mMemoryPowerCalculator:Lcom/android/internal/os/PowerCalculator;
            ifnonnull 17
        16: .line 378
            aload 0 /* this */
            new com.android.internal.os.MemoryPowerCalculator
            dup
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mPowerProfile:Lcom/android/internal/os/PowerProfile;
            invokespecial com.android.internal.os.MemoryPowerCalculator.<init>:(Lcom/android/internal/os/PowerProfile;)V
            putfield com.android.internal.os.BatteryStatsHelper.mMemoryPowerCalculator:Lcom/android/internal/os/PowerCalculator;
        17: .line 380
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mMemoryPowerCalculator:Lcom/android/internal/os/PowerCalculator;
            invokevirtual com.android.internal.os.PowerCalculator.reset:()V
        18: .line 382
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mWakelockPowerCalculator:Lcom/android/internal/os/PowerCalculator;
            ifnonnull 20
        19: .line 383
            aload 0 /* this */
            new com.android.internal.os.WakelockPowerCalculator
            dup
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mPowerProfile:Lcom/android/internal/os/PowerProfile;
            invokespecial com.android.internal.os.WakelockPowerCalculator.<init>:(Lcom/android/internal/os/PowerProfile;)V
            putfield com.android.internal.os.BatteryStatsHelper.mWakelockPowerCalculator:Lcom/android/internal/os/PowerCalculator;
        20: .line 385
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mWakelockPowerCalculator:Lcom/android/internal/os/PowerCalculator;
            invokevirtual com.android.internal.os.PowerCalculator.reset:()V
        21: .line 387
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mMobileRadioPowerCalculator:Lcom/android/internal/os/MobileRadioPowerCalculator;
            ifnonnull 23
        22: .line 388
            aload 0 /* this */
            new com.android.internal.os.MobileRadioPowerCalculator
            dup
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mPowerProfile:Lcom/android/internal/os/PowerProfile;
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mStats:Landroid/os/BatteryStats;
            invokespecial com.android.internal.os.MobileRadioPowerCalculator.<init>:(Lcom/android/internal/os/PowerProfile;Landroid/os/BatteryStats;)V
            putfield com.android.internal.os.BatteryStatsHelper.mMobileRadioPowerCalculator:Lcom/android/internal/os/MobileRadioPowerCalculator;
        23: .line 390
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mMobileRadioPowerCalculator:Lcom/android/internal/os/MobileRadioPowerCalculator;
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mStats:Landroid/os/BatteryStats;
            invokevirtual com.android.internal.os.MobileRadioPowerCalculator.reset:(Landroid/os/BatteryStats;)V
        24: .line 394
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mStats:Landroid/os/BatteryStats;
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mPowerProfile:Lcom/android/internal/os/PowerProfile;
            invokestatic com.android.internal.os.BatteryStatsHelper.checkHasWifiPowerReporting:(Landroid/os/BatteryStats;Lcom/android/internal/os/PowerProfile;)Z
            istore 7 /* hasWifiPowerReporting */
        start local 7 // boolean hasWifiPowerReporting
        25: .line 395
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mWifiPowerCalculator:Lcom/android/internal/os/PowerCalculator;
            ifnull 26
            iload 7 /* hasWifiPowerReporting */
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mHasWifiPowerReporting:Z
            if_icmpeq 31
        26: .line 396
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            iload 7 /* hasWifiPowerReporting */
            ifeq 28
        27: .line 397
            new com.android.internal.os.WifiPowerCalculator
            dup
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mPowerProfile:Lcom/android/internal/os/PowerProfile;
            invokespecial com.android.internal.os.WifiPowerCalculator.<init>:(Lcom/android/internal/os/PowerProfile;)V
            goto 29
        28: .line 398
      StackMap locals:
      StackMap stack: com.android.internal.os.BatteryStatsHelper
            new com.android.internal.os.WifiPowerEstimator
            dup
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mPowerProfile:Lcom/android/internal/os/PowerProfile;
            invokespecial com.android.internal.os.WifiPowerEstimator.<init>:(Lcom/android/internal/os/PowerProfile;)V
        29: .line 396
      StackMap locals: com.android.internal.os.BatteryStatsHelper int android.util.SparseArray long long int
      StackMap stack: com.android.internal.os.BatteryStatsHelper com.android.internal.os.PowerCalculator
            putfield com.android.internal.os.BatteryStatsHelper.mWifiPowerCalculator:Lcom/android/internal/os/PowerCalculator;
        30: .line 399
            aload 0 /* this */
            iload 7 /* hasWifiPowerReporting */
            putfield com.android.internal.os.BatteryStatsHelper.mHasWifiPowerReporting:Z
        31: .line 401
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mWifiPowerCalculator:Lcom/android/internal/os/PowerCalculator;
            invokevirtual com.android.internal.os.PowerCalculator.reset:()V
        32: .line 403
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mStats:Landroid/os/BatteryStats;
        33: .line 404
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mPowerProfile:Lcom/android/internal/os/PowerProfile;
        34: .line 403
            invokestatic com.android.internal.os.BatteryStatsHelper.checkHasBluetoothPowerReporting:(Landroid/os/BatteryStats;Lcom/android/internal/os/PowerProfile;)Z
            istore 8 /* hasBluetoothPowerReporting */
        start local 8 // boolean hasBluetoothPowerReporting
        35: .line 405
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mBluetoothPowerCalculator:Lcom/android/internal/os/PowerCalculator;
            ifnull 37
        36: .line 406
            iload 8 /* hasBluetoothPowerReporting */
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mHasBluetoothPowerReporting:Z
            if_icmpeq 39
        37: .line 407
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            new com.android.internal.os.BluetoothPowerCalculator
            dup
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mPowerProfile:Lcom/android/internal/os/PowerProfile;
            invokespecial com.android.internal.os.BluetoothPowerCalculator.<init>:(Lcom/android/internal/os/PowerProfile;)V
            putfield com.android.internal.os.BatteryStatsHelper.mBluetoothPowerCalculator:Lcom/android/internal/os/PowerCalculator;
        38: .line 408
            aload 0 /* this */
            iload 8 /* hasBluetoothPowerReporting */
            putfield com.android.internal.os.BatteryStatsHelper.mHasBluetoothPowerReporting:Z
        39: .line 410
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mBluetoothPowerCalculator:Lcom/android/internal/os/PowerCalculator;
            invokevirtual com.android.internal.os.PowerCalculator.reset:()V
        40: .line 412
            aload 0 /* this */
            new com.android.internal.os.SensorPowerCalculator
            dup
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mPowerProfile:Lcom/android/internal/os/PowerProfile;
        41: .line 413
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mContext:Landroid/content/Context;
            ldc "sensor"
            invokevirtual android.content.Context.getSystemService:(Ljava/lang/String;)Ljava/lang/Object;
            checkcast android.hardware.SensorManager
        42: .line 414
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mStats:Landroid/os/BatteryStats;
            lload 3 /* rawRealtimeUs */
            iload 1 /* statsType */
            invokespecial com.android.internal.os.SensorPowerCalculator.<init>:(Lcom/android/internal/os/PowerProfile;Landroid/hardware/SensorManager;Landroid/os/BatteryStats;JI)V
        43: .line 412
            putfield com.android.internal.os.BatteryStatsHelper.mSensorPowerCalculator:Lcom/android/internal/os/PowerCalculator;
        44: .line 415
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mSensorPowerCalculator:Lcom/android/internal/os/PowerCalculator;
            invokevirtual com.android.internal.os.PowerCalculator.reset:()V
        45: .line 417
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mCameraPowerCalculator:Lcom/android/internal/os/PowerCalculator;
            ifnonnull 47
        46: .line 418
            aload 0 /* this */
            new com.android.internal.os.CameraPowerCalculator
            dup
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mPowerProfile:Lcom/android/internal/os/PowerProfile;
            invokespecial com.android.internal.os.CameraPowerCalculator.<init>:(Lcom/android/internal/os/PowerProfile;)V
            putfield com.android.internal.os.BatteryStatsHelper.mCameraPowerCalculator:Lcom/android/internal/os/PowerCalculator;
        47: .line 420
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mCameraPowerCalculator:Lcom/android/internal/os/PowerCalculator;
            invokevirtual com.android.internal.os.PowerCalculator.reset:()V
        48: .line 422
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mFlashlightPowerCalculator:Lcom/android/internal/os/PowerCalculator;
            ifnonnull 50
        49: .line 423
            aload 0 /* this */
            new com.android.internal.os.FlashlightPowerCalculator
            dup
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mPowerProfile:Lcom/android/internal/os/PowerProfile;
            invokespecial com.android.internal.os.FlashlightPowerCalculator.<init>:(Lcom/android/internal/os/PowerProfile;)V
            putfield com.android.internal.os.BatteryStatsHelper.mFlashlightPowerCalculator:Lcom/android/internal/os/PowerCalculator;
        50: .line 425
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mFlashlightPowerCalculator:Lcom/android/internal/os/PowerCalculator;
            invokevirtual com.android.internal.os.PowerCalculator.reset:()V
        51: .line 427
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mMediaPowerCalculator:Lcom/android/internal/os/PowerCalculator;
            ifnonnull 53
        52: .line 428
            aload 0 /* this */
            new com.android.internal.os.MediaPowerCalculator
            dup
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mPowerProfile:Lcom/android/internal/os/PowerProfile;
            invokespecial com.android.internal.os.MediaPowerCalculator.<init>:(Lcom/android/internal/os/PowerProfile;)V
            putfield com.android.internal.os.BatteryStatsHelper.mMediaPowerCalculator:Lcom/android/internal/os/PowerCalculator;
        53: .line 430
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mMediaPowerCalculator:Lcom/android/internal/os/PowerCalculator;
            invokevirtual com.android.internal.os.PowerCalculator.reset:()V
        54: .line 432
            aload 0 /* this */
            iload 1 /* statsType */
            putfield com.android.internal.os.BatteryStatsHelper.mStatsType:I
        55: .line 433
            aload 0 /* this */
            lload 5 /* rawUptimeUs */
            putfield com.android.internal.os.BatteryStatsHelper.mRawUptimeUs:J
        56: .line 434
            aload 0 /* this */
            lload 3 /* rawRealtimeUs */
            putfield com.android.internal.os.BatteryStatsHelper.mRawRealtimeUs:J
        57: .line 435
            aload 0 /* this */
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mStats:Landroid/os/BatteryStats;
            lload 5 /* rawUptimeUs */
            invokevirtual android.os.BatteryStats.getBatteryUptime:(J)J
            putfield com.android.internal.os.BatteryStatsHelper.mBatteryUptimeUs:J
        58: .line 436
            aload 0 /* this */
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mStats:Landroid/os/BatteryStats;
            lload 3 /* rawRealtimeUs */
            invokevirtual android.os.BatteryStats.getBatteryRealtime:(J)J
            putfield com.android.internal.os.BatteryStatsHelper.mBatteryRealtimeUs:J
        59: .line 437
            aload 0 /* this */
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mStats:Landroid/os/BatteryStats;
            lload 5 /* rawUptimeUs */
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mStatsType:I
            invokevirtual android.os.BatteryStats.computeBatteryUptime:(JI)J
            putfield com.android.internal.os.BatteryStatsHelper.mTypeBatteryUptimeUs:J
        60: .line 438
            aload 0 /* this */
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mStats:Landroid/os/BatteryStats;
            lload 3 /* rawRealtimeUs */
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mStatsType:I
            invokevirtual android.os.BatteryStats.computeBatteryRealtime:(JI)J
            putfield com.android.internal.os.BatteryStatsHelper.mTypeBatteryRealtimeUs:J
        61: .line 439
            aload 0 /* this */
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mStats:Landroid/os/BatteryStats;
            lload 3 /* rawRealtimeUs */
            invokevirtual android.os.BatteryStats.computeBatteryTimeRemaining:(J)J
            putfield com.android.internal.os.BatteryStatsHelper.mBatteryTimeRemainingUs:J
        62: .line 440
            aload 0 /* this */
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mStats:Landroid/os/BatteryStats;
            lload 3 /* rawRealtimeUs */
            invokevirtual android.os.BatteryStats.computeChargeTimeRemaining:(J)J
            putfield com.android.internal.os.BatteryStatsHelper.mChargeTimeRemainingUs:J
        63: .line 450
            aload 0 /* this */
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mStats:Landroid/os/BatteryStats;
            invokevirtual android.os.BatteryStats.getLowDischargeAmountSinceCharge:()I
            i2d
        64: .line 451
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mPowerProfile:Lcom/android/internal/os/PowerProfile;
            invokevirtual com.android.internal.os.PowerProfile.getBatteryCapacity:()D
            dmul
            ldc 100.0
            ddiv
        65: .line 450
            putfield com.android.internal.os.BatteryStatsHelper.mMinDrainedPower:D
        66: .line 452
            aload 0 /* this */
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mStats:Landroid/os/BatteryStats;
            invokevirtual android.os.BatteryStats.getHighDischargeAmountSinceCharge:()I
            i2d
        67: .line 453
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mPowerProfile:Lcom/android/internal/os/PowerProfile;
            invokevirtual com.android.internal.os.PowerProfile.getBatteryCapacity:()D
            dmul
            ldc 100.0
            ddiv
        68: .line 452
            putfield com.android.internal.os.BatteryStatsHelper.mMaxDrainedPower:D
        69: .line 455
            aload 0 /* this */
            aload 2 /* asUsers */
            invokevirtual com.android.internal.os.BatteryStatsHelper.processAppUsage:(Landroid/util/SparseArray;)V
        70: .line 458
            iconst_0
            istore 9 /* i */
        start local 9 // int i
        71: goto 77
        72: .line 459
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mUsageList:Ljava/util/List;
            iload 9 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast com.android.internal.os.BatterySipper
            astore 10 /* bs */
        start local 10 // com.android.internal.os.BatterySipper bs
        73: .line 460
            aload 10 /* bs */
            invokevirtual com.android.internal.os.BatterySipper.computeMobilemspp:()V
        74: .line 461
            aload 10 /* bs */
            getfield com.android.internal.os.BatterySipper.mobilemspp:D
            dconst_0
            dcmpl
            ifeq 76
        75: .line 462
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mMobilemsppList:Ljava/util/List;
            aload 10 /* bs */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 10 // com.android.internal.os.BatterySipper bs
        76: .line 458
      StackMap locals:
      StackMap stack:
            iinc 9 /* i */ 1
      StackMap locals:
      StackMap stack:
        77: iload 9 /* i */
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mUsageList:Ljava/util/List;
            invokeinterface java.util.List.size:()I
            if_icmplt 72
        end local 9 // int i
        78: .line 466
            iconst_0
            istore 9 /* i */
        start local 9 // int i
        79: goto 90
        80: .line 467
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mUserSippers:Landroid/util/SparseArray;
            iload 9 /* i */
            invokevirtual android.util.SparseArray.valueAt:(I)Ljava/lang/Object;
            checkcast java.util.List
            astore 10 /* user */
        start local 10 // java.util.List user
        81: .line 468
            iconst_0
            istore 11 /* j */
        start local 11 // int j
        82: goto 88
        83: .line 469
      StackMap locals: java.util.List int
      StackMap stack:
            aload 10 /* user */
            iload 11 /* j */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast com.android.internal.os.BatterySipper
            astore 12 /* bs */
        start local 12 // com.android.internal.os.BatterySipper bs
        84: .line 470
            aload 12 /* bs */
            invokevirtual com.android.internal.os.BatterySipper.computeMobilemspp:()V
        85: .line 471
            aload 12 /* bs */
            getfield com.android.internal.os.BatterySipper.mobilemspp:D
            dconst_0
            dcmpl
            ifeq 87
        86: .line 472
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mMobilemsppList:Ljava/util/List;
            aload 12 /* bs */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 12 // com.android.internal.os.BatterySipper bs
        87: .line 468
      StackMap locals:
      StackMap stack:
            iinc 11 /* j */ 1
      StackMap locals:
      StackMap stack:
        88: iload 11 /* j */
            aload 10 /* user */
            invokeinterface java.util.List.size:()I
            if_icmplt 83
        end local 11 // int j
        end local 10 // java.util.List user
        89: .line 466
            iinc 9 /* i */ 1
      StackMap locals:
      StackMap stack:
        90: iload 9 /* i */
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mUserSippers:Landroid/util/SparseArray;
            invokevirtual android.util.SparseArray.size:()I
            if_icmplt 80
        end local 9 // int i
        91: .line 476
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mMobilemsppList:Ljava/util/List;
            new com.android.internal.os.BatteryStatsHelper$1
            dup
            aload 0 /* this */
            invokespecial com.android.internal.os.BatteryStatsHelper$1.<init>:(Lcom/android/internal/os/BatteryStatsHelper;)V
            invokestatic java.util.Collections.sort:(Ljava/util/List;Ljava/util/Comparator;)V
        92: .line 483
            aload 0 /* this */
            invokevirtual com.android.internal.os.BatteryStatsHelper.processMiscUsage:()V
        93: .line 485
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mUsageList:Ljava/util/List;
            invokestatic java.util.Collections.sort:(Ljava/util/List;)V
        94: .line 489
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mUsageList:Ljava/util/List;
            invokeinterface java.util.List.isEmpty:()Z
            ifne 102
        95: .line 490
            aload 0 /* this */
            aload 0 /* this */
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mUsageList:Ljava/util/List;
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast com.android.internal.os.BatterySipper
            getfield com.android.internal.os.BatterySipper.totalPowerMah:D
            dup2_x1
            putfield com.android.internal.os.BatteryStatsHelper.mMaxPower:D
            putfield com.android.internal.os.BatteryStatsHelper.mMaxRealPower:D
        96: .line 491
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mUsageList:Ljava/util/List;
            invokeinterface java.util.List.size:()I
            istore 9 /* usageListCount */
        start local 9 // int usageListCount
        97: .line 492
            iconst_0
            istore 10 /* i */
        start local 10 // int i
        98: goto 101
        99: .line 493
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            dup
            getfield com.android.internal.os.BatteryStatsHelper.mComputedPower:D
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mUsageList:Ljava/util/List;
            iload 10 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast com.android.internal.os.BatterySipper
            getfield com.android.internal.os.BatterySipper.totalPowerMah:D
            dadd
            putfield com.android.internal.os.BatteryStatsHelper.mComputedPower:D
       100: .line 492
            iinc 10 /* i */ 1
      StackMap locals:
      StackMap stack:
       101: iload 10 /* i */
            iload 9 /* usageListCount */
            if_icmplt 99
        end local 10 // int i
        end local 9 // int usageListCount
       102: .line 502
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mComputedPower:D
            putfield com.android.internal.os.BatteryStatsHelper.mTotalPower:D
       103: .line 503
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mStats:Landroid/os/BatteryStats;
            invokevirtual android.os.BatteryStats.getLowDischargeAmountSinceCharge:()I
            iconst_1
            if_icmple 122
       104: .line 504
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mMinDrainedPower:D
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mComputedPower:D
            dcmpl
            ifle 114
       105: .line 505
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mMinDrainedPower:D
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mComputedPower:D
            dsub
            dstore 9 /* amount */
        start local 9 // double amount
       106: .line 506
            aload 0 /* this */
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mMinDrainedPower:D
            putfield com.android.internal.os.BatteryStatsHelper.mTotalPower:D
       107: .line 507
            new com.android.internal.os.BatterySipper
            dup
            getstatic com.android.internal.os.BatterySipper$DrainType.UNACCOUNTED:Lcom/android/internal/os/BatterySipper$DrainType;
            aconst_null
            dload 9 /* amount */
            invokespecial com.android.internal.os.BatterySipper.<init>:(Lcom/android/internal/os/BatterySipper$DrainType;Landroid/os/BatteryStats$Uid;D)V
            astore 11 /* bs */
        start local 11 // com.android.internal.os.BatterySipper bs
       108: .line 510
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mUsageList:Ljava/util/List;
            aload 11 /* bs */
            invokestatic java.util.Collections.binarySearch:(Ljava/util/List;Ljava/lang/Object;)I
            istore 12 /* index */
        start local 12 // int index
       109: .line 511
            iload 12 /* index */
            ifge 111
       110: .line 512
            iload 12 /* index */
            iconst_1
            iadd
            ineg
            istore 12 /* index */
       111: .line 514
      StackMap locals: double com.android.internal.os.BatterySipper int
      StackMap stack:
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mUsageList:Ljava/util/List;
            iload 12 /* index */
            aload 11 /* bs */
            invokeinterface java.util.List.add:(ILjava/lang/Object;)V
       112: .line 515
            aload 0 /* this */
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mMaxPower:D
            dload 9 /* amount */
            invokestatic java.lang.Math.max:(DD)D
            putfield com.android.internal.os.BatteryStatsHelper.mMaxPower:D
        end local 12 // int index
        end local 11 // com.android.internal.os.BatterySipper bs
        end local 9 // double amount
       113: .line 516
            goto 122
      StackMap locals:
      StackMap stack:
       114: aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mMaxDrainedPower:D
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mComputedPower:D
            dcmpg
            ifge 122
       115: .line 517
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mComputedPower:D
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mMaxDrainedPower:D
            dsub
            dstore 9 /* amount */
        start local 9 // double amount
       116: .line 520
            new com.android.internal.os.BatterySipper
            dup
            getstatic com.android.internal.os.BatterySipper$DrainType.OVERCOUNTED:Lcom/android/internal/os/BatterySipper$DrainType;
            aconst_null
            dload 9 /* amount */
            invokespecial com.android.internal.os.BatterySipper.<init>:(Lcom/android/internal/os/BatterySipper$DrainType;Landroid/os/BatteryStats$Uid;D)V
            astore 11 /* bs */
        start local 11 // com.android.internal.os.BatterySipper bs
       117: .line 521
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mUsageList:Ljava/util/List;
            aload 11 /* bs */
            invokestatic java.util.Collections.binarySearch:(Ljava/util/List;Ljava/lang/Object;)I
            istore 12 /* index */
        start local 12 // int index
       118: .line 522
            iload 12 /* index */
            ifge 120
       119: .line 523
            iload 12 /* index */
            iconst_1
            iadd
            ineg
            istore 12 /* index */
       120: .line 525
      StackMap locals: double com.android.internal.os.BatterySipper int
      StackMap stack:
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mUsageList:Ljava/util/List;
            iload 12 /* index */
            aload 11 /* bs */
            invokeinterface java.util.List.add:(ILjava/lang/Object;)V
       121: .line 526
            aload 0 /* this */
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mMaxPower:D
            dload 9 /* amount */
            invokestatic java.lang.Math.max:(DD)D
            putfield com.android.internal.os.BatteryStatsHelper.mMaxPower:D
        end local 12 // int index
        end local 11 // com.android.internal.os.BatterySipper bs
        end local 9 // double amount
       122: .line 531
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mUsageList:Ljava/util/List;
            invokevirtual com.android.internal.os.BatteryStatsHelper.removeHiddenBatterySippers:(Ljava/util/List;)D
            dstore 9 /* hiddenPowerMah */
        start local 9 // double hiddenPowerMah
       123: .line 532
            aload 0 /* this */
            invokevirtual com.android.internal.os.BatteryStatsHelper.getTotalPower:()D
            dload 9 /* hiddenPowerMah */
            dsub
            dstore 11 /* totalRemainingPower */
        start local 11 // double totalRemainingPower
       124: .line 533
            dload 11 /* totalRemainingPower */
            invokestatic java.lang.Math.abs:(D)D
            ldc 0.001
            dcmpl
            ifle 138
       125: .line 534
            iconst_0
            istore 13 /* i */
        start local 13 // int i
       126: aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mUsageList:Ljava/util/List;
            invokeinterface java.util.List.size:()I
            istore 14 /* size */
        start local 14 // int size
       127: goto 137
       128: .line 535
      StackMap locals: com.android.internal.os.BatteryStatsHelper int android.util.SparseArray long long int int double double int int
      StackMap stack:
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mUsageList:Ljava/util/List;
            iload 13 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast com.android.internal.os.BatterySipper
            astore 15 /* sipper */
        start local 15 // com.android.internal.os.BatterySipper sipper
       129: .line 536
            aload 15 /* sipper */
            getfield com.android.internal.os.BatterySipper.shouldHide:Z
            ifne 136
       130: .line 537
            aload 15 /* sipper */
            dload 9 /* hiddenPowerMah */
       131: .line 538
            aload 15 /* sipper */
            getfield com.android.internal.os.BatterySipper.totalPowerMah:D
            aload 15 /* sipper */
            getfield com.android.internal.os.BatterySipper.screenPowerMah:D
            dadd
       132: .line 539
            dload 11 /* totalRemainingPower */
       133: .line 538
            ddiv
            dmul
       134: .line 537
            putfield com.android.internal.os.BatterySipper.proportionalSmearMah:D
       135: .line 540
            aload 15 /* sipper */
            invokevirtual com.android.internal.os.BatterySipper.sumPower:()D
            pop2
        end local 15 // com.android.internal.os.BatterySipper sipper
       136: .line 534
      StackMap locals:
      StackMap stack:
            iinc 13 /* i */ 1
      StackMap locals:
      StackMap stack:
       137: iload 13 /* i */
            iload 14 /* size */
            if_icmplt 128
        end local 14 // int size
        end local 13 // int i
       138: .line 544
      StackMap locals:
      StackMap stack:
            return
        end local 11 // double totalRemainingPower
        end local 9 // double hiddenPowerMah
        end local 8 // boolean hasBluetoothPowerReporting
        end local 7 // boolean hasWifiPowerReporting
        end local 5 // long rawUptimeUs
        end local 3 // long rawRealtimeUs
        end local 2 // android.util.SparseArray asUsers
        end local 1 // int statsType
        end local 0 // com.android.internal.os.BatteryStatsHelper this
      LocalVariableTable:
        Start  End  Slot                        Name  Signature
            0  139     0                        this  Lcom/android/internal/os/BatteryStatsHelper;
            0  139     1                   statsType  I
            0  139     2                     asUsers  Landroid/util/SparseArray<Landroid/os/UserHandle;>;
            0  139     3               rawRealtimeUs  J
            0  139     5                 rawUptimeUs  J
           25  139     7       hasWifiPowerReporting  Z
           35  139     8  hasBluetoothPowerReporting  Z
           71   78     9                           i  I
           73   76    10                          bs  Lcom/android/internal/os/BatterySipper;
           79   91     9                           i  I
           81   89    10                        user  Ljava/util/List<Lcom/android/internal/os/BatterySipper;>;
           82   89    11                           j  I
           84   87    12                          bs  Lcom/android/internal/os/BatterySipper;
           97  102     9              usageListCount  I
           98  102    10                           i  I
          106  113     9                      amount  D
          108  113    11                          bs  Lcom/android/internal/os/BatterySipper;
          109  113    12                       index  I
          116  122     9                      amount  D
          117  122    11                          bs  Lcom/android/internal/os/BatterySipper;
          118  122    12                       index  I
          123  139     9              hiddenPowerMah  D
          124  139    11         totalRemainingPower  D
          126  138    13                           i  I
          127  138    14                        size  I
          129  136    15                      sipper  Lcom/android/internal/os/BatterySipper;
    Signature: (ILandroid/util/SparseArray<Landroid/os/UserHandle;>;JJ)V
    MethodParameters:
               Name  Flags
      statsType      
      asUsers        
      rawRealtimeUs  
      rawUptimeUs    

  private void processAppUsage(android.util.SparseArray<android.os.UserHandle>);
    descriptor: (Landroid/util/SparseArray;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=8, locals=14, args_size=2
        start local 0 // com.android.internal.os.BatteryStatsHelper this
        start local 1 // android.util.SparseArray asUsers
         0: .line 547
            aload 1 /* asUsers */
            iconst_m1
            invokevirtual android.util.SparseArray.get:(I)Ljava/lang/Object;
            ifnull 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: istore 2 /* forAllUsers */
        start local 2 // boolean forAllUsers
         3: .line 548
            aload 0 /* this */
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mTypeBatteryRealtimeUs:J
            putfield com.android.internal.os.BatteryStatsHelper.mStatsPeriod:J
         4: .line 550
            aconst_null
            astore 3 /* osSipper */
        start local 3 // com.android.internal.os.BatterySipper osSipper
         5: .line 551
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mStats:Landroid/os/BatteryStats;
            invokevirtual android.os.BatteryStats.getUidStats:()Landroid/util/SparseArray;
            astore 4 /* uidStats */
        start local 4 // android.util.SparseArray uidStats
         6: .line 552
            aload 4 /* uidStats */
            invokevirtual android.util.SparseArray.size:()I
            istore 5 /* NU */
        start local 5 // int NU
         7: .line 553
            iconst_0
            istore 6 /* iu */
        start local 6 // int iu
         8: goto 48
         9: .line 554
      StackMap locals: com.android.internal.os.BatteryStatsHelper android.util.SparseArray int com.android.internal.os.BatterySipper android.util.SparseArray int int
      StackMap stack:
            aload 4 /* uidStats */
            iload 6 /* iu */
            invokevirtual android.util.SparseArray.valueAt:(I)Ljava/lang/Object;
            checkcast android.os.BatteryStats$Uid
            astore 7 /* u */
        start local 7 // android.os.BatteryStats$Uid u
        10: .line 555
            new com.android.internal.os.BatterySipper
            dup
            getstatic com.android.internal.os.BatterySipper$DrainType.APP:Lcom/android/internal/os/BatterySipper$DrainType;
            aload 7 /* u */
            dconst_0
            invokespecial com.android.internal.os.BatterySipper.<init>:(Lcom/android/internal/os/BatterySipper$DrainType;Landroid/os/BatteryStats$Uid;D)V
            astore 8 /* app */
        start local 8 // com.android.internal.os.BatterySipper app
        11: .line 557
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mCpuPowerCalculator:Lcom/android/internal/os/PowerCalculator;
            aload 8 /* app */
            aload 7 /* u */
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mRawRealtimeUs:J
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mRawUptimeUs:J
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mStatsType:I
            invokevirtual com.android.internal.os.PowerCalculator.calculateApp:(Lcom/android/internal/os/BatterySipper;Landroid/os/BatteryStats$Uid;JJI)V
        12: .line 558
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mWakelockPowerCalculator:Lcom/android/internal/os/PowerCalculator;
            aload 8 /* app */
            aload 7 /* u */
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mRawRealtimeUs:J
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mRawUptimeUs:J
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mStatsType:I
            invokevirtual com.android.internal.os.PowerCalculator.calculateApp:(Lcom/android/internal/os/BatterySipper;Landroid/os/BatteryStats$Uid;JJI)V
        13: .line 559
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mMobileRadioPowerCalculator:Lcom/android/internal/os/MobileRadioPowerCalculator;
            aload 8 /* app */
            aload 7 /* u */
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mRawRealtimeUs:J
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mRawUptimeUs:J
        14: .line 560
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mStatsType:I
        15: .line 559
            invokevirtual com.android.internal.os.MobileRadioPowerCalculator.calculateApp:(Lcom/android/internal/os/BatterySipper;Landroid/os/BatteryStats$Uid;JJI)V
        16: .line 561
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mWifiPowerCalculator:Lcom/android/internal/os/PowerCalculator;
            aload 8 /* app */
            aload 7 /* u */
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mRawRealtimeUs:J
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mRawUptimeUs:J
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mStatsType:I
            invokevirtual com.android.internal.os.PowerCalculator.calculateApp:(Lcom/android/internal/os/BatterySipper;Landroid/os/BatteryStats$Uid;JJI)V
        17: .line 562
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mBluetoothPowerCalculator:Lcom/android/internal/os/PowerCalculator;
            aload 8 /* app */
            aload 7 /* u */
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mRawRealtimeUs:J
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mRawUptimeUs:J
        18: .line 563
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mStatsType:I
        19: .line 562
            invokevirtual com.android.internal.os.PowerCalculator.calculateApp:(Lcom/android/internal/os/BatterySipper;Landroid/os/BatteryStats$Uid;JJI)V
        20: .line 564
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mSensorPowerCalculator:Lcom/android/internal/os/PowerCalculator;
            aload 8 /* app */
            aload 7 /* u */
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mRawRealtimeUs:J
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mRawUptimeUs:J
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mStatsType:I
            invokevirtual com.android.internal.os.PowerCalculator.calculateApp:(Lcom/android/internal/os/BatterySipper;Landroid/os/BatteryStats$Uid;JJI)V
        21: .line 565
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mCameraPowerCalculator:Lcom/android/internal/os/PowerCalculator;
            aload 8 /* app */
            aload 7 /* u */
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mRawRealtimeUs:J
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mRawUptimeUs:J
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mStatsType:I
            invokevirtual com.android.internal.os.PowerCalculator.calculateApp:(Lcom/android/internal/os/BatterySipper;Landroid/os/BatteryStats$Uid;JJI)V
        22: .line 566
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mFlashlightPowerCalculator:Lcom/android/internal/os/PowerCalculator;
            aload 8 /* app */
            aload 7 /* u */
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mRawRealtimeUs:J
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mRawUptimeUs:J
        23: .line 567
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mStatsType:I
        24: .line 566
            invokevirtual com.android.internal.os.PowerCalculator.calculateApp:(Lcom/android/internal/os/BatterySipper;Landroid/os/BatteryStats$Uid;JJI)V
        25: .line 568
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mMediaPowerCalculator:Lcom/android/internal/os/PowerCalculator;
            aload 8 /* app */
            aload 7 /* u */
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mRawRealtimeUs:J
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mRawUptimeUs:J
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mStatsType:I
            invokevirtual com.android.internal.os.PowerCalculator.calculateApp:(Lcom/android/internal/os/BatterySipper;Landroid/os/BatteryStats$Uid;JJI)V
        26: .line 570
            aload 8 /* app */
            invokevirtual com.android.internal.os.BatterySipper.sumPower:()D
            dstore 9 /* totalPower */
        start local 9 // double totalPower
        27: .line 577
            dload 9 /* totalPower */
            dconst_0
            dcmpl
            ifne 28
            aload 7 /* u */
            invokevirtual android.os.BatteryStats$Uid.getUid:()I
            ifne 47
        28: .line 581
      StackMap locals: android.os.BatteryStats$Uid com.android.internal.os.BatterySipper double
      StackMap stack:
            aload 8 /* app */
            invokevirtual com.android.internal.os.BatterySipper.getUid:()I
            istore 11 /* uid */
        start local 11 // int uid
        29: .line 582
            iload 11 /* uid */
            invokestatic android.os.UserHandle.getUserId:(I)I
            istore 12 /* userId */
        start local 12 // int userId
        30: .line 583
            iload 11 /* uid */
            sipush 1010
            if_icmpne 33
        31: .line 584
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mWifiSippers:Ljava/util/List;
            aload 8 /* app */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        32: .line 585
            goto 45
      StackMap locals: int int
      StackMap stack:
        33: iload 11 /* uid */
            sipush 1002
            if_icmpne 36
        34: .line 586
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mBluetoothSippers:Ljava/util/List;
            aload 8 /* app */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        35: .line 587
            goto 45
      StackMap locals:
      StackMap stack:
        36: iload 2 /* forAllUsers */
            ifne 44
            aload 1 /* asUsers */
            iload 12 /* userId */
            invokevirtual android.util.SparseArray.get:(I)Ljava/lang/Object;
            ifnonnull 44
        37: .line 588
            iload 11 /* uid */
            invokestatic android.os.UserHandle.getAppId:(I)I
            sipush 10000
            if_icmplt 44
        38: .line 590
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mUserSippers:Landroid/util/SparseArray;
            iload 12 /* userId */
            invokevirtual android.util.SparseArray.get:(I)Ljava/lang/Object;
            checkcast java.util.List
            astore 13 /* list */
        start local 13 // java.util.List list
        39: .line 591
            aload 13 /* list */
            ifnonnull 42
        40: .line 592
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 13 /* list */
        41: .line 593
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mUserSippers:Landroid/util/SparseArray;
            iload 12 /* userId */
            aload 13 /* list */
            invokevirtual android.util.SparseArray.put:(ILjava/lang/Object;)V
        42: .line 595
      StackMap locals: java.util.List
      StackMap stack:
            aload 13 /* list */
            aload 8 /* app */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 13 // java.util.List list
        43: .line 596
            goto 45
        44: .line 597
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mUsageList:Ljava/util/List;
            aload 8 /* app */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        45: .line 600
      StackMap locals:
      StackMap stack:
            iload 11 /* uid */
            ifne 47
        46: .line 601
            aload 8 /* app */
            astore 3 /* osSipper */
        end local 12 // int userId
        end local 11 // int uid
        end local 9 // double totalPower
        end local 8 // com.android.internal.os.BatterySipper app
        end local 7 // android.os.BatteryStats$Uid u
        47: .line 553
      StackMap locals: com.android.internal.os.BatteryStatsHelper android.util.SparseArray int com.android.internal.os.BatterySipper android.util.SparseArray int int
      StackMap stack:
            iinc 6 /* iu */ 1
      StackMap locals:
      StackMap stack:
        48: iload 6 /* iu */
            iload 5 /* NU */
            if_icmplt 9
        end local 6 // int iu
        49: .line 606
            aload 3 /* osSipper */
            ifnull 54
        50: .line 610
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mWakelockPowerCalculator:Lcom/android/internal/os/PowerCalculator;
            aload 3 /* osSipper */
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mStats:Landroid/os/BatteryStats;
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mRawRealtimeUs:J
        51: .line 611
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mRawUptimeUs:J
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mStatsType:I
        52: .line 610
            invokevirtual com.android.internal.os.PowerCalculator.calculateRemaining:(Lcom/android/internal/os/BatterySipper;Landroid/os/BatteryStats;JJI)V
        53: .line 612
            aload 3 /* osSipper */
            invokevirtual com.android.internal.os.BatterySipper.sumPower:()D
            pop2
        54: .line 614
      StackMap locals:
      StackMap stack:
            return
        end local 5 // int NU
        end local 4 // android.util.SparseArray uidStats
        end local 3 // com.android.internal.os.BatterySipper osSipper
        end local 2 // boolean forAllUsers
        end local 1 // android.util.SparseArray asUsers
        end local 0 // com.android.internal.os.BatteryStatsHelper this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   55     0         this  Lcom/android/internal/os/BatteryStatsHelper;
            0   55     1      asUsers  Landroid/util/SparseArray<Landroid/os/UserHandle;>;
            3   55     2  forAllUsers  Z
            5   55     3     osSipper  Lcom/android/internal/os/BatterySipper;
            6   55     4     uidStats  Landroid/util/SparseArray<+Landroid/os/BatteryStats$Uid;>;
            7   55     5           NU  I
            8   49     6           iu  I
           10   47     7            u  Landroid/os/BatteryStats$Uid;
           11   47     8          app  Lcom/android/internal/os/BatterySipper;
           27   47     9   totalPower  D
           29   47    11          uid  I
           30   47    12       userId  I
           39   43    13         list  Ljava/util/List<Lcom/android/internal/os/BatterySipper;>;
    Signature: (Landroid/util/SparseArray<Landroid/os/UserHandle;>;)V
    MethodParameters:
         Name  Flags
      asUsers  

  private void addPhoneUsage();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=5, args_size=1
        start local 0 // com.android.internal.os.BatteryStatsHelper this
         0: .line 617
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mStats:Landroid/os/BatteryStats;
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mRawRealtimeUs:J
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mStatsType:I
            invokevirtual android.os.BatteryStats.getPhoneOnTime:(JI)J
            ldc 1000
            ldiv
            lstore 1 /* phoneOnTimeMs */
        start local 1 // long phoneOnTimeMs
         1: .line 618
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mPowerProfile:Lcom/android/internal/os/PowerProfile;
            ldc "radio.active"
            invokevirtual com.android.internal.os.PowerProfile.getAveragePower:(Ljava/lang/String;)D
         2: .line 619
            lload 1 /* phoneOnTimeMs */
            l2d
         3: .line 618
            dmul
         4: .line 619
            ldc 3600000.0
         5: .line 618
            ddiv
            dstore 3 /* phoneOnPower */
        start local 3 // double phoneOnPower
         6: .line 620
            dload 3 /* phoneOnPower */
            dconst_0
            dcmpl
            ifeq 8
         7: .line 621
            aload 0 /* this */
            getstatic com.android.internal.os.BatterySipper$DrainType.PHONE:Lcom/android/internal/os/BatterySipper$DrainType;
            lload 1 /* phoneOnTimeMs */
            dload 3 /* phoneOnPower */
            invokevirtual com.android.internal.os.BatteryStatsHelper.addEntry:(Lcom/android/internal/os/BatterySipper$DrainType;JD)Lcom/android/internal/os/BatterySipper;
            pop
         8: .line 623
      StackMap locals: long double
      StackMap stack:
            return
        end local 3 // double phoneOnPower
        end local 1 // long phoneOnTimeMs
        end local 0 // com.android.internal.os.BatteryStatsHelper this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    9     0           this  Lcom/android/internal/os/BatteryStatsHelper;
            1    9     1  phoneOnTimeMs  J
            6    9     3   phoneOnPower  D

  private void addScreenUsage();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=14, args_size=1
        start local 0 // com.android.internal.os.BatteryStatsHelper this
         0: .line 629
            dconst_0
            dstore 1 /* power */
        start local 1 // double power
         1: .line 630
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mStats:Landroid/os/BatteryStats;
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mRawRealtimeUs:J
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mStatsType:I
            invokevirtual android.os.BatteryStats.getScreenOnTime:(JI)J
            ldc 1000
            ldiv
            lstore 3 /* screenOnTimeMs */
        start local 3 // long screenOnTimeMs
         2: .line 631
            dload 1 /* power */
            lload 3 /* screenOnTimeMs */
            l2d
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mPowerProfile:Lcom/android/internal/os/PowerProfile;
            ldc "screen.on"
            invokevirtual com.android.internal.os.PowerProfile.getAveragePower:(Ljava/lang/String;)D
            dmul
            dadd
            dstore 1 /* power */
         3: .line 633
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mPowerProfile:Lcom/android/internal/os/PowerProfile;
            ldc "screen.full"
            invokevirtual com.android.internal.os.PowerProfile.getAveragePower:(Ljava/lang/String;)D
         4: .line 632
            dstore 5 /* screenFullPower */
        start local 5 // double screenFullPower
         5: .line 634
            iconst_0
            istore 7 /* i */
        start local 7 // int i
         6: goto 16
         7: .line 635
      StackMap locals: com.android.internal.os.BatteryStatsHelper double long double int
      StackMap stack:
            dload 5 /* screenFullPower */
            iload 7 /* i */
            i2f
            ldc 0.5
            fadd
            f2d
            dmul
         8: .line 636
            ldc 5.0
         9: .line 635
            ddiv
            dstore 8 /* screenBinPower */
        start local 8 // double screenBinPower
        10: .line 637
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mStats:Landroid/os/BatteryStats;
            iload 7 /* i */
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mRawRealtimeUs:J
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mStatsType:I
            invokevirtual android.os.BatteryStats.getScreenBrightnessTime:(IJI)J
        11: .line 638
            ldc 1000
        12: .line 637
            ldiv
            lstore 10 /* brightnessTime */
        start local 10 // long brightnessTime
        13: .line 639
            dload 8 /* screenBinPower */
            lload 10 /* brightnessTime */
            l2d
            dmul
            dstore 12 /* p */
        start local 12 // double p
        14: .line 644
            dload 1 /* power */
            dload 12 /* p */
            dadd
            dstore 1 /* power */
        end local 12 // double p
        end local 10 // long brightnessTime
        end local 8 // double screenBinPower
        15: .line 634
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
        16: iload 7 /* i */
            iconst_5
            if_icmplt 7
        end local 7 // int i
        17: .line 646
            dload 1 /* power */
            ldc 3600000.0
            ddiv
            dstore 1 /* power */
        18: .line 647
            dload 1 /* power */
            dconst_0
            dcmpl
            ifeq 20
        19: .line 648
            aload 0 /* this */
            getstatic com.android.internal.os.BatterySipper$DrainType.SCREEN:Lcom/android/internal/os/BatterySipper$DrainType;
            lload 3 /* screenOnTimeMs */
            dload 1 /* power */
            invokevirtual com.android.internal.os.BatteryStatsHelper.addEntry:(Lcom/android/internal/os/BatterySipper$DrainType;JD)Lcom/android/internal/os/BatterySipper;
            pop
        20: .line 650
      StackMap locals:
      StackMap stack:
            return
        end local 5 // double screenFullPower
        end local 3 // long screenOnTimeMs
        end local 1 // double power
        end local 0 // com.android.internal.os.BatteryStatsHelper this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   21     0             this  Lcom/android/internal/os/BatteryStatsHelper;
            1   21     1            power  D
            2   21     3   screenOnTimeMs  J
            5   21     5  screenFullPower  D
            6   17     7                i  I
           10   15     8   screenBinPower  D
           13   15    10   brightnessTime  J
           14   15    12                p  D

  private void addAmbientDisplayUsage();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=5, args_size=1
        start local 0 // com.android.internal.os.BatteryStatsHelper this
         0: .line 659
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mStats:Landroid/os/BatteryStats;
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mRawRealtimeUs:J
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mStatsType:I
            invokevirtual android.os.BatteryStats.getScreenDozeTime:(JI)J
            ldc 1000
            ldiv
            lstore 1 /* ambientDisplayMs */
        start local 1 // long ambientDisplayMs
         1: .line 660
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mPowerProfile:Lcom/android/internal/os/PowerProfile;
            ldc "ambient.on"
            invokevirtual com.android.internal.os.PowerProfile.getAveragePower:(Ljava/lang/String;)D
         2: .line 661
            lload 1 /* ambientDisplayMs */
            l2d
         3: .line 660
            dmul
         4: .line 661
            ldc 3600000.0
         5: .line 660
            ddiv
            dstore 3 /* power */
        start local 3 // double power
         6: .line 662
            dload 3 /* power */
            dconst_0
            dcmpl
            ifle 8
         7: .line 663
            aload 0 /* this */
            getstatic com.android.internal.os.BatterySipper$DrainType.AMBIENT_DISPLAY:Lcom/android/internal/os/BatterySipper$DrainType;
            lload 1 /* ambientDisplayMs */
            dload 3 /* power */
            invokevirtual com.android.internal.os.BatteryStatsHelper.addEntry:(Lcom/android/internal/os/BatterySipper$DrainType;JD)Lcom/android/internal/os/BatterySipper;
            pop
         8: .line 665
      StackMap locals: long double
      StackMap stack:
            return
        end local 3 // double power
        end local 1 // long ambientDisplayMs
        end local 0 // com.android.internal.os.BatteryStatsHelper this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    9     0              this  Lcom/android/internal/os/BatteryStatsHelper;
            1    9     1  ambientDisplayMs  J
            6    9     3             power  D

  private void addRadioUsage();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=8, locals=2, args_size=1
        start local 0 // com.android.internal.os.BatteryStatsHelper this
         0: .line 668
            new com.android.internal.os.BatterySipper
            dup
            getstatic com.android.internal.os.BatterySipper$DrainType.CELL:Lcom/android/internal/os/BatterySipper$DrainType;
            aconst_null
            dconst_0
            invokespecial com.android.internal.os.BatterySipper.<init>:(Lcom/android/internal/os/BatterySipper$DrainType;Landroid/os/BatteryStats$Uid;D)V
            astore 1 /* radio */
        start local 1 // com.android.internal.os.BatterySipper radio
         1: .line 669
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mMobileRadioPowerCalculator:Lcom/android/internal/os/MobileRadioPowerCalculator;
            aload 1 /* radio */
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mStats:Landroid/os/BatteryStats;
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mRawRealtimeUs:J
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mRawUptimeUs:J
         2: .line 670
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mStatsType:I
         3: .line 669
            invokevirtual com.android.internal.os.MobileRadioPowerCalculator.calculateRemaining:(Lcom/android/internal/os/BatterySipper;Landroid/os/BatteryStats;JJI)V
         4: .line 671
            aload 1 /* radio */
            invokevirtual com.android.internal.os.BatterySipper.sumPower:()D
            pop2
         5: .line 672
            aload 1 /* radio */
            getfield com.android.internal.os.BatterySipper.totalPowerMah:D
            dconst_0
            dcmpl
            ifle 7
         6: .line 673
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mUsageList:Ljava/util/List;
            aload 1 /* radio */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         7: .line 675
      StackMap locals: com.android.internal.os.BatterySipper
      StackMap stack:
            return
        end local 1 // com.android.internal.os.BatterySipper radio
        end local 0 // com.android.internal.os.BatteryStatsHelper this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    8     0   this  Lcom/android/internal/os/BatteryStatsHelper;
            1    8     1  radio  Lcom/android/internal/os/BatterySipper;

  private void aggregateSippers(com.android.internal.os.BatterySipper, java.util.List<com.android.internal.os.BatterySipper>, java.lang.String);
    descriptor: (Lcom/android/internal/os/BatterySipper;Ljava/util/List;Ljava/lang/String;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=6, args_size=4
        start local 0 // com.android.internal.os.BatteryStatsHelper this
        start local 1 // com.android.internal.os.BatterySipper bs
        start local 2 // java.util.List from
        start local 3 // java.lang.String tag
         0: .line 678
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         1: goto 5
         2: .line 679
      StackMap locals: int
      StackMap stack:
            aload 2 /* from */
            iload 4 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast com.android.internal.os.BatterySipper
            astore 5 /* wbs */
        start local 5 // com.android.internal.os.BatterySipper wbs
         3: .line 681
            aload 1 /* bs */
            aload 5 /* wbs */
            invokevirtual com.android.internal.os.BatterySipper.add:(Lcom/android/internal/os/BatterySipper;)V
        end local 5 // com.android.internal.os.BatterySipper wbs
         4: .line 678
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
         5: iload 4 /* i */
            aload 2 /* from */
            invokeinterface java.util.List.size:()I
            if_icmplt 2
        end local 4 // int i
         6: .line 683
            aload 1 /* bs */
            invokevirtual com.android.internal.os.BatterySipper.computeMobilemspp:()V
         7: .line 684
            aload 1 /* bs */
            invokevirtual com.android.internal.os.BatterySipper.sumPower:()D
            pop2
         8: .line 685
            return
        end local 3 // java.lang.String tag
        end local 2 // java.util.List from
        end local 1 // com.android.internal.os.BatterySipper bs
        end local 0 // com.android.internal.os.BatteryStatsHelper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lcom/android/internal/os/BatteryStatsHelper;
            0    9     1    bs  Lcom/android/internal/os/BatterySipper;
            0    9     2  from  Ljava/util/List<Lcom/android/internal/os/BatterySipper;>;
            0    9     3   tag  Ljava/lang/String;
            1    6     4     i  I
            3    4     5   wbs  Lcom/android/internal/os/BatterySipper;
    Signature: (Lcom/android/internal/os/BatterySipper;Ljava/util/List<Lcom/android/internal/os/BatterySipper;>;Ljava/lang/String;)V
    MethodParameters:
      Name  Flags
      bs    
      from  
      tag   

  private void addIdleUsage();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=7, args_size=1
        start local 0 // com.android.internal.os.BatteryStatsHelper this
         0: .line 693
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mTypeBatteryRealtimeUs:J
            ldc 1000
            ldiv
            l2d
         1: .line 694
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mPowerProfile:Lcom/android/internal/os/PowerProfile;
            ldc "cpu.suspend"
            invokevirtual com.android.internal.os.PowerProfile.getAveragePower:(Ljava/lang/String;)D
         2: .line 693
            dmul
            dstore 1 /* suspendPowerMaMs */
        start local 1 // double suspendPowerMaMs
         3: .line 695
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mTypeBatteryUptimeUs:J
            ldc 1000
            ldiv
            l2d
         4: .line 696
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mPowerProfile:Lcom/android/internal/os/PowerProfile;
            ldc "cpu.idle"
            invokevirtual com.android.internal.os.PowerProfile.getAveragePower:(Ljava/lang/String;)D
         5: .line 695
            dmul
            dstore 3 /* idlePowerMaMs */
        start local 3 // double idlePowerMaMs
         6: .line 697
            dload 1 /* suspendPowerMaMs */
            dload 3 /* idlePowerMaMs */
            dadd
            ldc 3600000.0
            ddiv
            dstore 5 /* totalPowerMah */
        start local 5 // double totalPowerMah
         7: .line 705
            dload 5 /* totalPowerMah */
            dconst_0
            dcmpl
            ifeq 9
         8: .line 706
            aload 0 /* this */
            getstatic com.android.internal.os.BatterySipper$DrainType.IDLE:Lcom/android/internal/os/BatterySipper$DrainType;
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mTypeBatteryRealtimeUs:J
            ldc 1000
            ldiv
            dload 5 /* totalPowerMah */
            invokevirtual com.android.internal.os.BatteryStatsHelper.addEntry:(Lcom/android/internal/os/BatterySipper$DrainType;JD)Lcom/android/internal/os/BatterySipper;
            pop
         9: .line 708
      StackMap locals: double double double
      StackMap stack:
            return
        end local 5 // double totalPowerMah
        end local 3 // double idlePowerMaMs
        end local 1 // double suspendPowerMaMs
        end local 0 // com.android.internal.os.BatteryStatsHelper this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   10     0              this  Lcom/android/internal/os/BatteryStatsHelper;
            3   10     1  suspendPowerMaMs  D
            6   10     3     idlePowerMaMs  D
            7   10     5     totalPowerMah  D

  private void addWiFiUsage();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=8, locals=2, args_size=1
        start local 0 // com.android.internal.os.BatteryStatsHelper this
         0: .line 718
            new com.android.internal.os.BatterySipper
            dup
            getstatic com.android.internal.os.BatterySipper$DrainType.WIFI:Lcom/android/internal/os/BatterySipper$DrainType;
            aconst_null
            dconst_0
            invokespecial com.android.internal.os.BatterySipper.<init>:(Lcom/android/internal/os/BatterySipper$DrainType;Landroid/os/BatteryStats$Uid;D)V
            astore 1 /* bs */
        start local 1 // com.android.internal.os.BatterySipper bs
         1: .line 719
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mWifiPowerCalculator:Lcom/android/internal/os/PowerCalculator;
            aload 1 /* bs */
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mStats:Landroid/os/BatteryStats;
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mRawRealtimeUs:J
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mRawUptimeUs:J
         2: .line 720
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mStatsType:I
         3: .line 719
            invokevirtual com.android.internal.os.PowerCalculator.calculateRemaining:(Lcom/android/internal/os/BatterySipper;Landroid/os/BatteryStats;JJI)V
         4: .line 721
            aload 0 /* this */
            aload 1 /* bs */
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mWifiSippers:Ljava/util/List;
            ldc "WIFI"
            invokevirtual com.android.internal.os.BatteryStatsHelper.aggregateSippers:(Lcom/android/internal/os/BatterySipper;Ljava/util/List;Ljava/lang/String;)V
         5: .line 722
            aload 1 /* bs */
            getfield com.android.internal.os.BatterySipper.totalPowerMah:D
            dconst_0
            dcmpl
            ifle 7
         6: .line 723
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mUsageList:Ljava/util/List;
            aload 1 /* bs */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         7: .line 725
      StackMap locals: com.android.internal.os.BatterySipper
      StackMap stack:
            return
        end local 1 // com.android.internal.os.BatterySipper bs
        end local 0 // com.android.internal.os.BatteryStatsHelper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lcom/android/internal/os/BatteryStatsHelper;
            1    8     1    bs  Lcom/android/internal/os/BatterySipper;

  private void addBluetoothUsage();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=8, locals=2, args_size=1
        start local 0 // com.android.internal.os.BatteryStatsHelper this
         0: .line 732
            new com.android.internal.os.BatterySipper
            dup
            getstatic com.android.internal.os.BatterySipper$DrainType.BLUETOOTH:Lcom/android/internal/os/BatterySipper$DrainType;
            aconst_null
            dconst_0
            invokespecial com.android.internal.os.BatterySipper.<init>:(Lcom/android/internal/os/BatterySipper$DrainType;Landroid/os/BatteryStats$Uid;D)V
            astore 1 /* bs */
        start local 1 // com.android.internal.os.BatterySipper bs
         1: .line 733
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mBluetoothPowerCalculator:Lcom/android/internal/os/PowerCalculator;
            aload 1 /* bs */
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mStats:Landroid/os/BatteryStats;
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mRawRealtimeUs:J
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mRawUptimeUs:J
         2: .line 734
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mStatsType:I
         3: .line 733
            invokevirtual com.android.internal.os.PowerCalculator.calculateRemaining:(Lcom/android/internal/os/BatterySipper;Landroid/os/BatteryStats;JJI)V
         4: .line 735
            aload 0 /* this */
            aload 1 /* bs */
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mBluetoothSippers:Ljava/util/List;
            ldc "Bluetooth"
            invokevirtual com.android.internal.os.BatteryStatsHelper.aggregateSippers:(Lcom/android/internal/os/BatterySipper;Ljava/util/List;Ljava/lang/String;)V
         5: .line 736
            aload 1 /* bs */
            getfield com.android.internal.os.BatterySipper.totalPowerMah:D
            dconst_0
            dcmpl
            ifle 7
         6: .line 737
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mUsageList:Ljava/util/List;
            aload 1 /* bs */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         7: .line 739
      StackMap locals: com.android.internal.os.BatterySipper
      StackMap stack:
            return
        end local 1 // com.android.internal.os.BatterySipper bs
        end local 0 // com.android.internal.os.BatteryStatsHelper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lcom/android/internal/os/BatteryStatsHelper;
            1    8     1    bs  Lcom/android/internal/os/BatterySipper;

  private void addUserUsage();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=4, args_size=1
        start local 0 // com.android.internal.os.BatteryStatsHelper this
         0: .line 742
            iconst_0
            istore 1 /* i */
        start local 1 // int i
         1: goto 8
         2: .line 743
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mUserSippers:Landroid/util/SparseArray;
            iload 1 /* i */
            invokevirtual android.util.SparseArray.keyAt:(I)I
            istore 2 /* userId */
        start local 2 // int userId
         3: .line 744
            new com.android.internal.os.BatterySipper
            dup
            getstatic com.android.internal.os.BatterySipper$DrainType.USER:Lcom/android/internal/os/BatterySipper$DrainType;
            aconst_null
            dconst_0
            invokespecial com.android.internal.os.BatterySipper.<init>:(Lcom/android/internal/os/BatterySipper$DrainType;Landroid/os/BatteryStats$Uid;D)V
            astore 3 /* bs */
        start local 3 // com.android.internal.os.BatterySipper bs
         4: .line 745
            aload 3 /* bs */
            iload 2 /* userId */
            putfield com.android.internal.os.BatterySipper.userId:I
         5: .line 746
            aload 0 /* this */
            aload 3 /* bs */
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mUserSippers:Landroid/util/SparseArray;
            iload 1 /* i */
            invokevirtual android.util.SparseArray.valueAt:(I)Ljava/lang/Object;
            checkcast java.util.List
            ldc "User"
            invokevirtual com.android.internal.os.BatteryStatsHelper.aggregateSippers:(Lcom/android/internal/os/BatterySipper;Ljava/util/List;Ljava/lang/String;)V
         6: .line 747
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mUsageList:Ljava/util/List;
            aload 3 /* bs */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 3 // com.android.internal.os.BatterySipper bs
        end local 2 // int userId
         7: .line 742
            iinc 1 /* i */ 1
      StackMap locals:
      StackMap stack:
         8: iload 1 /* i */
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mUserSippers:Landroid/util/SparseArray;
            invokevirtual android.util.SparseArray.size:()I
            if_icmplt 2
        end local 1 // int i
         9: .line 749
            return
        end local 0 // com.android.internal.os.BatteryStatsHelper this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   10     0    this  Lcom/android/internal/os/BatteryStatsHelper;
            1    9     1       i  I
            3    7     2  userId  I
            4    7     3      bs  Lcom/android/internal/os/BatterySipper;

  private void addMemoryUsage();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=8, locals=2, args_size=1
        start local 0 // com.android.internal.os.BatteryStatsHelper this
         0: .line 752
            new com.android.internal.os.BatterySipper
            dup
            getstatic com.android.internal.os.BatterySipper$DrainType.MEMORY:Lcom/android/internal/os/BatterySipper$DrainType;
            aconst_null
            dconst_0
            invokespecial com.android.internal.os.BatterySipper.<init>:(Lcom/android/internal/os/BatterySipper$DrainType;Landroid/os/BatteryStats$Uid;D)V
            astore 1 /* memory */
        start local 1 // com.android.internal.os.BatterySipper memory
         1: .line 753
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mMemoryPowerCalculator:Lcom/android/internal/os/PowerCalculator;
            aload 1 /* memory */
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mStats:Landroid/os/BatteryStats;
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mRawRealtimeUs:J
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mRawUptimeUs:J
         2: .line 754
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mStatsType:I
         3: .line 753
            invokevirtual com.android.internal.os.PowerCalculator.calculateRemaining:(Lcom/android/internal/os/BatterySipper;Landroid/os/BatteryStats;JJI)V
         4: .line 755
            aload 1 /* memory */
            invokevirtual com.android.internal.os.BatterySipper.sumPower:()D
            pop2
         5: .line 756
            aload 1 /* memory */
            getfield com.android.internal.os.BatterySipper.totalPowerMah:D
            dconst_0
            dcmpl
            ifle 7
         6: .line 757
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mUsageList:Ljava/util/List;
            aload 1 /* memory */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         7: .line 759
      StackMap locals: com.android.internal.os.BatterySipper
      StackMap stack:
            return
        end local 1 // com.android.internal.os.BatterySipper memory
        end local 0 // com.android.internal.os.BatteryStatsHelper this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    8     0    this  Lcom/android/internal/os/BatteryStatsHelper;
            1    8     1  memory  Lcom/android/internal/os/BatterySipper;

  private void processMiscUsage();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.android.internal.os.BatteryStatsHelper this
         0: .line 762
            aload 0 /* this */
            invokevirtual com.android.internal.os.BatteryStatsHelper.addUserUsage:()V
         1: .line 763
            aload 0 /* this */
            invokevirtual com.android.internal.os.BatteryStatsHelper.addPhoneUsage:()V
         2: .line 764
            aload 0 /* this */
            invokevirtual com.android.internal.os.BatteryStatsHelper.addScreenUsage:()V
         3: .line 765
            aload 0 /* this */
            invokevirtual com.android.internal.os.BatteryStatsHelper.addAmbientDisplayUsage:()V
         4: .line 766
            aload 0 /* this */
            invokevirtual com.android.internal.os.BatteryStatsHelper.addWiFiUsage:()V
         5: .line 767
            aload 0 /* this */
            invokevirtual com.android.internal.os.BatteryStatsHelper.addBluetoothUsage:()V
         6: .line 768
            aload 0 /* this */
            invokevirtual com.android.internal.os.BatteryStatsHelper.addMemoryUsage:()V
         7: .line 769
            aload 0 /* this */
            invokevirtual com.android.internal.os.BatteryStatsHelper.addIdleUsage:()V
         8: .line 771
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mWifiOnly:Z
            ifne 10
         9: .line 772
            aload 0 /* this */
            invokevirtual com.android.internal.os.BatteryStatsHelper.addRadioUsage:()V
        10: .line 774
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.android.internal.os.BatteryStatsHelper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   11     0  this  Lcom/android/internal/os/BatteryStatsHelper;

  private com.android.internal.os.BatterySipper addEntry(com.android.internal.os.BatterySipper$DrainType, long, double);
    descriptor: (Lcom/android/internal/os/BatterySipper$DrainType;JD)Lcom/android/internal/os/BatterySipper;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=7, args_size=4
        start local 0 // com.android.internal.os.BatteryStatsHelper this
        start local 1 // com.android.internal.os.BatterySipper$DrainType drainType
        start local 2 // long time
        start local 4 // double power
         0: .line 777
            new com.android.internal.os.BatterySipper
            dup
            aload 1 /* drainType */
            aconst_null
            dconst_0
            invokespecial com.android.internal.os.BatterySipper.<init>:(Lcom/android/internal/os/BatterySipper$DrainType;Landroid/os/BatteryStats$Uid;D)V
            astore 6 /* bs */
        start local 6 // com.android.internal.os.BatterySipper bs
         1: .line 778
            aload 6 /* bs */
            dload 4 /* power */
            putfield com.android.internal.os.BatterySipper.usagePowerMah:D
         2: .line 779
            aload 6 /* bs */
            lload 2 /* time */
            putfield com.android.internal.os.BatterySipper.usageTimeMs:J
         3: .line 780
            aload 6 /* bs */
            invokevirtual com.android.internal.os.BatterySipper.sumPower:()D
            pop2
         4: .line 781
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mUsageList:Ljava/util/List;
            aload 6 /* bs */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         5: .line 782
            aload 6 /* bs */
            areturn
        end local 6 // com.android.internal.os.BatterySipper bs
        end local 4 // double power
        end local 2 // long time
        end local 1 // com.android.internal.os.BatterySipper$DrainType drainType
        end local 0 // com.android.internal.os.BatteryStatsHelper this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    6     0       this  Lcom/android/internal/os/BatteryStatsHelper;
            0    6     1  drainType  Lcom/android/internal/os/BatterySipper$DrainType;
            0    6     2       time  J
            0    6     4      power  D
            1    6     6         bs  Lcom/android/internal/os/BatterySipper;
    MethodParameters:
           Name  Flags
      drainType  
      time       
      power      

  public java.util.List<com.android.internal.os.BatterySipper> getUsageList();
    descriptor: ()Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.android.internal.os.BatteryStatsHelper this
         0: .line 786
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mUsageList:Ljava/util/List;
            areturn
        end local 0 // com.android.internal.os.BatteryStatsHelper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/android/internal/os/BatteryStatsHelper;
    Signature: ()Ljava/util/List<Lcom/android/internal/os/BatterySipper;>;

  public java.util.List<com.android.internal.os.BatterySipper> getMobilemsppList();
    descriptor: ()Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.android.internal.os.BatteryStatsHelper this
         0: .line 790
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mMobilemsppList:Ljava/util/List;
            areturn
        end local 0 // com.android.internal.os.BatteryStatsHelper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/android/internal/os/BatteryStatsHelper;
    Signature: ()Ljava/util/List<Lcom/android/internal/os/BatterySipper;>;

  public long getStatsPeriod();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.android.internal.os.BatteryStatsHelper this
         0: .line 794
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mStatsPeriod:J
            lreturn
        end local 0 // com.android.internal.os.BatteryStatsHelper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/android/internal/os/BatteryStatsHelper;

  public int getStatsType();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.android.internal.os.BatteryStatsHelper this
         0: .line 798
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mStatsType:I
            ireturn
        end local 0 // com.android.internal.os.BatteryStatsHelper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/android/internal/os/BatteryStatsHelper;

  public double getMaxPower();
    descriptor: ()D
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.android.internal.os.BatteryStatsHelper this
         0: .line 802
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mMaxPower:D
            dreturn
        end local 0 // com.android.internal.os.BatteryStatsHelper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/android/internal/os/BatteryStatsHelper;

  public double getMaxRealPower();
    descriptor: ()D
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.android.internal.os.BatteryStatsHelper this
         0: .line 806
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mMaxRealPower:D
            dreturn
        end local 0 // com.android.internal.os.BatteryStatsHelper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/android/internal/os/BatteryStatsHelper;

  public double getTotalPower();
    descriptor: ()D
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.android.internal.os.BatteryStatsHelper this
         0: .line 810
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mTotalPower:D
            dreturn
        end local 0 // com.android.internal.os.BatteryStatsHelper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/android/internal/os/BatteryStatsHelper;

  public double getComputedPower();
    descriptor: ()D
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.android.internal.os.BatteryStatsHelper this
         0: .line 814
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mComputedPower:D
            dreturn
        end local 0 // com.android.internal.os.BatteryStatsHelper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/android/internal/os/BatteryStatsHelper;

  public double getMinDrainedPower();
    descriptor: ()D
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.android.internal.os.BatteryStatsHelper this
         0: .line 818
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mMinDrainedPower:D
            dreturn
        end local 0 // com.android.internal.os.BatteryStatsHelper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/android/internal/os/BatteryStatsHelper;

  public double getMaxDrainedPower();
    descriptor: ()D
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.android.internal.os.BatteryStatsHelper this
         0: .line 822
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mMaxDrainedPower:D
            dreturn
        end local 0 // com.android.internal.os.BatteryStatsHelper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/android/internal/os/BatteryStatsHelper;

  public static byte[] readFully(java.io.FileInputStream);
    descriptor: (Ljava/io/FileInputStream;)[B
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.io.FileInputStream stream
         0: .line 826
            aload 0 /* stream */
            aload 0 /* stream */
            invokevirtual java.io.FileInputStream.available:()I
            invokestatic com.android.internal.os.BatteryStatsHelper.readFully:(Ljava/io/FileInputStream;I)[B
            areturn
        end local 0 // java.io.FileInputStream stream
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0  stream  Ljava/io/FileInputStream;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      stream  

  public static byte[] readFully(java.io.FileInputStream, int);
    descriptor: (Ljava/io/FileInputStream;I)[B
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=6, args_size=2
        start local 0 // java.io.FileInputStream stream
        start local 1 // int avail
         0: .line 830
            iconst_0
            istore 2 /* pos */
        start local 2 // int pos
         1: .line 831
            iload 1 /* avail */
            newarray 8
            astore 3 /* data */
        start local 3 // byte[] data
         2: .line 833
      StackMap locals: int byte[]
      StackMap stack:
            aload 0 /* stream */
            aload 3 /* data */
            iload 2 /* pos */
            aload 3 /* data */
            arraylength
            iload 2 /* pos */
            isub
            invokevirtual java.io.FileInputStream.read:([BII)I
            istore 4 /* amt */
        start local 4 // int amt
         3: .line 836
            iload 4 /* amt */
            ifgt 5
         4: .line 839
            aload 3 /* data */
            areturn
         5: .line 841
      StackMap locals: int
      StackMap stack:
            iload 2 /* pos */
            iload 4 /* amt */
            iadd
            istore 2 /* pos */
         6: .line 842
            aload 0 /* stream */
            invokevirtual java.io.FileInputStream.available:()I
            istore 1 /* avail */
         7: .line 843
            iload 1 /* avail */
            aload 3 /* data */
            arraylength
            iload 2 /* pos */
            isub
            if_icmple 2
         8: .line 844
            iload 2 /* pos */
            iload 1 /* avail */
            iadd
            newarray 8
            astore 5 /* newData */
        start local 5 // byte[] newData
         9: .line 845
            aload 3 /* data */
            iconst_0
            aload 5 /* newData */
            iconst_0
            iload 2 /* pos */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        10: .line 846
            aload 5 /* newData */
            astore 3 /* data */
        end local 5 // byte[] newData
        end local 4 // int amt
        11: .line 832
            goto 2
        end local 3 // byte[] data
        end local 2 // int pos
        end local 1 // int avail
        end local 0 // java.io.FileInputStream stream
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   12     0   stream  Ljava/io/FileInputStream;
            0   12     1    avail  I
            1   12     2      pos  I
            2   12     3     data  [B
            3   11     4      amt  I
            9   11     5  newData  [B
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      stream  
      avail   

  public double removeHiddenBatterySippers(java.util.List<com.android.internal.os.BatterySipper>);
    descriptor: (Ljava/util/List;)D
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=7, args_size=2
        start local 0 // com.android.internal.os.BatteryStatsHelper this
        start local 1 // java.util.List sippers
         0: .line 860
            dconst_0
            dstore 2 /* proportionalSmearPowerMah */
        start local 2 // double proportionalSmearPowerMah
         1: .line 861
            aconst_null
            astore 4 /* screenSipper */
        start local 4 // com.android.internal.os.BatterySipper screenSipper
         2: .line 862
            aload 1 /* sippers */
            invokeinterface java.util.List.size:()I
            iconst_1
            isub
            istore 5 /* i */
        start local 5 // int i
         3: goto 18
         4: .line 863
      StackMap locals: double com.android.internal.os.BatterySipper int
      StackMap stack:
            aload 1 /* sippers */
            iload 5 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast com.android.internal.os.BatterySipper
            astore 6 /* sipper */
        start local 6 // com.android.internal.os.BatterySipper sipper
         5: .line 864
            aload 6 /* sipper */
            aload 0 /* this */
            aload 6 /* sipper */
            invokevirtual com.android.internal.os.BatteryStatsHelper.shouldHideSipper:(Lcom/android/internal/os/BatterySipper;)Z
            putfield com.android.internal.os.BatterySipper.shouldHide:Z
         6: .line 865
            aload 6 /* sipper */
            getfield com.android.internal.os.BatterySipper.shouldHide:Z
            ifeq 15
         7: .line 866
            aload 6 /* sipper */
            getfield com.android.internal.os.BatterySipper.drainType:Lcom/android/internal/os/BatterySipper$DrainType;
            getstatic com.android.internal.os.BatterySipper$DrainType.OVERCOUNTED:Lcom/android/internal/os/BatterySipper$DrainType;
            if_acmpeq 15
         8: .line 867
            aload 6 /* sipper */
            getfield com.android.internal.os.BatterySipper.drainType:Lcom/android/internal/os/BatterySipper$DrainType;
            getstatic com.android.internal.os.BatterySipper$DrainType.SCREEN:Lcom/android/internal/os/BatterySipper$DrainType;
            if_acmpeq 15
         9: .line 868
            aload 6 /* sipper */
            getfield com.android.internal.os.BatterySipper.drainType:Lcom/android/internal/os/BatterySipper$DrainType;
            getstatic com.android.internal.os.BatterySipper$DrainType.AMBIENT_DISPLAY:Lcom/android/internal/os/BatterySipper$DrainType;
            if_acmpeq 15
        10: .line 869
            aload 6 /* sipper */
            getfield com.android.internal.os.BatterySipper.drainType:Lcom/android/internal/os/BatterySipper$DrainType;
            getstatic com.android.internal.os.BatterySipper$DrainType.UNACCOUNTED:Lcom/android/internal/os/BatterySipper$DrainType;
            if_acmpeq 15
        11: .line 870
            aload 6 /* sipper */
            getfield com.android.internal.os.BatterySipper.drainType:Lcom/android/internal/os/BatterySipper$DrainType;
            getstatic com.android.internal.os.BatterySipper$DrainType.BLUETOOTH:Lcom/android/internal/os/BatterySipper$DrainType;
            if_acmpeq 15
        12: .line 871
            aload 6 /* sipper */
            getfield com.android.internal.os.BatterySipper.drainType:Lcom/android/internal/os/BatterySipper$DrainType;
            getstatic com.android.internal.os.BatterySipper$DrainType.WIFI:Lcom/android/internal/os/BatterySipper$DrainType;
            if_acmpeq 15
        13: .line 872
            aload 6 /* sipper */
            getfield com.android.internal.os.BatterySipper.drainType:Lcom/android/internal/os/BatterySipper$DrainType;
            getstatic com.android.internal.os.BatterySipper$DrainType.IDLE:Lcom/android/internal/os/BatterySipper$DrainType;
            if_acmpeq 15
        14: .line 874
            dload 2 /* proportionalSmearPowerMah */
            aload 6 /* sipper */
            getfield com.android.internal.os.BatterySipper.totalPowerMah:D
            dadd
            dstore 2 /* proportionalSmearPowerMah */
        15: .line 878
      StackMap locals: com.android.internal.os.BatterySipper
      StackMap stack:
            aload 6 /* sipper */
            getfield com.android.internal.os.BatterySipper.drainType:Lcom/android/internal/os/BatterySipper$DrainType;
            getstatic com.android.internal.os.BatterySipper$DrainType.SCREEN:Lcom/android/internal/os/BatterySipper$DrainType;
            if_acmpne 17
        16: .line 879
            aload 6 /* sipper */
            astore 4 /* screenSipper */
        end local 6 // com.android.internal.os.BatterySipper sipper
        17: .line 862
      StackMap locals:
      StackMap stack:
            iinc 5 /* i */ -1
      StackMap locals:
      StackMap stack:
        18: iload 5 /* i */
            ifge 4
        end local 5 // int i
        19: .line 883
            aload 0 /* this */
            aload 1 /* sippers */
            aload 4 /* screenSipper */
            invokevirtual com.android.internal.os.BatteryStatsHelper.smearScreenBatterySipper:(Ljava/util/List;Lcom/android/internal/os/BatterySipper;)V
        20: .line 885
            dload 2 /* proportionalSmearPowerMah */
            dreturn
        end local 4 // com.android.internal.os.BatterySipper screenSipper
        end local 2 // double proportionalSmearPowerMah
        end local 1 // java.util.List sippers
        end local 0 // com.android.internal.os.BatteryStatsHelper this
      LocalVariableTable:
        Start  End  Slot                       Name  Signature
            0   21     0                       this  Lcom/android/internal/os/BatteryStatsHelper;
            0   21     1                    sippers  Ljava/util/List<Lcom/android/internal/os/BatterySipper;>;
            1   21     2  proportionalSmearPowerMah  D
            2   21     4               screenSipper  Lcom/android/internal/os/BatterySipper;
            3   19     5                          i  I
            5   17     6                     sipper  Lcom/android/internal/os/BatterySipper;
    Signature: (Ljava/util/List<Lcom/android/internal/os/BatterySipper;>;)D
    MethodParameters:
         Name  Flags
      sippers  

  public void smearScreenBatterySipper(java.util.List<com.android.internal.os.BatterySipper>, com.android.internal.os.BatterySipper);
    descriptor: (Ljava/util/List;Lcom/android/internal/os/BatterySipper;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=11, args_size=3
        start local 0 // com.android.internal.os.BatteryStatsHelper this
        start local 1 // java.util.List sippers
        start local 2 // com.android.internal.os.BatterySipper screenSipper
         0: .line 893
            lconst_0
            lstore 3 /* totalActivityTimeMs */
        start local 3 // long totalActivityTimeMs
         1: .line 894
            new android.util.SparseLongArray
            dup
            invokespecial android.util.SparseLongArray.<init>:()V
            astore 5 /* activityTimeArray */
        start local 5 // android.util.SparseLongArray activityTimeArray
         2: .line 895
            iconst_0
            istore 6 /* i */
        start local 6 // int i
         3: aload 1 /* sippers */
            invokeinterface java.util.List.size:()I
            istore 7 /* size */
        start local 7 // int size
         4: goto 13
         5: .line 896
      StackMap locals: com.android.internal.os.BatteryStatsHelper java.util.List com.android.internal.os.BatterySipper long android.util.SparseLongArray int int
      StackMap stack:
            aload 1 /* sippers */
            iload 6 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast com.android.internal.os.BatterySipper
            getfield com.android.internal.os.BatterySipper.uidObj:Landroid/os/BatteryStats$Uid;
            astore 8 /* uid */
        start local 8 // android.os.BatteryStats$Uid uid
         6: .line 897
            aload 8 /* uid */
            ifnull 12
         7: .line 898
            aload 0 /* this */
            aload 8 /* uid */
         8: .line 899
            iconst_0
         9: .line 898
            invokevirtual com.android.internal.os.BatteryStatsHelper.getProcessForegroundTimeMs:(Landroid/os/BatteryStats$Uid;I)J
            lstore 9 /* timeMs */
        start local 9 // long timeMs
        10: .line 900
            aload 5 /* activityTimeArray */
            aload 8 /* uid */
            invokevirtual android.os.BatteryStats$Uid.getUid:()I
            lload 9 /* timeMs */
            invokevirtual android.util.SparseLongArray.put:(IJ)V
        11: .line 901
            lload 3 /* totalActivityTimeMs */
            lload 9 /* timeMs */
            ladd
            lstore 3 /* totalActivityTimeMs */
        end local 9 // long timeMs
        end local 8 // android.os.BatteryStats$Uid uid
        12: .line 895
      StackMap locals:
      StackMap stack:
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        13: iload 6 /* i */
            iload 7 /* size */
            if_icmplt 5
        end local 7 // int size
        end local 6 // int i
        14: .line 905
            aload 2 /* screenSipper */
            ifnull 25
            lload 3 /* totalActivityTimeMs */
            ldc 600000
            lcmp
            iflt 25
        15: .line 906
            aload 2 /* screenSipper */
            getfield com.android.internal.os.BatterySipper.totalPowerMah:D
            dstore 6 /* screenPowerMah */
        start local 6 // double screenPowerMah
        16: .line 907
            iconst_0
            istore 8 /* i */
        start local 8 // int i
        17: aload 1 /* sippers */
            invokeinterface java.util.List.size:()I
            istore 9 /* size */
        start local 9 // int size
        18: goto 24
        19: .line 908
      StackMap locals: com.android.internal.os.BatteryStatsHelper java.util.List com.android.internal.os.BatterySipper long android.util.SparseLongArray double int int
      StackMap stack:
            aload 1 /* sippers */
            iload 8 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast com.android.internal.os.BatterySipper
            astore 10 /* sipper */
        start local 10 // com.android.internal.os.BatterySipper sipper
        20: .line 909
            aload 10 /* sipper */
            dload 6 /* screenPowerMah */
            aload 5 /* activityTimeArray */
            aload 10 /* sipper */
            invokevirtual com.android.internal.os.BatterySipper.getUid:()I
            lconst_0
            invokevirtual android.util.SparseLongArray.get:(IJ)J
            l2d
            dmul
        21: .line 910
            lload 3 /* totalActivityTimeMs */
            l2d
            ddiv
        22: .line 909
            putfield com.android.internal.os.BatterySipper.screenPowerMah:D
        end local 10 // com.android.internal.os.BatterySipper sipper
        23: .line 907
            iinc 8 /* i */ 1
      StackMap locals:
      StackMap stack:
        24: iload 8 /* i */
            iload 9 /* size */
            if_icmplt 19
        end local 9 // int size
        end local 8 // int i
        end local 6 // double screenPowerMah
        25: .line 913
      StackMap locals:
      StackMap stack:
            return
        end local 5 // android.util.SparseLongArray activityTimeArray
        end local 3 // long totalActivityTimeMs
        end local 2 // com.android.internal.os.BatterySipper screenSipper
        end local 1 // java.util.List sippers
        end local 0 // com.android.internal.os.BatteryStatsHelper this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   26     0                 this  Lcom/android/internal/os/BatteryStatsHelper;
            0   26     1              sippers  Ljava/util/List<Lcom/android/internal/os/BatterySipper;>;
            0   26     2         screenSipper  Lcom/android/internal/os/BatterySipper;
            1   26     3  totalActivityTimeMs  J
            2   26     5    activityTimeArray  Landroid/util/SparseLongArray;
            3   14     6                    i  I
            4   14     7                 size  I
            6   12     8                  uid  Landroid/os/BatteryStats$Uid;
           10   12     9               timeMs  J
           16   25     6       screenPowerMah  D
           17   25     8                    i  I
           18   25     9                 size  I
           20   23    10               sipper  Lcom/android/internal/os/BatterySipper;
    Signature: (Ljava/util/List<Lcom/android/internal/os/BatterySipper;>;Lcom/android/internal/os/BatterySipper;)V
    MethodParameters:
              Name  Flags
      sippers       
      screenSipper  

  public boolean shouldHideSipper(com.android.internal.os.BatterySipper);
    descriptor: (Lcom/android/internal/os/BatterySipper;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.android.internal.os.BatteryStatsHelper this
        start local 1 // com.android.internal.os.BatterySipper sipper
         0: .line 919
            aload 1 /* sipper */
            getfield com.android.internal.os.BatterySipper.drainType:Lcom/android/internal/os/BatterySipper$DrainType;
            astore 2 /* drainType */
        start local 2 // com.android.internal.os.BatterySipper$DrainType drainType
         1: .line 921
            aload 2 /* drainType */
            getstatic com.android.internal.os.BatterySipper$DrainType.IDLE:Lcom/android/internal/os/BatterySipper$DrainType;
            if_acmpeq 10
         2: .line 922
            aload 2 /* drainType */
            getstatic com.android.internal.os.BatterySipper$DrainType.CELL:Lcom/android/internal/os/BatterySipper$DrainType;
            if_acmpeq 10
         3: .line 923
            aload 2 /* drainType */
            getstatic com.android.internal.os.BatterySipper$DrainType.SCREEN:Lcom/android/internal/os/BatterySipper$DrainType;
            if_acmpeq 10
         4: .line 924
            aload 2 /* drainType */
            getstatic com.android.internal.os.BatterySipper$DrainType.AMBIENT_DISPLAY:Lcom/android/internal/os/BatterySipper$DrainType;
            if_acmpeq 10
         5: .line 925
            aload 2 /* drainType */
            getstatic com.android.internal.os.BatterySipper$DrainType.UNACCOUNTED:Lcom/android/internal/os/BatterySipper$DrainType;
            if_acmpeq 10
         6: .line 926
            aload 2 /* drainType */
            getstatic com.android.internal.os.BatterySipper$DrainType.OVERCOUNTED:Lcom/android/internal/os/BatterySipper$DrainType;
            if_acmpeq 10
         7: .line 927
            aload 0 /* this */
            aload 1 /* sipper */
            invokevirtual com.android.internal.os.BatteryStatsHelper.isTypeService:(Lcom/android/internal/os/BatterySipper;)Z
            ifne 10
         8: .line 928
            aload 0 /* this */
            aload 1 /* sipper */
            invokevirtual com.android.internal.os.BatteryStatsHelper.isTypeSystem:(Lcom/android/internal/os/BatterySipper;)Z
            ifne 10
         9: .line 921
            iconst_0
            ireturn
      StackMap locals: com.android.internal.os.BatterySipper$DrainType
      StackMap stack:
        10: iconst_1
            ireturn
        end local 2 // com.android.internal.os.BatterySipper$DrainType drainType
        end local 1 // com.android.internal.os.BatterySipper sipper
        end local 0 // com.android.internal.os.BatteryStatsHelper this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   11     0       this  Lcom/android/internal/os/BatteryStatsHelper;
            0   11     1     sipper  Lcom/android/internal/os/BatterySipper;
            1   11     2  drainType  Lcom/android/internal/os/BatterySipper$DrainType;
    MethodParameters:
        Name  Flags
      sipper  

  public boolean isTypeService(com.android.internal.os.BatterySipper);
    descriptor: (Lcom/android/internal/os/BatterySipper;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=7, args_size=2
        start local 0 // com.android.internal.os.BatteryStatsHelper this
        start local 1 // com.android.internal.os.BatterySipper sipper
         0: .line 935
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mPackageManager:Landroid/content/pm/PackageManager;
            aload 1 /* sipper */
            invokevirtual com.android.internal.os.BatterySipper.getUid:()I
            invokevirtual android.content.pm.PackageManager.getPackagesForUid:(I)[Ljava/lang/String;
            astore 2 /* packages */
        start local 2 // java.lang.String[] packages
         1: .line 936
            aload 2 /* packages */
            ifnonnull 3
         2: .line 937
            iconst_0
            ireturn
         3: .line 940
      StackMap locals: java.lang.String[]
      StackMap stack:
            aload 2 /* packages */
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 8
      StackMap locals: com.android.internal.os.BatteryStatsHelper com.android.internal.os.BatterySipper java.lang.String[] top int int java.lang.String[]
      StackMap stack:
         4: aload 6
            iload 4
            aaload
            astore 3 /* packageName */
        start local 3 // java.lang.String packageName
         5: .line 941
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mServicepackageArray:[Ljava/lang/String;
            aload 3 /* packageName */
            invokestatic com.android.internal.util.ArrayUtils.contains:([Ljava/lang/Object;Ljava/lang/Object;)Z
            ifeq 7
         6: .line 942
            iconst_1
            ireturn
        end local 3 // java.lang.String packageName
         7: .line 940
      StackMap locals:
      StackMap stack:
            iinc 4 1
      StackMap locals:
      StackMap stack:
         8: iload 4
            iload 5
            if_icmplt 4
         9: .line 946
            iconst_0
            ireturn
        end local 2 // java.lang.String[] packages
        end local 1 // com.android.internal.os.BatterySipper sipper
        end local 0 // com.android.internal.os.BatteryStatsHelper this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   10     0         this  Lcom/android/internal/os/BatteryStatsHelper;
            0   10     1       sipper  Lcom/android/internal/os/BatterySipper;
            1   10     2     packages  [Ljava/lang/String;
            5    7     3  packageName  Ljava/lang/String;
    MethodParameters:
        Name  Flags
      sipper  

  public boolean isTypeSystem(com.android.internal.os.BatterySipper);
    descriptor: (Lcom/android/internal/os/BatterySipper;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=7, args_size=2
        start local 0 // com.android.internal.os.BatteryStatsHelper this
        start local 1 // com.android.internal.os.BatterySipper sipper
         0: .line 953
            aload 1 /* sipper */
            getfield com.android.internal.os.BatterySipper.uidObj:Landroid/os/BatteryStats$Uid;
            ifnonnull 1
            iconst_m1
            goto 2
      StackMap locals:
      StackMap stack:
         1: aload 1 /* sipper */
            invokevirtual com.android.internal.os.BatterySipper.getUid:()I
      StackMap locals:
      StackMap stack: int
         2: istore 2 /* uid */
        start local 2 // int uid
         3: .line 954
            aload 1 /* sipper */
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mPackageManager:Landroid/content/pm/PackageManager;
            iload 2 /* uid */
            invokevirtual android.content.pm.PackageManager.getPackagesForUid:(I)[Ljava/lang/String;
            putfield com.android.internal.os.BatterySipper.mPackages:[Ljava/lang/String;
         4: .line 956
            iload 2 /* uid */
            iflt 6
            iload 2 /* uid */
            sipush 10000
            if_icmpge 6
         5: .line 957
            iconst_1
            ireturn
         6: .line 958
      StackMap locals: int
      StackMap stack:
            aload 1 /* sipper */
            getfield com.android.internal.os.BatterySipper.mPackages:[Ljava/lang/String;
            ifnull 13
         7: .line 959
            aload 1 /* sipper */
            getfield com.android.internal.os.BatterySipper.mPackages:[Ljava/lang/String;
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 12
      StackMap locals: com.android.internal.os.BatteryStatsHelper com.android.internal.os.BatterySipper int top int int java.lang.String[]
      StackMap stack:
         8: aload 6
            iload 4
            aaload
            astore 3 /* packageName */
        start local 3 // java.lang.String packageName
         9: .line 960
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mSystemPackageArray:[Ljava/lang/String;
            aload 3 /* packageName */
            invokestatic com.android.internal.util.ArrayUtils.contains:([Ljava/lang/Object;Ljava/lang/Object;)Z
            ifeq 11
        10: .line 961
            iconst_1
            ireturn
        end local 3 // java.lang.String packageName
        11: .line 959
      StackMap locals:
      StackMap stack:
            iinc 4 1
      StackMap locals:
      StackMap stack:
        12: iload 4
            iload 5
            if_icmplt 8
        13: .line 966
      StackMap locals: com.android.internal.os.BatteryStatsHelper com.android.internal.os.BatterySipper int
      StackMap stack:
            iconst_0
            ireturn
        end local 2 // int uid
        end local 1 // com.android.internal.os.BatterySipper sipper
        end local 0 // com.android.internal.os.BatteryStatsHelper this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   14     0         this  Lcom/android/internal/os/BatteryStatsHelper;
            0   14     1       sipper  Lcom/android/internal/os/BatterySipper;
            3   14     2          uid  I
            9   11     3  packageName  Ljava/lang/String;
    MethodParameters:
        Name  Flags
      sipper  

  public long convertUsToMs(long);
    descriptor: (J)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // com.android.internal.os.BatteryStatsHelper this
        start local 1 // long timeUs
         0: .line 970
            lload 1 /* timeUs */
            ldc 1000
            ldiv
            lreturn
        end local 1 // long timeUs
        end local 0 // com.android.internal.os.BatteryStatsHelper this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lcom/android/internal/os/BatteryStatsHelper;
            0    1     1  timeUs  J
    MethodParameters:
        Name  Flags
      timeUs  

  public long convertMsToUs(long);
    descriptor: (J)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // com.android.internal.os.BatteryStatsHelper this
        start local 1 // long timeMs
         0: .line 974
            lload 1 /* timeMs */
            ldc 1000
            lmul
            lreturn
        end local 1 // long timeMs
        end local 0 // com.android.internal.os.BatteryStatsHelper this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lcom/android/internal/os/BatteryStatsHelper;
            0    1     1  timeMs  J
    MethodParameters:
        Name  Flags
      timeMs  

  public long getForegroundActivityTotalTimeUs(android.os.BatteryStats$Uid, long);
    descriptor: (Landroid/os/BatteryStats$Uid;J)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // com.android.internal.os.BatteryStatsHelper this
        start local 1 // android.os.BatteryStats$Uid uid
        start local 2 // long rawRealtimeUs
         0: .line 979
            aload 1 /* uid */
            invokevirtual android.os.BatteryStats$Uid.getForegroundActivityTimer:()Landroid/os/BatteryStats$Timer;
            astore 4 /* timer */
        start local 4 // android.os.BatteryStats$Timer timer
         1: .line 980
            aload 4 /* timer */
            ifnull 3
         2: .line 981
            aload 4 /* timer */
            lload 2 /* rawRealtimeUs */
            iconst_0
            invokevirtual android.os.BatteryStats$Timer.getTotalTimeLocked:(JI)J
            lreturn
         3: .line 984
      StackMap locals: android.os.BatteryStats$Timer
      StackMap stack:
            lconst_0
            lreturn
        end local 4 // android.os.BatteryStats$Timer timer
        end local 2 // long rawRealtimeUs
        end local 1 // android.os.BatteryStats$Uid uid
        end local 0 // com.android.internal.os.BatteryStatsHelper this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    4     0           this  Lcom/android/internal/os/BatteryStatsHelper;
            0    4     1            uid  Landroid/os/BatteryStats$Uid;
            0    4     2  rawRealtimeUs  J
            1    4     4          timer  Landroid/os/BatteryStats$Timer;
    RuntimeInvisibleAnnotations: 
      com.android.internal.annotations.VisibleForTesting()
    RuntimeInvisibleTypeAnnotations: 
      METHOD_RETURN
        com.android.internal.annotations.VisibleForTesting()
    MethodParameters:
               Name  Flags
      uid            
      rawRealtimeUs  

  public long getProcessForegroundTimeMs(android.os.BatteryStats$Uid, int);
    descriptor: (Landroid/os/BatteryStats$Uid;I)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=14, args_size=3
        start local 0 // com.android.internal.os.BatteryStatsHelper this
        start local 1 // android.os.BatteryStats$Uid uid
        start local 2 // int which
         0: .line 989
            aload 0 /* this */
            invokestatic android.os.SystemClock.elapsedRealtime:()J
            invokevirtual com.android.internal.os.BatteryStatsHelper.convertMsToUs:(J)J
            lstore 3 /* rawRealTimeUs */
        start local 3 // long rawRealTimeUs
         1: .line 990
            iconst_1
            newarray 10
            astore 5 /* foregroundTypes */
        start local 5 // int[] foregroundTypes
         2: .line 992
            lconst_0
            lstore 6 /* timeUs */
        start local 6 // long timeUs
         3: .line 993
            aload 5 /* foregroundTypes */
            dup
            astore 11
            arraylength
            istore 10
            iconst_0
            istore 9
            goto 8
      StackMap locals: com.android.internal.os.BatteryStatsHelper android.os.BatteryStats$Uid int long int[] long top int int int[]
      StackMap stack:
         4: aload 11
            iload 9
            iaload
            istore 8 /* type */
        start local 8 // int type
         5: .line 994
            aload 1 /* uid */
            iload 8 /* type */
            lload 3 /* rawRealTimeUs */
            iload 2 /* which */
            invokevirtual android.os.BatteryStats$Uid.getProcessStateTime:(IJI)J
            lstore 12 /* localTime */
        start local 12 // long localTime
         6: .line 995
            lload 6 /* timeUs */
            lload 12 /* localTime */
            ladd
            lstore 6 /* timeUs */
        end local 12 // long localTime
        end local 8 // int type
         7: .line 993
            iinc 9 1
      StackMap locals:
      StackMap stack:
         8: iload 9
            iload 10
            if_icmplt 4
         9: .line 1000
            aload 0 /* this */
        10: .line 1001
            lload 6 /* timeUs */
            aload 0 /* this */
            aload 1 /* uid */
            lload 3 /* rawRealTimeUs */
            invokevirtual com.android.internal.os.BatteryStatsHelper.getForegroundActivityTotalTimeUs:(Landroid/os/BatteryStats$Uid;J)J
            invokestatic java.lang.Math.min:(JJ)J
        11: .line 1000
            invokevirtual com.android.internal.os.BatteryStatsHelper.convertUsToMs:(J)J
            lreturn
        end local 6 // long timeUs
        end local 5 // int[] foregroundTypes
        end local 3 // long rawRealTimeUs
        end local 2 // int which
        end local 1 // android.os.BatteryStats$Uid uid
        end local 0 // com.android.internal.os.BatteryStatsHelper this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   12     0             this  Lcom/android/internal/os/BatteryStatsHelper;
            0   12     1              uid  Landroid/os/BatteryStats$Uid;
            0   12     2            which  I
            1   12     3    rawRealTimeUs  J
            2   12     5  foregroundTypes  [I
            3   12     6           timeUs  J
            5    7     8             type  I
            6    7    12        localTime  J
    RuntimeInvisibleAnnotations: 
      com.android.internal.annotations.VisibleForTesting()
    RuntimeInvisibleTypeAnnotations: 
      METHOD_RETURN
        com.android.internal.annotations.VisibleForTesting()
    MethodParameters:
       Name  Flags
      uid    
      which  

  public void setPackageManager(android.content.pm.PackageManager);
    descriptor: (Landroid/content/pm/PackageManager;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.android.internal.os.BatteryStatsHelper this
        start local 1 // android.content.pm.PackageManager packageManager
         0: .line 1006
            aload 0 /* this */
            aload 1 /* packageManager */
            putfield com.android.internal.os.BatteryStatsHelper.mPackageManager:Landroid/content/pm/PackageManager;
         1: .line 1007
            return
        end local 1 // android.content.pm.PackageManager packageManager
        end local 0 // com.android.internal.os.BatteryStatsHelper this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    2     0            this  Lcom/android/internal/os/BatteryStatsHelper;
            0    2     1  packageManager  Landroid/content/pm/PackageManager;
    RuntimeInvisibleAnnotations: 
      com.android.internal.annotations.VisibleForTesting()
    MethodParameters:
                Name  Flags
      packageManager  

  public void setSystemPackageArray(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.android.internal.os.BatteryStatsHelper this
        start local 1 // java.lang.String[] array
         0: .line 1011
            aload 0 /* this */
            aload 1 /* array */
            putfield com.android.internal.os.BatteryStatsHelper.mSystemPackageArray:[Ljava/lang/String;
         1: .line 1012
            return
        end local 1 // java.lang.String[] array
        end local 0 // com.android.internal.os.BatteryStatsHelper this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lcom/android/internal/os/BatteryStatsHelper;
            0    2     1  array  [Ljava/lang/String;
    RuntimeInvisibleAnnotations: 
      com.android.internal.annotations.VisibleForTesting()
    MethodParameters:
       Name  Flags
      array  

  public void setServicePackageArray(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.android.internal.os.BatteryStatsHelper this
        start local 1 // java.lang.String[] array
         0: .line 1016
            aload 0 /* this */
            aload 1 /* array */
            putfield com.android.internal.os.BatteryStatsHelper.mServicepackageArray:[Ljava/lang/String;
         1: .line 1017
            return
        end local 1 // java.lang.String[] array
        end local 0 // com.android.internal.os.BatteryStatsHelper this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lcom/android/internal/os/BatteryStatsHelper;
            0    2     1  array  [Ljava/lang/String;
    RuntimeInvisibleAnnotations: 
      com.android.internal.annotations.VisibleForTesting()
    MethodParameters:
       Name  Flags
      array  

  private void load();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=1, args_size=1
        start local 0 // com.android.internal.os.BatteryStatsHelper this
         0: .line 1020
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mBatteryInfo:Lcom/android/internal/app/IBatteryStats;
            ifnonnull 2
         1: .line 1021
            return
         2: .line 1023
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mBatteryInfo:Lcom/android/internal/app/IBatteryStats;
            invokestatic com.android.internal.os.BatteryStatsHelper.getStats:(Lcom/android/internal/app/IBatteryStats;)Lcom/android/internal/os/BatteryStatsImpl;
            putfield com.android.internal.os.BatteryStatsHelper.mStats:Landroid/os/BatteryStats;
         3: .line 1024
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mCollectBatteryBroadcast:Z
            ifeq 7
         4: .line 1025
            aload 0 /* this */
            aload 0 /* this */
            getfield com.android.internal.os.BatteryStatsHelper.mContext:Landroid/content/Context;
            aconst_null
         5: .line 1026
            new android.content.IntentFilter
            dup
            ldc "android.intent.action.BATTERY_CHANGED"
            invokespecial android.content.IntentFilter.<init>:(Ljava/lang/String;)V
         6: .line 1025
            invokevirtual android.content.Context.registerReceiver:(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent;
            putfield com.android.internal.os.BatteryStatsHelper.mBatteryBroadcast:Landroid/content/Intent;
         7: .line 1028
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.android.internal.os.BatteryStatsHelper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lcom/android/internal/os/BatteryStatsHelper;

  private static com.android.internal.os.BatteryStatsImpl getStats(com.android.internal.app.IBatteryStats);
    descriptor: (Lcom/android/internal/app/IBatteryStats;)Lcom/android/internal/os/BatteryStatsImpl;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=8, args_size=1
        start local 0 // com.android.internal.app.IBatteryStats service
         0: .line 1032
            aload 0 /* service */
            invokeinterface com.android.internal.app.IBatteryStats.getStatisticsStream:()Landroid/os/ParcelFileDescriptor;
            astore 1 /* pfd */
        start local 1 // android.os.ParcelFileDescriptor pfd
         1: .line 1033
            aload 1 /* pfd */
            ifnull 25
         2: .line 1034
            aconst_null
            astore 2
            aconst_null
            astore 3
         3: new android.os.ParcelFileDescriptor$AutoCloseInputStream
            dup
            aload 1 /* pfd */
            invokespecial android.os.ParcelFileDescriptor$AutoCloseInputStream.<init>:(Landroid/os/ParcelFileDescriptor;)V
            astore 4 /* fis */
        start local 4 // java.io.FileInputStream fis
         4: .line 1035
            aload 4 /* fis */
            aload 1 /* pfd */
            invokevirtual android.os.ParcelFileDescriptor.getFileDescriptor:()Ljava/io/FileDescriptor;
            invokestatic android.os.MemoryFile.getSize:(Ljava/io/FileDescriptor;)I
            invokestatic com.android.internal.os.BatteryStatsHelper.readFully:(Ljava/io/FileInputStream;I)[B
            astore 5 /* data */
        start local 5 // byte[] data
         5: .line 1036
            invokestatic android.os.Parcel.obtain:()Landroid/os/Parcel;
            astore 6 /* parcel */
        start local 6 // android.os.Parcel parcel
         6: .line 1037
            aload 6 /* parcel */
            aload 5 /* data */
            iconst_0
            aload 5 /* data */
            arraylength
            invokevirtual android.os.Parcel.unmarshall:([BII)V
         7: .line 1038
            aload 6 /* parcel */
            iconst_0
            invokevirtual android.os.Parcel.setDataPosition:(I)V
         8: .line 1039
            getstatic com.android.internal.os.BatteryStatsImpl.CREATOR:Landroid/os/Parcelable$Creator;
         9: .line 1040
            aload 6 /* parcel */
            invokeinterface android.os.Parcelable$Creator.createFromParcel:(Landroid/os/Parcel;)Ljava/lang/Object;
            checkcast com.android.internal.os.BatteryStatsImpl
        10: .line 1039
            astore 7 /* stats */
        start local 7 // com.android.internal.os.BatteryStatsImpl stats
        11: .line 1041
            aload 7 /* stats */
        12: .line 1042
            aload 4 /* fis */
            ifnull 13
            aload 4 /* fis */
            invokevirtual java.io.FileInputStream.close:()V
        13: .line 1041
      StackMap locals: com.android.internal.app.IBatteryStats android.os.ParcelFileDescriptor java.lang.Throwable java.lang.Throwable java.io.FileInputStream byte[] android.os.Parcel com.android.internal.os.BatteryStatsImpl
      StackMap stack: com.android.internal.os.BatteryStatsImpl
            areturn
        end local 7 // com.android.internal.os.BatteryStatsImpl stats
        end local 6 // android.os.Parcel parcel
        end local 5 // byte[] data
      StackMap locals: com.android.internal.app.IBatteryStats android.os.ParcelFileDescriptor java.lang.Throwable java.lang.Throwable java.io.FileInputStream
      StackMap stack: java.lang.Throwable
        14: astore 2
        15: .line 1042
            aload 4 /* fis */
            ifnull 16
            aload 4 /* fis */
            invokevirtual java.io.FileInputStream.close:()V
        end local 4 // java.io.FileInputStream fis
      StackMap locals:
      StackMap stack:
        16: aload 2
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        17: astore 3
            aload 2
            ifnonnull 18
            aload 3
            astore 2
            goto 19
      StackMap locals:
      StackMap stack:
        18: aload 2
            aload 3
            if_acmpeq 19
            aload 2
            aload 3
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        19: aload 2
            athrow
      StackMap locals: com.android.internal.app.IBatteryStats android.os.ParcelFileDescriptor
      StackMap stack: java.io.IOException
        20: astore 2 /* e */
        start local 2 // java.io.IOException e
        21: .line 1043
            getstatic com.android.internal.os.BatteryStatsHelper.TAG:Ljava/lang/String;
            ldc "Unable to read statistics stream"
            aload 2 /* e */
            invokestatic android.util.Log.w:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
            pop
        end local 2 // java.io.IOException e
        end local 1 // android.os.ParcelFileDescriptor pfd
        22: .line 1046
            goto 25
      StackMap locals: com.android.internal.app.IBatteryStats
      StackMap stack: android.os.RemoteException
        23: astore 1 /* e */
        start local 1 // android.os.RemoteException e
        24: .line 1047
            getstatic com.android.internal.os.BatteryStatsHelper.TAG:Ljava/lang/String;
            ldc "RemoteException:"
            aload 1 /* e */
            invokestatic android.util.Log.w:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
            pop
        end local 1 // android.os.RemoteException e
        25: .line 1049
      StackMap locals:
      StackMap stack:
            new com.android.internal.os.BatteryStatsImpl
            dup
            invokespecial com.android.internal.os.BatteryStatsImpl.<init>:()V
            areturn
        end local 0 // com.android.internal.app.IBatteryStats service
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   26     0  service  Lcom/android/internal/app/IBatteryStats;
            1   22     1      pfd  Landroid/os/ParcelFileDescriptor;
            4   16     4      fis  Ljava/io/FileInputStream;
            5   14     5     data  [B
            6   14     6   parcel  Landroid/os/Parcel;
           11   14     7    stats  Lcom/android/internal/os/BatteryStatsImpl;
           21   22     2        e  Ljava/io/IOException;
           24   25     1        e  Landroid/os/RemoteException;
      Exception table:
        from    to  target  type
           4    12      14  any
           3    13      17  any
          14    17      17  any
           2    13      20  Class java.io.IOException
          14    20      20  Class java.io.IOException
           0    13      23  Class android.os.RemoteException
          14    22      23  Class android.os.RemoteException
    MethodParameters:
         Name  Flags
      service  
}
SourceFile: "BatteryStatsHelper.java"
NestMembers:
  com.android.internal.os.BatteryStatsHelper$1
InnerClasses:
  public abstract Timer = android.os.BatteryStats$Timer of android.os.BatteryStats
  public abstract Uid = android.os.BatteryStats$Uid of android.os.BatteryStats
  public AutoCloseInputStream = android.os.ParcelFileDescriptor$AutoCloseInputStream of android.os.ParcelFileDescriptor
  public abstract Creator = android.os.Parcelable$Creator of android.os.Parcelable
  public abstract Stub = com.android.internal.app.IBatteryStats$Stub of com.android.internal.app.IBatteryStats
  public final DrainType = com.android.internal.os.BatterySipper$DrainType of com.android.internal.os.BatterySipper
  com.android.internal.os.BatteryStatsHelper$1