Search by name, SuiNS, address, digest, object ID, coin type or checkpoint.

API

i64

Module0x8006…00bb
Move path
0x91bf…9ca1::i64
Functions
2826 public, 0 entry
Structs
1
Friend modules
None
i64

Bytecode625 lines

The on-chain disassembly. Offsets are bytecode positions within each function.

// Move bytecode v6
module 91bfbc386a41afcfd9b2533058d7e915a1d3829089cc268ff4333d54d6339ca1.i64 {
 
struct I64 has copy, drop, store {
bits: u64
}
 
public zero(): I64 {
B0:
0LdU64(0)
1Pack[0](I64)
2Ret
}
 
public from_u64(Arg0: u64): I64 {
B0:
0MoveLoc[0](Arg0: u64)
1Pack[0](I64)
2Ret
}
 
public from(Arg0: u64): I64 {
B0:
0CopyLoc[0](Arg0: u64)
1LdConst[2](u64: 9223..)
2Le
3BrFalse(5)
B1:
4Branch(7)
B2:
5LdConst[0](u64: 0)
6Abort
B3:
7MoveLoc[0](Arg0: u64)
8Pack[0](I64)
9Ret
}
 
public neg_from(Arg0: u64): I64 {
L1: loc0: I64
B0:
0CopyLoc[0](Arg0: u64)
1LdConst[1](u64: 9223..)
2Le
3BrFalse(5)
B1:
4Branch(7)
B2:
5LdConst[0](u64: 0)
6Abort
B3:
7CopyLoc[0](Arg0: u64)
8LdU64(0)
9Eq
10BrFalse(15)
B4:
11MoveLoc[0](Arg0: u64)
12Pack[0](I64)
13StLoc[1](loc0: I64)
14Branch(23)
B5:
15MoveLoc[0](Arg0: u64)
16Call u64_neg(u64): u64
17LdU64(1)
18Add
19LdU64(9223372036854775808)
20BitOr
21Pack[0](I64)
22StLoc[1](loc0: I64)
B6:
23MoveLoc[1](loc0: I64)
24Ret
}
 
public wrapping_add(Arg0: I64, Arg1: I64): I64 {
L2: loc0: u64
L3: loc1: u64
L4: loc2: u64
L5: loc3: u64
B0:
0ImmBorrowLoc[0](Arg0: I64)
1ImmBorrowField[0](I64.bits: u64)
2ReadRef
3ImmBorrowLoc[1](Arg1: I64)
4ImmBorrowField[0](I64.bits: u64)
5ReadRef
6Xor
7StLoc[5](loc3: u64)
8ImmBorrowLoc[0](Arg0: I64)
9ImmBorrowField[0](I64.bits: u64)
10ReadRef
11ImmBorrowLoc[1](Arg1: I64)
12ImmBorrowField[0](I64.bits: u64)
13ReadRef
14BitAnd
15LdU8(1)
16Shl
17StLoc[4](loc2: u64)
B1:
18CopyLoc[4](loc2: u64)
19LdU64(0)
20Neq
21BrFalse(38)
B2:
22Branch(23)
B3:
23MoveLoc[5](loc3: u64)
24StLoc[2](loc0: u64)
25MoveLoc[4](loc2: u64)
26StLoc[3](loc1: u64)
27CopyLoc[2](loc0: u64)
28CopyLoc[3](loc1: u64)
29Xor
30StLoc[5](loc3: u64)
31MoveLoc[2](loc0: u64)
32MoveLoc[3](loc1: u64)
33BitAnd
34LdU8(1)
35Shl
36StLoc[4](loc2: u64)
37Branch(18)
B4:
38MoveLoc[5](loc3: u64)
39Pack[0](I64)
40Ret
}
 
public add(Arg0: I64, Arg1: I64): I64 {
L2: loc0: I64
B0:
0CopyLoc[0](Arg0: I64)
1CopyLoc[1](Arg1: I64)
2Call wrapping_add(I64, I64): I64
3StLoc[2](loc0: I64)
4CopyLoc[0](Arg0: I64)
5Call sign(I64): u8
6CopyLoc[1](Arg1: I64)
7Call sign(I64): u8
8BitAnd
9CopyLoc[2](loc0: I64)
10Call sign(I64): u8
11Call u8_neg(u8): u8
12BitAnd
13MoveLoc[0](Arg0: I64)
14Call sign(I64): u8
15Call u8_neg(u8): u8
16MoveLoc[1](Arg1: I64)
17Call sign(I64): u8
18Call u8_neg(u8): u8
19BitAnd
20CopyLoc[2](loc0: I64)
21Call sign(I64): u8
22BitAnd
23Add
24LdU8(0)
25Eq
26BrFalse(28)
B1:
27Branch(30)
B2:
28LdConst[0](u64: 0)
29Abort
B3:
30MoveLoc[2](loc0: I64)
31Ret
}
 
public wrapping_sub(Arg0: I64, Arg1: I64): I64 {
L2: loc0: I64
B0:
0ImmBorrowLoc[1](Arg1: I64)
1ImmBorrowField[0](I64.bits: u64)
2ReadRef
3Call u64_neg(u64): u64
4Pack[0](I64)
5LdU64(1)
6Call from(u64): I64
7Call wrapping_add(I64, I64): I64
8StLoc[2](loc0: I64)
9MoveLoc[0](Arg0: I64)
10MoveLoc[2](loc0: I64)
11Call wrapping_add(I64, I64): I64
12Ret
}
 
public sub(Arg0: I64, Arg1: I64): I64 {
L2: loc0: bool
L3: loc1: I64
B0:
0CopyLoc[0](Arg0: I64)
1CopyLoc[1](Arg1: I64)
2Call wrapping_sub(I64, I64): I64
3StLoc[3](loc1: I64)
4CopyLoc[0](Arg0: I64)
5Call sign(I64): u8
6MoveLoc[1](Arg1: I64)
7Call sign(I64): u8
8Neq
9BrFalse(17)
B1:
10MoveLoc[0](Arg0: I64)
11Call sign(I64): u8
12CopyLoc[3](loc1: I64)
13Call sign(I64): u8
14Neq
15StLoc[2](loc0: bool)
16Branch(19)
B2:
17LdFalse
18StLoc[2](loc0: bool)
B3:
19MoveLoc[2](loc0: bool)
20Not
21BrFalse(23)
B4:
22Branch(25)
B5:
23LdConst[0](u64: 0)
24Abort
B6:
25MoveLoc[3](loc1: I64)
26Ret
}
 
public mul(Arg0: I64, Arg1: I64): I64 {
L2: loc0: u64
B0:
0CopyLoc[0](Arg0: I64)
1Call abs_u64(I64): u64
2CopyLoc[1](Arg1: I64)
3Call abs_u64(I64): u64
4Mul
5StLoc[2](loc0: u64)
6MoveLoc[0](Arg0: I64)
7Call sign(I64): u8
8MoveLoc[1](Arg1: I64)
9Call sign(I64): u8
10Neq
11BrFalse(15)
B1:
12MoveLoc[2](loc0: u64)
13Call neg_from(u64): I64
14Ret
B2:
15MoveLoc[2](loc0: u64)
16Call from(u64): I64
17Ret
}
 
public div(Arg0: I64, Arg1: I64): I64 {
L2: loc0: u64
B0:
0CopyLoc[0](Arg0: I64)
1Call abs_u64(I64): u64
2CopyLoc[1](Arg1: I64)
3Call abs_u64(I64): u64
4Div
5StLoc[2](loc0: u64)
6MoveLoc[0](Arg0: I64)
7Call sign(I64): u8
8MoveLoc[1](Arg1: I64)
9Call sign(I64): u8
10Neq
11BrFalse(15)
B1:
12MoveLoc[2](loc0: u64)
13Call neg_from(u64): I64
14Ret
B2:
15MoveLoc[2](loc0: u64)
16Call from(u64): I64
17Ret
}
 
public abs(Arg0: I64): I64 {
L1: loc0: I64
B0:
0CopyLoc[0](Arg0: I64)
1Call sign(I64): u8
2LdU8(0)
3Eq
4BrFalse(8)
B1:
5MoveLoc[0](Arg0: I64)
6StLoc[1](loc0: I64)
7Branch(25)
B2:
8ImmBorrowLoc[0](Arg0: I64)
9ImmBorrowField[0](I64.bits: u64)
10ReadRef
11LdConst[1](u64: 9223..)
12Gt
13BrFalse(15)
B3:
14Branch(17)
B4:
15LdConst[0](u64: 0)
16Abort
B5:
17ImmBorrowLoc[0](Arg0: I64)
18ImmBorrowField[0](I64.bits: u64)
19ReadRef
20LdU64(1)
21Sub
22Call u64_neg(u64): u64
23Pack[0](I64)
24StLoc[1](loc0: I64)
B6:
25MoveLoc[1](loc0: I64)
26Ret
}
 
public abs_u64(Arg0: I64): u64 {
L1: loc0: u64
B0:
0CopyLoc[0](Arg0: I64)
1Call sign(I64): u8
2LdU8(0)
3Eq
4BrFalse(10)
B1:
5ImmBorrowLoc[0](Arg0: I64)
6ImmBorrowField[0](I64.bits: u64)
7ReadRef
8StLoc[1](loc0: u64)
9Branch(17)
B2:
10ImmBorrowLoc[0](Arg0: I64)
11ImmBorrowField[0](I64.bits: u64)
12ReadRef
13LdU64(1)
14Sub
15Call u64_neg(u64): u64
16StLoc[1](loc0: u64)
B3:
17MoveLoc[1](loc0: u64)
18Ret
}
 
public shl(Arg0: I64, Arg1: u8): I64 {
B0:
0ImmBorrowLoc[0](Arg0: I64)
1ImmBorrowField[0](I64.bits: u64)
2ReadRef
3MoveLoc[1](Arg1: u8)
4Shl
5Pack[0](I64)
6Ret
}
 
public shr(Arg0: I64, Arg1: u8): I64 {
L2: loc0: u64
B0:
0CopyLoc[1](Arg1: u8)
1LdU8(0)
2Eq
3BrFalse(6)
B1:
4MoveLoc[0](Arg0: I64)
5Ret
B2:
6LdU64(18446744073709551615)
7LdU8(64)
8CopyLoc[1](Arg1: u8)
9Sub
10Shl
11StLoc[2](loc0: u64)
12CopyLoc[0](Arg0: I64)
13Call sign(I64): u8
14LdU8(1)
15Eq
16BrFalse(26)
B3:
17ImmBorrowLoc[0](Arg0: I64)
18ImmBorrowField[0](I64.bits: u64)
19ReadRef
20MoveLoc[1](Arg1: u8)
21Shr
22MoveLoc[2](loc0: u64)
23BitOr
24Pack[0](I64)
25Ret
B4:
26ImmBorrowLoc[0](Arg0: I64)
27ImmBorrowField[0](I64.bits: u64)
28ReadRef
29MoveLoc[1](Arg1: u8)
30Shr
31Pack[0](I64)
32Ret
}
 
public mod(Arg0: I64, Arg1: I64): I64 {
L2: loc0: I64
B0:
0CopyLoc[0](Arg0: I64)
1Call sign(I64): u8
2LdU8(1)
3Eq
4BrFalse(13)
B1:
5MoveLoc[0](Arg0: I64)
6Call abs_u64(I64): u64
7MoveLoc[1](Arg1: I64)
8Call abs_u64(I64): u64
9Mod
10Call neg_from(u64): I64
11StLoc[2](loc0: I64)
12Branch(20)
B2:
13MoveLoc[0](Arg0: I64)
14Call as_u64(I64): u64
15MoveLoc[1](Arg1: I64)
16Call abs_u64(I64): u64
17Mod
18Call from(u64): I64
19StLoc[2](loc0: I64)
B3:
20MoveLoc[2](loc0: I64)
21Ret
}
 
public as_u64(Arg0: I64): u64 {
B0:
0ImmBorrowLoc[0](Arg0: I64)
1ImmBorrowField[0](I64.bits: u64)
2ReadRef
3Ret
}
 
public sign(Arg0: I64): u8 {
B0:
0ImmBorrowLoc[0](Arg0: I64)
1ImmBorrowField[0](I64.bits: u64)
2ReadRef
3LdU8(63)
4Shr
5CastU8
6Ret
}
 
public is_neg(Arg0: I64): bool {
B0:
0MoveLoc[0](Arg0: I64)
1Call sign(I64): u8
2LdU8(1)
3Eq
4Ret
}
 
public cmp(Arg0: I64, Arg1: I64): u8 {
B0:
0ImmBorrowLoc[0](Arg0: I64)
1ImmBorrowField[0](I64.bits: u64)
2ReadRef
3ImmBorrowLoc[1](Arg1: I64)
4ImmBorrowField[0](I64.bits: u64)
5ReadRef
6Eq
7BrFalse(10)
B1:
8LdConst[4](u8: 1)
9Ret
B2:
10CopyLoc[0](Arg0: I64)
11Call sign(I64): u8
12CopyLoc[1](Arg1: I64)
13Call sign(I64): u8
14Gt
15BrFalse(18)
B3:
16LdConst[3](u8: 0)
17Ret
B4:
18CopyLoc[0](Arg0: I64)
19Call sign(I64): u8
20CopyLoc[1](Arg1: I64)
21Call sign(I64): u8
22Lt
23BrFalse(26)
B5:
24LdConst[5](u8: 2)
25Ret
B6:
26CopyLoc[0](Arg0: I64)
27Call sign(I64): u8
28LdU8(0)
29Eq
30BrFalse(43)
B7:
31ImmBorrowLoc[0](Arg0: I64)
32ImmBorrowField[0](I64.bits: u64)
33ReadRef
34ImmBorrowLoc[1](Arg1: I64)
35ImmBorrowField[0](I64.bits: u64)
36ReadRef
37Gt
38BrFalse(41)
B8:
39LdConst[5](u8: 2)
40Ret
B9:
41LdConst[3](u8: 0)
42Ret
B10:
43ImmBorrowLoc[0](Arg0: I64)
44ImmBorrowField[0](I64.bits: u64)
45ReadRef
46ImmBorrowLoc[1](Arg1: I64)
47ImmBorrowField[0](I64.bits: u64)
48ReadRef
49Lt
50BrFalse(53)
B11:
51LdConst[3](u8: 0)
52Ret
B12:
53LdConst[5](u8: 2)
54Ret
}
 
public eq(Arg0: I64, Arg1: I64): bool {
B0:
0ImmBorrowLoc[0](Arg0: I64)
1ImmBorrowField[0](I64.bits: u64)
2ReadRef
3ImmBorrowLoc[1](Arg1: I64)
4ImmBorrowField[0](I64.bits: u64)
5ReadRef
6Eq
7Ret
}
 
public gt(Arg0: I64, Arg1: I64): bool {
B0:
0MoveLoc[0](Arg0: I64)
1MoveLoc[1](Arg1: I64)
2Call cmp(I64, I64): u8
3LdConst[5](u8: 2)
4Eq
5Ret
}
 
public gte(Arg0: I64, Arg1: I64): bool {
B0:
0MoveLoc[0](Arg0: I64)
1MoveLoc[1](Arg1: I64)
2Call cmp(I64, I64): u8
3LdConst[4](u8: 1)
4Ge
5Ret
}
 
public lt(Arg0: I64, Arg1: I64): bool {
B0:
0MoveLoc[0](Arg0: I64)
1MoveLoc[1](Arg1: I64)
2Call cmp(I64, I64): u8
3LdConst[3](u8: 0)
4Eq
5Ret
}
 
public lte(Arg0: I64, Arg1: I64): bool {
B0:
0MoveLoc[0](Arg0: I64)
1MoveLoc[1](Arg1: I64)
2Call cmp(I64, I64): u8
3LdConst[4](u8: 1)
4Le
5Ret
}
 
public or(Arg0: I64, Arg1: I64): I64 {
B0:
0ImmBorrowLoc[0](Arg0: I64)
1ImmBorrowField[0](I64.bits: u64)
2ReadRef
3ImmBorrowLoc[1](Arg1: I64)
4ImmBorrowField[0](I64.bits: u64)
5ReadRef
6BitOr
7Pack[0](I64)
8Ret
}
 
public and(Arg0: I64, Arg1: I64): I64 {
B0:
0ImmBorrowLoc[0](Arg0: I64)
1ImmBorrowField[0](I64.bits: u64)
2ReadRef
3ImmBorrowLoc[1](Arg1: I64)
4ImmBorrowField[0](I64.bits: u64)
5ReadRef
6BitAnd
7Pack[0](I64)
8Ret
}
 
u64_neg(Arg0: u64): u64 {
B0:
0MoveLoc[0](Arg0: u64)
1LdU64(18446744073709551615)
2Xor
3Ret
}
 
u8_neg(Arg0: u8): u8 {
B0:
0MoveLoc[0](Arg0: u8)
1LdU8(255)
2Xor
3Ret
}
 
Constants [
0 => u64: 0
1 => u64: 9223372036854775808
2 => u64: 9223372036854775807
3 => u8: 0
4 => u8: 1
5 => u8: 2
]
}