BCrypt.smali
.class public final Lorg/spongycastle/crypto/generators/BCrypt;
.super Ljava/lang/Object;
.source "BCrypt.java"
# static fields
.field private static final KP:[I
.field private static final KS0:[I
.field private static final KS1:[I
.field private static final KS2:[I
.field private static final KS3:[I
.field private static final MAGIC_STRING:[I
.field static final MAGIC_STRING_LENGTH:I = 0x6
.field static final MAX_COST:I = 0x1f
.field static final MAX_PASSWORD_BYTES:I = 0x48
.field static final MIN_COST:I = 0x4
.field private static final P_SZ:I = 0x12
.field private static final ROUNDS:I = 0x10
.field static final SALT_SIZE_BYTES:I = 0x10
.field private static final SBOX_SK:I = 0x100
.field private static final SBOX_SK2:I = 0x200
.field private static final SBOX_SK3:I = 0x300
# instance fields
.field private final P:[I
.field private final S:[I
# direct methods
.method static constructor <clinit>()V
.registers 2
.prologue
const/16 v1, 0x100
.line 31
const/4 v0, 0x6
new-array v0, v0, [I
fill-array-data v0, :array_30
sput-object v0, Lorg/spongycastle/crypto/generators/BCrypt;->MAGIC_STRING:[I
.line 40
const/16 v0, 0x12
new-array v0, v0, [I
fill-array-data v0, :array_40
sput-object v0, Lorg/spongycastle/crypto/generators/BCrypt;->KP:[I
.line 48
new-array v0, v1, [I
fill-array-data v0, :array_68
sput-object v0, Lorg/spongycastle/crypto/generators/BCrypt;->KS0:[I
.line 115
new-array v0, v1, [I
fill-array-data v0, :array_26c
sput-object v0, Lorg/spongycastle/crypto/generators/BCrypt;->KS1:[I
.line 182
new-array v0, v1, [I
fill-array-data v0, :array_470
sput-object v0, Lorg/spongycastle/crypto/generators/BCrypt;->KS2:[I
.line 249
new-array v0, v1, [I
fill-array-data v0, :array_674
sput-object v0, Lorg/spongycastle/crypto/generators/BCrypt;->KS3:[I
return-void
.line 31
:array_30
.array-data 4
0x4f727068
0x65616e42
0x65686f6c
0x64657253
0x63727944
0x6f756274
.end array-data
.line 40
:array_40
.array-data 4
0x243f6a88
-0x7a5cf72d
0x13198a2e
0x3707344
-0x5bf6c7de
0x299f31d0
0x82efa98
-0x13b19377
0x452821e6
0x38d01377
-0x41ab9931
0x34e90c6c
-0x3f53d649
-0x3683af23
0x3f84d5b5
-0x4ab8f6e9
-0x6de92a27
-0x768604e5
.end array-data
.line 48
:array_68
.array-data 4
-0x2ecef45a
-0x67204a54
0x2ffd72db
-0x2fe52049
-0x471e5013
0x6a267e96
-0x45836fbb
-0xed38067
0x24a19947
-0x4c6e9309
0x801f2e2
-0x7a7103ea
0x636920d8
0x71574e69
-0x5ba7015d
-0xb6cc282
0xd95748f
0x728eb658
0x718bcd58
-0x7deab512
0x7b54a41d
-0x3da5a64b
-0x63cf2ac7
0x2af26013
-0x3a2e4fdd
0x286085f0
-0x35be86e8 # -3169862.0f
-0x4724c711
-0x71862350
0x603a180e
0x6c9e0e8b
-0x4fe175c2
-0x28ea883f
-0x42ceb4d9
0x78af2fda
0x55605c60
-0x19aada0d
-0x55aa546c
0x57489862
0x63e81440
0x55ca396a
0x2aab10b6
-0x4b33a3cc
0x1141e8ce
-0x5eab7951
0x7c72e993
-0x4c11ebef
0x636fbc2a
0x2ba9c55d
0x741831f6
-0x31a3c1ea
-0x64786ce2
-0x502945cd
0x6c24cf5c
0x7a325381
0x28958677
0x3b8f4898
0x6b4bb9af
-0x3b4017e5
0x66282193
0x61d809cc
-0x4de566f
0x487cac60 # 258737.5f
0x5dec8032
-0x107ba2a3
-0x167a8a4f
-0x23d9dcfe
-0x149ae478
0x23893e81
-0x2c69533b
0xf6d6ff3
-0x7c0bbdc7
0x2e0b4482
-0x5b7bdffc
0x69c8f04a
-0x61e064a2
0x21c66842
-0x9169366
0x670c9c61
-0x542c7710
0x6a51a0d2
-0x27abd098
-0x69f058d8
-0x54aecc5d
0x6eef0b6c
0x137a3be4
-0x45c40fb0
0x7efb2a98
-0x5e0e9ae3
0x39af0176
0x66ca593e
-0x7dbcf178
-0x731179e7
0x456f9fb4
0x7d84a5c3
0x3b8b5ebe
-0x1f908a28
-0x7a3edf8d
0x401a449f
0x56c16aa6
0x4ed3aa62
0x363f7706
0x1bfedf72
0x429b023d
0x37d0d724
-0x2ff5edb8
-0x24f0152d
0x49f1c09b
0x75372c9
-0x7f66e485
0x25d479d8
-0x9172109
-0x1c01afe6
-0x4986b3c5
-0x68931f43
0x4c006ba
-0x3e56b04a
0x409f60c4
0x5e5c9ec2
0x196a2463
0x68fb6faf
0x3e6c53b5
0x1339b2eb
0x3b52ec6f
0x6dfc511f
-0x64cf6ad4
-0x337ebabc # -6.7775008E7f
-0x50a142f7
-0x411c2ffc
-0x21ccb503
0x660f2807
0x192e4bb3
-0x3f3457a9
0x45c8740f
-0x2df4a0c7
-0x462c0425
0x5579c0bd
0x1a60320a
-0x295eff3a
0x402c7279
0x679f25fe
-0x4e05c34
-0x715a1608
-0x24cddd08
0x3c7516df
-0x29e94eb
0x2f501ec8
-0x52faad55
0x323db5fa
-0x2dc78a0
0x53317b48
0x3e00df82
-0x61a3a845
-0x35907360 # -3924776.0f
0x1a87562e
-0x20e89625
-0x2abd570a
0x287effc3
-0x5398cd3a
-0x73b0aa8d
0x695b27b0
-0x4435a738
-0x1e005ca3
-0x470fee60
0x10fa3d98
-0x2de7c48
0x4afcb56c # 8280758.0f
0x2dd1d35b
-0x65ac1b87
-0x4907ba9b
-0x2d71b644
0x4bfb9790 # 3.2976672E7f
-0x1e220d26
-0x5b3481cd
0x62fb1341
-0x311b3918
-0x10df3526
0x36774c01
-0x2f816102
0x2bf11fb4
-0x6a2425b3
-0x516f6e68
-0x1552718f
0x6b93d5a0
-0x2f712e30
-0x5038da20
-0x71c3a4d1
-0x718a6b49
-0x70091d05
-0xdedd49c
-0x777747ee
-0x6ff20fe4
0x4fad5ea0
0x688fc31c
-0x2e300e6f
-0x4c573e53
0x2f2f2218
-0x41f1e889
-0x158ad202
-0x74fde05f
-0x1a5f33f1
-0x4a908b18
0x18acf3d6
-0x31761d67
-0x4b57b020
-0x2ec1f49
0x7cc43b81
-0x2d525727
0x165fa266
-0x7f6a88fb
-0x6c338cec
0x211a1477
-0x1952df9b
0x77b5fa86
-0x38abbd0b
-0x462ca31
-0x143250f4
0x7b3e89a0
-0x29bee42d
-0x51e181b7
0x250e2d
0x2071b35e
0x226800bb
0x57b8e0af
0x2464369b
-0xff646e2
0x5563911d
0x59dfa6aa
0x78c14389
-0x26a5ac81
0x207d5ba2
0x2e5b9c5
-0x7cd9fc8a
0x6295cfa9
0x11c81968
0x4e734a41
-0x4cb8d236
0x7b14a94a
0x1b510052
-0x65acd6eb
-0x29f0a8c1
-0x4364391c
0x2b60a476
-0x7e198c00
0x8ba6fb5
0x571be91f
-0xd691395
0x2a0dd915
-0x499c9adf
-0x1846064a
-0xcbfad2
-0x3a7aa99c
0x53b02d5d
-0x5660705f
0x8ba4799
0x6e85076a
.end array-data
.line 115
:array_26c
.array-data 4
0x4b7a70e9 # 1.6412905E7f
-0x4a4cd6bc
-0x248af6d2
-0x3be6d9dd
-0x52915950
0x49a7df7d
-0x63119f48
-0x70124d9a
-0x1355738f
0x699a17ff
0x5664526c
-0x3d4e611f
0x193602a5
0x75094c29
-0x5fa6ecc0
-0x1be7c5c2
0x3f54989a
0x5b429d65
0x6b8fe4d6
-0x6608c02a
-0x5e2d63f9
-0x1017cf0b
0x4d2d38e6 # 1.81636704E8f
-0xfdaa23f
0x4cdd2086 # 1.15934256E8f
-0x7b8f14da
0x6382e9c6
0x21ecc5e
0x9686b3f
0x3ebaefc9
0x3c971814
0x6b6a70a1
0x687f3584
0x52a0e286 # 3.454976E11f
-0x4863acfb
-0x55aff8c9
0x3e07841c
0x7fdeae5c
-0x7182bb14
0x5716f2b8
-0x4fc525c9
-0xfaff3f3
-0xfe3e0fc
0x200b3ff
-0x51f30ae6 # -3.205001E-11f
0x3cb574b2
0x25837a58
-0x23f6de43
-0x2e6eec07
0x7ca92ff6
-0x6bcdb88d # -9.000794E-27f
0x22f54701
0x3ae5e581
0x37c2dadc
-0x374a89cc
-0x650c2259
-0x56bb9eba
0xfd0030e
-0x133738c2
-0x5b8ae1bf
-0x1dc73267
0x3bea0e2f
0x3280bba1
0x183eb331
0x4e548b38 # 8.9147341E8f
0x4f6db908 # 3.9883264E9f
0x6f420d03
-0x9f5fb41
0x2cb81290
0x24977c79
0x5679b072
-0x43507651
-0x216588e1
-0x266cf7f0
-0x4c7451ee
-0x2330c0d2
0x5512721f
0x2e6b7124
0x501adde6
-0x607b3279
0x7a584718
0x7408da17
-0x43606544
-0x16b48274
-0x138513c6
-0x247ae206
0x63094366
-0x3b9b3c2e
-0x10e3e7b9
0x3215d908
-0x22bcc4c9
0x24c2ba16
0x12a14d43
0x2a65c451
0x50940002
0x133ae4dd
0x71dff89e
0x10314e55
-0x7e53882a
0x5f11199b
0x43556f1
-0x285c3895
0x3c11183b
0x5924a509
-0xd701913
-0x680e0406
-0x614540d4
0x1e153c6e
-0x791cba90
-0x1516904f
-0x79f1a1f6
0x5a3e2ab3
0x771fe71c
0x4e3d06fa # 7.9283776E8f
0x2965dcb9
-0x6618e2f1
-0x7fc1762a
0x5266c825 # 2.47800087E11f
0x2e4cc978
-0x63ef4c96
-0x39eaf146
-0x6b1d1588
-0x5a03c3ad
0x1e0a2df4
-0xd08b159
0x361d2b3d # 2.341999E-6f
0x1939260f
0x19c27960
0x5223a708
-0x8eced4a
-0x14520192
-0x153ce09a
-0x1c43ba6b
-0x5984377d
-0x4e80c82f
0x18cff28
-0x3ccd2211
-0x4193a55b
0x65582185
0x68ab9802
-0x11315af1
-0x24d06ac5
0x2aef7dad
0x5b6e2f84
0x1521b628
0x29076170
-0x1322b88b
0x619f1510
0x13cca830
-0x149e426a
0x334fe1e
-0x55fc9c31
-0x4a8ca370
0x4c70a239 # 6.3080676E7f
-0x2a6161f5
-0x345521ec # -2.2395944E7f
-0x11337944
0x60622ca7
-0x6354a355
-0x4d0c7b92
0x648b1eaf
0x19bdf0ca
-0x5fdc9647
0x655abb50 # 6.45582E22f
0x40685a32
0x3c2ab4b3
0x319ee9d5
-0x3fde4709
-0x64abf4e7
-0x78a05f67
-0x6a086682 # -1.00004673E-25f
0x623d7da8
-0x7c87766
-0x681cd289
0x11ed935f
0x16681281
0xe358829
-0x3819e02a
-0x6921205f
0x7858ba99
0x57f584a5
0x1b227263
-0x647c3c01
0x1ac24696
-0x324cf515
0x532e3054
-0x7026b71c
0x6dbc3128
0x58ebf2ef
0x34c6ffea
-0x1d7129f
-0x1183c38d
0x5d4a14d9
-0x179b481d
0x42105d14
0x203e13e0
0x45eee2b6
-0x5c555416
-0x2493b0eb
-0x534b030
-0x38bd0bbe
-0x1095444b
0x654f3b1d
0x41cd2105
-0x27e18662
-0x797ab239
-0x1bb4b896 # -1.499934E22f
0x3d816250
-0x309d5e0e
0x5b8d2646
-0x3777c60
-0x3e38495d
0x7f1524c3
0x69cb7492
0x47848a0b
0x5692b285
0x95bbf00
-0x52e6b763
0x1462b174
0x23820e00
0x58428d2a
0xc55f5ea
0x1dadf43e
0x233f7061
0x3372f092
-0x726c81bf
-0x29a0130f
0x6c223bdb
0x7cde3759
-0x34118ba0 # -3.125472E7f
0x4085f2a7
-0x3188cd92
-0x59f87f7c
0x19f8509e
-0x171027ab
0x61d99735
-0x56965856
-0x3af3f93e
0x5a04abfc
-0x7ff43524
-0x61bb85d2
-0x3cbacb7c
-0x22a98fb
0xe1e9ec9
-0x248c242d
0x105588cd
0x675fda79
-0x1c98bcc0
-0x3a3bcb9b
0x713e38d8
0x3d28f89e
-0xe9200e0
0x153e21e7
-0x704fc2b6
-0x191c60d5
-0x247c5209
.end array-data
.line 182
:array_470
.array-data 4
-0x16c2a598
-0x6b7ebf09
-0x9b3d9e4
-0x6b96d6cc
0x411520f7
0x7602d4f7
-0x430b94d2
-0x2b5dff98
-0x2bf7db8f
0x3320f46a
0x43b7d4b7
0x500061af # 8.6155418E9f
0x1e39f62e
-0x68dbbaba
0x14214f74
-0x407477c0
0x4d95fc1d # 3.1454096E8f
-0x694a6e51
0x70f4ddd3
0x66a02f45
-0x4043f614
0x3bd9785
0x7fac6dd0
0x31cb8504
-0x6914d84d
0x55fd3941
-0x25dab81a
-0x5435f566
0x28507825
0x530429f4
0xa2c86da
-0x16499205
0x68dc1462
-0x28b79700
0x680ec0a4
0x27a18dee
0x4f3ffea2
-0x17785274
-0x4a731ffa
0x7af4d6b6
-0x5531e184
-0x2cc8a014
-0x31875c67
0x406b2a42
0x20fe9e35
-0x260c7a47
-0x11c62855
0x3b124e8b
0x1dc9faf7
0x4b6d1856 # 1.5538262E7f
0x26a36631
-0x151c684e
0x3a6efa74 # 9.1163E-4f
-0x22a4bcce
0x6841e7f7
-0x3587df05
-0x4f50ab2
-0x27014c69
0x454056ac
-0x45b76ad9
0x55533a3a
0x20838d87
-0x1945649
-0x2f696ab5
0x55a867bc
-0x5eea65a8
-0x3356d69d # -8.8689432E7f
-0x661e24cd
-0x59d5b5aa
0x3f3125f9
0x5ef47e1c
-0x6fd6ce84
-0x20717fe
0x4272f70
-0x7f44eaa4 # -1.71809E-38f
0x5282ce3
-0x6a3eeab8
-0x1b3992de
0x48c1133f
-0x38f07924
0x7f9c9ee
0x41041f0f
0x404779a4
0x5d886e17
0x325f51eb
-0x2a643f2f
-0xd433e71
0x41113564
0x257b7834
0x602a9c60
-0x2007175d
0x1f636c1b
0xe12b4c2
0x2e1329e
-0x5099b02f
-0x352e7eeb # -6865034.5f
0x6b2395e0
0x333e92e1
0x3b240b62
-0x114146de
-0x7a4d5df2
-0x1945f267
-0x218df374
0x2da2f728
-0x2fed87bb
-0x6a486b03
0x647d0862
-0x18330a10
0x5449a36f
-0x7882b706
-0x3c6202d9
-0xcc172e2
0xa476341
-0x66d1008c
0x3a6f6eab
-0xb0702c9
-0x57ed23a0
-0x5e142208
-0x66e41eb4
-0x249194f3
-0x3984aaf0
0x6d672c37
0x2765d43b
-0x232f17fc
-0xed6f239
-0x33ff005d # -3.3816204E7f
-0x4ac6f06e
0x690fed0b
0x667b9ffb
-0x31248264
-0x5f6e30f5
-0x26eaa15d
-0x44ecd078
0x515bad24
0x7b9479bf
0x763bd6eb
0x37392eb3
-0x33eea687 # -3.81025E7f
-0x7fd91d69
-0xbd1ced3
0x6842ada7
-0x3995d4c5
0x12754ccc
0x782ef11c
0x6a124237
-0x486dae19
0x6a1bbe6
0x4bfb6350 # 3.294992E7f
0x1a6b1018
0x11caedfa
0x3d25bdd8
-0x1d1e3c37
0x44421659
0xa121386
-0x26f31392
-0x2a5415d6
0x64af674e
-0x257957a1
-0x41401678
0x64e4c3fe
-0x62437fa9
-0xf083f7a
0x60787bf8
0x6003604d
-0x2e027cba
-0x9c7e050
0x7745ae04
-0x28c90334
-0x7cbd94cd
-0xfe1548f
-0x4f7fbe79
0x3c005e5f # 0.007835f
0x77a057be
-0x421751dc
0x55464299
-0x40a7d19f
0x4e58f48f # 9.0997651E8f
-0xd22025e
-0xb8b10c8
-0x7876423e
0x5366f9c3
-0x374c718c
-0x4b8a0dab
0x46fcd9b9
0x7aeb2661
-0x74e2207c
-0x7b95f187
-0x6ea06a1e
0x466e598e
0x20b45770
-0x732aaa6f
-0x36fd21b4
-0x46f4531f
-0x447dfa30
0x11a86248
0x7574a99e
-0x4880e64a
-0x1f5623f7
0x662d09a1
-0x3bcdb9cd
-0x17a5e0fe
0x9f0be8c
0x4a99a025 # 5034002.5f
0x1d6efe10
0x1ab93d1d
0xba5a4df
-0x5e790df1
0x2868f169
-0x2348257d
0x573906fe
-0x5e1d3165
0x4fcd7f52
0x50115e01 # 9.7554278E9f
-0x58f97c06
-0x5ffd4a3c
0xde6d027
-0x650773d9
0x773f8641
-0x3c9fb3fa
0x61a806b5
-0xfe885d8
-0x3f0a7920
0x6058aa
0x30dc7d62
0x11e69ed7
0x2338ea63
0x53c2dd94
-0x3d3de9cc
-0x443411aa
-0x6f434922
-0x1403825f
-0x31a6e28a
0x6f05e409
0x4b7c0188 # 1.6515464E7f
0x39720a3d
0x7c927c24
-0x791c8da1
0x724d9db9
0x1ac15bb4
-0x2c614704
-0x12abaa88
0x8fca5b5
-0x27c2832d
0x4dad0fc4 # 3.62936448E8f
0x1e50ef5e
-0x4e9e1908
-0x5d7aeb27
0x6c51133c
0x6fd5c7e7
0x56e14ec4
0x362abfce
-0x223937c9
-0x2865cdcc
-0x6d9c7dee
0x670efa8e
0x406000e0 # 3.5000534f
.end array-data
.line 249
:array_674
.array-data 4
0x3a39ce37
-0x2c050a31
-0x543d88c9
0x5ac52d1b
0x5cb0679e
0x4fa33742
-0x2c7dd8c0
-0x66436442
-0x2aee7163 # -1.00026066E13f
-0x40f08ceb
-0x29d2e382
-0x38ff3b85
-0x4873e495
0x21a19045
-0x4d914e42
0x6a366eb4
0x5748ab2f
-0x436b9187
-0x395c892e
0x6549c2c8
0x530ff8ee
0x468dde7d
-0x2a8cf5e3
0x4cd04dc6 # 1.09211184E8f
0x2939bbdb
-0x5645b9b0
-0x536ad918
-0x41a11cfc
-0x5e052a10
0x6a2d519a
0x63ef8ce2
-0x657911de
-0x3f763d48
0x43242ef6
-0x5ae1fc56
-0x630d2f5c
-0x7c3f9e46
-0x641695b3
-0x701aeab0
-0x459ba42a
0x2826a2f9
-0x58c5c51f
0x4ba99586 # 2.2227724E7f
-0x10aa9d17
-0x38d0102d
-0x8ad0826
0x3f046f69
0x77fa0a59
-0x7f1b56eb # -2.0999148E-38f
-0x784f79ff
-0x64f61953
0x3b3ee593
-0x166f02a6
-0x61cb2869
0x2cf0b7d9
0x22b8b51
-0x692a53c6
0x17da67d
-0x2e30c12a
0x7c7d2d28
0x1f9f25cf
-0x520d4765
0x5ad6b472
0x5a88f54c
-0x1fd6538f
-0x1fe65a1a
0x47b0acfd
-0x126c0565
-0x172c3b73 # -8.0003604E24f
0x283b57cc
-0x72a99d7
0x79132e28
0x785f0191
-0x128a9fab
-0x869f1bc
-0x1c2ca174
0x15056dd4
-0x770b9246
0x3a16125
0x564f0bd
-0x3c1461eb
0x3c9057a2
-0x68d8e514
-0x56c5f8d6
0x1b3f6d9b
0x1e6321f5
-0xa639905
0x26dcf319
0x7533d928
-0x4eaa020b
0x3563482
-0x7545c345
0x28517711
-0x3df52608
-0x5433ae99
-0x33526da1 # -9.1001592E7f
0x4de81751 # 4.86730272E8f
0x3830dc8e
0x379d5862
-0x6cdf066f
-0x15856f3e
-0x4c18432
0x5121ce64
0x774fbe32
-0x57491c82
-0x3cd6c2ba
0x48de5369
0x6413e680
-0x5d51f7f0
-0x22924ddc
0x69852dfd
0x9072166
-0x4c65b9f6
0x6445c0dd
0x586cdecf
0x1c20c8ae
0x5bbef7dd
0x1b588d40
-0x332dfe81
0x6bb4e3bb
-0x225d9582
0x3a59ff45
0x3e350a44
-0x434b322b
0x72eacea8
-0x59b7b45
-0x7299ed52
-0x40c390b9
-0x2d641b9d
0x542f5d9e
-0x513d88e5
-0x9b19c90
0x740e0d8d
-0x18a4eca9
-0x78de98f
-0x50ac82a3
0x4040cb08
0x4eb4e2cc # 1.51738112E9f
0x34d2466a
0x115af84
-0x1e4ffbd8
-0x6a67c5e3
0x6b89fb4
-0x31915fb8 # -1.0008704E9f
0x6f3f3b82
0x3520ab82
0x11a1d4b
0x277227f8
0x611560b1
-0x186cc024
-0x44c586d5
0x344525bd
-0x5f77c61f
0x51ce794b
0x2f32c9b7
-0x5fe04537
-0x1fe33782
-0x43382e0a
-0x30feee3d
-0x5e175539
0x1a908749
-0x2bb04266
-0x2f252135
-0x2af525c8
0x339c32a
-0x396ec999
-0x7206ce84
-0x1f4ed4b1
-0x861a649
0x43f5bb3a
-0xd2ae601
0x27d9459c
-0x4068ddd4
0x15e6fc2a
0xf91fc71
-0x646beadb
-0x51a6c9f
-0x31496315
-0x3d579ba7
0x12baa8d1
-0x493ef8a2
-0x1cfa95f4
0x10d25065
-0x34fc5bbe # -8627266.0f
-0x1f1391f2
0x1698db3b
0x4c98a0be # 8.0020976E7f
0x3278e964
-0x60e06ace
-0x1f2c6d21
-0x2c5fcbd5 # -1.37614E12f
-0x768e0de2
0x1b0a7441
0x4ba3348c # 2.139164E7f
-0x3a418ee0
-0x3c89cd28
-0x20ca6073
-0x6466d0d2
-0x19f490b9
0xfe3f11d
-0x1ab325ac
0x1edad891
-0x319d8631
-0x32c18191
0x1618b166
-0x2d3e2fb
-0x7b702d3b
-0x904dd67
-0xadc0ca9
-0x59cd89dd
-0x6c57cacf
0x56cccd02
-0x530f7e9e
0x5a75ebb5
0x6e163697
-0x772d8c34
-0x21699d6e
-0x7e46b630
0x4c50901b # 5.4673516E7f
0x71c65614
-0x19393843
0x327a140a
0x45e1d006
-0x3c0d8466
-0x3655ac03
0x62a80f00
-0x44da401e
0x35bdd2f6
0x71126905
-0x4dfbfdde
-0x49343084
-0x328963d5 # -2.5858936E8f
0x53113ec0
0x1640e3d3
0x38abbd60
0x2547adf0
-0x45c7df64
-0x8b9318a
0x77afa1c5
0x20756060
-0x7a3401b2
-0x75177228
0x7aaaf9b0
0x4cf9aa7e # 1.3089688E8f
0x1948c25c
0x2fb8a8c
0x1c36ae4
-0x29141e07
-0x6f2b0797
-0x59a32160
0x3f09252d
-0x3df71961
-0x48b19ece
-0x31881da5
0x578fdfe3
0x3ac372e6
.end array-data
.end method
.method private constructor <init>()V
.registers 2
.prologue
.line 331
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 332
const/16 v0, 0x400
new-array v0, v0, [I
iput-object v0, p0, Lorg/spongycastle/crypto/generators/BCrypt;->S:[I
.line 333
const/16 v0, 0x12
new-array v0, v0, [I
iput-object v0, p0, Lorg/spongycastle/crypto/generators/BCrypt;->P:[I
.line 334
return-void
.end method
.method private Bits32ToBytes(I[BI)V
.registers 6
.prologue
.line 401
add-int/lit8 v0, p3, 0x3
int-to-byte v1, p1
aput-byte v1, p2, v0
.line 402
add-int/lit8 v0, p3, 0x2
shr-int/lit8 v1, p1, 0x8
int-to-byte v1, v1
aput-byte v1, p2, v0
.line 403
add-int/lit8 v0, p3, 0x1
shr-int/lit8 v1, p1, 0x10
int-to-byte v1, v1
aput-byte v1, p2, v0
.line 404
shr-int/lit8 v0, p1, 0x18
aput-byte v0, p2, p3
.line 405
return-void
.end method
.method private BytesTo32bits([BI)I
.registers 5
.prologue
.line 393
aget-byte v0, p1, p2
and-int/lit16 v0, v0, 0xff
shl-int/lit8 v0, v0, 0x18
add-int/lit8 v1, p2, 0x1
aget-byte v1, p1, v1
and-int/lit16 v1, v1, 0xff
shl-int/lit8 v1, v1, 0x10
or-int/2addr v0, v1
add-int/lit8 v1, p2, 0x2
aget-byte v1, p1, v1
and-int/lit16 v1, v1, 0xff
shl-int/lit8 v1, v1, 0x8
or-int/2addr v0, v1
add-int/lit8 v1, p2, 0x3
aget-byte v1, p1, v1
and-int/lit16 v1, v1, 0xff
or-int/2addr v0, v1
return v0
.end method
.method private F(I)I
.registers 5
.prologue
.line 342
iget-object v0, p0, Lorg/spongycastle/crypto/generators/BCrypt;->S:[I
ushr-int/lit8 v1, p1, 0x18
aget v0, v0, v1
iget-object v1, p0, Lorg/spongycastle/crypto/generators/BCrypt;->S:[I
ushr-int/lit8 v2, p1, 0x10
and-int/lit16 v2, v2, 0xff
add-int/lit16 v2, v2, 0x100
aget v1, v1, v2
add-int/2addr v0, v1
iget-object v1, p0, Lorg/spongycastle/crypto/generators/BCrypt;->S:[I
ushr-int/lit8 v2, p1, 0x8
and-int/lit16 v2, v2, 0xff
add-int/lit16 v2, v2, 0x200
aget v1, v1, v2
xor-int/2addr v0, v1
iget-object v1, p0, Lorg/spongycastle/crypto/generators/BCrypt;->S:[I
and-int/lit16 v2, p1, 0xff
add-int/lit16 v2, v2, 0x300
aget v1, v1, v2
add-int/2addr v0, v1
return v0
.end method
.method private final cyclicXorKey([B)V
.registers 10
.prologue
const/4 v1, 0x0
.line 413
array-length v5, p1
move v4, v1
move v0, v1
.line 416
:goto_4
const/16 v2, 0x12
if-ge v4, v2, :cond_2c
move v2, v1
move v3, v0
move v0, v1
.line 420
:goto_b
const/4 v6, 0x4
if-ge v2, v6, :cond_20
.line 423
shl-int/lit8 v6, v0, 0x8
add-int/lit8 v0, v3, 0x1
aget-byte v3, p1, v3
and-int/lit16 v3, v3, 0xff
or-int/2addr v3, v6
.line 426
if-lt v0, v5, :cond_1a
move v0, v1
.line 420
:cond_1a
add-int/lit8 v2, v2, 0x1
move v7, v3
move v3, v0
move v0, v7
goto :goto_b
.line 432
:cond_20
iget-object v2, p0, Lorg/spongycastle/crypto/generators/BCrypt;->P:[I
aget v6, v2, v4
xor-int/2addr v0, v6
aput v0, v2, v4
.line 416
add-int/lit8 v0, v4, 0x1
move v4, v0
move v0, v3
goto :goto_4
.line 434
:cond_2c
return-void
.end method
.method private final deriveRawKey(I[B[B)[B
.registers 11
.prologue
const/4 v5, 0x3
const/4 v4, 0x2
const/4 v3, 0x4
const/4 v6, 0x1
const/4 v1, 0x0
.line 549
array-length v0, p2
const/16 v2, 0x10
if-eq v0, v2, :cond_12
.line 551
new-instance v0, Lorg/spongycastle/crypto/DataLengthException;
const-string v1, "Invalid salt size: 16 bytes expected."
invoke-direct {v0, v1}, Lorg/spongycastle/crypto/DataLengthException;-><init>(Ljava/lang/String;)V
throw v0
.line 553
:cond_12
if-lt p1, v3, :cond_18
const/16 v0, 0x1f
if-le p1, v0, :cond_20
.line 555
:cond_18
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "Illegal cost factor: 4 - 31 expected."
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 558
:cond_20
array-length v0, p3
if-nez v0, :cond_25
.line 560
new-array p3, v3, [B
.line 564
:cond_25
invoke-direct {p0}, Lorg/spongycastle/crypto/generators/BCrypt;->initState()V
.line 566
new-array v0, v3, [I
.line 567
invoke-direct {p0, p2, v1}, Lorg/spongycastle/crypto/generators/BCrypt;->BytesTo32bits([BI)I
move-result v2
aput v2, v0, v1
.line 568
invoke-direct {p0, p2, v3}, Lorg/spongycastle/crypto/generators/BCrypt;->BytesTo32bits([BI)I
move-result v2
aput v2, v0, v6
.line 569
const/16 v2, 0x8
invoke-direct {p0, p2, v2}, Lorg/spongycastle/crypto/generators/BCrypt;->BytesTo32bits([BI)I
move-result v2
aput v2, v0, v4
.line 570
const/16 v2, 0xc
invoke-direct {p0, p2, v2}, Lorg/spongycastle/crypto/generators/BCrypt;->BytesTo32bits([BI)I
move-result v2
aput v2, v0, v5
.line 572
array-length v2, p2
new-array v2, v2, [I
.line 573
aget v3, v0, v4
aput v3, v2, v1
.line 574
aget v3, v0, v5
aput v3, v2, v6
.line 575
aget v3, v0, v1
aput v3, v2, v4
.line 576
aget v3, v0, v6
aput v3, v2, v5
.line 579
invoke-direct {p0, p3}, Lorg/spongycastle/crypto/generators/BCrypt;->cyclicXorKey([B)V
.line 580
iget-object v3, p0, Lorg/spongycastle/crypto/generators/BCrypt;->P:[I
invoke-direct {p0, v3, v0, v1, v1}, Lorg/spongycastle/crypto/generators/BCrypt;->processTableWithSalt([I[III)V
.line 581
invoke-static {v0, v1}, Lorg/spongycastle/util/Arrays;->fill([II)V
.line 582
iget-object v0, p0, Lorg/spongycastle/crypto/generators/BCrypt;->S:[I
iget-object v3, p0, Lorg/spongycastle/crypto/generators/BCrypt;->P:[I
iget-object v4, p0, Lorg/spongycastle/crypto/generators/BCrypt;->P:[I
array-length v4, v4
add-int/lit8 v4, v4, -0x2
aget v3, v3, v4
iget-object v4, p0, Lorg/spongycastle/crypto/generators/BCrypt;->P:[I
iget-object v5, p0, Lorg/spongycastle/crypto/generators/BCrypt;->P:[I
array-length v5, v5
add-int/lit8 v5, v5, -0x1
aget v4, v4, v5
invoke-direct {p0, v0, v2, v3, v4}, Lorg/spongycastle/crypto/generators/BCrypt;->processTableWithSalt([I[III)V
.line 583
invoke-static {v2, v1}, Lorg/spongycastle/util/Arrays;->fill([II)V
.line 585
shl-int v2, v6, p1
move v0, v1
.line 586
:goto_81
if-eq v0, v2, :cond_b8
.line 589
invoke-direct {p0, p3}, Lorg/spongycastle/crypto/generators/BCrypt;->cyclicXorKey([B)V
.line 590
iget-object v3, p0, Lorg/spongycastle/crypto/generators/BCrypt;->P:[I
invoke-direct {p0, v1, v1, v3}, Lorg/spongycastle/crypto/generators/BCrypt;->processTable(II[I)V
.line 591
iget-object v3, p0, Lorg/spongycastle/crypto/generators/BCrypt;->P:[I
const/16 v4, 0x10
aget v3, v3, v4
iget-object v4, p0, Lorg/spongycastle/crypto/generators/BCrypt;->P:[I
const/16 v5, 0x11
aget v4, v4, v5
iget-object v5, p0, Lorg/spongycastle/crypto/generators/BCrypt;->S:[I
invoke-direct {p0, v3, v4, v5}, Lorg/spongycastle/crypto/generators/BCrypt;->processTable(II[I)V
.line 594
invoke-direct {p0, p2}, Lorg/spongycastle/crypto/generators/BCrypt;->cyclicXorKey([B)V
.line 595
iget-object v3, p0, Lorg/spongycastle/crypto/generators/BCrypt;->P:[I
invoke-direct {p0, v1, v1, v3}, Lorg/spongycastle/crypto/generators/BCrypt;->processTable(II[I)V
.line 596
iget-object v3, p0, Lorg/spongycastle/crypto/generators/BCrypt;->P:[I
const/16 v4, 0x10
aget v3, v3, v4
iget-object v4, p0, Lorg/spongycastle/crypto/generators/BCrypt;->P:[I
const/16 v5, 0x11
aget v4, v4, v5
iget-object v5, p0, Lorg/spongycastle/crypto/generators/BCrypt;->S:[I
invoke-direct {p0, v3, v4, v5}, Lorg/spongycastle/crypto/generators/BCrypt;->processTable(II[I)V
.line 586
add-int/lit8 v0, v0, 0x1
goto :goto_81
.line 600
:cond_b8
invoke-direct {p0}, Lorg/spongycastle/crypto/generators/BCrypt;->encryptMagicString()[B
move-result-object v0
return-object v0
.end method
.method private encryptMagicString()[B
.registers 13
.prologue
const/4 v4, 0x3
const/4 v3, 0x2
const/4 v11, 0x6
const/4 v2, 0x1
const/4 v1, 0x0
.line 442
new-array v7, v11, [I
sget-object v0, Lorg/spongycastle/crypto/generators/BCrypt;->MAGIC_STRING:[I
aget v0, v0, v1
aput v0, v7, v1
sget-object v0, Lorg/spongycastle/crypto/generators/BCrypt;->MAGIC_STRING:[I
aget v0, v0, v2
aput v0, v7, v2
sget-object v0, Lorg/spongycastle/crypto/generators/BCrypt;->MAGIC_STRING:[I
aget v0, v0, v3
aput v0, v7, v3
sget-object v0, Lorg/spongycastle/crypto/generators/BCrypt;->MAGIC_STRING:[I
aget v0, v0, v4
aput v0, v7, v4
const/4 v0, 0x4
sget-object v3, Lorg/spongycastle/crypto/generators/BCrypt;->MAGIC_STRING:[I
const/4 v4, 0x4
aget v3, v3, v4
aput v3, v7, v0
const/4 v0, 0x5
sget-object v3, Lorg/spongycastle/crypto/generators/BCrypt;->MAGIC_STRING:[I
const/4 v4, 0x5
aget v3, v3, v4
aput v3, v7, v0
move v6, v1
.line 447
:goto_30
const/16 v0, 0x40
if-ge v6, v0, :cond_77
move v5, v1
.line 449
:goto_35
if-ge v5, v11, :cond_73
.line 451
aget v3, v7, v5
.line 452
add-int/lit8 v0, v5, 0x1
aget v0, v7, v0
.line 454
iget-object v4, p0, Lorg/spongycastle/crypto/generators/BCrypt;->P:[I
aget v4, v4, v1
xor-int/2addr v3, v4
move v4, v3
move v3, v0
move v0, v2
.line 455
:goto_45
const/16 v8, 0x10
if-ge v0, v8, :cond_62
.line 457
invoke-direct {p0, v4}, Lorg/spongycastle/crypto/generators/BCrypt;->F(I)I
move-result v8
iget-object v9, p0, Lorg/spongycastle/crypto/generators/BCrypt;->P:[I
aget v9, v9, v0
xor-int/2addr v8, v9
xor-int/2addr v3, v8
.line 458
invoke-direct {p0, v3}, Lorg/spongycastle/crypto/generators/BCrypt;->F(I)I
move-result v8
iget-object v9, p0, Lorg/spongycastle/crypto/generators/BCrypt;->P:[I
add-int/lit8 v10, v0, 0x1
aget v9, v9, v10
xor-int/2addr v8, v9
xor-int/2addr v4, v8
.line 455
add-int/lit8 v0, v0, 0x2
goto :goto_45
.line 460
:cond_62
iget-object v0, p0, Lorg/spongycastle/crypto/generators/BCrypt;->P:[I
const/16 v8, 0x11
aget v0, v0, v8
xor-int/2addr v0, v3
.line 462
aput v0, v7, v5
.line 463
add-int/lit8 v0, v5, 0x1
aput v4, v7, v0
.line 449
add-int/lit8 v0, v5, 0x2
move v5, v0
goto :goto_35
.line 447
:cond_73
add-int/lit8 v0, v6, 0x1
move v6, v0
goto :goto_30
.line 466
:cond_77
const/16 v0, 0x18
new-array v2, v0, [B
move v0, v1
.line 467
:goto_7c
if-ge v0, v11, :cond_88
.line 469
aget v3, v7, v0
shl-int/lit8 v4, v0, 0x2
invoke-direct {p0, v3, v2, v4}, Lorg/spongycastle/crypto/generators/BCrypt;->Bits32ToBytes(I[BI)V
.line 467
add-int/lit8 v0, v0, 0x1
goto :goto_7c
.line 471
:cond_88
invoke-static {v7, v1}, Lorg/spongycastle/util/Arrays;->fill([II)V
.line 472
iget-object v0, p0, Lorg/spongycastle/crypto/generators/BCrypt;->P:[I
invoke-static {v0, v1}, Lorg/spongycastle/util/Arrays;->fill([II)V
.line 473
iget-object v0, p0, Lorg/spongycastle/crypto/generators/BCrypt;->S:[I
invoke-static {v0, v1}, Lorg/spongycastle/util/Arrays;->fill([II)V
.line 475
return-object v2
.end method
.method public static generate([B[BI)[B
.registers 5
.prologue
.line 639
if-eqz p0, :cond_4
if-nez p1, :cond_c
.line 641
:cond_4
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "Password and salt are required"
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 643
:cond_c
array-length v0, p1
const/16 v1, 0x10
if-eq v0, v1, :cond_19
.line 645
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "BCrypt salt must be 128 bits"
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 647
:cond_19
array-length v0, p0
const/16 v1, 0x48
if-le v0, v1, :cond_26
.line 649
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "BCrypt password must be <= 72 bytes"
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 651
:cond_26
const/4 v0, 0x4
if-lt p2, v0, :cond_2d
const/16 v0, 0x1f
if-le p2, v0, :cond_35
.line 653
:cond_2d
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string v1, "BCrypt cost must be from 4..31"
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 656
:cond_35
new-instance v0, Lorg/spongycastle/crypto/generators/BCrypt;
invoke-direct {v0}, Lorg/spongycastle/crypto/generators/BCrypt;-><init>()V
invoke-direct {v0, p2, p1, p0}, Lorg/spongycastle/crypto/generators/BCrypt;->deriveRawKey(I[B[B)[B
move-result-object v0
return-object v0
.end method
.method private initState()V
.registers 6
.prologue
const/16 v4, 0x100
const/4 v3, 0x0
.line 382
sget-object v0, Lorg/spongycastle/crypto/generators/BCrypt;->KS0:[I
iget-object v1, p0, Lorg/spongycastle/crypto/generators/BCrypt;->S:[I
invoke-static {v0, v3, v1, v3, v4}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 383
sget-object v0, Lorg/spongycastle/crypto/generators/BCrypt;->KS1:[I
iget-object v1, p0, Lorg/spongycastle/crypto/generators/BCrypt;->S:[I
invoke-static {v0, v3, v1, v4, v4}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 384
sget-object v0, Lorg/spongycastle/crypto/generators/BCrypt;->KS2:[I
iget-object v1, p0, Lorg/spongycastle/crypto/generators/BCrypt;->S:[I
const/16 v2, 0x200
invoke-static {v0, v3, v1, v2, v4}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 385
sget-object v0, Lorg/spongycastle/crypto/generators/BCrypt;->KS3:[I
iget-object v1, p0, Lorg/spongycastle/crypto/generators/BCrypt;->S:[I
const/16 v2, 0x300
invoke-static {v0, v3, v1, v2, v4}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 387
sget-object v0, Lorg/spongycastle/crypto/generators/BCrypt;->KP:[I
iget-object v1, p0, Lorg/spongycastle/crypto/generators/BCrypt;->P:[I
const/16 v2, 0x12
invoke-static {v0, v3, v1, v3, v2}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 389
return-void
.end method
.method private processTable(II[I)V
.registers 13
.prologue
const/4 v4, 0x0
.line 354
array-length v5, p3
move v3, v4
move v1, p2
.line 356
:goto_4
if-ge v3, v5, :cond_3e
.line 358
iget-object v0, p0, Lorg/spongycastle/crypto/generators/BCrypt;->P:[I
aget v0, v0, v4
xor-int v2, p1, v0
.line 360
const/4 v0, 0x1
:goto_d
const/16 v6, 0x10
if-ge v0, v6, :cond_2a
.line 362
invoke-direct {p0, v2}, Lorg/spongycastle/crypto/generators/BCrypt;->F(I)I
move-result v6
iget-object v7, p0, Lorg/spongycastle/crypto/generators/BCrypt;->P:[I
aget v7, v7, v0
xor-int/2addr v6, v7
xor-int/2addr v1, v6
.line 363
invoke-direct {p0, v1}, Lorg/spongycastle/crypto/generators/BCrypt;->F(I)I
move-result v6
iget-object v7, p0, Lorg/spongycastle/crypto/generators/BCrypt;->P:[I
add-int/lit8 v8, v0, 0x1
aget v7, v7, v8
xor-int/2addr v6, v7
xor-int/2addr v2, v6
.line 360
add-int/lit8 v0, v0, 0x2
goto :goto_d
.line 366
:cond_2a
iget-object v0, p0, Lorg/spongycastle/crypto/generators/BCrypt;->P:[I
const/16 v6, 0x11
aget v0, v0, v6
xor-int/2addr v0, v1
.line 368
aput v0, p3, v3
.line 369
add-int/lit8 v0, v3, 0x1
aput v2, p3, v0
.line 372
aget p1, p3, v3
.line 356
add-int/lit8 v0, v3, 0x2
move v3, v0
move v1, v2
goto :goto_4
.line 374
:cond_3e
return-void
.end method
.method private processTableWithSalt([I[III)V
.registers 13
.prologue
.line 492
const/4 v0, 0x0
aget v0, p2, v0
xor-int v2, p3, v0
.line 493
const/4 v0, 0x1
aget v0, p2, v0
xor-int v1, p4, v0
.line 497
array-length v4, p1
.line 499
const/4 v0, 0x0
move v3, v0
move v0, v2
:goto_e
if-ge v3, v4, :cond_8d
.line 501
iget-object v2, p0, Lorg/spongycastle/crypto/generators/BCrypt;->P:[I
const/4 v5, 0x0
aget v2, v2, v5
xor-int/2addr v2, v0
.line 502
const/4 v0, 0x1
:goto_17
const/16 v5, 0x10
if-ge v0, v5, :cond_34
.line 504
invoke-direct {p0, v2}, Lorg/spongycastle/crypto/generators/BCrypt;->F(I)I
move-result v5
iget-object v6, p0, Lorg/spongycastle/crypto/generators/BCrypt;->P:[I
aget v6, v6, v0
xor-int/2addr v5, v6
xor-int/2addr v1, v5
.line 505
invoke-direct {p0, v1}, Lorg/spongycastle/crypto/generators/BCrypt;->F(I)I
move-result v5
iget-object v6, p0, Lorg/spongycastle/crypto/generators/BCrypt;->P:[I
add-int/lit8 v7, v0, 0x1
aget v6, v6, v7
xor-int/2addr v5, v6
xor-int/2addr v2, v5
.line 502
add-int/lit8 v0, v0, 0x2
goto :goto_17
.line 507
:cond_34
iget-object v0, p0, Lorg/spongycastle/crypto/generators/BCrypt;->P:[I
const/16 v5, 0x11
aget v0, v0, v5
xor-int/2addr v0, v1
.line 509
aput v0, p1, v3
.line 510
add-int/lit8 v1, v3, 0x1
aput v2, p1, v1
.line 512
const/4 v1, 0x2
aget v1, p2, v1
xor-int/2addr v0, v1
.line 513
const/4 v1, 0x3
aget v1, p2, v1
xor-int/2addr v2, v1
.line 515
add-int/lit8 v1, v3, 0x2
if-ge v1, v4, :cond_8d
.line 520
iget-object v1, p0, Lorg/spongycastle/crypto/generators/BCrypt;->P:[I
const/4 v5, 0x0
aget v1, v1, v5
xor-int/2addr v1, v0
.line 521
const/4 v0, 0x1
:goto_54
const/16 v5, 0x10
if-ge v0, v5, :cond_71
.line 523
invoke-direct {p0, v1}, Lorg/spongycastle/crypto/generators/BCrypt;->F(I)I
move-result v5
iget-object v6, p0, Lorg/spongycastle/crypto/generators/BCrypt;->P:[I
aget v6, v6, v0
xor-int/2addr v5, v6
xor-int/2addr v2, v5
.line 524
invoke-direct {p0, v2}, Lorg/spongycastle/crypto/generators/BCrypt;->F(I)I
move-result v5
iget-object v6, p0, Lorg/spongycastle/crypto/generators/BCrypt;->P:[I
add-int/lit8 v7, v0, 0x1
aget v6, v6, v7
xor-int/2addr v5, v6
xor-int/2addr v1, v5
.line 521
add-int/lit8 v0, v0, 0x2
goto :goto_54
.line 526
:cond_71
iget-object v0, p0, Lorg/spongycastle/crypto/generators/BCrypt;->P:[I
const/16 v5, 0x11
aget v0, v0, v5
xor-int/2addr v0, v2
.line 528
add-int/lit8 v2, v3, 0x2
aput v0, p1, v2
.line 529
add-int/lit8 v2, v3, 0x3
aput v1, p1, v2
.line 531
const/4 v2, 0x0
aget v2, p2, v2
xor-int/2addr v2, v0
.line 532
const/4 v0, 0x1
aget v0, p2, v0
xor-int/2addr v1, v0
.line 499
add-int/lit8 v0, v3, 0x4
move v3, v0
move v0, v2
goto :goto_e
.line 534
:cond_8d
return-void
.end method