Skip to content

Instantly share code, notes, and snippets.

@Arachnid
Last active April 27, 2017 15:45
Show Gist options
  • Save Arachnid/cdafbdfb844fd46a58ea6eab7d84e968 to your computer and use it in GitHub Desktop.
Save Arachnid/cdafbdfb844fd46a58ea6eab7d84e968 to your computer and use it in GitHub Desktop.
0x13 JUMPI(:label0, !(CALLDATALOAD(0x0) / 0x2 ** 0xE0 == 0x178B8BF))
# resolver(bytes32 node)
0x1A MSTORE(0x40, SLOAD(CALLDATALOAD(0x4)))
0x1F RETURN(0x40, 0x20)
:label0
0x34 JUMPI(:label1, !(CALLDATALOAD(0x0) / 0x2 ** 0xE0 == 0x2571BE3))
# owner(bytes32 node)
0x3E MSTORE(0x40, SLOAD(CALLDATALOAD(0x4) + 0x20))
0x43 RETURN(0x40, 0x20)
:label1
0x58 JUMPI(:label2, !(CALLDATALOAD(0x0) / 0x2 ** 0xE0 == 0x16A25CBD))
# ttl(bytes32 node)
0x62 MSTORE(0x40, SLOAD(CALLDATALOAD(0x4) + 0x40))
0x67 RETURN(0x40, 0x20)
:label2
0x7C JUMPI(:label4, !(CALLDATALOAD(0x0) / 0x2 ** 0xE0 == 0x5B0FC9C3))
# setOwner(bytes32 node, address owner)
0x8B JUMPI(:label3, !!(CALLER() == SLOAD(CALLDATALOAD(0x4) + 0x20)))
# Caller does not own record
0x8E JUMP(0x2)
:label3
# Store the new owner
0x99 SSTORE(CALLDATALOAD(0x4) + 0x20, CALLDATALOAD(0x24))
# Assemble log arguments
0x9F MSTORE(0x40, CALLDATALOAD(0x24))
0xA3 PUSH(0x19)
0xA5 DUP1
0xAB CODECOPY(0x0, 0x201, POP())
0xB3 LOG2(0x40, 0x20, SHA3(0x0, POP()), CALLDATALOAD(0x4))
0xB4 STOP()
:label4
0xC9 JUMPI(:label6, !(CALLDATALOAD(0x0) / 0x2 ** 0xE0 == 0x6AB5923))
# setSubnodeOwner(bytes32 node, bytes32 label, address owner)
0xD8 JUMPI(:label5, !!(CALLER() == SLOAD(CALLDATALOAD(0x4) + 0x20)))
# Caller does not own record
0xDB JUMP(0x2)
:label5
# Hash node and label together
0xE7 MSTORE(0x0, CALLDATALOAD(0x4))
0xED MSTORE(0x20, CALLDATALOAD(0x24))
# Store new subnode owner
0xF4 SSTORE(SHA3(0x0, 0x40) + 0x20, CALLDATALOAD(0x44))
# Construct log arguments
0xFA MSTORE(0x40, CALLDATALOAD(0x44))
0x101 PUSH(0x21)
0x103 DUP1
0x109 CODECOPY(0x0, 0x1E0, POP())
0x111 LOG3(0x40, 0x20, SHA3(0x0, POP()), CALLDATALOAD(0x4), CALLDATALOAD(0x24))
0x112 STOP()
:label6
0x127 JUMPI(:label8, !(CALLDATALOAD(0x0) / 0x2 ** 0xE0 == 0x1896F70A))
# setResolver(bytes32 node, address resolver)
0x136 JUMPI(:label7, !!(CALLER() == SLOAD(CALLDATALOAD(0x4) + 0x20)))
# Caller does not own record
0x139 JUMP(0x2)
:label7
# Store new resolver
0x141 SSTORE(CALLDATALOAD(0x4), CALLDATALOAD(0x24))
# Construct log arguments
0x147 MSTORE(0x40, CALLDATALOAD(0x24))
0x14B PUSH(0x1C)
0x14D DUP1
0x153 CODECOPY(0x0, 0x1C4, POP())
0x15B LOG2(0x40, 0x20, SHA3(0x0, POP()), CALLDATALOAD(0x4))
0x15C STOP()
:label8
0x171 JUMPI(:label10, !(CALLDATALOAD(0x0) / 0x2 ** 0xE0 == 0x14AB9038))
# setTTL(bytes32 node, uint64 ttl)
0x180 JUMPI(:label9, !!(CALLER() == SLOAD(CALLDATALOAD(0x4) + 0x20)))
# Caller does not own record
0x183 JUMP(0x2)
:label9
# Store new TTL
0x18E SSTORE(CALLDATALOAD(0x4) + 0x40, CALLDATALOAD(0x24))
# Construct log arguments
0x194 MSTORE(0x40, CALLDATALOAD(0x24))
0x198 PUSH(0x16)
0x19A DUP1
0x1A0 CODECOPY(0x0, 0x1AE, POP())
0x1A8 LOG2(0x40, 0x20, SHA3(0x0, POP()), CALLDATALOAD(0x4))
0x1A9 STOP()
:label10
0x1AD JUMP(0x2)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment