public class java.util.Base64$Decoder
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: java.util.Base64$Decoder
super_class: java.lang.Object
{
private final boolean isURL;
descriptor: Z
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final boolean isMIME;
descriptor: Z
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private static final int[] fromBase64;
descriptor: [I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final int[] fromBase64URL;
descriptor: [I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
static final java.util.Base64$Decoder RFC4648;
descriptor: Ljava/util/Base64$Decoder;
flags: (0x0018) ACC_STATIC, ACC_FINAL
static final java.util.Base64$Decoder RFC4648_URLSAFE;
descriptor: Ljava/util/Base64$Decoder;
flags: (0x0018) ACC_STATIC, ACC_FINAL
static final java.util.Base64$Decoder RFC2045;
descriptor: Ljava/util/Base64$Decoder;
flags: (0x0018) ACC_STATIC, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=1, args_size=0
0: .line 494
sipush 256
newarray 10
putstatic java.util.Base64$Decoder.fromBase64:[I
1: .line 496
getstatic java.util.Base64$Decoder.fromBase64:[I
iconst_m1
invokestatic java.util.Arrays.fill:([II)V
2: .line 497
iconst_0
istore 0 /* i */
start local 0 // int i
3: goto 6
4: .line 498
StackMap locals: int
StackMap stack:
getstatic java.util.Base64$Decoder.fromBase64:[I
getstatic java.util.Base64$Encoder.toBase64:[C
iload 0 /* i */
caload
iload 0 /* i */
iastore
5: .line 497
iinc 0 /* i */ 1
StackMap locals:
StackMap stack:
6: iload 0 /* i */
getstatic java.util.Base64$Encoder.toBase64:[C
arraylength
if_icmplt 4
end local 0 // int i
7: .line 499
getstatic java.util.Base64$Decoder.fromBase64:[I
bipush 61
bipush -2
iastore
8: .line 506
sipush 256
newarray 10
putstatic java.util.Base64$Decoder.fromBase64URL:[I
9: .line 509
getstatic java.util.Base64$Decoder.fromBase64URL:[I
iconst_m1
invokestatic java.util.Arrays.fill:([II)V
10: .line 510
iconst_0
istore 0 /* i */
start local 0 // int i
11: goto 14
12: .line 511
StackMap locals:
StackMap stack:
getstatic java.util.Base64$Decoder.fromBase64URL:[I
getstatic java.util.Base64$Encoder.toBase64URL:[C
iload 0 /* i */
caload
iload 0 /* i */
iastore
13: .line 510
iinc 0 /* i */ 1
StackMap locals:
StackMap stack:
14: iload 0 /* i */
getstatic java.util.Base64$Encoder.toBase64URL:[C
arraylength
if_icmplt 12
end local 0 // int i
15: .line 512
getstatic java.util.Base64$Decoder.fromBase64URL:[I
bipush 61
bipush -2
iastore
16: .line 515
new java.util.Base64$Decoder
dup
iconst_0
iconst_0
invokespecial java.util.Base64$Decoder.<init>:(ZZ)V
putstatic java.util.Base64$Decoder.RFC4648:Ljava/util/Base64$Decoder;
17: .line 516
new java.util.Base64$Decoder
dup
iconst_1
iconst_0
invokespecial java.util.Base64$Decoder.<init>:(ZZ)V
putstatic java.util.Base64$Decoder.RFC4648_URLSAFE:Ljava/util/Base64$Decoder;
18: .line 517
new java.util.Base64$Decoder
dup
iconst_0
iconst_1
invokespecial java.util.Base64$Decoder.<init>:(ZZ)V
putstatic java.util.Base64$Decoder.RFC2045:Ljava/util/Base64$Decoder;
return
LocalVariableTable:
Start End Slot Name Signature
3 7 0 i I
11 15 0 i I
private void <init>(boolean, boolean);
descriptor: (ZZ)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=3, args_size=3
start local 0 // java.util.Base64$Decoder this
start local 1 // boolean isURL
start local 2 // boolean isMIME
0: .line 481
aload 0 /* this */
invokespecial java.lang.Object.<init>:()V
1: .line 482
aload 0 /* this */
iload 1 /* isURL */
putfield java.util.Base64$Decoder.isURL:Z
2: .line 483
aload 0 /* this */
iload 2 /* isMIME */
putfield java.util.Base64$Decoder.isMIME:Z
3: .line 484
return
end local 2 // boolean isMIME
end local 1 // boolean isURL
end local 0 // java.util.Base64$Decoder this
LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Ljava/util/Base64$Decoder;
0 4 1 isURL Z
0 4 2 isMIME Z
MethodParameters:
Name Flags
isURL
isMIME
public byte[] decode(byte[]);
descriptor: ([B)[B
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=4, args_size=2
start local 0 // java.util.Base64$Decoder this
start local 1 // byte[] src
0: .line 534
aload 0 /* this */
aload 1 /* src */
iconst_0
aload 1 /* src */
arraylength
invokevirtual java.util.Base64$Decoder.outLength:([BII)I
newarray 8
astore 2 /* dst */
start local 2 // byte[] dst
1: .line 535
aload 0 /* this */
aload 1 /* src */
iconst_0
aload 1 /* src */
arraylength
aload 2 /* dst */
invokevirtual java.util.Base64$Decoder.decode0:([BII[B)I
istore 3 /* ret */
start local 3 // int ret
2: .line 536
iload 3 /* ret */
aload 2 /* dst */
arraylength
if_icmpeq 4
3: .line 537
aload 2 /* dst */
iload 3 /* ret */
invokestatic java.util.Arrays.copyOf:([BI)[B
astore 2 /* dst */
4: .line 539
StackMap locals: byte[] int
StackMap stack:
aload 2 /* dst */
areturn
end local 3 // int ret
end local 2 // byte[] dst
end local 1 // byte[] src
end local 0 // java.util.Base64$Decoder this
LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Ljava/util/Base64$Decoder;
0 5 1 src [B
1 5 2 dst [B
2 5 3 ret I
MethodParameters:
Name Flags
src
public byte[] decode(java.lang.String);
descriptor: (Ljava/lang/String;)[B
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 // java.util.Base64$Decoder this
start local 1 // java.lang.String src
0: .line 558
aload 0 /* this */
aload 1 /* src */
getstatic java.nio.charset.StandardCharsets.ISO_8859_1:Ljava/nio/charset/Charset;
invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
invokevirtual java.util.Base64$Decoder.decode:([B)[B
areturn
end local 1 // java.lang.String src
end local 0 // java.util.Base64$Decoder this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/util/Base64$Decoder;
0 1 1 src Ljava/lang/String;
MethodParameters:
Name Flags
src
public int decode(byte[], byte[]);
descriptor: ([B[B)I
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=4, args_size=3
start local 0 // java.util.Base64$Decoder this
start local 1 // byte[] src
start local 2 // byte[] dst
0: .line 587
aload 0 /* this */
aload 1 /* src */
iconst_0
aload 1 /* src */
arraylength
invokevirtual java.util.Base64$Decoder.outLength:([BII)I
istore 3 /* len */
start local 3 // int len
1: .line 588
aload 2 /* dst */
arraylength
iload 3 /* len */
if_icmpge 5
2: .line 589
new java.lang.IllegalArgumentException
dup
3: .line 590
ldc "Output byte array is too small for decoding all input bytes"
4: .line 589
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
5: .line 591
StackMap locals: int
StackMap stack:
aload 0 /* this */
aload 1 /* src */
iconst_0
aload 1 /* src */
arraylength
aload 2 /* dst */
invokevirtual java.util.Base64$Decoder.decode0:([BII[B)I
ireturn
end local 3 // int len
end local 2 // byte[] dst
end local 1 // byte[] src
end local 0 // java.util.Base64$Decoder this
LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Ljava/util/Base64$Decoder;
0 6 1 src [B
0 6 2 dst [B
1 6 3 len I
MethodParameters:
Name Flags
src
dst
public java.nio.ByteBuffer decode(java.nio.ByteBuffer);
descriptor: (Ljava/nio/ByteBuffer;)Ljava/nio/ByteBuffer;
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=7, args_size=2
start local 0 // java.util.Base64$Decoder this
start local 1 // java.nio.ByteBuffer buffer
0: .line 616
aload 1 /* buffer */
invokevirtual java.nio.ByteBuffer.position:()I
istore 2 /* pos0 */
start local 2 // int pos0
1: .line 620
aload 1 /* buffer */
invokevirtual java.nio.ByteBuffer.hasArray:()Z
ifeq 7
2: .line 621
aload 1 /* buffer */
invokevirtual java.nio.ByteBuffer.array:()[B
astore 3 /* src */
start local 3 // byte[] src
3: .line 622
aload 1 /* buffer */
invokevirtual java.nio.ByteBuffer.arrayOffset:()I
aload 1 /* buffer */
invokevirtual java.nio.ByteBuffer.position:()I
iadd
istore 4 /* sp */
start local 4 // int sp
4: .line 623
aload 1 /* buffer */
invokevirtual java.nio.ByteBuffer.arrayOffset:()I
aload 1 /* buffer */
invokevirtual java.nio.ByteBuffer.limit:()I
iadd
istore 5 /* sl */
start local 5 // int sl
5: .line 624
aload 1 /* buffer */
aload 1 /* buffer */
invokevirtual java.nio.ByteBuffer.limit:()I
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
pop
6: .line 625
goto 11
end local 5 // int sl
end local 4 // int sp
end local 3 // byte[] src
7: .line 626
StackMap locals: int
StackMap stack:
aload 1 /* buffer */
invokevirtual java.nio.ByteBuffer.remaining:()I
newarray 8
astore 3 /* src */
start local 3 // byte[] src
8: .line 627
aload 1 /* buffer */
aload 3 /* src */
invokevirtual java.nio.ByteBuffer.get:([B)Ljava/nio/ByteBuffer;
pop
9: .line 628
iconst_0
istore 4 /* sp */
start local 4 // int sp
10: .line 629
aload 3 /* src */
arraylength
istore 5 /* sl */
start local 5 // int sl
11: .line 631
StackMap locals: byte[] int int
StackMap stack:
aload 0 /* this */
aload 3 /* src */
iload 4 /* sp */
iload 5 /* sl */
invokevirtual java.util.Base64$Decoder.outLength:([BII)I
newarray 8
astore 6 /* dst */
start local 6 // byte[] dst
12: .line 632
aload 6 /* dst */
iconst_0
aload 0 /* this */
aload 3 /* src */
iload 4 /* sp */
iload 5 /* sl */
aload 6 /* dst */
invokevirtual java.util.Base64$Decoder.decode0:([BII[B)I
invokestatic java.nio.ByteBuffer.wrap:([BII)Ljava/nio/ByteBuffer;
13: areturn
end local 6 // byte[] dst
end local 5 // int sl
end local 4 // int sp
end local 3 // byte[] src
14: .line 633
StackMap locals: java.util.Base64$Decoder java.nio.ByteBuffer int
StackMap stack: java.lang.IllegalArgumentException
astore 3 /* iae */
start local 3 // java.lang.IllegalArgumentException iae
15: .line 634
aload 1 /* buffer */
iload 2 /* pos0 */
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
pop
16: .line 635
aload 3 /* iae */
athrow
end local 3 // java.lang.IllegalArgumentException iae
end local 2 // int pos0
end local 1 // java.nio.ByteBuffer buffer
end local 0 // java.util.Base64$Decoder this
LocalVariableTable:
Start End Slot Name Signature
0 17 0 this Ljava/util/Base64$Decoder;
0 17 1 buffer Ljava/nio/ByteBuffer;
1 17 2 pos0 I
3 7 3 src [B
8 14 3 src [B
4 7 4 sp I
10 14 4 sp I
5 7 5 sl I
11 14 5 sl I
12 14 6 dst [B
15 17 3 iae Ljava/lang/IllegalArgumentException;
Exception table:
from to target type
1 13 14 Class java.lang.IllegalArgumentException
MethodParameters:
Name Flags
buffer
public java.io.InputStream wrap(java.io.InputStream);
descriptor: (Ljava/io/InputStream;)Ljava/io/InputStream;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=2, args_size=2
start local 0 // java.util.Base64$Decoder this
start local 1 // java.io.InputStream is
0: .line 655
aload 1 /* is */
invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
pop
1: .line 656
new java.util.Base64$DecInputStream
dup
aload 1 /* is */
aload 0 /* this */
getfield java.util.Base64$Decoder.isURL:Z
ifeq 2
getstatic java.util.Base64$Decoder.fromBase64URL:[I
goto 3
StackMap locals: java.util.Base64$Decoder java.io.InputStream
StackMap stack: new 1 new 1 java.io.InputStream
2: getstatic java.util.Base64$Decoder.fromBase64:[I
StackMap locals: java.util.Base64$Decoder java.io.InputStream
StackMap stack: new 1 new 1 java.io.InputStream int[]
3: aload 0 /* this */
getfield java.util.Base64$Decoder.isMIME:Z
invokespecial java.util.Base64$DecInputStream.<init>:(Ljava/io/InputStream;[IZ)V
areturn
end local 1 // java.io.InputStream is
end local 0 // java.util.Base64$Decoder this
LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Ljava/util/Base64$Decoder;
0 4 1 is Ljava/io/InputStream;
MethodParameters:
Name Flags
is
private int outLength(byte[], int, int);
descriptor: ([BII)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=9, args_size=4
start local 0 // java.util.Base64$Decoder this
start local 1 // byte[] src
start local 2 // int sp
start local 3 // int sl
0: .line 660
aload 0 /* this */
getfield java.util.Base64$Decoder.isURL:Z
ifeq 1
getstatic java.util.Base64$Decoder.fromBase64URL:[I
goto 2
StackMap locals:
StackMap stack:
1: getstatic java.util.Base64$Decoder.fromBase64:[I
StackMap locals:
StackMap stack: int[]
2: astore 4 /* base64 */
start local 4 // int[] base64
3: .line 661
iconst_0
istore 5 /* paddings */
start local 5 // int paddings
4: .line 662
iload 3 /* sl */
iload 2 /* sp */
isub
istore 6 /* len */
start local 6 // int len
5: .line 663
iload 6 /* len */
ifne 7
6: .line 664
iconst_0
ireturn
7: .line 665
StackMap locals: int[] int int
StackMap stack:
iload 6 /* len */
iconst_2
if_icmpge 13
8: .line 666
aload 0 /* this */
getfield java.util.Base64$Decoder.isMIME:Z
ifeq 10
aload 4 /* base64 */
iconst_0
iaload
iconst_m1
if_icmpne 10
9: .line 667
iconst_0
ireturn
10: .line 668
StackMap locals:
StackMap stack:
new java.lang.IllegalArgumentException
dup
11: .line 669
ldc "Input byte[] should at least have 2 bytes for base64 bytes"
12: .line 668
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
13: .line 671
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield java.util.Base64$Decoder.isMIME:Z
ifeq 25
14: .line 674
iconst_0
istore 7 /* n */
start local 7 // int n
15: .line 675
goto 22
16: .line 676
StackMap locals: int
StackMap stack:
aload 1 /* src */
iload 2 /* sp */
iinc 2 /* sp */ 1
baload
sipush 255
iand
istore 8 /* b */
start local 8 // int b
17: .line 677
iload 8 /* b */
bipush 61
if_icmpne 20
18: .line 678
iload 6 /* len */
iload 3 /* sl */
iload 2 /* sp */
isub
iconst_1
iadd
isub
istore 6 /* len */
19: .line 679
goto 23
20: .line 681
StackMap locals: int
StackMap stack:
aload 4 /* base64 */
iload 8 /* b */
iaload
dup
istore 8 /* b */
iconst_m1
if_icmpne 22
21: .line 682
iinc 7 /* n */ 1
end local 8 // int b
22: .line 675
StackMap locals:
StackMap stack:
iload 2 /* sp */
iload 3 /* sl */
if_icmplt 16
23: .line 684
StackMap locals:
StackMap stack:
iload 6 /* len */
iload 7 /* n */
isub
istore 6 /* len */
end local 7 // int n
24: .line 685
goto 29
25: .line 686
StackMap locals:
StackMap stack:
aload 1 /* src */
iload 3 /* sl */
iconst_1
isub
baload
bipush 61
if_icmpne 29
26: .line 687
iinc 5 /* paddings */ 1
27: .line 688
aload 1 /* src */
iload 3 /* sl */
iconst_2
isub
baload
bipush 61
if_icmpne 29
28: .line 689
iinc 5 /* paddings */ 1
29: .line 692
StackMap locals:
StackMap stack:
iload 5 /* paddings */
ifne 31
iload 6 /* len */
iconst_3
iand
ifeq 31
30: .line 693
iconst_4
iload 6 /* len */
iconst_3
iand
isub
istore 5 /* paddings */
31: .line 694
StackMap locals:
StackMap stack:
iconst_3
iload 6 /* len */
iconst_3
iadd
iconst_4
idiv
imul
iload 5 /* paddings */
isub
ireturn
end local 6 // int len
end local 5 // int paddings
end local 4 // int[] base64
end local 3 // int sl
end local 2 // int sp
end local 1 // byte[] src
end local 0 // java.util.Base64$Decoder this
LocalVariableTable:
Start End Slot Name Signature
0 32 0 this Ljava/util/Base64$Decoder;
0 32 1 src [B
0 32 2 sp I
0 32 3 sl I
3 32 4 base64 [I
4 32 5 paddings I
5 32 6 len I
15 24 7 n I
17 22 8 b I
MethodParameters:
Name Flags
src
sp
sl
private int decode0(byte[], int, int, byte[]);
descriptor: ([BII[B)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=15, args_size=5
start local 0 // java.util.Base64$Decoder this
start local 1 // byte[] src
start local 2 // int sp
start local 3 // int sl
start local 4 // byte[] dst
0: .line 698
aload 0 /* this */
getfield java.util.Base64$Decoder.isURL:Z
ifeq 1
getstatic java.util.Base64$Decoder.fromBase64URL:[I
goto 2
StackMap locals:
StackMap stack:
1: getstatic java.util.Base64$Decoder.fromBase64:[I
StackMap locals:
StackMap stack: int[]
2: astore 5 /* base64 */
start local 5 // int[] base64
3: .line 699
iconst_0
istore 6 /* dp */
start local 6 // int dp
4: .line 700
iconst_0
istore 7 /* bits */
start local 7 // int bits
5: .line 701
bipush 18
istore 8 /* shiftto */
start local 8 // int shiftto
6: .line 703
goto 47
7: .line 704
StackMap locals: java.util.Base64$Decoder byte[] int int byte[] int[] int int int
StackMap stack:
iload 8 /* shiftto */
bipush 18
if_icmpne 24
iload 2 /* sp */
iconst_4
iadd
iload 3 /* sl */
if_icmpge 24
8: .line 705
iload 2 /* sp */
iload 3 /* sl */
iload 2 /* sp */
isub
bipush -4
iand
iadd
istore 9 /* sl0 */
start local 9 // int sl0
9: .line 706
goto 21
10: .line 707
StackMap locals: int
StackMap stack:
aload 5 /* base64 */
aload 1 /* src */
iload 2 /* sp */
iinc 2 /* sp */ 1
baload
sipush 255
iand
iaload
istore 10 /* b1 */
start local 10 // int b1
11: .line 708
aload 5 /* base64 */
aload 1 /* src */
iload 2 /* sp */
iinc 2 /* sp */ 1
baload
sipush 255
iand
iaload
istore 11 /* b2 */
start local 11 // int b2
12: .line 709
aload 5 /* base64 */
aload 1 /* src */
iload 2 /* sp */
iinc 2 /* sp */ 1
baload
sipush 255
iand
iaload
istore 12 /* b3 */
start local 12 // int b3
13: .line 710
aload 5 /* base64 */
aload 1 /* src */
iload 2 /* sp */
iinc 2 /* sp */ 1
baload
sipush 255
iand
iaload
istore 13 /* b4 */
start local 13 // int b4
14: .line 711
iload 10 /* b1 */
iload 11 /* b2 */
ior
iload 12 /* b3 */
ior
iload 13 /* b4 */
ior
ifge 17
15: .line 712
iinc 2 /* sp */ -4
16: .line 713
goto 22
17: .line 715
StackMap locals: java.util.Base64$Decoder byte[] int int byte[] int[] int int int int int int int int
StackMap stack:
iload 10 /* b1 */
bipush 18
ishl
iload 11 /* b2 */
bipush 12
ishl
ior
iload 12 /* b3 */
bipush 6
ishl
ior
iload 13 /* b4 */
ior
istore 14 /* bits0 */
start local 14 // int bits0
18: .line 716
aload 4 /* dst */
iload 6 /* dp */
iinc 6 /* dp */ 1
iload 14 /* bits0 */
bipush 16
ishr
i2b
bastore
19: .line 717
aload 4 /* dst */
iload 6 /* dp */
iinc 6 /* dp */ 1
iload 14 /* bits0 */
bipush 8
ishr
i2b
bastore
20: .line 718
aload 4 /* dst */
iload 6 /* dp */
iinc 6 /* dp */ 1
iload 14 /* bits0 */
i2b
bastore
end local 14 // int bits0
end local 13 // int b4
end local 12 // int b3
end local 11 // int b2
end local 10 // int b1
21: .line 706
StackMap locals: java.util.Base64$Decoder byte[] int int byte[] int[] int int int int
StackMap stack:
iload 2 /* sp */
iload 9 /* sl0 */
if_icmplt 10
22: .line 720
StackMap locals:
StackMap stack:
iload 2 /* sp */
iload 3 /* sl */
if_icmplt 24
23: .line 721
goto 48
end local 9 // int sl0
24: .line 723
StackMap locals:
StackMap stack:
aload 1 /* src */
iload 2 /* sp */
iinc 2 /* sp */ 1
baload
sipush 255
iand
istore 9 /* b */
start local 9 // int b
25: .line 724
aload 5 /* base64 */
iload 9 /* b */
iaload
dup
istore 9 /* b */
ifge 39
26: .line 725
iload 9 /* b */
bipush -2
if_icmpne 32
27: .line 731
iload 8 /* shiftto */
bipush 6
if_icmpne 28
iload 2 /* sp */
iload 3 /* sl */
if_icmpeq 29
aload 1 /* src */
iload 2 /* sp */
iinc 2 /* sp */ 1
baload
bipush 61
if_icmpne 29
28: .line 732
StackMap locals: int
StackMap stack:
iload 8 /* shiftto */
bipush 18
if_icmpne 48
29: .line 733
StackMap locals:
StackMap stack:
new java.lang.IllegalArgumentException
dup
30: .line 734
ldc "Input byte array has wrong 4-byte ending unit"
31: .line 733
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
32: .line 738
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield java.util.Base64$Decoder.isMIME:Z
ifeq 34
33: .line 739
goto 47
34: .line 741
StackMap locals:
StackMap stack:
new java.lang.IllegalArgumentException
dup
35: .line 742
new java.lang.StringBuilder
dup
ldc "Illegal base64 character "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
36: .line 743
aload 1 /* src */
iload 2 /* sp */
iconst_1
isub
baload
bipush 16
invokestatic java.lang.Integer.toString:(II)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
37: .line 742
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
38: .line 741
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
39: .line 745
StackMap locals:
StackMap stack:
iload 7 /* bits */
iload 9 /* b */
iload 8 /* shiftto */
ishl
ior
istore 7 /* bits */
40: .line 746
iinc 8 /* shiftto */ -6
41: .line 747
iload 8 /* shiftto */
ifge 47
42: .line 748
aload 4 /* dst */
iload 6 /* dp */
iinc 6 /* dp */ 1
iload 7 /* bits */
bipush 16
ishr
i2b
bastore
43: .line 749
aload 4 /* dst */
iload 6 /* dp */
iinc 6 /* dp */ 1
iload 7 /* bits */
bipush 8
ishr
i2b
bastore
44: .line 750
aload 4 /* dst */
iload 6 /* dp */
iinc 6 /* dp */ 1
iload 7 /* bits */
i2b
bastore
45: .line 751
bipush 18
istore 8 /* shiftto */
46: .line 752
iconst_0
istore 7 /* bits */
end local 9 // int b
47: .line 703
StackMap locals:
StackMap stack:
iload 2 /* sp */
iload 3 /* sl */
if_icmplt 7
48: .line 756
StackMap locals:
StackMap stack:
iload 8 /* shiftto */
bipush 6
if_icmpne 51
49: .line 757
aload 4 /* dst */
iload 6 /* dp */
iinc 6 /* dp */ 1
iload 7 /* bits */
bipush 16
ishr
i2b
bastore
50: .line 758
goto 64
StackMap locals:
StackMap stack:
51: iload 8 /* shiftto */
ifne 55
52: .line 759
aload 4 /* dst */
iload 6 /* dp */
iinc 6 /* dp */ 1
iload 7 /* bits */
bipush 16
ishr
i2b
bastore
53: .line 760
aload 4 /* dst */
iload 6 /* dp */
iinc 6 /* dp */ 1
iload 7 /* bits */
bipush 8
ishr
i2b
bastore
54: .line 761
goto 64
StackMap locals:
StackMap stack:
55: iload 8 /* shiftto */
bipush 12
if_icmpne 64
56: .line 763
new java.lang.IllegalArgumentException
dup
57: .line 764
ldc "Last unit does not have enough valid bits"
58: .line 763
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
59: .line 769
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield java.util.Base64$Decoder.isMIME:Z
ifeq 61
aload 5 /* base64 */
aload 1 /* src */
iload 2 /* sp */
iinc 2 /* sp */ 1
baload
sipush 255
iand
iaload
ifge 61
60: .line 770
goto 64
61: .line 771
StackMap locals:
StackMap stack:
new java.lang.IllegalArgumentException
dup
62: .line 772
new java.lang.StringBuilder
dup
ldc "Input byte array has incorrect ending byte at "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 2 /* sp */
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
63: .line 771
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
64: .line 768
StackMap locals:
StackMap stack:
iload 2 /* sp */
iload 3 /* sl */
if_icmplt 59
65: .line 774
iload 6 /* dp */
ireturn
end local 8 // int shiftto
end local 7 // int bits
end local 6 // int dp
end local 5 // int[] base64
end local 4 // byte[] dst
end local 3 // int sl
end local 2 // int sp
end local 1 // byte[] src
end local 0 // java.util.Base64$Decoder this
LocalVariableTable:
Start End Slot Name Signature
0 66 0 this Ljava/util/Base64$Decoder;
0 66 1 src [B
0 66 2 sp I
0 66 3 sl I
0 66 4 dst [B
3 66 5 base64 [I
4 66 6 dp I
5 66 7 bits I
6 66 8 shiftto I
9 24 9 sl0 I
11 21 10 b1 I
12 21 11 b2 I
13 21 12 b3 I
14 21 13 b4 I
18 21 14 bits0 I
25 47 9 b I
MethodParameters:
Name Flags
src
sp
sl
dst
}
SourceFile: "Base64.java"
NestHost: java.util.Base64
InnerClasses:
private DecInputStream = java.util.Base64$DecInputStream of java.util.Base64
public Decoder = java.util.Base64$Decoder of java.util.Base64
public Encoder = java.util.Base64$Encoder of java.util.Base64