@haedal/hasui::staking bytecode | tide- Move path
- 0xbde4…f47d::staking
- Functions
- 6743 public, 0 entry
- Structs
- 19
staking
The on-chain disassembly. Offsets are bytecode positions within each function.
1// Move bytecode v6
2module bde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d.staking {
3use bde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d::config;
4use bde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d::hasui;
5use bde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d::table_queue;
6use bde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d::util;
7
use bde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d::vault;
8use 0000000000000000000000000000000000000000000000000000000000000001::vector;
9use 0000000000000000000000000000000000000000000000000000000000000002::balance;
10use 0000000000000000000000000000000000000000000000000000000000000002::clock;
11use 0000000000000000000000000000000000000000000000000000000000000002::coin;
12use 0000000000000000000000000000000000000000000000000000000000000002::dynamic_field;
13use 0000000000000000000000000000000000000000000000000000000000000002::event;
14use 0000000000000000000000000000000000000000000000000000000000000002::object;
15use 0000000000000000000000000000000000000000000000000000000000000002::sui;
16use 0000000000000000000000000000000000000000000000000000000000000002::table;
17use 0000000000000000000000000000000000000000000000000000000000000002::transfer;
18use 0000000000000000000000000000000000000000000000000000000000000002::tx_context;
19use 0000000000000000000000000000000000000000000000000000000000000002::vec_map;
20use 0000000000000000000000000000000000000000000000000000000000000003::staking_pool;
21use 0000000000000000000000000000000000000000000000000000000000000003::sui_system;
23struct Staking has key {
26 config: StakingConfig,
27 sui_vault: Vault<SUI>,
28 claim_sui_vault: Vault<SUI>,
29 protocol_sui_vault: Vault<SUI>,
30 service_sui_vault: Vault<SUI>,
31 stsui_treasury_cap: TreasuryCap<HASUI>,
32 unstake_epochs: vector<EpochClaim>,
36 total_protocol_fees: u64,
37 uncollected_protocol_fees: u64,
39 unclaimed_sui_amount: u64,
42 validators: vector<address>,
43 pools: Table<address, PoolInfo>,
44 user_selected_validator_bals: VecMap<address, Balance<SUI>>,
45 rewards_last_updated_epoch: u64
48struct PoolInfo has store {
49 staked_suis: TableQueue<StakedSui>,
54struct EpochClaim has store {
60struct UnstakeTicket has key {
62 unstake_timestamp_ms: u64,
66 claim_timestamp_ms: u64
69struct UserStaked has copy, drop {
76struct UserInstantUnstaked has copy, drop {
82struct UserNormalUnstaked has copy, drop {
85 epoch_timestamp_ms: u64,
86 unstake_timestamp_ms: u64,
91struct UserClaimed has copy, drop {
97struct SystemStaked has copy, drop {
104struct SystemUnstaked has copy, drop {
110struct PoolSystemUnstaked has copy, drop {
117struct SuiRewardsUpdated has copy, drop {
123struct RewardsFeeCollected has copy, drop {
128struct ServiceFeeCollected has copy, drop {
133struct VersionUpdated has copy, drop {
138struct ExchangeRateUpdated has copy, drop {
143struct RewardsInjected has copy, drop {
148struct ValidatorStakedInfo has store {
152 staked_sui_count: u64
155struct ValidatorStakedInfoV2 has store {
159 staked_sui_count: u64,
161 exchange_rates_unexisted_epoches: vector<u64>,
162 stake_activation_epoches: vector<u64>
165struct UserSelectedStaking has drop {
170public(friend) initialize(Arg0: TreasuryCap<HASUI>, Arg1: &mut TxContext) {
171L2: loc0: StakingConfig
1741LdConst[2](u64: 1000..)
1763LdConst[3](u64: 900000)
1774LdConst[5](u64: 7200..)
1796Call config::new(u64, u64, u64, u64, u64, u64): StakingConfig
1807StLoc[2](loc0: StakingConfig)
1818CopyLoc[1](Arg1: &mut TxContext)
1829Call object::new(&mut TxContext): UID
18411MoveLoc[2](loc0: StakingConfig)
18512CopyLoc[1](Arg1: &mut TxContext)
18613Call vault::new<SUI>(&mut TxContext): Vault<SUI>
18714CopyLoc[1](Arg1: &mut TxContext)
18815Call vault::new<SUI>(&mut TxContext): Vault<SUI>
18916CopyLoc[1](Arg1: &mut TxContext)
19017Call vault::new<SUI>(&mut TxContext): Vault<SUI>
19118CopyLoc[1](Arg1: &mut TxContext)
19219Call vault::new<SUI>(&mut TxContext): Vault<SUI>
19320MoveLoc[0](Arg0: TreasuryCap<HASUI>)
20532MoveLoc[1](Arg1: &mut TxContext)
20633Call table::new<address, PoolInfo>(&mut TxContext): Table<address, PoolInfo>
20734Call vec_map::empty<address, Balance<SUI>>(): VecMap<address, Balance<SUI>>
21037Call transfer::share_object<Staking>(Staking)
214public inject_rewards(Arg0: &mut SuiSystemState, Arg1: &mut Staking, Arg2: Coin<SUI>, Arg3: &mut TxContext) {
2190CopyLoc[1](Arg1: &mut Staking)
2212Call assert_version(&Staking)
2223ImmBorrowLoc[2](Arg2: Coin<SUI>)
2234Call coin::value<SUI>(&Coin<SUI>): u64
2256CopyLoc[4](loc0: u64)
23211MoveLoc[1](Arg1: &mut Staking)
23413MoveLoc[3](Arg3: &mut TxContext)
23615LdConst[26](u64: 20)
23917CopyLoc[1](Arg1: &mut Staking)
24018ImmBorrowField[0](Staking.stsui_supply: u64)
24824MoveLoc[1](Arg1: &mut Staking)
25026MoveLoc[3](Arg3: &mut TxContext)
25530CopyLoc[1](Arg1: &mut Staking)
25631MutBorrowField[1](Staking.sui_vault: Vault<SUI>)
25732MoveLoc[2](Arg2: Coin<SUI>)
25833Call coin::into_balance<SUI>(Coin<SUI>): Balance<SUI>
25934Call vault::deposit<SUI>(&mut Vault<SUI>, Balance<SUI>)
26035CopyLoc[1](Arg1: &mut Staking)
26237Call get_exchange_rate(&Staking): u64
26439CopyLoc[1](Arg1: &mut Staking)
26540ImmBorrowField[2](Staking.total_rewards: u64)
26843CopyLoc[1](Arg1: &mut Staking)
26944ImmBorrowField[2](Staking.total_rewards: u64)
27146CopyLoc[4](loc0: u64)
27348CopyLoc[1](Arg1: &mut Staking)
27449MutBorrowField[2](Staking.total_rewards: u64)
27651MoveLoc[3](Arg3: &mut TxContext)
27853Call tx_context::sender(&TxContext): address
27954MoveLoc[4](loc0: u64)
28055Pack[16](RewardsInjected)
28156Call event::emit<RewardsInjected>(RewardsInjected)
28257MoveLoc[6](loc2: u64)
28358CopyLoc[1](Arg1: &mut Staking)
28459ImmBorrowField[2](Staking.total_rewards: u64)
28762Pack[11](SuiRewardsUpdated)
28863Call event::emit<SuiRewardsUpdated>(SuiRewardsUpdated)
28964MoveLoc[5](loc1: u64)
29065MoveLoc[1](Arg1: &mut Staking)
29267Call get_exchange_rate(&Staking): u64
29368Pack[15](ExchangeRateUpdated)
29469Call event::emit<ExchangeRateUpdated>(ExchangeRateUpdated)
298public request_stake_coin(Arg0: &mut SuiSystemState, Arg1: &mut Staking, Arg2: Coin<SUI>, Arg3: address, Arg4: &mut TxContext): Coin<HASUI> {
301L7: loc2: vector<address>
304L10: loc5: Coin<HASUI>
3070CopyLoc[1](Arg1: &mut Staking)
3092Call assert_version(&Staking)
3103CopyLoc[1](Arg1: &mut Staking)
3114ImmBorrowField[3](Staking.pause_stake: bool)
3189MoveLoc[0](Arg0: &mut SuiSystemState)
32011MoveLoc[1](Arg1: &mut Staking)
32213MoveLoc[4](Arg4: &mut TxContext)
32415LdConst[20](u64: 12)
32717ImmBorrowLoc[2](Arg2: Coin<SUI>)
32818Call coin::value<SUI>(&Coin<SUI>): u64
33020CopyLoc[9](loc4: u64)
33121LdConst[0](u64: 1000..)
33725MoveLoc[0](Arg0: &mut SuiSystemState)
33927MoveLoc[1](Arg1: &mut Staking)
34129MoveLoc[4](Arg4: &mut TxContext)
34633CopyLoc[1](Arg1: &mut Staking)
34734CopyLoc[9](loc4: u64)
35037MoveLoc[5](loc0: u64)
35138Call get_stsui_by_sui(&Staking, u64): u64
35340CopyLoc[8](loc3: u64)
36045MoveLoc[0](Arg0: &mut SuiSystemState)
36247MoveLoc[1](Arg1: &mut Staking)
36449MoveLoc[4](Arg4: &mut TxContext)
36953CopyLoc[4](Arg4: &mut TxContext)
37155Call tx_context::sender(&TxContext): address
37256StLoc[11](loc6: address)
37357CopyLoc[1](Arg1: &mut Staking)
37458MutBorrowField[4](Staking.stsui_treasury_cap: TreasuryCap<HASUI>)
37559CopyLoc[8](loc3: u64)
37660MoveLoc[4](Arg4: &mut TxContext)
37761Call coin::mint<HASUI>(&mut TreasuryCap<HASUI>, u64, &mut TxContext): Coin<HASUI>
37862StLoc[10](loc5: Coin<HASUI>)
37963MoveLoc[0](Arg0: &mut SuiSystemState)
38064Call sui_system::active_validator_addresses(&mut SuiSystemState): vector<address>
38165StLoc[7](loc2: vector<address>)
38266CopyLoc[3](Arg3: address)
38367LdConst[27](address: 0x00..)
38871StLoc[6](loc1: bool)
39173CopyLoc[3](Arg3: address)
39274ImmBorrowLoc[7](loc2: vector<address>)
39375Call is_active_validator(address, &vector<address>): bool
39577StLoc[6](loc1: bool)
39778MoveLoc[6](loc1: bool)
40080CopyLoc[1](Arg1: &mut Staking)
40181MutBorrowField[1](Staking.sui_vault: Vault<SUI>)
40282MoveLoc[2](Arg2: Coin<SUI>)
40383Call coin::into_balance<SUI>(Coin<SUI>): Balance<SUI>
40484Call vault::deposit<SUI>(&mut Vault<SUI>, Balance<SUI>)
40786CopyLoc[1](Arg1: &mut Staking)
40887MoveLoc[2](Arg2: Coin<SUI>)
40988CopyLoc[3](Arg3: address)
41089Call save_user_selected_staking(&mut Staking, Coin<SUI>, address)
41290CopyLoc[1](Arg1: &mut Staking)
41391ImmBorrowField[5](Staking.total_staked: u64)
41593CopyLoc[9](loc4: u64)
41795CopyLoc[1](Arg1: &mut Staking)
41896MutBorrowField[5](Staking.total_staked: u64)
42098CopyLoc[1](Arg1: &mut Staking)
42199ImmBorrowField[4](Staking.stsui_treasury_cap: TreasuryCap<HASUI>)
422100Call coin::total_supply<HASUI>(&TreasuryCap<HASUI>): u64
423101MoveLoc[1](Arg1: &mut Staking)
424102MutBorrowField[0](Staking.stsui_supply: u64)
426104MoveLoc[11](loc6: address)
427105MoveLoc[9](loc4: u64)
428106MoveLoc[8](loc3: u64)
429107MoveLoc[3](Arg3: address)
430108Pack[4](UserStaked)
431109Call event::emit<UserStaked>(UserStaked)
432110MoveLoc[10](loc5: Coin<HASUI>)
436public import_stake_sui_vec(Arg0: &mut SuiSystemState, Arg1: &mut Staking, Arg2: vector<StakedSui>, Arg3: address, Arg4: &mut TxContext): Coin<HASUI> {
437L5: loc0: Balance<SUI>
438L6: loc1: Balance<SUI>
4400Call balance::zero<SUI>(): Balance<SUI>
4411StLoc[5](loc0: Balance<SUI>)
4432ImmBorrowLoc[2](Arg2: vector<StakedSui>)
4518CopyLoc[0](Arg0: &mut SuiSystemState)
4529MutBorrowLoc[2](Arg2: vector<StakedSui>)
45411CopyLoc[4](Arg4: &mut TxContext)
45512Call sui_system::request_withdraw_stake_non_entry(&mut SuiSystemState, StakedSui, &mut TxContext): Balance<SUI>
45613StLoc[6](loc1: Balance<SUI>)
45714MutBorrowLoc[5](loc0: Balance<SUI>)
45815MoveLoc[6](loc1: Balance<SUI>)
45916Call balance::join<SUI>(&mut Balance<SUI>, Balance<SUI>): u64
46319MoveLoc[2](Arg2: vector<StakedSui>)
46521MoveLoc[0](Arg0: &mut SuiSystemState)
46622MoveLoc[1](Arg1: &mut Staking)
46723MoveLoc[5](loc0: Balance<SUI>)
46824CopyLoc[4](Arg4: &mut TxContext)
46925Call coin::from_balance<SUI>(Balance<SUI>, &mut TxContext): Coin<SUI>
47026MoveLoc[3](Arg3: address)
47127MoveLoc[4](Arg4: &mut TxContext)
47228Call request_stake_coin(&mut SuiSystemState, &mut Staking, Coin<SUI>, address, &mut TxContext): Coin<HASUI>
476save_user_selected_staking(Arg0: &mut Staking, Arg1: Coin<SUI>, Arg2: address) {
4780CopyLoc[0](Arg0: &mut Staking)
4791ImmBorrowField[6](Staking.user_selected_validator_bals: VecMap<address, Balance<SUI>>)
4802ImmBorrowLoc[2](Arg2: address)
4813Call vec_map::contains<address, Balance<SUI>>(&VecMap<address, Balance<SUI>>, &address): bool
4856CopyLoc[0](Arg0: &mut Staking)
4867MutBorrowField[6](Staking.user_selected_validator_bals: VecMap<address, Balance<SUI>>)
4878CopyLoc[2](Arg2: address)
4889Call balance::zero<SUI>(): Balance<SUI>
48910Call vec_map::insert<address, Balance<SUI>>(&mut VecMap<address, Balance<SUI>>, address, Balance<SUI>)
49111MoveLoc[0](Arg0: &mut Staking)
49212MutBorrowField[6](Staking.user_selected_validator_bals: VecMap<address, Balance<SUI>>)
49313ImmBorrowLoc[2](Arg2: address)
49414Call vec_map::get_mut<address, Balance<SUI>>(&mut VecMap<address, Balance<SUI>>, &address): &mut Balance<SUI>
49515MoveLoc[1](Arg1: Coin<SUI>)
49616Call coin::into_balance<SUI>(Coin<SUI>): Balance<SUI>
49717Call balance::join<SUI>(&mut Balance<SUI>, Balance<SUI>): u64
502public request_unstake_instant(Arg0: &mut Staking, Arg1: Coin<HASUI>, Arg2: &mut TxContext) {
508public request_unstake_instant_v2(Arg0: &mut SuiSystemState, Arg1: &mut Staking, Arg2: Coin<HASUI>, Arg3: &mut TxContext) {
5100MoveLoc[0](Arg0: &mut SuiSystemState)
5111MoveLoc[1](Arg1: &mut Staking)
5122MoveLoc[2](Arg2: Coin<HASUI>)
5133CopyLoc[3](Arg3: &mut TxContext)
5144Call request_unstake_instant_coin(&mut SuiSystemState, &mut Staking, Coin<HASUI>, &mut TxContext): Coin<SUI>
5155MoveLoc[3](Arg3: &mut TxContext)
5177Call tx_context::sender(&TxContext): address
5188Call transfer::public_transfer<Coin<SUI>>(Coin<SUI>, address)
522public request_unstake_instant_coin(Arg0: &mut SuiSystemState, Arg1: &mut Staking, Arg2: Coin<HASUI>, Arg3: &mut TxContext): Coin<SUI> {
525L6: loc2: Balance<SUI>
527L8: loc4: Balance<SUI>
5330CopyLoc[1](Arg1: &mut Staking)
5352Call assert_version(&Staking)
5363CopyLoc[1](Arg1: &mut Staking)
5374ImmBorrowField[7](Staking.pause_unstake: bool)
5449MoveLoc[0](Arg0: &mut SuiSystemState)
54611MoveLoc[1](Arg1: &mut Staking)
54813MoveLoc[3](Arg3: &mut TxContext)
55015LdConst[21](u64: 13)
55317ImmBorrowLoc[2](Arg2: Coin<HASUI>)
55418Call coin::value<HASUI>(&Coin<HASUI>): u64
55620CopyLoc[1](Arg1: &mut Staking)
55721CopyLoc[9](loc5: u64)
56024MoveLoc[4](loc0: u64)
56125Call get_sui_by_stsui(&Staking, u64): u64
56226StLoc[10](loc6: u64)
56327CopyLoc[9](loc5: u64)
57032MoveLoc[0](Arg0: &mut SuiSystemState)
57234MoveLoc[1](Arg1: &mut Staking)
57436MoveLoc[3](Arg3: &mut TxContext)
57638LdConst[19](u64: 11)
57940CopyLoc[10](loc6: u64)
58041CopyLoc[1](Arg1: &mut Staking)
58243Call get_total_sui(&Staking): u64
58646CopyLoc[10](loc6: u64)
58747LdConst[0](u64: 1000..)
58949StLoc[5](loc1: bool)
59352StLoc[5](loc1: bool)
59553MoveLoc[5](loc1: bool)
60056MoveLoc[0](Arg0: &mut SuiSystemState)
60258MoveLoc[1](Arg1: &mut Staking)
60460MoveLoc[3](Arg3: &mut TxContext)
60964CopyLoc[3](Arg3: &mut TxContext)
61166Call tx_context::sender(&TxContext): address
61267StLoc[11](loc7: address)
61368MoveLoc[0](Arg0: &mut SuiSystemState)
61469CopyLoc[1](Arg1: &mut Staking)
61570CopyLoc[10](loc6: u64)
61772CopyLoc[3](Arg3: &mut TxContext)
61873Call withdraw_sui(&mut SuiSystemState, &mut Staking, u64, bool, &mut TxContext): Balance<SUI>
61974StLoc[6](loc2: Balance<SUI>)
62075CopyLoc[1](Arg1: &mut Staking)
62176ImmBorrowField[8](Staking.config: StakingConfig)
62277Call config::get_service_fee(&StakingConfig): u64
62378StLoc[12](loc8: u64)
62479CopyLoc[10](loc6: u64)
62681MoveLoc[12](loc8: u64)
62984LdConst[4](u64: 1000..)
63489MutBorrowLoc[6](loc2: Balance<SUI>)
63590MoveLoc[7](loc3: u64)
63691Call balance::split<SUI>(&mut Balance<SUI>, u64): Balance<SUI>
63792StLoc[8](loc4: Balance<SUI>)
63893CopyLoc[1](Arg1: &mut Staking)
63994MutBorrowField[9](Staking.service_sui_vault: Vault<SUI>)
64095MoveLoc[8](loc4: Balance<SUI>)
64196Call vault::deposit<SUI>(&mut Vault<SUI>, Balance<SUI>)
64297CopyLoc[1](Arg1: &mut Staking)
64398MutBorrowField[4](Staking.stsui_treasury_cap: TreasuryCap<HASUI>)
64499MoveLoc[2](Arg2: Coin<HASUI>)
645100Call coin::burn<HASUI>(&mut TreasuryCap<HASUI>, Coin<HASUI>): u64
647102MoveLoc[11](loc7: address)
648103CopyLoc[10](loc6: u64)
649104MoveLoc[9](loc5: u64)
650105Pack[5](UserInstantUnstaked)
651106Call event::emit<UserInstantUnstaked>(UserInstantUnstaked)
652107CopyLoc[1](Arg1: &mut Staking)
653108ImmBorrowField[10](Staking.total_unstaked: u64)
655110MoveLoc[10](loc6: u64)
657112CopyLoc[1](Arg1: &mut Staking)
658113MutBorrowField[10](Staking.total_unstaked: u64)
660115CopyLoc[1](Arg1: &mut Staking)
661116ImmBorrowField[4](Staking.stsui_treasury_cap: TreasuryCap<HASUI>)
662117Call coin::total_supply<HASUI>(&TreasuryCap<HASUI>): u64
663118MoveLoc[1](Arg1: &mut Staking)
664119MutBorrowField[0](Staking.stsui_supply: u64)
666121MoveLoc[6](loc2: Balance<SUI>)
667122MoveLoc[3](Arg3: &mut TxContext)
668123Call coin::from_balance<SUI>(Balance<SUI>, &mut TxContext): Coin<SUI>
672public request_unstake_delay(Arg0: &mut Staking, Arg1: &Clock, Arg2: Coin<HASUI>, Arg3: &mut TxContext) {
684L15: loc11: UnstakeTicket
6860CopyLoc[0](Arg0: &mut Staking)
6882Call assert_version(&Staking)
6893CopyLoc[0](Arg0: &mut Staking)
6904ImmBorrowField[7](Staking.pause_unstake: bool)
6979MoveLoc[0](Arg0: &mut Staking)
69911MoveLoc[3](Arg3: &mut TxContext)
70113MoveLoc[1](Arg1: &Clock)
70315LdConst[21](u64: 13)
70617ImmBorrowLoc[2](Arg2: Coin<HASUI>)
70718Call coin::value<HASUI>(&Coin<HASUI>): u64
70819StLoc[10](loc6: u64)
70920CopyLoc[0](Arg0: &mut Staking)
71021CopyLoc[10](loc6: u64)
71324MoveLoc[4](loc0: u64)
71425Call get_sui_by_stsui(&Staking, u64): u64
71526StLoc[12](loc8: u64)
71627CopyLoc[10](loc6: u64)
72332MoveLoc[0](Arg0: &mut Staking)
72534MoveLoc[3](Arg3: &mut TxContext)
72736MoveLoc[1](Arg1: &Clock)
72938LdConst[19](u64: 11)
73240CopyLoc[12](loc8: u64)
73341CopyLoc[0](Arg0: &mut Staking)
73543Call get_total_sui(&Staking): u64
73946CopyLoc[12](loc8: u64)
74047LdConst[0](u64: 1000..)
74249StLoc[5](loc1: bool)
74652StLoc[5](loc1: bool)
74853MoveLoc[5](loc1: bool)
75356MoveLoc[0](Arg0: &mut Staking)
75558MoveLoc[3](Arg3: &mut TxContext)
75760MoveLoc[1](Arg1: &Clock)
76264CopyLoc[3](Arg3: &mut TxContext)
76466Call tx_context::epoch(&TxContext): u64
76668CopyLoc[3](Arg3: &mut TxContext)
76870Call tx_context::epoch_timestamp_ms(&TxContext): u64
77072MoveLoc[1](Arg1: &Clock)
77173Call clock::timestamp_ms(&Clock): u64
77274StLoc[13](loc9: u64)
77375LdConst[6](u64: 8640..)
77577CopyLoc[8](loc4: u64)
77981CopyLoc[0](Arg0: &mut Staking)
78082ImmBorrowField[8](Staking.config: StakingConfig)
78183Call config::get_withdraw_time_limit(&StakingConfig): u64
78284StLoc[11](loc7: u64)
78385CopyLoc[13](loc9: u64)
78486CopyLoc[9](loc5: u64)
78587MoveLoc[11](loc7: u64)
79091MoveLoc[7](loc3: u64)
79495MoveLoc[6](loc2: u64)
79596LdConst[6](u64: 8640..)
79999CopyLoc[3](Arg3: &mut TxContext)
800100Call object::new(&mut TxContext): UID
801101CopyLoc[13](loc9: u64)
802102CopyLoc[10](loc6: u64)
803103CopyLoc[12](loc8: u64)
804104MoveLoc[7](loc3: u64)
805105CopyLoc[9](loc5: u64)
806106MoveLoc[6](loc2: u64)
808108Pack[3](UnstakeTicket)
809109StLoc[15](loc11: UnstakeTicket)
810110MoveLoc[3](Arg3: &mut TxContext)
812112Call tx_context::sender(&TxContext): address
813113StLoc[14](loc10: address)
814114MoveLoc[15](loc11: UnstakeTicket)
815115CopyLoc[14](loc10: address)
816116Call transfer::transfer<UnstakeTicket>(UnstakeTicket, address)
817117CopyLoc[0](Arg0: &mut Staking)
818118MutBorrowField[4](Staking.stsui_treasury_cap: TreasuryCap<HASUI>)
819119MoveLoc[2](Arg2: Coin<HASUI>)
820120Call coin::burn<HASUI>(&mut TreasuryCap<HASUI>, Coin<HASUI>): u64
822122MoveLoc[14](loc10: address)
823123MoveLoc[8](loc4: u64)
824124MoveLoc[9](loc5: u64)
825125MoveLoc[13](loc9: u64)
826126CopyLoc[12](loc8: u64)
827127MoveLoc[10](loc6: u64)
828128Pack[6](UserNormalUnstaked)
829129Call event::emit<UserNormalUnstaked>(UserNormalUnstaked)
830130CopyLoc[0](Arg0: &mut Staking)
831131ImmBorrowField[10](Staking.total_unstaked: u64)
833133CopyLoc[12](loc8: u64)
835135CopyLoc[0](Arg0: &mut Staking)
836136MutBorrowField[10](Staking.total_unstaked: u64)
838138CopyLoc[0](Arg0: &mut Staking)
839139ImmBorrowField[4](Staking.stsui_treasury_cap: TreasuryCap<HASUI>)
840140Call coin::total_supply<HASUI>(&TreasuryCap<HASUI>): u64
841141CopyLoc[0](Arg0: &mut Staking)
842142MutBorrowField[0](Staking.stsui_supply: u64)
844144CopyLoc[0](Arg0: &mut Staking)
845145ImmBorrowField[11](Staking.unclaimed_sui_amount: u64)
847147MoveLoc[12](loc8: u64)
849149MoveLoc[0](Arg0: &mut Staking)
850150MutBorrowField[11](Staking.unclaimed_sui_amount: u64)
855public claim(Arg0: &mut Staking, Arg1: UnstakeTicket, Arg2: &mut TxContext) {
861public claim_coin(Arg0: &mut Staking, Arg1: UnstakeTicket, Arg2: &mut TxContext): Coin<SUI> {
867public claim_v2(Arg0: &mut SuiSystemState, Arg1: &mut Staking, Arg2: UnstakeTicket, Arg3: &mut TxContext) {
8690MoveLoc[0](Arg0: &mut SuiSystemState)
8701MoveLoc[1](Arg1: &mut Staking)
8712MoveLoc[2](Arg2: UnstakeTicket)
8723CopyLoc[3](Arg3: &mut TxContext)
8734Call claim_coin_v2(&mut SuiSystemState, &mut Staking, UnstakeTicket, &mut TxContext): Coin<SUI>
8745MoveLoc[3](Arg3: &mut TxContext)
8767Call tx_context::sender(&TxContext): address
8778Call transfer::public_transfer<Coin<SUI>>(Coin<SUI>, address)
881public claim_coin_v2(Arg0: &mut SuiSystemState, Arg1: &mut Staking, Arg2: UnstakeTicket, Arg3: &mut TxContext): Coin<SUI> {
882L4: loc0: Balance<SUI>
8930CopyLoc[1](Arg1: &mut Staking)
8952Call assert_version(&Staking)
8963CopyLoc[1](Arg1: &mut Staking)
8985Call query_pause_claim(&Staking): bool
9049MoveLoc[0](Arg0: &mut SuiSystemState)
90611MoveLoc[1](Arg1: &mut Staking)
90813MoveLoc[3](Arg3: &mut TxContext)
91015LdConst[23](u64: 17)
91317MoveLoc[2](Arg2: UnstakeTicket)
91418Unpack[3](UnstakeTicket)
91721StLoc[12](loc8: u64)
92125ImmBorrowLoc[8](loc4: UID)
92226Call object::uid_to_inner(&UID): ID
92428MoveLoc[8](loc4: UID)
92529Call object::delete(UID)
92630CopyLoc[3](Arg3: &mut TxContext)
92832Call tx_context::epoch(&TxContext): u64
93034CopyLoc[3](Arg3: &mut TxContext)
93236Call tx_context::epoch_timestamp_ms(&TxContext): u64
93337StLoc[13](loc9: u64)
93438MoveLoc[7](loc3: u64)
93539MoveLoc[5](loc1: u64)
94143MoveLoc[0](Arg0: &mut SuiSystemState)
94345MoveLoc[1](Arg1: &mut Staking)
94547MoveLoc[3](Arg3: &mut TxContext)
95051MoveLoc[13](loc9: u64)
95152MoveLoc[6](loc2: u64)
95756MoveLoc[0](Arg0: &mut SuiSystemState)
95958MoveLoc[1](Arg1: &mut Staking)
96160MoveLoc[3](Arg3: &mut TxContext)
96664CopyLoc[1](Arg1: &mut Staking)
96765MutBorrowField[12](Staking.claim_sui_vault: Vault<SUI>)
96866CopyLoc[12](loc8: u64)
96967Call vault::withdraw_max<SUI>(&mut Vault<SUI>, u64): Balance<SUI> * u64
97068StLoc[10](loc6: u64)
97169StLoc[4](loc0: Balance<SUI>)
97270MutBorrowLoc[4](loc0: Balance<SUI>)
97371MoveLoc[0](Arg0: &mut SuiSystemState)
97472CopyLoc[1](Arg1: &mut Staking)
97573MoveLoc[10](loc6: u64)
97775CopyLoc[3](Arg3: &mut TxContext)
97876Call withdraw_sui(&mut SuiSystemState, &mut Staking, u64, bool, &mut TxContext): Balance<SUI>
97977Call balance::join<SUI>(&mut Balance<SUI>, Balance<SUI>): u64
98179CopyLoc[3](Arg3: &mut TxContext)
98381Call tx_context::sender(&TxContext): address
98482StLoc[11](loc7: address)
98583CopyLoc[1](Arg1: &mut Staking)
98684ImmBorrowField[11](Staking.unclaimed_sui_amount: u64)
98886CopyLoc[12](loc8: u64)
99088MoveLoc[1](Arg1: &mut Staking)
99189MutBorrowField[11](Staking.unclaimed_sui_amount: u64)
99391MoveLoc[9](loc5: ID)
99492MoveLoc[11](loc7: address)
99593MoveLoc[12](loc8: u64)
99694Pack[7](UserClaimed)
99795Call event::emit<UserClaimed>(UserClaimed)
99896MoveLoc[4](loc0: Balance<SUI>)
99997MoveLoc[3](Arg3: &mut TxContext)
100098Call coin::from_balance<SUI>(Balance<SUI>, &mut TxContext): Coin<SUI>
1004withdraw_sui(Arg0: &mut SuiSystemState, Arg1: &mut Staking, Arg2: u64, Arg3: bool, Arg4: &mut TxContext): Balance<SUI> {
1007L7: loc2: Balance<SUI>
1015L15: loc10: Balance<SUI>
1018L18: loc13: &mut Balance<SUI>
1019L19: loc14: vector<address>
1020L20: loc15: vector<address>
10220CopyLoc[1](Arg1: &mut Staking)
10231MutBorrowField[1](Staking.sui_vault: Vault<SUI>)
10242MoveLoc[2](Arg2: u64)
10253Call vault::withdraw_max<SUI>(&mut Vault<SUI>, u64): Balance<SUI> * u64
10264StLoc[11](loc6: u64)
10275StLoc[7](loc2: Balance<SUI>)
10286MoveLoc[11](loc6: u64)
10308MoveLoc[3](Arg3: bool)
103310CopyLoc[1](Arg1: &mut Staking)
103411ImmBorrowField[6](Staking.user_selected_validator_bals: VecMap<address, Balance<SUI>>)
103512Call vec_map::keys<address, Balance<SUI>>(&VecMap<address, Balance<SUI>>): vector<address>
103613StLoc[19](loc14: vector<address>)
103815StLoc[9](loc4: u64)
103916ImmBorrowLoc[19](loc14: vector<address>)
104118StLoc[12](loc7: u64)
104319CopyLoc[9](loc4: u64)
104420CopyLoc[12](loc7: u64)
105024CopyLoc[2](Arg2: u64)
105327StLoc[5](loc0: bool)
105730StLoc[5](loc0: bool)
105931MoveLoc[5](loc0: bool)
106233ImmBorrowLoc[19](loc14: vector<address>)
106334CopyLoc[9](loc4: u64)
106637StLoc[16](loc11: address)
106738CopyLoc[1](Arg1: &mut Staking)
106839MutBorrowField[6](Staking.user_selected_validator_bals: VecMap<address, Balance<SUI>>)
106940ImmBorrowLoc[16](loc11: address)
107041Call vec_map::get_mut<address, Balance<SUI>>(&mut VecMap<address, Balance<SUI>>, &address): &mut Balance<SUI>
107142StLoc[18](loc13: &mut Balance<SUI>)
107243CopyLoc[18](loc13: &mut Balance<SUI>)
107445Call balance::value<SUI>(&Balance<SUI>): u64
107546StLoc[14](loc9: u64)
107647CopyLoc[14](loc9: u64)
108151CopyLoc[14](loc9: u64)
108252CopyLoc[2](Arg2: u64)
108655MutBorrowLoc[7](loc2: Balance<SUI>)
108756MoveLoc[18](loc13: &mut Balance<SUI>)
108857MoveLoc[2](Arg2: u64)
108958Call balance::split<SUI>(&mut Balance<SUI>, u64): Balance<SUI>
109059Call balance::join<SUI>(&mut Balance<SUI>, Balance<SUI>): u64
109362StLoc[2](Arg2: u64)
109664MoveLoc[2](Arg2: u64)
109765MoveLoc[14](loc9: u64)
109967StLoc[2](Arg2: u64)
110068MutBorrowLoc[7](loc2: Balance<SUI>)
110169MoveLoc[18](loc13: &mut Balance<SUI>)
110270Call balance::withdraw_all<SUI>(&mut Balance<SUI>): Balance<SUI>
110371Call balance::join<SUI>(&mut Balance<SUI>, Balance<SUI>): u64
110874MoveLoc[18](loc13: &mut Balance<SUI>)
111176MoveLoc[9](loc4: u64)
111479StLoc[9](loc4: u64)
111781CopyLoc[2](Arg2: u64)
112285CopyLoc[2](Arg2: u64)
112386StLoc[11](loc6: u64)
112487Call balance::zero<SUI>(): Balance<SUI>
112588StLoc[15](loc10: Balance<SUI>)
112689CopyLoc[4](Arg4: &mut TxContext)
112891Call tx_context::epoch(&TxContext): u64
112992StLoc[8](loc3: u64)
113093CopyLoc[1](Arg1: &mut Staking)
113194ImmBorrowField[13](Staking.validators: vector<address>)
113396StLoc[20](loc15: vector<address>)
113497ImmBorrowLoc[20](loc15: vector<address>)
113699StLoc[13](loc8: u64)
1138101StLoc[10](loc5: u64)
1140102CopyLoc[10](loc5: u64)
1141103CopyLoc[13](loc8: u64)
1147107CopyLoc[2](Arg2: u64)
1150110StLoc[6](loc1: bool)
1154113StLoc[6](loc1: bool)
1156114MoveLoc[6](loc1: bool)
1159116ImmBorrowLoc[20](loc15: vector<address>)
1160117CopyLoc[10](loc5: u64)
1163120StLoc[17](loc12: address)
1164121CopyLoc[1](Arg1: &mut Staking)
1165122CopyLoc[0](Arg0: &mut SuiSystemState)
1166123MutBorrowLoc[15](loc10: Balance<SUI>)
1167124MoveLoc[17](loc12: address)
1168125MoveLoc[2](Arg2: u64)
1169126CopyLoc[8](loc3: u64)
1170127CopyLoc[4](Arg4: &mut TxContext)
1171128Call do_validator_unstake(&mut Staking, &mut SuiSystemState, &mut Balance<SUI>, address, u64, u64, &mut TxContext): u64
1172129StLoc[2](Arg2: u64)
1173130MoveLoc[10](loc5: u64)
1176133StLoc[10](loc5: u64)
1179135MoveLoc[0](Arg0: &mut SuiSystemState)
1181137MoveLoc[4](Arg4: &mut TxContext)
1183139MoveLoc[2](Arg2: u64)
1190144MoveLoc[1](Arg1: &mut Staking)
1192146LdConst[22](u64: 16)
1195148MutBorrowLoc[7](loc2: Balance<SUI>)
1196149MutBorrowLoc[15](loc10: Balance<SUI>)
1197150MoveLoc[11](loc6: u64)
1198151Call balance::split<SUI>(&mut Balance<SUI>, u64): Balance<SUI>
1199152Call balance::join<SUI>(&mut Balance<SUI>, Balance<SUI>): u64
1201154MoveLoc[1](Arg1: &mut Staking)
1202155MutBorrowField[1](Staking.sui_vault: Vault<SUI>)
1203156MoveLoc[15](loc10: Balance<SUI>)
1204157Call vault::deposit<SUI>(&mut Vault<SUI>, Balance<SUI>)
1207159MoveLoc[0](Arg0: &mut SuiSystemState)
1209161MoveLoc[1](Arg1: &mut Staking)
1211163MoveLoc[4](Arg4: &mut TxContext)
1214165MoveLoc[7](loc2: Balance<SUI>)
1218public assert_version(Arg0: &Staking) {
12200MoveLoc[0](Arg0: &Staking)
12211ImmBorrowField[14](Staking.version: u64)
1235public(friend) migrate(Arg0: &mut Staking) {
12370CopyLoc[0](Arg0: &mut Staking)
12381ImmBorrowField[14](Staking.version: u64)
12467MoveLoc[0](Arg0: &mut Staking)
125111CopyLoc[0](Arg0: &mut Staking)
125212ImmBorrowField[14](Staking.version: u64)
125414LdConst[10](u64: 5)
125515Pack[14](VersionUpdated)
125616Call event::emit<VersionUpdated>(VersionUpdated)
125717LdConst[10](u64: 5)
125818MoveLoc[0](Arg0: &mut Staking)
125919MutBorrowField[14](Staking.version: u64)
1264public(friend) do_stake(Arg0: &mut Staking, Arg1: &mut SuiSystemState, Arg2: vector<address>, Arg3: &mut TxContext) {
1265L4: loc0: vector<address>
1268L7: loc3: Balance<SUI>
1273L12: loc8: Balance<SUI>
12760CopyLoc[1](Arg1: &mut SuiSystemState)
12771Call sui_system::active_validator_addresses(&mut SuiSystemState): vector<address>
12782StLoc[4](loc0: vector<address>)
12793CopyLoc[0](Arg0: &mut Staking)
12804CopyLoc[1](Arg1: &mut SuiSystemState)
12815ImmBorrowLoc[4](loc0: vector<address>)
12826CopyLoc[3](Arg3: &mut TxContext)
12837Call stake_user_selected_validators(&mut Staking, &mut SuiSystemState, &vector<address>, &mut TxContext): Balance<SUI>
12848StLoc[7](loc3: Balance<SUI>)
12859CopyLoc[0](Arg0: &mut Staking)
128610MutBorrowField[1](Staking.sui_vault: Vault<SUI>)
128711MoveLoc[7](loc3: Balance<SUI>)
128812Call vault::deposit<SUI>(&mut Vault<SUI>, Balance<SUI>)
128913ImmBorrowLoc[2](Arg2: vector<address>)
129115StLoc[13](loc9: u64)
129216CopyLoc[13](loc9: u64)
129921MoveLoc[1](Arg1: &mut SuiSystemState)
130123MoveLoc[0](Arg0: &mut Staking)
130325MoveLoc[3](Arg3: &mut TxContext)
130527LdConst[13](u64: 3)
130829CopyLoc[0](Arg0: &mut Staking)
130930ImmBorrowField[8](Staking.config: StakingConfig)
131031Call config::get_validator_count(&StakingConfig): u64
131132StLoc[6](loc2: u64)
131233CopyLoc[6](loc2: u64)
131334CopyLoc[13](loc9: u64)
131737MoveLoc[6](loc2: u64)
131838StLoc[13](loc9: u64)
132039CopyLoc[0](Arg0: &mut Staking)
132140ImmBorrowField[1](Staking.sui_vault: Vault<SUI>)
132241Call vault::vault_amount<SUI>(&Vault<SUI>): u64
132342StLoc[10](loc6: u64)
132443CopyLoc[10](loc6: u64)
132544LdConst[0](u64: 1000..)
132746StLoc[9](loc5: u64)
132847CopyLoc[9](loc5: u64)
133351MoveLoc[1](Arg1: &mut SuiSystemState)
133553MoveLoc[0](Arg0: &mut Staking)
133755MoveLoc[3](Arg3: &mut TxContext)
134158CopyLoc[13](loc9: u64)
134259CopyLoc[9](loc5: u64)
134662MoveLoc[9](loc5: u64)
134763StLoc[13](loc9: u64)
134964MoveLoc[10](loc6: u64)
135065CopyLoc[13](loc9: u64)
135267StLoc[5](loc1: u64)
135469StLoc[8](loc4: u64)
135670CopyLoc[8](loc4: u64)
135771CopyLoc[13](loc9: u64)
136375CopyLoc[0](Arg0: &mut Staking)
136476MutBorrowField[1](Staking.sui_vault: Vault<SUI>)
136577CopyLoc[5](loc1: u64)
136678Call vault::withdraw<SUI>(&mut Vault<SUI>, u64): Balance<SUI>
136779StLoc[12](loc8: Balance<SUI>)
136880ImmBorrowLoc[2](Arg2: vector<address>)
136981CopyLoc[8](loc4: u64)
137284StLoc[11](loc7: address)
137385MoveLoc[12](loc8: Balance<SUI>)
137486CopyLoc[0](Arg0: &mut Staking)
137587CopyLoc[1](Arg1: &mut SuiSystemState)
137688MoveLoc[11](loc7: address)
137789CopyLoc[3](Arg3: &mut TxContext)
137890Call stake_to_validator(Balance<SUI>, &mut Staking, &mut SuiSystemState, address, &mut TxContext)
137991MoveLoc[8](loc4: u64)
138294StLoc[8](loc4: u64)
138596MoveLoc[1](Arg1: &mut SuiSystemState)
138798MoveLoc[0](Arg0: &mut Staking)
1389100MoveLoc[3](Arg3: &mut TxContext)
1394public(friend) update_total_rewards_onchain(Arg0: &mut Staking, Arg1: &mut SuiSystemState, Arg2: &mut TxContext) {
1400L8: loc5: &mut PoolInfo
1405L13: loc10: vector<address>
14081StLoc[11](loc8: u64)
14092MoveLoc[2](Arg2: &mut TxContext)
14114Call tx_context::epoch(&TxContext): u64
14136CopyLoc[0](Arg0: &mut Staking)
14147ImmBorrowField[15](Staking.rewards_last_updated_epoch: u64)
14169CopyLoc[3](loc0: u64)
142012MoveLoc[1](Arg1: &mut SuiSystemState)
142214MoveLoc[0](Arg0: &mut Staking)
142617CopyLoc[0](Arg0: &mut Staking)
142718ImmBorrowField[13](Staking.validators: vector<address>)
142920StLoc[13](loc10: vector<address>)
143021CopyLoc[0](Arg0: &mut Staking)
143122ImmBorrowField[13](Staking.validators: vector<address>)
143324StLoc[5](loc2: u64)
143526StLoc[4](loc1: u64)
143727CopyLoc[4](loc1: u64)
143828CopyLoc[5](loc2: u64)
144432ImmBorrowLoc[13](loc10: vector<address>)
144533CopyLoc[4](loc1: u64)
144836StLoc[12](loc9: address)
144937MoveLoc[4](loc1: u64)
145240StLoc[4](loc1: u64)
145341CopyLoc[0](Arg0: &mut Staking)
145442MutBorrowField[16](Staking.pools: Table<address, PoolInfo>)
145543MoveLoc[12](loc9: address)
145644Call table::borrow_mut<address, PoolInfo>(&mut Table<address, PoolInfo>, address): &mut PoolInfo
145745StLoc[8](loc5: &mut PoolInfo)
145846MoveLoc[11](loc8: u64)
145947CopyLoc[1](Arg1: &mut SuiSystemState)
146048MoveLoc[8](loc5: &mut PoolInfo)
146149CopyLoc[3](loc0: u64)
146250Call calculate_validator_pool_rewards_increase(&mut SuiSystemState, &mut PoolInfo, u64): u64
146452StLoc[11](loc8: u64)
146754MoveLoc[1](Arg1: &mut SuiSystemState)
146956CopyLoc[0](Arg0: &mut Staking)
147158Call get_exchange_rate(&Staking): u64
147259StLoc[6](loc3: u64)
147360CopyLoc[0](Arg0: &mut Staking)
147461ImmBorrowField[8](Staking.config: StakingConfig)
147562Call config::get_reward_fee(&StakingConfig): u64
147663StLoc[9](loc6: u64)
147764CopyLoc[11](loc8: u64)
147966MoveLoc[9](loc6: u64)
148269LdConst[4](u64: 1000..)
148673StLoc[10](loc7: u64)
148774CopyLoc[0](Arg0: &mut Staking)
148875ImmBorrowField[17](Staking.uncollected_protocol_fees: u64)
149077CopyLoc[10](loc7: u64)
149279CopyLoc[0](Arg0: &mut Staking)
149380MutBorrowField[17](Staking.uncollected_protocol_fees: u64)
149582CopyLoc[0](Arg0: &mut Staking)
149683ImmBorrowField[2](Staking.total_rewards: u64)
149885StLoc[7](loc4: u64)
149986CopyLoc[0](Arg0: &mut Staking)
150087ImmBorrowField[2](Staking.total_rewards: u64)
150289MoveLoc[11](loc8: u64)
150491CopyLoc[0](Arg0: &mut Staking)
150592MutBorrowField[2](Staking.total_rewards: u64)
150794MoveLoc[7](loc4: u64)
150895CopyLoc[0](Arg0: &mut Staking)
150996ImmBorrowField[2](Staking.total_rewards: u64)
151198MoveLoc[10](loc7: u64)
151299Pack[11](SuiRewardsUpdated)
1513100Call event::emit<SuiRewardsUpdated>(SuiRewardsUpdated)
1514101MoveLoc[6](loc3: u64)
1515102CopyLoc[0](Arg0: &mut Staking)
1517104Call get_exchange_rate(&Staking): u64
1518105Pack[15](ExchangeRateUpdated)
1519106Call event::emit<ExchangeRateUpdated>(ExchangeRateUpdated)
1520107MoveLoc[3](loc0: u64)
1521108MoveLoc[0](Arg0: &mut Staking)
1522109MutBorrowField[15](Staking.rewards_last_updated_epoch: u64)
1527public(friend) update_validator_rewards(Arg0: &mut Staking, Arg1: &mut SuiSystemState, Arg2: address, Arg3: &mut TxContext) {
1531L7: loc3: &mut PoolInfo
15360CopyLoc[0](Arg0: &mut Staking)
15371ImmBorrowField[16](Staking.pools: Table<address, PoolInfo>)
15382CopyLoc[2](Arg2: address)
15393Call table::contains<address, PoolInfo>(&Table<address, PoolInfo>, address): bool
15436MoveLoc[1](Arg1: &mut SuiSystemState)
15458MoveLoc[0](Arg0: &mut Staking)
154710MoveLoc[3](Arg3: &mut TxContext)
155214StLoc[10](loc6: u64)
155315MoveLoc[3](Arg3: &mut TxContext)
155517Call tx_context::epoch(&TxContext): u64
155618StLoc[4](loc0: u64)
155719CopyLoc[0](Arg0: &mut Staking)
155820MutBorrowField[16](Staking.pools: Table<address, PoolInfo>)
155921MoveLoc[2](Arg2: address)
156022Call table::borrow_mut<address, PoolInfo>(&mut Table<address, PoolInfo>, address): &mut PoolInfo
156123StLoc[7](loc3: &mut PoolInfo)
156224MoveLoc[10](loc6: u64)
156325MoveLoc[1](Arg1: &mut SuiSystemState)
156426MoveLoc[7](loc3: &mut PoolInfo)
156527MoveLoc[4](loc0: u64)
156628Call calculate_validator_pool_rewards_increase(&mut SuiSystemState, &mut PoolInfo, u64): u64
156830StLoc[10](loc6: u64)
156931CopyLoc[0](Arg0: &mut Staking)
157133Call get_exchange_rate(&Staking): u64
157234StLoc[5](loc1: u64)
157335CopyLoc[0](Arg0: &mut Staking)
157436ImmBorrowField[8](Staking.config: StakingConfig)
157537Call config::get_reward_fee(&StakingConfig): u64
157638StLoc[8](loc4: u64)
157739CopyLoc[10](loc6: u64)
157941MoveLoc[8](loc4: u64)
158244LdConst[4](u64: 1000..)
158648StLoc[9](loc5: u64)
158749CopyLoc[0](Arg0: &mut Staking)
158850ImmBorrowField[17](Staking.uncollected_protocol_fees: u64)
159052CopyLoc[9](loc5: u64)
159254CopyLoc[0](Arg0: &mut Staking)
159355MutBorrowField[17](Staking.uncollected_protocol_fees: u64)
159557CopyLoc[0](Arg0: &mut Staking)
159658ImmBorrowField[2](Staking.total_rewards: u64)
159860StLoc[6](loc2: u64)
159961CopyLoc[0](Arg0: &mut Staking)
160062ImmBorrowField[2](Staking.total_rewards: u64)
160264MoveLoc[10](loc6: u64)
160466CopyLoc[0](Arg0: &mut Staking)
160567MutBorrowField[2](Staking.total_rewards: u64)
160769MoveLoc[6](loc2: u64)
160870CopyLoc[0](Arg0: &mut Staking)
160971ImmBorrowField[2](Staking.total_rewards: u64)
161173MoveLoc[9](loc5: u64)
161274Pack[11](SuiRewardsUpdated)
161375Call event::emit<SuiRewardsUpdated>(SuiRewardsUpdated)
161476MoveLoc[5](loc1: u64)
161577MoveLoc[0](Arg0: &mut Staking)
161779Call get_exchange_rate(&Staking): u64
161880Pack[15](ExchangeRateUpdated)
161981Call event::emit<ExchangeRateUpdated>(ExchangeRateUpdated)
1623public(friend) do_unstake_onchain_by_validator(Arg0: &mut Staking, Arg1: &mut SuiSystemState, Arg2: vector<address>, Arg3: &mut TxContext) {
16250MoveLoc[0](Arg0: &mut Staking)
16261MoveLoc[1](Arg1: &mut SuiSystemState)
16272MoveLoc[3](Arg3: &mut TxContext)
16283Call unstake_inactive_validators(&mut Staking, &mut SuiSystemState, &mut TxContext)
1632public(friend) unstake_inactive_validators(Arg0: &mut Staking, Arg1: &mut SuiSystemState, Arg2: &mut TxContext) {
1633L3: loc0: vector<address>
1635L5: loc2: vector<address>
16390CopyLoc[1](Arg1: &mut SuiSystemState)
16401Call sui_system::active_validator_addresses(&mut SuiSystemState): vector<address>
16412StLoc[3](loc0: vector<address>)
16434StLoc[5](loc2: vector<address>)
16445CopyLoc[0](Arg0: &mut Staking)
16456ImmBorrowField[13](Staking.validators: vector<address>)
164910StLoc[4](loc1: u64)
165111CopyLoc[4](loc1: u64)
165212CopyLoc[6](loc3: u64)
165816CopyLoc[0](Arg0: &mut Staking)
165917ImmBorrowField[13](Staking.validators: vector<address>)
166018CopyLoc[4](loc1: u64)
166321StLoc[7](loc4: address)
166422CopyLoc[7](loc4: address)
166523ImmBorrowLoc[3](loc0: vector<address>)
166624Call is_active_validator(address, &vector<address>): bool
167027MutBorrowLoc[5](loc2: vector<address>)
167128MoveLoc[7](loc4: address)
167430MoveLoc[4](loc1: u64)
167733StLoc[4](loc1: u64)
168035ImmBorrowLoc[5](loc2: vector<address>)
168640MoveLoc[0](Arg0: &mut Staking)
168741MoveLoc[1](Arg1: &mut SuiSystemState)
168842MoveLoc[5](loc2: vector<address>)
168943MoveLoc[2](Arg2: &mut TxContext)
169044Call unstake_validator_pools(&mut Staking, &mut SuiSystemState, vector<address>, &mut TxContext)
169346MoveLoc[1](Arg1: &mut SuiSystemState)
169548MoveLoc[0](Arg0: &mut Staking)
169750MoveLoc[2](Arg2: &mut TxContext)
1703public(friend) unstake_validator_pools(Arg0: &mut Staking, Arg1: &mut SuiSystemState, Arg2: vector<address>, Arg3: &mut TxContext) {
1707L7: loc3: Balance<SUI>
17100CopyLoc[3](Arg3: &mut TxContext)
17122Call tx_context::epoch(&TxContext): u64
17144Call balance::zero<SUI>(): Balance<SUI>
17155StLoc[7](loc3: Balance<SUI>)
17166ImmBorrowLoc[2](Arg2: vector<address>)
172010StLoc[5](loc1: u64)
172211CopyLoc[5](loc1: u64)
172312CopyLoc[6](loc2: u64)
172916ImmBorrowLoc[2](Arg2: vector<address>)
173017CopyLoc[5](loc1: u64)
173320StLoc[8](loc4: address)
173421CopyLoc[0](Arg0: &mut Staking)
173522CopyLoc[1](Arg1: &mut SuiSystemState)
173623MutBorrowLoc[7](loc3: Balance<SUI>)
173724MoveLoc[8](loc4: address)
173825LdConst[8](u64: 1844..)
173926CopyLoc[4](loc0: u64)
174027CopyLoc[3](Arg3: &mut TxContext)
174128Call do_validator_unstake(&mut Staking, &mut SuiSystemState, &mut Balance<SUI>, address, u64, u64, &mut TxContext): u64
174330MoveLoc[5](loc1: u64)
174633StLoc[5](loc1: u64)
174935MoveLoc[1](Arg1: &mut SuiSystemState)
175137MoveLoc[3](Arg3: &mut TxContext)
175339MoveLoc[0](Arg0: &mut Staking)
175440MutBorrowField[1](Staking.sui_vault: Vault<SUI>)
175541MoveLoc[7](loc3: Balance<SUI>)
175642Call vault::deposit<SUI>(&mut Vault<SUI>, Balance<SUI>)
1760public(friend) unstake_from_validator(Arg0: &mut Staking, Arg1: &mut SuiSystemState, Arg2: address, Arg3: u64, Arg4: &mut TxContext) {
1762L6: loc1: Balance<SUI>
17640CopyLoc[4](Arg4: &mut TxContext)
17662Call tx_context::epoch(&TxContext): u64
17684Call balance::zero<SUI>(): Balance<SUI>
17695StLoc[6](loc1: Balance<SUI>)
17706CopyLoc[0](Arg0: &mut Staking)
17717MoveLoc[1](Arg1: &mut SuiSystemState)
17728MutBorrowLoc[6](loc1: Balance<SUI>)
17739MoveLoc[2](Arg2: address)
177410MoveLoc[3](Arg3: u64)
177511MoveLoc[5](loc0: u64)
177612MoveLoc[4](Arg4: &mut TxContext)
177713Call do_validator_unstake(&mut Staking, &mut SuiSystemState, &mut Balance<SUI>, address, u64, u64, &mut TxContext): u64
177915MoveLoc[0](Arg0: &mut Staking)
178016MutBorrowField[1](Staking.sui_vault: Vault<SUI>)
178117MoveLoc[6](loc1: Balance<SUI>)
178218Call vault::deposit<SUI>(&mut Vault<SUI>, Balance<SUI>)
1786public(friend) sort_validators(Arg0: &mut Staking, Arg1: vector<address>) {
17910CopyLoc[0](Arg0: &mut Staking)
17921ImmBorrowField[13](Staking.validators: vector<address>)
17954ImmBorrowLoc[1](Arg1: vector<address>)
17976CopyLoc[3](loc1: u64)
180310MoveLoc[0](Arg0: &mut Staking)
180512LdConst[24](u64: 18)
180915StLoc[2](loc0: u64)
181116CopyLoc[2](loc0: u64)
181217CopyLoc[3](loc1: u64)
181821CopyLoc[0](Arg0: &mut Staking)
181922ImmBorrowField[13](Staking.validators: vector<address>)
182023CopyLoc[2](loc0: u64)
182225StLoc[4](loc2: &address)
182326ImmBorrowLoc[1](Arg1: vector<address>)
182427MoveLoc[4](loc2: &address)
182528Call vector::contains<address>(&vector<address>, &address): bool
183031MoveLoc[0](Arg0: &mut Staking)
183233LdConst[25](u64: 19)
183535MoveLoc[2](loc0: u64)
183838StLoc[2](loc0: u64)
184140MoveLoc[1](Arg1: vector<address>)
184241MoveLoc[0](Arg0: &mut Staking)
184342MutBorrowField[13](Staking.validators: vector<address>)
1848stake_user_selected_validators(Arg0: &mut Staking, Arg1: &mut SuiSystemState, Arg2: &vector<address>, Arg3: &mut TxContext): Balance<SUI> {
1849L4: loc0: Balance<SUI>
1851L6: loc2: vector<Balance<SUI>>
1852L7: loc3: vector<address>
18540CopyLoc[0](Arg0: &mut Staking)
18551MoveLoc[2](Arg2: &vector<address>)
18562Call get_user_selected_validators(&mut Staking, &vector<address>): vector<address> * vector<Balance<SUI>> * Balance<SUI>
18573StLoc[4](loc0: Balance<SUI>)
18584StLoc[6](loc2: vector<Balance<SUI>>)
18595StLoc[7](loc3: vector<address>)
18616ImmBorrowLoc[6](loc2: vector<Balance<SUI>>)
186912MutBorrowLoc[7](loc3: vector<address>)
187114StLoc[5](loc1: address)
187215MutBorrowLoc[6](loc2: vector<Balance<SUI>>)
187417CopyLoc[0](Arg0: &mut Staking)
187518CopyLoc[1](Arg1: &mut SuiSystemState)
187619MoveLoc[5](loc1: address)
187720CopyLoc[3](Arg3: &mut TxContext)
187821Call stake_to_validator(Balance<SUI>, &mut Staking, &mut SuiSystemState, address, &mut TxContext)
188123MoveLoc[1](Arg1: &mut SuiSystemState)
188325MoveLoc[0](Arg0: &mut Staking)
188527MoveLoc[3](Arg3: &mut TxContext)
188729MoveLoc[6](loc2: vector<Balance<SUI>>)
188931MoveLoc[4](loc0: Balance<SUI>)
1893get_user_selected_validators(Arg0: &mut Staking, Arg1: &vector<address>): vector<address> * vector<Balance<SUI>> * Balance<SUI> {
1894L2: loc0: Balance<SUI>
1896L4: loc2: Balance<SUI>
1897L5: loc3: vector<Balance<SUI>>
1898L6: loc4: vector<address>
19000Call balance::zero<SUI>(): Balance<SUI>
19011StLoc[2](loc0: Balance<SUI>)
19033StLoc[6](loc4: vector<address>)
19055StLoc[5](loc3: vector<Balance<SUI>>)
19076CopyLoc[0](Arg0: &mut Staking)
19087ImmBorrowField[6](Staking.user_selected_validator_bals: VecMap<address, Balance<SUI>>)
19098Call vec_map::is_empty<address, Balance<SUI>>(&VecMap<address, Balance<SUI>>): bool
191512CopyLoc[0](Arg0: &mut Staking)
191613MutBorrowField[6](Staking.user_selected_validator_bals: VecMap<address, Balance<SUI>>)
191714Call vec_map::pop<address, Balance<SUI>>(&mut VecMap<address, Balance<SUI>>): address * Balance<SUI>
191815StLoc[4](loc2: Balance<SUI>)
191916StLoc[3](loc1: address)
192017CopyLoc[3](loc1: address)
192118CopyLoc[1](Arg1: &vector<address>)
192219Call is_active_validator(address, &vector<address>): bool
192521ImmBorrowLoc[4](loc2: Balance<SUI>)
192622Call balance::value<SUI>(&Balance<SUI>): u64
192723LdConst[0](u64: 1000..)
193126MutBorrowLoc[6](loc4: vector<address>)
193227MoveLoc[3](loc1: address)
193429MutBorrowLoc[5](loc3: vector<Balance<SUI>>)
193530MoveLoc[4](loc2: Balance<SUI>)
193933MutBorrowLoc[2](loc0: Balance<SUI>)
194034MoveLoc[4](loc2: Balance<SUI>)
194135Call balance::join<SUI>(&mut Balance<SUI>, Balance<SUI>): u64
194638MutBorrowLoc[2](loc0: Balance<SUI>)
194739MoveLoc[4](loc2: Balance<SUI>)
194840Call balance::join<SUI>(&mut Balance<SUI>, Balance<SUI>): u64
195343MoveLoc[0](Arg0: &mut Staking)
195545MoveLoc[1](Arg1: &vector<address>)
195747MoveLoc[6](loc4: vector<address>)
195848MoveLoc[5](loc3: vector<Balance<SUI>>)
195949MoveLoc[2](loc0: Balance<SUI>)
1963stake_to_validator(Arg0: Balance<SUI>, Arg1: &mut Staking, Arg2: &mut SuiSystemState, Arg3: address, Arg4: &mut TxContext) {
1966L7: loc2: &mut PoolInfo
19700CopyLoc[1](Arg1: &mut Staking)
19711ImmBorrowField[16](Staking.pools: Table<address, PoolInfo>)
19722CopyLoc[3](Arg3: address)
19733Call table::contains<address, PoolInfo>(&Table<address, PoolInfo>, address): bool
19776CopyLoc[4](Arg4: &mut TxContext)
19787Call table_queue::empty<StakedSui>(&mut TxContext): TableQueue<StakedSui>
198211StLoc[6](loc1: PoolInfo)
198312CopyLoc[1](Arg1: &mut Staking)
198413MutBorrowField[16](Staking.pools: Table<address, PoolInfo>)
198514CopyLoc[3](Arg3: address)
198615MoveLoc[6](loc1: PoolInfo)
198716Call table::add<address, PoolInfo>(&mut Table<address, PoolInfo>, address, PoolInfo)
198817CopyLoc[1](Arg1: &mut Staking)
198918MutBorrowField[13](Staking.validators: vector<address>)
199019CopyLoc[3](Arg3: address)
199321MoveLoc[1](Arg1: &mut Staking)
199422MutBorrowField[16](Staking.pools: Table<address, PoolInfo>)
199523CopyLoc[3](Arg3: address)
199624Call table::borrow_mut<address, PoolInfo>(&mut Table<address, PoolInfo>, address): &mut PoolInfo
199725StLoc[7](loc2: &mut PoolInfo)
199826ImmBorrowLoc[0](Arg0: Balance<SUI>)
199927Call balance::value<SUI>(&Balance<SUI>): u64
200028StLoc[5](loc0: u64)
200129CopyLoc[7](loc2: &mut PoolInfo)
200230ImmBorrowField[18](PoolInfo.total_staked: u64)
200432CopyLoc[5](loc0: u64)
200634CopyLoc[7](loc2: &mut PoolInfo)
200735MutBorrowField[18](PoolInfo.total_staked: u64)
200937MoveLoc[2](Arg2: &mut SuiSystemState)
201038MoveLoc[0](Arg0: Balance<SUI>)
201139CopyLoc[4](Arg4: &mut TxContext)
201240Call coin::from_balance<SUI>(Balance<SUI>, &mut TxContext): Coin<SUI>
201341CopyLoc[3](Arg3: address)
201442CopyLoc[4](Arg4: &mut TxContext)
201543Call sui_system::request_add_stake_non_entry(&mut SuiSystemState, Coin<SUI>, address, &mut TxContext): StakedSui
201644StLoc[8](loc3: StakedSui)
201745ImmBorrowLoc[8](loc3: StakedSui)
201846Call object::id<StakedSui>(&StakedSui): ID
202048MoveLoc[7](loc2: &mut PoolInfo)
202149MutBorrowField[19](PoolInfo.staked_suis: TableQueue<StakedSui>)
202250MoveLoc[8](loc3: StakedSui)
202351Call table_queue::push_back<StakedSui>(&mut TableQueue<StakedSui>, StakedSui)
202452MoveLoc[9](loc4: ID)
202553MoveLoc[4](Arg4: &mut TxContext)
202755Call tx_context::epoch(&TxContext): u64
202856MoveLoc[5](loc0: u64)
202957MoveLoc[3](Arg3: address)
203058Pack[8](SystemStaked)
203159Call event::emit<SystemStaked>(SystemStaked)
2035is_active_validator(Arg0: address, Arg1: &vector<address>): bool {
20370MoveLoc[1](Arg1: &vector<address>)
20381ImmBorrowLoc[0](Arg0: address)
20392Call vector::contains<address>(&vector<address>, &address): bool
2043calculate_validator_pool_rewards_increase(Arg0: &mut SuiSystemState, Arg1: &mut PoolInfo, Arg2: u64): u64 {
20510CopyLoc[1](Arg1: &mut PoolInfo)
20521ImmBorrowField[19](PoolInfo.staked_suis: TableQueue<StakedSui>)
20532Call table_queue::length<StakedSui>(&TableQueue<StakedSui>): u64
20586MoveLoc[0](Arg0: &mut SuiSystemState)
20608MoveLoc[1](Arg1: &mut PoolInfo)
206613StLoc[5](loc2: u64)
206714CopyLoc[1](Arg1: &mut PoolInfo)
206815ImmBorrowField[19](PoolInfo.staked_suis: TableQueue<StakedSui>)
206916Call table_queue::head<StakedSui>(&TableQueue<StakedSui>): u64
207017StLoc[3](loc0: u64)
207118CopyLoc[1](Arg1: &mut PoolInfo)
207219ImmBorrowField[19](PoolInfo.staked_suis: TableQueue<StakedSui>)
207320Call table_queue::tail<StakedSui>(&TableQueue<StakedSui>): u64
207421StLoc[8](loc5: u64)
207522MoveLoc[3](loc0: u64)
207623StLoc[4](loc1: u64)
207824CopyLoc[4](loc1: u64)
207925CopyLoc[8](loc5: u64)
208529CopyLoc[1](Arg1: &mut PoolInfo)
208630ImmBorrowField[19](PoolInfo.staked_suis: TableQueue<StakedSui>)
208731CopyLoc[4](loc1: u64)
208832Call table_queue::borrow<StakedSui>(&TableQueue<StakedSui>, u64): &StakedSui
208933StLoc[7](loc4: &StakedSui)
209034MoveLoc[5](loc2: u64)
209135CopyLoc[0](Arg0: &mut SuiSystemState)
209236MoveLoc[7](loc4: &StakedSui)
209337CopyLoc[2](Arg2: u64)
209438Call calculate_staked_sui_rewards(&mut SuiSystemState, &StakedSui, u64): u64
209640StLoc[5](loc2: u64)
209741MoveLoc[4](loc1: u64)
210044StLoc[4](loc1: u64)
210346MoveLoc[0](Arg0: &mut SuiSystemState)
210649StLoc[6](loc3: u64)
210750CopyLoc[5](loc2: u64)
210851CopyLoc[1](Arg1: &mut PoolInfo)
210952ImmBorrowField[20](PoolInfo.rewards: u64)
211456CopyLoc[5](loc2: u64)
211557CopyLoc[1](Arg1: &mut PoolInfo)
211658ImmBorrowField[20](PoolInfo.rewards: u64)
211961StLoc[6](loc3: u64)
212062MoveLoc[5](loc2: u64)
212163MoveLoc[1](Arg1: &mut PoolInfo)
212264MutBorrowField[20](PoolInfo.rewards: u64)
212667MoveLoc[1](Arg1: &mut PoolInfo)
212969MoveLoc[6](loc3: u64)
2133calculate_staked_sui_rewards(Arg0: &mut SuiSystemState, Arg1: &StakedSui, Arg2: u64): u64 {
21380CopyLoc[1](Arg1: &StakedSui)
21391Call staking_pool::pool_id(&StakedSui): ID
21413CopyLoc[1](Arg1: &StakedSui)
21424Call staking_pool::staked_sui_amount(&StakedSui): u64
21446MoveLoc[1](Arg1: &StakedSui)
21457Call staking_pool::stake_activation_epoch(&StakedSui): u64
21479MoveLoc[0](Arg0: &mut SuiSystemState)
214810MoveLoc[3](loc0: ID)
214911MoveLoc[4](loc1: u64)
215012MoveLoc[5](loc2: u64)
215113MoveLoc[2](Arg2: u64)
215214Call util::calculate_rewards(&mut SuiSystemState, ID, u64, u64, u64): u64
2156do_validator_unstake(Arg0: &mut Staking, Arg1: &mut SuiSystemState, Arg2: &mut Balance<SUI>, Arg3: address, Arg4: u64, Arg5: u64, Arg6: &mut TxContext): u64 {
2161L11: loc4: &mut PoolInfo
2163L13: loc6: &StakedSui
21700CopyLoc[0](Arg0: &mut Staking)
21711ImmBorrowField[16](Staking.pools: Table<address, PoolInfo>)
21722CopyLoc[3](Arg3: address)
21733Call table::contains<address, PoolInfo>(&Table<address, PoolInfo>, address): bool
21776MoveLoc[1](Arg1: &mut SuiSystemState)
21798MoveLoc[2](Arg2: &mut Balance<SUI>)
218110MoveLoc[0](Arg0: &mut Staking)
218312MoveLoc[6](Arg6: &mut TxContext)
218514MoveLoc[4](Arg4: u64)
218816CopyLoc[4](Arg4: u64)
218917StLoc[10](loc3: u64)
219119StLoc[14](loc7: u64)
219220CopyLoc[0](Arg0: &mut Staking)
219321MutBorrowField[16](Staking.pools: Table<address, PoolInfo>)
219422CopyLoc[3](Arg3: address)
219523Call table::borrow_mut<address, PoolInfo>(&mut Table<address, PoolInfo>, address): &mut PoolInfo
219624StLoc[11](loc4: &mut PoolInfo)
219825CopyLoc[4](Arg4: u64)
220530CopyLoc[11](loc4: &mut PoolInfo)
220631ImmBorrowField[19](PoolInfo.staked_suis: TableQueue<StakedSui>)
220732Call table_queue::length<StakedSui>(&TableQueue<StakedSui>): u64
221035StLoc[7](loc0: bool)
221438StLoc[7](loc0: bool)
221639MoveLoc[7](loc0: bool)
221941CopyLoc[11](loc4: &mut PoolInfo)
222042ImmBorrowField[19](PoolInfo.staked_suis: TableQueue<StakedSui>)
222143Call table_queue::borrow_front<StakedSui>(&TableQueue<StakedSui>): &StakedSui
222244StLoc[13](loc6: &StakedSui)
222345CopyLoc[1](Arg1: &mut SuiSystemState)
222446MoveLoc[13](loc6: &StakedSui)
222547CopyLoc[4](Arg4: u64)
222648CopyLoc[5](Arg5: u64)
222749Call get_split_amount(&mut SuiSystemState, &StakedSui, u64, u64): u64 * u64
222850StLoc[16](loc9: u64)
223354CopyLoc[11](loc4: &mut PoolInfo)
223455MutBorrowField[19](PoolInfo.staked_suis: TableQueue<StakedSui>)
223556Call table_queue::borrow_front_mut<StakedSui>(&mut TableQueue<StakedSui>): &mut StakedSui
223657MoveLoc[16](loc9: u64)
223758CopyLoc[6](Arg6: &mut TxContext)
223859Call staking_pool::split(&mut StakedSui, u64, &mut TxContext): StakedSui
223960StLoc[8](loc1: StakedSui)
224262CopyLoc[11](loc4: &mut PoolInfo)
224363MutBorrowField[19](PoolInfo.staked_suis: TableQueue<StakedSui>)
224464Call table_queue::pop_front<StakedSui>(&mut TableQueue<StakedSui>): StakedSui
224565StLoc[8](loc1: StakedSui)
224766MoveLoc[8](loc1: StakedSui)
224867StLoc[15](loc8: StakedSui)
224968CopyLoc[1](Arg1: &mut SuiSystemState)
225069MoveLoc[15](loc8: StakedSui)
225170CopyLoc[2](Arg2: &mut Balance<SUI>)
225271CopyLoc[6](Arg6: &mut TxContext)
225372Call withdraw_staked_sui(&mut SuiSystemState, StakedSui, &mut Balance<SUI>, &mut TxContext): u64 * u64
225473StLoc[18](loc11: u64)
225574StLoc[17](loc10: u64)
225675MoveLoc[14](loc7: u64)
225776CopyLoc[17](loc10: u64)
225978CopyLoc[18](loc11: u64)
226180StLoc[14](loc7: u64)
226281CopyLoc[17](loc10: u64)
226382CopyLoc[18](loc11: u64)
226584CopyLoc[4](Arg4: u64)
226987MoveLoc[4](Arg4: u64)
227088CopyLoc[17](loc10: u64)
227290CopyLoc[18](loc11: u64)
227492StLoc[4](Arg4: u64)
227895StLoc[4](Arg4: u64)
228096CopyLoc[11](loc4: &mut PoolInfo)
228197ImmBorrowField[18](PoolInfo.total_staked: u64)
228399MoveLoc[17](loc10: u64)
2285101CopyLoc[11](loc4: &mut PoolInfo)
2286102MutBorrowField[18](PoolInfo.total_staked: u64)
2288104CopyLoc[11](loc4: &mut PoolInfo)
2289105ImmBorrowField[20](PoolInfo.rewards: u64)
2291107CopyLoc[18](loc11: u64)
2295110CopyLoc[11](loc4: &mut PoolInfo)
2296111ImmBorrowField[20](PoolInfo.rewards: u64)
2298113MoveLoc[18](loc11: u64)
2300115CopyLoc[11](loc4: &mut PoolInfo)
2301116MutBorrowField[20](PoolInfo.rewards: u64)
2306120CopyLoc[11](loc4: &mut PoolInfo)
2307121MutBorrowField[20](PoolInfo.rewards: u64)
2312124MoveLoc[1](Arg1: &mut SuiSystemState)
2314126MoveLoc[2](Arg2: &mut Balance<SUI>)
2316128MoveLoc[6](Arg6: &mut TxContext)
2318130MoveLoc[11](loc4: &mut PoolInfo)
2319131ImmBorrowField[19](PoolInfo.staked_suis: TableQueue<StakedSui>)
2320132Call table_queue::is_empty<StakedSui>(&TableQueue<StakedSui>): bool
2321133StLoc[12](loc5: bool)
2322134CopyLoc[12](loc5: bool)
2325136CopyLoc[0](Arg0: &mut Staking)
2326137MutBorrowField[16](Staking.pools: Table<address, PoolInfo>)
2327138CopyLoc[3](Arg3: address)
2328139Call table::remove<address, PoolInfo>(&mut Table<address, PoolInfo>, address): PoolInfo
2329140Unpack[1](PoolInfo)
2332143Call table_queue::destroy_empty<StakedSui>(TableQueue<StakedSui>)
2333144CopyLoc[0](Arg0: &mut Staking)
2334145ImmBorrowField[13](Staking.validators: vector<address>)
2335146ImmBorrowLoc[3](Arg3: address)
2336147Call vector::index_of<address>(&vector<address>, &address): bool * u64
2337148StLoc[9](loc2: u64)
2340150MoveLoc[0](Arg0: &mut Staking)
2341151MutBorrowField[13](Staking.validators: vector<address>)
2342152MoveLoc[9](loc2: u64)
2343153Call vector::remove<address>(&mut vector<address>, u64): address
2347156MoveLoc[0](Arg0: &mut Staking)
2352159MoveLoc[0](Arg0: &mut Staking)
2355161MoveLoc[10](loc3: u64)
2356162CopyLoc[4](Arg4: u64)
2360165MoveLoc[3](Arg3: address)
2361166MoveLoc[5](Arg5: u64)
2362167MoveLoc[14](loc7: u64)
2363168MoveLoc[12](loc5: bool)
2364169Pack[10](PoolSystemUnstaked)
2365170Call event::emit<PoolSystemUnstaked>(PoolSystemUnstaked)
2367171MoveLoc[4](Arg4: u64)
2371get_split_amount(Arg0: &mut SuiSystemState, Arg1: &StakedSui, Arg2: u64, Arg3: u64): u64 * u64 {
23870CopyLoc[1](Arg1: &StakedSui)
23881Call staking_pool::staked_sui_amount(&StakedSui): u64
23892StLoc[14](loc10: u64)
23903MoveLoc[0](Arg0: &mut SuiSystemState)
23914MoveLoc[1](Arg1: &StakedSui)
23925MoveLoc[3](Arg3: u64)
23936Call calculate_staked_sui_rewards(&mut SuiSystemState, &StakedSui, u64): u64
23947StLoc[15](loc11: u64)
23958CopyLoc[14](loc10: u64)
23969MoveLoc[15](loc11: u64)
239811StLoc[16](loc12: u64)
239912CopyLoc[16](loc12: u64)
240013CopyLoc[2](Arg2: u64)
240517MoveLoc[14](loc10: u64)
240618StLoc[12](loc8: u64)
240719StLoc[11](loc7: u64)
241021MoveLoc[2](Arg2: u64)
241122CopyLoc[14](loc10: u64)
241223MoveLoc[16](loc12: u64)
241324Call util::mul_div(u64, u64, u64): u64
241627StLoc[17](loc13: u64)
241728CopyLoc[14](loc10: u64)
241829CopyLoc[17](loc13: u64)
242232CopyLoc[14](loc10: u64)
242333CopyLoc[17](loc13: u64)
242535StLoc[4](loc0: u64)
242837CopyLoc[14](loc10: u64)
242938StLoc[17](loc13: u64)
243140StLoc[4](loc0: u64)
243341MoveLoc[4](loc0: u64)
243442StLoc[13](loc9: u64)
243543CopyLoc[17](loc13: u64)
243644LdConst[0](u64: 1000..)
244047CopyLoc[13](loc9: u64)
244148LdConst[0](u64: 1000..)
244551MoveLoc[13](loc9: u64)
244652MoveLoc[17](loc13: u64)
244753StLoc[6](loc2: u64)
244854StLoc[5](loc1: u64)
245257MoveLoc[14](loc10: u64)
245358StLoc[6](loc2: u64)
245459StLoc[5](loc1: u64)
245660MoveLoc[5](loc1: u64)
245761MoveLoc[6](loc2: u64)
245862StLoc[10](loc6: u64)
245963StLoc[9](loc5: u64)
246265CopyLoc[14](loc10: u64)
246467LdConst[0](u64: 1000..)
246971MoveLoc[14](loc10: u64)
247072LdConst[0](u64: 1000..)
247274LdConst[0](u64: 1000..)
247375StLoc[8](loc4: u64)
247476StLoc[7](loc3: u64)
247879MoveLoc[14](loc10: u64)
247980StLoc[8](loc4: u64)
248081StLoc[7](loc3: u64)
248282MoveLoc[7](loc3: u64)
248383MoveLoc[8](loc4: u64)
248484StLoc[10](loc6: u64)
248585StLoc[9](loc5: u64)
248786MoveLoc[9](loc5: u64)
248887MoveLoc[10](loc6: u64)
248988StLoc[12](loc8: u64)
249089StLoc[11](loc7: u64)
249290MoveLoc[11](loc7: u64)
249391MoveLoc[12](loc8: u64)
2497withdraw_staked_sui(Arg0: &mut SuiSystemState, Arg1: StakedSui, Arg2: &mut Balance<SUI>, Arg3: &mut TxContext): u64 * u64 {
2500L6: loc2: Balance<SUI>
25020ImmBorrowLoc[1](Arg1: StakedSui)
25031Call staking_pool::staked_sui_amount(&StakedSui): u64
25053CopyLoc[0](Arg0: &mut SuiSystemState)
25064ImmBorrowLoc[1](Arg1: StakedSui)
25075CopyLoc[3](Arg3: &mut TxContext)
25097Call tx_context::epoch(&TxContext): u64
25108Call calculate_staked_sui_rewards(&mut SuiSystemState, &StakedSui, u64): u64
251210MoveLoc[0](Arg0: &mut SuiSystemState)
251311MoveLoc[1](Arg1: StakedSui)
251412MoveLoc[3](Arg3: &mut TxContext)
251513Call sui_system::request_withdraw_stake_non_entry(&mut SuiSystemState, StakedSui, &mut TxContext): Balance<SUI>
251614StLoc[6](loc2: Balance<SUI>)
251715ImmBorrowLoc[6](loc2: Balance<SUI>)
251816Call balance::value<SUI>(&Balance<SUI>): u64
251917CopyLoc[4](loc0: u64)
252018CopyLoc[5](loc1: u64)
252723MoveLoc[2](Arg2: &mut Balance<SUI>)
252925LdConst[12](u64: 2)
253227MoveLoc[2](Arg2: &mut Balance<SUI>)
253328MoveLoc[6](loc2: Balance<SUI>)
253429Call balance::join<SUI>(&mut Balance<SUI>, Balance<SUI>): u64
253631MoveLoc[4](loc0: u64)
253732MoveLoc[5](loc1: u64)
2541public(friend) collect_rewards_fee(Arg0: &mut Staking, Arg1: address, Arg2: &mut TxContext) {
2547public(friend) collect_rewards_fee_v2(Arg0: &mut SuiSystemState, Arg1: &mut Staking, Arg2: address, Arg3: &mut TxContext) {
2548L4: loc0: Balance<SUI>
25520CopyLoc[1](Arg1: &mut Staking)
25531MutBorrowField[21](Staking.protocol_sui_vault: Vault<SUI>)
25542CopyLoc[1](Arg1: &mut Staking)
25553ImmBorrowField[17](Staking.uncollected_protocol_fees: u64)
25575Call vault::withdraw_max<SUI>(&mut Vault<SUI>, u64): Balance<SUI> * u64
25597StLoc[4](loc0: Balance<SUI>)
25608MutBorrowLoc[4](loc0: Balance<SUI>)
25619MoveLoc[0](Arg0: &mut SuiSystemState)
256210CopyLoc[1](Arg1: &mut Staking)
256311MoveLoc[5](loc1: u64)
256513CopyLoc[3](Arg3: &mut TxContext)
256614Call withdraw_sui(&mut SuiSystemState, &mut Staking, u64, bool, &mut TxContext): Balance<SUI>
256715Call balance::join<SUI>(&mut Balance<SUI>, Balance<SUI>): u64
256917CopyLoc[1](Arg1: &mut Staking)
257018ImmBorrowField[22](Staking.total_protocol_fees: u64)
257220CopyLoc[1](Arg1: &mut Staking)
257321ImmBorrowField[17](Staking.uncollected_protocol_fees: u64)
257624CopyLoc[1](Arg1: &mut Staking)
257725MutBorrowField[22](Staking.total_protocol_fees: u64)
258028MoveLoc[1](Arg1: &mut Staking)
258129MutBorrowField[17](Staking.uncollected_protocol_fees: u64)
258331ImmBorrowLoc[4](loc0: Balance<SUI>)
258432Call balance::value<SUI>(&Balance<SUI>): u64
258533StLoc[6](loc2: u64)
258634MoveLoc[4](loc0: Balance<SUI>)
258735MoveLoc[3](Arg3: &mut TxContext)
258836Call coin::from_balance<SUI>(Balance<SUI>, &mut TxContext): Coin<SUI>
258937CopyLoc[2](Arg2: address)
259038Call transfer::public_transfer<Coin<SUI>>(Coin<SUI>, address)
259139MoveLoc[2](Arg2: address)
259240MoveLoc[6](loc2: u64)
259341Pack[12](RewardsFeeCollected)
259442Call event::emit<RewardsFeeCollected>(RewardsFeeCollected)
2598public(friend) collect_service_fee(Arg0: &mut Staking, Arg1: address, Arg2: &mut TxContext) {
26010CopyLoc[0](Arg0: &mut Staking)
26021ImmBorrowField[9](Staking.service_sui_vault: Vault<SUI>)
26032Call vault::vault_amount<SUI>(&Vault<SUI>): u64
26054MoveLoc[0](Arg0: &mut Staking)
26065MutBorrowField[9](Staking.service_sui_vault: Vault<SUI>)
26076CopyLoc[3](loc0: u64)
26087Call vault::withdraw<SUI>(&mut Vault<SUI>, u64): Balance<SUI>
26098MoveLoc[2](Arg2: &mut TxContext)
26109Call coin::from_balance<SUI>(Balance<SUI>, &mut TxContext): Coin<SUI>
261110CopyLoc[1](Arg1: address)
261211Call transfer::public_transfer<Coin<SUI>>(Coin<SUI>, address)
261312MoveLoc[1](Arg1: address)
261413MoveLoc[3](loc0: u64)
261514Pack[13](ServiceFeeCollected)
261615Call event::emit<ServiceFeeCollected>(ServiceFeeCollected)
2620public get_stsui_by_sui(Arg0: &Staking, Arg1: u64): u64 {
26240CopyLoc[0](Arg0: &Staking)
26251Call get_total_sui(&Staking): u64
26273CopyLoc[3](loc1: u64)
26338StLoc[2](loc0: bool)
263610CopyLoc[0](Arg0: &Staking)
263711ImmBorrowField[0](Staking.stsui_supply: u64)
264115StLoc[2](loc0: bool)
264316MoveLoc[2](loc0: bool)
264618MoveLoc[0](Arg0: &Staking)
264820MoveLoc[1](Arg1: u64)
265122MoveLoc[0](Arg0: &Staking)
265223ImmBorrowField[0](Staking.stsui_supply: u64)
265526MoveLoc[1](Arg1: u64)
265829MoveLoc[3](loc1: u64)
2665public get_sui_by_stsui(Arg0: &Staking, Arg1: u64): u64 {
26690CopyLoc[0](Arg0: &Staking)
26701Call get_total_sui(&Staking): u64
26723CopyLoc[3](loc1: u64)
26788StLoc[2](loc0: bool)
268110CopyLoc[0](Arg0: &Staking)
268211ImmBorrowField[0](Staking.stsui_supply: u64)
268615StLoc[2](loc0: bool)
268816MoveLoc[2](loc0: bool)
269118MoveLoc[0](Arg0: &Staking)
269320MoveLoc[1](Arg1: u64)
269622MoveLoc[3](loc1: u64)
269824MoveLoc[1](Arg1: u64)
270127MoveLoc[0](Arg0: &Staking)
270228ImmBorrowField[0](Staking.stsui_supply: u64)
2710public get_exchange_rate(Arg0: &Staking): u64 {
27140CopyLoc[0](Arg0: &Staking)
27151Call get_total_sui(&Staking): u64
27173CopyLoc[2](loc1: u64)
27238StLoc[1](loc0: bool)
272610CopyLoc[0](Arg0: &Staking)
272711ImmBorrowField[0](Staking.stsui_supply: u64)
273115StLoc[1](loc0: bool)
273316MoveLoc[1](loc0: bool)
273618MoveLoc[0](Arg0: &Staking)
273820LdConst[2](u64: 1000..)
274122MoveLoc[2](loc1: u64)
274324LdConst[2](u64: 1000..)
274627MoveLoc[0](Arg0: &Staking)
274728ImmBorrowField[0](Staking.stsui_supply: u64)
2755public get_total_sui(Arg0: &Staking): u64 {
27570CopyLoc[0](Arg0: &Staking)
27581ImmBorrowField[5](Staking.total_staked: u64)
27603CopyLoc[0](Arg0: &Staking)
27614ImmBorrowField[2](Staking.total_rewards: u64)
27647CopyLoc[0](Arg0: &Staking)
27658ImmBorrowField[22](Staking.total_protocol_fees: u64)
276811CopyLoc[0](Arg0: &Staking)
276912ImmBorrowField[17](Staking.uncollected_protocol_fees: u64)
277215MoveLoc[0](Arg0: &Staking)
277316ImmBorrowField[10](Staking.total_unstaked: u64)
2779public get_total_sui_cap(Arg0: &Staking): u64 {
27810CopyLoc[0](Arg0: &Staking)
27821Call get_total_sui(&Staking): u64
27832MoveLoc[0](Arg0: &Staking)
27843ImmBorrowField[11](Staking.unclaimed_sui_amount: u64)
2790public get_version(Arg0: &Staking): u64 {
27920MoveLoc[0](Arg0: &Staking)
27931ImmBorrowField[14](Staking.version: u64)
2798public get_config(Arg0: &Staking): &StakingConfig {
28000CopyLoc[0](Arg0: &Staking)
28011Call assert_version(&Staking)
28022MoveLoc[0](Arg0: &Staking)
28033ImmBorrowField[8](Staking.config: StakingConfig)
2807public get_config_mut(Arg0: &mut Staking): &mut StakingConfig {
28090CopyLoc[0](Arg0: &mut Staking)
28112Call assert_version(&Staking)
28123MoveLoc[0](Arg0: &mut Staking)
28134MutBorrowField[8](Staking.config: StakingConfig)
2817public get_total_staked(Arg0: &Staking): u64 {
28190MoveLoc[0](Arg0: &Staking)
28201ImmBorrowField[5](Staking.total_staked: u64)
2825public get_total_unstaked(Arg0: &Staking): u64 {
28270MoveLoc[0](Arg0: &Staking)
28281ImmBorrowField[10](Staking.total_unstaked: u64)
2833public get_total_rewards(Arg0: &Staking): u64 {
28350MoveLoc[0](Arg0: &Staking)
28361ImmBorrowField[2](Staking.total_rewards: u64)
2841public get_stsui_supply(Arg0: &Staking): u64 {
28430MoveLoc[0](Arg0: &Staking)
28441ImmBorrowField[0](Staking.stsui_supply: u64)
2849public get_sui_vault_amount(Arg0: &Staking): u64 {
28510MoveLoc[0](Arg0: &Staking)
28521ImmBorrowField[1](Staking.sui_vault: Vault<SUI>)
28532Call vault::vault_amount<SUI>(&Vault<SUI>): u64
2857public get_protocol_sui_vault_amount(Arg0: &Staking): u64 {
28590MoveLoc[0](Arg0: &Staking)
28601ImmBorrowField[21](Staking.protocol_sui_vault: Vault<SUI>)
28612Call vault::vault_amount<SUI>(&Vault<SUI>): u64
2865public get_service_sui_vault_amount(Arg0: &Staking): u64 {
28670MoveLoc[0](Arg0: &Staking)
28681ImmBorrowField[9](Staking.service_sui_vault: Vault<SUI>)
28692Call vault::vault_amount<SUI>(&Vault<SUI>): u64
2873public get_total_protocol_fees(Arg0: &Staking): u64 {
28750MoveLoc[0](Arg0: &Staking)
28761ImmBorrowField[22](Staking.total_protocol_fees: u64)
2881public get_uncollected_protocol_fees(Arg0: &Staking): u64 {
28830MoveLoc[0](Arg0: &Staking)
28841ImmBorrowField[17](Staking.uncollected_protocol_fees: u64)
2889public get_unclaimed_sui_amount(Arg0: &Staking): u64 {
28910MoveLoc[0](Arg0: &Staking)
28921ImmBorrowField[11](Staking.unclaimed_sui_amount: u64)
2897public(friend) toggle_stake(Arg0: &mut Staking, Arg1: bool) {
28990MoveLoc[1](Arg1: bool)
29001MoveLoc[0](Arg0: &mut Staking)
29012MutBorrowField[3](Staking.pause_stake: bool)
2906public(friend) toggle_unstake(Arg0: &mut Staking, Arg1: bool) {
29080MoveLoc[1](Arg1: bool)
29091MoveLoc[0](Arg0: &mut Staking)
29102MutBorrowField[7](Staking.pause_unstake: bool)
2915public(friend) toggle_claim(Arg0: &mut Staking, Arg1: bool) {
29170CopyLoc[0](Arg0: &mut Staking)
29181ImmBorrowField[23](Staking.id: UID)
29192LdConst[9](vector<u8>: "pau..)
29203Call dynamic_field::exists_with_type<vector<u8>, bool>(&UID, vector<u8>): bool
29246MoveLoc[0](Arg0: &mut Staking)
29257MutBorrowField[23](Staking.id: UID)
29268LdConst[9](vector<u8>: "pau..)
29279MoveLoc[1](Arg1: bool)
292810Call dynamic_field::add<vector<u8>, bool>(&mut UID, vector<u8>, bool)
293112MoveLoc[1](Arg1: bool)
293213MoveLoc[0](Arg0: &mut Staking)
293314MutBorrowField[23](Staking.id: UID)
293415LdConst[9](vector<u8>: "pau..)
293516Call dynamic_field::borrow_mut<vector<u8>, bool>(&mut UID, vector<u8>): &mut bool
2941public query_pause_claim(Arg0: &Staking): bool {
29430CopyLoc[0](Arg0: &Staking)
29441ImmBorrowField[23](Staking.id: UID)
29452LdConst[9](vector<u8>: "pau..)
29463Call dynamic_field::exists_with_type<vector<u8>, bool>(&UID, vector<u8>): bool
29495MoveLoc[0](Arg0: &Staking)
29506ImmBorrowField[23](Staking.id: UID)
29517LdConst[9](vector<u8>: "pau..)
29528Call dynamic_field::borrow<vector<u8>, bool>(&UID, vector<u8>): &bool
295611MoveLoc[0](Arg0: &Staking)
2962public get_staked_validators(Arg0: &Staking): vector<address> {
29640MoveLoc[0](Arg0: &Staking)
29651ImmBorrowField[13](Staking.validators: vector<address>)
2970public get_cached_validator_number(Arg0: &Staking): u64 {
29720MoveLoc[0](Arg0: &Staking)
29731ImmBorrowField[6](Staking.user_selected_validator_bals: VecMap<address, Balance<SUI>>)
29742Call vec_map::size<address, Balance<SUI>>(&VecMap<address, Balance<SUI>>): u64
2978public get_staked_validator(Arg0: &Staking, Arg1: address): bool {
29800MoveLoc[0](Arg0: &Staking)
29811ImmBorrowField[13](Staking.validators: vector<address>)
29822ImmBorrowLoc[1](Arg1: address)
29833Call vector::contains<address>(&vector<address>, &address): bool
2987public get_validator_staked_info(Arg0: &Staking): vector<ValidatorStakedInfo> {
2991L4: loc3: vector<ValidatorStakedInfo>
29951StLoc[4](loc3: vector<ValidatorStakedInfo>)
29962CopyLoc[0](Arg0: &Staking)
29973ImmBorrowField[13](Staking.validators: vector<address>)
30038CopyLoc[1](loc0: u64)
30049CopyLoc[2](loc1: u64)
301013CopyLoc[0](Arg0: &Staking)
301114ImmBorrowField[13](Staking.validators: vector<address>)
301215CopyLoc[1](loc0: u64)
301518StLoc[5](loc4: address)
301619MoveLoc[1](loc0: u64)
301922StLoc[1](loc0: u64)
302023CopyLoc[0](Arg0: &Staking)
302124ImmBorrowField[16](Staking.pools: Table<address, PoolInfo>)
302225CopyLoc[5](loc4: address)
302326Call table::borrow<address, PoolInfo>(&Table<address, PoolInfo>, address): &PoolInfo
302427StLoc[3](loc2: &PoolInfo)
302528MutBorrowLoc[4](loc3: vector<ValidatorStakedInfo>)
302629MoveLoc[5](loc4: address)
302730CopyLoc[3](loc2: &PoolInfo)
302831ImmBorrowField[18](PoolInfo.total_staked: u64)
303033CopyLoc[3](loc2: &PoolInfo)
303134ImmBorrowField[20](PoolInfo.rewards: u64)
303336MoveLoc[3](loc2: &PoolInfo)
303437ImmBorrowField[19](PoolInfo.staked_suis: TableQueue<StakedSui>)
303538Call table_queue::length<StakedSui>(&TableQueue<StakedSui>): u64
303639Pack[17](ValidatorStakedInfo)
304042MoveLoc[0](Arg0: &Staking)
304244MoveLoc[4](loc3: vector<ValidatorStakedInfo>)
3046public get_all_current_validator_staked_info(Arg0: &Staking, Arg1: &mut SuiSystemState, Arg2: &TxContext): vector<ValidatorStakedInfo> {
3049L5: loc2: vector<ValidatorStakedInfo>
3051L7: loc4: vector<address>
30541StLoc[5](loc2: vector<ValidatorStakedInfo>)
30552CopyLoc[0](Arg0: &Staking)
30563ImmBorrowField[13](Staking.validators: vector<address>)
30585StLoc[7](loc4: vector<address>)
30596CopyLoc[0](Arg0: &Staking)
30607ImmBorrowField[13](Staking.validators: vector<address>)
306411StLoc[3](loc0: u64)
306612CopyLoc[3](loc0: u64)
306713CopyLoc[4](loc1: u64)
307317ImmBorrowLoc[7](loc4: vector<address>)
307418CopyLoc[3](loc0: u64)
307721StLoc[6](loc3: address)
307822MoveLoc[3](loc0: u64)
308125StLoc[3](loc0: u64)
308226MutBorrowLoc[5](loc2: vector<ValidatorStakedInfo>)
308327CopyLoc[0](Arg0: &Staking)
308428CopyLoc[1](Arg1: &mut SuiSystemState)
308529MoveLoc[6](loc3: address)
308630CopyLoc[2](Arg2: &TxContext)
308731Call get_current_validator_staked_info(&Staking, &mut SuiSystemState, address, &TxContext): ValidatorStakedInfo
309134MoveLoc[1](Arg1: &mut SuiSystemState)
309336MoveLoc[0](Arg0: &Staking)
309538MoveLoc[2](Arg2: &TxContext)
309740MoveLoc[5](loc2: vector<ValidatorStakedInfo>)
3101public get_current_validator_staked_info(Arg0: &Staking, Arg1: &mut SuiSystemState, Arg2: address, Arg3: &TxContext): ValidatorStakedInfo {
3104L6: loc2: ValidatorStakedInfo
31080MoveLoc[0](Arg0: &Staking)
31091ImmBorrowField[16](Staking.pools: Table<address, PoolInfo>)
31102CopyLoc[2](Arg2: address)
31113Call table::borrow<address, PoolInfo>(&Table<address, PoolInfo>, address): &PoolInfo
31124StLoc[5](loc1: &PoolInfo)
31135MoveLoc[2](Arg2: address)
31168CopyLoc[5](loc1: &PoolInfo)
31179ImmBorrowField[19](PoolInfo.staked_suis: TableQueue<StakedSui>)
311810Call table_queue::length<StakedSui>(&TableQueue<StakedSui>): u64
311911Pack[17](ValidatorStakedInfo)
312012StLoc[6](loc2: ValidatorStakedInfo)
312113ImmBorrowLoc[6](loc2: ValidatorStakedInfo)
312214ImmBorrowField[24](ValidatorStakedInfo.staked_sui_count: u64)
312819MoveLoc[1](Arg1: &mut SuiSystemState)
313021MoveLoc[5](loc1: &PoolInfo)
313223MoveLoc[3](Arg3: &TxContext)
313425MoveLoc[6](loc2: ValidatorStakedInfo)
313727CopyLoc[5](loc1: &PoolInfo)
313828ImmBorrowField[19](PoolInfo.staked_suis: TableQueue<StakedSui>)
313929Call table_queue::tail<StakedSui>(&TableQueue<StakedSui>): u64
314030StLoc[8](loc4: u64)
314131CopyLoc[5](loc1: &PoolInfo)
314232ImmBorrowField[19](PoolInfo.staked_suis: TableQueue<StakedSui>)
314333Call table_queue::head<StakedSui>(&TableQueue<StakedSui>): u64
314434StLoc[4](loc0: u64)
314635CopyLoc[4](loc0: u64)
314736CopyLoc[8](loc4: u64)
315340CopyLoc[5](loc1: &PoolInfo)
315441ImmBorrowField[19](PoolInfo.staked_suis: TableQueue<StakedSui>)
315542CopyLoc[4](loc0: u64)
315643Call table_queue::borrow<StakedSui>(&TableQueue<StakedSui>, u64): &StakedSui
315744StLoc[7](loc3: &StakedSui)
315845ImmBorrowLoc[6](loc2: ValidatorStakedInfo)
315946ImmBorrowField[25](ValidatorStakedInfo.total_staked: u64)
316148CopyLoc[7](loc3: &StakedSui)
316249Call staking_pool::staked_sui_amount(&StakedSui): u64
316451MutBorrowLoc[6](loc2: ValidatorStakedInfo)
316552MutBorrowField[25](ValidatorStakedInfo.total_staked: u64)
316754ImmBorrowLoc[6](loc2: ValidatorStakedInfo)
316855ImmBorrowField[26](ValidatorStakedInfo.rewards: u64)
317057CopyLoc[1](Arg1: &mut SuiSystemState)
317158MoveLoc[7](loc3: &StakedSui)
317259CopyLoc[3](Arg3: &TxContext)
317360Call tx_context::epoch(&TxContext): u64
317461Call calculate_staked_sui_rewards(&mut SuiSystemState, &StakedSui, u64): u64
317663MutBorrowLoc[6](loc2: ValidatorStakedInfo)
317764MutBorrowField[26](ValidatorStakedInfo.rewards: u64)
317966MoveLoc[4](loc0: u64)
318269StLoc[4](loc0: u64)
318571MoveLoc[1](Arg1: &mut SuiSystemState)
318773MoveLoc[5](loc1: &PoolInfo)
318975MoveLoc[3](Arg3: &TxContext)
319177MoveLoc[6](loc2: ValidatorStakedInfo)
3195public get_current_validator_staked_info_detail_vector(Arg0: &Staking, Arg1: &mut SuiSystemState, Arg2: bool, Arg3: &TxContext): vector<ValidatorStakedInfoV2> {
3198L6: loc2: vector<ValidatorStakedInfoV2>
32021StLoc[6](loc2: vector<ValidatorStakedInfoV2>)
32032CopyLoc[0](Arg0: &Staking)
32043ImmBorrowField[13](Staking.validators: vector<address>)
32108CopyLoc[4](loc0: u64)
32119CopyLoc[5](loc1: u64)
321713CopyLoc[0](Arg0: &Staking)
321814ImmBorrowField[13](Staking.validators: vector<address>)
321915CopyLoc[4](loc0: u64)
322218StLoc[7](loc3: address)
322319MoveLoc[4](loc0: u64)
322622StLoc[4](loc0: u64)
322723MutBorrowLoc[6](loc2: vector<ValidatorStakedInfoV2>)
322824CopyLoc[0](Arg0: &Staking)
322925CopyLoc[1](Arg1: &mut SuiSystemState)
323026MoveLoc[7](loc3: address)
323127CopyLoc[2](Arg2: bool)
323228CopyLoc[3](Arg3: &TxContext)
323329Call get_current_validator_staked_info_detail_single(&Staking, &mut SuiSystemState, address, bool, &TxContext): ValidatorStakedInfoV2
323732MoveLoc[1](Arg1: &mut SuiSystemState)
323934MoveLoc[0](Arg0: &Staking)
324136MoveLoc[3](Arg3: &TxContext)
324338MoveLoc[6](loc2: vector<ValidatorStakedInfoV2>)
3247public destroy_ValidatorStakedInfoV2(Arg0: ValidatorStakedInfoV2) {
32490MoveLoc[0](Arg0: ValidatorStakedInfoV2)
32501Unpack[18](ValidatorStakedInfoV2)
3261public get_current_validator_staked_info_detail_single(Arg0: &Staking, Arg1: &mut SuiSystemState, Arg2: address, Arg3: bool, Arg4: &TxContext): ValidatorStakedInfoV2 {
3263L6: loc1: VecMap<u64, u64>
3264L7: loc2: &Table<u64, PoolTokenExchangeRate>
3267L10: loc5: ValidatorStakedInfoV2
3269L12: loc7: &StakedSui
32720CopyLoc[0](Arg0: &Staking)
32731ImmBorrowField[16](Staking.pools: Table<address, PoolInfo>)
32742CopyLoc[2](Arg2: address)
32753Call table::borrow<address, PoolInfo>(&Table<address, PoolInfo>, address): &PoolInfo
32764StLoc[9](loc4: &PoolInfo)
32775MoveLoc[2](Arg2: address)
32786CopyLoc[9](loc4: &PoolInfo)
32797ImmBorrowField[18](PoolInfo.total_staked: u64)
32819CopyLoc[9](loc4: &PoolInfo)
328210ImmBorrowField[20](PoolInfo.rewards: u64)
328412CopyLoc[9](loc4: &PoolInfo)
328513ImmBorrowField[19](PoolInfo.staked_suis: TableQueue<StakedSui>)
328614Call table_queue::length<StakedSui>(&TableQueue<StakedSui>): u64
328715MoveLoc[0](Arg0: &Staking)
328816Call object::id<Staking>(&Staking): ID
328917LdConst[28](vector<u64>: 00)
329018LdConst[28](vector<u64>: 00)
329119Pack[18](ValidatorStakedInfoV2)
329220StLoc[10](loc5: ValidatorStakedInfoV2)
329321ImmBorrowLoc[10](loc5: ValidatorStakedInfoV2)
329422ImmBorrowField[27](ValidatorStakedInfoV2.staked_sui_count: u64)
330027MoveLoc[1](Arg1: &mut SuiSystemState)
330229MoveLoc[9](loc4: &PoolInfo)
330431MoveLoc[4](Arg4: &TxContext)
330633MoveLoc[10](loc5: ValidatorStakedInfoV2)
330935CopyLoc[3](Arg3: bool)
331338MutBorrowLoc[10](loc5: ValidatorStakedInfoV2)
331439MutBorrowField[28](ValidatorStakedInfoV2.total_staked: u64)
331742MutBorrowLoc[10](loc5: ValidatorStakedInfoV2)
331843MutBorrowField[29](ValidatorStakedInfoV2.rewards: u64)
332145Call vec_map::empty<u64, u64>(): VecMap<u64, u64>
332246StLoc[6](loc1: VecMap<u64, u64>)
332347MoveLoc[4](Arg4: &TxContext)
332448Call tx_context::epoch(&TxContext): u64
332549StLoc[5](loc0: u64)
332650CopyLoc[9](loc4: &PoolInfo)
332751ImmBorrowField[19](PoolInfo.staked_suis: TableQueue<StakedSui>)
332852Call table_queue::tail<StakedSui>(&TableQueue<StakedSui>): u64
332953StLoc[13](loc8: u64)
333054CopyLoc[9](loc4: &PoolInfo)
333155ImmBorrowField[19](PoolInfo.staked_suis: TableQueue<StakedSui>)
333256Call table_queue::head<StakedSui>(&TableQueue<StakedSui>): u64
333357StLoc[8](loc3: u64)
333558CopyLoc[8](loc3: u64)
333659CopyLoc[13](loc8: u64)
334263CopyLoc[9](loc4: &PoolInfo)
334364ImmBorrowField[19](PoolInfo.staked_suis: TableQueue<StakedSui>)
334465CopyLoc[8](loc3: u64)
334566Call table_queue::borrow<StakedSui>(&TableQueue<StakedSui>, u64): &StakedSui
334667StLoc[12](loc7: &StakedSui)
334768CopyLoc[3](Arg3: bool)
335070ImmBorrowLoc[10](loc5: ValidatorStakedInfoV2)
335171ImmBorrowField[28](ValidatorStakedInfoV2.total_staked: u64)
335373CopyLoc[12](loc7: &StakedSui)
335474Call staking_pool::staked_sui_amount(&StakedSui): u64
335676MutBorrowLoc[10](loc5: ValidatorStakedInfoV2)
335777MutBorrowField[28](ValidatorStakedInfoV2.total_staked: u64)
335979ImmBorrowLoc[10](loc5: ValidatorStakedInfoV2)
336080ImmBorrowField[29](ValidatorStakedInfoV2.rewards: u64)
336282CopyLoc[1](Arg1: &mut SuiSystemState)
336383CopyLoc[12](loc7: &StakedSui)
336484CopyLoc[5](loc0: u64)
336585Call calculate_staked_sui_rewards(&mut SuiSystemState, &StakedSui, u64): u64
336787MutBorrowLoc[10](loc5: ValidatorStakedInfoV2)
336888MutBorrowField[29](ValidatorStakedInfoV2.rewards: u64)
337190CopyLoc[12](loc7: &StakedSui)
337291Call staking_pool::stake_activation_epoch(&StakedSui): u64
337392StLoc[11](loc6: u64)
337493MoveLoc[12](loc7: &StakedSui)
337594Call staking_pool::pool_id(&StakedSui): ID
337695MutBorrowLoc[10](loc5: ValidatorStakedInfoV2)
337796MutBorrowField[30](ValidatorStakedInfoV2.pool_id: ID)
337998CopyLoc[1](Arg1: &mut SuiSystemState)
338099ImmBorrowLoc[10](loc5: ValidatorStakedInfoV2)
3381100ImmBorrowField[30](ValidatorStakedInfoV2.pool_id: ID)
3382101Call sui_system::pool_exchange_rates(&mut SuiSystemState, &ID): &Table<u64, PoolTokenExchangeRate>
3383102StLoc[7](loc2: &Table<u64, PoolTokenExchangeRate>)
3384103CopyLoc[7](loc2: &Table<u64, PoolTokenExchangeRate>)
3385104CopyLoc[5](loc0: u64)
3386105Call table::contains<u64, PoolTokenExchangeRate>(&Table<u64, PoolTokenExchangeRate>, u64): bool
3390108ImmBorrowLoc[6](loc1: VecMap<u64, u64>)
3391109ImmBorrowLoc[5](loc0: u64)
3392110Call vec_map::contains<u64, u64>(&VecMap<u64, u64>, &u64): bool
3396113MutBorrowLoc[10](loc5: ValidatorStakedInfoV2)
3397114MutBorrowField[31](ValidatorStakedInfoV2.exchange_rates_unexisted_epoches: vector<u64>)
3398115CopyLoc[5](loc0: u64)
3400117MutBorrowLoc[6](loc1: VecMap<u64, u64>)
3401118CopyLoc[5](loc0: u64)
3403120Call vec_map::insert<u64, u64>(&mut VecMap<u64, u64>, u64, u64)
3405121MoveLoc[7](loc2: &Table<u64, PoolTokenExchangeRate>)
3406122CopyLoc[11](loc6: u64)
3407123Call table::contains<u64, PoolTokenExchangeRate>(&Table<u64, PoolTokenExchangeRate>, u64): bool
3411126ImmBorrowLoc[6](loc1: VecMap<u64, u64>)
3412127ImmBorrowLoc[11](loc6: u64)
3413128Call vec_map::contains<u64, u64>(&VecMap<u64, u64>, &u64): bool
3417131MutBorrowLoc[10](loc5: ValidatorStakedInfoV2)
3418132MutBorrowField[31](ValidatorStakedInfoV2.exchange_rates_unexisted_epoches: vector<u64>)
3419133CopyLoc[11](loc6: u64)
3421135MutBorrowLoc[6](loc1: VecMap<u64, u64>)
3422136CopyLoc[11](loc6: u64)
3424138Call vec_map::insert<u64, u64>(&mut VecMap<u64, u64>, u64, u64)
3426139MutBorrowLoc[10](loc5: ValidatorStakedInfoV2)
3427140MutBorrowField[32](ValidatorStakedInfoV2.stake_activation_epoches: vector<u64>)
3428141MoveLoc[11](loc6: u64)
3430143MoveLoc[8](loc3: u64)
3433146StLoc[8](loc3: u64)
3436148MoveLoc[1](Arg1: &mut SuiSystemState)
3438150MoveLoc[9](loc4: &PoolInfo)
3440152MoveLoc[10](loc5: ValidatorStakedInfoV2)
3444public get_user_selected_staking(Arg0: &mut Staking): vector<UserSelectedStaking> {
3446L2: loc1: vector<address>
3448L4: loc3: vector<UserSelectedStaking>
3450L6: loc5: &Balance<SUI>
34531StLoc[4](loc3: vector<UserSelectedStaking>)
34542CopyLoc[0](Arg0: &mut Staking)
34553ImmBorrowField[6](Staking.user_selected_validator_bals: VecMap<address, Balance<SUI>>)
34564Call vec_map::keys<address, Balance<SUI>>(&VecMap<address, Balance<SUI>>): vector<address>
34575StLoc[2](loc1: vector<address>)
34586ImmBorrowLoc[2](loc1: vector<address>)
346210StLoc[1](loc0: u64)
346411CopyLoc[1](loc0: u64)
346512CopyLoc[3](loc2: u64)
347116ImmBorrowLoc[2](loc1: vector<address>)
347217CopyLoc[1](loc0: u64)
347419StLoc[5](loc4: &address)
347520CopyLoc[0](Arg0: &mut Staking)
347621ImmBorrowField[6](Staking.user_selected_validator_bals: VecMap<address, Balance<SUI>>)
347722CopyLoc[5](loc4: &address)
347823Call vec_map::get<address, Balance<SUI>>(&VecMap<address, Balance<SUI>>, &address): &Balance<SUI>
347924StLoc[6](loc5: &Balance<SUI>)
348025MutBorrowLoc[4](loc3: vector<UserSelectedStaking>)
348126MoveLoc[5](loc4: &address)
348328MoveLoc[6](loc5: &Balance<SUI>)
348429Call balance::value<SUI>(&Balance<SUI>): u64
348530Pack[19](UserSelectedStaking)
348732MoveLoc[1](loc0: u64)
349035StLoc[1](loc0: u64)
349337MoveLoc[0](Arg0: &mut Staking)
349539MoveLoc[4](loc3: vector<UserSelectedStaking>)
3499public ticket_unstake_timestamp_ms(Arg0: &UnstakeTicket): u64 {
35010MoveLoc[0](Arg0: &UnstakeTicket)
35021ImmBorrowField[33](UnstakeTicket.unstake_timestamp_ms: u64)
3507public ticket_st_amount(Arg0: &UnstakeTicket): u64 {
35090MoveLoc[0](Arg0: &UnstakeTicket)
35101ImmBorrowField[34](UnstakeTicket.st_amount: u64)
3515public ticket_sui_amount(Arg0: &UnstakeTicket): u64 {
35170MoveLoc[0](Arg0: &UnstakeTicket)
35181ImmBorrowField[35](UnstakeTicket.sui_amount: u64)
3523public ticket_claim_epoch(Arg0: &UnstakeTicket): u64 {
35250MoveLoc[0](Arg0: &UnstakeTicket)
35261ImmBorrowField[36](UnstakeTicket.claim_epoch: u64)
3531public ticket_claim_timestamp_ms(Arg0: &UnstakeTicket): u64 {
35330MoveLoc[0](Arg0: &UnstakeTicket)
35341ImmBorrowField[37](UnstakeTicket.claim_timestamp_ms: u64)
3540 0 => u64: 1000000000
3548 8 => u64: 18446744073709551615
3549 9 => vector<u8>: "pause_claim_key" // interpreted as UTF8 string
3567 27 => address: 0x0000000000000000000000000000000000000000000000000000000000000000
3568 28 => vector<u64>: 00