// Copyright (c) 2024, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
//
// This file has been automatically generated. Please do not edit it manually.
// Generated by tests/ffi/generator/address_of_test_generator.dart.
//
// SharedObjects=ffi_test_functions
// VMOptions=
// VMOptions=--deterministic --optimization-counter-threshold=90
// VMOptions=--use-slow-path
// VMOptions=--use-slow-path --stacktrace-every=100

import 'dart:typed_data';

bool makeExpectedResultBool(int start, int end) {
  bool result = false;
  for (int i = start; i < end; i++) {
    final value = _value(i);
    result ^= value;
  }
  return result;
}

Int8List makeBoolList(int length) {
  final typedData = Int8List(length);
  for (int i = 0; i < length; i++) {
    final value = _value(i) ? 1 : 0;
    typedData[i] = value;
  }
  return typedData;
}

bool _value(int index) => index % 2 == 1;
