code: func opcodeIf(op *parsedOpcode, vm *Engine) error {
  	condVal := OpCondFalse
  	if vm.isBranchExecuting() {
  		ok, err := popIfBool(vm)
  		if err != nil {
  			return err
  		}
  
  		if ok {
  			condVal = OpCondTrue
  		}
  	} else {
  		condVal = OpCondSkip
  	}
  	vm.condStack = append(vm.condStack, condVal)
  	return nil
  }
docs: // opcodeIf treats the top item on the data stack as a boolean and removes it.
  //
  // An appropriate entry is added to the conditional stack depending on whether
  // the boolean is true and whether this if is on an executing branch in order
  // to allow proper execution of further opcodes depending on the conditional
  // logic.  When the boolean is true, the first branch will be executed (unless
  // this opcode is nested in a non-executed branch).
  //
  // <expression> if [statements] [else [statements]] endif
  //
  // Note that, unlike for all non-conditional opcodes, this is executed even when
  // it is on a non-executing branch so proper nesting is maintained.
  //
  // Data stack transformation: [... bool] -> [...]
  // Conditional stack transformation: [...] -> [... OpCondValue]