init:
    contract.storage[0] = msg.sender
code:
    if msg.sender != contract.storage[0]:
        stop
    i = 0
    while i < ~calldatasize():
        to = ~calldataload(i)
        value = ~calldataload(i+20) / 256^12
        datasize = ~calldataload(i+32) / 256^30
        data = alloc(datasize)
        ~calldatacopy(data, i+34, datasize)
        ~call(tx.gas - 25, to, value, data, datasize, 0, 0)
        i += 34 + datasize
