#!/usr/bin/perl -w

use v5.30;
use strict;

my @code;
my @regs = (1, (0) x 5);
my $ip_reg;

while(<STDIN>) {
	if (/\A#ip (\d+)/) {
		$ip_reg = $1;
		next;
	}
	chomp;
	push @code, [ split /\s+/ ];
}

my $ip = 0;
while ($ip < @code) {
	my ($op, $a, $b, $c) = @{ $code[$ip] };

	$regs[$ip_reg] = $ip;

	if ($op eq 'addr') {
		$regs[$c] = $regs[$a] + $regs[$b];
	} elsif ($op eq 'addi') {
		$regs[$c] = $regs[$a] + $b;
	} elsif ($op eq 'mulr') {
		$regs[$c] = $regs[$a] * $regs[$b];
	} elsif ($op eq 'muli') {
		$regs[$c] = $regs[$a] * $b;
	} elsif ($op eq 'banr') {
		$regs[$c] = $regs[$a] & $regs[$b];
	} elsif ($op eq 'bani') {
		$regs[$c] = $regs[$a] & $b;
	} elsif ($op eq 'borr') {
		$regs[$c] = $regs[$a] | $regs[$b];
	} elsif ($op eq 'bori') {
		$regs[$c] = $regs[$a] | $b;
	} elsif ($op eq 'setr') {
		$regs[$c] = $regs[$a];
	} elsif ($op eq 'seti') {
		$regs[$c] = $a;
	} elsif ($op eq 'gtrr') {
		$regs[$c] = $regs[$a] > $regs[$b] ? 1 : 0;
	} elsif ($op eq 'eqrr') {
		$regs[$c] = $regs[$a] == $regs[$b] ? 1 : 0;
	} elsif ($op eq 'nop') {
		
	} else {
		die "Unknown op $ op at $ip";
	}
	say join(' ', $ip, "\t", @{ $code[$ip] }, "\t", @regs);
	# $regs[3] = $ARGV[0] if $ip == 35;
	$ip = $regs[$ip_reg] + 1;
}

say $regs[0];

