game
Module0xd1ca…5dcf
- Move path
- 0xe39b…a64d::game
- Functions
- 906 public, 56 entry
- Structs
- 37
- Friend modules
- None
game
Bytecode10934 lines
The on-chain disassembly. Offsets are bytecode positions within each function.
// Move bytecode v7
module e39b9ba59dd4c523df7a3a8d0eacf0e18576a88b38138b58ccbf1f0daa8aa64d.game {
use 0000000000000000000000000000000000000000000000000000000000000001::string;
use 0000000000000000000000000000000000000000000000000000000000000001::type_name;
use 0000000000000000000000000000000000000000000000000000000000000001::vector;
use 0000000000000000000000000000000000000000000000000000000000000002::balance;
use 0000000000000000000000000000000000000000000000000000000000000002::clock;
use 0000000000000000000000000000000000000000000000000000000000000002::coin;
use 0000000000000000000000000000000000000000000000000000000000000002::display;
use 0000000000000000000000000000000000000000000000000000000000000002::dynamic_field;
use 0000000000000000000000000000000000000000000000000000000000000002::event;
use 0000000000000000000000000000000000000000000000000000000000000002::kiosk;
use 0000000000000000000000000000000000000000000000000000000000000002::object;
use 0000000000000000000000000000000000000000000000000000000000000002::package;
use 0000000000000000000000000000000000000000000000000000000000000002::sui;
use 0000000000000000000000000000000000000000000000000000000000000002::table;
use 0000000000000000000000000000000000000000000000000000000000000002::transfer;
use 0000000000000000000000000000000000000000000000000000000000000002::tx_context;
use 0000000000000000000000000000000000000000000000000000000000000002::vec_map;
struct FeeTableKey has copy, drop, store {
dummy_field: bool
}
struct DefaultFeeKey has copy, drop, store {
dummy_field: bool
}
struct GAME has drop {
dummy_field: bool
}
struct AdminCap has store, key {
id: UID
}
struct MintVault<phantom Ty0> has key {
id: UID,
treasury_cap: TreasuryCap<Ty0>
}
struct GameState<phantom Ty0, phantom Ty1> has key {
id: UID,
total_network_pressure: u64,
total_players: u64,
total_minted: u64,
total_burned: u64,
total_bublz_burned: u64,
game_start: u64,
paused: bool,
sui_treasury: Balance<SUI>,
treasury_recipient: address,
bublz_cost: u64,
sui_costs: vector<u64>,
cosmetic_types: Table<u64, CosmeticType>,
next_cosmetic_id: u64,
player_tanks: Table<address, PlayerTank>,
staked_bubblers: Table<u64, StakedBubblerInfo>,
staked_bubbler_objects: Table<u64, BubbleGenerator>,
displayed_cosmetics: Table<u64, DisplayedCosmeticInfo>,
next_bubbler_id: u64,
next_cosmetic_instance_id: u64
}
struct PlayerTank has store {
tier: u8,
last_upgrade_time: u64,
staked_bubbler_ids: vector<u64>,
displayed_cosmetic_ids: vector<u64>,
total_pressure: u64,
total_tank_pressure: u64,
upgrade_levels: vector<u8>,
last_claim_time: u64,
total_earned: u64,
unclaimed_rewards: u64,
referrer: address,
has_referrer: bool
}
struct StakedBubblerInfo has drop, store {
owner: address,
tier: u8,
bubble_pressure: u64,
tank_pressure: u64
}
struct DisplayedCosmeticInfo has drop, store {
owner: address,
cosmetic_type_id: u64,
bubble_pressure: u64
}
struct BubbleGenerator has store, key {
id: UID,
bubbler_id: u64,
tier: u8,
name: String,
bubble_pressure: u64,
tank_pressure: u64,
image_url: String,
attributes: VecMap<String, String>
}
struct BubbleCosmetic has store, key {
id: UID,
cosmetic_instance_id: u64,
cosmetic_type_id: u64,
name: String,
bubble_pressure: u64,
image_url: String,
attributes: VecMap<String, String>
}
struct CosmeticType has store {
name: String,
image_url: String,
bub_cost: u64,
bublz_cost: u64,
sui_cost: u64,
bubble_pressure: u64,
max_supply: u64,
minted: u64,
per_facility: u64,
disabled: bool
}
struct TankCreated has copy, drop {
player: address
}
struct TankUpgraded has copy, drop {
player: address,
new_tier: u8
}
struct BubblerMinted has copy, drop {
owner: address,
bubbler_id: u64,
tier: u8,
bubble_pressure: u64
}
struct BubblerStaked has copy, drop {
owner: address,
bubbler_id: u64,
tier: u8
}
struct BubblerUnstaked has copy, drop {
owner: address,
bubbler_id: u64,
tier: u8
}
struct RewardsClaimed has copy, drop {
player: address,
amount: u64,
burned: u64,
referrer_reward: u64
}
struct StatUpgraded has copy, drop {
player: address,
upgrade_type: u8,
new_level: u8
}
struct CosmeticMinted has copy, drop {
owner: address,
cosmetic_type_id: u64,
name: String
}
struct BubblerFused has copy, drop {
player: address,
from_tier: u8,
to_tier: u8,
new_bubbler_id: u64
}
struct CosmeticVault has key {
id: UID,
cosmetics: Table<u64, BubbleCosmetic>
}
struct RepTableKey has copy, drop, store {
dummy_field: bool
}
struct RepConfigKey has copy, drop, store {
dummy_field: bool
}
struct RepProfile has store {
rep: u64,
streak: u64,
best_streak: u64,
last_checkin_ms: u64,
rep_added_today: u64,
day_start_ms: u64,
streak_fee_locked: bool
}
struct RepConfig has store {
daily_rep_cap: u64,
checkin_rep: u64,
checkin_cooldown_ms: u64,
streak_window_ms: u64,
base_fee_bps: u64,
streak_reduction_per_day_bps: u64,
max_streak_reduction_bps: u64,
streak_lock_days: u64
}
struct RepAdded has copy, drop {
player: address,
amount: u64,
new_total: u64
}
struct StreakUpdated has copy, drop {
player: address,
streak: u64,
best_streak: u64,
locked: bool
}
struct PlayerCheckedIn has copy, drop {
player: address,
rep: u64,
streak: u64
}
struct RepairConfigKey has copy, drop, store {
dummy_field: bool
}
struct RepairTableKey has copy, drop, store {
dummy_field: bool
}
struct TankDurability has store {
last_repair_ms: u64,
total_earned_at_last_repair: u64
}
struct RepairConfig has store {
enabled: bool,
decay_period_ms: u64,
fee_bps: u64,
activated_at_ms: u64
}
struct TankRepaired has copy, drop {
player: address,
bub_cost: u64,
bub_earned_since_repair: u64
}
struct CosmeticBonusTableKey has copy, drop, store {
dummy_field: bool
}
struct CosmeticBonusAppliedKey has copy, drop, store {
dummy_field: bool
}
struct CosmeticBonus has copy, drop, store {
bonus_type: u8,
bonus_bps: u64
}
struct PartnerClaimsKey has copy, drop, store {
dummy_field: bool
}
struct PartnerClaimsKeyV2 has copy, drop, store {
dummy_field: bool
}
struct PartnerPackClaimed has copy, drop {
player: address,
nft_id: address,
tank_upgraded_to: u8,
bubblers_minted: vector<u8>,
cosmetic_type_id: u64
}
struct PartnerConfig has copy, drop, store {
cosmetic_type_id: u64
}
struct PartnerRegistryKey has copy, drop, store {
dummy_field: bool
}
struct PartnerClaimsRegistryKey has copy, drop, store {
dummy_field: bool
}
struct PartnerPackClaimedV2 has copy, drop {
partner: TypeName,
player: address,
nft_id: address,
tank_upgraded_to: u8,
bubblers_minted: vector<u8>,
cosmetic_type_id: u64
}
get_tank_max_bubblers(Arg0: u8): u64 {
L1: loc0: u64
L2: loc1: u64
L3: loc2: u64
L4: loc3: u64
L5: loc4: u64
L6: loc5: u64
L7: loc6: u64
L8: loc7: u64
B0:
0CopyLoc[0](Arg0: u8)
1LdU8(0)
2Eq
3BrFalse(7)
B1:
4LdU64(4)
5StLoc[8](loc7: u64)
6Branch(72)
B2:
7CopyLoc[0](Arg0: u8)
8LdU8(1)
9Eq
10BrFalse(14)
B3:
11LdU64(8)
12StLoc[7](loc6: u64)
13Branch(70)
B4:
14CopyLoc[0](Arg0: u8)
15LdU8(2)
16Eq
17BrFalse(21)
B5:
18LdU64(12)
19StLoc[6](loc5: u64)
20Branch(68)
B6:
21CopyLoc[0](Arg0: u8)
22LdU8(3)
23Eq
24BrFalse(28)
B7:
25LdU64(16)
26StLoc[5](loc4: u64)
27Branch(66)
B8:
28CopyLoc[0](Arg0: u8)
29LdU8(4)
30Eq
31BrFalse(35)
B9:
32LdU64(20)
33StLoc[4](loc3: u64)
34Branch(64)
B10:
35CopyLoc[0](Arg0: u8)
36LdU8(5)
37Eq
38BrFalse(42)
B11:
39LdU64(20)
40StLoc[3](loc2: u64)
41Branch(62)
B12:
42CopyLoc[0](Arg0: u8)
43LdU8(6)
44Eq
45BrFalse(49)
B13:
46LdU64(24)
47StLoc[2](loc1: u64)
48Branch(60)
B14:
49MoveLoc[0](Arg0: u8)
50LdU8(7)
51Eq
52BrFalse(56)
B15:
53LdU64(42)
54StLoc[1](loc0: u64)
55Branch(58)
B16:
56LdU64(42)
57StLoc[1](loc0: u64)
B17:
58MoveLoc[1](loc0: u64)
59StLoc[2](loc1: u64)
B18:
60MoveLoc[2](loc1: u64)
61StLoc[3](loc2: u64)
B19:
62MoveLoc[3](loc2: u64)
63StLoc[4](loc3: u64)
B20:
64MoveLoc[4](loc3: u64)
65StLoc[5](loc4: u64)
B21:
66MoveLoc[5](loc4: u64)
67StLoc[6](loc5: u64)
B22:
68MoveLoc[6](loc5: u64)
69StLoc[7](loc6: u64)
B23:
70MoveLoc[7](loc6: u64)
71StLoc[8](loc7: u64)
B24:
72MoveLoc[8](loc7: u64)
73Ret
}
get_tank_cosmetic_slots(Arg0: u8): u64 {
L1: loc0: u64
L2: loc1: u64
L3: loc2: u64
L4: loc3: u64
L5: loc4: u64
L6: loc5: u64
L7: loc6: u64
L8: loc7: u64
B0:
0CopyLoc[0](Arg0: u8)
1LdU8(0)
2Eq
3BrFalse(7)
B1:
4LdU64(1)
5StLoc[8](loc7: u64)
6Branch(72)
B2:
7CopyLoc[0](Arg0: u8)
8LdU8(1)
9Eq
10BrFalse(14)
B3:
11LdU64(2)
12StLoc[7](loc6: u64)
13Branch(70)
B4:
14CopyLoc[0](Arg0: u8)
15LdU8(2)
16Eq
17BrFalse(21)
B5:
18LdU64(3)
19StLoc[6](loc5: u64)
20Branch(68)
B6:
21CopyLoc[0](Arg0: u8)
22LdU8(3)
23Eq
24BrFalse(28)
B7:
25LdU64(4)
26StLoc[5](loc4: u64)
27Branch(66)
B8:
28CopyLoc[0](Arg0: u8)
29LdU8(4)
30Eq
31BrFalse(35)
B9:
32LdU64(5)
33StLoc[4](loc3: u64)
34Branch(64)
B10:
35CopyLoc[0](Arg0: u8)
36LdU8(5)
37Eq
38BrFalse(42)
B11:
39LdU64(6)
40StLoc[3](loc2: u64)
41Branch(62)
B12:
42CopyLoc[0](Arg0: u8)
43LdU8(6)
44Eq
45BrFalse(49)
B13:
46LdU64(8)
47StLoc[2](loc1: u64)
48Branch(60)
B14:
49MoveLoc[0](Arg0: u8)
50LdU8(7)
51Eq
52BrFalse(56)
B15:
53LdU64(10)
54StLoc[1](loc0: u64)
55Branch(58)
B16:
56LdU64(12)
57StLoc[1](loc0: u64)
B17:
58MoveLoc[1](loc0: u64)
59StLoc[2](loc1: u64)
B18:
60MoveLoc[2](loc1: u64)
61StLoc[3](loc2: u64)
B19:
62MoveLoc[3](loc2: u64)
63StLoc[4](loc3: u64)
B20:
64MoveLoc[4](loc3: u64)
65StLoc[5](loc4: u64)
B21:
66MoveLoc[5](loc4: u64)
67StLoc[6](loc5: u64)
B22:
68MoveLoc[6](loc5: u64)
69StLoc[7](loc6: u64)
B23:
70MoveLoc[7](loc6: u64)
71StLoc[8](loc7: u64)
B24:
72MoveLoc[8](loc7: u64)
73Ret
}
get_tank_pressure_capacity(Arg0: u8): u64 {
L1: loc0: u64
L2: loc1: u64
L3: loc2: u64
L4: loc3: u64
L5: loc4: u64
L6: loc5: u64
L7: loc6: u64
L8: loc7: u64
B0:
0CopyLoc[0](Arg0: u8)
1LdU8(0)
2Eq
3BrFalse(7)
B1:
4LdU64(28)
5StLoc[8](loc7: u64)
6Branch(72)
B2:
7CopyLoc[0](Arg0: u8)
8LdU8(1)
9Eq
10BrFalse(14)
B3:
11LdU64(168)
12StLoc[7](loc6: u64)
13Branch(70)
B4:
14CopyLoc[0](Arg0: u8)
15LdU8(2)
16Eq
17BrFalse(21)
B5:
18LdU64(420)
19StLoc[6](loc5: u64)
20Branch(68)
B6:
21CopyLoc[0](Arg0: u8)
22LdU8(3)
23Eq
24BrFalse(28)
B7:
25LdU64(1120)
26StLoc[5](loc4: u64)
27Branch(66)
B8:
28CopyLoc[0](Arg0: u8)
29LdU8(4)
30Eq
31BrFalse(35)
B9:
32LdU64(7000)
33StLoc[4](loc3: u64)
34Branch(64)
B10:
35CopyLoc[0](Arg0: u8)
36LdU8(5)
37Eq
38BrFalse(42)
B11:
39LdU64(13125)
40StLoc[3](loc2: u64)
41Branch(62)
B12:
42CopyLoc[0](Arg0: u8)
43LdU8(6)
44Eq
45BrFalse(49)
B13:
46LdU64(20000)
47StLoc[2](loc1: u64)
48Branch(60)
B14:
49MoveLoc[0](Arg0: u8)
50LdU8(7)
51Eq
52BrFalse(56)
B15:
53LdU64(40000)
54StLoc[1](loc0: u64)
55Branch(58)
B16:
56LdU64(65000)
57StLoc[1](loc0: u64)
B17:
58MoveLoc[1](loc0: u64)
59StLoc[2](loc1: u64)
B18:
60MoveLoc[2](loc1: u64)
61StLoc[3](loc2: u64)
B19:
62MoveLoc[3](loc2: u64)
63StLoc[4](loc3: u64)
B20:
64MoveLoc[4](loc3: u64)
65StLoc[5](loc4: u64)
B21:
66MoveLoc[5](loc4: u64)
67StLoc[6](loc5: u64)
B22:
68MoveLoc[6](loc5: u64)
69StLoc[7](loc6: u64)
B23:
70MoveLoc[7](loc6: u64)
71StLoc[8](loc7: u64)
B24:
72MoveLoc[8](loc7: u64)
73Ret
}
get_tank_sui_cost(Arg0: u8): u64 {
L1: loc0: u64
L2: loc1: u64
L3: loc2: u64
L4: loc3: u64
L5: loc4: u64
L6: loc5: u64
L7: loc6: u64
B0:
0CopyLoc[0](Arg0: u8)
1LdU8(1)
2Eq
3BrFalse(7)
B1:
4LdU64(1000000000)
5StLoc[7](loc6: u64)
6Branch(63)
B2:
7CopyLoc[0](Arg0: u8)
8LdU8(2)
9Eq
10BrFalse(14)
B3:
11LdU64(1000000000)
12StLoc[6](loc5: u64)
13Branch(61)
B4:
14CopyLoc[0](Arg0: u8)
15LdU8(3)
16Eq
17BrFalse(21)
B5:
18LdU64(1000000000)
19StLoc[5](loc4: u64)
20Branch(59)
B6:
21CopyLoc[0](Arg0: u8)
22LdU8(4)
23Eq
24BrFalse(28)
B7:
25LdU64(1000000000)
26StLoc[4](loc3: u64)
27Branch(57)
B8:
28CopyLoc[0](Arg0: u8)
29LdU8(5)
30Eq
31BrFalse(35)
B9:
32LdU64(1500000000)
33StLoc[3](loc2: u64)
34Branch(55)
B10:
35CopyLoc[0](Arg0: u8)
36LdU8(6)
37Eq
38BrFalse(42)
B11:
39LdU64(2000000000)
40StLoc[2](loc1: u64)
41Branch(53)
B12:
42MoveLoc[0](Arg0: u8)
43LdU8(7)
44Eq
45BrFalse(49)
B13:
46LdU64(3000000000)
47StLoc[1](loc0: u64)
48Branch(51)
B14:
49LdU64(4000000000)
50StLoc[1](loc0: u64)
B15:
51MoveLoc[1](loc0: u64)
52StLoc[2](loc1: u64)
B16:
53MoveLoc[2](loc1: u64)
54StLoc[3](loc2: u64)
B17:
55MoveLoc[3](loc2: u64)
56StLoc[4](loc3: u64)
B18:
57MoveLoc[4](loc3: u64)
58StLoc[5](loc4: u64)
B19:
59MoveLoc[5](loc4: u64)
60StLoc[6](loc5: u64)
B20:
61MoveLoc[6](loc5: u64)
62StLoc[7](loc6: u64)
B21:
63MoveLoc[7](loc6: u64)
64Ret
}
get_tank_bub_cost(Arg0: u8): u64 {
L1: loc0: u64
L2: loc1: u64
L3: loc2: u64
L4: loc3: u64
L5: loc4: u64
L6: loc5: u64
L7: loc6: u64
B0:
0CopyLoc[0](Arg0: u8)
1LdU8(1)
2Eq
3BrFalse(7)
B1:
4LdU64(42000000000)
5StLoc[7](loc6: u64)
6Branch(63)
B2:
7CopyLoc[0](Arg0: u8)
8LdU8(2)
9Eq
10BrFalse(14)
B3:
11LdU64(106000000000)
12StLoc[6](loc5: u64)
13Branch(61)
B4:
14CopyLoc[0](Arg0: u8)
15LdU8(3)
16Eq
17BrFalse(21)
B5:
18LdU64(190000000000)
19StLoc[5](loc4: u64)
20Branch(59)
B6:
21CopyLoc[0](Arg0: u8)
22LdU8(4)
23Eq
24BrFalse(28)
B7:
25LdU64(230000000000)
26StLoc[4](loc3: u64)
27Branch(57)
B8:
28CopyLoc[0](Arg0: u8)
29LdU8(5)
30Eq
31BrFalse(35)
B9:
32LdU64(275000000000)
33StLoc[3](loc2: u64)
34Branch(55)
B10:
35CopyLoc[0](Arg0: u8)
36LdU8(6)
37Eq
38BrFalse(42)
B11:
39LdU64(295000000000)
40StLoc[2](loc1: u64)
41Branch(53)
B12:
42MoveLoc[0](Arg0: u8)
43LdU8(7)
44Eq
45BrFalse(49)
B13:
46LdU64(850000000000)
47StLoc[1](loc0: u64)
48Branch(51)
B14:
49LdU64(1020000000000)
50StLoc[1](loc0: u64)
B15:
51MoveLoc[1](loc0: u64)
52StLoc[2](loc1: u64)
B16:
53MoveLoc[2](loc1: u64)
54StLoc[3](loc2: u64)
B17:
55MoveLoc[3](loc2: u64)
56StLoc[4](loc3: u64)
B18:
57MoveLoc[4](loc3: u64)
58StLoc[5](loc4: u64)
B19:
59MoveLoc[5](loc4: u64)
60StLoc[6](loc5: u64)
B20:
61MoveLoc[6](loc5: u64)
62StLoc[7](loc6: u64)
B21:
63MoveLoc[7](loc6: u64)
64Ret
}
get_bubbler_stats(Arg0: u8): u64 * u64 * u64 * String * String {
L1: loc0: u64
L2: loc1: String
L3: loc2: u64
L4: loc3: u64
L5: loc4: u64
L6: loc5: String
L7: loc6: String
L8: loc7: u64
L9: loc8: u64
L10: loc9: u64
L11: loc10: String
L12: loc11: u64
L13: loc12: String
L14: loc13: u64
L15: loc14: u64
L16: loc15: u64
L17: loc16: String
L18: loc17: String
L19: loc18: u64
L20: loc19: u64
L21: loc20: u64
L22: loc21: String
L23: loc22: u64
L24: loc23: String
L25: loc24: u64
L26: loc25: u64
L27: loc26: u64
L28: loc27: String
L29: loc28: String
L30: loc29: u64
L31: loc30: u64
L32: loc31: u64
L33: loc32: String
L34: loc33: String
L35: loc34: String
L36: loc35: u64
L37: loc36: u64
L38: loc37: u64
L39: loc38: String
L40: loc39: String
L41: loc40: u64
L42: loc41: u64
L43: loc42: u64
L44: loc43: String
L45: loc44: String
L46: loc45: String
L47: loc46: u64
L48: loc47: u64
L49: loc48: u64
L50: loc49: String
L51: loc50: String
L52: loc51: u64
L53: loc52: u64
L54: loc53: u64
L55: loc54: String
L56: loc55: u64
L57: loc56: String
L58: loc57: u64
L59: loc58: u64
L60: loc59: String
B0:
0CopyLoc[0](Arg0: u8)
1LdU8(0)
2Eq
3BrFalse(17)
B1:
4LdU64(100)
5LdU64(1)
6LdU64(0)
7LdConst[48](vector<u8>: "Dro..)
8Call string::utf8(vector<u8>): String
9LdConst[49](vector<u8>: "htt..)
10Call string::utf8(vector<u8>): String
11StLoc[57](loc56: String)
12StLoc[55](loc54: String)
13StLoc[54](loc53: u64)
14StLoc[53](loc52: u64)
15StLoc[52](loc51: u64)
16Branch(326)
B2:
17CopyLoc[0](Arg0: u8)
18LdU8(1)
19Eq
20BrFalse(34)
B3:
21LdU64(180)
22LdU64(6)
23LdU64(4000000000)
24LdConst[50](vector<u8>: "Fiz..)
25Call string::utf8(vector<u8>): String
26LdConst[51](vector<u8>: "htt..)
27Call string::utf8(vector<u8>): String
28StLoc[51](loc50: String)
29StLoc[50](loc49: String)
30StLoc[49](loc48: u64)
31StLoc[48](loc47: u64)
32StLoc[47](loc46: u64)
33Branch(316)
B4:
34CopyLoc[0](Arg0: u8)
35LdU8(2)
36Eq
37BrFalse(51)
B5:
38LdU64(420)
39LdU64(8)
40LdU64(8000000000)
41LdConst[52](vector<u8>: "Tri..)
42Call string::utf8(vector<u8>): String
43LdConst[53](vector<u8>: "htt..)
44Call string::utf8(vector<u8>): String
45StLoc[46](loc45: String)
46StLoc[44](loc43: String)
47StLoc[43](loc42: u64)
48StLoc[42](loc41: u64)
49StLoc[41](loc40: u64)
50Branch(306)
B6:
51CopyLoc[0](Arg0: u8)
52LdU8(3)
53Eq
54BrFalse(68)
B7:
55LdU64(1000)
56LdU64(10)
57LdU64(12000000000)
58LdConst[54](vector<u8>: "Str..)
59Call string::utf8(vector<u8>): String
60LdConst[55](vector<u8>: "htt..)
61Call string::utf8(vector<u8>): String
62StLoc[40](loc39: String)
63StLoc[39](loc38: String)
64StLoc[38](loc37: u64)
65StLoc[37](loc36: u64)
66StLoc[36](loc35: u64)
67Branch(296)
B8:
68CopyLoc[0](Arg0: u8)
69LdU8(4)
70Eq
71BrFalse(85)
B9:
72LdU64(5000)
73LdU64(30)
74LdU64(34000000000)
75LdConst[56](vector<u8>: "Pum..)
76Call string::utf8(vector<u8>): String
77LdConst[57](vector<u8>: "htt..)
78Call string::utf8(vector<u8>): String
79StLoc[35](loc34: String)
80StLoc[33](loc32: String)
81StLoc[32](loc31: u64)
82StLoc[31](loc30: u64)
83StLoc[30](loc29: u64)
84Branch(286)
B10:
85CopyLoc[0](Arg0: u8)
86LdU8(5)
87Eq
88BrFalse(102)
B11:
89LdU64(15000)
90LdU64(50)
91LdU64(75000000000)
92LdConst[58](vector<u8>: "Jet..)
93Call string::utf8(vector<u8>): String
94LdConst[59](vector<u8>: "htt..)
95Call string::utf8(vector<u8>): String
96StLoc[29](loc28: String)
97StLoc[28](loc27: String)
98StLoc[27](loc26: u64)
99StLoc[26](loc25: u64)
100StLoc[25](loc24: u64)
101Branch(276)
B12:
102CopyLoc[0](Arg0: u8)
103LdU8(6)
104Eq
105BrFalse(119)
B13:
106LdU64(20000)
107LdU64(90)
108LdU64(127000000000)
109LdConst[60](vector<u8>: "Bla..)
110Call string::utf8(vector<u8>): String
111LdConst[61](vector<u8>: "htt..)
112Call string::utf8(vector<u8>): String
113StLoc[24](loc23: String)
114StLoc[22](loc21: String)
115StLoc[21](loc20: u64)
116StLoc[20](loc19: u64)
117StLoc[19](loc18: u64)
118Branch(266)
B14:
119CopyLoc[0](Arg0: u8)
120LdU8(7)
121Eq
122BrFalse(136)
B15:
123LdU64(60000)
124LdU64(200)
125LdU64(297000000000)
126LdConst[62](vector<u8>: "Gey..)
127Call string::utf8(vector<u8>): String
128LdConst[63](vector<u8>: "htt..)
129Call string::utf8(vector<u8>): String
130StLoc[18](loc17: String)
131StLoc[17](loc16: String)
132StLoc[16](loc15: u64)
133StLoc[15](loc14: u64)
134StLoc[14](loc13: u64)
135Branch(256)
B16:
136CopyLoc[0](Arg0: u8)
137LdU8(8)
138Eq
139BrFalse(153)
B17:
140LdU64(120000)
141LdU64(400)
142LdU64(586000000000)
143LdConst[64](vector<u8>: "Eru..)
144Call string::utf8(vector<u8>): String
145LdConst[65](vector<u8>: "htt..)
146Call string::utf8(vector<u8>): String
147StLoc[13](loc12: String)
148StLoc[11](loc10: String)
149StLoc[10](loc9: u64)
150StLoc[9](loc8: u64)
151StLoc[8](loc7: u64)
152Branch(246)
B18:
153CopyLoc[0](Arg0: u8)
154LdU8(9)
155Eq
156BrFalse(170)
B19:
157LdU64(200000)
158LdU64(600)
159LdU64(1020000000000)
160LdConst[66](vector<u8>: "Tor..)
161Call string::utf8(vector<u8>): String
162LdConst[67](vector<u8>: "htt..)
163Call string::utf8(vector<u8>): String
164StLoc[7](loc6: String)
165StLoc[6](loc5: String)
166StLoc[5](loc4: u64)
167StLoc[4](loc3: u64)
168StLoc[3](loc2: u64)
169Branch(236)
B20:
170CopyLoc[0](Arg0: u8)
171LdU8(10)
172Eq
173BrFalse(187)
B21:
174LdU64(800000)
175LdU64(2000)
176LdU64(2550000000000)
177LdConst[68](vector<u8>: "Tsu..)
178Call string::utf8(vector<u8>): String
179LdConst[69](vector<u8>: "htt..)
180Call string::utf8(vector<u8>): String
181StLoc[2](loc1: String)
182StLoc[60](loc59: String)
183StLoc[59](loc58: u64)
184StLoc[58](loc57: u64)
185StLoc[56](loc55: u64)
186Branch(226)
B22:
187MoveLoc[0](Arg0: u8)
188LdU8(11)
189Eq
190BrFalse(204)
B23:
191LdU64(1336000)
192LdU64(3000)
193LdU64(3400000000000)
194LdConst[70](vector<u8>: "Cyc..)
195Call string::utf8(vector<u8>): String
196LdConst[71](vector<u8>: "htt..)
197Call string::utf8(vector<u8>): String
198StLoc[45](loc44: String)
199StLoc[34](loc33: String)
200StLoc[23](loc22: u64)
201StLoc[12](loc11: u64)
202StLoc[1](loc0: u64)
203Branch(216)
B24:
204LdU64(2508000)
205LdU64(5000)
206LdU64(5100000000000)
207LdConst[72](vector<u8>: "Rif..)
208Call string::utf8(vector<u8>): String
209LdConst[73](vector<u8>: "htt..)
210Call string::utf8(vector<u8>): String
211StLoc[45](loc44: String)
212StLoc[34](loc33: String)
213StLoc[23](loc22: u64)
214StLoc[12](loc11: u64)
215StLoc[1](loc0: u64)
B25:
216MoveLoc[1](loc0: u64)
217MoveLoc[12](loc11: u64)
218MoveLoc[23](loc22: u64)
219MoveLoc[34](loc33: String)
220MoveLoc[45](loc44: String)
221StLoc[2](loc1: String)
222StLoc[60](loc59: String)
223StLoc[59](loc58: u64)
224StLoc[58](loc57: u64)
225StLoc[56](loc55: u64)
B26:
226MoveLoc[56](loc55: u64)
227MoveLoc[58](loc57: u64)
228MoveLoc[59](loc58: u64)
229MoveLoc[60](loc59: String)
230MoveLoc[2](loc1: String)
231StLoc[7](loc6: String)
232StLoc[6](loc5: String)
233StLoc[5](loc4: u64)
234StLoc[4](loc3: u64)
235StLoc[3](loc2: u64)
B27:
236MoveLoc[3](loc2: u64)
237MoveLoc[4](loc3: u64)
238MoveLoc[5](loc4: u64)
239MoveLoc[6](loc5: String)
240MoveLoc[7](loc6: String)
241StLoc[13](loc12: String)
242StLoc[11](loc10: String)
243StLoc[10](loc9: u64)
244StLoc[9](loc8: u64)
245StLoc[8](loc7: u64)
B28:
246MoveLoc[8](loc7: u64)
247MoveLoc[9](loc8: u64)
248MoveLoc[10](loc9: u64)
249MoveLoc[11](loc10: String)
250MoveLoc[13](loc12: String)
251StLoc[18](loc17: String)
252StLoc[17](loc16: String)
253StLoc[16](loc15: u64)
254StLoc[15](loc14: u64)
255StLoc[14](loc13: u64)
B29:
256MoveLoc[14](loc13: u64)
257MoveLoc[15](loc14: u64)
258MoveLoc[16](loc15: u64)
259MoveLoc[17](loc16: String)
260MoveLoc[18](loc17: String)
261StLoc[24](loc23: String)
262StLoc[22](loc21: String)
263StLoc[21](loc20: u64)
264StLoc[20](loc19: u64)
265StLoc[19](loc18: u64)
B30:
266MoveLoc[19](loc18: u64)
267MoveLoc[20](loc19: u64)
268MoveLoc[21](loc20: u64)
269MoveLoc[22](loc21: String)
270MoveLoc[24](loc23: String)
271StLoc[29](loc28: String)
272StLoc[28](loc27: String)
273StLoc[27](loc26: u64)
274StLoc[26](loc25: u64)
275StLoc[25](loc24: u64)
B31:
276MoveLoc[25](loc24: u64)
277MoveLoc[26](loc25: u64)
278MoveLoc[27](loc26: u64)
279MoveLoc[28](loc27: String)
280MoveLoc[29](loc28: String)
281StLoc[35](loc34: String)
282StLoc[33](loc32: String)
283StLoc[32](loc31: u64)
284StLoc[31](loc30: u64)
285StLoc[30](loc29: u64)
B32:
286MoveLoc[30](loc29: u64)
287MoveLoc[31](loc30: u64)
288MoveLoc[32](loc31: u64)
289MoveLoc[33](loc32: String)
290MoveLoc[35](loc34: String)
291StLoc[40](loc39: String)
292StLoc[39](loc38: String)
293StLoc[38](loc37: u64)
294StLoc[37](loc36: u64)
295StLoc[36](loc35: u64)
B33:
296MoveLoc[36](loc35: u64)
297MoveLoc[37](loc36: u64)
298MoveLoc[38](loc37: u64)
299MoveLoc[39](loc38: String)
300MoveLoc[40](loc39: String)
301StLoc[46](loc45: String)
302StLoc[44](loc43: String)
303StLoc[43](loc42: u64)
304StLoc[42](loc41: u64)
305StLoc[41](loc40: u64)
B34:
306MoveLoc[41](loc40: u64)
307MoveLoc[42](loc41: u64)
308MoveLoc[43](loc42: u64)
309MoveLoc[44](loc43: String)
310MoveLoc[46](loc45: String)
311StLoc[51](loc50: String)
312StLoc[50](loc49: String)
313StLoc[49](loc48: u64)
314StLoc[48](loc47: u64)
315StLoc[47](loc46: u64)
B35:
316MoveLoc[47](loc46: u64)
317MoveLoc[48](loc47: u64)
318MoveLoc[49](loc48: u64)
319MoveLoc[50](loc49: String)
320MoveLoc[51](loc50: String)
321StLoc[57](loc56: String)
322StLoc[55](loc54: String)
323StLoc[54](loc53: u64)
324StLoc[53](loc52: u64)
325StLoc[52](loc51: u64)
B36:
326MoveLoc[52](loc51: u64)
327MoveLoc[53](loc52: u64)
328MoveLoc[54](loc53: u64)
329MoveLoc[55](loc54: String)
330MoveLoc[57](loc56: String)
331Ret
}
make_bubbler_attrs(Arg0: u8, Arg1: String): VecMap<String, String> {
L2: loc0: vector<u8>
L3: loc1: vector<u8>
L4: loc2: vector<u8>
L5: loc3: vector<u8>
L6: loc4: vector<u8>
L7: loc5: vector<u8>
L8: loc6: vector<u8>
L9: loc7: vector<u8>
L10: loc8: vector<u8>
L11: loc9: vector<u8>
L12: loc10: vector<u8>
L13: loc11: vector<u8>
L14: loc12: vector<u8>
L15: loc13: vector<u8>
L16: loc14: vector<u8>
L17: loc15: vector<u8>
L18: loc16: VecMap<String, String>
L19: loc17: vector<u8>
L20: loc18: vector<u8>
B0:
0Call vec_map::empty<String, String>(): VecMap<String, String>
1StLoc[18](loc16: VecMap<String, String>)
2MutBorrowLoc[18](loc16: VecMap<String, String>)
3LdConst[74](vector<u8>: "Typ..)
4Call string::utf8(vector<u8>): String
5LdConst[75](vector<u8>: "Bub..)
6Call string::utf8(vector<u8>): String
7Call vec_map::insert<String, String>(&mut VecMap<String, String>, String, String)
8MutBorrowLoc[18](loc16: VecMap<String, String>)
9LdConst[76](vector<u8>: "Nam..)
10Call string::utf8(vector<u8>): String
11MoveLoc[1](Arg1: String)
12Call vec_map::insert<String, String>(&mut VecMap<String, String>, String, String)
13CopyLoc[0](Arg0: u8)
14LdU8(0)
15Eq
16BrFalse(20)
B1:
17LdConst[77](vector<u8>: "0" ..)
18StLoc[5](loc3: vector<u8>)
19Branch(121)
B2:
20CopyLoc[0](Arg0: u8)
21LdU8(1)
22Eq
23BrFalse(27)
B3:
24LdConst[78](vector<u8>: "1" ..)
25StLoc[4](loc2: vector<u8>)
26Branch(119)
B4:
27CopyLoc[0](Arg0: u8)
28LdU8(2)
29Eq
30BrFalse(34)
B5:
31LdConst[79](vector<u8>: "2" ..)
32StLoc[3](loc1: vector<u8>)
33Branch(117)
B6:
34CopyLoc[0](Arg0: u8)
35LdU8(3)
36Eq
37BrFalse(41)
B7:
38LdConst[80](vector<u8>: "3" ..)
39StLoc[17](loc15: vector<u8>)
40Branch(115)
B8:
41CopyLoc[0](Arg0: u8)
42LdU8(4)
43Eq
44BrFalse(48)
B9:
45LdConst[81](vector<u8>: "4" ..)
46StLoc[16](loc14: vector<u8>)
47Branch(113)
B10:
48CopyLoc[0](Arg0: u8)
49LdU8(5)
50Eq
51BrFalse(55)
B11:
52LdConst[82](vector<u8>: "5" ..)
53StLoc[15](loc13: vector<u8>)
54Branch(111)
B12:
55CopyLoc[0](Arg0: u8)
56LdU8(6)
57Eq
58BrFalse(62)
B13:
59LdConst[83](vector<u8>: "6" ..)
60StLoc[14](loc12: vector<u8>)
61Branch(109)
B14:
62CopyLoc[0](Arg0: u8)
63LdU8(7)
64Eq
65BrFalse(69)
B15:
66LdConst[84](vector<u8>: "7" ..)
67StLoc[13](loc11: vector<u8>)
68Branch(107)
B16:
69CopyLoc[0](Arg0: u8)
70LdU8(8)
71Eq
72BrFalse(76)
B17:
73LdConst[85](vector<u8>: "8" ..)
74StLoc[12](loc10: vector<u8>)
75Branch(105)
B18:
76CopyLoc[0](Arg0: u8)
77LdU8(9)
78Eq
79BrFalse(83)
B19:
80LdConst[86](vector<u8>: "9" ..)
81StLoc[11](loc9: vector<u8>)
82Branch(103)
B20:
83CopyLoc[0](Arg0: u8)
84LdU8(10)
85Eq
86BrFalse(90)
B21:
87LdConst[87](vector<u8>: "10"..)
88StLoc[10](loc8: vector<u8>)
89Branch(101)
B22:
90CopyLoc[0](Arg0: u8)
91LdU8(11)
92Eq
93BrFalse(97)
B23:
94LdConst[88](vector<u8>: "11"..)
95StLoc[2](loc0: vector<u8>)
96Branch(99)
B24:
97LdConst[89](vector<u8>: "12"..)
98StLoc[2](loc0: vector<u8>)
B25:
99MoveLoc[2](loc0: vector<u8>)
100StLoc[10](loc8: vector<u8>)
B26:
101MoveLoc[10](loc8: vector<u8>)
102StLoc[11](loc9: vector<u8>)
B27:
103MoveLoc[11](loc9: vector<u8>)
104StLoc[12](loc10: vector<u8>)
B28:
105MoveLoc[12](loc10: vector<u8>)
106StLoc[13](loc11: vector<u8>)
B29:
107MoveLoc[13](loc11: vector<u8>)
108StLoc[14](loc12: vector<u8>)
B30:
109MoveLoc[14](loc12: vector<u8>)
110StLoc[15](loc13: vector<u8>)
B31:
111MoveLoc[15](loc13: vector<u8>)
112StLoc[16](loc14: vector<u8>)
B32:
113MoveLoc[16](loc14: vector<u8>)
114StLoc[17](loc15: vector<u8>)
B33:
115MoveLoc[17](loc15: vector<u8>)
116StLoc[3](loc1: vector<u8>)
B34:
117MoveLoc[3](loc1: vector<u8>)
118StLoc[4](loc2: vector<u8>)
B35:
119MoveLoc[4](loc2: vector<u8>)
120StLoc[5](loc3: vector<u8>)
B36:
121MoveLoc[5](loc3: vector<u8>)
122StLoc[20](loc18: vector<u8>)
123MutBorrowLoc[18](loc16: VecMap<String, String>)
124LdConst[90](vector<u8>: "Tie..)
125Call string::utf8(vector<u8>): String
126MoveLoc[20](loc18: vector<u8>)
127Call string::utf8(vector<u8>): String
128Call vec_map::insert<String, String>(&mut VecMap<String, String>, String, String)
129CopyLoc[0](Arg0: u8)
130LdU8(2)
131Le
132BrFalse(136)
B37:
133LdConst[91](vector<u8>: "Com..)
134StLoc[9](loc7: vector<u8>)
135Branch(165)
B38:
136CopyLoc[0](Arg0: u8)
137LdU8(5)
138Le
139BrFalse(143)
B39:
140LdConst[92](vector<u8>: "Unc..)
141StLoc[8](loc6: vector<u8>)
142Branch(163)
B40:
143CopyLoc[0](Arg0: u8)
144LdU8(8)
145Le
146BrFalse(150)
B41:
147LdConst[93](vector<u8>: "Rar..)
148StLoc[7](loc5: vector<u8>)
149Branch(161)
B42:
150MoveLoc[0](Arg0: u8)
151LdU8(10)
152Le
153BrFalse(157)
B43:
154LdConst[94](vector<u8>: "Epi..)
155StLoc[6](loc4: vector<u8>)
156Branch(159)
B44:
157LdConst[95](vector<u8>: "Leg..)
158StLoc[6](loc4: vector<u8>)
B45:
159MoveLoc[6](loc4: vector<u8>)
160StLoc[7](loc5: vector<u8>)
B46:
161MoveLoc[7](loc5: vector<u8>)
162StLoc[8](loc6: vector<u8>)
B47:
163MoveLoc[8](loc6: vector<u8>)
164StLoc[9](loc7: vector<u8>)
B48:
165MoveLoc[9](loc7: vector<u8>)
166StLoc[19](loc17: vector<u8>)
167MutBorrowLoc[18](loc16: VecMap<String, String>)
168LdConst[96](vector<u8>: "Rar..)
169Call string::utf8(vector<u8>): String
170MoveLoc[19](loc17: vector<u8>)
171Call string::utf8(vector<u8>): String
172Call vec_map::insert<String, String>(&mut VecMap<String, String>, String, String)
173MoveLoc[18](loc16: VecMap<String, String>)
174Ret
}
make_cosmetic_attrs(Arg0: String): VecMap<String, String> {
L1: loc0: VecMap<String, String>
B0:
0Call vec_map::empty<String, String>(): VecMap<String, String>
1StLoc[1](loc0: VecMap<String, String>)
2MutBorrowLoc[1](loc0: VecMap<String, String>)
3LdConst[74](vector<u8>: "Typ..)
4Call string::utf8(vector<u8>): String
5LdConst[97](vector<u8>: "Cos..)
6Call string::utf8(vector<u8>): String
7Call vec_map::insert<String, String>(&mut VecMap<String, String>, String, String)
8MutBorrowLoc[1](loc0: VecMap<String, String>)
9LdConst[76](vector<u8>: "Nam..)
10Call string::utf8(vector<u8>): String
11MoveLoc[0](Arg0: String)
12Call vec_map::insert<String, String>(&mut VecMap<String, String>, String, String)
13MoveLoc[1](loc0: VecMap<String, String>)
14Ret
}
get_bubbler_sui_cost(Arg0: u8, Arg1: &vector<u64>): u64 {
B0:
0MoveLoc[1](Arg1: &vector<u64>)
1MoveLoc[0](Arg0: u8)
2CastU64
3VecImmBorrow(1)
4ReadRef
5Ret
}
get_upgrade_base_bub(Arg0: u8): u64 {
L1: loc0: u64
L2: loc1: u64
L3: loc2: u64
L4: loc3: u64
B0:
0CopyLoc[0](Arg0: u8)
1LdU8(0)
2Eq
3BrFalse(7)
B1:
4LdU64(50000000000)
5StLoc[4](loc3: u64)
6Branch(36)
B2:
7CopyLoc[0](Arg0: u8)
8LdU8(1)
9Eq
10BrFalse(14)
B3:
11LdU64(50000000000)
12StLoc[3](loc2: u64)
13Branch(34)
B4:
14CopyLoc[0](Arg0: u8)
15LdU8(2)
16Eq
17BrFalse(21)
B5:
18LdU64(75000000000)
19StLoc[2](loc1: u64)
20Branch(32)
B6:
21MoveLoc[0](Arg0: u8)
22LdU8(3)
23Eq
24BrFalse(28)
B7:
25LdU64(150000000000)
26StLoc[1](loc0: u64)
27Branch(30)
B8:
28LdU64(200000000000)
29StLoc[1](loc0: u64)
B9:
30MoveLoc[1](loc0: u64)
31StLoc[2](loc1: u64)
B10:
32MoveLoc[2](loc1: u64)
33StLoc[3](loc2: u64)
B11:
34MoveLoc[3](loc2: u64)
35StLoc[4](loc3: u64)
B12:
36MoveLoc[4](loc3: u64)
37Ret
}
get_upgrade_bub_cost(Arg0: u8, Arg1: u8): u64 {
L2: loc0: u64
L3: loc1: u8
L4: loc2: u64
B0:
0MoveLoc[0](Arg0: u8)
1Call get_upgrade_base_bub(u8): u64
2StLoc[2](loc0: u64)
3LdU64(1)
4StLoc[4](loc2: u64)
5LdU8(0)
6StLoc[3](loc1: u8)
B1:
7CopyLoc[3](loc1: u8)
8CopyLoc[1](Arg1: u8)
9Lt
10BrFalse(21)
B2:
11Branch(12)
B3:
12MoveLoc[4](loc2: u64)
13LdU64(2)
14Mul
15StLoc[4](loc2: u64)
16MoveLoc[3](loc1: u8)
17LdU8(1)
18Add
19StLoc[3](loc1: u8)
20Branch(7)
B4:
21MoveLoc[2](loc0: u64)
22MoveLoc[4](loc2: u64)
23Mul
24Ret
}
calculate_current_emission<Ty0, Ty1>(Arg0: &GameState<Ty0, Ty1>, Arg1: u64): u64 {
L2: loc0: bool
L3: loc1: u64
L4: loc2: u64
L5: loc3: u64
B0:
0MoveLoc[1](Arg1: u64)
1MoveLoc[0](Arg0: &GameState<Ty0, Ty1>)
2ImmBorrowFieldGeneric[0](GameState.game_start: u64)
3ReadRef
4Sub
5LdConst[25](u64: 4320..)
6Div
7StLoc[4](loc2: u64)
8LdConst[24](u64: 2000..)
9StLoc[3](loc1: u64)
10LdU64(0)
11StLoc[5](loc3: u64)
B1:
12CopyLoc[5](loc3: u64)
13CopyLoc[4](loc2: u64)
14Lt
15BrFalse(22)
B2:
16Branch(17)
B3:
17CopyLoc[3](loc1: u64)
18LdU64(0)
19Gt
20StLoc[2](loc0: bool)
21Branch(24)
B4:
22LdFalse
23StLoc[2](loc0: bool)
B5:
24MoveLoc[2](loc0: bool)
25BrFalse(35)
B6:
26MoveLoc[3](loc1: u64)
27LdU64(2)
28Div
29StLoc[3](loc1: u64)
30MoveLoc[5](loc3: u64)
31LdU64(1)
32Add
33StLoc[5](loc3: u64)
34Branch(12)
B7:
35MoveLoc[3](loc1: u64)
36Ret
}
calculate_pending_rewards<Ty0, Ty1>(Arg0: &GameState<Ty0, Ty1>, Arg1: &PlayerTank, Arg2: u64): u64 {
L3: loc0: bool
L4: loc1: u64
L5: loc2: u64
L6: loc3: u64
L7: loc4: u64
B0:
0CopyLoc[1](Arg1: &PlayerTank)
1ImmBorrowField[1](PlayerTank.total_pressure: u64)
2ReadRef
3LdU64(0)
4Eq
5BrFalse(9)
B1:
6LdTrue
7StLoc[3](loc0: bool)
8Branch(15)
B2:
9CopyLoc[0](Arg0: &GameState<Ty0, Ty1>)
10ImmBorrowFieldGeneric[1](GameState.total_network_pressure: u64)
11ReadRef
12LdU64(0)
13Eq
14StLoc[3](loc0: bool)
B3:
15MoveLoc[3](loc0: bool)
16BrFalse(23)
B4:
17MoveLoc[1](Arg1: &PlayerTank)
18Pop
19MoveLoc[0](Arg0: &GameState<Ty0, Ty1>)
20Pop
21LdU64(0)
22Ret
B5:
23CopyLoc[2](Arg2: u64)
24CopyLoc[1](Arg1: &PlayerTank)
25ImmBorrowField[3](PlayerTank.last_claim_time: u64)
26ReadRef
27Sub
28StLoc[5](loc2: u64)
29CopyLoc[0](Arg0: &GameState<Ty0, Ty1>)
30MoveLoc[2](Arg2: u64)
31Call calculate_current_emission<Ty0, Ty1>(&GameState<Ty0, Ty1>, u64): u64
32CastU128
33MoveLoc[5](loc2: u64)
34CastU128
35Mul
36LdConst[23](u64: 8640..)
37CastU128
38Div
39CastU64
40CastU128
41MoveLoc[1](Arg1: &PlayerTank)
42ImmBorrowField[1](PlayerTank.total_pressure: u64)
43ReadRef
44CastU128
45Mul
46CopyLoc[0](Arg0: &GameState<Ty0, Ty1>)
47ImmBorrowFieldGeneric[1](GameState.total_network_pressure: u64)
48ReadRef
49CastU128
50Div
51CastU64
52StLoc[6](loc3: u64)
53LdConst[26](u64: 2000..)
54MoveLoc[0](Arg0: &GameState<Ty0, Ty1>)
55ImmBorrowFieldGeneric[2](GameState.total_minted: u64)
56ReadRef
57Sub
58StLoc[7](loc4: u64)
59CopyLoc[6](loc3: u64)
60CopyLoc[7](loc4: u64)
61Gt
62BrFalse(66)
B6:
63MoveLoc[7](loc4: u64)
64StLoc[4](loc1: u64)
65Branch(68)
B7:
66MoveLoc[6](loc3: u64)
67StLoc[4](loc1: u64)
B8:
68MoveLoc[4](loc1: u64)
69Ret
}
apply_upgrade_bonus(Arg0: &PlayerTank, Arg1: u64): u64 {
L2: loc0: u64
L3: loc1: u8
L4: loc2: u8
L5: loc3: u8
L6: loc4: u8
B0:
0CopyLoc[0](Arg0: &PlayerTank)
1ImmBorrowField[5](PlayerTank.upgrade_levels: vector<u8>)
2LdU64(0)
3VecImmBorrow(0)
4ReadRef
5StLoc[3](loc1: u8)
6CopyLoc[0](Arg0: &PlayerTank)
7ImmBorrowField[5](PlayerTank.upgrade_levels: vector<u8>)
8LdU64(2)
9VecImmBorrow(0)
10ReadRef
11StLoc[6](loc4: u8)
12CopyLoc[0](Arg0: &PlayerTank)
13ImmBorrowField[5](PlayerTank.upgrade_levels: vector<u8>)
14LdU64(3)
15VecImmBorrow(0)
16ReadRef
17StLoc[4](loc2: u8)
18MoveLoc[0](Arg0: &PlayerTank)
19ImmBorrowField[5](PlayerTank.upgrade_levels: vector<u8>)
20LdU64(4)
21VecImmBorrow(0)
22ReadRef
23StLoc[5](loc3: u8)
24LdU64(10000)
25MoveLoc[3](loc1: u8)
26CastU64
27LdU64(200)
28Mul
29Add
30MoveLoc[6](loc4: u8)
31CastU64
32LdU64(100)
33Mul
34Add
35MoveLoc[4](loc2: u8)
36CastU64
37LdU64(300)
38Mul
39Add
40MoveLoc[5](loc3: u8)
41CastU64
42LdU64(100)
43Mul
44Add
45StLoc[2](loc0: u64)
46MoveLoc[1](Arg1: u64)
47CastU128
48MoveLoc[2](loc0: u64)
49CastU128
50Mul
51LdU128(10000)
52Div
53CastU64
54Ret
}
apply_cooling_bonus(Arg0: &PlayerTank, Arg1: u64): u64 {
L2: loc0: u64
L3: loc1: u8
L4: loc2: u8
L5: loc3: u64
L6: loc4: u64
B0:
0CopyLoc[0](Arg0: &PlayerTank)
1ImmBorrowField[5](PlayerTank.upgrade_levels: vector<u8>)
2LdU64(1)
3VecImmBorrow(0)
4ReadRef
5StLoc[3](loc1: u8)
6MoveLoc[0](Arg0: &PlayerTank)
7ImmBorrowField[5](PlayerTank.upgrade_levels: vector<u8>)
8LdU64(4)
9VecImmBorrow(0)
10ReadRef
11StLoc[4](loc2: u8)
12MoveLoc[3](loc1: u8)
13CastU64
14LdU64(200)
15Mul
16MoveLoc[4](loc2: u8)
17CastU64
18LdU64(100)
19Mul
20Add
21StLoc[6](loc4: u64)
22CopyLoc[1](Arg1: u64)
23CastU128
24MoveLoc[6](loc4: u64)
25CastU128
26Mul
27LdU128(10000)
28Div
29CastU64
30StLoc[5](loc3: u64)
31CopyLoc[5](loc3: u64)
32CopyLoc[1](Arg1: u64)
33Ge
34BrFalse(38)
B1:
35LdU64(1)
36StLoc[2](loc0: u64)
37Branch(42)
B2:
38MoveLoc[1](Arg1: u64)
39MoveLoc[5](loc3: u64)
40Sub
41StLoc[2](loc0: u64)
B3:
42MoveLoc[2](loc0: u64)
43Ret
}
process_bub_payment<Ty0>(Arg0: Coin<Ty0>, Arg1: u64, Arg2: &mut TxContext): Balance<Ty0> {
L3: loc0: Balance<Ty0>
L4: loc1: u64
B0:
0ImmBorrowLoc[0](Arg0: Coin<Ty0>)
1Call coin::value<Ty0>(&Coin<Ty0>): u64
2StLoc[4](loc1: u64)
3CopyLoc[4](loc1: u64)
4CopyLoc[1](Arg1: u64)
5Ge
6BrFalse(8)
B1:
7Branch(12)
B2:
8MoveLoc[2](Arg2: &mut TxContext)
9Pop
10LdConst[5](u64: 7)
11Abort
B3:
12MoveLoc[0](Arg0: Coin<Ty0>)
13Call coin::into_balance<Ty0>(Coin<Ty0>): Balance<Ty0>
14StLoc[3](loc0: Balance<Ty0>)
15CopyLoc[4](loc1: u64)
16CopyLoc[1](Arg1: u64)
17Gt
18BrFalse(31)
B4:
19MutBorrowLoc[3](loc0: Balance<Ty0>)
20MoveLoc[4](loc1: u64)
21MoveLoc[1](Arg1: u64)
22Sub
23Call balance::split<Ty0>(&mut Balance<Ty0>, u64): Balance<Ty0>
24CopyLoc[2](Arg2: &mut TxContext)
25Call coin::from_balance<Ty0>(Balance<Ty0>, &mut TxContext): Coin<Ty0>
26MoveLoc[2](Arg2: &mut TxContext)
27FreezeRef
28Call tx_context::sender(&TxContext): address
29Call transfer::public_transfer<Coin<Ty0>>(Coin<Ty0>, address)
30Branch(33)
B5:
31MoveLoc[2](Arg2: &mut TxContext)
32Pop
B6:
33MoveLoc[3](loc0: Balance<Ty0>)
34Ret
}
process_bublz_payment<Ty0, Ty1, Ty2>(Arg0: Coin<Ty0>, Arg1: u64, Arg2: &mut GameState<Ty1, Ty2>, Arg3: &mut TxContext) {
L4: loc0: Balance<Ty0>
L5: loc1: u64
B0:
0ImmBorrowLoc[0](Arg0: Coin<Ty0>)
1Call coin::value<Ty0>(&Coin<Ty0>): u64
2StLoc[5](loc1: u64)
3CopyLoc[5](loc1: u64)
4CopyLoc[1](Arg1: u64)
5Ge
6BrFalse(8)
B1:
7Branch(14)
B2:
8MoveLoc[2](Arg2: &mut GameState<Ty1, Ty2>)
9Pop
10MoveLoc[3](Arg3: &mut TxContext)
11Pop
12LdConst[5](u64: 7)
13Abort
B3:
14CopyLoc[5](loc1: u64)
15CopyLoc[1](Arg1: u64)
16Gt
17BrFalse(46)
B4:
18MoveLoc[0](Arg0: Coin<Ty0>)
19Call coin::into_balance<Ty0>(Coin<Ty0>): Balance<Ty0>
20StLoc[4](loc0: Balance<Ty0>)
21MutBorrowLoc[4](loc0: Balance<Ty0>)
22MoveLoc[5](loc1: u64)
23CopyLoc[1](Arg1: u64)
24Sub
25Call balance::split<Ty0>(&mut Balance<Ty0>, u64): Balance<Ty0>
26CopyLoc[3](Arg3: &mut TxContext)
27Call coin::from_balance<Ty0>(Balance<Ty0>, &mut TxContext): Coin<Ty0>
28CopyLoc[3](Arg3: &mut TxContext)
29FreezeRef
30Call tx_context::sender(&TxContext): address
31Call transfer::public_transfer<Coin<Ty0>>(Coin<Ty0>, address)
32MoveLoc[4](loc0: Balance<Ty0>)
33MoveLoc[3](Arg3: &mut TxContext)
34Call coin::from_balance<Ty0>(Balance<Ty0>, &mut TxContext): Coin<Ty0>
35LdConst[98](address: 0x00..)
36Call transfer::public_transfer<Coin<Ty0>>(Coin<Ty0>, address)
37CopyLoc[2](Arg2: &mut GameState<Ty1, Ty2>)
38ImmBorrowFieldGeneric[3](GameState.total_bublz_burned: u64)
39ReadRef
40MoveLoc[1](Arg1: u64)
41Add
42MoveLoc[2](Arg2: &mut GameState<Ty1, Ty2>)
43MutBorrowFieldGeneric[3](GameState.total_bublz_burned: u64)
44WriteRef
45Branch(59)
B5:
46MoveLoc[3](Arg3: &mut TxContext)
47Pop
48MoveLoc[0](Arg0: Coin<Ty0>)
49LdConst[98](address: 0x00..)
50Call transfer::public_transfer<Coin<Ty0>>(Coin<Ty0>, address)
51CopyLoc[2](Arg2: &mut GameState<Ty1, Ty2>)
52ImmBorrowFieldGeneric[3](GameState.total_bublz_burned: u64)
53ReadRef
54MoveLoc[5](loc1: u64)
55Add
56MoveLoc[2](Arg2: &mut GameState<Ty1, Ty2>)
57MutBorrowFieldGeneric[3](GameState.total_bublz_burned: u64)
58WriteRef
B6:
59Ret
}
process_sui_payment<Ty0, Ty1>(Arg0: Coin<SUI>, Arg1: u64, Arg2: &mut GameState<Ty0, Ty1>, Arg3: &mut TxContext) {
L4: loc0: Balance<SUI>
L5: loc1: u64
B0:
0ImmBorrowLoc[0](Arg0: Coin<SUI>)
1Call coin::value<SUI>(&Coin<SUI>): u64
2StLoc[5](loc1: u64)
3CopyLoc[5](loc1: u64)
4CopyLoc[1](Arg1: u64)
5Ge
6BrFalse(8)
B1:
7Branch(14)
B2:
8MoveLoc[2](Arg2: &mut GameState<Ty0, Ty1>)
9Pop
10MoveLoc[3](Arg3: &mut TxContext)
11Pop
12LdConst[5](u64: 7)
13Abort
B3:
14MoveLoc[0](Arg0: Coin<SUI>)
15Call coin::into_balance<SUI>(Coin<SUI>): Balance<SUI>
16StLoc[4](loc0: Balance<SUI>)
17CopyLoc[5](loc1: u64)
18CopyLoc[1](Arg1: u64)
19Gt
20BrFalse(33)
B4:
21MutBorrowLoc[4](loc0: Balance<SUI>)
22MoveLoc[5](loc1: u64)
23MoveLoc[1](Arg1: u64)
24Sub
25Call balance::split<SUI>(&mut Balance<SUI>, u64): Balance<SUI>
26CopyLoc[3](Arg3: &mut TxContext)
27Call coin::from_balance<SUI>(Balance<SUI>, &mut TxContext): Coin<SUI>
28MoveLoc[3](Arg3: &mut TxContext)
29FreezeRef
30Call tx_context::sender(&TxContext): address
31Call transfer::public_transfer<Coin<SUI>>(Coin<SUI>, address)
32Branch(35)
B5:
33MoveLoc[3](Arg3: &mut TxContext)
34Pop
B6:
35MoveLoc[2](Arg2: &mut GameState<Ty0, Ty1>)
36MutBorrowFieldGeneric[4](GameState.sui_treasury: Balance<SUI>)
37MoveLoc[4](loc0: Balance<SUI>)
38Call balance::join<SUI>(&mut Balance<SUI>, Balance<SUI>): u64
39Pop
40Ret
}
burn_bub_payment<Ty0, Ty1, Ty2>(Arg0: Balance<Ty0>, Arg1: &mut GameState<Ty1, Ty2>, Arg2: &mut TxContext) {
L3: loc0: u64
L4: loc1: Balance<Ty0>
B0:
0ImmBorrowLoc[0](Arg0: Balance<Ty0>)
1Call balance::value<Ty0>(&Balance<Ty0>): u64
2CastU128
3LdConst[30](u64: 8500)
4CastU128
5Mul
6LdConst[31](u64: 10000)
7CastU128
8Div
9CastU64
10StLoc[3](loc0: u64)
11MoveLoc[0](Arg0: Balance<Ty0>)
12StLoc[4](loc1: Balance<Ty0>)
13MutBorrowLoc[4](loc1: Balance<Ty0>)
14CopyLoc[3](loc0: u64)
15Call balance::split<Ty0>(&mut Balance<Ty0>, u64): Balance<Ty0>
16CopyLoc[2](Arg2: &mut TxContext)
17Call coin::from_balance<Ty0>(Balance<Ty0>, &mut TxContext): Coin<Ty0>
18LdConst[98](address: 0x00..)
19Call transfer::public_transfer<Coin<Ty0>>(Coin<Ty0>, address)
20MoveLoc[4](loc1: Balance<Ty0>)
21MoveLoc[2](Arg2: &mut TxContext)
22Call coin::from_balance<Ty0>(Balance<Ty0>, &mut TxContext): Coin<Ty0>
23CopyLoc[1](Arg1: &mut GameState<Ty1, Ty2>)
24ImmBorrowFieldGeneric[5](GameState.treasury_recipient: address)
25ReadRef
26Call transfer::public_transfer<Coin<Ty0>>(Coin<Ty0>, address)
27CopyLoc[1](Arg1: &mut GameState<Ty1, Ty2>)
28ImmBorrowFieldGeneric[6](GameState.total_burned: u64)
29ReadRef
30MoveLoc[3](loc0: u64)
31Add
32MoveLoc[1](Arg1: &mut GameState<Ty1, Ty2>)
33MutBorrowFieldGeneric[6](GameState.total_burned: u64)
34WriteRef
35Ret
}
init(Arg0: GAME, Arg1: &mut TxContext) {
L2: loc0: Display<BubbleGenerator>
L3: loc1: Display<BubbleCosmetic>
L4: loc2: Publisher
B0:
0MoveLoc[0](Arg0: GAME)
1CopyLoc[1](Arg1: &mut TxContext)
2Call package::claim<GAME>(GAME, &mut TxContext): Publisher
3StLoc[4](loc2: Publisher)
4ImmBorrowLoc[4](loc2: Publisher)
5CopyLoc[1](Arg1: &mut TxContext)
6Call display::new<BubbleGenerator>(&Publisher, &mut TxContext): Display<BubbleGenerator>
7StLoc[2](loc0: Display<BubbleGenerator>)
8MutBorrowLoc[2](loc0: Display<BubbleGenerator>)
9LdConst[99](vector<u8>: "nam..)
10Call string::utf8(vector<u8>): String
11LdConst[100](vector<u8>: "{na..)
12Call string::utf8(vector<u8>): String
13Call display::add<BubbleGenerator>(&mut Display<BubbleGenerator>, String, String)
14MutBorrowLoc[2](loc0: Display<BubbleGenerator>)
15LdConst[101](vector<u8>: "ima..)
16Call string::utf8(vector<u8>): String
17LdConst[102](vector<u8>: "{im..)
18Call string::utf8(vector<u8>): String
19Call display::add<BubbleGenerator>(&mut Display<BubbleGenerator>, String, String)
20MutBorrowLoc[2](loc0: Display<BubbleGenerator>)
21LdConst[103](vector<u8>: "des..)
22Call string::utf8(vector<u8>): String
23LdConst[104](vector<u8>: "Bub..)
24Call string::utf8(vector<u8>): String
25Call display::add<BubbleGenerator>(&mut Display<BubbleGenerator>, String, String)
26MutBorrowLoc[2](loc0: Display<BubbleGenerator>)
27LdConst[105](vector<u8>: "pro..)
28Call string::utf8(vector<u8>): String
29LdConst[106](vector<u8>: "htt..)
30Call string::utf8(vector<u8>): String
31Call display::add<BubbleGenerator>(&mut Display<BubbleGenerator>, String, String)
32MutBorrowLoc[2](loc0: Display<BubbleGenerator>)
33LdConst[107](vector<u8>: "col..)
34Call string::utf8(vector<u8>): String
35LdConst[108](vector<u8>: "Bub..)
36Call string::utf8(vector<u8>): String
37Call display::add<BubbleGenerator>(&mut Display<BubbleGenerator>, String, String)
38MutBorrowLoc[2](loc0: Display<BubbleGenerator>)
39LdConst[109](vector<u8>: "cre..)
40Call string::utf8(vector<u8>): String
41LdConst[110](vector<u8>: "BUB..)
42Call string::utf8(vector<u8>): String
43Call display::add<BubbleGenerator>(&mut Display<BubbleGenerator>, String, String)
44MutBorrowLoc[2](loc0: Display<BubbleGenerator>)
45Call display::update_version<BubbleGenerator>(&mut Display<BubbleGenerator>)
46MoveLoc[2](loc0: Display<BubbleGenerator>)
47CopyLoc[1](Arg1: &mut TxContext)
48FreezeRef
49Call tx_context::sender(&TxContext): address
50Call transfer::public_transfer<Display<BubbleGenerator>>(Display<BubbleGenerator>, address)
51ImmBorrowLoc[4](loc2: Publisher)
52CopyLoc[1](Arg1: &mut TxContext)
53Call display::new<BubbleCosmetic>(&Publisher, &mut TxContext): Display<BubbleCosmetic>
54StLoc[3](loc1: Display<BubbleCosmetic>)
55MutBorrowLoc[3](loc1: Display<BubbleCosmetic>)
56LdConst[99](vector<u8>: "nam..)
57Call string::utf8(vector<u8>): String
58LdConst[100](vector<u8>: "{na..)
59Call string::utf8(vector<u8>): String
60Call display::add<BubbleCosmetic>(&mut Display<BubbleCosmetic>, String, String)
61MutBorrowLoc[3](loc1: Display<BubbleCosmetic>)
62LdConst[101](vector<u8>: "ima..)
63Call string::utf8(vector<u8>): String
64LdConst[102](vector<u8>: "{im..)
65Call string::utf8(vector<u8>): String
66Call display::add<BubbleCosmetic>(&mut Display<BubbleCosmetic>, String, String)
67MutBorrowLoc[3](loc1: Display<BubbleCosmetic>)
68LdConst[103](vector<u8>: "des..)
69Call string::utf8(vector<u8>): String
70LdConst[111](vector<u8>: "Bub..)
71Call string::utf8(vector<u8>): String
72Call display::add<BubbleCosmetic>(&mut Display<BubbleCosmetic>, String, String)
73MutBorrowLoc[3](loc1: Display<BubbleCosmetic>)
74LdConst[105](vector<u8>: "pro..)
75Call string::utf8(vector<u8>): String
76LdConst[106](vector<u8>: "htt..)
77Call string::utf8(vector<u8>): String
78Call display::add<BubbleCosmetic>(&mut Display<BubbleCosmetic>, String, String)
79MutBorrowLoc[3](loc1: Display<BubbleCosmetic>)
80LdConst[107](vector<u8>: "col..)
81Call string::utf8(vector<u8>): String
82LdConst[112](vector<u8>: "Bub..)
83Call string::utf8(vector<u8>): String
84Call display::add<BubbleCosmetic>(&mut Display<BubbleCosmetic>, String, String)
85MutBorrowLoc[3](loc1: Display<BubbleCosmetic>)
86LdConst[109](vector<u8>: "cre..)
87Call string::utf8(vector<u8>): String
88LdConst[110](vector<u8>: "BUB..)
89Call string::utf8(vector<u8>): String
90Call display::add<BubbleCosmetic>(&mut Display<BubbleCosmetic>, String, String)
91MutBorrowLoc[3](loc1: Display<BubbleCosmetic>)
92Call display::update_version<BubbleCosmetic>(&mut Display<BubbleCosmetic>)
93MoveLoc[3](loc1: Display<BubbleCosmetic>)
94CopyLoc[1](Arg1: &mut TxContext)
95FreezeRef
96Call tx_context::sender(&TxContext): address
97Call transfer::public_transfer<Display<BubbleCosmetic>>(Display<BubbleCosmetic>, address)
98MoveLoc[4](loc2: Publisher)
99CopyLoc[1](Arg1: &mut TxContext)
100FreezeRef
101Call tx_context::sender(&TxContext): address
102Call transfer::public_transfer<Publisher>(Publisher, address)
103CopyLoc[1](Arg1: &mut TxContext)
104Call object::new(&mut TxContext): UID
105Pack[3](AdminCap)
106MoveLoc[1](Arg1: &mut TxContext)
107FreezeRef
108Call tx_context::sender(&TxContext): address
109Call transfer::transfer<AdminCap>(AdminCap, address)
110Ret
}
entry create_game<Ty0, Ty1>(Arg0: &AdminCap, Arg1: u64, Arg2: address, Arg3: &Clock, Arg4: &mut TxContext) {
L5: loc0: vector<u64>
B0:
0VecPack(1, 0)
1StLoc[5](loc0: vector<u64>)
2MutBorrowLoc[5](loc0: vector<u64>)
3LdU64(1000000000)
4VecPushBack(1)
5MutBorrowLoc[5](loc0: vector<u64>)
6LdU64(1000000000)
7VecPushBack(1)
8MutBorrowLoc[5](loc0: vector<u64>)
9LdU64(1000000000)
10VecPushBack(1)
11MutBorrowLoc[5](loc0: vector<u64>)
12LdU64(1500000000)
13VecPushBack(1)
14MutBorrowLoc[5](loc0: vector<u64>)
15LdU64(1500000000)
16VecPushBack(1)
17MutBorrowLoc[5](loc0: vector<u64>)
18LdU64(2000000000)
19VecPushBack(1)
20MutBorrowLoc[5](loc0: vector<u64>)
21LdU64(2000000000)
22VecPushBack(1)
23MutBorrowLoc[5](loc0: vector<u64>)
24LdU64(2500000000)
25VecPushBack(1)
26MutBorrowLoc[5](loc0: vector<u64>)
27LdU64(3000000000)
28VecPushBack(1)
29MutBorrowLoc[5](loc0: vector<u64>)
30LdU64(3500000000)
31VecPushBack(1)
32MutBorrowLoc[5](loc0: vector<u64>)
33LdU64(4000000000)
34VecPushBack(1)
35MutBorrowLoc[5](loc0: vector<u64>)
36LdU64(5000000000)
37VecPushBack(1)
38MutBorrowLoc[5](loc0: vector<u64>)
39LdU64(6000000000)
40VecPushBack(1)
41CopyLoc[4](Arg4: &mut TxContext)
42Call object::new(&mut TxContext): UID
43LdU64(0)
44LdU64(0)
45LdU64(0)
46LdU64(0)
47LdU64(0)
48MoveLoc[3](Arg3: &Clock)
49Call clock::timestamp_ms(&Clock): u64
50LdFalse
51Call balance::zero<SUI>(): Balance<SUI>
52MoveLoc[2](Arg2: address)
53MoveLoc[1](Arg1: u64)
54MoveLoc[5](loc0: vector<u64>)
55CopyLoc[4](Arg4: &mut TxContext)
56Call table::new<u64, CosmeticType>(&mut TxContext): Table<u64, CosmeticType>
57LdU64(0)
58CopyLoc[4](Arg4: &mut TxContext)
59Call table::new<address, PlayerTank>(&mut TxContext): Table<address, PlayerTank>
60CopyLoc[4](Arg4: &mut TxContext)
61Call table::new<u64, StakedBubblerInfo>(&mut TxContext): Table<u64, StakedBubblerInfo>
62CopyLoc[4](Arg4: &mut TxContext)
63Call table::new<u64, BubbleGenerator>(&mut TxContext): Table<u64, BubbleGenerator>
64MoveLoc[4](Arg4: &mut TxContext)
65Call table::new<u64, DisplayedCosmeticInfo>(&mut TxContext): Table<u64, DisplayedCosmeticInfo>
66LdU64(0)
67LdU64(0)
68PackGeneric[0](GameState<Ty0, Ty1>)
69Call transfer::share_object<GameState<Ty0, Ty1>>(GameState<Ty0, Ty1>)
70Ret
}
entry deposit_treasury_cap<Ty0>(Arg0: &AdminCap, Arg1: TreasuryCap<Ty0>, Arg2: &mut TxContext) {
B0:
0MoveLoc[2](Arg2: &mut TxContext)
1Call object::new(&mut TxContext): UID
2MoveLoc[1](Arg1: TreasuryCap<Ty0>)
3PackGeneric[1](MintVault<Ty0>)
4Call transfer::share_object<MintVault<Ty0>>(MintVault<Ty0>)
5Ret
}
entry create_tank<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: &Clock, Arg2: &TxContext) {
L3: loc0: u64
L4: loc1: address
L5: loc2: vector<u8>
B0:
0CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
1ImmBorrowFieldGeneric[7](GameState.paused: bool)
2ReadRef
3Not
4BrFalse(6)
B1:
5Branch(14)
B2:
6MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
7Pop
8MoveLoc[2](Arg2: &TxContext)
9Pop
10MoveLoc[1](Arg1: &Clock)
11Pop
12LdConst[4](u64: 6)
13Abort
B3:
14MoveLoc[2](Arg2: &TxContext)
15Call tx_context::sender(&TxContext): address
16StLoc[4](loc1: address)
17CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
18ImmBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
19CopyLoc[4](loc1: address)
20Call table::contains<address, PlayerTank>(&Table<address, PlayerTank>, address): bool
21Not
22BrFalse(24)
B4:
23Branch(30)
B5:
24MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
25Pop
26MoveLoc[1](Arg1: &Clock)
27Pop
28LdConst[22](u64: 25)
29Abort
B6:
30VecPack(0, 0)
31StLoc[5](loc2: vector<u8>)
32LdU64(0)
33StLoc[3](loc0: u64)
B7:
34CopyLoc[3](loc0: u64)
35LdU64(5)
36Lt
37BrFalse(46)
B8:
38MutBorrowLoc[5](loc2: vector<u8>)
39LdU8(0)
40VecPushBack(0)
41MoveLoc[3](loc0: u64)
42LdU64(1)
43Add
44StLoc[3](loc0: u64)
45Branch(34)
B9:
46CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
47MutBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
48CopyLoc[4](loc1: address)
49LdU8(0)
50LdU64(0)
51VecPack(1, 0)
52VecPack(1, 0)
53LdU64(0)
54LdU64(0)
55MoveLoc[5](loc2: vector<u8>)
56MoveLoc[1](Arg1: &Clock)
57Call clock::timestamp_ms(&Clock): u64
58LdU64(0)
59LdU64(0)
60LdConst[98](address: 0x00..)
61LdFalse
62Pack[6](PlayerTank)
63Call table::add<address, PlayerTank>(&mut Table<address, PlayerTank>, address, PlayerTank)
64CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
65ImmBorrowFieldGeneric[9](GameState.total_players: u64)
66ReadRef
67LdU64(1)
68Add
69MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
70MutBorrowFieldGeneric[9](GameState.total_players: u64)
71WriteRef
72MoveLoc[4](loc1: address)
73Pack[12](TankCreated)
74Call event::emit<TankCreated>(TankCreated)
75Ret
}
entry upgrade_tank<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: Coin<Ty0>, Arg2: Coin<Ty1>, Arg3: Coin<SUI>, Arg4: &Clock, Arg5: &mut TxContext) {
L6: loc0: u64
L7: loc1: u8
L8: loc2: u64
L9: loc3: address
L10: loc4: &PlayerTank
L11: loc5: &mut PlayerTank
B0:
0CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
1ImmBorrowFieldGeneric[7](GameState.paused: bool)
2ReadRef
3Not
4BrFalse(6)
B1:
5Branch(14)
B2:
6MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
7Pop
8MoveLoc[5](Arg5: &mut TxContext)
9Pop
10MoveLoc[4](Arg4: &Clock)
11Pop
12LdConst[4](u64: 6)
13Abort
B3:
14CopyLoc[5](Arg5: &mut TxContext)
15FreezeRef
16Call tx_context::sender(&TxContext): address
17StLoc[9](loc3: address)
18CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
19ImmBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
20CopyLoc[9](loc3: address)
21Call table::contains<address, PlayerTank>(&Table<address, PlayerTank>, address): bool
22BrFalse(24)
B4:
23Branch(32)
B5:
24MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
25Pop
26MoveLoc[5](Arg5: &mut TxContext)
27Pop
28MoveLoc[4](Arg4: &Clock)
29Pop
30LdConst[8](u64: 10)
31Abort
B6:
32CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
33ImmBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
34CopyLoc[9](loc3: address)
35Call table::borrow<address, PlayerTank>(&Table<address, PlayerTank>, address): &PlayerTank
36StLoc[10](loc4: &PlayerTank)
37MoveLoc[4](Arg4: &Clock)
38Call clock::timestamp_ms(&Clock): u64
39StLoc[8](loc2: u64)
40CopyLoc[10](loc4: &PlayerTank)
41ImmBorrowField[13](PlayerTank.tier: u8)
42ReadRef
43LdConst[32](u8: 8)
44Lt
45BrFalse(47)
B7:
46Branch(55)
B8:
47MoveLoc[10](loc4: &PlayerTank)
48Pop
49MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
50Pop
51MoveLoc[5](Arg5: &mut TxContext)
52Pop
53LdConst[0](u64: 1)
54Abort
B9:
55CopyLoc[8](loc2: u64)
56CopyLoc[10](loc4: &PlayerTank)
57ImmBorrowField[14](PlayerTank.last_upgrade_time: u64)
58ReadRef
59LdConst[23](u64: 8640..)
60Add
61Ge
62BrFalse(64)
B10:
63Branch(72)
B11:
64MoveLoc[10](loc4: &PlayerTank)
65Pop
66MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
67Pop
68MoveLoc[5](Arg5: &mut TxContext)
69Pop
70LdConst[9](u64: 12)
71Abort
B12:
72CopyLoc[10](loc4: &PlayerTank)
73ImmBorrowField[15](PlayerTank.staked_bubbler_ids: vector<u64>)
74VecLen(1)
75LdU64(0)
76Eq
77BrFalse(79)
B13:
78Branch(87)
B14:
79MoveLoc[10](loc4: &PlayerTank)
80Pop
81MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
82Pop
83MoveLoc[5](Arg5: &mut TxContext)
84Pop
85LdConst[20](u64: 23)
86Abort
B15:
87CopyLoc[10](loc4: &PlayerTank)
88ImmBorrowField[16](PlayerTank.displayed_cosmetic_ids: vector<u64>)
89VecLen(1)
90LdU64(0)
91Eq
92BrFalse(94)
B16:
93Branch(102)
B17:
94MoveLoc[10](loc4: &PlayerTank)
95Pop
96MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
97Pop
98MoveLoc[5](Arg5: &mut TxContext)
99Pop
100LdConst[20](u64: 23)
101Abort
B18:
102MoveLoc[10](loc4: &PlayerTank)
103ImmBorrowField[13](PlayerTank.tier: u8)
104ReadRef
105LdU8(1)
106Add
107StLoc[7](loc1: u8)
108CopyLoc[7](loc1: u8)
109Call get_tank_bub_cost(u8): u64
110StLoc[6](loc0: u64)
111MoveLoc[1](Arg1: Coin<Ty0>)
112MoveLoc[6](loc0: u64)
113CopyLoc[5](Arg5: &mut TxContext)
114Call process_bub_payment<Ty0>(Coin<Ty0>, u64, &mut TxContext): Balance<Ty0>
115CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
116CopyLoc[5](Arg5: &mut TxContext)
117Call burn_bub_payment<Ty0, Ty0, Ty1>(Balance<Ty0>, &mut GameState<Ty0, Ty1>, &mut TxContext)
118MoveLoc[2](Arg2: Coin<Ty1>)
119CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
120ImmBorrowFieldGeneric[10](GameState.bublz_cost: u64)
121ReadRef
122CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
123CopyLoc[5](Arg5: &mut TxContext)
124Call process_bublz_payment<Ty1, Ty0, Ty1>(Coin<Ty1>, u64, &mut GameState<Ty0, Ty1>, &mut TxContext)
125MoveLoc[3](Arg3: Coin<SUI>)
126CopyLoc[7](loc1: u8)
127Call get_tank_sui_cost(u8): u64
128CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
129MoveLoc[5](Arg5: &mut TxContext)
130Call process_sui_payment<Ty0, Ty1>(Coin<SUI>, u64, &mut GameState<Ty0, Ty1>, &mut TxContext)
131MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
132MutBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
133CopyLoc[9](loc3: address)
134Call table::borrow_mut<address, PlayerTank>(&mut Table<address, PlayerTank>, address): &mut PlayerTank
135StLoc[11](loc5: &mut PlayerTank)
136CopyLoc[7](loc1: u8)
137CopyLoc[11](loc5: &mut PlayerTank)
138MutBorrowField[13](PlayerTank.tier: u8)
139WriteRef
140MoveLoc[8](loc2: u64)
141MoveLoc[11](loc5: &mut PlayerTank)
142MutBorrowField[14](PlayerTank.last_upgrade_time: u64)
143WriteRef
144MoveLoc[9](loc3: address)
145MoveLoc[7](loc1: u8)
146Pack[13](TankUpgraded)
147Call event::emit<TankUpgraded>(TankUpgraded)
148Ret
}
entry mint_bubbler<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: u8, Arg2: Coin<Ty0>, Arg3: Coin<Ty1>, Arg4: Coin<SUI>, Arg5: &mut TxContext) {
L6: loc0: u64
L7: loc1: u64
L8: loc2: u64
L9: loc3: u64
L10: loc4: u64
L11: loc5: String
L12: loc6: String
L13: loc7: address
L14: loc8: u64
L15: loc9: u64
B0:
0CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
1ImmBorrowFieldGeneric[7](GameState.paused: bool)
2ReadRef
3Not
4BrFalse(6)
B1:
5Branch(12)
B2:
6MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
7Pop
8MoveLoc[5](Arg5: &mut TxContext)
9Pop
10LdConst[4](u64: 6)
11Abort
B3:
12CopyLoc[1](Arg1: u8)
13CastU64
14LdConst[10](u64: 13)
15Lt
16BrFalse(18)
B4:
17Branch(24)
B5:
18MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
19Pop
20MoveLoc[5](Arg5: &mut TxContext)
21Pop
22LdConst[0](u64: 1)
23Abort
B6:
24CopyLoc[5](Arg5: &mut TxContext)
25FreezeRef
26Call tx_context::sender(&TxContext): address
27StLoc[13](loc7: address)
28CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
29ImmBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
30CopyLoc[13](loc7: address)
31Call table::contains<address, PlayerTank>(&Table<address, PlayerTank>, address): bool
32BrFalse(34)
B7:
33Branch(40)
B8:
34MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
35Pop
36MoveLoc[5](Arg5: &mut TxContext)
37Pop
38LdConst[8](u64: 10)
39Abort
B9:
40CopyLoc[1](Arg1: u8)
41Call get_bubbler_stats(u8): u64 * u64 * u64 * String * String
42StLoc[11](loc5: String)
43StLoc[12](loc6: String)
44StLoc[7](loc1: u64)
45StLoc[15](loc9: u64)
46StLoc[8](loc2: u64)
47CopyLoc[7](loc1: u64)
48LdU64(0)
49Gt
50BrFalse(59)
B10:
51MoveLoc[2](Arg2: Coin<Ty0>)
52MoveLoc[7](loc1: u64)
53CopyLoc[5](Arg5: &mut TxContext)
54Call process_bub_payment<Ty0>(Coin<Ty0>, u64, &mut TxContext): Balance<Ty0>
55CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
56CopyLoc[5](Arg5: &mut TxContext)
57Call burn_bub_payment<Ty0, Ty0, Ty1>(Balance<Ty0>, &mut GameState<Ty0, Ty1>, &mut TxContext)
58Branch(62)
B11:
59MoveLoc[2](Arg2: Coin<Ty0>)
60CopyLoc[13](loc7: address)
61Call transfer::public_transfer<Coin<Ty0>>(Coin<Ty0>, address)
B12:
62CopyLoc[1](Arg1: u8)
63LdU8(0)
64Eq
65BrFalse(73)
B13:
66CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
67ImmBorrowFieldGeneric[10](GameState.bublz_cost: u64)
68ReadRef
69LdU64(2)
70Mul
71StLoc[6](loc0: u64)
72Branch(77)
B14:
73CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
74ImmBorrowFieldGeneric[10](GameState.bublz_cost: u64)
75ReadRef
76StLoc[6](loc0: u64)
B15:
77MoveLoc[6](loc0: u64)
78StLoc[10](loc4: u64)
79MoveLoc[3](Arg3: Coin<Ty1>)
80MoveLoc[10](loc4: u64)
81CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
82CopyLoc[5](Arg5: &mut TxContext)
83Call process_bublz_payment<Ty1, Ty0, Ty1>(Coin<Ty1>, u64, &mut GameState<Ty0, Ty1>, &mut TxContext)
84CopyLoc[1](Arg1: u8)
85CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
86ImmBorrowFieldGeneric[11](GameState.sui_costs: vector<u64>)
87Call get_bubbler_sui_cost(u8, &vector<u64>): u64
88StLoc[14](loc8: u64)
89MoveLoc[4](Arg4: Coin<SUI>)
90MoveLoc[14](loc8: u64)
91CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
92CopyLoc[5](Arg5: &mut TxContext)
93Call process_sui_payment<Ty0, Ty1>(Coin<SUI>, u64, &mut GameState<Ty0, Ty1>, &mut TxContext)
94CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
95ImmBorrowFieldGeneric[12](GameState.next_bubbler_id: u64)
96ReadRef
97StLoc[9](loc3: u64)
98CopyLoc[9](loc3: u64)
99LdU64(1)
100Add
101MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
102MutBorrowFieldGeneric[12](GameState.next_bubbler_id: u64)
103WriteRef
104MoveLoc[5](Arg5: &mut TxContext)
105Call object::new(&mut TxContext): UID
106CopyLoc[9](loc3: u64)
107CopyLoc[1](Arg1: u8)
108CopyLoc[12](loc6: String)
109CopyLoc[8](loc2: u64)
110MoveLoc[15](loc9: u64)
111MoveLoc[11](loc5: String)
112CopyLoc[1](Arg1: u8)
113MoveLoc[12](loc6: String)
114Call make_bubbler_attrs(u8, String): VecMap<String, String>
115Pack[9](BubbleGenerator)
116CopyLoc[13](loc7: address)
117Call transfer::public_transfer<BubbleGenerator>(BubbleGenerator, address)
118MoveLoc[13](loc7: address)
119MoveLoc[9](loc3: u64)
120MoveLoc[1](Arg1: u8)
121MoveLoc[8](loc2: u64)
122Pack[14](BubblerMinted)
123Call event::emit<BubblerMinted>(BubblerMinted)
124Ret
}
entry stake_bubbler<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: BubbleGenerator, Arg2: &Clock, Arg3: &TxContext) {
L4: loc0: u64
L5: loc1: u64
L6: loc2: u64
L7: loc3: u64
L8: loc4: u64
L9: loc5: u64
L10: loc6: u64
L11: loc7: u64
L12: loc8: address
L13: loc9: &PlayerTank
L14: loc10: &mut PlayerTank
L15: loc11: &mut PlayerTank
L16: loc12: &PlayerTank
L17: loc13: u8
L18: loc14: u64
B0:
0CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
1ImmBorrowFieldGeneric[7](GameState.paused: bool)
2ReadRef
3Not
4BrFalse(6)
B1:
5Branch(14)
B2:
6MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
7Pop
8MoveLoc[3](Arg3: &TxContext)
9Pop
10MoveLoc[2](Arg2: &Clock)
11Pop
12LdConst[4](u64: 6)
13Abort
B3:
14MoveLoc[3](Arg3: &TxContext)
15Call tx_context::sender(&TxContext): address
16StLoc[12](loc8: address)
17ImmBorrowLoc[1](Arg1: BubbleGenerator)
18ImmBorrowField[20](BubbleGenerator.bubbler_id: u64)
19ReadRef
20StLoc[4](loc0: u64)
21ImmBorrowLoc[1](Arg1: BubbleGenerator)
22ImmBorrowField[21](BubbleGenerator.tier: u8)
23ReadRef
24StLoc[17](loc13: u8)
25ImmBorrowLoc[1](Arg1: BubbleGenerator)
26ImmBorrowField[22](BubbleGenerator.bubble_pressure: u64)
27ReadRef
28StLoc[5](loc1: u64)
29ImmBorrowLoc[1](Arg1: BubbleGenerator)
30ImmBorrowField[23](BubbleGenerator.tank_pressure: u64)
31ReadRef
32StLoc[18](loc14: u64)
33CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
34ImmBorrowFieldGeneric[13](GameState.staked_bubblers: Table<u64, StakedBubblerInfo>)
35CopyLoc[4](loc0: u64)
36Call table::contains<u64, StakedBubblerInfo>(&Table<u64, StakedBubblerInfo>, u64): bool
37Not
38BrFalse(40)
B4:
39Branch(46)
B5:
40MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
41Pop
42MoveLoc[2](Arg2: &Clock)
43Pop
44LdConst[16](u64: 19)
45Abort
B6:
46CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
47ImmBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
48CopyLoc[12](loc8: address)
49Call table::contains<address, PlayerTank>(&Table<address, PlayerTank>, address): bool
50BrFalse(52)
B7:
51Branch(58)
B8:
52MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
53Pop
54MoveLoc[2](Arg2: &Clock)
55Pop
56LdConst[8](u64: 10)
57Abort
B9:
58MoveLoc[2](Arg2: &Clock)
59Call clock::timestamp_ms(&Clock): u64
60StLoc[10](loc6: u64)
61CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
62CopyLoc[12](loc8: address)
63CopyLoc[10](loc6: u64)
64Call ensure_repair_record<Ty0, Ty1>(&mut GameState<Ty0, Ty1>, address, u64)
65CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
66ImmBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
67CopyLoc[12](loc8: address)
68Call table::borrow<address, PlayerTank>(&Table<address, PlayerTank>, address): &PlayerTank
69StLoc[16](loc12: &PlayerTank)
70CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
71FreezeRef
72MoveLoc[16](loc12: &PlayerTank)
73CopyLoc[12](loc8: address)
74CopyLoc[10](loc6: u64)
75Call calculate_pending_rewards_v2<Ty0, Ty1>(&GameState<Ty0, Ty1>, &PlayerTank, address, u64): u64
76StLoc[11](loc7: u64)
77CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
78MutBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
79CopyLoc[12](loc8: address)
80Call table::borrow_mut<address, PlayerTank>(&mut Table<address, PlayerTank>, address): &mut PlayerTank
81StLoc[15](loc11: &mut PlayerTank)
82CopyLoc[11](loc7: u64)
83LdU64(0)
84Gt
85BrFalse(94)
B10:
86CopyLoc[15](loc11: &mut PlayerTank)
87ImmBorrowField[25](PlayerTank.unclaimed_rewards: u64)
88ReadRef
89MoveLoc[11](loc7: u64)
90Add
91CopyLoc[15](loc11: &mut PlayerTank)
92MutBorrowField[25](PlayerTank.unclaimed_rewards: u64)
93WriteRef
B11:
94MoveLoc[10](loc6: u64)
95MoveLoc[15](loc11: &mut PlayerTank)
96MutBorrowField[3](PlayerTank.last_claim_time: u64)
97WriteRef
98CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
99ImmBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
100CopyLoc[12](loc8: address)
101Call table::borrow<address, PlayerTank>(&Table<address, PlayerTank>, address): &PlayerTank
102StLoc[13](loc9: &PlayerTank)
103CopyLoc[13](loc9: &PlayerTank)
104ImmBorrowField[13](PlayerTank.tier: u8)
105ReadRef
106Call get_tank_max_bubblers(u8): u64
107StLoc[9](loc5: u64)
108CopyLoc[13](loc9: &PlayerTank)
109ImmBorrowField[15](PlayerTank.staked_bubbler_ids: vector<u64>)
110VecLen(1)
111MoveLoc[9](loc5: u64)
112Lt
113BrFalse(115)
B12:
114Branch(121)
B13:
115MoveLoc[13](loc9: &PlayerTank)
116Pop
117MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
118Pop
119LdConst[1](u64: 2)
120Abort
B14:
121CopyLoc[13](loc9: &PlayerTank)
122MoveLoc[5](loc1: u64)
123Call apply_upgrade_bonus(&PlayerTank, u64): u64
124StLoc[7](loc3: u64)
125CopyLoc[13](loc9: &PlayerTank)
126MoveLoc[18](loc14: u64)
127Call apply_cooling_bonus(&PlayerTank, u64): u64
128StLoc[8](loc4: u64)
129CopyLoc[13](loc9: &PlayerTank)
130ImmBorrowField[13](PlayerTank.tier: u8)
131ReadRef
132Call get_tank_pressure_capacity(u8): u64
133StLoc[6](loc2: u64)
134MoveLoc[13](loc9: &PlayerTank)
135ImmBorrowField[26](PlayerTank.total_tank_pressure: u64)
136ReadRef
137CopyLoc[8](loc4: u64)
138Add
139MoveLoc[6](loc2: u64)
140Le
141BrFalse(143)
B15:
142Branch(147)
B16:
143MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
144Pop
145LdConst[2](u64: 3)
146Abort
B17:
147CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
148MutBorrowFieldGeneric[13](GameState.staked_bubblers: Table<u64, StakedBubblerInfo>)
149CopyLoc[4](loc0: u64)
150CopyLoc[12](loc8: address)
151CopyLoc[17](loc13: u8)
152CopyLoc[7](loc3: u64)
153CopyLoc[8](loc4: u64)
154Pack[7](StakedBubblerInfo)
155Call table::add<u64, StakedBubblerInfo>(&mut Table<u64, StakedBubblerInfo>, u64, StakedBubblerInfo)
156CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
157MutBorrowFieldGeneric[14](GameState.staked_bubbler_objects: Table<u64, BubbleGenerator>)
158CopyLoc[4](loc0: u64)
159MoveLoc[1](Arg1: BubbleGenerator)
160Call table::add<u64, BubbleGenerator>(&mut Table<u64, BubbleGenerator>, u64, BubbleGenerator)
161CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
162MutBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
163CopyLoc[12](loc8: address)
164Call table::borrow_mut<address, PlayerTank>(&mut Table<address, PlayerTank>, address): &mut PlayerTank
165StLoc[14](loc10: &mut PlayerTank)
166CopyLoc[14](loc10: &mut PlayerTank)
167MutBorrowField[15](PlayerTank.staked_bubbler_ids: vector<u64>)
168CopyLoc[4](loc0: u64)
169VecPushBack(1)
170CopyLoc[14](loc10: &mut PlayerTank)
171ImmBorrowField[1](PlayerTank.total_pressure: u64)
172ReadRef
173CopyLoc[7](loc3: u64)
174Add
175CopyLoc[14](loc10: &mut PlayerTank)
176MutBorrowField[1](PlayerTank.total_pressure: u64)
177WriteRef
178CopyLoc[14](loc10: &mut PlayerTank)
179ImmBorrowField[26](PlayerTank.total_tank_pressure: u64)
180ReadRef
181MoveLoc[8](loc4: u64)
182Add
183MoveLoc[14](loc10: &mut PlayerTank)
184MutBorrowField[26](PlayerTank.total_tank_pressure: u64)
185WriteRef
186CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
187ImmBorrowFieldGeneric[1](GameState.total_network_pressure: u64)
188ReadRef
189MoveLoc[7](loc3: u64)
190Add
191MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
192MutBorrowFieldGeneric[1](GameState.total_network_pressure: u64)
193WriteRef
194MoveLoc[12](loc8: address)
195MoveLoc[4](loc0: u64)
196MoveLoc[17](loc13: u8)
197Pack[15](BubblerStaked)
198Call event::emit<BubblerStaked>(BubblerStaked)
199Ret
}
entry unstake_bubbler<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: u64, Arg2: &Clock, Arg3: &TxContext) {
L4: loc0: u64
L5: loc1: u64
L6: loc2: u64
L7: loc3: u64
L8: loc4: StakedBubblerInfo
L9: loc5: address
L10: loc6: &mut PlayerTank
L11: loc7: &mut PlayerTank
L12: loc8: &PlayerTank
B0:
0CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
1ImmBorrowFieldGeneric[7](GameState.paused: bool)
2ReadRef
3Not
4BrFalse(6)
B1:
5Branch(14)
B2:
6MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
7Pop
8MoveLoc[3](Arg3: &TxContext)
9Pop
10MoveLoc[2](Arg2: &Clock)
11Pop
12LdConst[4](u64: 6)
13Abort
B3:
14MoveLoc[3](Arg3: &TxContext)
15Call tx_context::sender(&TxContext): address
16StLoc[9](loc5: address)
17CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
18ImmBorrowFieldGeneric[13](GameState.staked_bubblers: Table<u64, StakedBubblerInfo>)
19CopyLoc[1](Arg1: u64)
20Call table::contains<u64, StakedBubblerInfo>(&Table<u64, StakedBubblerInfo>, u64): bool
21BrFalse(23)
B4:
22Branch(29)
B5:
23MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
24Pop
25MoveLoc[2](Arg2: &Clock)
26Pop
27LdConst[15](u64: 18)
28Abort
B6:
29CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
30ImmBorrowFieldGeneric[13](GameState.staked_bubblers: Table<u64, StakedBubblerInfo>)
31CopyLoc[1](Arg1: u64)
32Call table::borrow<u64, StakedBubblerInfo>(&Table<u64, StakedBubblerInfo>, u64): &StakedBubblerInfo
33ImmBorrowField[28](StakedBubblerInfo.owner: address)
34ReadRef
35CopyLoc[9](loc5: address)
36Eq
37BrFalse(39)
B7:
38Branch(45)
B8:
39MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
40Pop
41MoveLoc[2](Arg2: &Clock)
42Pop
43LdConst[3](u64: 4)
44Abort
B9:
45CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
46MutBorrowFieldGeneric[13](GameState.staked_bubblers: Table<u64, StakedBubblerInfo>)
47CopyLoc[1](Arg1: u64)
48Call table::remove<u64, StakedBubblerInfo>(&mut Table<u64, StakedBubblerInfo>, u64): StakedBubblerInfo
49StLoc[8](loc4: StakedBubblerInfo)
50MoveLoc[2](Arg2: &Clock)
51Call clock::timestamp_ms(&Clock): u64
52StLoc[6](loc2: u64)
53CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
54CopyLoc[9](loc5: address)
55CopyLoc[6](loc2: u64)
56Call ensure_repair_record<Ty0, Ty1>(&mut GameState<Ty0, Ty1>, address, u64)
57CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
58ImmBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
59CopyLoc[9](loc5: address)
60Call table::borrow<address, PlayerTank>(&Table<address, PlayerTank>, address): &PlayerTank
61StLoc[12](loc8: &PlayerTank)
62CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
63FreezeRef
64MoveLoc[12](loc8: &PlayerTank)
65CopyLoc[9](loc5: address)
66CopyLoc[6](loc2: u64)
67Call calculate_pending_rewards_v2<Ty0, Ty1>(&GameState<Ty0, Ty1>, &PlayerTank, address, u64): u64
68StLoc[7](loc3: u64)
69CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
70MutBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
71CopyLoc[9](loc5: address)
72Call table::borrow_mut<address, PlayerTank>(&mut Table<address, PlayerTank>, address): &mut PlayerTank
73StLoc[11](loc7: &mut PlayerTank)
74CopyLoc[7](loc3: u64)
75LdU64(0)
76Gt
77BrFalse(86)
B10:
78CopyLoc[11](loc7: &mut PlayerTank)
79ImmBorrowField[25](PlayerTank.unclaimed_rewards: u64)
80ReadRef
81MoveLoc[7](loc3: u64)
82Add
83CopyLoc[11](loc7: &mut PlayerTank)
84MutBorrowField[25](PlayerTank.unclaimed_rewards: u64)
85WriteRef
B11:
86MoveLoc[6](loc2: u64)
87MoveLoc[11](loc7: &mut PlayerTank)
88MutBorrowField[3](PlayerTank.last_claim_time: u64)
89WriteRef
90CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
91MutBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
92CopyLoc[9](loc5: address)
93Call table::borrow_mut<address, PlayerTank>(&mut Table<address, PlayerTank>, address): &mut PlayerTank
94StLoc[10](loc6: &mut PlayerTank)
95LdU64(0)
96StLoc[4](loc0: u64)
97CopyLoc[10](loc6: &mut PlayerTank)
98ImmBorrowField[15](PlayerTank.staked_bubbler_ids: vector<u64>)
99VecLen(1)
100StLoc[5](loc1: u64)
B12:
101CopyLoc[4](loc0: u64)
102CopyLoc[5](loc1: u64)
103Lt
104BrFalse(125)
B13:
105CopyLoc[10](loc6: &mut PlayerTank)
106ImmBorrowField[15](PlayerTank.staked_bubbler_ids: vector<u64>)
107CopyLoc[4](loc0: u64)
108VecImmBorrow(1)
109ReadRef
110CopyLoc[1](Arg1: u64)
111Eq
112BrFalse(120)
B14:
113CopyLoc[10](loc6: &mut PlayerTank)
114MutBorrowField[15](PlayerTank.staked_bubbler_ids: vector<u64>)
115MoveLoc[4](loc0: u64)
116Call vector::swap_remove<u64>(&mut vector<u64>, u64): u64
117Pop
118CopyLoc[5](loc1: u64)
119StLoc[4](loc0: u64)
B15:
120MoveLoc[4](loc0: u64)
121LdU64(1)
122Add
123StLoc[4](loc0: u64)
124Branch(101)
B16:
125CopyLoc[10](loc6: &mut PlayerTank)
126ImmBorrowField[1](PlayerTank.total_pressure: u64)
127ReadRef
128ImmBorrowLoc[8](loc4: StakedBubblerInfo)
129ImmBorrowField[29](StakedBubblerInfo.bubble_pressure: u64)
130ReadRef
131Sub
132CopyLoc[10](loc6: &mut PlayerTank)
133MutBorrowField[1](PlayerTank.total_pressure: u64)
134WriteRef
135CopyLoc[10](loc6: &mut PlayerTank)
136ImmBorrowField[26](PlayerTank.total_tank_pressure: u64)
137ReadRef
138ImmBorrowLoc[8](loc4: StakedBubblerInfo)
139ImmBorrowField[30](StakedBubblerInfo.tank_pressure: u64)
140ReadRef
141Sub
142MoveLoc[10](loc6: &mut PlayerTank)
143MutBorrowField[26](PlayerTank.total_tank_pressure: u64)
144WriteRef
145CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
146ImmBorrowFieldGeneric[1](GameState.total_network_pressure: u64)
147ReadRef
148ImmBorrowLoc[8](loc4: StakedBubblerInfo)
149ImmBorrowField[29](StakedBubblerInfo.bubble_pressure: u64)
150ReadRef
151Sub
152CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
153MutBorrowFieldGeneric[1](GameState.total_network_pressure: u64)
154WriteRef
155MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
156MutBorrowFieldGeneric[14](GameState.staked_bubbler_objects: Table<u64, BubbleGenerator>)
157CopyLoc[1](Arg1: u64)
158Call table::remove<u64, BubbleGenerator>(&mut Table<u64, BubbleGenerator>, u64): BubbleGenerator
159CopyLoc[9](loc5: address)
160Call transfer::public_transfer<BubbleGenerator>(BubbleGenerator, address)
161MoveLoc[9](loc5: address)
162MoveLoc[1](Arg1: u64)
163ImmBorrowLoc[8](loc4: StakedBubblerInfo)
164ImmBorrowField[31](StakedBubblerInfo.tier: u8)
165ReadRef
166Pack[16](BubblerUnstaked)
167Call event::emit<BubblerUnstaked>(BubblerUnstaked)
168Ret
}
entry unstake_all_bubblers<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: &Clock, Arg2: &TxContext) {
L3: loc0: u64
L4: loc1: u64
L5: loc2: vector<u64>
L6: loc3: u64
L7: loc4: u64
L8: loc5: u64
L9: loc6: StakedBubblerInfo
L10: loc7: address
L11: loc8: &mut PlayerTank
L12: loc9: &mut PlayerTank
L13: loc10: &mut PlayerTank
L14: loc11: &PlayerTank
L15: loc12: u64
L16: loc13: u64
B0:
0CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
1ImmBorrowFieldGeneric[7](GameState.paused: bool)
2ReadRef
3Not
4BrFalse(6)
B1:
5Branch(14)
B2:
6MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
7Pop
8MoveLoc[2](Arg2: &TxContext)
9Pop
10MoveLoc[1](Arg1: &Clock)
11Pop
12LdConst[4](u64: 6)
13Abort
B3:
14MoveLoc[2](Arg2: &TxContext)
15Call tx_context::sender(&TxContext): address
16StLoc[10](loc7: address)
17CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
18ImmBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
19CopyLoc[10](loc7: address)
20Call table::contains<address, PlayerTank>(&Table<address, PlayerTank>, address): bool
21BrFalse(23)
B4:
22Branch(29)
B5:
23MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
24Pop
25MoveLoc[1](Arg1: &Clock)
26Pop
27LdConst[8](u64: 10)
28Abort
B6:
29MoveLoc[1](Arg1: &Clock)
30Call clock::timestamp_ms(&Clock): u64
31StLoc[7](loc4: u64)
32CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
33CopyLoc[10](loc7: address)
34CopyLoc[7](loc4: u64)
35Call ensure_repair_record<Ty0, Ty1>(&mut GameState<Ty0, Ty1>, address, u64)
36CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
37ImmBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
38CopyLoc[10](loc7: address)
39Call table::borrow<address, PlayerTank>(&Table<address, PlayerTank>, address): &PlayerTank
40StLoc[14](loc11: &PlayerTank)
41CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
42FreezeRef
43MoveLoc[14](loc11: &PlayerTank)
44CopyLoc[10](loc7: address)
45CopyLoc[7](loc4: u64)
46Call calculate_pending_rewards_v2<Ty0, Ty1>(&GameState<Ty0, Ty1>, &PlayerTank, address, u64): u64
47StLoc[8](loc5: u64)
48CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
49MutBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
50CopyLoc[10](loc7: address)
51Call table::borrow_mut<address, PlayerTank>(&mut Table<address, PlayerTank>, address): &mut PlayerTank
52StLoc[13](loc10: &mut PlayerTank)
53CopyLoc[8](loc5: u64)
54LdU64(0)
55Gt
56BrFalse(65)
B7:
57CopyLoc[13](loc10: &mut PlayerTank)
58ImmBorrowField[25](PlayerTank.unclaimed_rewards: u64)
59ReadRef
60MoveLoc[8](loc5: u64)
61Add
62CopyLoc[13](loc10: &mut PlayerTank)
63MutBorrowField[25](PlayerTank.unclaimed_rewards: u64)
64WriteRef
B8:
65MoveLoc[7](loc4: u64)
66MoveLoc[13](loc10: &mut PlayerTank)
67MutBorrowField[3](PlayerTank.last_claim_time: u64)
68WriteRef
69CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
70MutBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
71CopyLoc[10](loc7: address)
72Call table::borrow_mut<address, PlayerTank>(&mut Table<address, PlayerTank>, address): &mut PlayerTank
73StLoc[11](loc8: &mut PlayerTank)
74CopyLoc[11](loc8: &mut PlayerTank)
75ImmBorrowField[15](PlayerTank.staked_bubbler_ids: vector<u64>)
76ReadRef
77StLoc[5](loc2: vector<u64>)
78VecPack(1, 0)
79MoveLoc[11](loc8: &mut PlayerTank)
80MutBorrowField[15](PlayerTank.staked_bubbler_ids: vector<u64>)
81WriteRef
82LdU64(0)
83StLoc[15](loc12: u64)
84LdU64(0)
85StLoc[16](loc13: u64)
86LdU64(0)
87StLoc[4](loc1: u64)
88ImmBorrowLoc[5](loc2: vector<u64>)
89VecLen(1)
90StLoc[6](loc3: u64)
B9:
91CopyLoc[4](loc1: u64)
92CopyLoc[6](loc3: u64)
93Lt
94BrFalse(140)
B10:
95ImmBorrowLoc[5](loc2: vector<u64>)
96CopyLoc[4](loc1: u64)
97VecImmBorrow(1)
98ReadRef
99StLoc[3](loc0: u64)
100CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
101ImmBorrowFieldGeneric[13](GameState.staked_bubblers: Table<u64, StakedBubblerInfo>)
102CopyLoc[3](loc0: u64)
103Call table::contains<u64, StakedBubblerInfo>(&Table<u64, StakedBubblerInfo>, u64): bool
104BrFalse(135)
B11:
105CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
106MutBorrowFieldGeneric[13](GameState.staked_bubblers: Table<u64, StakedBubblerInfo>)
107CopyLoc[3](loc0: u64)
108Call table::remove<u64, StakedBubblerInfo>(&mut Table<u64, StakedBubblerInfo>, u64): StakedBubblerInfo
109StLoc[9](loc6: StakedBubblerInfo)
110MoveLoc[15](loc12: u64)
111ImmBorrowLoc[9](loc6: StakedBubblerInfo)
112ImmBorrowField[29](StakedBubblerInfo.bubble_pressure: u64)
113ReadRef
114Add
115StLoc[15](loc12: u64)
116MoveLoc[16](loc13: u64)
117ImmBorrowLoc[9](loc6: StakedBubblerInfo)
118ImmBorrowField[30](StakedBubblerInfo.tank_pressure: u64)
119ReadRef
120Add
121StLoc[16](loc13: u64)
122CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
123MutBorrowFieldGeneric[14](GameState.staked_bubbler_objects: Table<u64, BubbleGenerator>)
124CopyLoc[3](loc0: u64)
125Call table::remove<u64, BubbleGenerator>(&mut Table<u64, BubbleGenerator>, u64): BubbleGenerator
126CopyLoc[10](loc7: address)
127Call transfer::public_transfer<BubbleGenerator>(BubbleGenerator, address)
128CopyLoc[10](loc7: address)
129MoveLoc[3](loc0: u64)
130ImmBorrowLoc[9](loc6: StakedBubblerInfo)
131ImmBorrowField[31](StakedBubblerInfo.tier: u8)
132ReadRef
133Pack[16](BubblerUnstaked)
134Call event::emit<BubblerUnstaked>(BubblerUnstaked)
B12:
135MoveLoc[4](loc1: u64)
136LdU64(1)
137Add
138StLoc[4](loc1: u64)
139Branch(91)
B13:
140CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
141MutBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
142MoveLoc[10](loc7: address)
143Call table::borrow_mut<address, PlayerTank>(&mut Table<address, PlayerTank>, address): &mut PlayerTank
144StLoc[12](loc9: &mut PlayerTank)
145CopyLoc[12](loc9: &mut PlayerTank)
146ImmBorrowField[1](PlayerTank.total_pressure: u64)
147ReadRef
148CopyLoc[15](loc12: u64)
149Sub
150CopyLoc[12](loc9: &mut PlayerTank)
151MutBorrowField[1](PlayerTank.total_pressure: u64)
152WriteRef
153CopyLoc[12](loc9: &mut PlayerTank)
154ImmBorrowField[26](PlayerTank.total_tank_pressure: u64)
155ReadRef
156MoveLoc[16](loc13: u64)
157Sub
158MoveLoc[12](loc9: &mut PlayerTank)
159MutBorrowField[26](PlayerTank.total_tank_pressure: u64)
160WriteRef
161CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
162ImmBorrowFieldGeneric[1](GameState.total_network_pressure: u64)
163ReadRef
164MoveLoc[15](loc12: u64)
165Sub
166MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
167MutBorrowFieldGeneric[1](GameState.total_network_pressure: u64)
168WriteRef
169Ret
}
entry claim_rewards<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: &mut MintVault<Ty0>, Arg2: &Clock, Arg3: &mut TxContext) {
L4: loc0: u64
L5: loc1: bool
L6: loc2: u64
L7: loc3: u64
L8: loc4: u64
L9: loc5: bool
L10: loc6: u64
L11: loc7: u64
L12: loc8: u64
L13: loc9: address
L14: loc10: u64
L15: loc11: u64
L16: loc12: u64
L17: loc13: u64
L18: loc14: u64
L19: loc15: address
L20: loc16: &PlayerTank
L21: loc17: &mut PlayerTank
L22: loc18: u64
L23: loc19: u64
B0:
0CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
1ImmBorrowFieldGeneric[7](GameState.paused: bool)
2ReadRef
3Not
4BrFalse(6)
B1:
5Branch(16)
B2:
6MoveLoc[1](Arg1: &mut MintVault<Ty0>)
7Pop
8MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
9Pop
10MoveLoc[3](Arg3: &mut TxContext)
11Pop
12MoveLoc[2](Arg2: &Clock)
13Pop
14LdConst[4](u64: 6)
15Abort
B3:
16CopyLoc[3](Arg3: &mut TxContext)
17FreezeRef
18Call tx_context::sender(&TxContext): address
19StLoc[19](loc15: address)
20CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
21ImmBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
22CopyLoc[19](loc15: address)
23Call table::contains<address, PlayerTank>(&Table<address, PlayerTank>, address): bool
24BrFalse(26)
B4:
25Branch(36)
B5:
26MoveLoc[1](Arg1: &mut MintVault<Ty0>)
27Pop
28MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
29Pop
30MoveLoc[3](Arg3: &mut TxContext)
31Pop
32MoveLoc[2](Arg2: &Clock)
33Pop
34LdConst[8](u64: 10)
35Abort
B6:
36MoveLoc[2](Arg2: &Clock)
37Call clock::timestamp_ms(&Clock): u64
38StLoc[10](loc6: u64)
39CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
40CopyLoc[19](loc15: address)
41CopyLoc[10](loc6: u64)
42Call ensure_repair_record<Ty0, Ty1>(&mut GameState<Ty0, Ty1>, address, u64)
43CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
44ImmBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
45CopyLoc[19](loc15: address)
46Call table::borrow<address, PlayerTank>(&Table<address, PlayerTank>, address): &PlayerTank
47StLoc[20](loc16: &PlayerTank)
48CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
49FreezeRef
50CopyLoc[20](loc16: &PlayerTank)
51CopyLoc[19](loc15: address)
52CopyLoc[10](loc6: u64)
53Call calculate_pending_rewards_v2<Ty0, Ty1>(&GameState<Ty0, Ty1>, &PlayerTank, address, u64): u64
54StLoc[11](loc7: u64)
55CopyLoc[20](loc16: &PlayerTank)
56ImmBorrowField[25](PlayerTank.unclaimed_rewards: u64)
57ReadRef
58StLoc[23](loc19: u64)
59MoveLoc[11](loc7: u64)
60MoveLoc[23](loc19: u64)
61Add
62StLoc[17](loc13: u64)
63CopyLoc[17](loc13: u64)
64LdU64(0)
65Gt
66BrFalse(68)
B7:
67Branch(78)
B8:
68MoveLoc[1](Arg1: &mut MintVault<Ty0>)
69Pop
70MoveLoc[20](loc16: &PlayerTank)
71Pop
72MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
73Pop
74MoveLoc[3](Arg3: &mut TxContext)
75Pop
76LdConst[17](u64: 20)
77Abort
B9:
78LdConst[26](u64: 2000..)
79CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
80ImmBorrowFieldGeneric[2](GameState.total_minted: u64)
81ReadRef
82Sub
83StLoc[16](loc12: u64)
84CopyLoc[17](loc13: u64)
85CopyLoc[16](loc12: u64)
86Gt
87BrFalse(91)
B10:
88MoveLoc[16](loc12: u64)
89StLoc[4](loc0: u64)
90Branch(93)
B11:
91MoveLoc[17](loc13: u64)
92StLoc[4](loc0: u64)
B12:
93MoveLoc[4](loc0: u64)
94StLoc[18](loc14: u64)
95CopyLoc[20](loc16: &PlayerTank)
96ImmBorrowField[32](PlayerTank.has_referrer: bool)
97ReadRef
98StLoc[9](loc5: bool)
99MoveLoc[20](loc16: &PlayerTank)
100ImmBorrowField[33](PlayerTank.referrer: address)
101ReadRef
102StLoc[13](loc9: address)
103CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
104FreezeRef
105CopyLoc[19](loc15: address)
106CopyLoc[10](loc6: u64)
107Call get_player_fee_bps<Ty0, Ty1>(&GameState<Ty0, Ty1>, address, u64): u64
108StLoc[22](loc18: u64)
109MoveLoc[9](loc5: bool)
110BrFalse(116)
B13:
111CopyLoc[22](loc18: u64)
112LdConst[29](u64: 250)
113Gt
114StLoc[5](loc1: bool)
115Branch(118)
B14:
116LdFalse
117StLoc[5](loc1: bool)
B15:
118MoveLoc[5](loc1: bool)
119BrFalse(123)
B16:
120LdConst[29](u64: 250)
121StLoc[6](loc2: u64)
122Branch(125)
B17:
123LdU64(0)
124StLoc[6](loc2: u64)
B18:
125MoveLoc[6](loc2: u64)
126StLoc[15](loc11: u64)
127MoveLoc[22](loc18: u64)
128CopyLoc[15](loc11: u64)
129Sub
130StLoc[8](loc4: u64)
131CopyLoc[18](loc14: u64)
132CastU128
133MoveLoc[8](loc4: u64)
134CastU128
135Mul
136LdConst[31](u64: 10000)
137CastU128
138Div
139CastU64
140StLoc[7](loc3: u64)
141CopyLoc[18](loc14: u64)
142CastU128
143MoveLoc[15](loc11: u64)
144CastU128
145Mul
146LdConst[31](u64: 10000)
147CastU128
148Div
149CastU64
150StLoc[14](loc10: u64)
151CopyLoc[18](loc14: u64)
152CopyLoc[7](loc3: u64)
153Sub
154CopyLoc[14](loc10: u64)
155Sub
156StLoc[12](loc8: u64)
157CopyLoc[1](Arg1: &mut MintVault<Ty0>)
158MutBorrowFieldGeneric[15](MintVault.treasury_cap: TreasuryCap<Ty0>)
159CopyLoc[7](loc3: u64)
160CopyLoc[3](Arg3: &mut TxContext)
161Call coin::mint<Ty0>(&mut TreasuryCap<Ty0>, u64, &mut TxContext): Coin<Ty0>
162LdConst[98](address: 0x00..)
163Call transfer::public_transfer<Coin<Ty0>>(Coin<Ty0>, address)
164CopyLoc[1](Arg1: &mut MintVault<Ty0>)
165MutBorrowFieldGeneric[15](MintVault.treasury_cap: TreasuryCap<Ty0>)
166CopyLoc[12](loc8: u64)
167CopyLoc[3](Arg3: &mut TxContext)
168Call coin::mint<Ty0>(&mut TreasuryCap<Ty0>, u64, &mut TxContext): Coin<Ty0>
169CopyLoc[19](loc15: address)
170Call transfer::public_transfer<Coin<Ty0>>(Coin<Ty0>, address)
171CopyLoc[14](loc10: u64)
172LdU64(0)
173Gt
174BrFalse(183)
B19:
175MoveLoc[1](Arg1: &mut MintVault<Ty0>)
176MutBorrowFieldGeneric[15](MintVault.treasury_cap: TreasuryCap<Ty0>)
177CopyLoc[14](loc10: u64)
178MoveLoc[3](Arg3: &mut TxContext)
179Call coin::mint<Ty0>(&mut TreasuryCap<Ty0>, u64, &mut TxContext): Coin<Ty0>
180MoveLoc[13](loc9: address)
181Call transfer::public_transfer<Coin<Ty0>>(Coin<Ty0>, address)
182Branch(187)
B20:
183MoveLoc[1](Arg1: &mut MintVault<Ty0>)
184Pop
185MoveLoc[3](Arg3: &mut TxContext)
186Pop
B21:
187CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
188ImmBorrowFieldGeneric[2](GameState.total_minted: u64)
189ReadRef
190MoveLoc[18](loc14: u64)
191Add
192CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
193MutBorrowFieldGeneric[2](GameState.total_minted: u64)
194WriteRef
195CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
196ImmBorrowFieldGeneric[16](GameState.total_burned: u64)
197ReadRef
198CopyLoc[7](loc3: u64)
199Add
200CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
201MutBorrowFieldGeneric[16](GameState.total_burned: u64)
202WriteRef
203MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
204MutBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
205CopyLoc[19](loc15: address)
206Call table::borrow_mut<address, PlayerTank>(&mut Table<address, PlayerTank>, address): &mut PlayerTank
207StLoc[21](loc17: &mut PlayerTank)
208MoveLoc[10](loc6: u64)
209CopyLoc[21](loc17: &mut PlayerTank)
210MutBorrowField[3](PlayerTank.last_claim_time: u64)
211WriteRef
212CopyLoc[21](loc17: &mut PlayerTank)
213ImmBorrowField[35](PlayerTank.total_earned: u64)
214ReadRef
215CopyLoc[12](loc8: u64)
216Add
217CopyLoc[21](loc17: &mut PlayerTank)
218MutBorrowField[35](PlayerTank.total_earned: u64)
219WriteRef
220LdU64(0)
221MoveLoc[21](loc17: &mut PlayerTank)
222MutBorrowField[25](PlayerTank.unclaimed_rewards: u64)
223WriteRef
224MoveLoc[19](loc15: address)
225MoveLoc[12](loc8: u64)
226MoveLoc[7](loc3: u64)
227MoveLoc[14](loc10: u64)
228Pack[17](RewardsClaimed)
229Call event::emit<RewardsClaimed>(RewardsClaimed)
230Ret
}
entry upgrade_stat<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: u8, Arg2: Coin<Ty0>, Arg3: Coin<Ty1>, Arg4: Coin<SUI>, Arg5: &mut TxContext) {
L6: loc0: u64
L7: loc1: u8
L8: loc2: &mut u8
L9: loc3: address
B0:
0CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
1ImmBorrowFieldGeneric[7](GameState.paused: bool)
2ReadRef
3Not
4BrFalse(6)
B1:
5Branch(12)
B2:
6MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
7Pop
8MoveLoc[5](Arg5: &mut TxContext)
9Pop
10LdConst[4](u64: 6)
11Abort
B3:
12CopyLoc[1](Arg1: u8)
13LdU8(5)
14Lt
15BrFalse(17)
B4:
16Branch(23)
B5:
17MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
18Pop
19MoveLoc[5](Arg5: &mut TxContext)
20Pop
21LdConst[0](u64: 1)
22Abort
B6:
23CopyLoc[5](Arg5: &mut TxContext)
24FreezeRef
25Call tx_context::sender(&TxContext): address
26StLoc[9](loc3: address)
27CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
28ImmBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
29CopyLoc[9](loc3: address)
30Call table::contains<address, PlayerTank>(&Table<address, PlayerTank>, address): bool
31BrFalse(33)
B7:
32Branch(39)
B8:
33MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
34Pop
35MoveLoc[5](Arg5: &mut TxContext)
36Pop
37LdConst[8](u64: 10)
38Abort
B9:
39CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
40ImmBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
41CopyLoc[9](loc3: address)
42Call table::borrow<address, PlayerTank>(&Table<address, PlayerTank>, address): &PlayerTank
43ImmBorrowField[5](PlayerTank.upgrade_levels: vector<u8>)
44CopyLoc[1](Arg1: u8)
45CastU64
46VecImmBorrow(0)
47ReadRef
48StLoc[7](loc1: u8)
49CopyLoc[7](loc1: u8)
50LdConst[33](u8: 5)
51Lt
52BrFalse(54)
B10:
53Branch(60)
B11:
54MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
55Pop
56MoveLoc[5](Arg5: &mut TxContext)
57Pop
58LdConst[10](u64: 13)
59Abort
B12:
60CopyLoc[1](Arg1: u8)
61MoveLoc[7](loc1: u8)
62Call get_upgrade_bub_cost(u8, u8): u64
63StLoc[6](loc0: u64)
64MoveLoc[2](Arg2: Coin<Ty0>)
65MoveLoc[6](loc0: u64)
66CopyLoc[5](Arg5: &mut TxContext)
67Call process_bub_payment<Ty0>(Coin<Ty0>, u64, &mut TxContext): Balance<Ty0>
68CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
69CopyLoc[5](Arg5: &mut TxContext)
70Call burn_bub_payment<Ty0, Ty0, Ty1>(Balance<Ty0>, &mut GameState<Ty0, Ty1>, &mut TxContext)
71MoveLoc[3](Arg3: Coin<Ty1>)
72LdU64(25000000000000)
73CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
74CopyLoc[5](Arg5: &mut TxContext)
75Call process_bublz_payment<Ty1, Ty0, Ty1>(Coin<Ty1>, u64, &mut GameState<Ty0, Ty1>, &mut TxContext)
76MoveLoc[4](Arg4: Coin<SUI>)
77LdU64(2000000000)
78CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
79MoveLoc[5](Arg5: &mut TxContext)
80Call process_sui_payment<Ty0, Ty1>(Coin<SUI>, u64, &mut GameState<Ty0, Ty1>, &mut TxContext)
81MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
82MutBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
83CopyLoc[9](loc3: address)
84Call table::borrow_mut<address, PlayerTank>(&mut Table<address, PlayerTank>, address): &mut PlayerTank
85MutBorrowField[5](PlayerTank.upgrade_levels: vector<u8>)
86CopyLoc[1](Arg1: u8)
87CastU64
88VecMutBorrow(0)
89StLoc[8](loc2: &mut u8)
90CopyLoc[8](loc2: &mut u8)
91ReadRef
92LdU8(1)
93Add
94CopyLoc[8](loc2: &mut u8)
95WriteRef
96MoveLoc[9](loc3: address)
97MoveLoc[1](Arg1: u8)
98MoveLoc[8](loc2: &mut u8)
99ReadRef
100Pack[18](StatUpgraded)
101Call event::emit<StatUpgraded>(StatUpgraded)
102Ret
}
entry set_referral<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: address, Arg2: &TxContext) {
L3: loc0: address
L4: loc1: &mut PlayerTank
B0:
0CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
1ImmBorrowFieldGeneric[7](GameState.paused: bool)
2ReadRef
3Not
4BrFalse(6)
B1:
5Branch(12)
B2:
6MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
7Pop
8MoveLoc[2](Arg2: &TxContext)
9Pop
10LdConst[4](u64: 6)
11Abort
B3:
12MoveLoc[2](Arg2: &TxContext)
13Call tx_context::sender(&TxContext): address
14StLoc[3](loc0: address)
15CopyLoc[3](loc0: address)
16CopyLoc[1](Arg1: address)
17Neq
18BrFalse(20)
B4:
19Branch(24)
B5:
20MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
21Pop
22LdConst[7](u64: 9)
23Abort
B6:
24CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
25ImmBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
26CopyLoc[3](loc0: address)
27Call table::contains<address, PlayerTank>(&Table<address, PlayerTank>, address): bool
28BrFalse(30)
B7:
29Branch(34)
B8:
30MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
31Pop
32LdConst[8](u64: 10)
33Abort
B9:
34CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
35ImmBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
36CopyLoc[1](Arg1: address)
37Call table::contains<address, PlayerTank>(&Table<address, PlayerTank>, address): bool
38BrFalse(40)
B10:
39Branch(44)
B11:
40MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
41Pop
42LdConst[21](u64: 24)
43Abort
B12:
44MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
45MutBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
46MoveLoc[3](loc0: address)
47Call table::borrow_mut<address, PlayerTank>(&mut Table<address, PlayerTank>, address): &mut PlayerTank
48StLoc[4](loc1: &mut PlayerTank)
49CopyLoc[4](loc1: &mut PlayerTank)
50ImmBorrowField[32](PlayerTank.has_referrer: bool)
51ReadRef
52Not
53BrFalse(55)
B13:
54Branch(59)
B14:
55MoveLoc[4](loc1: &mut PlayerTank)
56Pop
57LdConst[6](u64: 8)
58Abort
B15:
59MoveLoc[1](Arg1: address)
60CopyLoc[4](loc1: &mut PlayerTank)
61MutBorrowField[33](PlayerTank.referrer: address)
62WriteRef
63LdTrue
64MoveLoc[4](loc1: &mut PlayerTank)
65MutBorrowField[32](PlayerTank.has_referrer: bool)
66WriteRef
67Ret
}
entry mint_cosmetic<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: u64, Arg2: Coin<Ty0>, Arg3: Coin<Ty1>, Arg4: Coin<SUI>, Arg5: &mut TxContext) {
L6: loc0: u64
L7: loc1: u64
L8: loc2: u64
L9: loc3: &mut CosmeticType
L10: loc4: String
L11: loc5: u64
L12: loc6: String
L13: loc7: u64
B0:
0CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
1ImmBorrowFieldGeneric[7](GameState.paused: bool)
2ReadRef
3Not
4BrFalse(6)
B1:
5Branch(12)
B2:
6MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
7Pop
8MoveLoc[5](Arg5: &mut TxContext)
9Pop
10LdConst[4](u64: 6)
11Abort
B3:
12CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
13ImmBorrowFieldGeneric[17](GameState.cosmetic_types: Table<u64, CosmeticType>)
14CopyLoc[1](Arg1: u64)
15Call table::contains<u64, CosmeticType>(&Table<u64, CosmeticType>, u64): bool
16BrFalse(18)
B4:
17Branch(24)
B5:
18MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
19Pop
20MoveLoc[5](Arg5: &mut TxContext)
21Pop
22LdConst[0](u64: 1)
23Abort
B6:
24CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
25MutBorrowFieldGeneric[17](GameState.cosmetic_types: Table<u64, CosmeticType>)
26CopyLoc[1](Arg1: u64)
27Call table::borrow_mut<u64, CosmeticType>(&mut Table<u64, CosmeticType>, u64): &mut CosmeticType
28StLoc[9](loc3: &mut CosmeticType)
29CopyLoc[9](loc3: &mut CosmeticType)
30ImmBorrowField[37](CosmeticType.disabled: bool)
31ReadRef
32Not
33BrFalse(35)
B7:
34Branch(43)
B8:
35MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
36Pop
37MoveLoc[5](Arg5: &mut TxContext)
38Pop
39MoveLoc[9](loc3: &mut CosmeticType)
40Pop
41LdConst[11](u64: 14)
42Abort
B9:
43CopyLoc[9](loc3: &mut CosmeticType)
44ImmBorrowField[38](CosmeticType.minted: u64)
45ReadRef
46CopyLoc[9](loc3: &mut CosmeticType)
47ImmBorrowField[39](CosmeticType.max_supply: u64)
48ReadRef
49Lt
50BrFalse(52)
B10:
51Branch(60)
B11:
52MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
53Pop
54MoveLoc[5](Arg5: &mut TxContext)
55Pop
56MoveLoc[9](loc3: &mut CosmeticType)
57Pop
58LdConst[12](u64: 15)
59Abort
B12:
60CopyLoc[9](loc3: &mut CosmeticType)
61ImmBorrowField[40](CosmeticType.bub_cost: u64)
62ReadRef
63StLoc[6](loc0: u64)
64CopyLoc[9](loc3: &mut CosmeticType)
65ImmBorrowField[41](CosmeticType.bublz_cost: u64)
66ReadRef
67StLoc[8](loc2: u64)
68CopyLoc[9](loc3: &mut CosmeticType)
69ImmBorrowField[42](CosmeticType.sui_cost: u64)
70ReadRef
71StLoc[13](loc7: u64)
72CopyLoc[9](loc3: &mut CosmeticType)
73ImmBorrowField[43](CosmeticType.name: String)
74ReadRef
75StLoc[12](loc6: String)
76CopyLoc[9](loc3: &mut CosmeticType)
77ImmBorrowField[44](CosmeticType.image_url: String)
78ReadRef
79StLoc[10](loc4: String)
80CopyLoc[9](loc3: &mut CosmeticType)
81ImmBorrowField[45](CosmeticType.bubble_pressure: u64)
82ReadRef
83StLoc[7](loc1: u64)
84CopyLoc[9](loc3: &mut CosmeticType)
85ImmBorrowField[38](CosmeticType.minted: u64)
86ReadRef
87LdU64(1)
88Add
89MoveLoc[9](loc3: &mut CosmeticType)
90MutBorrowField[38](CosmeticType.minted: u64)
91WriteRef
92CopyLoc[6](loc0: u64)
93LdU64(0)
94Gt
95BrFalse(104)
B13:
96MoveLoc[2](Arg2: Coin<Ty0>)
97MoveLoc[6](loc0: u64)
98CopyLoc[5](Arg5: &mut TxContext)
99Call process_bub_payment<Ty0>(Coin<Ty0>, u64, &mut TxContext): Balance<Ty0>
100CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
101CopyLoc[5](Arg5: &mut TxContext)
102Call burn_bub_payment<Ty0, Ty0, Ty1>(Balance<Ty0>, &mut GameState<Ty0, Ty1>, &mut TxContext)
103Branch(109)
B14:
104MoveLoc[2](Arg2: Coin<Ty0>)
105CopyLoc[5](Arg5: &mut TxContext)
106FreezeRef
107Call tx_context::sender(&TxContext): address
108Call transfer::public_transfer<Coin<Ty0>>(Coin<Ty0>, address)
B15:
109MoveLoc[3](Arg3: Coin<Ty1>)
110MoveLoc[8](loc2: u64)
111CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
112CopyLoc[5](Arg5: &mut TxContext)
113Call process_bublz_payment<Ty1, Ty0, Ty1>(Coin<Ty1>, u64, &mut GameState<Ty0, Ty1>, &mut TxContext)
114MoveLoc[4](Arg4: Coin<SUI>)
115MoveLoc[13](loc7: u64)
116CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
117CopyLoc[5](Arg5: &mut TxContext)
118Call process_sui_payment<Ty0, Ty1>(Coin<SUI>, u64, &mut GameState<Ty0, Ty1>, &mut TxContext)
119CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
120ImmBorrowFieldGeneric[18](GameState.next_cosmetic_instance_id: u64)
121ReadRef
122StLoc[11](loc5: u64)
123CopyLoc[11](loc5: u64)
124LdU64(1)
125Add
126MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
127MutBorrowFieldGeneric[18](GameState.next_cosmetic_instance_id: u64)
128WriteRef
129CopyLoc[5](Arg5: &mut TxContext)
130Call object::new(&mut TxContext): UID
131MoveLoc[11](loc5: u64)
132CopyLoc[1](Arg1: u64)
133CopyLoc[12](loc6: String)
134MoveLoc[7](loc1: u64)
135MoveLoc[10](loc4: String)
136CopyLoc[12](loc6: String)
137Call make_cosmetic_attrs(String): VecMap<String, String>
138Pack[10](BubbleCosmetic)
139CopyLoc[5](Arg5: &mut TxContext)
140FreezeRef
141Call tx_context::sender(&TxContext): address
142Call transfer::public_transfer<BubbleCosmetic>(BubbleCosmetic, address)
143MoveLoc[5](Arg5: &mut TxContext)
144FreezeRef
145Call tx_context::sender(&TxContext): address
146MoveLoc[1](Arg1: u64)
147MoveLoc[12](loc6: String)
148Pack[19](CosmeticMinted)
149Call event::emit<CosmeticMinted>(CosmeticMinted)
150Ret
}
entry display_cosmetic<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: &BubbleCosmetic, Arg2: &Clock, Arg3: &TxContext) {
L4: loc0: u64
L5: loc1: &CosmeticType
L6: loc2: u64
L7: loc3: u64
L8: loc4: u64
L9: loc5: u64
L10: loc6: u64
L11: loc7: u64
L12: loc8: u64
L13: loc9: address
L14: loc10: &PlayerTank
L15: loc11: &mut PlayerTank
L16: loc12: &mut PlayerTank
L17: loc13: &PlayerTank
B0:
0CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
1ImmBorrowFieldGeneric[7](GameState.paused: bool)
2ReadRef
3Not
4BrFalse(6)
B1:
5Branch(16)
B2:
6MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
7Pop
8MoveLoc[3](Arg3: &TxContext)
9Pop
10MoveLoc[1](Arg1: &BubbleCosmetic)
11Pop
12MoveLoc[2](Arg2: &Clock)
13Pop
14LdConst[4](u64: 6)
15Abort
B3:
16MoveLoc[3](Arg3: &TxContext)
17Call tx_context::sender(&TxContext): address
18StLoc[13](loc9: address)
19CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
20ImmBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
21CopyLoc[13](loc9: address)
22Call table::contains<address, PlayerTank>(&Table<address, PlayerTank>, address): bool
23BrFalse(25)
B4:
24Branch(33)
B5:
25MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
26Pop
27MoveLoc[1](Arg1: &BubbleCosmetic)
28Pop
29MoveLoc[2](Arg2: &Clock)
30Pop
31LdConst[8](u64: 10)
32Abort
B6:
33MoveLoc[2](Arg2: &Clock)
34Call clock::timestamp_ms(&Clock): u64
35StLoc[11](loc7: u64)
36CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
37CopyLoc[13](loc9: address)
38CopyLoc[11](loc7: u64)
39Call ensure_repair_record<Ty0, Ty1>(&mut GameState<Ty0, Ty1>, address, u64)
40CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
41ImmBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
42CopyLoc[13](loc9: address)
43Call table::borrow<address, PlayerTank>(&Table<address, PlayerTank>, address): &PlayerTank
44StLoc[17](loc13: &PlayerTank)
45CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
46FreezeRef
47MoveLoc[17](loc13: &PlayerTank)
48CopyLoc[13](loc9: address)
49CopyLoc[11](loc7: u64)
50Call calculate_pending_rewards_v2<Ty0, Ty1>(&GameState<Ty0, Ty1>, &PlayerTank, address, u64): u64
51StLoc[12](loc8: u64)
52CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
53MutBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
54CopyLoc[13](loc9: address)
55Call table::borrow_mut<address, PlayerTank>(&mut Table<address, PlayerTank>, address): &mut PlayerTank
56StLoc[16](loc12: &mut PlayerTank)
57CopyLoc[12](loc8: u64)
58LdU64(0)
59Gt
60BrFalse(69)
B7:
61CopyLoc[16](loc12: &mut PlayerTank)
62ImmBorrowField[25](PlayerTank.unclaimed_rewards: u64)
63ReadRef
64MoveLoc[12](loc8: u64)
65Add
66CopyLoc[16](loc12: &mut PlayerTank)
67MutBorrowField[25](PlayerTank.unclaimed_rewards: u64)
68WriteRef
B8:
69MoveLoc[11](loc7: u64)
70MoveLoc[16](loc12: &mut PlayerTank)
71MutBorrowField[3](PlayerTank.last_claim_time: u64)
72WriteRef
73CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
74ImmBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
75CopyLoc[13](loc9: address)
76Call table::borrow<address, PlayerTank>(&Table<address, PlayerTank>, address): &PlayerTank
77StLoc[14](loc10: &PlayerTank)
78CopyLoc[14](loc10: &PlayerTank)
79ImmBorrowField[13](PlayerTank.tier: u8)
80ReadRef
81Call get_tank_cosmetic_slots(u8): u64
82StLoc[10](loc6: u64)
83CopyLoc[14](loc10: &PlayerTank)
84ImmBorrowField[16](PlayerTank.displayed_cosmetic_ids: vector<u64>)
85VecLen(1)
86MoveLoc[10](loc6: u64)
87Lt
88BrFalse(90)
B9:
89Branch(98)
B10:
90MoveLoc[14](loc10: &PlayerTank)
91Pop
92MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
93Pop
94MoveLoc[1](Arg1: &BubbleCosmetic)
95Pop
96LdConst[13](u64: 16)
97Abort
B11:
98CopyLoc[1](Arg1: &BubbleCosmetic)
99ImmBorrowField[47](BubbleCosmetic.cosmetic_instance_id: u64)
100ReadRef
101StLoc[4](loc0: u64)
102CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
103ImmBorrowFieldGeneric[19](GameState.displayed_cosmetics: Table<u64, DisplayedCosmeticInfo>)
104CopyLoc[4](loc0: u64)
105Call table::contains<u64, DisplayedCosmeticInfo>(&Table<u64, DisplayedCosmeticInfo>, u64): bool
106Not
107BrFalse(109)
B12:
108Branch(117)
B13:
109MoveLoc[14](loc10: &PlayerTank)
110Pop
111MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
112Pop
113MoveLoc[1](Arg1: &BubbleCosmetic)
114Pop
115LdConst[16](u64: 19)
116Abort
B14:
117CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
118ImmBorrowFieldGeneric[17](GameState.cosmetic_types: Table<u64, CosmeticType>)
119CopyLoc[1](Arg1: &BubbleCosmetic)
120ImmBorrowField[49](BubbleCosmetic.cosmetic_type_id: u64)
121ReadRef
122Call table::contains<u64, CosmeticType>(&Table<u64, CosmeticType>, u64): bool
123BrFalse(189)
B15:
124CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
125ImmBorrowFieldGeneric[17](GameState.cosmetic_types: Table<u64, CosmeticType>)
126CopyLoc[1](Arg1: &BubbleCosmetic)
127ImmBorrowField[49](BubbleCosmetic.cosmetic_type_id: u64)
128ReadRef
129Call table::borrow<u64, CosmeticType>(&Table<u64, CosmeticType>, u64): &CosmeticType
130StLoc[5](loc1: &CosmeticType)
131LdU64(0)
132StLoc[6](loc2: u64)
133LdU64(0)
134StLoc[8](loc4: u64)
135CopyLoc[14](loc10: &PlayerTank)
136ImmBorrowField[16](PlayerTank.displayed_cosmetic_ids: vector<u64>)
137VecLen(1)
138StLoc[9](loc5: u64)
B16:
139CopyLoc[8](loc4: u64)
140CopyLoc[9](loc5: u64)
141Lt
142BrFalse(174)
B17:
143CopyLoc[14](loc10: &PlayerTank)
144ImmBorrowField[16](PlayerTank.displayed_cosmetic_ids: vector<u64>)
145CopyLoc[8](loc4: u64)
146VecImmBorrow(1)
147ReadRef
148StLoc[7](loc3: u64)
149CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
150ImmBorrowFieldGeneric[19](GameState.displayed_cosmetics: Table<u64, DisplayedCosmeticInfo>)
151CopyLoc[7](loc3: u64)
152Call table::contains<u64, DisplayedCosmeticInfo>(&Table<u64, DisplayedCosmeticInfo>, u64): bool
153BrFalse(169)
B18:
154CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
155ImmBorrowFieldGeneric[19](GameState.displayed_cosmetics: Table<u64, DisplayedCosmeticInfo>)
156MoveLoc[7](loc3: u64)
157Call table::borrow<u64, DisplayedCosmeticInfo>(&Table<u64, DisplayedCosmeticInfo>, u64): &DisplayedCosmeticInfo
158ImmBorrowField[50](DisplayedCosmeticInfo.cosmetic_type_id: u64)
159ReadRef
160CopyLoc[1](Arg1: &BubbleCosmetic)
161ImmBorrowField[49](BubbleCosmetic.cosmetic_type_id: u64)
162ReadRef
163Eq
164BrFalse(169)
B19:
165MoveLoc[6](loc2: u64)
166LdU64(1)
167Add
168StLoc[6](loc2: u64)
B20:
169MoveLoc[8](loc4: u64)
170LdU64(1)
171Add
172StLoc[8](loc4: u64)
173Branch(139)
B21:
174MoveLoc[14](loc10: &PlayerTank)
175Pop
176MoveLoc[6](loc2: u64)
177MoveLoc[5](loc1: &CosmeticType)
178ImmBorrowField[51](CosmeticType.per_facility: u64)
179ReadRef
180Lt
181BrFalse(183)
B22:
182Branch(191)
B23:
183MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
184Pop
185MoveLoc[1](Arg1: &BubbleCosmetic)
186Pop
187LdConst[14](u64: 17)
188Abort
B24:
189MoveLoc[14](loc10: &PlayerTank)
190Pop
B25:
191CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
192MutBorrowFieldGeneric[19](GameState.displayed_cosmetics: Table<u64, DisplayedCosmeticInfo>)
193CopyLoc[4](loc0: u64)
194CopyLoc[13](loc9: address)
195CopyLoc[1](Arg1: &BubbleCosmetic)
196ImmBorrowField[49](BubbleCosmetic.cosmetic_type_id: u64)
197ReadRef
198CopyLoc[1](Arg1: &BubbleCosmetic)
199ImmBorrowField[52](BubbleCosmetic.bubble_pressure: u64)
200ReadRef
201Pack[8](DisplayedCosmeticInfo)
202Call table::add<u64, DisplayedCosmeticInfo>(&mut Table<u64, DisplayedCosmeticInfo>, u64, DisplayedCosmeticInfo)
203CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
204MutBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
205MoveLoc[13](loc9: address)
206Call table::borrow_mut<address, PlayerTank>(&mut Table<address, PlayerTank>, address): &mut PlayerTank
207StLoc[15](loc11: &mut PlayerTank)
208CopyLoc[15](loc11: &mut PlayerTank)
209MutBorrowField[16](PlayerTank.displayed_cosmetic_ids: vector<u64>)
210MoveLoc[4](loc0: u64)
211VecPushBack(1)
212CopyLoc[15](loc11: &mut PlayerTank)
213ImmBorrowField[1](PlayerTank.total_pressure: u64)
214ReadRef
215CopyLoc[1](Arg1: &BubbleCosmetic)
216ImmBorrowField[52](BubbleCosmetic.bubble_pressure: u64)
217ReadRef
218Add
219MoveLoc[15](loc11: &mut PlayerTank)
220MutBorrowField[1](PlayerTank.total_pressure: u64)
221WriteRef
222CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
223ImmBorrowFieldGeneric[1](GameState.total_network_pressure: u64)
224ReadRef
225MoveLoc[1](Arg1: &BubbleCosmetic)
226ImmBorrowField[52](BubbleCosmetic.bubble_pressure: u64)
227ReadRef
228Add
229MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
230MutBorrowFieldGeneric[1](GameState.total_network_pressure: u64)
231WriteRef
232Ret
}
entry remove_cosmetic<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: &BubbleCosmetic, Arg2: &Clock, Arg3: &TxContext) {
L4: loc0: u64
L5: loc1: u64
L6: loc2: u64
L7: loc3: u64
L8: loc4: address
L9: loc5: u64
L10: loc6: DisplayedCosmeticInfo
L11: loc7: address
L12: loc8: &mut PlayerTank
L13: loc9: &mut PlayerTank
L14: loc10: &PlayerTank
B0:
0CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
1ImmBorrowFieldGeneric[7](GameState.paused: bool)
2ReadRef
3Not
4BrFalse(6)
B1:
5Branch(16)
B2:
6MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
7Pop
8MoveLoc[3](Arg3: &TxContext)
9Pop
10MoveLoc[1](Arg1: &BubbleCosmetic)
11Pop
12MoveLoc[2](Arg2: &Clock)
13Pop
14LdConst[4](u64: 6)
15Abort
B3:
16MoveLoc[3](Arg3: &TxContext)
17Call tx_context::sender(&TxContext): address
18StLoc[11](loc7: address)
19MoveLoc[1](Arg1: &BubbleCosmetic)
20ImmBorrowField[47](BubbleCosmetic.cosmetic_instance_id: u64)
21ReadRef
22StLoc[4](loc0: u64)
23CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
24ImmBorrowFieldGeneric[19](GameState.displayed_cosmetics: Table<u64, DisplayedCosmeticInfo>)
25CopyLoc[4](loc0: u64)
26Call table::contains<u64, DisplayedCosmeticInfo>(&Table<u64, DisplayedCosmeticInfo>, u64): bool
27BrFalse(29)
B4:
28Branch(35)
B5:
29MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
30Pop
31MoveLoc[2](Arg2: &Clock)
32Pop
33LdConst[15](u64: 18)
34Abort
B6:
35CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
36ImmBorrowFieldGeneric[19](GameState.displayed_cosmetics: Table<u64, DisplayedCosmeticInfo>)
37CopyLoc[4](loc0: u64)
38Call table::borrow<u64, DisplayedCosmeticInfo>(&Table<u64, DisplayedCosmeticInfo>, u64): &DisplayedCosmeticInfo
39ImmBorrowField[53](DisplayedCosmeticInfo.owner: address)
40ReadRef
41MoveLoc[11](loc7: address)
42Eq
43BrFalse(45)
B7:
44Branch(51)
B8:
45MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
46Pop
47MoveLoc[2](Arg2: &Clock)
48Pop
49LdConst[3](u64: 4)
50Abort
B9:
51CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
52MutBorrowFieldGeneric[19](GameState.displayed_cosmetics: Table<u64, DisplayedCosmeticInfo>)
53CopyLoc[4](loc0: u64)
54Call table::remove<u64, DisplayedCosmeticInfo>(&mut Table<u64, DisplayedCosmeticInfo>, u64): DisplayedCosmeticInfo
55StLoc[10](loc6: DisplayedCosmeticInfo)
56ImmBorrowLoc[10](loc6: DisplayedCosmeticInfo)
57ImmBorrowField[53](DisplayedCosmeticInfo.owner: address)
58ReadRef
59StLoc[8](loc4: address)
60MoveLoc[2](Arg2: &Clock)
61Call clock::timestamp_ms(&Clock): u64
62StLoc[7](loc3: u64)
63CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
64CopyLoc[8](loc4: address)
65CopyLoc[7](loc3: u64)
66Call ensure_repair_record<Ty0, Ty1>(&mut GameState<Ty0, Ty1>, address, u64)
67CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
68ImmBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
69CopyLoc[8](loc4: address)
70Call table::borrow<address, PlayerTank>(&Table<address, PlayerTank>, address): &PlayerTank
71StLoc[14](loc10: &PlayerTank)
72CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
73FreezeRef
74MoveLoc[14](loc10: &PlayerTank)
75CopyLoc[8](loc4: address)
76CopyLoc[7](loc3: u64)
77Call calculate_pending_rewards_v2<Ty0, Ty1>(&GameState<Ty0, Ty1>, &PlayerTank, address, u64): u64
78StLoc[9](loc5: u64)
79CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
80MutBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
81CopyLoc[8](loc4: address)
82Call table::borrow_mut<address, PlayerTank>(&mut Table<address, PlayerTank>, address): &mut PlayerTank
83StLoc[13](loc9: &mut PlayerTank)
84CopyLoc[9](loc5: u64)
85LdU64(0)
86Gt
87BrFalse(96)
B10:
88CopyLoc[13](loc9: &mut PlayerTank)
89ImmBorrowField[25](PlayerTank.unclaimed_rewards: u64)
90ReadRef
91MoveLoc[9](loc5: u64)
92Add
93CopyLoc[13](loc9: &mut PlayerTank)
94MutBorrowField[25](PlayerTank.unclaimed_rewards: u64)
95WriteRef
B11:
96MoveLoc[7](loc3: u64)
97MoveLoc[13](loc9: &mut PlayerTank)
98MutBorrowField[3](PlayerTank.last_claim_time: u64)
99WriteRef
100CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
101MutBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
102MoveLoc[8](loc4: address)
103Call table::borrow_mut<address, PlayerTank>(&mut Table<address, PlayerTank>, address): &mut PlayerTank
104StLoc[12](loc8: &mut PlayerTank)
105LdU64(0)
106StLoc[5](loc1: u64)
107CopyLoc[12](loc8: &mut PlayerTank)
108ImmBorrowField[16](PlayerTank.displayed_cosmetic_ids: vector<u64>)
109VecLen(1)
110StLoc[6](loc2: u64)
B12:
111CopyLoc[5](loc1: u64)
112CopyLoc[6](loc2: u64)
113Lt
114BrFalse(135)
B13:
115CopyLoc[12](loc8: &mut PlayerTank)
116ImmBorrowField[16](PlayerTank.displayed_cosmetic_ids: vector<u64>)
117CopyLoc[5](loc1: u64)
118VecImmBorrow(1)
119ReadRef
120CopyLoc[4](loc0: u64)
121Eq
122BrFalse(130)
B14:
123CopyLoc[12](loc8: &mut PlayerTank)
124MutBorrowField[16](PlayerTank.displayed_cosmetic_ids: vector<u64>)
125MoveLoc[5](loc1: u64)
126Call vector::swap_remove<u64>(&mut vector<u64>, u64): u64
127Pop
128CopyLoc[6](loc2: u64)
129StLoc[5](loc1: u64)
B15:
130MoveLoc[5](loc1: u64)
131LdU64(1)
132Add
133StLoc[5](loc1: u64)
134Branch(111)
B16:
135CopyLoc[12](loc8: &mut PlayerTank)
136ImmBorrowField[1](PlayerTank.total_pressure: u64)
137ReadRef
138ImmBorrowLoc[10](loc6: DisplayedCosmeticInfo)
139ImmBorrowField[54](DisplayedCosmeticInfo.bubble_pressure: u64)
140ReadRef
141Sub
142MoveLoc[12](loc8: &mut PlayerTank)
143MutBorrowField[1](PlayerTank.total_pressure: u64)
144WriteRef
145CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
146ImmBorrowFieldGeneric[1](GameState.total_network_pressure: u64)
147ReadRef
148ImmBorrowLoc[10](loc6: DisplayedCosmeticInfo)
149ImmBorrowField[54](DisplayedCosmeticInfo.bubble_pressure: u64)
150ReadRef
151Sub
152MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
153MutBorrowFieldGeneric[1](GameState.total_network_pressure: u64)
154WriteRef
155Ret
}
entry create_cosmetic_type<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: &AdminCap, Arg2: vector<u8>, Arg3: vector<u8>, Arg4: u64, Arg5: u64, Arg6: u64, Arg7: u64, Arg8: u64, Arg9: u64) {
L10: loc0: u64
B0:
0CopyLoc[9](Arg9: u64)
1LdU64(0)
2Gt
3BrFalse(5)
B1:
4Branch(9)
B2:
5MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
6Pop
7LdConst[0](u64: 1)
8Abort
B3:
9CopyLoc[8](Arg8: u64)
10LdU64(0)
11Gt
12BrFalse(14)
B4:
13Branch(18)
B5:
14MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
15Pop
16LdConst[0](u64: 1)
17Abort
B6:
18CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
19ImmBorrowFieldGeneric[20](GameState.next_cosmetic_id: u64)
20ReadRef
21StLoc[10](loc0: u64)
22CopyLoc[10](loc0: u64)
23LdU64(1)
24Add
25CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
26MutBorrowFieldGeneric[20](GameState.next_cosmetic_id: u64)
27WriteRef
28MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
29MutBorrowFieldGeneric[17](GameState.cosmetic_types: Table<u64, CosmeticType>)
30MoveLoc[10](loc0: u64)
31MoveLoc[2](Arg2: vector<u8>)
32Call string::utf8(vector<u8>): String
33MoveLoc[3](Arg3: vector<u8>)
34Call string::utf8(vector<u8>): String
35MoveLoc[4](Arg4: u64)
36MoveLoc[5](Arg5: u64)
37MoveLoc[6](Arg6: u64)
38MoveLoc[7](Arg7: u64)
39MoveLoc[8](Arg8: u64)
40LdU64(0)
41MoveLoc[9](Arg9: u64)
42LdFalse
43Pack[11](CosmeticType)
44Call table::add<u64, CosmeticType>(&mut Table<u64, CosmeticType>, u64, CosmeticType)
45Ret
}
entry admin_update_cosmetic_metadata<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: &AdminCap, Arg2: u64, Arg3: vector<u8>, Arg4: vector<u8>) {
L5: loc0: &mut CosmeticType
B0:
0CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
1ImmBorrowFieldGeneric[17](GameState.cosmetic_types: Table<u64, CosmeticType>)
2CopyLoc[2](Arg2: u64)
3Call table::contains<u64, CosmeticType>(&Table<u64, CosmeticType>, u64): bool
4BrFalse(6)
B1:
5Branch(10)
B2:
6MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
7Pop
8LdConst[0](u64: 1)
9Abort
B3:
10MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
11MutBorrowFieldGeneric[17](GameState.cosmetic_types: Table<u64, CosmeticType>)
12MoveLoc[2](Arg2: u64)
13Call table::borrow_mut<u64, CosmeticType>(&mut Table<u64, CosmeticType>, u64): &mut CosmeticType
14StLoc[5](loc0: &mut CosmeticType)
15MoveLoc[3](Arg3: vector<u8>)
16Call string::utf8(vector<u8>): String
17CopyLoc[5](loc0: &mut CosmeticType)
18MutBorrowField[43](CosmeticType.name: String)
19WriteRef
20MoveLoc[4](Arg4: vector<u8>)
21Call string::utf8(vector<u8>): String
22MoveLoc[5](loc0: &mut CosmeticType)
23MutBorrowField[44](CosmeticType.image_url: String)
24WriteRef
25Ret
}
entry disable_cosmetic<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: &AdminCap, Arg2: u64) {
L3: loc0: &mut CosmeticType
B0:
0MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
1MutBorrowFieldGeneric[17](GameState.cosmetic_types: Table<u64, CosmeticType>)
2MoveLoc[2](Arg2: u64)
3Call table::borrow_mut<u64, CosmeticType>(&mut Table<u64, CosmeticType>, u64): &mut CosmeticType
4StLoc[3](loc0: &mut CosmeticType)
5LdTrue
6MoveLoc[3](loc0: &mut CosmeticType)
7MutBorrowField[37](CosmeticType.disabled: bool)
8WriteRef
9Ret
}
entry enable_cosmetic<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: &AdminCap, Arg2: u64) {
L3: loc0: &mut CosmeticType
B0:
0MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
1MutBorrowFieldGeneric[17](GameState.cosmetic_types: Table<u64, CosmeticType>)
2MoveLoc[2](Arg2: u64)
3Call table::borrow_mut<u64, CosmeticType>(&mut Table<u64, CosmeticType>, u64): &mut CosmeticType
4StLoc[3](loc0: &mut CosmeticType)
5LdFalse
6MoveLoc[3](loc0: &mut CosmeticType)
7MutBorrowField[37](CosmeticType.disabled: bool)
8WriteRef
9Ret
}
entry set_cosmetic_metadata<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: &AdminCap, Arg2: u64, Arg3: vector<u8>, Arg4: vector<u8>) {
L5: loc0: &mut CosmeticType
B0:
0MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
1MutBorrowFieldGeneric[17](GameState.cosmetic_types: Table<u64, CosmeticType>)
2MoveLoc[2](Arg2: u64)
3Call table::borrow_mut<u64, CosmeticType>(&mut Table<u64, CosmeticType>, u64): &mut CosmeticType
4StLoc[5](loc0: &mut CosmeticType)
5MoveLoc[3](Arg3: vector<u8>)
6Call string::utf8(vector<u8>): String
7CopyLoc[5](loc0: &mut CosmeticType)
8MutBorrowField[43](CosmeticType.name: String)
9WriteRef
10MoveLoc[4](Arg4: vector<u8>)
11Call string::utf8(vector<u8>): String
12MoveLoc[5](loc0: &mut CosmeticType)
13MutBorrowField[44](CosmeticType.image_url: String)
14WriteRef
15Ret
}
entry refresh_cosmetic_metadata<Ty0, Ty1>(Arg0: &GameState<Ty0, Ty1>, Arg1: &mut BubbleCosmetic) {
L2: loc0: &CosmeticType
L3: loc1: u64
B0:
0CopyLoc[1](Arg1: &mut BubbleCosmetic)
1ImmBorrowField[49](BubbleCosmetic.cosmetic_type_id: u64)
2ReadRef
3StLoc[3](loc1: u64)
4CopyLoc[0](Arg0: &GameState<Ty0, Ty1>)
5ImmBorrowFieldGeneric[17](GameState.cosmetic_types: Table<u64, CosmeticType>)
6CopyLoc[3](loc1: u64)
7Call table::contains<u64, CosmeticType>(&Table<u64, CosmeticType>, u64): bool
8BrFalse(10)
B1:
9Branch(16)
B2:
10MoveLoc[0](Arg0: &GameState<Ty0, Ty1>)
11Pop
12MoveLoc[1](Arg1: &mut BubbleCosmetic)
13Pop
14LdConst[0](u64: 1)
15Abort
B3:
16MoveLoc[0](Arg0: &GameState<Ty0, Ty1>)
17ImmBorrowFieldGeneric[17](GameState.cosmetic_types: Table<u64, CosmeticType>)
18MoveLoc[3](loc1: u64)
19Call table::borrow<u64, CosmeticType>(&Table<u64, CosmeticType>, u64): &CosmeticType
20StLoc[2](loc0: &CosmeticType)
21CopyLoc[2](loc0: &CosmeticType)
22ImmBorrowField[43](CosmeticType.name: String)
23ReadRef
24CopyLoc[1](Arg1: &mut BubbleCosmetic)
25MutBorrowField[56](BubbleCosmetic.name: String)
26WriteRef
27MoveLoc[2](loc0: &CosmeticType)
28ImmBorrowField[44](CosmeticType.image_url: String)
29ReadRef
30MoveLoc[1](Arg1: &mut BubbleCosmetic)
31MutBorrowField[57](BubbleCosmetic.image_url: String)
32WriteRef
33Ret
}
entry set_bublz_cost<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: &AdminCap, Arg2: u64) {
B0:
0MoveLoc[2](Arg2: u64)
1MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
2MutBorrowFieldGeneric[10](GameState.bublz_cost: u64)
3WriteRef
4Ret
}
entry set_sui_costs<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: &AdminCap, Arg2: vector<u64>) {
B0:
0ImmBorrowLoc[2](Arg2: vector<u64>)
1VecLen(1)
2LdConst[10](u64: 13)
3Eq
4BrFalse(6)
B1:
5Branch(10)
B2:
6MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
7Pop
8LdConst[0](u64: 1)
9Abort
B3:
10MoveLoc[2](Arg2: vector<u64>)
11MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
12MutBorrowFieldGeneric[11](GameState.sui_costs: vector<u64>)
13WriteRef
14Ret
}
entry set_treasury_recipient<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: &AdminCap, Arg2: address) {
B0:
0MoveLoc[2](Arg2: address)
1MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
2MutBorrowFieldGeneric[21](GameState.treasury_recipient: address)
3WriteRef
4Ret
}
entry set_paused<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: &AdminCap, Arg2: bool) {
B0:
0MoveLoc[2](Arg2: bool)
1MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
2MutBorrowFieldGeneric[7](GameState.paused: bool)
3WriteRef
4Ret
}
entry withdraw_sui_treasury<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: &AdminCap, Arg2: &mut TxContext) {
L3: loc0: u64
B0:
0CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
1ImmBorrowFieldGeneric[4](GameState.sui_treasury: Balance<SUI>)
2Call balance::value<SUI>(&Balance<SUI>): u64
3StLoc[3](loc0: u64)
4CopyLoc[3](loc0: u64)
5LdU64(0)
6Gt
7BrFalse(19)
B1:
8MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
9MutBorrowFieldGeneric[4](GameState.sui_treasury: Balance<SUI>)
10MoveLoc[3](loc0: u64)
11Call balance::split<SUI>(&mut Balance<SUI>, u64): Balance<SUI>
12CopyLoc[2](Arg2: &mut TxContext)
13Call coin::from_balance<SUI>(Balance<SUI>, &mut TxContext): Coin<SUI>
14MoveLoc[2](Arg2: &mut TxContext)
15FreezeRef
16Call tx_context::sender(&TxContext): address
17Call transfer::public_transfer<Coin<SUI>>(Coin<SUI>, address)
18Branch(23)
B2:
19MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
20Pop
21MoveLoc[2](Arg2: &mut TxContext)
22Pop
B3:
23Ret
}
entry emergency_withdraw<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: &AdminCap, Arg2: &mut TxContext) {
L3: loc0: u64
B0:
0CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
1ImmBorrowFieldGeneric[7](GameState.paused: bool)
2ReadRef
3BrFalse(5)
B1:
4Branch(11)
B2:
5MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
6Pop
7MoveLoc[2](Arg2: &mut TxContext)
8Pop
9LdConst[19](u64: 22)
10Abort
B3:
11CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
12ImmBorrowFieldGeneric[4](GameState.sui_treasury: Balance<SUI>)
13Call balance::value<SUI>(&Balance<SUI>): u64
14StLoc[3](loc0: u64)
15CopyLoc[3](loc0: u64)
16LdU64(0)
17Gt
18BrFalse(30)
B4:
19MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
20MutBorrowFieldGeneric[4](GameState.sui_treasury: Balance<SUI>)
21MoveLoc[3](loc0: u64)
22Call balance::split<SUI>(&mut Balance<SUI>, u64): Balance<SUI>
23CopyLoc[2](Arg2: &mut TxContext)
24Call coin::from_balance<SUI>(Balance<SUI>, &mut TxContext): Coin<SUI>
25MoveLoc[2](Arg2: &mut TxContext)
26FreezeRef
27Call tx_context::sender(&TxContext): address
28Call transfer::public_transfer<Coin<SUI>>(Coin<SUI>, address)
29Branch(34)
B5:
30MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
31Pop
32MoveLoc[2](Arg2: &mut TxContext)
33Pop
B6:
34Ret
}
entry set_cosmetic_bp<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: &AdminCap, Arg2: u64, Arg3: u64) {
L4: loc0: &mut CosmeticType
B0:
0MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
1MutBorrowFieldGeneric[17](GameState.cosmetic_types: Table<u64, CosmeticType>)
2MoveLoc[2](Arg2: u64)
3Call table::borrow_mut<u64, CosmeticType>(&mut Table<u64, CosmeticType>, u64): &mut CosmeticType
4StLoc[4](loc0: &mut CosmeticType)
5MoveLoc[3](Arg3: u64)
6MoveLoc[4](loc0: &mut CosmeticType)
7MutBorrowField[45](CosmeticType.bubble_pressure: u64)
8WriteRef
9Ret
}
entry admin_clear_cosmetic<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: &AdminCap, Arg2: u64, Arg3: &Clock) {
L4: loc0: u64
L5: loc1: u64
L6: loc2: u64
L7: loc3: address
L8: loc4: u64
L9: loc5: DisplayedCosmeticInfo
L10: loc6: &mut PlayerTank
L11: loc7: &mut PlayerTank
L12: loc8: &PlayerTank
B0:
0CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
1ImmBorrowFieldGeneric[19](GameState.displayed_cosmetics: Table<u64, DisplayedCosmeticInfo>)
2CopyLoc[2](Arg2: u64)
3Call table::contains<u64, DisplayedCosmeticInfo>(&Table<u64, DisplayedCosmeticInfo>, u64): bool
4BrFalse(6)
B1:
5Branch(12)
B2:
6MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
7Pop
8MoveLoc[3](Arg3: &Clock)
9Pop
10LdConst[15](u64: 18)
11Abort
B3:
12CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
13MutBorrowFieldGeneric[19](GameState.displayed_cosmetics: Table<u64, DisplayedCosmeticInfo>)
14CopyLoc[2](Arg2: u64)
15Call table::remove<u64, DisplayedCosmeticInfo>(&mut Table<u64, DisplayedCosmeticInfo>, u64): DisplayedCosmeticInfo
16StLoc[9](loc5: DisplayedCosmeticInfo)
17ImmBorrowLoc[9](loc5: DisplayedCosmeticInfo)
18ImmBorrowField[53](DisplayedCosmeticInfo.owner: address)
19ReadRef
20StLoc[7](loc3: address)
21MoveLoc[3](Arg3: &Clock)
22Call clock::timestamp_ms(&Clock): u64
23StLoc[6](loc2: u64)
24CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
25ImmBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
26CopyLoc[7](loc3: address)
27Call table::contains<address, PlayerTank>(&Table<address, PlayerTank>, address): bool
28BrFalse(123)
B4:
29CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
30CopyLoc[7](loc3: address)
31CopyLoc[6](loc2: u64)
32Call ensure_repair_record<Ty0, Ty1>(&mut GameState<Ty0, Ty1>, address, u64)
33CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
34ImmBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
35CopyLoc[7](loc3: address)
36Call table::borrow<address, PlayerTank>(&Table<address, PlayerTank>, address): &PlayerTank
37StLoc[12](loc8: &PlayerTank)
38CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
39FreezeRef
40MoveLoc[12](loc8: &PlayerTank)
41CopyLoc[7](loc3: address)
42CopyLoc[6](loc2: u64)
43Call calculate_pending_rewards_v2<Ty0, Ty1>(&GameState<Ty0, Ty1>, &PlayerTank, address, u64): u64
44StLoc[8](loc4: u64)
45CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
46MutBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
47CopyLoc[7](loc3: address)
48Call table::borrow_mut<address, PlayerTank>(&mut Table<address, PlayerTank>, address): &mut PlayerTank
49StLoc[11](loc7: &mut PlayerTank)
50CopyLoc[8](loc4: u64)
51LdU64(0)
52Gt
53BrFalse(62)
B5:
54CopyLoc[11](loc7: &mut PlayerTank)
55ImmBorrowField[25](PlayerTank.unclaimed_rewards: u64)
56ReadRef
57MoveLoc[8](loc4: u64)
58Add
59CopyLoc[11](loc7: &mut PlayerTank)
60MutBorrowField[25](PlayerTank.unclaimed_rewards: u64)
61WriteRef
B6:
62MoveLoc[6](loc2: u64)
63MoveLoc[11](loc7: &mut PlayerTank)
64MutBorrowField[3](PlayerTank.last_claim_time: u64)
65WriteRef
66CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
67MutBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
68MoveLoc[7](loc3: address)
69Call table::borrow_mut<address, PlayerTank>(&mut Table<address, PlayerTank>, address): &mut PlayerTank
70StLoc[10](loc6: &mut PlayerTank)
71LdU64(0)
72StLoc[4](loc0: u64)
73CopyLoc[10](loc6: &mut PlayerTank)
74ImmBorrowField[16](PlayerTank.displayed_cosmetic_ids: vector<u64>)
75VecLen(1)
76StLoc[5](loc1: u64)
B7:
77CopyLoc[4](loc0: u64)
78CopyLoc[5](loc1: u64)
79Lt
80BrFalse(102)
B8:
81CopyLoc[10](loc6: &mut PlayerTank)
82ImmBorrowField[16](PlayerTank.displayed_cosmetic_ids: vector<u64>)
83CopyLoc[4](loc0: u64)
84VecImmBorrow(1)
85ReadRef
86CopyLoc[2](Arg2: u64)
87Eq
88BrFalse(97)
B9:
89CopyLoc[10](loc6: &mut PlayerTank)
90MutBorrowField[16](PlayerTank.displayed_cosmetic_ids: vector<u64>)
91MoveLoc[4](loc0: u64)
92Call vector::swap_remove<u64>(&mut vector<u64>, u64): u64
93Pop
94CopyLoc[5](loc1: u64)
95StLoc[4](loc0: u64)
96Branch(97)
B10:
97MoveLoc[4](loc0: u64)
98LdU64(1)
99Add
100StLoc[4](loc0: u64)
101Branch(77)
B11:
102CopyLoc[10](loc6: &mut PlayerTank)
103ImmBorrowField[1](PlayerTank.total_pressure: u64)
104ReadRef
105ImmBorrowLoc[9](loc5: DisplayedCosmeticInfo)
106ImmBorrowField[54](DisplayedCosmeticInfo.bubble_pressure: u64)
107ReadRef
108Sub
109MoveLoc[10](loc6: &mut PlayerTank)
110MutBorrowField[1](PlayerTank.total_pressure: u64)
111WriteRef
112CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
113ImmBorrowFieldGeneric[1](GameState.total_network_pressure: u64)
114ReadRef
115ImmBorrowLoc[9](loc5: DisplayedCosmeticInfo)
116ImmBorrowField[54](DisplayedCosmeticInfo.bubble_pressure: u64)
117ReadRef
118Sub
119MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
120MutBorrowFieldGeneric[1](GameState.total_network_pressure: u64)
121WriteRef
122Branch(125)
B12:
123MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
124Pop
B13:
125Ret
}
entry set_cosmetic_costs<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: &AdminCap, Arg2: u64, Arg3: u64, Arg4: u64, Arg5: u64) {
L6: loc0: &mut CosmeticType
B0:
0MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
1MutBorrowFieldGeneric[17](GameState.cosmetic_types: Table<u64, CosmeticType>)
2MoveLoc[2](Arg2: u64)
3Call table::borrow_mut<u64, CosmeticType>(&mut Table<u64, CosmeticType>, u64): &mut CosmeticType
4StLoc[6](loc0: &mut CosmeticType)
5MoveLoc[3](Arg3: u64)
6CopyLoc[6](loc0: &mut CosmeticType)
7MutBorrowField[40](CosmeticType.bub_cost: u64)
8WriteRef
9MoveLoc[4](Arg4: u64)
10CopyLoc[6](loc0: &mut CosmeticType)
11MutBorrowField[41](CosmeticType.bublz_cost: u64)
12WriteRef
13MoveLoc[5](Arg5: u64)
14MoveLoc[6](loc0: &mut CosmeticType)
15MutBorrowField[42](CosmeticType.sui_cost: u64)
16WriteRef
17Ret
}
entry display_cosmetic_v2<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: &BubbleCosmetic, Arg2: &Clock, Arg3: &TxContext) {
L4: loc0: u64
L5: loc1: u64
L6: loc2: u64
L7: loc3: &CosmeticType
L8: loc4: u64
L9: loc5: u64
L10: loc6: u64
L11: loc7: u64
L12: loc8: u64
L13: loc9: u64
L14: loc10: u64
L15: loc11: address
L16: loc12: &PlayerTank
L17: loc13: &mut PlayerTank
L18: loc14: &mut PlayerTank
L19: loc15: &PlayerTank
B0:
0CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
1ImmBorrowFieldGeneric[7](GameState.paused: bool)
2ReadRef
3Not
4BrFalse(6)
B1:
5Branch(16)
B2:
6MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
7Pop
8MoveLoc[3](Arg3: &TxContext)
9Pop
10MoveLoc[1](Arg1: &BubbleCosmetic)
11Pop
12MoveLoc[2](Arg2: &Clock)
13Pop
14LdConst[4](u64: 6)
15Abort
B3:
16MoveLoc[3](Arg3: &TxContext)
17Call tx_context::sender(&TxContext): address
18StLoc[15](loc11: address)
19CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
20ImmBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
21CopyLoc[15](loc11: address)
22Call table::contains<address, PlayerTank>(&Table<address, PlayerTank>, address): bool
23BrFalse(25)
B4:
24Branch(33)
B5:
25MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
26Pop
27MoveLoc[1](Arg1: &BubbleCosmetic)
28Pop
29MoveLoc[2](Arg2: &Clock)
30Pop
31LdConst[8](u64: 10)
32Abort
B6:
33MoveLoc[2](Arg2: &Clock)
34Call clock::timestamp_ms(&Clock): u64
35StLoc[13](loc9: u64)
36CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
37CopyLoc[15](loc11: address)
38CopyLoc[13](loc9: u64)
39Call ensure_repair_record<Ty0, Ty1>(&mut GameState<Ty0, Ty1>, address, u64)
40CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
41ImmBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
42CopyLoc[15](loc11: address)
43Call table::borrow<address, PlayerTank>(&Table<address, PlayerTank>, address): &PlayerTank
44StLoc[19](loc15: &PlayerTank)
45CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
46FreezeRef
47MoveLoc[19](loc15: &PlayerTank)
48CopyLoc[15](loc11: address)
49CopyLoc[13](loc9: u64)
50Call calculate_pending_rewards_v2<Ty0, Ty1>(&GameState<Ty0, Ty1>, &PlayerTank, address, u64): u64
51StLoc[14](loc10: u64)
52CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
53MutBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
54CopyLoc[15](loc11: address)
55Call table::borrow_mut<address, PlayerTank>(&mut Table<address, PlayerTank>, address): &mut PlayerTank
56StLoc[18](loc14: &mut PlayerTank)
57CopyLoc[14](loc10: u64)
58LdU64(0)
59Gt
60BrFalse(69)
B7:
61CopyLoc[18](loc14: &mut PlayerTank)
62ImmBorrowField[25](PlayerTank.unclaimed_rewards: u64)
63ReadRef
64MoveLoc[14](loc10: u64)
65Add
66CopyLoc[18](loc14: &mut PlayerTank)
67MutBorrowField[25](PlayerTank.unclaimed_rewards: u64)
68WriteRef
B8:
69MoveLoc[13](loc9: u64)
70MoveLoc[18](loc14: &mut PlayerTank)
71MutBorrowField[3](PlayerTank.last_claim_time: u64)
72WriteRef
73CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
74ImmBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
75CopyLoc[15](loc11: address)
76Call table::borrow<address, PlayerTank>(&Table<address, PlayerTank>, address): &PlayerTank
77StLoc[16](loc12: &PlayerTank)
78CopyLoc[16](loc12: &PlayerTank)
79ImmBorrowField[13](PlayerTank.tier: u8)
80ReadRef
81Call get_tank_cosmetic_slots(u8): u64
82StLoc[12](loc8: u64)
83CopyLoc[16](loc12: &PlayerTank)
84ImmBorrowField[16](PlayerTank.displayed_cosmetic_ids: vector<u64>)
85VecLen(1)
86MoveLoc[12](loc8: u64)
87Lt
88BrFalse(90)
B9:
89Branch(98)
B10:
90MoveLoc[16](loc12: &PlayerTank)
91Pop
92MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
93Pop
94MoveLoc[1](Arg1: &BubbleCosmetic)
95Pop
96LdConst[13](u64: 16)
97Abort
B11:
98CopyLoc[1](Arg1: &BubbleCosmetic)
99ImmBorrowField[47](BubbleCosmetic.cosmetic_instance_id: u64)
100ReadRef
101StLoc[6](loc2: u64)
102CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
103ImmBorrowFieldGeneric[19](GameState.displayed_cosmetics: Table<u64, DisplayedCosmeticInfo>)
104CopyLoc[6](loc2: u64)
105Call table::contains<u64, DisplayedCosmeticInfo>(&Table<u64, DisplayedCosmeticInfo>, u64): bool
106Not
107BrFalse(109)
B12:
108Branch(117)
B13:
109MoveLoc[16](loc12: &PlayerTank)
110Pop
111MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
112Pop
113MoveLoc[1](Arg1: &BubbleCosmetic)
114Pop
115LdConst[16](u64: 19)
116Abort
B14:
117CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
118ImmBorrowFieldGeneric[17](GameState.cosmetic_types: Table<u64, CosmeticType>)
119CopyLoc[1](Arg1: &BubbleCosmetic)
120ImmBorrowField[49](BubbleCosmetic.cosmetic_type_id: u64)
121ReadRef
122Call table::contains<u64, CosmeticType>(&Table<u64, CosmeticType>, u64): bool
123BrFalse(196)
B15:
124CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
125ImmBorrowFieldGeneric[17](GameState.cosmetic_types: Table<u64, CosmeticType>)
126CopyLoc[1](Arg1: &BubbleCosmetic)
127ImmBorrowField[49](BubbleCosmetic.cosmetic_type_id: u64)
128ReadRef
129Call table::borrow<u64, CosmeticType>(&Table<u64, CosmeticType>, u64): &CosmeticType
130StLoc[7](loc3: &CosmeticType)
131LdU64(0)
132StLoc[8](loc4: u64)
133LdU64(0)
134StLoc[10](loc6: u64)
135CopyLoc[16](loc12: &PlayerTank)
136ImmBorrowField[16](PlayerTank.displayed_cosmetic_ids: vector<u64>)
137VecLen(1)
138StLoc[11](loc7: u64)
B16:
139CopyLoc[10](loc6: u64)
140CopyLoc[11](loc7: u64)
141Lt
142BrFalse(174)
B17:
143CopyLoc[16](loc12: &PlayerTank)
144ImmBorrowField[16](PlayerTank.displayed_cosmetic_ids: vector<u64>)
145CopyLoc[10](loc6: u64)
146VecImmBorrow(1)
147ReadRef
148StLoc[9](loc5: u64)
149CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
150ImmBorrowFieldGeneric[19](GameState.displayed_cosmetics: Table<u64, DisplayedCosmeticInfo>)
151CopyLoc[9](loc5: u64)
152Call table::contains<u64, DisplayedCosmeticInfo>(&Table<u64, DisplayedCosmeticInfo>, u64): bool
153BrFalse(169)
B18:
154CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
155ImmBorrowFieldGeneric[19](GameState.displayed_cosmetics: Table<u64, DisplayedCosmeticInfo>)
156MoveLoc[9](loc5: u64)
157Call table::borrow<u64, DisplayedCosmeticInfo>(&Table<u64, DisplayedCosmeticInfo>, u64): &DisplayedCosmeticInfo
158ImmBorrowField[50](DisplayedCosmeticInfo.cosmetic_type_id: u64)
159ReadRef
160CopyLoc[1](Arg1: &BubbleCosmetic)
161ImmBorrowField[49](BubbleCosmetic.cosmetic_type_id: u64)
162ReadRef
163Eq
164BrFalse(169)
B19:
165MoveLoc[8](loc4: u64)
166LdU64(1)
167Add
168StLoc[8](loc4: u64)
B20:
169MoveLoc[10](loc6: u64)
170LdU64(1)
171Add
172StLoc[10](loc6: u64)
173Branch(139)
B21:
174MoveLoc[16](loc12: &PlayerTank)
175Pop
176MoveLoc[8](loc4: u64)
177CopyLoc[7](loc3: &CosmeticType)
178ImmBorrowField[51](CosmeticType.per_facility: u64)
179ReadRef
180Lt
181BrFalse(183)
B22:
182Branch(191)
B23:
183MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
184Pop
185MoveLoc[7](loc3: &CosmeticType)
186Pop
187MoveLoc[1](Arg1: &BubbleCosmetic)
188Pop
189LdConst[14](u64: 17)
190Abort
B24:
191MoveLoc[7](loc3: &CosmeticType)
192ImmBorrowField[45](CosmeticType.bubble_pressure: u64)
193ReadRef
194StLoc[4](loc0: u64)
195Branch(202)
B25:
196MoveLoc[16](loc12: &PlayerTank)
197Pop
198CopyLoc[1](Arg1: &BubbleCosmetic)
199ImmBorrowField[52](BubbleCosmetic.bubble_pressure: u64)
200ReadRef
201StLoc[4](loc0: u64)
B26:
202MoveLoc[4](loc0: u64)
203StLoc[5](loc1: u64)
204CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
205MutBorrowFieldGeneric[19](GameState.displayed_cosmetics: Table<u64, DisplayedCosmeticInfo>)
206CopyLoc[6](loc2: u64)
207CopyLoc[15](loc11: address)
208MoveLoc[1](Arg1: &BubbleCosmetic)
209ImmBorrowField[49](BubbleCosmetic.cosmetic_type_id: u64)
210ReadRef
211CopyLoc[5](loc1: u64)
212Pack[8](DisplayedCosmeticInfo)
213Call table::add<u64, DisplayedCosmeticInfo>(&mut Table<u64, DisplayedCosmeticInfo>, u64, DisplayedCosmeticInfo)
214CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
215MutBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
216MoveLoc[15](loc11: address)
217Call table::borrow_mut<address, PlayerTank>(&mut Table<address, PlayerTank>, address): &mut PlayerTank
218StLoc[17](loc13: &mut PlayerTank)
219CopyLoc[17](loc13: &mut PlayerTank)
220MutBorrowField[16](PlayerTank.displayed_cosmetic_ids: vector<u64>)
221MoveLoc[6](loc2: u64)
222VecPushBack(1)
223CopyLoc[17](loc13: &mut PlayerTank)
224ImmBorrowField[1](PlayerTank.total_pressure: u64)
225ReadRef
226CopyLoc[5](loc1: u64)
227Add
228MoveLoc[17](loc13: &mut PlayerTank)
229MutBorrowField[1](PlayerTank.total_pressure: u64)
230WriteRef
231CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
232ImmBorrowFieldGeneric[1](GameState.total_network_pressure: u64)
233ReadRef
234MoveLoc[5](loc1: u64)
235Add
236MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
237MutBorrowFieldGeneric[1](GameState.total_network_pressure: u64)
238WriteRef
239Ret
}
entry admin_upgrade_tank<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: &AdminCap, Arg2: address, Arg3: u8, Arg4: &Clock) {
L5: loc0: &mut PlayerTank
B0:
0CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
1ImmBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
2CopyLoc[2](Arg2: address)
3Call table::contains<address, PlayerTank>(&Table<address, PlayerTank>, address): bool
4BrFalse(6)
B1:
5Branch(12)
B2:
6MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
7Pop
8MoveLoc[4](Arg4: &Clock)
9Pop
10LdConst[8](u64: 10)
11Abort
B3:
12MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
13MutBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
14CopyLoc[2](Arg2: address)
15Call table::borrow_mut<address, PlayerTank>(&mut Table<address, PlayerTank>, address): &mut PlayerTank
16StLoc[5](loc0: &mut PlayerTank)
17CopyLoc[3](Arg3: u8)
18LdConst[32](u8: 8)
19Le
20BrFalse(22)
B4:
21Branch(28)
B5:
22MoveLoc[5](loc0: &mut PlayerTank)
23Pop
24MoveLoc[4](Arg4: &Clock)
25Pop
26LdConst[0](u64: 1)
27Abort
B6:
28CopyLoc[3](Arg3: u8)
29CopyLoc[5](loc0: &mut PlayerTank)
30ImmBorrowField[13](PlayerTank.tier: u8)
31ReadRef
32Gt
33BrFalse(35)
B7:
34Branch(41)
B8:
35MoveLoc[5](loc0: &mut PlayerTank)
36Pop
37MoveLoc[4](Arg4: &Clock)
38Pop
39LdConst[0](u64: 1)
40Abort
B9:
41CopyLoc[3](Arg3: u8)
42CopyLoc[5](loc0: &mut PlayerTank)
43MutBorrowField[13](PlayerTank.tier: u8)
44WriteRef
45MoveLoc[4](Arg4: &Clock)
46Call clock::timestamp_ms(&Clock): u64
47MoveLoc[5](loc0: &mut PlayerTank)
48MutBorrowField[14](PlayerTank.last_upgrade_time: u64)
49WriteRef
50MoveLoc[2](Arg2: address)
51MoveLoc[3](Arg3: u8)
52Pack[13](TankUpgraded)
53Call event::emit<TankUpgraded>(TankUpgraded)
54Ret
}
get_skip_cumulative(Arg0: u8): u64 * u64 * u64 {
L1: loc0: u64
L2: loc1: u64
L3: loc2: u64
L4: loc3: u64
L5: loc4: u64
L6: loc5: u64
L7: loc6: u64
L8: loc7: u64
L9: loc8: u64
L10: loc9: u64
L11: loc10: u64
L12: loc11: u64
L13: loc12: u64
L14: loc13: u64
L15: loc14: u64
B0:
0CopyLoc[0](Arg0: u8)
1LdU8(0)
2Eq
3BrFalse(11)
B1:
4LdU64(0)
5LdU64(0)
6LdU64(0)
7StLoc[7](loc6: u64)
8StLoc[6](loc5: u64)
9StLoc[5](loc4: u64)
10Branch(85)
B2:
11CopyLoc[0](Arg0: u8)
12LdU8(1)
13Eq
14BrFalse(22)
B3:
15LdU64(2000000000)
16LdU64(84000000000)
17LdU64(100000000000000)
18StLoc[4](loc3: u64)
19StLoc[3](loc2: u64)
20StLoc[2](loc1: u64)
21Branch(79)
B4:
22CopyLoc[0](Arg0: u8)
23LdU8(2)
24Eq
25BrFalse(33)
B5:
26LdU64(4000000000)
27LdU64(296000000000)
28LdU64(200000000000000)
29StLoc[15](loc14: u64)
30StLoc[14](loc13: u64)
31StLoc[13](loc12: u64)
32Branch(73)
B6:
33CopyLoc[0](Arg0: u8)
34LdU8(3)
35Eq
36BrFalse(44)
B7:
37LdU64(6000000000)
38LdU64(676000000000)
39LdU64(300000000000000)
40StLoc[12](loc11: u64)
41StLoc[11](loc10: u64)
42StLoc[10](loc9: u64)
43Branch(67)
B8:
44MoveLoc[0](Arg0: u8)
45LdU8(4)
46Eq
47BrFalse(55)
B9:
48LdU64(8000000000)
49LdU64(1136000000000)
50LdU64(400000000000000)
51StLoc[9](loc8: u64)
52StLoc[8](loc7: u64)
53StLoc[1](loc0: u64)
54Branch(61)
B10:
55LdU64(11000000000)
56LdU64(1686000000000)
57LdU64(500000000000000)
58StLoc[9](loc8: u64)
59StLoc[8](loc7: u64)
60StLoc[1](loc0: u64)
B11:
61MoveLoc[1](loc0: u64)
62MoveLoc[8](loc7: u64)
63MoveLoc[9](loc8: u64)
64StLoc[12](loc11: u64)
65StLoc[11](loc10: u64)
66StLoc[10](loc9: u64)
B12:
67MoveLoc[10](loc9: u64)
68MoveLoc[11](loc10: u64)
69MoveLoc[12](loc11: u64)
70StLoc[15](loc14: u64)
71StLoc[14](loc13: u64)
72StLoc[13](loc12: u64)
B13:
73MoveLoc[13](loc12: u64)
74MoveLoc[14](loc13: u64)
75MoveLoc[15](loc14: u64)
76StLoc[4](loc3: u64)
77StLoc[3](loc2: u64)
78StLoc[2](loc1: u64)
B14:
79MoveLoc[2](loc1: u64)
80MoveLoc[3](loc2: u64)
81MoveLoc[4](loc3: u64)
82StLoc[7](loc6: u64)
83StLoc[6](loc5: u64)
84StLoc[5](loc4: u64)
B15:
85MoveLoc[5](loc4: u64)
86MoveLoc[6](loc5: u64)
87MoveLoc[7](loc6: u64)
88Ret
}
entry skip_to_tier<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: u8, Arg2: Coin<Ty0>, Arg3: Coin<Ty1>, Arg4: Coin<SUI>, Arg5: &Clock, Arg6: &mut TxContext) {
L7: loc0: u64
L8: loc1: u64
L9: loc2: u64
L10: loc3: u64
L11: loc4: u64
L12: loc5: address
L13: loc6: u64
L14: loc7: &PlayerTank
L15: loc8: &mut PlayerTank
L16: loc9: u64
L17: loc10: u64
L18: loc11: u64
B0:
0CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
1ImmBorrowFieldGeneric[7](GameState.paused: bool)
2ReadRef
3Not
4BrFalse(6)
B1:
5Branch(14)
B2:
6MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
7Pop
8MoveLoc[6](Arg6: &mut TxContext)
9Pop
10MoveLoc[5](Arg5: &Clock)
11Pop
12LdConst[4](u64: 6)
13Abort
B3:
14CopyLoc[6](Arg6: &mut TxContext)
15FreezeRef
16Call tx_context::sender(&TxContext): address
17StLoc[12](loc5: address)
18CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
19ImmBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
20CopyLoc[12](loc5: address)
21Call table::contains<address, PlayerTank>(&Table<address, PlayerTank>, address): bool
22BrFalse(24)
B4:
23Branch(32)
B5:
24MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
25Pop
26MoveLoc[6](Arg6: &mut TxContext)
27Pop
28MoveLoc[5](Arg5: &Clock)
29Pop
30LdConst[8](u64: 10)
31Abort
B6:
32CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
33ImmBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
34CopyLoc[12](loc5: address)
35Call table::borrow<address, PlayerTank>(&Table<address, PlayerTank>, address): &PlayerTank
36StLoc[14](loc7: &PlayerTank)
37CopyLoc[1](Arg1: u8)
38LdU8(5)
39Le
40BrFalse(42)
B7:
41Branch(52)
B8:
42MoveLoc[14](loc7: &PlayerTank)
43Pop
44MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
45Pop
46MoveLoc[6](Arg6: &mut TxContext)
47Pop
48MoveLoc[5](Arg5: &Clock)
49Pop
50LdConst[0](u64: 1)
51Abort
B9:
52CopyLoc[1](Arg1: u8)
53CopyLoc[14](loc7: &PlayerTank)
54ImmBorrowField[13](PlayerTank.tier: u8)
55ReadRef
56Gt
57BrFalse(59)
B10:
58Branch(69)
B11:
59MoveLoc[14](loc7: &PlayerTank)
60Pop
61MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
62Pop
63MoveLoc[6](Arg6: &mut TxContext)
64Pop
65MoveLoc[5](Arg5: &Clock)
66Pop
67LdConst[0](u64: 1)
68Abort
B12:
69CopyLoc[14](loc7: &PlayerTank)
70ImmBorrowField[15](PlayerTank.staked_bubbler_ids: vector<u64>)
71VecLen(1)
72LdU64(0)
73Eq
74BrFalse(76)
B13:
75Branch(86)
B14:
76MoveLoc[14](loc7: &PlayerTank)
77Pop
78MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
79Pop
80MoveLoc[6](Arg6: &mut TxContext)
81Pop
82MoveLoc[5](Arg5: &Clock)
83Pop
84LdConst[20](u64: 23)
85Abort
B15:
86CopyLoc[14](loc7: &PlayerTank)
87ImmBorrowField[16](PlayerTank.displayed_cosmetic_ids: vector<u64>)
88VecLen(1)
89LdU64(0)
90Eq
91BrFalse(93)
B16:
92Branch(103)
B17:
93MoveLoc[14](loc7: &PlayerTank)
94Pop
95MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
96Pop
97MoveLoc[6](Arg6: &mut TxContext)
98Pop
99MoveLoc[5](Arg5: &Clock)
100Pop
101LdConst[20](u64: 23)
102Abort
B18:
103CopyLoc[1](Arg1: u8)
104Call get_skip_cumulative(u8): u64 * u64 * u64
105StLoc[17](loc10: u64)
106StLoc[16](loc9: u64)
107StLoc[18](loc11: u64)
108MoveLoc[14](loc7: &PlayerTank)
109ImmBorrowField[13](PlayerTank.tier: u8)
110ReadRef
111Call get_skip_cumulative(u8): u64 * u64 * u64
112StLoc[10](loc3: u64)
113StLoc[9](loc2: u64)
114StLoc[11](loc4: u64)
115MoveLoc[18](loc11: u64)
116MoveLoc[11](loc4: u64)
117Sub
118StLoc[13](loc6: u64)
119MoveLoc[16](loc9: u64)
120MoveLoc[9](loc2: u64)
121Sub
122StLoc[7](loc0: u64)
123MoveLoc[17](loc10: u64)
124MoveLoc[10](loc3: u64)
125Sub
126StLoc[8](loc1: u64)
127MoveLoc[2](Arg2: Coin<Ty0>)
128MoveLoc[7](loc0: u64)
129CopyLoc[6](Arg6: &mut TxContext)
130Call process_bub_payment<Ty0>(Coin<Ty0>, u64, &mut TxContext): Balance<Ty0>
131CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
132CopyLoc[6](Arg6: &mut TxContext)
133Call burn_bub_payment<Ty0, Ty0, Ty1>(Balance<Ty0>, &mut GameState<Ty0, Ty1>, &mut TxContext)
134MoveLoc[3](Arg3: Coin<Ty1>)
135MoveLoc[8](loc1: u64)
136CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
137CopyLoc[6](Arg6: &mut TxContext)
138Call process_bublz_payment<Ty1, Ty0, Ty1>(Coin<Ty1>, u64, &mut GameState<Ty0, Ty1>, &mut TxContext)
139MoveLoc[4](Arg4: Coin<SUI>)
140MoveLoc[13](loc6: u64)
141CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
142MoveLoc[6](Arg6: &mut TxContext)
143Call process_sui_payment<Ty0, Ty1>(Coin<SUI>, u64, &mut GameState<Ty0, Ty1>, &mut TxContext)
144MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
145MutBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
146CopyLoc[12](loc5: address)
147Call table::borrow_mut<address, PlayerTank>(&mut Table<address, PlayerTank>, address): &mut PlayerTank
148StLoc[15](loc8: &mut PlayerTank)
149CopyLoc[1](Arg1: u8)
150CopyLoc[15](loc8: &mut PlayerTank)
151MutBorrowField[13](PlayerTank.tier: u8)
152WriteRef
153MoveLoc[5](Arg5: &Clock)
154Call clock::timestamp_ms(&Clock): u64
155MoveLoc[15](loc8: &mut PlayerTank)
156MutBorrowField[14](PlayerTank.last_upgrade_time: u64)
157WriteRef
158MoveLoc[12](loc5: address)
159MoveLoc[1](Arg1: u8)
160Pack[13](TankUpgraded)
161Call event::emit<TankUpgraded>(TankUpgraded)
162Ret
}
get_fusion_costs(Arg0: u8): u64 * u64 * u64 {
L1: loc0: u64
L2: loc1: u64
L3: loc2: u64
L4: loc3: u64
L5: loc4: u64
L6: loc5: u64
L7: loc6: u64
L8: loc7: u64
L9: loc8: u64
L10: loc9: u64
L11: loc10: u64
L12: loc11: u64
L13: loc12: u64
L14: loc13: u64
L15: loc14: u64
L16: loc15: u64
L17: loc16: u64
L18: loc17: u64
L19: loc18: u64
L20: loc19: u64
L21: loc20: u64
L22: loc21: u64
L23: loc22: u64
L24: loc23: u64
L25: loc24: u64
L26: loc25: u64
L27: loc26: u64
L28: loc27: u64
L29: loc28: u64
L30: loc29: u64
L31: loc30: u64
L32: loc31: u64
L33: loc32: u64
B0:
0CopyLoc[0](Arg0: u8)
1LdU8(0)
2Eq
3BrFalse(11)
B1:
4LdU64(800000000)
5LdU64(25000000000000)
6LdU64(500000000)
7StLoc[27](loc26: u64)
8StLoc[26](loc25: u64)
9StLoc[25](loc24: u64)
10Branch(187)
B2:
11CopyLoc[0](Arg0: u8)
12LdU8(1)
13Eq
14BrFalse(22)
B3:
15LdU64(1600000000)
16LdU64(25000000000000)
17LdU64(500000000)
18StLoc[24](loc23: u64)
19StLoc[22](loc21: u64)
20StLoc[21](loc20: u64)
21Branch(181)
B4:
22CopyLoc[0](Arg0: u8)
23LdU8(2)
24Eq
25BrFalse(33)
B5:
26LdU64(2400000000)
27LdU64(25000000000000)
28LdU64(750000000)
29StLoc[20](loc19: u64)
30StLoc[19](loc18: u64)
31StLoc[18](loc17: u64)
32Branch(175)
B6:
33CopyLoc[0](Arg0: u8)
34LdU8(3)
35Eq
36BrFalse(44)
B7:
37LdU64(6800000000)
38LdU64(25000000000000)
39LdU64(750000000)
40StLoc[17](loc16: u64)
41StLoc[16](loc15: u64)
42StLoc[15](loc14: u64)
43Branch(169)
B8:
44CopyLoc[0](Arg0: u8)
45LdU8(4)
46Eq
47BrFalse(55)
B9:
48LdU64(15000000000)
49LdU64(25000000000000)
50LdU64(1000000000)
51StLoc[14](loc13: u64)
52StLoc[13](loc12: u64)
53StLoc[11](loc10: u64)
54Branch(163)
B10:
55CopyLoc[0](Arg0: u8)
56LdU8(5)
57Eq
58BrFalse(66)
B11:
59LdU64(25400000000)
60LdU64(25000000000000)
61LdU64(1000000000)
62StLoc[10](loc9: u64)
63StLoc[9](loc8: u64)
64StLoc[8](loc7: u64)
65Branch(157)
B12:
66CopyLoc[0](Arg0: u8)
67LdU8(6)
68Eq
69BrFalse(77)
B13:
70LdU64(59400000000)
71LdU64(25000000000000)
72LdU64(1250000000)
73StLoc[7](loc6: u64)
74StLoc[6](loc5: u64)
75StLoc[5](loc4: u64)
76Branch(151)
B14:
77CopyLoc[0](Arg0: u8)
78LdU8(7)
79Eq
80BrFalse(88)
B15:
81LdU64(117200000000)
82LdU64(25000000000000)
83LdU64(1500000000)
84StLoc[4](loc3: u64)
85StLoc[3](loc2: u64)
86StLoc[2](loc1: u64)
87Branch(145)
B16:
88CopyLoc[0](Arg0: u8)
89LdU8(8)
90Eq
91BrFalse(99)
B17:
92LdU64(204000000000)
93LdU64(25000000000000)
94LdU64(1750000000)
95StLoc[33](loc32: u64)
96StLoc[32](loc31: u64)
97StLoc[31](loc30: u64)
98Branch(139)
B18:
99CopyLoc[0](Arg0: u8)
100LdU8(9)
101Eq
102BrFalse(110)
B19:
103LdU64(510000000000)
104LdU64(25000000000000)
105LdU64(2000000000)
106StLoc[30](loc29: u64)
107StLoc[29](loc28: u64)
108StLoc[28](loc27: u64)
109Branch(133)
B20:
110MoveLoc[0](Arg0: u8)
111LdU8(10)
112Eq
113BrFalse(121)
B21:
114LdU64(680000000000)
115LdU64(50000000000000)
116LdU64(2500000000)
117StLoc[23](loc22: u64)
118StLoc[12](loc11: u64)
119StLoc[1](loc0: u64)
120Branch(127)
B22:
121LdU64(1020000000000)
122LdU64(100000000000000)
123LdU64(3000000000)
124StLoc[23](loc22: u64)
125StLoc[12](loc11: u64)
126StLoc[1](loc0: u64)
B23:
127MoveLoc[1](loc0: u64)
128MoveLoc[12](loc11: u64)
129MoveLoc[23](loc22: u64)
130StLoc[30](loc29: u64)
131StLoc[29](loc28: u64)
132StLoc[28](loc27: u64)
B24:
133MoveLoc[28](loc27: u64)
134MoveLoc[29](loc28: u64)
135MoveLoc[30](loc29: u64)
136StLoc[33](loc32: u64)
137StLoc[32](loc31: u64)
138StLoc[31](loc30: u64)
B25:
139MoveLoc[31](loc30: u64)
140MoveLoc[32](loc31: u64)
141MoveLoc[33](loc32: u64)
142StLoc[4](loc3: u64)
143StLoc[3](loc2: u64)
144StLoc[2](loc1: u64)
B26:
145MoveLoc[2](loc1: u64)
146MoveLoc[3](loc2: u64)
147MoveLoc[4](loc3: u64)
148StLoc[7](loc6: u64)
149StLoc[6](loc5: u64)
150StLoc[5](loc4: u64)
B27:
151MoveLoc[5](loc4: u64)
152MoveLoc[6](loc5: u64)
153MoveLoc[7](loc6: u64)
154StLoc[10](loc9: u64)
155StLoc[9](loc8: u64)
156StLoc[8](loc7: u64)
B28:
157MoveLoc[8](loc7: u64)
158MoveLoc[9](loc8: u64)
159MoveLoc[10](loc9: u64)
160StLoc[14](loc13: u64)
161StLoc[13](loc12: u64)
162StLoc[11](loc10: u64)
B29:
163MoveLoc[11](loc10: u64)
164MoveLoc[13](loc12: u64)
165MoveLoc[14](loc13: u64)
166StLoc[17](loc16: u64)
167StLoc[16](loc15: u64)
168StLoc[15](loc14: u64)
B30:
169MoveLoc[15](loc14: u64)
170MoveLoc[16](loc15: u64)
171MoveLoc[17](loc16: u64)
172StLoc[20](loc19: u64)
173StLoc[19](loc18: u64)
174StLoc[18](loc17: u64)
B31:
175MoveLoc[18](loc17: u64)
176MoveLoc[19](loc18: u64)
177MoveLoc[20](loc19: u64)
178StLoc[24](loc23: u64)
179StLoc[22](loc21: u64)
180StLoc[21](loc20: u64)
B32:
181MoveLoc[21](loc20: u64)
182MoveLoc[22](loc21: u64)
183MoveLoc[24](loc23: u64)
184StLoc[27](loc26: u64)
185StLoc[26](loc25: u64)
186StLoc[25](loc24: u64)
B33:
187MoveLoc[25](loc24: u64)
188MoveLoc[26](loc25: u64)
189MoveLoc[27](loc26: u64)
190Ret
}
entry fuse_bubblers<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: BubbleGenerator, Arg2: BubbleGenerator, Arg3: Coin<Ty0>, Arg4: Coin<Ty1>, Arg5: Coin<SUI>, Arg6: &mut TxContext) {
L7: loc0: u64
L8: loc1: u64
L9: loc2: u64
L10: loc3: u64
L11: loc4: String
L12: loc5: String
L13: loc6: u8
L14: loc7: address
L15: loc8: u64
L16: loc9: u64
L17: loc10: u8
B0:
0CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
1ImmBorrowFieldGeneric[7](GameState.paused: bool)
2ReadRef
3Not
4BrFalse(6)
B1:
5Branch(12)
B2:
6MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
7Pop
8MoveLoc[6](Arg6: &mut TxContext)
9Pop
10LdConst[4](u64: 6)
11Abort
B3:
12CopyLoc[6](Arg6: &mut TxContext)
13FreezeRef
14Call tx_context::sender(&TxContext): address
15StLoc[14](loc7: address)
16CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
17ImmBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
18CopyLoc[14](loc7: address)
19Call table::contains<address, PlayerTank>(&Table<address, PlayerTank>, address): bool
20BrFalse(22)
B4:
21Branch(28)
B5:
22MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
23Pop
24MoveLoc[6](Arg6: &mut TxContext)
25Pop
26LdConst[8](u64: 10)
27Abort
B6:
28ImmBorrowLoc[1](Arg1: BubbleGenerator)
29ImmBorrowField[21](BubbleGenerator.tier: u8)
30ReadRef
31StLoc[17](loc10: u8)
32ImmBorrowLoc[1](Arg1: BubbleGenerator)
33ImmBorrowField[21](BubbleGenerator.tier: u8)
34ReadRef
35ImmBorrowLoc[2](Arg2: BubbleGenerator)
36ImmBorrowField[21](BubbleGenerator.tier: u8)
37ReadRef
38Eq
39BrFalse(41)
B7:
40Branch(47)
B8:
41MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
42Pop
43MoveLoc[6](Arg6: &mut TxContext)
44Pop
45LdConst[0](u64: 1)
46Abort
B9:
47CopyLoc[17](loc10: u8)
48LdU8(1)
49Add
50StLoc[13](loc6: u8)
51CopyLoc[13](loc6: u8)
52CastU64
53LdConst[10](u64: 13)
54Lt
55BrFalse(57)
B10:
56Branch(63)
B11:
57MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
58Pop
59MoveLoc[6](Arg6: &mut TxContext)
60Pop
61LdConst[0](u64: 1)
62Abort
B12:
63CopyLoc[17](loc10: u8)
64Call get_fusion_costs(u8): u64 * u64 * u64
65StLoc[15](loc8: u64)
66StLoc[10](loc3: u64)
67StLoc[7](loc0: u64)
68CopyLoc[7](loc0: u64)
69LdU64(0)
70Gt
71BrFalse(80)
B13:
72MoveLoc[3](Arg3: Coin<Ty0>)
73MoveLoc[7](loc0: u64)
74CopyLoc[6](Arg6: &mut TxContext)
75Call process_bub_payment<Ty0>(Coin<Ty0>, u64, &mut TxContext): Balance<Ty0>
76CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
77CopyLoc[6](Arg6: &mut TxContext)
78Call burn_bub_payment<Ty0, Ty0, Ty1>(Balance<Ty0>, &mut GameState<Ty0, Ty1>, &mut TxContext)
79Branch(83)
B14:
80MoveLoc[3](Arg3: Coin<Ty0>)
81CopyLoc[14](loc7: address)
82Call transfer::public_transfer<Coin<Ty0>>(Coin<Ty0>, address)
B15:
83MoveLoc[4](Arg4: Coin<Ty1>)
84MoveLoc[10](loc3: u64)
85CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
86CopyLoc[6](Arg6: &mut TxContext)
87Call process_bublz_payment<Ty1, Ty0, Ty1>(Coin<Ty1>, u64, &mut GameState<Ty0, Ty1>, &mut TxContext)
88MoveLoc[5](Arg5: Coin<SUI>)
89MoveLoc[15](loc8: u64)
90CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
91CopyLoc[6](Arg6: &mut TxContext)
92Call process_sui_payment<Ty0, Ty1>(Coin<SUI>, u64, &mut GameState<Ty0, Ty1>, &mut TxContext)
93MoveLoc[1](Arg1: BubbleGenerator)
94Unpack[9](BubbleGenerator)
95Pop
96Pop
97Pop
98Pop
99Pop
100Pop
101Pop
102Call object::delete(UID)
103MoveLoc[2](Arg2: BubbleGenerator)
104Unpack[9](BubbleGenerator)
105Pop
106Pop
107Pop
108Pop
109Pop
110Pop
111Pop
112Call object::delete(UID)
113CopyLoc[13](loc6: u8)
114Call get_bubbler_stats(u8): u64 * u64 * u64 * String * String
115StLoc[11](loc4: String)
116StLoc[12](loc5: String)
117Pop
118StLoc[16](loc9: u64)
119StLoc[8](loc1: u64)
120CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
121ImmBorrowFieldGeneric[12](GameState.next_bubbler_id: u64)
122ReadRef
123StLoc[9](loc2: u64)
124CopyLoc[9](loc2: u64)
125LdU64(1)
126Add
127CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
128MutBorrowFieldGeneric[12](GameState.next_bubbler_id: u64)
129WriteRef
130MoveLoc[6](Arg6: &mut TxContext)
131Call object::new(&mut TxContext): UID
132CopyLoc[9](loc2: u64)
133CopyLoc[13](loc6: u8)
134CopyLoc[12](loc5: String)
135MoveLoc[8](loc1: u64)
136MoveLoc[16](loc9: u64)
137MoveLoc[11](loc4: String)
138CopyLoc[13](loc6: u8)
139MoveLoc[12](loc5: String)
140Call make_bubbler_attrs(u8, String): VecMap<String, String>
141Pack[9](BubbleGenerator)
142CopyLoc[14](loc7: address)
143Call transfer::public_transfer<BubbleGenerator>(BubbleGenerator, address)
144CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
145ImmBorrowFieldGeneric[16](GameState.total_burned: u64)
146ReadRef
147LdU64(2)
148Add
149MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
150MutBorrowFieldGeneric[16](GameState.total_burned: u64)
151WriteRef
152MoveLoc[14](loc7: address)
153MoveLoc[17](loc10: u8)
154MoveLoc[13](loc6: u8)
155MoveLoc[9](loc2: u64)
156Pack[20](BubblerFused)
157Call event::emit<BubblerFused>(BubblerFused)
158Ret
}
entry create_cosmetic_vault(Arg0: &AdminCap, Arg1: &mut TxContext) {
B0:
0CopyLoc[1](Arg1: &mut TxContext)
1Call object::new(&mut TxContext): UID
2MoveLoc[1](Arg1: &mut TxContext)
3Call table::new<u64, BubbleCosmetic>(&mut TxContext): Table<u64, BubbleCosmetic>
4Pack[21](CosmeticVault)
5Call transfer::share_object<CosmeticVault>(CosmeticVault)
6Ret
}
entry display_cosmetic_v3<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: &mut CosmeticVault, Arg2: BubbleCosmetic, Arg3: &Clock, Arg4: &TxContext) {
L5: loc0: u64
L6: loc1: u64
L7: loc2: u64
L8: loc3: &CosmeticType
L9: loc4: u64
L10: loc5: u64
L11: loc6: u64
L12: loc7: u64
L13: loc8: u64
L14: loc9: u64
L15: loc10: u64
L16: loc11: address
L17: loc12: &PlayerTank
L18: loc13: &mut PlayerTank
L19: loc14: &mut PlayerTank
L20: loc15: &PlayerTank
B0:
0CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
1ImmBorrowFieldGeneric[7](GameState.paused: bool)
2ReadRef
3Not
4BrFalse(6)
B1:
5Branch(16)
B2:
6MoveLoc[1](Arg1: &mut CosmeticVault)
7Pop
8MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
9Pop
10MoveLoc[4](Arg4: &TxContext)
11Pop
12MoveLoc[3](Arg3: &Clock)
13Pop
14LdConst[4](u64: 6)
15Abort
B3:
16MoveLoc[4](Arg4: &TxContext)
17Call tx_context::sender(&TxContext): address
18StLoc[16](loc11: address)
19CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
20ImmBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
21CopyLoc[16](loc11: address)
22Call table::contains<address, PlayerTank>(&Table<address, PlayerTank>, address): bool
23BrFalse(25)
B4:
24Branch(33)
B5:
25MoveLoc[1](Arg1: &mut CosmeticVault)
26Pop
27MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
28Pop
29MoveLoc[3](Arg3: &Clock)
30Pop
31LdConst[8](u64: 10)
32Abort
B6:
33MoveLoc[3](Arg3: &Clock)
34Call clock::timestamp_ms(&Clock): u64
35StLoc[14](loc9: u64)
36CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
37CopyLoc[16](loc11: address)
38CopyLoc[14](loc9: u64)
39Call ensure_repair_record<Ty0, Ty1>(&mut GameState<Ty0, Ty1>, address, u64)
40CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
41ImmBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
42CopyLoc[16](loc11: address)
43Call table::borrow<address, PlayerTank>(&Table<address, PlayerTank>, address): &PlayerTank
44StLoc[20](loc15: &PlayerTank)
45CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
46FreezeRef
47MoveLoc[20](loc15: &PlayerTank)
48CopyLoc[16](loc11: address)
49CopyLoc[14](loc9: u64)
50Call calculate_pending_rewards_v2<Ty0, Ty1>(&GameState<Ty0, Ty1>, &PlayerTank, address, u64): u64
51StLoc[15](loc10: u64)
52CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
53MutBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
54CopyLoc[16](loc11: address)
55Call table::borrow_mut<address, PlayerTank>(&mut Table<address, PlayerTank>, address): &mut PlayerTank
56StLoc[19](loc14: &mut PlayerTank)
57CopyLoc[15](loc10: u64)
58LdU64(0)
59Gt
60BrFalse(69)
B7:
61CopyLoc[19](loc14: &mut PlayerTank)
62ImmBorrowField[25](PlayerTank.unclaimed_rewards: u64)
63ReadRef
64MoveLoc[15](loc10: u64)
65Add
66CopyLoc[19](loc14: &mut PlayerTank)
67MutBorrowField[25](PlayerTank.unclaimed_rewards: u64)
68WriteRef
B8:
69MoveLoc[14](loc9: u64)
70MoveLoc[19](loc14: &mut PlayerTank)
71MutBorrowField[3](PlayerTank.last_claim_time: u64)
72WriteRef
73CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
74ImmBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
75CopyLoc[16](loc11: address)
76Call table::borrow<address, PlayerTank>(&Table<address, PlayerTank>, address): &PlayerTank
77StLoc[17](loc12: &PlayerTank)
78CopyLoc[17](loc12: &PlayerTank)
79ImmBorrowField[13](PlayerTank.tier: u8)
80ReadRef
81Call get_tank_cosmetic_slots(u8): u64
82StLoc[13](loc8: u64)
83CopyLoc[17](loc12: &PlayerTank)
84ImmBorrowField[16](PlayerTank.displayed_cosmetic_ids: vector<u64>)
85VecLen(1)
86MoveLoc[13](loc8: u64)
87Lt
88BrFalse(90)
B9:
89Branch(98)
B10:
90MoveLoc[1](Arg1: &mut CosmeticVault)
91Pop
92MoveLoc[17](loc12: &PlayerTank)
93Pop
94MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
95Pop
96LdConst[13](u64: 16)
97Abort
B11:
98ImmBorrowLoc[2](Arg2: BubbleCosmetic)
99ImmBorrowField[47](BubbleCosmetic.cosmetic_instance_id: u64)
100ReadRef
101StLoc[7](loc2: u64)
102CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
103ImmBorrowFieldGeneric[19](GameState.displayed_cosmetics: Table<u64, DisplayedCosmeticInfo>)
104CopyLoc[7](loc2: u64)
105Call table::contains<u64, DisplayedCosmeticInfo>(&Table<u64, DisplayedCosmeticInfo>, u64): bool
106Not
107BrFalse(109)
B12:
108Branch(117)
B13:
109MoveLoc[1](Arg1: &mut CosmeticVault)
110Pop
111MoveLoc[17](loc12: &PlayerTank)
112Pop
113MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
114Pop
115LdConst[16](u64: 19)
116Abort
B14:
117CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
118ImmBorrowFieldGeneric[17](GameState.cosmetic_types: Table<u64, CosmeticType>)
119ImmBorrowLoc[2](Arg2: BubbleCosmetic)
120ImmBorrowField[49](BubbleCosmetic.cosmetic_type_id: u64)
121ReadRef
122Call table::contains<u64, CosmeticType>(&Table<u64, CosmeticType>, u64): bool
123BrFalse(196)
B15:
124CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
125ImmBorrowFieldGeneric[17](GameState.cosmetic_types: Table<u64, CosmeticType>)
126ImmBorrowLoc[2](Arg2: BubbleCosmetic)
127ImmBorrowField[49](BubbleCosmetic.cosmetic_type_id: u64)
128ReadRef
129Call table::borrow<u64, CosmeticType>(&Table<u64, CosmeticType>, u64): &CosmeticType
130StLoc[8](loc3: &CosmeticType)
131LdU64(0)
132StLoc[9](loc4: u64)
133LdU64(0)
134StLoc[11](loc6: u64)
135CopyLoc[17](loc12: &PlayerTank)
136ImmBorrowField[16](PlayerTank.displayed_cosmetic_ids: vector<u64>)
137VecLen(1)
138StLoc[12](loc7: u64)
B16:
139CopyLoc[11](loc6: u64)
140CopyLoc[12](loc7: u64)
141Lt
142BrFalse(174)
B17:
143CopyLoc[17](loc12: &PlayerTank)
144ImmBorrowField[16](PlayerTank.displayed_cosmetic_ids: vector<u64>)
145CopyLoc[11](loc6: u64)
146VecImmBorrow(1)
147ReadRef
148StLoc[10](loc5: u64)
149CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
150ImmBorrowFieldGeneric[19](GameState.displayed_cosmetics: Table<u64, DisplayedCosmeticInfo>)
151CopyLoc[10](loc5: u64)
152Call table::contains<u64, DisplayedCosmeticInfo>(&Table<u64, DisplayedCosmeticInfo>, u64): bool
153BrFalse(169)
B18:
154CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
155ImmBorrowFieldGeneric[19](GameState.displayed_cosmetics: Table<u64, DisplayedCosmeticInfo>)
156MoveLoc[10](loc5: u64)
157Call table::borrow<u64, DisplayedCosmeticInfo>(&Table<u64, DisplayedCosmeticInfo>, u64): &DisplayedCosmeticInfo
158ImmBorrowField[50](DisplayedCosmeticInfo.cosmetic_type_id: u64)
159ReadRef
160ImmBorrowLoc[2](Arg2: BubbleCosmetic)
161ImmBorrowField[49](BubbleCosmetic.cosmetic_type_id: u64)
162ReadRef
163Eq
164BrFalse(169)
B19:
165MoveLoc[9](loc4: u64)
166LdU64(1)
167Add
168StLoc[9](loc4: u64)
B20:
169MoveLoc[11](loc6: u64)
170LdU64(1)
171Add
172StLoc[11](loc6: u64)
173Branch(139)
B21:
174MoveLoc[17](loc12: &PlayerTank)
175Pop
176MoveLoc[9](loc4: u64)
177CopyLoc[8](loc3: &CosmeticType)
178ImmBorrowField[51](CosmeticType.per_facility: u64)
179ReadRef
180Lt
181BrFalse(183)
B22:
182Branch(191)
B23:
183MoveLoc[1](Arg1: &mut CosmeticVault)
184Pop
185MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
186Pop
187MoveLoc[8](loc3: &CosmeticType)
188Pop
189LdConst[14](u64: 17)
190Abort
B24:
191MoveLoc[8](loc3: &CosmeticType)
192ImmBorrowField[45](CosmeticType.bubble_pressure: u64)
193ReadRef
194StLoc[5](loc0: u64)
195Branch(202)
B25:
196MoveLoc[17](loc12: &PlayerTank)
197Pop
198ImmBorrowLoc[2](Arg2: BubbleCosmetic)
199ImmBorrowField[52](BubbleCosmetic.bubble_pressure: u64)
200ReadRef
201StLoc[5](loc0: u64)
B26:
202MoveLoc[5](loc0: u64)
203StLoc[6](loc1: u64)
204CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
205MutBorrowFieldGeneric[19](GameState.displayed_cosmetics: Table<u64, DisplayedCosmeticInfo>)
206CopyLoc[7](loc2: u64)
207CopyLoc[16](loc11: address)
208ImmBorrowLoc[2](Arg2: BubbleCosmetic)
209ImmBorrowField[49](BubbleCosmetic.cosmetic_type_id: u64)
210ReadRef
211CopyLoc[6](loc1: u64)
212Pack[8](DisplayedCosmeticInfo)
213Call table::add<u64, DisplayedCosmeticInfo>(&mut Table<u64, DisplayedCosmeticInfo>, u64, DisplayedCosmeticInfo)
214MoveLoc[1](Arg1: &mut CosmeticVault)
215MutBorrowField[58](CosmeticVault.cosmetics: Table<u64, BubbleCosmetic>)
216CopyLoc[7](loc2: u64)
217MoveLoc[2](Arg2: BubbleCosmetic)
218Call table::add<u64, BubbleCosmetic>(&mut Table<u64, BubbleCosmetic>, u64, BubbleCosmetic)
219CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
220MutBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
221MoveLoc[16](loc11: address)
222Call table::borrow_mut<address, PlayerTank>(&mut Table<address, PlayerTank>, address): &mut PlayerTank
223StLoc[18](loc13: &mut PlayerTank)
224CopyLoc[18](loc13: &mut PlayerTank)
225MutBorrowField[16](PlayerTank.displayed_cosmetic_ids: vector<u64>)
226MoveLoc[7](loc2: u64)
227VecPushBack(1)
228CopyLoc[18](loc13: &mut PlayerTank)
229ImmBorrowField[1](PlayerTank.total_pressure: u64)
230ReadRef
231CopyLoc[6](loc1: u64)
232Add
233MoveLoc[18](loc13: &mut PlayerTank)
234MutBorrowField[1](PlayerTank.total_pressure: u64)
235WriteRef
236CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
237ImmBorrowFieldGeneric[1](GameState.total_network_pressure: u64)
238ReadRef
239MoveLoc[6](loc1: u64)
240Add
241MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
242MutBorrowFieldGeneric[1](GameState.total_network_pressure: u64)
243WriteRef
244Ret
}
entry remove_cosmetic_v2<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: &mut CosmeticVault, Arg2: u64, Arg3: &Clock, Arg4: &TxContext) {
L5: loc0: u64
L6: loc1: u64
L7: loc2: u64
L8: loc3: u64
L9: loc4: DisplayedCosmeticInfo
L10: loc5: address
L11: loc6: &mut PlayerTank
L12: loc7: &mut PlayerTank
L13: loc8: &PlayerTank
B0:
0CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
1ImmBorrowFieldGeneric[7](GameState.paused: bool)
2ReadRef
3Not
4BrFalse(6)
B1:
5Branch(16)
B2:
6MoveLoc[1](Arg1: &mut CosmeticVault)
7Pop
8MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
9Pop
10MoveLoc[4](Arg4: &TxContext)
11Pop
12MoveLoc[3](Arg3: &Clock)
13Pop
14LdConst[4](u64: 6)
15Abort
B3:
16MoveLoc[4](Arg4: &TxContext)
17Call tx_context::sender(&TxContext): address
18StLoc[10](loc5: address)
19CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
20ImmBorrowFieldGeneric[19](GameState.displayed_cosmetics: Table<u64, DisplayedCosmeticInfo>)
21CopyLoc[2](Arg2: u64)
22Call table::contains<u64, DisplayedCosmeticInfo>(&Table<u64, DisplayedCosmeticInfo>, u64): bool
23BrFalse(25)
B4:
24Branch(33)
B5:
25MoveLoc[1](Arg1: &mut CosmeticVault)
26Pop
27MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
28Pop
29MoveLoc[3](Arg3: &Clock)
30Pop
31LdConst[15](u64: 18)
32Abort
B6:
33CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
34ImmBorrowFieldGeneric[19](GameState.displayed_cosmetics: Table<u64, DisplayedCosmeticInfo>)
35CopyLoc[2](Arg2: u64)
36Call table::borrow<u64, DisplayedCosmeticInfo>(&Table<u64, DisplayedCosmeticInfo>, u64): &DisplayedCosmeticInfo
37ImmBorrowField[53](DisplayedCosmeticInfo.owner: address)
38ReadRef
39CopyLoc[10](loc5: address)
40Eq
41BrFalse(43)
B7:
42Branch(51)
B8:
43MoveLoc[1](Arg1: &mut CosmeticVault)
44Pop
45MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
46Pop
47MoveLoc[3](Arg3: &Clock)
48Pop
49LdConst[3](u64: 4)
50Abort
B9:
51CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
52MutBorrowFieldGeneric[19](GameState.displayed_cosmetics: Table<u64, DisplayedCosmeticInfo>)
53CopyLoc[2](Arg2: u64)
54Call table::remove<u64, DisplayedCosmeticInfo>(&mut Table<u64, DisplayedCosmeticInfo>, u64): DisplayedCosmeticInfo
55StLoc[9](loc4: DisplayedCosmeticInfo)
56MoveLoc[3](Arg3: &Clock)
57Call clock::timestamp_ms(&Clock): u64
58StLoc[7](loc2: u64)
59CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
60CopyLoc[10](loc5: address)
61CopyLoc[7](loc2: u64)
62Call ensure_repair_record<Ty0, Ty1>(&mut GameState<Ty0, Ty1>, address, u64)
63CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
64ImmBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
65CopyLoc[10](loc5: address)
66Call table::borrow<address, PlayerTank>(&Table<address, PlayerTank>, address): &PlayerTank
67StLoc[13](loc8: &PlayerTank)
68CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
69FreezeRef
70MoveLoc[13](loc8: &PlayerTank)
71CopyLoc[10](loc5: address)
72CopyLoc[7](loc2: u64)
73Call calculate_pending_rewards_v2<Ty0, Ty1>(&GameState<Ty0, Ty1>, &PlayerTank, address, u64): u64
74StLoc[8](loc3: u64)
75CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
76MutBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
77CopyLoc[10](loc5: address)
78Call table::borrow_mut<address, PlayerTank>(&mut Table<address, PlayerTank>, address): &mut PlayerTank
79StLoc[12](loc7: &mut PlayerTank)
80CopyLoc[8](loc3: u64)
81LdU64(0)
82Gt
83BrFalse(92)
B10:
84CopyLoc[12](loc7: &mut PlayerTank)
85ImmBorrowField[25](PlayerTank.unclaimed_rewards: u64)
86ReadRef
87MoveLoc[8](loc3: u64)
88Add
89CopyLoc[12](loc7: &mut PlayerTank)
90MutBorrowField[25](PlayerTank.unclaimed_rewards: u64)
91WriteRef
B11:
92MoveLoc[7](loc2: u64)
93MoveLoc[12](loc7: &mut PlayerTank)
94MutBorrowField[3](PlayerTank.last_claim_time: u64)
95WriteRef
96CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
97MutBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
98CopyLoc[10](loc5: address)
99Call table::borrow_mut<address, PlayerTank>(&mut Table<address, PlayerTank>, address): &mut PlayerTank
100StLoc[11](loc6: &mut PlayerTank)
101LdU64(0)
102StLoc[5](loc0: u64)
103CopyLoc[11](loc6: &mut PlayerTank)
104ImmBorrowField[16](PlayerTank.displayed_cosmetic_ids: vector<u64>)
105VecLen(1)
106StLoc[6](loc1: u64)
B12:
107CopyLoc[5](loc0: u64)
108CopyLoc[6](loc1: u64)
109Lt
110BrFalse(131)
B13:
111CopyLoc[11](loc6: &mut PlayerTank)
112ImmBorrowField[16](PlayerTank.displayed_cosmetic_ids: vector<u64>)
113CopyLoc[5](loc0: u64)
114VecImmBorrow(1)
115ReadRef
116CopyLoc[2](Arg2: u64)
117Eq
118BrFalse(126)
B14:
119CopyLoc[11](loc6: &mut PlayerTank)
120MutBorrowField[16](PlayerTank.displayed_cosmetic_ids: vector<u64>)
121MoveLoc[5](loc0: u64)
122Call vector::swap_remove<u64>(&mut vector<u64>, u64): u64
123Pop
124CopyLoc[6](loc1: u64)
125StLoc[5](loc0: u64)
B15:
126MoveLoc[5](loc0: u64)
127LdU64(1)
128Add
129StLoc[5](loc0: u64)
130Branch(107)
B16:
131CopyLoc[11](loc6: &mut PlayerTank)
132ImmBorrowField[1](PlayerTank.total_pressure: u64)
133ReadRef
134ImmBorrowLoc[9](loc4: DisplayedCosmeticInfo)
135ImmBorrowField[54](DisplayedCosmeticInfo.bubble_pressure: u64)
136ReadRef
137Sub
138MoveLoc[11](loc6: &mut PlayerTank)
139MutBorrowField[1](PlayerTank.total_pressure: u64)
140WriteRef
141CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
142ImmBorrowFieldGeneric[1](GameState.total_network_pressure: u64)
143ReadRef
144ImmBorrowLoc[9](loc4: DisplayedCosmeticInfo)
145ImmBorrowField[54](DisplayedCosmeticInfo.bubble_pressure: u64)
146ReadRef
147Sub
148MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
149MutBorrowFieldGeneric[1](GameState.total_network_pressure: u64)
150WriteRef
151CopyLoc[1](Arg1: &mut CosmeticVault)
152ImmBorrowField[58](CosmeticVault.cosmetics: Table<u64, BubbleCosmetic>)
153CopyLoc[2](Arg2: u64)
154Call table::contains<u64, BubbleCosmetic>(&Table<u64, BubbleCosmetic>, u64): bool
155BrFalse(164)
B17:
156Branch(157)
B18:
157MoveLoc[1](Arg1: &mut CosmeticVault)
158MutBorrowField[58](CosmeticVault.cosmetics: Table<u64, BubbleCosmetic>)
159MoveLoc[2](Arg2: u64)
160Call table::remove<u64, BubbleCosmetic>(&mut Table<u64, BubbleCosmetic>, u64): BubbleCosmetic
161MoveLoc[10](loc5: address)
162Call transfer::public_transfer<BubbleCosmetic>(BubbleCosmetic, address)
163Branch(166)
B19:
164MoveLoc[1](Arg1: &mut CosmeticVault)
165Pop
B20:
166Ret
}
entry admin_vault_return<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: &mut CosmeticVault, Arg2: &AdminCap, Arg3: u64, Arg4: &Clock) {
L5: loc0: u64
L6: loc1: u64
L7: loc2: u64
L8: loc3: address
L9: loc4: u64
L10: loc5: DisplayedCosmeticInfo
L11: loc6: &mut PlayerTank
L12: loc7: &mut PlayerTank
L13: loc8: &PlayerTank
B0:
0CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
1ImmBorrowFieldGeneric[19](GameState.displayed_cosmetics: Table<u64, DisplayedCosmeticInfo>)
2CopyLoc[3](Arg3: u64)
3Call table::contains<u64, DisplayedCosmeticInfo>(&Table<u64, DisplayedCosmeticInfo>, u64): bool
4BrFalse(6)
B1:
5Branch(14)
B2:
6MoveLoc[1](Arg1: &mut CosmeticVault)
7Pop
8MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
9Pop
10MoveLoc[4](Arg4: &Clock)
11Pop
12LdConst[15](u64: 18)
13Abort
B3:
14CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
15MutBorrowFieldGeneric[19](GameState.displayed_cosmetics: Table<u64, DisplayedCosmeticInfo>)
16CopyLoc[3](Arg3: u64)
17Call table::remove<u64, DisplayedCosmeticInfo>(&mut Table<u64, DisplayedCosmeticInfo>, u64): DisplayedCosmeticInfo
18StLoc[10](loc5: DisplayedCosmeticInfo)
19ImmBorrowLoc[10](loc5: DisplayedCosmeticInfo)
20ImmBorrowField[53](DisplayedCosmeticInfo.owner: address)
21ReadRef
22StLoc[8](loc3: address)
23MoveLoc[4](Arg4: &Clock)
24Call clock::timestamp_ms(&Clock): u64
25StLoc[7](loc2: u64)
26CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
27ImmBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
28CopyLoc[8](loc3: address)
29Call table::contains<address, PlayerTank>(&Table<address, PlayerTank>, address): bool
30BrFalse(125)
B4:
31CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
32CopyLoc[8](loc3: address)
33CopyLoc[7](loc2: u64)
34Call ensure_repair_record<Ty0, Ty1>(&mut GameState<Ty0, Ty1>, address, u64)
35CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
36ImmBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
37CopyLoc[8](loc3: address)
38Call table::borrow<address, PlayerTank>(&Table<address, PlayerTank>, address): &PlayerTank
39StLoc[13](loc8: &PlayerTank)
40CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
41FreezeRef
42MoveLoc[13](loc8: &PlayerTank)
43CopyLoc[8](loc3: address)
44CopyLoc[7](loc2: u64)
45Call calculate_pending_rewards_v2<Ty0, Ty1>(&GameState<Ty0, Ty1>, &PlayerTank, address, u64): u64
46StLoc[9](loc4: u64)
47CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
48MutBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
49CopyLoc[8](loc3: address)
50Call table::borrow_mut<address, PlayerTank>(&mut Table<address, PlayerTank>, address): &mut PlayerTank
51StLoc[12](loc7: &mut PlayerTank)
52CopyLoc[9](loc4: u64)
53LdU64(0)
54Gt
55BrFalse(64)
B5:
56CopyLoc[12](loc7: &mut PlayerTank)
57ImmBorrowField[25](PlayerTank.unclaimed_rewards: u64)
58ReadRef
59MoveLoc[9](loc4: u64)
60Add
61CopyLoc[12](loc7: &mut PlayerTank)
62MutBorrowField[25](PlayerTank.unclaimed_rewards: u64)
63WriteRef
B6:
64MoveLoc[7](loc2: u64)
65MoveLoc[12](loc7: &mut PlayerTank)
66MutBorrowField[3](PlayerTank.last_claim_time: u64)
67WriteRef
68CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
69MutBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
70CopyLoc[8](loc3: address)
71Call table::borrow_mut<address, PlayerTank>(&mut Table<address, PlayerTank>, address): &mut PlayerTank
72StLoc[11](loc6: &mut PlayerTank)
73LdU64(0)
74StLoc[5](loc0: u64)
75CopyLoc[11](loc6: &mut PlayerTank)
76ImmBorrowField[16](PlayerTank.displayed_cosmetic_ids: vector<u64>)
77VecLen(1)
78StLoc[6](loc1: u64)
B7:
79CopyLoc[5](loc0: u64)
80CopyLoc[6](loc1: u64)
81Lt
82BrFalse(104)
B8:
83CopyLoc[11](loc6: &mut PlayerTank)
84ImmBorrowField[16](PlayerTank.displayed_cosmetic_ids: vector<u64>)
85CopyLoc[5](loc0: u64)
86VecImmBorrow(1)
87ReadRef
88CopyLoc[3](Arg3: u64)
89Eq
90BrFalse(99)
B9:
91CopyLoc[11](loc6: &mut PlayerTank)
92MutBorrowField[16](PlayerTank.displayed_cosmetic_ids: vector<u64>)
93MoveLoc[5](loc0: u64)
94Call vector::swap_remove<u64>(&mut vector<u64>, u64): u64
95Pop
96CopyLoc[6](loc1: u64)
97StLoc[5](loc0: u64)
98Branch(99)
B10:
99MoveLoc[5](loc0: u64)
100LdU64(1)
101Add
102StLoc[5](loc0: u64)
103Branch(79)
B11:
104CopyLoc[11](loc6: &mut PlayerTank)
105ImmBorrowField[1](PlayerTank.total_pressure: u64)
106ReadRef
107ImmBorrowLoc[10](loc5: DisplayedCosmeticInfo)
108ImmBorrowField[54](DisplayedCosmeticInfo.bubble_pressure: u64)
109ReadRef
110Sub
111MoveLoc[11](loc6: &mut PlayerTank)
112MutBorrowField[1](PlayerTank.total_pressure: u64)
113WriteRef
114CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
115ImmBorrowFieldGeneric[1](GameState.total_network_pressure: u64)
116ReadRef
117ImmBorrowLoc[10](loc5: DisplayedCosmeticInfo)
118ImmBorrowField[54](DisplayedCosmeticInfo.bubble_pressure: u64)
119ReadRef
120Sub
121MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
122MutBorrowFieldGeneric[1](GameState.total_network_pressure: u64)
123WriteRef
124Branch(127)
B12:
125MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
126Pop
B13:
127MoveLoc[1](Arg1: &mut CosmeticVault)
128MutBorrowField[58](CosmeticVault.cosmetics: Table<u64, BubbleCosmetic>)
129MoveLoc[3](Arg3: u64)
130Call table::remove<u64, BubbleCosmetic>(&mut Table<u64, BubbleCosmetic>, u64): BubbleCosmetic
131MoveLoc[8](loc3: address)
132Call transfer::public_transfer<BubbleCosmetic>(BubbleCosmetic, address)
133Ret
}
entry admin_vault_force_return(Arg0: &mut CosmeticVault, Arg1: &AdminCap, Arg2: u64, Arg3: address) {
B0:
0CopyLoc[0](Arg0: &mut CosmeticVault)
1ImmBorrowField[58](CosmeticVault.cosmetics: Table<u64, BubbleCosmetic>)
2CopyLoc[2](Arg2: u64)
3Call table::contains<u64, BubbleCosmetic>(&Table<u64, BubbleCosmetic>, u64): bool
4BrFalse(6)
B1:
5Branch(10)
B2:
6MoveLoc[0](Arg0: &mut CosmeticVault)
7Pop
8LdConst[15](u64: 18)
9Abort
B3:
10MoveLoc[0](Arg0: &mut CosmeticVault)
11MutBorrowField[58](CosmeticVault.cosmetics: Table<u64, BubbleCosmetic>)
12MoveLoc[2](Arg2: u64)
13Call table::remove<u64, BubbleCosmetic>(&mut Table<u64, BubbleCosmetic>, u64): BubbleCosmetic
14MoveLoc[3](Arg3: address)
15Call transfer::public_transfer<BubbleCosmetic>(BubbleCosmetic, address)
16Ret
}
public get_total_network_pressure<Ty0, Ty1>(Arg0: &GameState<Ty0, Ty1>): u64 {
B0:
0MoveLoc[0](Arg0: &GameState<Ty0, Ty1>)
1ImmBorrowFieldGeneric[1](GameState.total_network_pressure: u64)
2ReadRef
3Ret
}
public get_total_players<Ty0, Ty1>(Arg0: &GameState<Ty0, Ty1>): u64 {
B0:
0MoveLoc[0](Arg0: &GameState<Ty0, Ty1>)
1ImmBorrowFieldGeneric[9](GameState.total_players: u64)
2ReadRef
3Ret
}
public get_total_minted<Ty0, Ty1>(Arg0: &GameState<Ty0, Ty1>): u64 {
B0:
0MoveLoc[0](Arg0: &GameState<Ty0, Ty1>)
1ImmBorrowFieldGeneric[2](GameState.total_minted: u64)
2ReadRef
3Ret
}
public get_total_burned<Ty0, Ty1>(Arg0: &GameState<Ty0, Ty1>): u64 {
B0:
0MoveLoc[0](Arg0: &GameState<Ty0, Ty1>)
1ImmBorrowFieldGeneric[16](GameState.total_burned: u64)
2ReadRef
3Ret
}
public get_total_bublz_burned<Ty0, Ty1>(Arg0: &GameState<Ty0, Ty1>): u64 {
B0:
0MoveLoc[0](Arg0: &GameState<Ty0, Ty1>)
1ImmBorrowFieldGeneric[22](GameState.total_bublz_burned: u64)
2ReadRef
3Ret
}
public get_game_start<Ty0, Ty1>(Arg0: &GameState<Ty0, Ty1>): u64 {
B0:
0MoveLoc[0](Arg0: &GameState<Ty0, Ty1>)
1ImmBorrowFieldGeneric[0](GameState.game_start: u64)
2ReadRef
3Ret
}
public get_tier(Arg0: &BubbleGenerator): u8 {
B0:
0MoveLoc[0](Arg0: &BubbleGenerator)
1ImmBorrowField[21](BubbleGenerator.tier: u8)
2ReadRef
3Ret
}
compute_fee_from_rep(Arg0: &RepProfile, Arg1: &RepConfig, Arg2: u64): u64 {
L3: loc0: u64
L4: loc1: bool
L5: loc2: u64
L6: loc3: u64
L7: loc4: u64
L8: loc5: u64
L9: loc6: u64
B0:
0CopyLoc[1](Arg1: &RepConfig)
1ImmBorrowField[59](RepConfig.base_fee_bps: u64)
2ReadRef
3StLoc[8](loc5: u64)
4CopyLoc[0](Arg0: &RepProfile)
5ImmBorrowField[60](RepProfile.streak_fee_locked: bool)
6ReadRef
7BrFalse(30)
B1:
8MoveLoc[0](Arg0: &RepProfile)
9Pop
10CopyLoc[8](loc5: u64)
11CopyLoc[1](Arg1: &RepConfig)
12ImmBorrowField[61](RepConfig.max_streak_reduction_bps: u64)
13ReadRef
14Gt
15BrFalse(23)
B2:
16MoveLoc[8](loc5: u64)
17MoveLoc[1](Arg1: &RepConfig)
18ImmBorrowField[61](RepConfig.max_streak_reduction_bps: u64)
19ReadRef
20Sub
21StLoc[3](loc0: u64)
22Branch(27)
B3:
23MoveLoc[1](Arg1: &RepConfig)
24Pop
25LdU64(0)
26StLoc[3](loc0: u64)
B4:
27MoveLoc[3](loc0: u64)
28StLoc[8](loc5: u64)
29Branch(94)
B5:
30CopyLoc[0](Arg0: &RepProfile)
31ImmBorrowField[62](RepProfile.last_checkin_ms: u64)
32ReadRef
33LdU64(0)
34Gt
35BrFalse(47)
B6:
36MoveLoc[2](Arg2: u64)
37CopyLoc[0](Arg0: &RepProfile)
38ImmBorrowField[62](RepProfile.last_checkin_ms: u64)
39ReadRef
40CopyLoc[1](Arg1: &RepConfig)
41ImmBorrowField[63](RepConfig.streak_window_ms: u64)
42ReadRef
43Add
44Le
45StLoc[4](loc1: bool)
46Branch(49)
B7:
47LdFalse
48StLoc[4](loc1: bool)
B8:
49MoveLoc[4](loc1: bool)
50BrFalse(90)
B9:
51MoveLoc[0](Arg0: &RepProfile)
52ImmBorrowField[64](RepProfile.streak: u64)
53ReadRef
54CopyLoc[1](Arg1: &RepConfig)
55ImmBorrowField[65](RepConfig.streak_reduction_per_day_bps: u64)
56ReadRef
57Mul
58StLoc[9](loc6: u64)
59CopyLoc[9](loc6: u64)
60CopyLoc[1](Arg1: &RepConfig)
61ImmBorrowField[61](RepConfig.max_streak_reduction_bps: u64)
62ReadRef
63Gt
64BrFalse(70)
B10:
65MoveLoc[1](Arg1: &RepConfig)
66ImmBorrowField[61](RepConfig.max_streak_reduction_bps: u64)
67ReadRef
68StLoc[5](loc2: u64)
69Branch(74)
B11:
70MoveLoc[1](Arg1: &RepConfig)
71Pop
72MoveLoc[9](loc6: u64)
73StLoc[5](loc2: u64)
B12:
74MoveLoc[5](loc2: u64)
75StLoc[7](loc4: u64)
76CopyLoc[8](loc5: u64)
77CopyLoc[7](loc4: u64)
78Gt
79BrFalse(85)
B13:
80MoveLoc[8](loc5: u64)
81MoveLoc[7](loc4: u64)
82Sub
83StLoc[6](loc3: u64)
84Branch(87)
B14:
85LdU64(0)
86StLoc[6](loc3: u64)
B15:
87MoveLoc[6](loc3: u64)
88StLoc[8](loc5: u64)
89Branch(94)
B16:
90MoveLoc[0](Arg0: &RepProfile)
91Pop
92MoveLoc[1](Arg1: &RepConfig)
93Pop
B17:
94MoveLoc[8](loc5: u64)
95Ret
}
get_player_fee_bps<Ty0, Ty1>(Arg0: &GameState<Ty0, Ty1>, Arg1: address, Arg2: u64): u64 {
L3: loc0: &RepConfig
L4: loc1: &Table<address, u64>
L5: loc2: &Table<address, RepProfile>
B0:
0CopyLoc[0](Arg0: &GameState<Ty0, Ty1>)
1ImmBorrowFieldGeneric[23](GameState.id: UID)
2LdFalse
3Pack[0](FeeTableKey)
4Call dynamic_field::exists_<FeeTableKey>(&UID, FeeTableKey): bool
5BrFalse(25)
B1:
6CopyLoc[0](Arg0: &GameState<Ty0, Ty1>)
7ImmBorrowFieldGeneric[23](GameState.id: UID)
8LdFalse
9Pack[0](FeeTableKey)
10Call dynamic_field::borrow<FeeTableKey, Table<address, u64>>(&UID, FeeTableKey): &Table<address, u64>
11StLoc[4](loc1: &Table<address, u64>)
12CopyLoc[4](loc1: &Table<address, u64>)
13CopyLoc[1](Arg1: address)
14Call table::contains<address, u64>(&Table<address, u64>, address): bool
15BrFalse(23)
B2:
16MoveLoc[0](Arg0: &GameState<Ty0, Ty1>)
17Pop
18MoveLoc[4](loc1: &Table<address, u64>)
19MoveLoc[1](Arg1: address)
20Call table::borrow<address, u64>(&Table<address, u64>, address): &u64
21ReadRef
22Ret
B3:
23MoveLoc[4](loc1: &Table<address, u64>)
24Pop
B4:
25CopyLoc[0](Arg0: &GameState<Ty0, Ty1>)
26ImmBorrowFieldGeneric[23](GameState.id: UID)
27LdFalse
28Pack[23](RepConfigKey)
29Call dynamic_field::exists_<RepConfigKey>(&UID, RepConfigKey): bool
30BrFalse(85)
B5:
31CopyLoc[0](Arg0: &GameState<Ty0, Ty1>)
32ImmBorrowFieldGeneric[23](GameState.id: UID)
33LdFalse
34Pack[23](RepConfigKey)
35Call dynamic_field::borrow<RepConfigKey, RepConfig>(&UID, RepConfigKey): &RepConfig
36StLoc[3](loc0: &RepConfig)
37CopyLoc[0](Arg0: &GameState<Ty0, Ty1>)
38ImmBorrowFieldGeneric[23](GameState.id: UID)
39LdFalse
40Pack[22](RepTableKey)
41Call dynamic_field::exists_<RepTableKey>(&UID, RepTableKey): bool
42BrFalse(64)
B6:
43CopyLoc[0](Arg0: &GameState<Ty0, Ty1>)
44ImmBorrowFieldGeneric[23](GameState.id: UID)
45LdFalse
46Pack[22](RepTableKey)
47Call dynamic_field::borrow<RepTableKey, Table<address, RepProfile>>(&UID, RepTableKey): &Table<address, RepProfile>
48StLoc[5](loc2: &Table<address, RepProfile>)
49CopyLoc[5](loc2: &Table<address, RepProfile>)
50CopyLoc[1](Arg1: address)
51Call table::contains<address, RepProfile>(&Table<address, RepProfile>, address): bool
52BrFalse(62)
B7:
53MoveLoc[0](Arg0: &GameState<Ty0, Ty1>)
54Pop
55MoveLoc[5](loc2: &Table<address, RepProfile>)
56MoveLoc[1](Arg1: address)
57Call table::borrow<address, RepProfile>(&Table<address, RepProfile>, address): &RepProfile
58MoveLoc[3](loc0: &RepConfig)
59MoveLoc[2](Arg2: u64)
60Call compute_fee_from_rep(&RepProfile, &RepConfig, u64): u64
61Ret
B8:
62MoveLoc[5](loc2: &Table<address, RepProfile>)
63Pop
B9:
64CopyLoc[0](Arg0: &GameState<Ty0, Ty1>)
65ImmBorrowFieldGeneric[23](GameState.id: UID)
66LdFalse
67Pack[1](DefaultFeeKey)
68Call dynamic_field::exists_<DefaultFeeKey>(&UID, DefaultFeeKey): bool
69BrFalse(79)
B10:
70MoveLoc[3](loc0: &RepConfig)
71Pop
72MoveLoc[0](Arg0: &GameState<Ty0, Ty1>)
73ImmBorrowFieldGeneric[23](GameState.id: UID)
74LdFalse
75Pack[1](DefaultFeeKey)
76Call dynamic_field::borrow<DefaultFeeKey, u64>(&UID, DefaultFeeKey): &u64
77ReadRef
78Ret
B11:
79MoveLoc[0](Arg0: &GameState<Ty0, Ty1>)
80Pop
81MoveLoc[3](loc0: &RepConfig)
82ImmBorrowField[59](RepConfig.base_fee_bps: u64)
83ReadRef
84Ret
B12:
85MoveLoc[0](Arg0: &GameState<Ty0, Ty1>)
86Pop
87LdConst[27](u64: 1500)
88Ret
}
add_rep_capped(Arg0: &mut RepProfile, Arg1: u64, Arg2: u64, Arg3: u64): u64 {
L4: loc0: u64
L5: loc1: u64
L6: loc2: u64
L7: loc3: u64
B0:
0CopyLoc[2](Arg2: u64)
1CopyLoc[0](Arg0: &mut RepProfile)
2ImmBorrowField[67](RepProfile.day_start_ms: u64)
3ReadRef
4LdConst[23](u64: 8640..)
5Add
6Ge
7BrFalse(16)
B1:
8LdU64(0)
9CopyLoc[0](Arg0: &mut RepProfile)
10MutBorrowField[68](RepProfile.rep_added_today: u64)
11WriteRef
12MoveLoc[2](Arg2: u64)
13CopyLoc[0](Arg0: &mut RepProfile)
14MutBorrowField[67](RepProfile.day_start_ms: u64)
15WriteRef
B2:
16CopyLoc[3](Arg3: u64)
17CopyLoc[0](Arg0: &mut RepProfile)
18ImmBorrowField[68](RepProfile.rep_added_today: u64)
19ReadRef
20Gt
21BrFalse(29)
B3:
22MoveLoc[3](Arg3: u64)
23CopyLoc[0](Arg0: &mut RepProfile)
24ImmBorrowField[68](RepProfile.rep_added_today: u64)
25ReadRef
26Sub
27StLoc[4](loc0: u64)
28Branch(31)
B4:
29LdU64(0)
30StLoc[4](loc0: u64)
B5:
31MoveLoc[4](loc0: u64)
32StLoc[7](loc3: u64)
33CopyLoc[1](Arg1: u64)
34CopyLoc[7](loc3: u64)
35Gt
36BrFalse(40)
B6:
37MoveLoc[7](loc3: u64)
38StLoc[5](loc1: u64)
39Branch(42)
B7:
40MoveLoc[1](Arg1: u64)
41StLoc[5](loc1: u64)
B8:
42MoveLoc[5](loc1: u64)
43StLoc[6](loc2: u64)
44CopyLoc[6](loc2: u64)
45LdU64(0)
46Gt
47BrFalse(65)
B9:
48CopyLoc[0](Arg0: &mut RepProfile)
49ImmBorrowField[69](RepProfile.rep: u64)
50ReadRef
51CopyLoc[6](loc2: u64)
52Add
53CopyLoc[0](Arg0: &mut RepProfile)
54MutBorrowField[69](RepProfile.rep: u64)
55WriteRef
56CopyLoc[0](Arg0: &mut RepProfile)
57ImmBorrowField[68](RepProfile.rep_added_today: u64)
58ReadRef
59CopyLoc[6](loc2: u64)
60Add
61MoveLoc[0](Arg0: &mut RepProfile)
62MutBorrowField[68](RepProfile.rep_added_today: u64)
63WriteRef
64Branch(67)
B10:
65MoveLoc[0](Arg0: &mut RepProfile)
66Pop
B11:
67MoveLoc[6](loc2: u64)
68Ret
}
entry rep_register<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: &Clock, Arg2: &TxContext) {
L3: loc0: &mut Table<address, RepProfile>
L4: loc1: address
B0:
0CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
1ImmBorrowFieldGeneric[23](GameState.id: UID)
2LdFalse
3Pack[22](RepTableKey)
4Call dynamic_field::exists_<RepTableKey>(&UID, RepTableKey): bool
5BrFalse(7)
B1:
6Branch(15)
B2:
7MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
8Pop
9MoveLoc[2](Arg2: &TxContext)
10Pop
11MoveLoc[1](Arg1: &Clock)
12Pop
13LdConst[34](u64: 100)
14Abort
B3:
15MoveLoc[2](Arg2: &TxContext)
16Call tx_context::sender(&TxContext): address
17StLoc[4](loc1: address)
18CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
19ImmBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
20CopyLoc[4](loc1: address)
21Call table::contains<address, PlayerTank>(&Table<address, PlayerTank>, address): bool
22BrFalse(24)
B4:
23Branch(30)
B5:
24MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
25Pop
26MoveLoc[1](Arg1: &Clock)
27Pop
28LdConst[8](u64: 10)
29Abort
B6:
30MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
31MutBorrowFieldGeneric[23](GameState.id: UID)
32LdFalse
33Pack[22](RepTableKey)
34Call dynamic_field::borrow_mut<RepTableKey, Table<address, RepProfile>>(&mut UID, RepTableKey): &mut Table<address, RepProfile>
35StLoc[3](loc0: &mut Table<address, RepProfile>)
36CopyLoc[3](loc0: &mut Table<address, RepProfile>)
37FreezeRef
38CopyLoc[4](loc1: address)
39Call table::contains<address, RepProfile>(&Table<address, RepProfile>, address): bool
40Not
41BrFalse(43)
B7:
42Branch(49)
B8:
43MoveLoc[3](loc0: &mut Table<address, RepProfile>)
44Pop
45MoveLoc[1](Arg1: &Clock)
46Pop
47LdConst[38](u64: 109)
48Abort
B9:
49MoveLoc[3](loc0: &mut Table<address, RepProfile>)
50MoveLoc[4](loc1: address)
51LdU64(0)
52LdU64(0)
53LdU64(0)
54LdU64(0)
55LdU64(0)
56MoveLoc[1](Arg1: &Clock)
57Call clock::timestamp_ms(&Clock): u64
58LdFalse
59Pack[24](RepProfile)
60Call table::add<address, RepProfile>(&mut Table<address, RepProfile>, address, RepProfile)
61Ret
}
entry daily_checkin<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: &Clock, Arg2: &TxContext) {
L3: loc0: bool
L4: loc1: bool
L5: loc2: u64
L6: loc3: u64
L7: loc4: u64
L8: loc5: &RepConfig
L9: loc6: u64
L10: loc7: u64
L11: loc8: &mut RepProfile
L12: loc9: &mut Table<address, RepProfile>
L13: loc10: address
L14: loc11: u64
L15: loc12: u64
B0:
0CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
1ImmBorrowFieldGeneric[23](GameState.id: UID)
2LdFalse
3Pack[23](RepConfigKey)
4Call dynamic_field::exists_<RepConfigKey>(&UID, RepConfigKey): bool
5BrFalse(7)
B1:
6Branch(15)
B2:
7MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
8Pop
9MoveLoc[2](Arg2: &TxContext)
10Pop
11MoveLoc[1](Arg1: &Clock)
12Pop
13LdConst[34](u64: 100)
14Abort
B3:
15MoveLoc[2](Arg2: &TxContext)
16Call tx_context::sender(&TxContext): address
17StLoc[13](loc10: address)
18MoveLoc[1](Arg1: &Clock)
19Call clock::timestamp_ms(&Clock): u64
20StLoc[10](loc7: u64)
21CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
22ImmBorrowFieldGeneric[23](GameState.id: UID)
23LdFalse
24Pack[23](RepConfigKey)
25Call dynamic_field::borrow<RepConfigKey, RepConfig>(&UID, RepConfigKey): &RepConfig
26StLoc[8](loc5: &RepConfig)
27CopyLoc[8](loc5: &RepConfig)
28ImmBorrowField[70](RepConfig.checkin_cooldown_ms: u64)
29ReadRef
30StLoc[6](loc3: u64)
31CopyLoc[8](loc5: &RepConfig)
32ImmBorrowField[63](RepConfig.streak_window_ms: u64)
33ReadRef
34StLoc[15](loc12: u64)
35CopyLoc[8](loc5: &RepConfig)
36ImmBorrowField[71](RepConfig.checkin_rep: u64)
37ReadRef
38StLoc[7](loc4: u64)
39CopyLoc[8](loc5: &RepConfig)
40ImmBorrowField[72](RepConfig.daily_rep_cap: u64)
41ReadRef
42StLoc[9](loc6: u64)
43MoveLoc[8](loc5: &RepConfig)
44ImmBorrowField[73](RepConfig.streak_lock_days: u64)
45ReadRef
46StLoc[14](loc11: u64)
47MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
48MutBorrowFieldGeneric[23](GameState.id: UID)
49LdFalse
50Pack[22](RepTableKey)
51Call dynamic_field::borrow_mut<RepTableKey, Table<address, RepProfile>>(&mut UID, RepTableKey): &mut Table<address, RepProfile>
52StLoc[12](loc9: &mut Table<address, RepProfile>)
53CopyLoc[12](loc9: &mut Table<address, RepProfile>)
54FreezeRef
55CopyLoc[13](loc10: address)
56Call table::contains<address, RepProfile>(&Table<address, RepProfile>, address): bool
57BrFalse(59)
B4:
58Branch(63)
B5:
59MoveLoc[12](loc9: &mut Table<address, RepProfile>)
60Pop
61LdConst[36](u64: 102)
62Abort
B6:
63MoveLoc[12](loc9: &mut Table<address, RepProfile>)
64CopyLoc[13](loc10: address)
65Call table::borrow_mut<address, RepProfile>(&mut Table<address, RepProfile>, address): &mut RepProfile
66StLoc[11](loc8: &mut RepProfile)
67CopyLoc[11](loc8: &mut RepProfile)
68ImmBorrowField[62](RepProfile.last_checkin_ms: u64)
69ReadRef
70LdU64(0)
71Eq
72BrFalse(76)
B7:
73LdTrue
74StLoc[3](loc0: bool)
75Branch(84)
B8:
76CopyLoc[10](loc7: u64)
77CopyLoc[11](loc8: &mut RepProfile)
78ImmBorrowField[62](RepProfile.last_checkin_ms: u64)
79ReadRef
80MoveLoc[6](loc3: u64)
81Add
82Ge
83StLoc[3](loc0: bool)
B9:
84MoveLoc[3](loc0: bool)
85BrFalse(87)
B10:
86Branch(91)
B11:
87MoveLoc[11](loc8: &mut RepProfile)
88Pop
89LdConst[37](u64: 103)
90Abort
B12:
91CopyLoc[11](loc8: &mut RepProfile)
92ImmBorrowField[62](RepProfile.last_checkin_ms: u64)
93ReadRef
94LdU64(0)
95Eq
96BrFalse(102)
B13:
97LdU64(1)
98CopyLoc[11](loc8: &mut RepProfile)
99MutBorrowField[64](RepProfile.streak: u64)
100WriteRef
101Branch(123)
B14:
102CopyLoc[10](loc7: u64)
103CopyLoc[11](loc8: &mut RepProfile)
104ImmBorrowField[62](RepProfile.last_checkin_ms: u64)
105ReadRef
106MoveLoc[15](loc12: u64)
107Add
108Le
109BrFalse(119)
B15:
110CopyLoc[11](loc8: &mut RepProfile)
111ImmBorrowField[64](RepProfile.streak: u64)
112ReadRef
113LdU64(1)
114Add
115CopyLoc[11](loc8: &mut RepProfile)
116MutBorrowField[64](RepProfile.streak: u64)
117WriteRef
118Branch(123)
B16:
119LdU64(1)
120CopyLoc[11](loc8: &mut RepProfile)
121MutBorrowField[64](RepProfile.streak: u64)
122WriteRef
B17:
123CopyLoc[11](loc8: &mut RepProfile)
124ImmBorrowField[64](RepProfile.streak: u64)
125ReadRef
126CopyLoc[11](loc8: &mut RepProfile)
127ImmBorrowField[74](RepProfile.best_streak: u64)
128ReadRef
129Gt
130BrFalse(137)
B18:
131CopyLoc[11](loc8: &mut RepProfile)
132ImmBorrowField[64](RepProfile.streak: u64)
133ReadRef
134CopyLoc[11](loc8: &mut RepProfile)
135MutBorrowField[74](RepProfile.best_streak: u64)
136WriteRef
B19:
137CopyLoc[11](loc8: &mut RepProfile)
138ImmBorrowField[60](RepProfile.streak_fee_locked: bool)
139ReadRef
140Not
141BrFalse(149)
B20:
142CopyLoc[11](loc8: &mut RepProfile)
143ImmBorrowField[64](RepProfile.streak: u64)
144ReadRef
145MoveLoc[14](loc11: u64)
146Ge
147StLoc[4](loc1: bool)
148Branch(151)
B21:
149LdFalse
150StLoc[4](loc1: bool)
B22:
151MoveLoc[4](loc1: bool)
152BrFalse(157)
B23:
153LdTrue
154CopyLoc[11](loc8: &mut RepProfile)
155MutBorrowField[60](RepProfile.streak_fee_locked: bool)
156WriteRef
B24:
157CopyLoc[10](loc7: u64)
158CopyLoc[11](loc8: &mut RepProfile)
159MutBorrowField[62](RepProfile.last_checkin_ms: u64)
160WriteRef
161CopyLoc[11](loc8: &mut RepProfile)
162MoveLoc[7](loc4: u64)
163MoveLoc[10](loc7: u64)
164MoveLoc[9](loc6: u64)
165Call add_rep_capped(&mut RepProfile, u64, u64, u64): u64
166StLoc[5](loc2: u64)
167CopyLoc[13](loc10: address)
168MoveLoc[5](loc2: u64)
169CopyLoc[11](loc8: &mut RepProfile)
170ImmBorrowField[64](RepProfile.streak: u64)
171ReadRef
172Pack[28](PlayerCheckedIn)
173Call event::emit<PlayerCheckedIn>(PlayerCheckedIn)
174MoveLoc[13](loc10: address)
175CopyLoc[11](loc8: &mut RepProfile)
176ImmBorrowField[64](RepProfile.streak: u64)
177ReadRef
178CopyLoc[11](loc8: &mut RepProfile)
179ImmBorrowField[74](RepProfile.best_streak: u64)
180ReadRef
181MoveLoc[11](loc8: &mut RepProfile)
182ImmBorrowField[60](RepProfile.streak_fee_locked: bool)
183ReadRef
184Pack[27](StreakUpdated)
185Call event::emit<StreakUpdated>(StreakUpdated)
186Ret
}
entry admin_init_rep_system<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: &AdminCap, Arg2: u64, Arg3: u64, Arg4: u64, Arg5: u64, Arg6: u64, Arg7: u64, Arg8: u64, Arg9: u64, Arg10: u64, Arg11: &mut TxContext) {
L12: loc0: &mut u64
L13: loc1: Table<address, u64>
L14: loc2: Table<address, RepProfile>
B0:
0CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
1ImmBorrowFieldGeneric[23](GameState.id: UID)
2LdFalse
3Pack[23](RepConfigKey)
4Call dynamic_field::exists_<RepConfigKey>(&UID, RepConfigKey): bool
5Not
6BrFalse(8)
B1:
7Branch(14)
B2:
8MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
9Pop
10MoveLoc[11](Arg11: &mut TxContext)
11Pop
12LdConst[35](u64: 101)
13Abort
B3:
14CopyLoc[6](Arg6: u64)
15LdConst[31](u64: 10000)
16Le
17BrFalse(19)
B4:
18Branch(25)
B5:
19MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
20Pop
21MoveLoc[11](Arg11: &mut TxContext)
22Pop
23LdConst[5](u64: 7)
24Abort
B6:
25CopyLoc[7](Arg7: u64)
26LdConst[31](u64: 10000)
27Le
28BrFalse(30)
B7:
29Branch(36)
B8:
30MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
31Pop
32MoveLoc[11](Arg11: &mut TxContext)
33Pop
34LdConst[5](u64: 7)
35Abort
B9:
36CopyLoc[7](Arg7: u64)
37CopyLoc[6](Arg6: u64)
38Ge
39BrFalse(41)
B10:
40Branch(47)
B11:
41MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
42Pop
43MoveLoc[11](Arg11: &mut TxContext)
44Pop
45LdConst[5](u64: 7)
46Abort
B12:
47CopyLoc[2](Arg2: u64)
48LdU64(500)
49Le
50BrFalse(52)
B13:
51Branch(58)
B14:
52MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
53Pop
54MoveLoc[11](Arg11: &mut TxContext)
55Pop
56LdConst[5](u64: 7)
57Abort
B15:
58CopyLoc[3](Arg3: u64)
59LdU64(50)
60Le
61BrFalse(63)
B16:
62Branch(69)
B17:
63MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
64Pop
65MoveLoc[11](Arg11: &mut TxContext)
66Pop
67LdConst[5](u64: 7)
68Abort
B18:
69CopyLoc[10](Arg10: u64)
70LdU64(2)
71Ge
72BrFalse(74)
B19:
73Branch(80)
B20:
74MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
75Pop
76MoveLoc[11](Arg11: &mut TxContext)
77Pop
78LdConst[5](u64: 7)
79Abort
B21:
80CopyLoc[9](Arg9: u64)
81CopyLoc[6](Arg6: u64)
82Le
83BrFalse(85)
B22:
84Branch(91)
B23:
85MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
86Pop
87MoveLoc[11](Arg11: &mut TxContext)
88Pop
89LdConst[5](u64: 7)
90Abort
B24:
91CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
92MutBorrowFieldGeneric[23](GameState.id: UID)
93LdFalse
94Pack[23](RepConfigKey)
95MoveLoc[2](Arg2: u64)
96MoveLoc[3](Arg3: u64)
97MoveLoc[4](Arg4: u64)
98MoveLoc[5](Arg5: u64)
99MoveLoc[6](Arg6: u64)
100MoveLoc[8](Arg8: u64)
101MoveLoc[9](Arg9: u64)
102MoveLoc[10](Arg10: u64)
103Pack[25](RepConfig)
104Call dynamic_field::add<RepConfigKey, RepConfig>(&mut UID, RepConfigKey, RepConfig)
105CopyLoc[11](Arg11: &mut TxContext)
106Call table::new<address, RepProfile>(&mut TxContext): Table<address, RepProfile>
107StLoc[14](loc2: Table<address, RepProfile>)
108CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
109MutBorrowFieldGeneric[23](GameState.id: UID)
110LdFalse
111Pack[22](RepTableKey)
112MoveLoc[14](loc2: Table<address, RepProfile>)
113Call dynamic_field::add<RepTableKey, Table<address, RepProfile>>(&mut UID, RepTableKey, Table<address, RepProfile>)
114CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
115ImmBorrowFieldGeneric[23](GameState.id: UID)
116LdFalse
117Pack[0](FeeTableKey)
118Call dynamic_field::exists_<FeeTableKey>(&UID, FeeTableKey): bool
119Not
120BrFalse(131)
B25:
121MoveLoc[11](Arg11: &mut TxContext)
122Call table::new<address, u64>(&mut TxContext): Table<address, u64>
123StLoc[13](loc1: Table<address, u64>)
124CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
125MutBorrowFieldGeneric[23](GameState.id: UID)
126LdFalse
127Pack[0](FeeTableKey)
128MoveLoc[13](loc1: Table<address, u64>)
129Call dynamic_field::add<FeeTableKey, Table<address, u64>>(&mut UID, FeeTableKey, Table<address, u64>)
130Branch(133)
B26:
131MoveLoc[11](Arg11: &mut TxContext)
132Pop
B27:
133CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
134ImmBorrowFieldGeneric[23](GameState.id: UID)
135LdFalse
136Pack[1](DefaultFeeKey)
137Call dynamic_field::exists_<DefaultFeeKey>(&UID, DefaultFeeKey): bool
138Not
139BrFalse(147)
B28:
140MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
141MutBorrowFieldGeneric[23](GameState.id: UID)
142LdFalse
143Pack[1](DefaultFeeKey)
144MoveLoc[7](Arg7: u64)
145Call dynamic_field::add<DefaultFeeKey, u64>(&mut UID, DefaultFeeKey, u64)
146Branch(156)
B29:
147MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
148MutBorrowFieldGeneric[23](GameState.id: UID)
149LdFalse
150Pack[1](DefaultFeeKey)
151Call dynamic_field::borrow_mut<DefaultFeeKey, u64>(&mut UID, DefaultFeeKey): &mut u64
152StLoc[12](loc0: &mut u64)
153MoveLoc[7](Arg7: u64)
154MoveLoc[12](loc0: &mut u64)
155WriteRef
B30:
156Ret
}
entry admin_set_rep_config<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: &AdminCap, Arg2: u64, Arg3: u64, Arg4: u64, Arg5: u64, Arg6: u64, Arg7: u64, Arg8: u64, Arg9: u64) {
L10: loc0: &mut RepConfig
B0:
0CopyLoc[6](Arg6: u64)
1LdConst[31](u64: 10000)
2Le
3BrFalse(5)
B1:
4Branch(9)
B2:
5MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
6Pop
7LdConst[5](u64: 7)
8Abort
B3:
9CopyLoc[2](Arg2: u64)
10LdU64(500)
11Le
12BrFalse(14)
B4:
13Branch(18)
B5:
14MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
15Pop
16LdConst[5](u64: 7)
17Abort
B6:
18CopyLoc[3](Arg3: u64)
19LdU64(50)
20Le
21BrFalse(23)
B7:
22Branch(27)
B8:
23MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
24Pop
25LdConst[5](u64: 7)
26Abort
B9:
27CopyLoc[9](Arg9: u64)
28LdU64(2)
29Ge
30BrFalse(32)
B10:
31Branch(36)
B11:
32MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
33Pop
34LdConst[5](u64: 7)
35Abort
B12:
36CopyLoc[8](Arg8: u64)
37CopyLoc[6](Arg6: u64)
38Le
39BrFalse(41)
B13:
40Branch(45)
B14:
41MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
42Pop
43LdConst[5](u64: 7)
44Abort
B15:
45MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
46MutBorrowFieldGeneric[23](GameState.id: UID)
47LdFalse
48Pack[23](RepConfigKey)
49Call dynamic_field::borrow_mut<RepConfigKey, RepConfig>(&mut UID, RepConfigKey): &mut RepConfig
50StLoc[10](loc0: &mut RepConfig)
51MoveLoc[2](Arg2: u64)
52CopyLoc[10](loc0: &mut RepConfig)
53MutBorrowField[72](RepConfig.daily_rep_cap: u64)
54WriteRef
55MoveLoc[3](Arg3: u64)
56CopyLoc[10](loc0: &mut RepConfig)
57MutBorrowField[71](RepConfig.checkin_rep: u64)
58WriteRef
59MoveLoc[4](Arg4: u64)
60CopyLoc[10](loc0: &mut RepConfig)
61MutBorrowField[70](RepConfig.checkin_cooldown_ms: u64)
62WriteRef
63MoveLoc[5](Arg5: u64)
64CopyLoc[10](loc0: &mut RepConfig)
65MutBorrowField[63](RepConfig.streak_window_ms: u64)
66WriteRef
67MoveLoc[6](Arg6: u64)
68CopyLoc[10](loc0: &mut RepConfig)
69MutBorrowField[59](RepConfig.base_fee_bps: u64)
70WriteRef
71MoveLoc[7](Arg7: u64)
72CopyLoc[10](loc0: &mut RepConfig)
73MutBorrowField[65](RepConfig.streak_reduction_per_day_bps: u64)
74WriteRef
75MoveLoc[8](Arg8: u64)
76CopyLoc[10](loc0: &mut RepConfig)
77MutBorrowField[61](RepConfig.max_streak_reduction_bps: u64)
78WriteRef
79MoveLoc[9](Arg9: u64)
80MoveLoc[10](loc0: &mut RepConfig)
81MutBorrowField[73](RepConfig.streak_lock_days: u64)
82WriteRef
83Ret
}
entry admin_set_unregistered_fee<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: &AdminCap, Arg2: u64) {
L3: loc0: &mut u64
B0:
0CopyLoc[2](Arg2: u64)
1LdConst[31](u64: 10000)
2Le
3BrFalse(5)
B1:
4Branch(9)
B2:
5MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
6Pop
7LdConst[5](u64: 7)
8Abort
B3:
9MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
10MutBorrowFieldGeneric[23](GameState.id: UID)
11LdFalse
12Pack[1](DefaultFeeKey)
13Call dynamic_field::borrow_mut<DefaultFeeKey, u64>(&mut UID, DefaultFeeKey): &mut u64
14StLoc[3](loc0: &mut u64)
15MoveLoc[2](Arg2: u64)
16MoveLoc[3](loc0: &mut u64)
17WriteRef
18Ret
}
entry admin_add_rep<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: &AdminCap, Arg2: address, Arg3: u64, Arg4: &Clock) {
L5: loc0: u64
L6: loc1: u64
L7: loc2: u64
L8: loc3: &mut RepProfile
L9: loc4: &mut Table<address, RepProfile>
B0:
0CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
1ImmBorrowFieldGeneric[23](GameState.id: UID)
2LdFalse
3Pack[23](RepConfigKey)
4Call dynamic_field::borrow<RepConfigKey, RepConfig>(&UID, RepConfigKey): &RepConfig
5ImmBorrowField[72](RepConfig.daily_rep_cap: u64)
6ReadRef
7StLoc[6](loc1: u64)
8MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
9MutBorrowFieldGeneric[23](GameState.id: UID)
10LdFalse
11Pack[22](RepTableKey)
12Call dynamic_field::borrow_mut<RepTableKey, Table<address, RepProfile>>(&mut UID, RepTableKey): &mut Table<address, RepProfile>
13StLoc[9](loc4: &mut Table<address, RepProfile>)
14CopyLoc[9](loc4: &mut Table<address, RepProfile>)
15FreezeRef
16CopyLoc[2](Arg2: address)
17Call table::contains<address, RepProfile>(&Table<address, RepProfile>, address): bool
18BrFalse(20)
B1:
19Branch(26)
B2:
20MoveLoc[9](loc4: &mut Table<address, RepProfile>)
21Pop
22MoveLoc[4](Arg4: &Clock)
23Pop
24LdConst[36](u64: 102)
25Abort
B3:
26MoveLoc[9](loc4: &mut Table<address, RepProfile>)
27CopyLoc[2](Arg2: address)
28Call table::borrow_mut<address, RepProfile>(&mut Table<address, RepProfile>, address): &mut RepProfile
29StLoc[8](loc3: &mut RepProfile)
30MoveLoc[4](Arg4: &Clock)
31Call clock::timestamp_ms(&Clock): u64
32StLoc[7](loc2: u64)
33CopyLoc[8](loc3: &mut RepProfile)
34MoveLoc[3](Arg3: u64)
35MoveLoc[7](loc2: u64)
36MoveLoc[6](loc1: u64)
37Call add_rep_capped(&mut RepProfile, u64, u64, u64): u64
38StLoc[5](loc0: u64)
39CopyLoc[5](loc0: u64)
40LdU64(0)
41Gt
42BrFalse(51)
B4:
43MoveLoc[2](Arg2: address)
44MoveLoc[5](loc0: u64)
45MoveLoc[8](loc3: &mut RepProfile)
46ImmBorrowField[69](RepProfile.rep: u64)
47ReadRef
48Pack[26](RepAdded)
49Call event::emit<RepAdded>(RepAdded)
50Branch(53)
B5:
51MoveLoc[8](loc3: &mut RepProfile)
52Pop
B6:
53Ret
}
entry admin_set_player_fee<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: &AdminCap, Arg2: address, Arg3: u64) {
L4: loc0: &mut Table<address, u64>
B0:
0CopyLoc[3](Arg3: u64)
1LdConst[31](u64: 10000)
2Le
3BrFalse(5)
B1:
4Branch(9)
B2:
5MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
6Pop
7LdConst[5](u64: 7)
8Abort
B3:
9MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
10MutBorrowFieldGeneric[23](GameState.id: UID)
11LdFalse
12Pack[0](FeeTableKey)
13Call dynamic_field::borrow_mut<FeeTableKey, Table<address, u64>>(&mut UID, FeeTableKey): &mut Table<address, u64>
14StLoc[4](loc0: &mut Table<address, u64>)
15CopyLoc[4](loc0: &mut Table<address, u64>)
16FreezeRef
17CopyLoc[2](Arg2: address)
18Call table::contains<address, u64>(&Table<address, u64>, address): bool
19BrFalse(26)
B4:
20MoveLoc[3](Arg3: u64)
21MoveLoc[4](loc0: &mut Table<address, u64>)
22MoveLoc[2](Arg2: address)
23Call table::borrow_mut<address, u64>(&mut Table<address, u64>, address): &mut u64
24WriteRef
25Branch(30)
B5:
26MoveLoc[4](loc0: &mut Table<address, u64>)
27MoveLoc[2](Arg2: address)
28MoveLoc[3](Arg3: u64)
29Call table::add<address, u64>(&mut Table<address, u64>, address, u64)
B6:
30Ret
}
entry admin_remove_player_fee<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: &AdminCap, Arg2: address) {
L3: loc0: &mut Table<address, u64>
B0:
0MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
1MutBorrowFieldGeneric[23](GameState.id: UID)
2LdFalse
3Pack[0](FeeTableKey)
4Call dynamic_field::borrow_mut<FeeTableKey, Table<address, u64>>(&mut UID, FeeTableKey): &mut Table<address, u64>
5StLoc[3](loc0: &mut Table<address, u64>)
6CopyLoc[3](loc0: &mut Table<address, u64>)
7FreezeRef
8CopyLoc[2](Arg2: address)
9Call table::contains<address, u64>(&Table<address, u64>, address): bool
10BrFalse(16)
B1:
11MoveLoc[3](loc0: &mut Table<address, u64>)
12MoveLoc[2](Arg2: address)
13Call table::remove<address, u64>(&mut Table<address, u64>, address): u64
14Pop
15Branch(18)
B2:
16MoveLoc[3](loc0: &mut Table<address, u64>)
17Pop
B3:
18Ret
}
entry admin_mint_cosmetic_to<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: &AdminCap, Arg2: u64, Arg3: address, Arg4: &mut TxContext) {
L5: loc0: u64
L6: loc1: &mut CosmeticType
L7: loc2: String
L8: loc3: u64
L9: loc4: String
B0:
0CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
1ImmBorrowFieldGeneric[17](GameState.cosmetic_types: Table<u64, CosmeticType>)
2CopyLoc[2](Arg2: u64)
3Call table::contains<u64, CosmeticType>(&Table<u64, CosmeticType>, u64): bool
4BrFalse(6)
B1:
5Branch(12)
B2:
6MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
7Pop
8MoveLoc[4](Arg4: &mut TxContext)
9Pop
10LdConst[0](u64: 1)
11Abort
B3:
12CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
13MutBorrowFieldGeneric[17](GameState.cosmetic_types: Table<u64, CosmeticType>)
14CopyLoc[2](Arg2: u64)
15Call table::borrow_mut<u64, CosmeticType>(&mut Table<u64, CosmeticType>, u64): &mut CosmeticType
16StLoc[6](loc1: &mut CosmeticType)
17CopyLoc[6](loc1: &mut CosmeticType)
18ImmBorrowField[43](CosmeticType.name: String)
19ReadRef
20StLoc[9](loc4: String)
21CopyLoc[6](loc1: &mut CosmeticType)
22ImmBorrowField[44](CosmeticType.image_url: String)
23ReadRef
24StLoc[7](loc2: String)
25CopyLoc[6](loc1: &mut CosmeticType)
26ImmBorrowField[45](CosmeticType.bubble_pressure: u64)
27ReadRef
28StLoc[5](loc0: u64)
29CopyLoc[6](loc1: &mut CosmeticType)
30ImmBorrowField[38](CosmeticType.minted: u64)
31ReadRef
32LdU64(1)
33Add
34MoveLoc[6](loc1: &mut CosmeticType)
35MutBorrowField[38](CosmeticType.minted: u64)
36WriteRef
37CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
38ImmBorrowFieldGeneric[18](GameState.next_cosmetic_instance_id: u64)
39ReadRef
40StLoc[8](loc3: u64)
41CopyLoc[8](loc3: u64)
42LdU64(1)
43Add
44MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
45MutBorrowFieldGeneric[18](GameState.next_cosmetic_instance_id: u64)
46WriteRef
47MoveLoc[4](Arg4: &mut TxContext)
48Call object::new(&mut TxContext): UID
49MoveLoc[8](loc3: u64)
50CopyLoc[2](Arg2: u64)
51CopyLoc[9](loc4: String)
52MoveLoc[5](loc0: u64)
53MoveLoc[7](loc2: String)
54CopyLoc[9](loc4: String)
55Call make_cosmetic_attrs(String): VecMap<String, String>
56Pack[10](BubbleCosmetic)
57CopyLoc[3](Arg3: address)
58Call transfer::public_transfer<BubbleCosmetic>(BubbleCosmetic, address)
59MoveLoc[3](Arg3: address)
60MoveLoc[2](Arg2: u64)
61MoveLoc[9](loc4: String)
62Pack[19](CosmeticMinted)
63Call event::emit<CosmeticMinted>(CosmeticMinted)
64Ret
}
entry admin_mint_bubbler_to<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: &AdminCap, Arg2: u8, Arg3: address, Arg4: &mut TxContext) {
L5: loc0: u64
L6: loc1: u64
L7: loc2: String
L8: loc3: String
L9: loc4: u64
B0:
0CopyLoc[2](Arg2: u8)
1CastU64
2LdConst[10](u64: 13)
3Lt
4BrFalse(6)
B1:
5Branch(12)
B2:
6MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
7Pop
8MoveLoc[4](Arg4: &mut TxContext)
9Pop
10LdConst[0](u64: 1)
11Abort
B3:
12CopyLoc[2](Arg2: u8)
13Call get_bubbler_stats(u8): u64 * u64 * u64 * String * String
14StLoc[7](loc2: String)
15StLoc[8](loc3: String)
16Pop
17StLoc[9](loc4: u64)
18StLoc[5](loc0: u64)
19CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
20ImmBorrowFieldGeneric[12](GameState.next_bubbler_id: u64)
21ReadRef
22StLoc[6](loc1: u64)
23CopyLoc[6](loc1: u64)
24LdU64(1)
25Add
26MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
27MutBorrowFieldGeneric[12](GameState.next_bubbler_id: u64)
28WriteRef
29MoveLoc[4](Arg4: &mut TxContext)
30Call object::new(&mut TxContext): UID
31CopyLoc[6](loc1: u64)
32CopyLoc[2](Arg2: u8)
33CopyLoc[8](loc3: String)
34CopyLoc[5](loc0: u64)
35MoveLoc[9](loc4: u64)
36MoveLoc[7](loc2: String)
37CopyLoc[2](Arg2: u8)
38MoveLoc[8](loc3: String)
39Call make_bubbler_attrs(u8, String): VecMap<String, String>
40Pack[9](BubbleGenerator)
41CopyLoc[3](Arg3: address)
42Call transfer::public_transfer<BubbleGenerator>(BubbleGenerator, address)
43MoveLoc[3](Arg3: address)
44MoveLoc[6](loc1: u64)
45MoveLoc[2](Arg2: u8)
46MoveLoc[5](loc0: u64)
47Pack[14](BubblerMinted)
48Call event::emit<BubblerMinted>(BubblerMinted)
49Ret
}
get_effective_durability<Ty0, Ty1>(Arg0: &GameState<Ty0, Ty1>, Arg1: address, Arg2: u64): u64 {
L3: loc0: u64
L4: loc1: &RepairConfig
L5: loc2: u64
L6: loc3: &Table<address, TankDurability>
B0:
0CopyLoc[0](Arg0: &GameState<Ty0, Ty1>)
1ImmBorrowFieldGeneric[23](GameState.id: UID)
2LdFalse
3Pack[29](RepairConfigKey)
4Call dynamic_field::exists_<RepairConfigKey>(&UID, RepairConfigKey): bool
5Not
6BrFalse(11)
B1:
7MoveLoc[0](Arg0: &GameState<Ty0, Ty1>)
8Pop
9LdU64(10000)
10Ret
B2:
11CopyLoc[0](Arg0: &GameState<Ty0, Ty1>)
12ImmBorrowFieldGeneric[23](GameState.id: UID)
13LdFalse
14Pack[29](RepairConfigKey)
15Call dynamic_field::borrow<RepairConfigKey, RepairConfig>(&UID, RepairConfigKey): &RepairConfig
16StLoc[4](loc1: &RepairConfig)
17CopyLoc[4](loc1: &RepairConfig)
18ImmBorrowField[75](RepairConfig.enabled: bool)
19ReadRef
20Not
21BrFalse(28)
B3:
22MoveLoc[0](Arg0: &GameState<Ty0, Ty1>)
23Pop
24MoveLoc[4](loc1: &RepairConfig)
25Pop
26LdU64(10000)
27Ret
B4:
28CopyLoc[0](Arg0: &GameState<Ty0, Ty1>)
29ImmBorrowFieldGeneric[23](GameState.id: UID)
30LdFalse
31Pack[30](RepairTableKey)
32Call dynamic_field::exists_<RepairTableKey>(&UID, RepairTableKey): bool
33Not
34BrFalse(41)
B5:
35MoveLoc[0](Arg0: &GameState<Ty0, Ty1>)
36Pop
37MoveLoc[4](loc1: &RepairConfig)
38Pop
39LdU64(10000)
40Ret
B6:
41MoveLoc[0](Arg0: &GameState<Ty0, Ty1>)
42ImmBorrowFieldGeneric[23](GameState.id: UID)
43LdFalse
44Pack[30](RepairTableKey)
45Call dynamic_field::borrow<RepairTableKey, Table<address, TankDurability>>(&UID, RepairTableKey): &Table<address, TankDurability>
46StLoc[6](loc3: &Table<address, TankDurability>)
47CopyLoc[6](loc3: &Table<address, TankDurability>)
48CopyLoc[1](Arg1: address)
49Call table::contains<address, TankDurability>(&Table<address, TankDurability>, address): bool
50Not
51BrFalse(58)
B7:
52MoveLoc[6](loc3: &Table<address, TankDurability>)
53Pop
54MoveLoc[4](loc1: &RepairConfig)
55Pop
56LdU64(10000)
57Ret
B8:
58MoveLoc[6](loc3: &Table<address, TankDurability>)
59MoveLoc[1](Arg1: address)
60Call table::borrow<address, TankDurability>(&Table<address, TankDurability>, address): &TankDurability
61ImmBorrowField[76](TankDurability.last_repair_ms: u64)
62ReadRef
63MoveLoc[4](loc1: &RepairConfig)
64ImmBorrowField[77](RepairConfig.decay_period_ms: u64)
65ReadRef
66Add
67StLoc[5](loc2: u64)
68MoveLoc[2](Arg2: u64)
69MoveLoc[5](loc2: u64)
70Ge
71BrFalse(75)
B9:
72LdU64(0)
73StLoc[3](loc0: u64)
74Branch(77)
B10:
75LdU64(10000)
76StLoc[3](loc0: u64)
B11:
77MoveLoc[3](loc0: u64)
78Ret
}
ensure_repair_record<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: address, Arg2: u64) {
L3: loc0: u64
L4: loc1: u64
L5: loc2: u64
L6: loc3: u64
L7: loc4: &RepairConfig
L8: loc5: u64
L9: loc6: u64
L10: loc7: &mut Table<address, TankDurability>
L11: loc8: &PlayerTank
L12: loc9: u64
B0:
0CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
1ImmBorrowFieldGeneric[23](GameState.id: UID)
2LdFalse
3Pack[29](RepairConfigKey)
4Call dynamic_field::exists_<RepairConfigKey>(&UID, RepairConfigKey): bool
5Not
6BrFalse(10)
B1:
7MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
8Pop
9Ret
B2:
10CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
11ImmBorrowFieldGeneric[23](GameState.id: UID)
12LdFalse
13Pack[29](RepairConfigKey)
14Call dynamic_field::borrow<RepairConfigKey, RepairConfig>(&UID, RepairConfigKey): &RepairConfig
15StLoc[7](loc4: &RepairConfig)
16CopyLoc[7](loc4: &RepairConfig)
17ImmBorrowField[75](RepairConfig.enabled: bool)
18ReadRef
19Not
20BrFalse(26)
B3:
21MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
22Pop
23MoveLoc[7](loc4: &RepairConfig)
24Pop
25Ret
B4:
26CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
27ImmBorrowFieldGeneric[23](GameState.id: UID)
28LdFalse
29Pack[30](RepairTableKey)
30Call dynamic_field::exists_<RepairTableKey>(&UID, RepairTableKey): bool
31Not
32BrFalse(38)
B5:
33MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
34Pop
35MoveLoc[7](loc4: &RepairConfig)
36Pop
37Ret
B6:
38MoveLoc[7](loc4: &RepairConfig)
39ImmBorrowField[78](RepairConfig.activated_at_ms: u64)
40ReadRef
41StLoc[6](loc3: u64)
42CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
43ImmBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
44CopyLoc[1](Arg1: address)
45Call table::contains<address, PlayerTank>(&Table<address, PlayerTank>, address): bool
46BrFalse(61)
B7:
47CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
48ImmBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
49CopyLoc[1](Arg1: address)
50Call table::borrow<address, PlayerTank>(&Table<address, PlayerTank>, address): &PlayerTank
51StLoc[11](loc8: &PlayerTank)
52CopyLoc[11](loc8: &PlayerTank)
53ImmBorrowField[35](PlayerTank.total_earned: u64)
54ReadRef
55MoveLoc[11](loc8: &PlayerTank)
56ImmBorrowField[3](PlayerTank.last_claim_time: u64)
57ReadRef
58StLoc[4](loc1: u64)
59StLoc[3](loc0: u64)
60Branch(65)
B8:
61LdU64(0)
62LdU64(0)
63StLoc[4](loc1: u64)
64StLoc[3](loc0: u64)
B9:
65MoveLoc[3](loc0: u64)
66MoveLoc[4](loc1: u64)
67StLoc[8](loc5: u64)
68StLoc[12](loc9: u64)
69MoveLoc[8](loc5: u64)
70CopyLoc[6](loc3: u64)
71Ge
72BrFalse(76)
B10:
73MoveLoc[2](Arg2: u64)
74StLoc[5](loc2: u64)
75Branch(78)
B11:
76MoveLoc[6](loc3: u64)
77StLoc[5](loc2: u64)
B12:
78MoveLoc[5](loc2: u64)
79StLoc[9](loc6: u64)
80MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
81MutBorrowFieldGeneric[23](GameState.id: UID)
82LdFalse
83Pack[30](RepairTableKey)
84Call dynamic_field::borrow_mut<RepairTableKey, Table<address, TankDurability>>(&mut UID, RepairTableKey): &mut Table<address, TankDurability>
85StLoc[10](loc7: &mut Table<address, TankDurability>)
86CopyLoc[10](loc7: &mut Table<address, TankDurability>)
87FreezeRef
88CopyLoc[1](Arg1: address)
89Call table::contains<address, TankDurability>(&Table<address, TankDurability>, address): bool
90Not
91BrFalse(99)
B13:
92MoveLoc[10](loc7: &mut Table<address, TankDurability>)
93MoveLoc[1](Arg1: address)
94MoveLoc[9](loc6: u64)
95MoveLoc[12](loc9: u64)
96Pack[31](TankDurability)
97Call table::add<address, TankDurability>(&mut Table<address, TankDurability>, address, TankDurability)
98Branch(101)
B14:
99MoveLoc[10](loc7: &mut Table<address, TankDurability>)
100Pop
B15:
101Ret
}
calculate_pending_rewards_v2<Ty0, Ty1>(Arg0: &GameState<Ty0, Ty1>, Arg1: &PlayerTank, Arg2: address, Arg3: u64): u64 {
L4: loc0: bool
L5: loc1: bool
L6: loc2: u64
L7: loc3: u64
L8: loc4: u64
L9: loc5: u64
L10: loc6: u64
L11: loc7: &RepairConfig
L12: loc8: u64
L13: loc9: u64
L14: loc10: u64
L15: loc11: u64
L16: loc12: u64
L17: loc13: &Table<address, TankDurability>
B0:
0CopyLoc[1](Arg1: &PlayerTank)
1ImmBorrowField[1](PlayerTank.total_pressure: u64)
2ReadRef
3LdU64(0)
4Eq
5BrFalse(9)
B1:
6LdTrue
7StLoc[4](loc0: bool)
8Branch(15)
B2:
9CopyLoc[0](Arg0: &GameState<Ty0, Ty1>)
10ImmBorrowFieldGeneric[1](GameState.total_network_pressure: u64)
11ReadRef
12LdU64(0)
13Eq
14StLoc[4](loc0: bool)
B3:
15MoveLoc[4](loc0: bool)
16BrFalse(23)
B4:
17MoveLoc[1](Arg1: &PlayerTank)
18Pop
19MoveLoc[0](Arg0: &GameState<Ty0, Ty1>)
20Pop
21LdU64(0)
22Ret
B5:
23CopyLoc[0](Arg0: &GameState<Ty0, Ty1>)
24ImmBorrowFieldGeneric[23](GameState.id: UID)
25LdFalse
26Pack[29](RepairConfigKey)
27Call dynamic_field::exists_<RepairConfigKey>(&UID, RepairConfigKey): bool
28BrFalse(98)
B6:
29CopyLoc[0](Arg0: &GameState<Ty0, Ty1>)
30ImmBorrowFieldGeneric[23](GameState.id: UID)
31LdFalse
32Pack[29](RepairConfigKey)
33Call dynamic_field::borrow<RepairConfigKey, RepairConfig>(&UID, RepairConfigKey): &RepairConfig
34StLoc[11](loc7: &RepairConfig)
35CopyLoc[11](loc7: &RepairConfig)
36ImmBorrowField[75](RepairConfig.enabled: bool)
37ReadRef
38BrFalse(46)
B7:
39CopyLoc[0](Arg0: &GameState<Ty0, Ty1>)
40ImmBorrowFieldGeneric[23](GameState.id: UID)
41LdFalse
42Pack[30](RepairTableKey)
43Call dynamic_field::exists_<RepairTableKey>(&UID, RepairTableKey): bool
44StLoc[5](loc1: bool)
45Branch(48)
B8:
46LdFalse
47StLoc[5](loc1: bool)
B9:
48MoveLoc[5](loc1: bool)
49BrFalse(91)
B10:
50CopyLoc[0](Arg0: &GameState<Ty0, Ty1>)
51ImmBorrowFieldGeneric[23](GameState.id: UID)
52LdFalse
53Pack[30](RepairTableKey)
54Call dynamic_field::borrow<RepairTableKey, Table<address, TankDurability>>(&UID, RepairTableKey): &Table<address, TankDurability>
55StLoc[17](loc13: &Table<address, TankDurability>)
56CopyLoc[17](loc13: &Table<address, TankDurability>)
57CopyLoc[2](Arg2: address)
58Call table::contains<address, TankDurability>(&Table<address, TankDurability>, address): bool
59BrFalse(82)
B11:
60MoveLoc[17](loc13: &Table<address, TankDurability>)
61MoveLoc[2](Arg2: address)
62Call table::borrow<address, TankDurability>(&Table<address, TankDurability>, address): &TankDurability
63ImmBorrowField[76](TankDurability.last_repair_ms: u64)
64ReadRef
65MoveLoc[11](loc7: &RepairConfig)
66ImmBorrowField[77](RepairConfig.decay_period_ms: u64)
67ReadRef
68Add
69StLoc[14](loc10: u64)
70CopyLoc[3](Arg3: u64)
71CopyLoc[14](loc10: u64)
72Gt
73BrFalse(77)
B12:
74MoveLoc[14](loc10: u64)
75StLoc[6](loc2: u64)
76Branch(79)
B13:
77CopyLoc[3](Arg3: u64)
78StLoc[6](loc2: u64)
B14:
79MoveLoc[6](loc2: u64)
80StLoc[7](loc3: u64)
81Branch(88)
B15:
82MoveLoc[17](loc13: &Table<address, TankDurability>)
83Pop
84MoveLoc[11](loc7: &RepairConfig)
85Pop
86CopyLoc[3](Arg3: u64)
87StLoc[7](loc3: u64)
B16:
88MoveLoc[7](loc3: u64)
89StLoc[8](loc4: u64)
90Branch(95)
B17:
91MoveLoc[11](loc7: &RepairConfig)
92Pop
93CopyLoc[3](Arg3: u64)
94StLoc[8](loc4: u64)
B18:
95MoveLoc[8](loc4: u64)
96StLoc[9](loc5: u64)
97Branch(100)
B19:
98CopyLoc[3](Arg3: u64)
99StLoc[9](loc5: u64)
B20:
100MoveLoc[9](loc5: u64)
101StLoc[12](loc8: u64)
102CopyLoc[12](loc8: u64)
103CopyLoc[1](Arg1: &PlayerTank)
104ImmBorrowField[3](PlayerTank.last_claim_time: u64)
105ReadRef
106Le
107BrFalse(114)
B21:
108MoveLoc[1](Arg1: &PlayerTank)
109Pop
110MoveLoc[0](Arg0: &GameState<Ty0, Ty1>)
111Pop
112LdU64(0)
113Ret
B22:
114MoveLoc[12](loc8: u64)
115CopyLoc[1](Arg1: &PlayerTank)
116ImmBorrowField[3](PlayerTank.last_claim_time: u64)
117ReadRef
118Sub
119StLoc[13](loc9: u64)
120CopyLoc[0](Arg0: &GameState<Ty0, Ty1>)
121MoveLoc[3](Arg3: u64)
122Call calculate_current_emission<Ty0, Ty1>(&GameState<Ty0, Ty1>, u64): u64
123CastU128
124MoveLoc[13](loc9: u64)
125CastU128
126Mul
127LdConst[23](u64: 8640..)
128CastU128
129Div
130CastU64
131CastU128
132MoveLoc[1](Arg1: &PlayerTank)
133ImmBorrowField[1](PlayerTank.total_pressure: u64)
134ReadRef
135CastU128
136Mul
137CopyLoc[0](Arg0: &GameState<Ty0, Ty1>)
138ImmBorrowFieldGeneric[1](GameState.total_network_pressure: u64)
139ReadRef
140CastU128
141Div
142CastU64
143StLoc[15](loc11: u64)
144LdConst[26](u64: 2000..)
145MoveLoc[0](Arg0: &GameState<Ty0, Ty1>)
146ImmBorrowFieldGeneric[2](GameState.total_minted: u64)
147ReadRef
148Sub
149StLoc[16](loc12: u64)
150CopyLoc[15](loc11: u64)
151CopyLoc[16](loc12: u64)
152Gt
153BrFalse(157)
B23:
154MoveLoc[16](loc12: u64)
155StLoc[10](loc6: u64)
156Branch(159)
B24:
157MoveLoc[15](loc11: u64)
158StLoc[10](loc6: u64)
B25:
159MoveLoc[10](loc6: u64)
160Ret
}
entry repair_tank<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: Coin<Ty0>, Arg2: &Clock, Arg3: &mut TxContext) {
L4: loc0: bool
L5: loc1: u64
L6: loc2: u64
L7: loc3: u64
L8: loc4: &RepairConfig
L9: loc5: &mut TankDurability
L10: loc6: u64
L11: loc7: u64
L12: loc8: u64
L13: loc9: &Table<address, TankDurability>
L14: loc10: &mut Table<address, TankDurability>
L15: loc11: address
L16: loc12: &PlayerTank
L17: loc13: &mut PlayerTank
L18: loc14: u64
B0:
0CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
1ImmBorrowFieldGeneric[7](GameState.paused: bool)
2ReadRef
3Not
4BrFalse(6)
B1:
5Branch(14)
B2:
6MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
7Pop
8MoveLoc[3](Arg3: &mut TxContext)
9Pop
10MoveLoc[2](Arg2: &Clock)
11Pop
12LdConst[4](u64: 6)
13Abort
B3:
14CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
15ImmBorrowFieldGeneric[23](GameState.id: UID)
16LdFalse
17Pack[29](RepairConfigKey)
18Call dynamic_field::exists_<RepairConfigKey>(&UID, RepairConfigKey): bool
19BrFalse(21)
B4:
20Branch(29)
B5:
21MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
22Pop
23MoveLoc[3](Arg3: &mut TxContext)
24Pop
25MoveLoc[2](Arg2: &Clock)
26Pop
27LdConst[39](u64: 200)
28Abort
B6:
29CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
30ImmBorrowFieldGeneric[23](GameState.id: UID)
31LdFalse
32Pack[29](RepairConfigKey)
33Call dynamic_field::borrow<RepairConfigKey, RepairConfig>(&UID, RepairConfigKey): &RepairConfig
34StLoc[8](loc4: &RepairConfig)
35CopyLoc[8](loc4: &RepairConfig)
36ImmBorrowField[75](RepairConfig.enabled: bool)
37ReadRef
38BrFalse(40)
B7:
39Branch(50)
B8:
40MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
41Pop
42MoveLoc[3](Arg3: &mut TxContext)
43Pop
44MoveLoc[8](loc4: &RepairConfig)
45Pop
46MoveLoc[2](Arg2: &Clock)
47Pop
48LdConst[41](u64: 201)
49Abort
B9:
50MoveLoc[8](loc4: &RepairConfig)
51ImmBorrowField[79](RepairConfig.fee_bps: u64)
52ReadRef
53StLoc[10](loc6: u64)
54CopyLoc[3](Arg3: &mut TxContext)
55FreezeRef
56Call tx_context::sender(&TxContext): address
57StLoc[15](loc11: address)
58CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
59ImmBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
60CopyLoc[15](loc11: address)
61Call table::contains<address, PlayerTank>(&Table<address, PlayerTank>, address): bool
62BrFalse(64)
B10:
63Branch(72)
B11:
64MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
65Pop
66MoveLoc[3](Arg3: &mut TxContext)
67Pop
68MoveLoc[2](Arg2: &Clock)
69Pop
70LdConst[8](u64: 10)
71Abort
B12:
72MoveLoc[2](Arg2: &Clock)
73Call clock::timestamp_ms(&Clock): u64
74StLoc[11](loc7: u64)
75CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
76FreezeRef
77CopyLoc[15](loc11: address)
78CopyLoc[11](loc7: u64)
79Call get_effective_durability<Ty0, Ty1>(&GameState<Ty0, Ty1>, address, u64): u64
80LdU64(0)
81Eq
82BrFalse(84)
B13:
83Branch(90)
B14:
84MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
85Pop
86MoveLoc[3](Arg3: &mut TxContext)
87Pop
88LdConst[42](u64: 202)
89Abort
B15:
90CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
91ImmBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
92CopyLoc[15](loc11: address)
93Call table::borrow<address, PlayerTank>(&Table<address, PlayerTank>, address): &PlayerTank
94StLoc[16](loc12: &PlayerTank)
95CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
96FreezeRef
97CopyLoc[16](loc12: &PlayerTank)
98CopyLoc[15](loc11: address)
99CopyLoc[11](loc7: u64)
100Call calculate_pending_rewards_v2<Ty0, Ty1>(&GameState<Ty0, Ty1>, &PlayerTank, address, u64): u64
101LdU64(0)
102Eq
103BrFalse(111)
B16:
104CopyLoc[16](loc12: &PlayerTank)
105ImmBorrowField[25](PlayerTank.unclaimed_rewards: u64)
106ReadRef
107LdU64(0)
108Eq
109StLoc[4](loc0: bool)
110Branch(113)
B17:
111LdFalse
112StLoc[4](loc0: bool)
B18:
113MoveLoc[4](loc0: bool)
114BrFalse(116)
B19:
115Branch(124)
B20:
116MoveLoc[16](loc12: &PlayerTank)
117Pop
118MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
119Pop
120MoveLoc[3](Arg3: &mut TxContext)
121Pop
122LdConst[43](u64: 203)
123Abort
B21:
124CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
125ImmBorrowFieldGeneric[23](GameState.id: UID)
126LdFalse
127Pack[30](RepairTableKey)
128Call dynamic_field::borrow<RepairTableKey, Table<address, TankDurability>>(&UID, RepairTableKey): &Table<address, TankDurability>
129StLoc[13](loc9: &Table<address, TankDurability>)
130CopyLoc[13](loc9: &Table<address, TankDurability>)
131CopyLoc[15](loc11: address)
132Call table::contains<address, TankDurability>(&Table<address, TankDurability>, address): bool
133BrFalse(141)
B22:
134MoveLoc[13](loc9: &Table<address, TankDurability>)
135CopyLoc[15](loc11: address)
136Call table::borrow<address, TankDurability>(&Table<address, TankDurability>, address): &TankDurability
137ImmBorrowField[80](TankDurability.total_earned_at_last_repair: u64)
138ReadRef
139StLoc[5](loc1: u64)
140Branch(145)
B23:
141MoveLoc[13](loc9: &Table<address, TankDurability>)
142Pop
143LdU64(0)
144StLoc[5](loc1: u64)
B24:
145MoveLoc[5](loc1: u64)
146StLoc[18](loc14: u64)
147CopyLoc[16](loc12: &PlayerTank)
148ImmBorrowField[35](PlayerTank.total_earned: u64)
149ReadRef
150CopyLoc[18](loc14: u64)
151Gt
152BrFalse(160)
B25:
153CopyLoc[16](loc12: &PlayerTank)
154ImmBorrowField[35](PlayerTank.total_earned: u64)
155ReadRef
156MoveLoc[18](loc14: u64)
157Sub
158StLoc[6](loc2: u64)
159Branch(162)
B26:
160LdU64(0)
161StLoc[6](loc2: u64)
B27:
162MoveLoc[6](loc2: u64)
163StLoc[7](loc3: u64)
164CopyLoc[7](loc3: u64)
165CastU128
166MoveLoc[10](loc6: u64)
167CastU128
168Mul
169LdConst[31](u64: 10000)
170CastU128
171Div
172CastU64
173StLoc[12](loc8: u64)
174CopyLoc[12](loc8: u64)
175LdU64(0)
176Gt
177BrFalse(195)
B28:
178MoveLoc[1](Arg1: Coin<Ty0>)
179CopyLoc[12](loc8: u64)
180CopyLoc[3](Arg3: &mut TxContext)
181Call process_bub_payment<Ty0>(Coin<Ty0>, u64, &mut TxContext): Balance<Ty0>
182MoveLoc[3](Arg3: &mut TxContext)
183Call coin::from_balance<Ty0>(Balance<Ty0>, &mut TxContext): Coin<Ty0>
184LdConst[98](address: 0x00..)
185Call transfer::public_transfer<Coin<Ty0>>(Coin<Ty0>, address)
186CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
187ImmBorrowFieldGeneric[16](GameState.total_burned: u64)
188ReadRef
189CopyLoc[12](loc8: u64)
190Add
191CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
192MutBorrowFieldGeneric[16](GameState.total_burned: u64)
193WriteRef
194Branch(200)
B29:
195MoveLoc[3](Arg3: &mut TxContext)
196Pop
197MoveLoc[1](Arg1: Coin<Ty0>)
198CopyLoc[15](loc11: address)
199Call transfer::public_transfer<Coin<Ty0>>(Coin<Ty0>, address)
B30:
200CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
201MutBorrowFieldGeneric[23](GameState.id: UID)
202LdFalse
203Pack[30](RepairTableKey)
204Call dynamic_field::borrow_mut<RepairTableKey, Table<address, TankDurability>>(&mut UID, RepairTableKey): &mut Table<address, TankDurability>
205StLoc[14](loc10: &mut Table<address, TankDurability>)
206CopyLoc[14](loc10: &mut Table<address, TankDurability>)
207FreezeRef
208CopyLoc[15](loc11: address)
209Call table::contains<address, TankDurability>(&Table<address, TankDurability>, address): bool
210BrFalse(226)
B31:
211MoveLoc[14](loc10: &mut Table<address, TankDurability>)
212CopyLoc[15](loc11: address)
213Call table::borrow_mut<address, TankDurability>(&mut Table<address, TankDurability>, address): &mut TankDurability
214StLoc[9](loc5: &mut TankDurability)
215CopyLoc[11](loc7: u64)
216CopyLoc[9](loc5: &mut TankDurability)
217MutBorrowField[76](TankDurability.last_repair_ms: u64)
218WriteRef
219MoveLoc[16](loc12: &PlayerTank)
220ImmBorrowField[35](PlayerTank.total_earned: u64)
221ReadRef
222MoveLoc[9](loc5: &mut TankDurability)
223MutBorrowField[80](TankDurability.total_earned_at_last_repair: u64)
224WriteRef
225Branch(234)
B32:
226MoveLoc[14](loc10: &mut Table<address, TankDurability>)
227CopyLoc[15](loc11: address)
228CopyLoc[11](loc7: u64)
229MoveLoc[16](loc12: &PlayerTank)
230ImmBorrowField[35](PlayerTank.total_earned: u64)
231ReadRef
232Pack[31](TankDurability)
233Call table::add<address, TankDurability>(&mut Table<address, TankDurability>, address, TankDurability)
B33:
234MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
235MutBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
236CopyLoc[15](loc11: address)
237Call table::borrow_mut<address, PlayerTank>(&mut Table<address, PlayerTank>, address): &mut PlayerTank
238StLoc[17](loc13: &mut PlayerTank)
239MoveLoc[11](loc7: u64)
240MoveLoc[17](loc13: &mut PlayerTank)
241MutBorrowField[3](PlayerTank.last_claim_time: u64)
242WriteRef
243MoveLoc[15](loc11: address)
244MoveLoc[12](loc8: u64)
245MoveLoc[7](loc3: u64)
246Pack[33](TankRepaired)
247Call event::emit<TankRepaired>(TankRepaired)
248Ret
}
entry admin_init_repair_system<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: &AdminCap, Arg2: u64, Arg3: u64, Arg4: &Clock, Arg5: &mut TxContext) {
L6: loc0: Table<address, TankDurability>
B0:
0CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
1ImmBorrowFieldGeneric[23](GameState.id: UID)
2LdFalse
3Pack[29](RepairConfigKey)
4Call dynamic_field::exists_<RepairConfigKey>(&UID, RepairConfigKey): bool
5Not
6BrFalse(8)
B1:
7Branch(16)
B2:
8MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
9Pop
10MoveLoc[5](Arg5: &mut TxContext)
11Pop
12MoveLoc[4](Arg4: &Clock)
13Pop
14LdConst[40](u64: 204)
15Abort
B3:
16CopyLoc[2](Arg2: u64)
17LdU64(0)
18Gt
19BrFalse(21)
B4:
20Branch(29)
B5:
21MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
22Pop
23MoveLoc[5](Arg5: &mut TxContext)
24Pop
25MoveLoc[4](Arg4: &Clock)
26Pop
27LdConst[5](u64: 7)
28Abort
B6:
29CopyLoc[3](Arg3: u64)
30LdConst[31](u64: 10000)
31Le
32BrFalse(34)
B7:
33Branch(42)
B8:
34MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
35Pop
36MoveLoc[5](Arg5: &mut TxContext)
37Pop
38MoveLoc[4](Arg4: &Clock)
39Pop
40LdConst[5](u64: 7)
41Abort
B9:
42CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
43MutBorrowFieldGeneric[23](GameState.id: UID)
44LdFalse
45Pack[29](RepairConfigKey)
46LdTrue
47MoveLoc[2](Arg2: u64)
48MoveLoc[3](Arg3: u64)
49MoveLoc[4](Arg4: &Clock)
50Call clock::timestamp_ms(&Clock): u64
51Pack[32](RepairConfig)
52Call dynamic_field::add<RepairConfigKey, RepairConfig>(&mut UID, RepairConfigKey, RepairConfig)
53MoveLoc[5](Arg5: &mut TxContext)
54Call table::new<address, TankDurability>(&mut TxContext): Table<address, TankDurability>
55StLoc[6](loc0: Table<address, TankDurability>)
56MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
57MutBorrowFieldGeneric[23](GameState.id: UID)
58LdFalse
59Pack[30](RepairTableKey)
60MoveLoc[6](loc0: Table<address, TankDurability>)
61Call dynamic_field::add<RepairTableKey, Table<address, TankDurability>>(&mut UID, RepairTableKey, Table<address, TankDurability>)
62Ret
}
entry admin_set_repair_config<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: &AdminCap, Arg2: bool, Arg3: u64, Arg4: u64) {
L5: loc0: &mut RepairConfig
B0:
0CopyLoc[3](Arg3: u64)
1LdU64(0)
2Gt
3BrFalse(5)
B1:
4Branch(9)
B2:
5MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
6Pop
7LdConst[5](u64: 7)
8Abort
B3:
9CopyLoc[4](Arg4: u64)
10LdConst[31](u64: 10000)
11Le
12BrFalse(14)
B4:
13Branch(18)
B5:
14MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
15Pop
16LdConst[5](u64: 7)
17Abort
B6:
18MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
19MutBorrowFieldGeneric[23](GameState.id: UID)
20LdFalse
21Pack[29](RepairConfigKey)
22Call dynamic_field::borrow_mut<RepairConfigKey, RepairConfig>(&mut UID, RepairConfigKey): &mut RepairConfig
23StLoc[5](loc0: &mut RepairConfig)
24MoveLoc[2](Arg2: bool)
25CopyLoc[5](loc0: &mut RepairConfig)
26MutBorrowField[75](RepairConfig.enabled: bool)
27WriteRef
28MoveLoc[3](Arg3: u64)
29CopyLoc[5](loc0: &mut RepairConfig)
30MutBorrowField[77](RepairConfig.decay_period_ms: u64)
31WriteRef
32MoveLoc[4](Arg4: u64)
33MoveLoc[5](loc0: &mut RepairConfig)
34MutBorrowField[79](RepairConfig.fee_bps: u64)
35WriteRef
36Ret
}
entry admin_repair_player<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: &AdminCap, Arg2: address, Arg3: &Clock) {
L4: loc0: u64
L5: loc1: &mut TankDurability
L6: loc2: u64
L7: loc3: &mut Table<address, TankDurability>
L8: loc4: u64
B0:
0MoveLoc[3](Arg3: &Clock)
1Call clock::timestamp_ms(&Clock): u64
2StLoc[6](loc2: u64)
3CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
4ImmBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
5CopyLoc[2](Arg2: address)
6Call table::contains<address, PlayerTank>(&Table<address, PlayerTank>, address): bool
7BrFalse(16)
B1:
8CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
9ImmBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
10CopyLoc[2](Arg2: address)
11Call table::borrow<address, PlayerTank>(&Table<address, PlayerTank>, address): &PlayerTank
12ImmBorrowField[35](PlayerTank.total_earned: u64)
13ReadRef
14StLoc[4](loc0: u64)
15Branch(18)
B2:
16LdU64(0)
17StLoc[4](loc0: u64)
B3:
18MoveLoc[4](loc0: u64)
19StLoc[8](loc4: u64)
20MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
21MutBorrowFieldGeneric[23](GameState.id: UID)
22LdFalse
23Pack[30](RepairTableKey)
24Call dynamic_field::borrow_mut<RepairTableKey, Table<address, TankDurability>>(&mut UID, RepairTableKey): &mut Table<address, TankDurability>
25StLoc[7](loc3: &mut Table<address, TankDurability>)
26CopyLoc[7](loc3: &mut Table<address, TankDurability>)
27FreezeRef
28CopyLoc[2](Arg2: address)
29Call table::contains<address, TankDurability>(&Table<address, TankDurability>, address): bool
30BrFalse(44)
B4:
31MoveLoc[7](loc3: &mut Table<address, TankDurability>)
32MoveLoc[2](Arg2: address)
33Call table::borrow_mut<address, TankDurability>(&mut Table<address, TankDurability>, address): &mut TankDurability
34StLoc[5](loc1: &mut TankDurability)
35MoveLoc[6](loc2: u64)
36CopyLoc[5](loc1: &mut TankDurability)
37MutBorrowField[76](TankDurability.last_repair_ms: u64)
38WriteRef
39MoveLoc[8](loc4: u64)
40MoveLoc[5](loc1: &mut TankDurability)
41MutBorrowField[80](TankDurability.total_earned_at_last_repair: u64)
42WriteRef
43Branch(50)
B5:
44MoveLoc[7](loc3: &mut Table<address, TankDurability>)
45MoveLoc[2](Arg2: address)
46MoveLoc[6](loc2: u64)
47MoveLoc[8](loc4: u64)
48Pack[31](TankDurability)
49Call table::add<address, TankDurability>(&mut Table<address, TankDurability>, address, TankDurability)
B6:
50Ret
}
entry admin_init_cosmetic_bonus<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: &AdminCap, Arg2: &mut TxContext) {
L3: loc0: Table<u64, u64>
L4: loc1: Table<u64, CosmeticBonus>
B0:
0CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
1ImmBorrowFieldGeneric[23](GameState.id: UID)
2LdFalse
3Pack[34](CosmeticBonusTableKey)
4Call dynamic_field::exists_<CosmeticBonusTableKey>(&UID, CosmeticBonusTableKey): bool
5Not
6BrFalse(8)
B1:
7Branch(14)
B2:
8MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
9Pop
10MoveLoc[2](Arg2: &mut TxContext)
11Pop
12LdConst[44](u64: 300)
13Abort
B3:
14CopyLoc[2](Arg2: &mut TxContext)
15Call table::new<u64, CosmeticBonus>(&mut TxContext): Table<u64, CosmeticBonus>
16StLoc[4](loc1: Table<u64, CosmeticBonus>)
17CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
18MutBorrowFieldGeneric[23](GameState.id: UID)
19LdFalse
20Pack[34](CosmeticBonusTableKey)
21MoveLoc[4](loc1: Table<u64, CosmeticBonus>)
22Call dynamic_field::add<CosmeticBonusTableKey, Table<u64, CosmeticBonus>>(&mut UID, CosmeticBonusTableKey, Table<u64, CosmeticBonus>)
23MoveLoc[2](Arg2: &mut TxContext)
24Call table::new<u64, u64>(&mut TxContext): Table<u64, u64>
25StLoc[3](loc0: Table<u64, u64>)
26MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
27MutBorrowFieldGeneric[23](GameState.id: UID)
28LdFalse
29Pack[35](CosmeticBonusAppliedKey)
30MoveLoc[3](loc0: Table<u64, u64>)
31Call dynamic_field::add<CosmeticBonusAppliedKey, Table<u64, u64>>(&mut UID, CosmeticBonusAppliedKey, Table<u64, u64>)
32Ret
}
entry admin_set_cosmetic_bonus<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: &AdminCap, Arg2: u64, Arg3: u8, Arg4: u64) {
L5: loc0: &mut CosmeticBonus
L6: loc1: &mut Table<u64, CosmeticBonus>
B0:
0CopyLoc[3](Arg3: u8)
1LdU8(2)
2Le
3BrFalse(5)
B1:
4Branch(9)
B2:
5MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
6Pop
7LdConst[5](u64: 7)
8Abort
B3:
9CopyLoc[4](Arg4: u64)
10LdU64(5000)
11Le
12BrFalse(14)
B4:
13Branch(18)
B5:
14MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
15Pop
16LdConst[5](u64: 7)
17Abort
B6:
18MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
19MutBorrowFieldGeneric[23](GameState.id: UID)
20LdFalse
21Pack[34](CosmeticBonusTableKey)
22Call dynamic_field::borrow_mut<CosmeticBonusTableKey, Table<u64, CosmeticBonus>>(&mut UID, CosmeticBonusTableKey): &mut Table<u64, CosmeticBonus>
23StLoc[6](loc1: &mut Table<u64, CosmeticBonus>)
24CopyLoc[6](loc1: &mut Table<u64, CosmeticBonus>)
25FreezeRef
26CopyLoc[2](Arg2: u64)
27Call table::contains<u64, CosmeticBonus>(&Table<u64, CosmeticBonus>, u64): bool
28BrFalse(42)
B7:
29MoveLoc[6](loc1: &mut Table<u64, CosmeticBonus>)
30MoveLoc[2](Arg2: u64)
31Call table::borrow_mut<u64, CosmeticBonus>(&mut Table<u64, CosmeticBonus>, u64): &mut CosmeticBonus
32StLoc[5](loc0: &mut CosmeticBonus)
33MoveLoc[3](Arg3: u8)
34CopyLoc[5](loc0: &mut CosmeticBonus)
35MutBorrowField[81](CosmeticBonus.bonus_type: u8)
36WriteRef
37MoveLoc[4](Arg4: u64)
38MoveLoc[5](loc0: &mut CosmeticBonus)
39MutBorrowField[82](CosmeticBonus.bonus_bps: u64)
40WriteRef
41Branch(48)
B8:
42MoveLoc[6](loc1: &mut Table<u64, CosmeticBonus>)
43MoveLoc[2](Arg2: u64)
44MoveLoc[3](Arg3: u8)
45MoveLoc[4](Arg4: u64)
46Pack[36](CosmeticBonus)
47Call table::add<u64, CosmeticBonus>(&mut Table<u64, CosmeticBonus>, u64, CosmeticBonus)
B9:
48Ret
}
entry admin_remove_cosmetic_bonus<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: &AdminCap, Arg2: u64) {
L3: loc0: &mut Table<u64, CosmeticBonus>
B0:
0MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
1MutBorrowFieldGeneric[23](GameState.id: UID)
2LdFalse
3Pack[34](CosmeticBonusTableKey)
4Call dynamic_field::borrow_mut<CosmeticBonusTableKey, Table<u64, CosmeticBonus>>(&mut UID, CosmeticBonusTableKey): &mut Table<u64, CosmeticBonus>
5StLoc[3](loc0: &mut Table<u64, CosmeticBonus>)
6CopyLoc[3](loc0: &mut Table<u64, CosmeticBonus>)
7FreezeRef
8CopyLoc[2](Arg2: u64)
9Call table::contains<u64, CosmeticBonus>(&Table<u64, CosmeticBonus>, u64): bool
10BrFalse(16)
B1:
11MoveLoc[3](loc0: &mut Table<u64, CosmeticBonus>)
12MoveLoc[2](Arg2: u64)
13Call table::remove<u64, CosmeticBonus>(&mut Table<u64, CosmeticBonus>, u64): CosmeticBonus
14Pop
15Branch(18)
B2:
16MoveLoc[3](loc0: &mut Table<u64, CosmeticBonus>)
17Pop
B3:
18Ret
}
entry display_cosmetic_v4<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: &mut CosmeticVault, Arg2: BubbleCosmetic, Arg3: &Clock, Arg4: &TxContext) {
L5: loc0: u64
L6: loc1: u64
L7: loc2: bool
L8: loc3: bool
L9: loc4: &mut Table<u64, u64>
L10: loc5: u64
L11: loc6: CosmeticBonus
L12: loc7: u64
L13: loc8: &Table<u64, CosmeticBonus>
L14: loc9: u64
L15: loc10: u64
L16: loc11: u64
L17: loc12: u64
L18: loc13: u64
L19: loc14: &CosmeticType
L20: loc15: u64
L21: loc16: u64
L22: loc17: u64
L23: loc18: u64
L24: loc19: u64
L25: loc20: u64
L26: loc21: u64
L27: loc22: u64
L28: loc23: address
L29: loc24: &PlayerTank
L30: loc25: &mut PlayerTank
L31: loc26: &mut PlayerTank
L32: loc27: &PlayerTank
L33: loc28: u64
L34: loc29: u64
B0:
0CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
1ImmBorrowFieldGeneric[7](GameState.paused: bool)
2ReadRef
3Not
4BrFalse(6)
B1:
5Branch(16)
B2:
6MoveLoc[1](Arg1: &mut CosmeticVault)
7Pop
8MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
9Pop
10MoveLoc[4](Arg4: &TxContext)
11Pop
12MoveLoc[3](Arg3: &Clock)
13Pop
14LdConst[4](u64: 6)
15Abort
B3:
16MoveLoc[4](Arg4: &TxContext)
17Call tx_context::sender(&TxContext): address
18StLoc[28](loc23: address)
19CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
20ImmBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
21CopyLoc[28](loc23: address)
22Call table::contains<address, PlayerTank>(&Table<address, PlayerTank>, address): bool
23BrFalse(25)
B4:
24Branch(33)
B5:
25MoveLoc[1](Arg1: &mut CosmeticVault)
26Pop
27MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
28Pop
29MoveLoc[3](Arg3: &Clock)
30Pop
31LdConst[8](u64: 10)
32Abort
B6:
33MoveLoc[3](Arg3: &Clock)
34Call clock::timestamp_ms(&Clock): u64
35StLoc[26](loc21: u64)
36CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
37CopyLoc[28](loc23: address)
38CopyLoc[26](loc21: u64)
39Call ensure_repair_record<Ty0, Ty1>(&mut GameState<Ty0, Ty1>, address, u64)
40CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
41ImmBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
42CopyLoc[28](loc23: address)
43Call table::borrow<address, PlayerTank>(&Table<address, PlayerTank>, address): &PlayerTank
44StLoc[32](loc27: &PlayerTank)
45CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
46FreezeRef
47MoveLoc[32](loc27: &PlayerTank)
48CopyLoc[28](loc23: address)
49CopyLoc[26](loc21: u64)
50Call calculate_pending_rewards_v2<Ty0, Ty1>(&GameState<Ty0, Ty1>, &PlayerTank, address, u64): u64
51StLoc[27](loc22: u64)
52CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
53MutBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
54CopyLoc[28](loc23: address)
55Call table::borrow_mut<address, PlayerTank>(&mut Table<address, PlayerTank>, address): &mut PlayerTank
56StLoc[31](loc26: &mut PlayerTank)
57CopyLoc[27](loc22: u64)
58LdU64(0)
59Gt
60BrFalse(69)
B7:
61CopyLoc[31](loc26: &mut PlayerTank)
62ImmBorrowField[25](PlayerTank.unclaimed_rewards: u64)
63ReadRef
64MoveLoc[27](loc22: u64)
65Add
66CopyLoc[31](loc26: &mut PlayerTank)
67MutBorrowField[25](PlayerTank.unclaimed_rewards: u64)
68WriteRef
B8:
69MoveLoc[26](loc21: u64)
70MoveLoc[31](loc26: &mut PlayerTank)
71MutBorrowField[3](PlayerTank.last_claim_time: u64)
72WriteRef
73CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
74ImmBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
75CopyLoc[28](loc23: address)
76Call table::borrow<address, PlayerTank>(&Table<address, PlayerTank>, address): &PlayerTank
77StLoc[29](loc24: &PlayerTank)
78CopyLoc[29](loc24: &PlayerTank)
79ImmBorrowField[13](PlayerTank.tier: u8)
80ReadRef
81Call get_tank_cosmetic_slots(u8): u64
82StLoc[25](loc20: u64)
83CopyLoc[29](loc24: &PlayerTank)
84ImmBorrowField[16](PlayerTank.displayed_cosmetic_ids: vector<u64>)
85VecLen(1)
86MoveLoc[25](loc20: u64)
87Lt
88BrFalse(90)
B9:
89Branch(98)
B10:
90MoveLoc[1](Arg1: &mut CosmeticVault)
91Pop
92MoveLoc[29](loc24: &PlayerTank)
93Pop
94MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
95Pop
96LdConst[13](u64: 16)
97Abort
B11:
98ImmBorrowLoc[2](Arg2: BubbleCosmetic)
99ImmBorrowField[47](BubbleCosmetic.cosmetic_instance_id: u64)
100ReadRef
101StLoc[16](loc11: u64)
102ImmBorrowLoc[2](Arg2: BubbleCosmetic)
103ImmBorrowField[49](BubbleCosmetic.cosmetic_type_id: u64)
104ReadRef
105StLoc[34](loc29: u64)
106CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
107ImmBorrowFieldGeneric[19](GameState.displayed_cosmetics: Table<u64, DisplayedCosmeticInfo>)
108CopyLoc[16](loc11: u64)
109Call table::contains<u64, DisplayedCosmeticInfo>(&Table<u64, DisplayedCosmeticInfo>, u64): bool
110Not
111BrFalse(113)
B12:
112Branch(121)
B13:
113MoveLoc[1](Arg1: &mut CosmeticVault)
114Pop
115MoveLoc[29](loc24: &PlayerTank)
116Pop
117MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
118Pop
119LdConst[16](u64: 19)
120Abort
B14:
121CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
122ImmBorrowFieldGeneric[17](GameState.cosmetic_types: Table<u64, CosmeticType>)
123CopyLoc[34](loc29: u64)
124Call table::contains<u64, CosmeticType>(&Table<u64, CosmeticType>, u64): bool
125BrFalse(194)
B15:
126CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
127ImmBorrowFieldGeneric[17](GameState.cosmetic_types: Table<u64, CosmeticType>)
128CopyLoc[34](loc29: u64)
129Call table::borrow<u64, CosmeticType>(&Table<u64, CosmeticType>, u64): &CosmeticType
130StLoc[19](loc14: &CosmeticType)
131LdU64(0)
132StLoc[20](loc15: u64)
133LdU64(0)
134StLoc[23](loc18: u64)
135CopyLoc[29](loc24: &PlayerTank)
136ImmBorrowField[16](PlayerTank.displayed_cosmetic_ids: vector<u64>)
137VecLen(1)
138StLoc[24](loc19: u64)
B16:
139CopyLoc[23](loc18: u64)
140CopyLoc[24](loc19: u64)
141Lt
142BrFalse(172)
B17:
143CopyLoc[29](loc24: &PlayerTank)
144ImmBorrowField[16](PlayerTank.displayed_cosmetic_ids: vector<u64>)
145CopyLoc[23](loc18: u64)
146VecImmBorrow(1)
147ReadRef
148StLoc[21](loc16: u64)
149CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
150ImmBorrowFieldGeneric[19](GameState.displayed_cosmetics: Table<u64, DisplayedCosmeticInfo>)
151CopyLoc[21](loc16: u64)
152Call table::contains<u64, DisplayedCosmeticInfo>(&Table<u64, DisplayedCosmeticInfo>, u64): bool
153BrFalse(167)
B18:
154CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
155ImmBorrowFieldGeneric[19](GameState.displayed_cosmetics: Table<u64, DisplayedCosmeticInfo>)
156MoveLoc[21](loc16: u64)
157Call table::borrow<u64, DisplayedCosmeticInfo>(&Table<u64, DisplayedCosmeticInfo>, u64): &DisplayedCosmeticInfo
158ImmBorrowField[50](DisplayedCosmeticInfo.cosmetic_type_id: u64)
159ReadRef
160CopyLoc[34](loc29: u64)
161Eq
162BrFalse(167)
B19:
163MoveLoc[20](loc15: u64)
164LdU64(1)
165Add
166StLoc[20](loc15: u64)
B20:
167MoveLoc[23](loc18: u64)
168LdU64(1)
169Add
170StLoc[23](loc18: u64)
171Branch(139)
B21:
172MoveLoc[20](loc15: u64)
173CopyLoc[19](loc14: &CosmeticType)
174ImmBorrowField[51](CosmeticType.per_facility: u64)
175ReadRef
176Lt
177BrFalse(179)
B22:
178Branch(189)
B23:
179MoveLoc[1](Arg1: &mut CosmeticVault)
180Pop
181MoveLoc[29](loc24: &PlayerTank)
182Pop
183MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
184Pop
185MoveLoc[19](loc14: &CosmeticType)
186Pop
187LdConst[14](u64: 17)
188Abort
B24:
189MoveLoc[19](loc14: &CosmeticType)
190ImmBorrowField[45](CosmeticType.bubble_pressure: u64)
191ReadRef
192StLoc[5](loc0: u64)
193Branch(198)
B25:
194ImmBorrowLoc[2](Arg2: BubbleCosmetic)
195ImmBorrowField[52](BubbleCosmetic.bubble_pressure: u64)
196ReadRef
197StLoc[5](loc0: u64)
B26:
198MoveLoc[5](loc0: u64)
199StLoc[10](loc5: u64)
200LdU64(0)
201StLoc[12](loc7: u64)
202CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
203ImmBorrowFieldGeneric[23](GameState.id: UID)
204LdFalse
205Pack[34](CosmeticBonusTableKey)
206Call dynamic_field::exists_<CosmeticBonusTableKey>(&UID, CosmeticBonusTableKey): bool
207BrFalse(315)
B27:
208CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
209ImmBorrowFieldGeneric[23](GameState.id: UID)
210LdFalse
211Pack[34](CosmeticBonusTableKey)
212Call dynamic_field::borrow<CosmeticBonusTableKey, Table<u64, CosmeticBonus>>(&UID, CosmeticBonusTableKey): &Table<u64, CosmeticBonus>
213StLoc[13](loc8: &Table<u64, CosmeticBonus>)
214CopyLoc[13](loc8: &Table<u64, CosmeticBonus>)
215CopyLoc[34](loc29: u64)
216Call table::contains<u64, CosmeticBonus>(&Table<u64, CosmeticBonus>, u64): bool
217BrFalse(310)
B28:
218MoveLoc[13](loc8: &Table<u64, CosmeticBonus>)
219CopyLoc[34](loc29: u64)
220Call table::borrow<u64, CosmeticBonus>(&Table<u64, CosmeticBonus>, u64): &CosmeticBonus
221ReadRef
222StLoc[11](loc6: CosmeticBonus)
223LdU64(0)
224StLoc[18](loc13: u64)
225LdU64(0)
226StLoc[15](loc10: u64)
227CopyLoc[29](loc24: &PlayerTank)
228ImmBorrowField[16](PlayerTank.displayed_cosmetic_ids: vector<u64>)
229VecLen(1)
230StLoc[17](loc12: u64)
B29:
231CopyLoc[15](loc10: u64)
232CopyLoc[17](loc12: u64)
233Lt
234BrFalse(260)
B30:
235CopyLoc[29](loc24: &PlayerTank)
236ImmBorrowField[16](PlayerTank.displayed_cosmetic_ids: vector<u64>)
237CopyLoc[15](loc10: u64)
238VecImmBorrow(1)
239ReadRef
240StLoc[22](loc17: u64)
241CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
242ImmBorrowFieldGeneric[19](GameState.displayed_cosmetics: Table<u64, DisplayedCosmeticInfo>)
243CopyLoc[22](loc17: u64)
244Call table::contains<u64, DisplayedCosmeticInfo>(&Table<u64, DisplayedCosmeticInfo>, u64): bool
245BrFalse(255)
B31:
246MoveLoc[18](loc13: u64)
247CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
248ImmBorrowFieldGeneric[19](GameState.displayed_cosmetics: Table<u64, DisplayedCosmeticInfo>)
249MoveLoc[22](loc17: u64)
250Call table::borrow<u64, DisplayedCosmeticInfo>(&Table<u64, DisplayedCosmeticInfo>, u64): &DisplayedCosmeticInfo
251ImmBorrowField[54](DisplayedCosmeticInfo.bubble_pressure: u64)
252ReadRef
253Add
254StLoc[18](loc13: u64)
B32:
255MoveLoc[15](loc10: u64)
256LdU64(1)
257Add
258StLoc[15](loc10: u64)
259Branch(231)
B33:
260CopyLoc[29](loc24: &PlayerTank)
261ImmBorrowField[1](PlayerTank.total_pressure: u64)
262ReadRef
263CopyLoc[18](loc13: u64)
264Gt
265BrFalse(273)
B34:
266MoveLoc[29](loc24: &PlayerTank)
267ImmBorrowField[1](PlayerTank.total_pressure: u64)
268ReadRef
269MoveLoc[18](loc13: u64)
270Sub
271StLoc[6](loc1: u64)
272Branch(277)
B35:
273MoveLoc[29](loc24: &PlayerTank)
274Pop
275LdU64(0)
276StLoc[6](loc1: u64)
B36:
277MoveLoc[6](loc1: u64)
278StLoc[14](loc9: u64)
279ImmBorrowLoc[11](loc6: CosmeticBonus)
280ImmBorrowField[81](CosmeticBonus.bonus_type: u8)
281ReadRef
282LdU8(0)
283Eq
284BrFalse(288)
B37:
285LdTrue
286StLoc[7](loc2: bool)
287Branch(295)
B38:
288ImmBorrowLoc[11](loc6: CosmeticBonus)
289ImmBorrowField[81](CosmeticBonus.bonus_type: u8)
290ReadRef
291LdU8(2)
292Eq
293StLoc[7](loc2: bool)
294Branch(295)
B39:
295MoveLoc[7](loc2: bool)
296BrFalse(317)
B40:
297MoveLoc[14](loc9: u64)
298CastU128
299ImmBorrowLoc[11](loc6: CosmeticBonus)
300ImmBorrowField[82](CosmeticBonus.bonus_bps: u64)
301ReadRef
302CastU128
303Mul
304LdConst[31](u64: 10000)
305CastU128
306Div
307CastU64
308StLoc[12](loc7: u64)
309Branch(317)
B41:
310MoveLoc[29](loc24: &PlayerTank)
311Pop
312MoveLoc[13](loc8: &Table<u64, CosmeticBonus>)
313Pop
314Branch(317)
B42:
315MoveLoc[29](loc24: &PlayerTank)
316Pop
B43:
317MoveLoc[10](loc5: u64)
318CopyLoc[12](loc7: u64)
319Add
320StLoc[33](loc28: u64)
321CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
322MutBorrowFieldGeneric[19](GameState.displayed_cosmetics: Table<u64, DisplayedCosmeticInfo>)
323CopyLoc[16](loc11: u64)
324CopyLoc[28](loc23: address)
325MoveLoc[34](loc29: u64)
326CopyLoc[33](loc28: u64)
327Pack[8](DisplayedCosmeticInfo)
328Call table::add<u64, DisplayedCosmeticInfo>(&mut Table<u64, DisplayedCosmeticInfo>, u64, DisplayedCosmeticInfo)
329CopyLoc[12](loc7: u64)
330LdU64(0)
331Gt
332BrFalse(340)
B44:
333CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
334ImmBorrowFieldGeneric[23](GameState.id: UID)
335LdFalse
336Pack[35](CosmeticBonusAppliedKey)
337Call dynamic_field::exists_<CosmeticBonusAppliedKey>(&UID, CosmeticBonusAppliedKey): bool
338StLoc[8](loc3: bool)
339Branch(342)
B45:
340LdFalse
341StLoc[8](loc3: bool)
B46:
342MoveLoc[8](loc3: bool)
343BrFalse(365)
B47:
344CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
345MutBorrowFieldGeneric[23](GameState.id: UID)
346LdFalse
347Pack[35](CosmeticBonusAppliedKey)
348Call dynamic_field::borrow_mut<CosmeticBonusAppliedKey, Table<u64, u64>>(&mut UID, CosmeticBonusAppliedKey): &mut Table<u64, u64>
349StLoc[9](loc4: &mut Table<u64, u64>)
350CopyLoc[9](loc4: &mut Table<u64, u64>)
351FreezeRef
352CopyLoc[16](loc11: u64)
353Call table::contains<u64, u64>(&Table<u64, u64>, u64): bool
354BrFalse(361)
B48:
355MoveLoc[12](loc7: u64)
356MoveLoc[9](loc4: &mut Table<u64, u64>)
357CopyLoc[16](loc11: u64)
358Call table::borrow_mut<u64, u64>(&mut Table<u64, u64>, u64): &mut u64
359WriteRef
360Branch(365)
B49:
361MoveLoc[9](loc4: &mut Table<u64, u64>)
362CopyLoc[16](loc11: u64)
363MoveLoc[12](loc7: u64)
364Call table::add<u64, u64>(&mut Table<u64, u64>, u64, u64)
B50:
365MoveLoc[1](Arg1: &mut CosmeticVault)
366MutBorrowField[58](CosmeticVault.cosmetics: Table<u64, BubbleCosmetic>)
367CopyLoc[16](loc11: u64)
368MoveLoc[2](Arg2: BubbleCosmetic)
369Call table::add<u64, BubbleCosmetic>(&mut Table<u64, BubbleCosmetic>, u64, BubbleCosmetic)
370CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
371MutBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
372MoveLoc[28](loc23: address)
373Call table::borrow_mut<address, PlayerTank>(&mut Table<address, PlayerTank>, address): &mut PlayerTank
374StLoc[30](loc25: &mut PlayerTank)
375CopyLoc[30](loc25: &mut PlayerTank)
376MutBorrowField[16](PlayerTank.displayed_cosmetic_ids: vector<u64>)
377MoveLoc[16](loc11: u64)
378VecPushBack(1)
379CopyLoc[30](loc25: &mut PlayerTank)
380ImmBorrowField[1](PlayerTank.total_pressure: u64)
381ReadRef
382CopyLoc[33](loc28: u64)
383Add
384MoveLoc[30](loc25: &mut PlayerTank)
385MutBorrowField[1](PlayerTank.total_pressure: u64)
386WriteRef
387CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
388ImmBorrowFieldGeneric[1](GameState.total_network_pressure: u64)
389ReadRef
390MoveLoc[33](loc28: u64)
391Add
392MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
393MutBorrowFieldGeneric[1](GameState.total_network_pressure: u64)
394WriteRef
395Ret
}
entry remove_cosmetic_v3<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: &mut CosmeticVault, Arg2: u64, Arg3: &Clock, Arg4: &TxContext) {
L5: loc0: &mut Table<u64, u64>
L6: loc1: u64
L7: loc2: u64
L8: loc3: u64
L9: loc4: u64
L10: loc5: DisplayedCosmeticInfo
L11: loc6: address
L12: loc7: &mut PlayerTank
L13: loc8: &mut PlayerTank
L14: loc9: &PlayerTank
B0:
0CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
1ImmBorrowFieldGeneric[7](GameState.paused: bool)
2ReadRef
3Not
4BrFalse(6)
B1:
5Branch(16)
B2:
6MoveLoc[1](Arg1: &mut CosmeticVault)
7Pop
8MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
9Pop
10MoveLoc[4](Arg4: &TxContext)
11Pop
12MoveLoc[3](Arg3: &Clock)
13Pop
14LdConst[4](u64: 6)
15Abort
B3:
16MoveLoc[4](Arg4: &TxContext)
17Call tx_context::sender(&TxContext): address
18StLoc[11](loc6: address)
19CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
20ImmBorrowFieldGeneric[19](GameState.displayed_cosmetics: Table<u64, DisplayedCosmeticInfo>)
21CopyLoc[2](Arg2: u64)
22Call table::contains<u64, DisplayedCosmeticInfo>(&Table<u64, DisplayedCosmeticInfo>, u64): bool
23BrFalse(25)
B4:
24Branch(33)
B5:
25MoveLoc[1](Arg1: &mut CosmeticVault)
26Pop
27MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
28Pop
29MoveLoc[3](Arg3: &Clock)
30Pop
31LdConst[15](u64: 18)
32Abort
B6:
33CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
34ImmBorrowFieldGeneric[19](GameState.displayed_cosmetics: Table<u64, DisplayedCosmeticInfo>)
35CopyLoc[2](Arg2: u64)
36Call table::borrow<u64, DisplayedCosmeticInfo>(&Table<u64, DisplayedCosmeticInfo>, u64): &DisplayedCosmeticInfo
37ImmBorrowField[53](DisplayedCosmeticInfo.owner: address)
38ReadRef
39CopyLoc[11](loc6: address)
40Eq
41BrFalse(43)
B7:
42Branch(51)
B8:
43MoveLoc[1](Arg1: &mut CosmeticVault)
44Pop
45MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
46Pop
47MoveLoc[3](Arg3: &Clock)
48Pop
49LdConst[3](u64: 4)
50Abort
B9:
51CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
52MutBorrowFieldGeneric[19](GameState.displayed_cosmetics: Table<u64, DisplayedCosmeticInfo>)
53CopyLoc[2](Arg2: u64)
54Call table::remove<u64, DisplayedCosmeticInfo>(&mut Table<u64, DisplayedCosmeticInfo>, u64): DisplayedCosmeticInfo
55StLoc[10](loc5: DisplayedCosmeticInfo)
56MoveLoc[3](Arg3: &Clock)
57Call clock::timestamp_ms(&Clock): u64
58StLoc[8](loc3: u64)
59CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
60CopyLoc[11](loc6: address)
61CopyLoc[8](loc3: u64)
62Call ensure_repair_record<Ty0, Ty1>(&mut GameState<Ty0, Ty1>, address, u64)
63CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
64ImmBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
65CopyLoc[11](loc6: address)
66Call table::borrow<address, PlayerTank>(&Table<address, PlayerTank>, address): &PlayerTank
67StLoc[14](loc9: &PlayerTank)
68CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
69FreezeRef
70MoveLoc[14](loc9: &PlayerTank)
71CopyLoc[11](loc6: address)
72CopyLoc[8](loc3: u64)
73Call calculate_pending_rewards_v2<Ty0, Ty1>(&GameState<Ty0, Ty1>, &PlayerTank, address, u64): u64
74StLoc[9](loc4: u64)
75CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
76MutBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
77CopyLoc[11](loc6: address)
78Call table::borrow_mut<address, PlayerTank>(&mut Table<address, PlayerTank>, address): &mut PlayerTank
79StLoc[13](loc8: &mut PlayerTank)
80CopyLoc[9](loc4: u64)
81LdU64(0)
82Gt
83BrFalse(92)
B10:
84CopyLoc[13](loc8: &mut PlayerTank)
85ImmBorrowField[25](PlayerTank.unclaimed_rewards: u64)
86ReadRef
87MoveLoc[9](loc4: u64)
88Add
89CopyLoc[13](loc8: &mut PlayerTank)
90MutBorrowField[25](PlayerTank.unclaimed_rewards: u64)
91WriteRef
B11:
92MoveLoc[8](loc3: u64)
93MoveLoc[13](loc8: &mut PlayerTank)
94MutBorrowField[3](PlayerTank.last_claim_time: u64)
95WriteRef
96CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
97MutBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
98CopyLoc[11](loc6: address)
99Call table::borrow_mut<address, PlayerTank>(&mut Table<address, PlayerTank>, address): &mut PlayerTank
100StLoc[12](loc7: &mut PlayerTank)
101LdU64(0)
102StLoc[6](loc1: u64)
103CopyLoc[12](loc7: &mut PlayerTank)
104ImmBorrowField[16](PlayerTank.displayed_cosmetic_ids: vector<u64>)
105VecLen(1)
106StLoc[7](loc2: u64)
B12:
107CopyLoc[6](loc1: u64)
108CopyLoc[7](loc2: u64)
109Lt
110BrFalse(131)
B13:
111CopyLoc[12](loc7: &mut PlayerTank)
112ImmBorrowField[16](PlayerTank.displayed_cosmetic_ids: vector<u64>)
113CopyLoc[6](loc1: u64)
114VecImmBorrow(1)
115ReadRef
116CopyLoc[2](Arg2: u64)
117Eq
118BrFalse(126)
B14:
119CopyLoc[12](loc7: &mut PlayerTank)
120MutBorrowField[16](PlayerTank.displayed_cosmetic_ids: vector<u64>)
121MoveLoc[6](loc1: u64)
122Call vector::swap_remove<u64>(&mut vector<u64>, u64): u64
123Pop
124CopyLoc[7](loc2: u64)
125StLoc[6](loc1: u64)
B15:
126MoveLoc[6](loc1: u64)
127LdU64(1)
128Add
129StLoc[6](loc1: u64)
130Branch(107)
B16:
131CopyLoc[12](loc7: &mut PlayerTank)
132ImmBorrowField[1](PlayerTank.total_pressure: u64)
133ReadRef
134ImmBorrowLoc[10](loc5: DisplayedCosmeticInfo)
135ImmBorrowField[54](DisplayedCosmeticInfo.bubble_pressure: u64)
136ReadRef
137Sub
138MoveLoc[12](loc7: &mut PlayerTank)
139MutBorrowField[1](PlayerTank.total_pressure: u64)
140WriteRef
141CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
142ImmBorrowFieldGeneric[1](GameState.total_network_pressure: u64)
143ReadRef
144ImmBorrowLoc[10](loc5: DisplayedCosmeticInfo)
145ImmBorrowField[54](DisplayedCosmeticInfo.bubble_pressure: u64)
146ReadRef
147Sub
148CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
149MutBorrowFieldGeneric[1](GameState.total_network_pressure: u64)
150WriteRef
151CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
152ImmBorrowFieldGeneric[23](GameState.id: UID)
153LdFalse
154Pack[35](CosmeticBonusAppliedKey)
155Call dynamic_field::exists_<CosmeticBonusAppliedKey>(&UID, CosmeticBonusAppliedKey): bool
156BrFalse(177)
B17:
157Branch(158)
B18:
158MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
159MutBorrowFieldGeneric[23](GameState.id: UID)
160LdFalse
161Pack[35](CosmeticBonusAppliedKey)
162Call dynamic_field::borrow_mut<CosmeticBonusAppliedKey, Table<u64, u64>>(&mut UID, CosmeticBonusAppliedKey): &mut Table<u64, u64>
163StLoc[5](loc0: &mut Table<u64, u64>)
164CopyLoc[5](loc0: &mut Table<u64, u64>)
165FreezeRef
166CopyLoc[2](Arg2: u64)
167Call table::contains<u64, u64>(&Table<u64, u64>, u64): bool
168BrFalse(174)
B19:
169MoveLoc[5](loc0: &mut Table<u64, u64>)
170CopyLoc[2](Arg2: u64)
171Call table::remove<u64, u64>(&mut Table<u64, u64>, u64): u64
172Pop
173Branch(179)
B20:
174MoveLoc[5](loc0: &mut Table<u64, u64>)
175Pop
176Branch(179)
B21:
177MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
178Pop
B22:
179CopyLoc[1](Arg1: &mut CosmeticVault)
180ImmBorrowField[58](CosmeticVault.cosmetics: Table<u64, BubbleCosmetic>)
181CopyLoc[2](Arg2: u64)
182Call table::contains<u64, BubbleCosmetic>(&Table<u64, BubbleCosmetic>, u64): bool
183BrFalse(191)
B23:
184MoveLoc[1](Arg1: &mut CosmeticVault)
185MutBorrowField[58](CosmeticVault.cosmetics: Table<u64, BubbleCosmetic>)
186MoveLoc[2](Arg2: u64)
187Call table::remove<u64, BubbleCosmetic>(&mut Table<u64, BubbleCosmetic>, u64): BubbleCosmetic
188MoveLoc[11](loc6: address)
189Call transfer::public_transfer<BubbleCosmetic>(BubbleCosmetic, address)
190Branch(193)
B24:
191MoveLoc[1](Arg1: &mut CosmeticVault)
192Pop
B25:
193Ret
}
entry admin_init_partner_claims<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: &AdminCap, Arg2: &mut TxContext) {
B0:
0CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
1ImmBorrowFieldGeneric[23](GameState.id: UID)
2LdFalse
3Pack[37](PartnerClaimsKey)
4Call dynamic_field::exists_<PartnerClaimsKey>(&UID, PartnerClaimsKey): bool
5Not
6BrFalse(8)
B1:
7Branch(14)
B2:
8MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
9Pop
10MoveLoc[2](Arg2: &mut TxContext)
11Pop
12LdConst[46](u64: 401)
13Abort
B3:
14MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
15MutBorrowFieldGeneric[23](GameState.id: UID)
16LdFalse
17Pack[37](PartnerClaimsKey)
18MoveLoc[2](Arg2: &mut TxContext)
19Call table::new<address, bool>(&mut TxContext): Table<address, bool>
20Call dynamic_field::add<PartnerClaimsKey, Table<address, bool>>(&mut UID, PartnerClaimsKey, Table<address, bool>)
21Ret
}
entry admin_remove_partner_claims_v1<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: &AdminCap) {
B0:
0CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
1ImmBorrowFieldGeneric[23](GameState.id: UID)
2LdFalse
3Pack[37](PartnerClaimsKey)
4Call dynamic_field::exists_<PartnerClaimsKey>(&UID, PartnerClaimsKey): bool
5BrFalse(7)
B1:
6Branch(11)
B2:
7MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
8Pop
9LdConst[45](u64: 400)
10Abort
B3:
11MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
12MutBorrowFieldGeneric[23](GameState.id: UID)
13LdFalse
14Pack[37](PartnerClaimsKey)
15Call dynamic_field::remove<PartnerClaimsKey, Table<address, bool>>(&mut UID, PartnerClaimsKey): Table<address, bool>
16Call table::destroy_empty<address, bool>(Table<address, bool>)
17Ret
}
entry admin_init_partner_claims_v2<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: &AdminCap, Arg2: &mut TxContext) {
B0:
0CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
1ImmBorrowFieldGeneric[23](GameState.id: UID)
2LdFalse
3Pack[38](PartnerClaimsKeyV2)
4Call dynamic_field::exists_<PartnerClaimsKeyV2>(&UID, PartnerClaimsKeyV2): bool
5Not
6BrFalse(8)
B1:
7Branch(14)
B2:
8MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
9Pop
10MoveLoc[2](Arg2: &mut TxContext)
11Pop
12LdConst[46](u64: 401)
13Abort
B3:
14MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
15MutBorrowFieldGeneric[23](GameState.id: UID)
16LdFalse
17Pack[38](PartnerClaimsKeyV2)
18MoveLoc[2](Arg2: &mut TxContext)
19Call table::new<address, bool>(&mut TxContext): Table<address, bool>
20Call dynamic_field::add<PartnerClaimsKeyV2, Table<address, bool>>(&mut UID, PartnerClaimsKeyV2, Table<address, bool>)
21Ret
}
do_claim_partner_pack<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: address, Arg2: &Clock, Arg3: &mut TxContext) {
L4: loc0: u64
L5: loc1: u64
L6: loc2: &mut Table<address, bool>
L7: loc3: u64
L8: loc4: String
L9: loc5: String
L10: loc6: &mut CosmeticType
L11: loc7: u64
L12: loc8: u64
L13: loc9: String
L14: loc10: u64
L15: loc11: vector<u8>
L16: loc12: String
L17: loc13: address
L18: loc14: u64
L19: loc15: &mut PlayerTank
L20: loc16: u64
L21: loc17: u8
L22: loc18: vector<u8>
L23: loc19: vector<u8>
B0:
0CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
1ImmBorrowFieldGeneric[7](GameState.paused: bool)
2ReadRef
3Not
4BrFalse(6)
B1:
5Branch(14)
B2:
6MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
7Pop
8MoveLoc[3](Arg3: &mut TxContext)
9Pop
10MoveLoc[2](Arg2: &Clock)
11Pop
12LdConst[4](u64: 6)
13Abort
B3:
14CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
15ImmBorrowFieldGeneric[23](GameState.id: UID)
16LdFalse
17Pack[38](PartnerClaimsKeyV2)
18Call dynamic_field::exists_<PartnerClaimsKeyV2>(&UID, PartnerClaimsKeyV2): bool
19BrFalse(21)
B4:
20Branch(29)
B5:
21MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
22Pop
23MoveLoc[3](Arg3: &mut TxContext)
24Pop
25MoveLoc[2](Arg2: &Clock)
26Pop
27LdConst[45](u64: 400)
28Abort
B6:
29CopyLoc[3](Arg3: &mut TxContext)
30FreezeRef
31Call tx_context::sender(&TxContext): address
32StLoc[17](loc13: address)
33CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
34MutBorrowFieldGeneric[23](GameState.id: UID)
35LdFalse
36Pack[38](PartnerClaimsKeyV2)
37Call dynamic_field::borrow_mut<PartnerClaimsKeyV2, Table<address, bool>>(&mut UID, PartnerClaimsKeyV2): &mut Table<address, bool>
38StLoc[6](loc2: &mut Table<address, bool>)
39CopyLoc[6](loc2: &mut Table<address, bool>)
40FreezeRef
41CopyLoc[1](Arg1: address)
42Call table::contains<address, bool>(&Table<address, bool>, address): bool
43Not
44BrFalse(46)
B7:
45Branch(56)
B8:
46MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
47Pop
48MoveLoc[3](Arg3: &mut TxContext)
49Pop
50MoveLoc[2](Arg2: &Clock)
51Pop
52MoveLoc[6](loc2: &mut Table<address, bool>)
53Pop
54LdConst[47](u64: 402)
55Abort
B9:
56CopyLoc[6](loc2: &mut Table<address, bool>)
57FreezeRef
58CopyLoc[17](loc13: address)
59Call table::contains<address, bool>(&Table<address, bool>, address): bool
60Not
61BrFalse(63)
B10:
62Branch(73)
B11:
63MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
64Pop
65MoveLoc[3](Arg3: &mut TxContext)
66Pop
67MoveLoc[2](Arg2: &Clock)
68Pop
69MoveLoc[6](loc2: &mut Table<address, bool>)
70Pop
71LdConst[47](u64: 402)
72Abort
B12:
73CopyLoc[6](loc2: &mut Table<address, bool>)
74CopyLoc[1](Arg1: address)
75LdTrue
76Call table::add<address, bool>(&mut Table<address, bool>, address, bool)
77MoveLoc[6](loc2: &mut Table<address, bool>)
78CopyLoc[17](loc13: address)
79LdTrue
80Call table::add<address, bool>(&mut Table<address, bool>, address, bool)
81CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
82ImmBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
83CopyLoc[17](loc13: address)
84Call table::contains<address, PlayerTank>(&Table<address, PlayerTank>, address): bool
85Not
86BrFalse(129)
B13:
87VecPack(0, 0)
88StLoc[23](loc19: vector<u8>)
89LdU64(0)
90StLoc[12](loc8: u64)
B14:
91CopyLoc[12](loc8: u64)
92LdU64(5)
93Lt
94BrFalse(103)
B15:
95MutBorrowLoc[23](loc19: vector<u8>)
96LdU8(0)
97VecPushBack(0)
98MoveLoc[12](loc8: u64)
99LdU64(1)
100Add
101StLoc[12](loc8: u64)
102Branch(91)
B16:
103CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
104MutBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
105CopyLoc[17](loc13: address)
106LdU8(0)
107LdU64(0)
108VecPack(1, 0)
109VecPack(1, 0)
110LdU64(0)
111LdU64(0)
112MoveLoc[23](loc19: vector<u8>)
113CopyLoc[2](Arg2: &Clock)
114Call clock::timestamp_ms(&Clock): u64
115LdU64(0)
116LdU64(0)
117LdConst[98](address: 0x00..)
118LdFalse
119Pack[6](PlayerTank)
120Call table::add<address, PlayerTank>(&mut Table<address, PlayerTank>, address, PlayerTank)
121CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
122ImmBorrowFieldGeneric[9](GameState.total_players: u64)
123ReadRef
124LdU64(1)
125Add
126CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
127MutBorrowFieldGeneric[9](GameState.total_players: u64)
128WriteRef
B17:
129CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
130MutBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
131CopyLoc[17](loc13: address)
132Call table::borrow_mut<address, PlayerTank>(&mut Table<address, PlayerTank>, address): &mut PlayerTank
133StLoc[19](loc15: &mut PlayerTank)
134CopyLoc[19](loc15: &mut PlayerTank)
135ImmBorrowField[13](PlayerTank.tier: u8)
136ReadRef
137LdU8(4)
138Lt
139BrFalse(150)
B18:
140LdU8(4)
141CopyLoc[19](loc15: &mut PlayerTank)
142MutBorrowField[13](PlayerTank.tier: u8)
143WriteRef
144MoveLoc[2](Arg2: &Clock)
145Call clock::timestamp_ms(&Clock): u64
146MoveLoc[19](loc15: &mut PlayerTank)
147MutBorrowField[14](PlayerTank.last_upgrade_time: u64)
148WriteRef
149Branch(154)
B19:
150MoveLoc[19](loc15: &mut PlayerTank)
151Pop
152MoveLoc[2](Arg2: &Clock)
153Pop
B20:
154LdConst[113](vector<u8>: "..)
155StLoc[22](loc18: vector<u8>)
156VecPack(0, 0)
157StLoc[15](loc11: vector<u8>)
158LdU64(0)
159StLoc[18](loc14: u64)
B21:
160CopyLoc[18](loc14: u64)
161ImmBorrowLoc[22](loc18: vector<u8>)
162VecLen(0)
163Lt
164BrFalse(209)
B22:
165ImmBorrowLoc[22](loc18: vector<u8>)
166CopyLoc[18](loc14: u64)
167VecImmBorrow(0)
168ReadRef
169StLoc[21](loc17: u8)
170CopyLoc[21](loc17: u8)
171Call get_bubbler_stats(u8): u64 * u64 * u64 * String * String
172StLoc[13](loc9: String)
173StLoc[16](loc12: String)
174Pop
175StLoc[20](loc16: u64)
176StLoc[4](loc0: u64)
177CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
178ImmBorrowFieldGeneric[12](GameState.next_bubbler_id: u64)
179ReadRef
180StLoc[5](loc1: u64)
181CopyLoc[5](loc1: u64)
182LdU64(1)
183Add
184CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
185MutBorrowFieldGeneric[12](GameState.next_bubbler_id: u64)
186WriteRef
187CopyLoc[3](Arg3: &mut TxContext)
188Call object::new(&mut TxContext): UID
189MoveLoc[5](loc1: u64)
190CopyLoc[21](loc17: u8)
191CopyLoc[16](loc12: String)
192MoveLoc[4](loc0: u64)
193MoveLoc[20](loc16: u64)
194MoveLoc[13](loc9: String)
195CopyLoc[21](loc17: u8)
196MoveLoc[16](loc12: String)
197Call make_bubbler_attrs(u8, String): VecMap<String, String>
198Pack[9](BubbleGenerator)
199CopyLoc[17](loc13: address)
200Call transfer::public_transfer<BubbleGenerator>(BubbleGenerator, address)
201MutBorrowLoc[15](loc11: vector<u8>)
202MoveLoc[21](loc17: u8)
203VecPushBack(0)
204MoveLoc[18](loc14: u64)
205LdU64(1)
206Add
207StLoc[18](loc14: u64)
208Branch(160)
B23:
209LdU64(18)
210StLoc[11](loc7: u64)
211CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
212ImmBorrowFieldGeneric[17](GameState.cosmetic_types: Table<u64, CosmeticType>)
213CopyLoc[11](loc7: u64)
214Call table::contains<u64, CosmeticType>(&Table<u64, CosmeticType>, u64): bool
215BrFalse(217)
B24:
216Branch(223)
B25:
217MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
218Pop
219MoveLoc[3](Arg3: &mut TxContext)
220Pop
221LdConst[0](u64: 1)
222Abort
B26:
223CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
224MutBorrowFieldGeneric[17](GameState.cosmetic_types: Table<u64, CosmeticType>)
225CopyLoc[11](loc7: u64)
226Call table::borrow_mut<u64, CosmeticType>(&mut Table<u64, CosmeticType>, u64): &mut CosmeticType
227StLoc[10](loc6: &mut CosmeticType)
228CopyLoc[10](loc6: &mut CosmeticType)
229ImmBorrowField[43](CosmeticType.name: String)
230ReadRef
231StLoc[9](loc5: String)
232CopyLoc[10](loc6: &mut CosmeticType)
233ImmBorrowField[44](CosmeticType.image_url: String)
234ReadRef
235StLoc[8](loc4: String)
236CopyLoc[10](loc6: &mut CosmeticType)
237ImmBorrowField[45](CosmeticType.bubble_pressure: u64)
238ReadRef
239StLoc[7](loc3: u64)
240CopyLoc[10](loc6: &mut CosmeticType)
241ImmBorrowField[38](CosmeticType.minted: u64)
242ReadRef
243LdU64(1)
244Add
245MoveLoc[10](loc6: &mut CosmeticType)
246MutBorrowField[38](CosmeticType.minted: u64)
247WriteRef
248CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
249ImmBorrowFieldGeneric[18](GameState.next_cosmetic_instance_id: u64)
250ReadRef
251StLoc[14](loc10: u64)
252CopyLoc[14](loc10: u64)
253LdU64(1)
254Add
255MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
256MutBorrowFieldGeneric[18](GameState.next_cosmetic_instance_id: u64)
257WriteRef
258MoveLoc[3](Arg3: &mut TxContext)
259Call object::new(&mut TxContext): UID
260MoveLoc[14](loc10: u64)
261CopyLoc[11](loc7: u64)
262CopyLoc[9](loc5: String)
263MoveLoc[7](loc3: u64)
264MoveLoc[8](loc4: String)
265MoveLoc[9](loc5: String)
266Call make_cosmetic_attrs(String): VecMap<String, String>
267Pack[10](BubbleCosmetic)
268CopyLoc[17](loc13: address)
269Call transfer::public_transfer<BubbleCosmetic>(BubbleCosmetic, address)
270MoveLoc[17](loc13: address)
271MoveLoc[1](Arg1: address)
272LdU8(4)
273MoveLoc[15](loc11: vector<u8>)
274MoveLoc[11](loc7: u64)
275Pack[39](PartnerPackClaimed)
276Call event::emit<PartnerPackClaimed>(PartnerPackClaimed)
277Ret
}
entry claim_partner_pack<Ty0, Ty1, Ty2: key>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: &Ty2, Arg2: &Clock, Arg3: &mut TxContext) {
B0:
0MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
1MoveLoc[1](Arg1: &Ty2)
2Call object::id_address<Ty2>(&Ty2): address
3MoveLoc[2](Arg2: &Clock)
4MoveLoc[3](Arg3: &mut TxContext)
5Call do_claim_partner_pack<Ty0, Ty1>(&mut GameState<Ty0, Ty1>, address, &Clock, &mut TxContext)
6Ret
}
public claim_partner_pack_kiosk<Ty0, Ty1, Ty2: store + key>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: &mut Kiosk, Arg2: &KioskOwnerCap, Arg3: address, Arg4: &Clock, Arg5: &mut TxContext) {
L6: loc0: Borrow
L7: loc1: ID
L8: loc2: Ty2
B0:
0MoveLoc[3](Arg3: address)
1Call object::id_from_address(address): ID
2StLoc[7](loc1: ID)
3CopyLoc[1](Arg1: &mut Kiosk)
4MoveLoc[2](Arg2: &KioskOwnerCap)
5MoveLoc[7](loc1: ID)
6Call kiosk::borrow_val<Ty2>(&mut Kiosk, &KioskOwnerCap, ID): Ty2 * Borrow
7StLoc[6](loc0: Borrow)
8StLoc[8](loc2: Ty2)
9MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
10ImmBorrowLoc[8](loc2: Ty2)
11Call object::id_address<Ty2>(&Ty2): address
12MoveLoc[4](Arg4: &Clock)
13MoveLoc[5](Arg5: &mut TxContext)
14Call do_claim_partner_pack<Ty0, Ty1>(&mut GameState<Ty0, Ty1>, address, &Clock, &mut TxContext)
15MoveLoc[1](Arg1: &mut Kiosk)
16MoveLoc[8](loc2: Ty2)
17MoveLoc[6](loc0: Borrow)
18Call kiosk::return_val<Ty2>(&mut Kiosk, Ty2, Borrow)
19Ret
}
entry admin_init_partner_registry<Ty0, Ty1>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: &AdminCap, Arg2: &mut TxContext) {
B0:
0CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
1ImmBorrowFieldGeneric[23](GameState.id: UID)
2LdFalse
3Pack[41](PartnerRegistryKey)
4Call dynamic_field::exists_<PartnerRegistryKey>(&UID, PartnerRegistryKey): bool
5Not
6BrFalse(8)
B1:
7Branch(14)
B2:
8MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
9Pop
10MoveLoc[2](Arg2: &mut TxContext)
11Pop
12LdConst[46](u64: 401)
13Abort
B3:
14CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
15MutBorrowFieldGeneric[23](GameState.id: UID)
16LdFalse
17Pack[41](PartnerRegistryKey)
18CopyLoc[2](Arg2: &mut TxContext)
19Call table::new<TypeName, PartnerConfig>(&mut TxContext): Table<TypeName, PartnerConfig>
20Call dynamic_field::add<PartnerRegistryKey, Table<TypeName, PartnerConfig>>(&mut UID, PartnerRegistryKey, Table<TypeName, PartnerConfig>)
21MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
22MutBorrowFieldGeneric[23](GameState.id: UID)
23LdFalse
24Pack[42](PartnerClaimsRegistryKey)
25MoveLoc[2](Arg2: &mut TxContext)
26Call table::new<TypeName, Table<address, bool>>(&mut TxContext): Table<TypeName, Table<address, bool>>
27Call dynamic_field::add<PartnerClaimsRegistryKey, Table<TypeName, Table<address, bool>>>(&mut UID, PartnerClaimsRegistryKey, Table<TypeName, Table<address, bool>>)
28Ret
}
entry admin_register_partner<Ty0, Ty1, Ty2>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: &AdminCap, Arg2: u64, Arg3: &mut TxContext) {
L4: loc0: TypeName
L5: loc1: &mut Table<TypeName, PartnerConfig>
B0:
0CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
1ImmBorrowFieldGeneric[17](GameState.cosmetic_types: Table<u64, CosmeticType>)
2CopyLoc[2](Arg2: u64)
3Call table::contains<u64, CosmeticType>(&Table<u64, CosmeticType>, u64): bool
4BrFalse(6)
B1:
5Branch(12)
B2:
6MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
7Pop
8MoveLoc[3](Arg3: &mut TxContext)
9Pop
10LdConst[0](u64: 1)
11Abort
B3:
12Call type_name::with_defining_ids<Ty2>(): TypeName
13StLoc[4](loc0: TypeName)
14CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
15MutBorrowFieldGeneric[23](GameState.id: UID)
16LdFalse
17Pack[41](PartnerRegistryKey)
18Call dynamic_field::borrow_mut<PartnerRegistryKey, Table<TypeName, PartnerConfig>>(&mut UID, PartnerRegistryKey): &mut Table<TypeName, PartnerConfig>
19StLoc[5](loc1: &mut Table<TypeName, PartnerConfig>)
20CopyLoc[5](loc1: &mut Table<TypeName, PartnerConfig>)
21FreezeRef
22CopyLoc[4](loc0: TypeName)
23Call table::contains<TypeName, PartnerConfig>(&Table<TypeName, PartnerConfig>, TypeName): bool
24Not
25BrFalse(27)
B4:
26Branch(35)
B5:
27MoveLoc[5](loc1: &mut Table<TypeName, PartnerConfig>)
28Pop
29MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
30Pop
31MoveLoc[3](Arg3: &mut TxContext)
32Pop
33LdConst[46](u64: 401)
34Abort
B6:
35MoveLoc[5](loc1: &mut Table<TypeName, PartnerConfig>)
36CopyLoc[4](loc0: TypeName)
37MoveLoc[2](Arg2: u64)
38Pack[40](PartnerConfig)
39Call table::add<TypeName, PartnerConfig>(&mut Table<TypeName, PartnerConfig>, TypeName, PartnerConfig)
40MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
41MutBorrowFieldGeneric[23](GameState.id: UID)
42LdFalse
43Pack[42](PartnerClaimsRegistryKey)
44Call dynamic_field::borrow_mut<PartnerClaimsRegistryKey, Table<TypeName, Table<address, bool>>>(&mut UID, PartnerClaimsRegistryKey): &mut Table<TypeName, Table<address, bool>>
45MoveLoc[4](loc0: TypeName)
46MoveLoc[3](Arg3: &mut TxContext)
47Call table::new<address, bool>(&mut TxContext): Table<address, bool>
48Call table::add<TypeName, Table<address, bool>>(&mut Table<TypeName, Table<address, bool>>, TypeName, Table<address, bool>)
49Ret
}
do_claim_partner_pack_v2<Ty0, Ty1, Ty2>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: address, Arg2: &Clock, Arg3: &mut TxContext) {
L4: loc0: u64
L5: loc1: u64
L6: loc2: &mut Table<address, bool>
L7: loc3: u64
L8: loc4: String
L9: loc5: String
L10: loc6: &mut CosmeticType
L11: loc7: u64
L12: loc8: u64
L13: loc9: String
L14: loc10: u64
L15: loc11: vector<u8>
L16: loc12: String
L17: loc13: TypeName
L18: loc14: &Table<TypeName, PartnerConfig>
L19: loc15: address
L20: loc16: u64
L21: loc17: &mut PlayerTank
L22: loc18: u64
L23: loc19: u8
L24: loc20: vector<u8>
L25: loc21: vector<u8>
B0:
0CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
1ImmBorrowFieldGeneric[7](GameState.paused: bool)
2ReadRef
3Not
4BrFalse(6)
B1:
5Branch(14)
B2:
6MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
7Pop
8MoveLoc[3](Arg3: &mut TxContext)
9Pop
10MoveLoc[2](Arg2: &Clock)
11Pop
12LdConst[4](u64: 6)
13Abort
B3:
14Call type_name::with_defining_ids<Ty2>(): TypeName
15StLoc[17](loc13: TypeName)
16CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
17ImmBorrowFieldGeneric[23](GameState.id: UID)
18LdFalse
19Pack[41](PartnerRegistryKey)
20Call dynamic_field::borrow<PartnerRegistryKey, Table<TypeName, PartnerConfig>>(&UID, PartnerRegistryKey): &Table<TypeName, PartnerConfig>
21StLoc[18](loc14: &Table<TypeName, PartnerConfig>)
22CopyLoc[18](loc14: &Table<TypeName, PartnerConfig>)
23CopyLoc[17](loc13: TypeName)
24Call table::contains<TypeName, PartnerConfig>(&Table<TypeName, PartnerConfig>, TypeName): bool
25BrFalse(27)
B4:
26Branch(37)
B5:
27MoveLoc[18](loc14: &Table<TypeName, PartnerConfig>)
28Pop
29MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
30Pop
31MoveLoc[3](Arg3: &mut TxContext)
32Pop
33MoveLoc[2](Arg2: &Clock)
34Pop
35LdConst[45](u64: 400)
36Abort
B6:
37MoveLoc[18](loc14: &Table<TypeName, PartnerConfig>)
38CopyLoc[17](loc13: TypeName)
39Call table::borrow<TypeName, PartnerConfig>(&Table<TypeName, PartnerConfig>, TypeName): &PartnerConfig
40ImmBorrowField[83](PartnerConfig.cosmetic_type_id: u64)
41ReadRef
42StLoc[11](loc7: u64)
43CopyLoc[3](Arg3: &mut TxContext)
44FreezeRef
45Call tx_context::sender(&TxContext): address
46StLoc[19](loc15: address)
47CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
48MutBorrowFieldGeneric[23](GameState.id: UID)
49LdFalse
50Pack[42](PartnerClaimsRegistryKey)
51Call dynamic_field::borrow_mut<PartnerClaimsRegistryKey, Table<TypeName, Table<address, bool>>>(&mut UID, PartnerClaimsRegistryKey): &mut Table<TypeName, Table<address, bool>>
52CopyLoc[17](loc13: TypeName)
53Call table::borrow_mut<TypeName, Table<address, bool>>(&mut Table<TypeName, Table<address, bool>>, TypeName): &mut Table<address, bool>
54StLoc[6](loc2: &mut Table<address, bool>)
55CopyLoc[6](loc2: &mut Table<address, bool>)
56FreezeRef
57CopyLoc[1](Arg1: address)
58Call table::contains<address, bool>(&Table<address, bool>, address): bool
59Not
60BrFalse(62)
B7:
61Branch(72)
B8:
62MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
63Pop
64MoveLoc[3](Arg3: &mut TxContext)
65Pop
66MoveLoc[2](Arg2: &Clock)
67Pop
68MoveLoc[6](loc2: &mut Table<address, bool>)
69Pop
70LdConst[47](u64: 402)
71Abort
B9:
72CopyLoc[6](loc2: &mut Table<address, bool>)
73FreezeRef
74CopyLoc[19](loc15: address)
75Call table::contains<address, bool>(&Table<address, bool>, address): bool
76Not
77BrFalse(79)
B10:
78Branch(89)
B11:
79MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
80Pop
81MoveLoc[3](Arg3: &mut TxContext)
82Pop
83MoveLoc[2](Arg2: &Clock)
84Pop
85MoveLoc[6](loc2: &mut Table<address, bool>)
86Pop
87LdConst[47](u64: 402)
88Abort
B12:
89CopyLoc[6](loc2: &mut Table<address, bool>)
90CopyLoc[1](Arg1: address)
91LdTrue
92Call table::add<address, bool>(&mut Table<address, bool>, address, bool)
93MoveLoc[6](loc2: &mut Table<address, bool>)
94CopyLoc[19](loc15: address)
95LdTrue
96Call table::add<address, bool>(&mut Table<address, bool>, address, bool)
97CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
98ImmBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
99CopyLoc[19](loc15: address)
100Call table::contains<address, PlayerTank>(&Table<address, PlayerTank>, address): bool
101Not
102BrFalse(145)
B13:
103VecPack(0, 0)
104StLoc[25](loc21: vector<u8>)
105LdU64(0)
106StLoc[12](loc8: u64)
B14:
107CopyLoc[12](loc8: u64)
108LdU64(5)
109Lt
110BrFalse(119)
B15:
111MutBorrowLoc[25](loc21: vector<u8>)
112LdU8(0)
113VecPushBack(0)
114MoveLoc[12](loc8: u64)
115LdU64(1)
116Add
117StLoc[12](loc8: u64)
118Branch(107)
B16:
119CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
120MutBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
121CopyLoc[19](loc15: address)
122LdU8(0)
123LdU64(0)
124VecPack(1, 0)
125VecPack(1, 0)
126LdU64(0)
127LdU64(0)
128MoveLoc[25](loc21: vector<u8>)
129CopyLoc[2](Arg2: &Clock)
130Call clock::timestamp_ms(&Clock): u64
131LdU64(0)
132LdU64(0)
133LdConst[98](address: 0x00..)
134LdFalse
135Pack[6](PlayerTank)
136Call table::add<address, PlayerTank>(&mut Table<address, PlayerTank>, address, PlayerTank)
137CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
138ImmBorrowFieldGeneric[9](GameState.total_players: u64)
139ReadRef
140LdU64(1)
141Add
142CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
143MutBorrowFieldGeneric[9](GameState.total_players: u64)
144WriteRef
B17:
145CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
146MutBorrowFieldGeneric[8](GameState.player_tanks: Table<address, PlayerTank>)
147CopyLoc[19](loc15: address)
148Call table::borrow_mut<address, PlayerTank>(&mut Table<address, PlayerTank>, address): &mut PlayerTank
149StLoc[21](loc17: &mut PlayerTank)
150CopyLoc[21](loc17: &mut PlayerTank)
151ImmBorrowField[13](PlayerTank.tier: u8)
152ReadRef
153LdU8(4)
154Lt
155BrFalse(166)
B18:
156LdU8(4)
157CopyLoc[21](loc17: &mut PlayerTank)
158MutBorrowField[13](PlayerTank.tier: u8)
159WriteRef
160MoveLoc[2](Arg2: &Clock)
161Call clock::timestamp_ms(&Clock): u64
162MoveLoc[21](loc17: &mut PlayerTank)
163MutBorrowField[14](PlayerTank.last_upgrade_time: u64)
164WriteRef
165Branch(170)
B19:
166MoveLoc[21](loc17: &mut PlayerTank)
167Pop
168MoveLoc[2](Arg2: &Clock)
169Pop
B20:
170LdConst[113](vector<u8>: "..)
171StLoc[24](loc20: vector<u8>)
172VecPack(0, 0)
173StLoc[15](loc11: vector<u8>)
174LdU64(0)
175StLoc[20](loc16: u64)
B21:
176CopyLoc[20](loc16: u64)
177ImmBorrowLoc[24](loc20: vector<u8>)
178VecLen(0)
179Lt
180BrFalse(225)
B22:
181ImmBorrowLoc[24](loc20: vector<u8>)
182CopyLoc[20](loc16: u64)
183VecImmBorrow(0)
184ReadRef
185StLoc[23](loc19: u8)
186CopyLoc[23](loc19: u8)
187Call get_bubbler_stats(u8): u64 * u64 * u64 * String * String
188StLoc[13](loc9: String)
189StLoc[16](loc12: String)
190Pop
191StLoc[22](loc18: u64)
192StLoc[4](loc0: u64)
193CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
194ImmBorrowFieldGeneric[12](GameState.next_bubbler_id: u64)
195ReadRef
196StLoc[5](loc1: u64)
197CopyLoc[5](loc1: u64)
198LdU64(1)
199Add
200CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
201MutBorrowFieldGeneric[12](GameState.next_bubbler_id: u64)
202WriteRef
203CopyLoc[3](Arg3: &mut TxContext)
204Call object::new(&mut TxContext): UID
205MoveLoc[5](loc1: u64)
206CopyLoc[23](loc19: u8)
207CopyLoc[16](loc12: String)
208MoveLoc[4](loc0: u64)
209MoveLoc[22](loc18: u64)
210MoveLoc[13](loc9: String)
211CopyLoc[23](loc19: u8)
212MoveLoc[16](loc12: String)
213Call make_bubbler_attrs(u8, String): VecMap<String, String>
214Pack[9](BubbleGenerator)
215CopyLoc[19](loc15: address)
216Call transfer::public_transfer<BubbleGenerator>(BubbleGenerator, address)
217MutBorrowLoc[15](loc11: vector<u8>)
218MoveLoc[23](loc19: u8)
219VecPushBack(0)
220MoveLoc[20](loc16: u64)
221LdU64(1)
222Add
223StLoc[20](loc16: u64)
224Branch(176)
B23:
225CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
226ImmBorrowFieldGeneric[17](GameState.cosmetic_types: Table<u64, CosmeticType>)
227CopyLoc[11](loc7: u64)
228Call table::contains<u64, CosmeticType>(&Table<u64, CosmeticType>, u64): bool
229BrFalse(231)
B24:
230Branch(237)
B25:
231MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
232Pop
233MoveLoc[3](Arg3: &mut TxContext)
234Pop
235LdConst[0](u64: 1)
236Abort
B26:
237CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
238MutBorrowFieldGeneric[17](GameState.cosmetic_types: Table<u64, CosmeticType>)
239CopyLoc[11](loc7: u64)
240Call table::borrow_mut<u64, CosmeticType>(&mut Table<u64, CosmeticType>, u64): &mut CosmeticType
241StLoc[10](loc6: &mut CosmeticType)
242CopyLoc[10](loc6: &mut CosmeticType)
243ImmBorrowField[38](CosmeticType.minted: u64)
244ReadRef
245CopyLoc[10](loc6: &mut CosmeticType)
246ImmBorrowField[39](CosmeticType.max_supply: u64)
247ReadRef
248Lt
249BrFalse(251)
B27:
250Branch(259)
B28:
251MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
252Pop
253MoveLoc[3](Arg3: &mut TxContext)
254Pop
255MoveLoc[10](loc6: &mut CosmeticType)
256Pop
257LdConst[12](u64: 15)
258Abort
B29:
259CopyLoc[10](loc6: &mut CosmeticType)
260ImmBorrowField[43](CosmeticType.name: String)
261ReadRef
262StLoc[9](loc5: String)
263CopyLoc[10](loc6: &mut CosmeticType)
264ImmBorrowField[44](CosmeticType.image_url: String)
265ReadRef
266StLoc[8](loc4: String)
267CopyLoc[10](loc6: &mut CosmeticType)
268ImmBorrowField[45](CosmeticType.bubble_pressure: u64)
269ReadRef
270StLoc[7](loc3: u64)
271CopyLoc[10](loc6: &mut CosmeticType)
272ImmBorrowField[38](CosmeticType.minted: u64)
273ReadRef
274LdU64(1)
275Add
276MoveLoc[10](loc6: &mut CosmeticType)
277MutBorrowField[38](CosmeticType.minted: u64)
278WriteRef
279CopyLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
280ImmBorrowFieldGeneric[18](GameState.next_cosmetic_instance_id: u64)
281ReadRef
282StLoc[14](loc10: u64)
283CopyLoc[14](loc10: u64)
284LdU64(1)
285Add
286MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
287MutBorrowFieldGeneric[18](GameState.next_cosmetic_instance_id: u64)
288WriteRef
289MoveLoc[3](Arg3: &mut TxContext)
290Call object::new(&mut TxContext): UID
291MoveLoc[14](loc10: u64)
292CopyLoc[11](loc7: u64)
293CopyLoc[9](loc5: String)
294MoveLoc[7](loc3: u64)
295MoveLoc[8](loc4: String)
296MoveLoc[9](loc5: String)
297Call make_cosmetic_attrs(String): VecMap<String, String>
298Pack[10](BubbleCosmetic)
299CopyLoc[19](loc15: address)
300Call transfer::public_transfer<BubbleCosmetic>(BubbleCosmetic, address)
301MoveLoc[17](loc13: TypeName)
302MoveLoc[19](loc15: address)
303MoveLoc[1](Arg1: address)
304LdU8(4)
305MoveLoc[15](loc11: vector<u8>)
306MoveLoc[11](loc7: u64)
307Pack[43](PartnerPackClaimedV2)
308Call event::emit<PartnerPackClaimedV2>(PartnerPackClaimedV2)
309Ret
}
entry claim_partner_pack_v2<Ty0, Ty1, Ty2: key>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: &Ty2, Arg2: &Clock, Arg3: &mut TxContext) {
B0:
0MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
1MoveLoc[1](Arg1: &Ty2)
2Call object::id_address<Ty2>(&Ty2): address
3MoveLoc[2](Arg2: &Clock)
4MoveLoc[3](Arg3: &mut TxContext)
5Call do_claim_partner_pack_v2<Ty0, Ty1, Ty2>(&mut GameState<Ty0, Ty1>, address, &Clock, &mut TxContext)
6Ret
}
public claim_partner_pack_v2_kiosk<Ty0, Ty1, Ty2: store + key>(Arg0: &mut GameState<Ty0, Ty1>, Arg1: &mut Kiosk, Arg2: &KioskOwnerCap, Arg3: address, Arg4: &Clock, Arg5: &mut TxContext) {
L6: loc0: Borrow
L7: loc1: ID
L8: loc2: Ty2
B0:
0MoveLoc[3](Arg3: address)
1Call object::id_from_address(address): ID
2StLoc[7](loc1: ID)
3CopyLoc[1](Arg1: &mut Kiosk)
4MoveLoc[2](Arg2: &KioskOwnerCap)
5MoveLoc[7](loc1: ID)
6Call kiosk::borrow_val<Ty2>(&mut Kiosk, &KioskOwnerCap, ID): Ty2 * Borrow
7StLoc[6](loc0: Borrow)
8StLoc[8](loc2: Ty2)
9MoveLoc[0](Arg0: &mut GameState<Ty0, Ty1>)
10ImmBorrowLoc[8](loc2: Ty2)
11Call object::id_address<Ty2>(&Ty2): address
12MoveLoc[4](Arg4: &Clock)
13MoveLoc[5](Arg5: &mut TxContext)
14Call do_claim_partner_pack_v2<Ty0, Ty1, Ty2>(&mut GameState<Ty0, Ty1>, address, &Clock, &mut TxContext)
15MoveLoc[1](Arg1: &mut Kiosk)
16MoveLoc[8](loc2: Ty2)
17MoveLoc[6](loc0: Borrow)
18Call kiosk::return_val<Ty2>(&mut Kiosk, Ty2, Borrow)
19Ret
}
Constants [
0 => u64: 1
1 => u64: 2
2 => u64: 3
3 => u64: 4
4 => u64: 6
5 => u64: 7
6 => u64: 8
7 => u64: 9
8 => u64: 10
9 => u64: 12
10 => u64: 13
11 => u64: 14
12 => u64: 15
13 => u64: 16
14 => u64: 17
15 => u64: 18
16 => u64: 19
17 => u64: 20
18 => u64: 21
19 => u64: 22
20 => u64: 23
21 => u64: 24
22 => u64: 25
23 => u64: 86400000
24 => u64: 200000000000000
25 => u64: 4320000000
26 => u64: 20000000000000000
27 => u64: 1500
28 => u64: 1250
29 => u64: 250
30 => u64: 8500
31 => u64: 10000
32 => u8: 8
33 => u8: 5
34 => u64: 100
35 => u64: 101
36 => u64: 102
37 => u64: 103
38 => u64: 109
39 => u64: 200
40 => u64: 204
41 => u64: 201
42 => u64: 202
43 => u64: 203
44 => u64: 300
45 => u64: 400
46 => u64: 401
47 => u64: 402
48 => vector<u8>: "Droplet" // interpreted as UTF8 string
49 => vector<u8>: "https://bublz.fun/bubblers/droplet.png" // interpreted as UTF8 string
50 => vector<u8>: "Fizzer" // interpreted as UTF8 string
51 => vector<u8>: "https://bublz.fun/bubblers/fizzer.png" // interpreted as UTF8 string
52 => vector<u8>: "Trickler" // interpreted as UTF8 string
53 => vector<u8>: "https://bublz.fun/bubblers/trickler.png" // interpreted as UTF8 string
54 => vector<u8>: "Streamer" // interpreted as UTF8 string
55 => vector<u8>: "https://bublz.fun/bubblers/streamer.png" // interpreted as UTF8 string
56 => vector<u8>: "Pumper" // interpreted as UTF8 string
57 => vector<u8>: "https://bublz.fun/bubblers/pumper.png" // interpreted as UTF8 string
58 => vector<u8>: "Jet" // interpreted as UTF8 string
59 => vector<u8>: "https://bublz.fun/bubblers/jet.png" // interpreted as UTF8 string
60 => vector<u8>: "Blaster" // interpreted as UTF8 string
61 => vector<u8>: "https://bublz.fun/bubblers/blaster.png" // interpreted as UTF8 string
62 => vector<u8>: "Geyser" // interpreted as UTF8 string
63 => vector<u8>: "https://bublz.fun/bubblers/geyser.png" // interpreted as UTF8 string
64 => vector<u8>: "Eruption" // interpreted as UTF8 string
65 => vector<u8>: "https://bublz.fun/bubblers/eruption.png" // interpreted as UTF8 string
66 => vector<u8>: "Torrent" // interpreted as UTF8 string
67 => vector<u8>: "https://bublz.fun/bubblers/torrent.png" // interpreted as UTF8 string
68 => vector<u8>: "Tsunami" // interpreted as UTF8 string
69 => vector<u8>: "https://bublz.fun/bubblers/tsunami.png" // interpreted as UTF8 string
70 => vector<u8>: "Cyclone" // interpreted as UTF8 string
71 => vector<u8>: "https://bublz.fun/bubblers/cyclone.png" // interpreted as UTF8 string
72 => vector<u8>: "Rift" // interpreted as UTF8 string
73 => vector<u8>: "https://bublz.fun/bubblers/rift.png" // interpreted as UTF8 string
74 => vector<u8>: "Type" // interpreted as UTF8 string
75 => vector<u8>: "Bubbler" // interpreted as UTF8 string
76 => vector<u8>: "Name" // interpreted as UTF8 string
77 => vector<u8>: "0" // interpreted as UTF8 string
78 => vector<u8>: "1" // interpreted as UTF8 string
79 => vector<u8>: "2" // interpreted as UTF8 string
80 => vector<u8>: "3" // interpreted as UTF8 string
81 => vector<u8>: "4" // interpreted as UTF8 string
82 => vector<u8>: "5" // interpreted as UTF8 string
83 => vector<u8>: "6" // interpreted as UTF8 string
84 => vector<u8>: "7" // interpreted as UTF8 string
85 => vector<u8>: "8" // interpreted as UTF8 string
86 => vector<u8>: "9" // interpreted as UTF8 string
87 => vector<u8>: "10" // interpreted as UTF8 string
88 => vector<u8>: "11" // interpreted as UTF8 string
89 => vector<u8>: "12" // interpreted as UTF8 string
90 => vector<u8>: "Tier" // interpreted as UTF8 string
91 => vector<u8>: "Common" // interpreted as UTF8 string
92 => vector<u8>: "Uncommon" // interpreted as UTF8 string
93 => vector<u8>: "Rare" // interpreted as UTF8 string
94 => vector<u8>: "Epic" // interpreted as UTF8 string
95 => vector<u8>: "Legendary" // interpreted as UTF8 string
96 => vector<u8>: "Rarity" // interpreted as UTF8 string
97 => vector<u8>: "Cosmetic" // interpreted as UTF8 string
98 => address: 0x0000000000000000000000000000000000000000000000000000000000000000
99 => vector<u8>: "name" // interpreted as UTF8 string
100 => vector<u8>: "{name}" // interpreted as UTF8 string
101 => vector<u8>: "image_url" // interpreted as UTF8 string
102 => vector<u8>: "{image_url}" // interpreted as UTF8 string
103 => vector<u8>: "description" // interpreted as UTF8 string
104 => vector<u8>: "Bubcoin Bubbler — {bubble_pressure} BP Mining Power" // interpreted as UTF8 string
105 => vector<u8>: "project_url" // interpreted as UTF8 string
106 => vector<u8>: "https://bublz.fun/bubcoin" // interpreted as UTF8 string
107 => vector<u8>: "collection" // interpreted as UTF8 string
108 => vector<u8>: "Bubcoin Bubblers" // interpreted as UTF8 string
109 => vector<u8>: "creator" // interpreted as UTF8 string
110 => vector<u8>: "BUBLZ" // interpreted as UTF8 string
111 => vector<u8>: "Bubcoin Cosmetic — +{bubble_pressure} BP Bonus" // interpreted as UTF8 string
112 => vector<u8>: "Bubcoin Cosmetics" // interpreted as UTF8 string
113 => vector<u8>: "" // interpreted as UTF8 string
]
}