// Copy calldata to memory offset 0calldatacopy(0,0, calldata_size);// Create a new contract based on that calldata stored in memory, deposit 0 wei into it.// Return the new contract's address back to the stack.contract_address =create(0,0, calldata_size);// Call the new contract with remaining gas.// Return success status (0 or 1) back to the stack.returndata =call(gas, contract_address,0,0,0,0,0)if (returndata_size ==0x0A) {jump(0x1F);}
Basically we need to build a contract that returns 10 bytes of data, any data suffices, such as 0x00's. That means our runtime code can simply return 10 bytes of stuff without writing anything to the memory:
// Return that 10 bytes
PUSH1 0x0A
PUSH1 0x00
RETURN
// Store 0x600a6000f3 in memory offset 0
PUSH5 0x600a6000f3
PUSH1 0x00
MSTORE
// Return it, but skipping all the leading zeros
PUSH1 0x05
PUSH1 0x1B
RETURN