Thanks for using Compiler Explorer
Sponsors
Jakt
C++
Ada
Algol68
Analysis
Android Java
Android Kotlin
Assembly
C
C3
Carbon
C with Coccinelle
C++ with Coccinelle
C++ (Circle)
CIRCT
Clean
CMake
CMakeScript
COBOL
C++ for OpenCL
MLIR
Cppx
Cppx-Blue
Cppx-Gold
Cpp2-cppfront
Crystal
C#
CUDA C++
D
Dart
Elixir
Erlang
Fortran
F#
GLSL
Go
Haskell
HLSL
Hook
Hylo
IL
ispc
Java
Julia
Kotlin
LLVM IR
LLVM MIR
Modula-2
Mojo
Nim
Numba
Nix
Objective-C
Objective-C++
OCaml
Odin
OpenCL C
Pascal
Pony
PTX
Python
Racket
Raku
Ruby
Rust
Sail
Snowball
Scala
Slang
Solidity
Spice
SPIR-V
Swift
LLVM TableGen
Toit
Triton
TypeScript Native
V
Vala
Visual Basic
Vyper
WASM
Zig
Javascript
GIMPLE
Ygen
sway
c source #1
Output
Compile to binary object
Link to binary
Execute the code
Intel asm syntax
Demangle identifiers
Verbose demangling
Filters
Unused labels
Library functions
Directives
Comments
Horizontal whitespace
Debug intrinsics
Compiler
6502 cc65 2.17
6502 cc65 2.18
6502 cc65 2.19
6502 cc65 trunk
ARM GCC 10.2.0 (linux)
ARM GCC 10.2.1 (none)
ARM GCC 10.3.0 (linux)
ARM GCC 10.3.1 (2021.07 none)
ARM GCC 10.3.1 (2021.10 none)
ARM GCC 10.5.0
ARM GCC 11.1.0 (linux)
ARM GCC 11.2.0 (linux)
ARM GCC 11.2.1 (none)
ARM GCC 11.3.0 (linux)
ARM GCC 11.4.0
ARM GCC 12.1.0 (linux)
ARM GCC 12.2.0 (linux)
ARM GCC 12.3.0
ARM GCC 12.4.0
ARM GCC 12.5.0
ARM GCC 13.1.0 (linux)
ARM GCC 13.2.0
ARM GCC 13.2.0 (unknown-eabi)
ARM GCC 13.3.0
ARM GCC 13.3.0 (unknown-eabi)
ARM GCC 13.4.0
ARM GCC 13.4.0 (unknown-eabi)
ARM GCC 14.1.0
ARM GCC 14.1.0 (unknown-eabi)
ARM GCC 14.2.0
ARM GCC 14.2.0 (unknown-eabi)
ARM GCC 14.3.0
ARM GCC 14.3.0 (unknown-eabi)
ARM GCC 15.1.0
ARM GCC 15.1.0 (unknown-eabi)
ARM GCC 15.2.0
ARM GCC 15.2.0 (unknown-eabi)
ARM GCC 4.5.4 (linux)
ARM GCC 4.6.4 (linux)
ARM GCC 5.4 (linux)
ARM GCC 5.4.1 (none)
ARM GCC 6.3.0 (linux)
ARM GCC 6.4.0 (linux)
ARM GCC 7.2.1 (none)
ARM GCC 7.3.0 (linux)
ARM GCC 7.5.0 (linux)
ARM GCC 8.2.0 (WinCE)
ARM GCC 8.2.0 (linux)
ARM GCC 8.3.1 (none)
ARM GCC 8.5.0 (linux)
ARM GCC 9.2.1 (none)
ARM GCC 9.3.0 (linux)
ARM GCC trunk (linux)
ARM msvc v19.0 (ex-WINE)
ARM msvc v19.10 (ex-WINE)
ARM msvc v19.14 (ex-WINE)
ARM64 GCC 10.2.0
ARM64 GCC 10.3.0
ARM64 GCC 10.4.0
ARM64 GCC 10.5.0
ARM64 GCC 11.1.0
ARM64 GCC 11.2.0
ARM64 GCC 11.3.0
ARM64 GCC 11.4.0
ARM64 GCC 12.1.0
ARM64 GCC 12.2.0
ARM64 GCC 12.3.0
ARM64 GCC 12.4.0
ARM64 GCC 12.5.0
ARM64 GCC 13.1.0
ARM64 GCC 13.2.0
ARM64 GCC 13.3.0
ARM64 GCC 13.4.0
ARM64 GCC 14.1.0
ARM64 GCC 14.2.0
ARM64 GCC 14.3.0
ARM64 GCC 15.1.0
ARM64 GCC 15.2.0
ARM64 GCC 4.9.4
ARM64 GCC 5.4
ARM64 GCC 5.5.0
ARM64 GCC 6.3
ARM64 GCC 6.4.0
ARM64 GCC 7.3.0
ARM64 GCC 7.5.0
ARM64 GCC 8.2.0
ARM64 GCC 8.5.0
ARM64 GCC 9.3.0
ARM64 GCC 9.4.0
ARM64 GCC 9.5.0
ARM64 GCC trunk
ARM64 Morello GCC 10.1.0 Alpha 1
ARM64 Morello GCC 10.1.2 Alpha 2
ARM64 msvc v19.14 (ex-WINE)
AVR gcc 10.3.0
AVR gcc 11.1.0
AVR gcc 12.1.0
AVR gcc 12.2.0
AVR gcc 12.3.0
AVR gcc 12.4.0
AVR gcc 12.5.0
AVR gcc 13.1.0
AVR gcc 13.2.0
AVR gcc 13.3.0
AVR gcc 13.4.0
AVR gcc 14.1.0
AVR gcc 14.2.0
AVR gcc 14.3.0
AVR gcc 15.1.0
AVR gcc 15.2.0
AVR gcc 4.5.4
AVR gcc 4.6.4
AVR gcc 5.4.0
AVR gcc 9.2.0
AVR gcc 9.3.0
Arduino Mega (1.8.9)
Arduino Uno (1.8.9)
BPF clang (trunk)
BPF clang 13.0.0
BPF clang 14.0.0
BPF clang 15.0.0
BPF clang 16.0.0
BPF clang 17.0.1
BPF clang 18.1.0
BPF clang 19.1.0
BPF clang 20.1.0
BPF clang 21.1.0
BPF gcc 13.1.0
BPF gcc 13.2.0
BPF gcc 13.3.0
BPF gcc 13.4.0
BPF gcc 14.1.0
BPF gcc 14.2.0
BPF gcc 14.3.0
BPF gcc 15.1.0
BPF gcc 15.2.0
BPF gcc trunk
C2Rust (master)
Chibicc 2020-12-07
FRC 2019
FRC 2020
FRC 2023
HPPA gcc 14.2.0
HPPA gcc 14.3.0
HPPA gcc 15.1.0
HPPA gcc 15.2.0
K1C gcc 7.4
K1C gcc 7.5
KVX ACB 4.1.0 (GCC 7.5.0)
KVX ACB 4.1.0-cd1 (GCC 7.5.0)
KVX ACB 4.10.0 (GCC 10.3.1)
KVX ACB 4.11.1 (GCC 10.3.1)
KVX ACB 4.12.0 (GCC 11.3.0)
KVX ACB 4.2.0 (GCC 7.5.0)
KVX ACB 4.3.0 (GCC 7.5.0)
KVX ACB 4.4.0 (GCC 7.5.0)
KVX ACB 4.6.0 (GCC 9.4.1)
KVX ACB 4.8.0 (GCC 9.4.1)
KVX ACB 4.9.0 (GCC 9.4.1)
KVX ACB 5.0.0 (GCC 12.2.1)
KVX ACB 5.2.0 (GCC 13.2.1)
LC3 (trunk)
M68K clang (trunk)
M68K gcc 13.1.0
M68K gcc 13.2.0
M68K gcc 13.3.0
M68K gcc 13.4.0
M68K gcc 14.1.0
M68K gcc 14.2.0
M68K gcc 14.3.0
M68K gcc 15.1.0
M68K gcc 15.2.0
MRISC32 gcc (trunk)
MSP430 gcc 12.1.0
MSP430 gcc 12.2.0
MSP430 gcc 12.3.0
MSP430 gcc 12.4.0
MSP430 gcc 12.5.0
MSP430 gcc 13.1.0
MSP430 gcc 13.2.0
MSP430 gcc 13.3.0
MSP430 gcc 13.4.0
MSP430 gcc 14.1.0
MSP430 gcc 14.2.0
MSP430 gcc 14.3.0
MSP430 gcc 15.1.0
MSP430 gcc 15.2.0
MSP430 gcc 4.5.3
MSP430 gcc 5.3.0
MSP430 gcc 6.2.1
MinGW clang 14.0.3
MinGW clang 14.0.6
MinGW clang 15.0.7
MinGW clang 16.0.0
MinGW clang 16.0.2
MinGW gcc 11.3.0
MinGW gcc 12.1.0
MinGW gcc 12.2.0
MinGW gcc 13.1.0
MinGW gcc 14.3.0
MinGW gcc 15.2.0
ORCA/C 2.1.0
ORCA/C 2.2.0
ORCA/C 2.2.1
POWER64 gcc 11.2.0
POWER64 gcc 12.1.0
POWER64 gcc 12.2.0
POWER64 gcc 12.3.0
POWER64 gcc 12.4.0
POWER64 gcc 12.5.0
POWER64 gcc 13.1.0
POWER64 gcc 13.2.0
POWER64 gcc 13.3.0
POWER64 gcc 13.4.0
POWER64 gcc 14.1.0
POWER64 gcc 14.2.0
POWER64 gcc 14.3.0
POWER64 gcc 15.1.0
POWER64 gcc 15.2.0
POWER64 gcc trunk
RISC-V (32-bits) gcc (trunk)
RISC-V (32-bits) gcc 10.2.0
RISC-V (32-bits) gcc 10.3.0
RISC-V (32-bits) gcc 11.2.0
RISC-V (32-bits) gcc 11.3.0
RISC-V (32-bits) gcc 11.4.0
RISC-V (32-bits) gcc 12.1.0
RISC-V (32-bits) gcc 12.2.0
RISC-V (32-bits) gcc 12.3.0
RISC-V (32-bits) gcc 12.4.0
RISC-V (32-bits) gcc 12.5.0
RISC-V (32-bits) gcc 13.1.0
RISC-V (32-bits) gcc 13.2.0
RISC-V (32-bits) gcc 13.3.0
RISC-V (32-bits) gcc 13.4.0
RISC-V (32-bits) gcc 14.1.0
RISC-V (32-bits) gcc 14.2.0
RISC-V (32-bits) gcc 14.3.0
RISC-V (32-bits) gcc 15.1.0
RISC-V (32-bits) gcc 15.2.0
RISC-V (32-bits) gcc 8.2.0
RISC-V (32-bits) gcc 8.5.0
RISC-V (32-bits) gcc 9.4.0
RISC-V (64-bits) gcc (trunk)
RISC-V (64-bits) gcc 10.2.0
RISC-V (64-bits) gcc 10.3.0
RISC-V (64-bits) gcc 11.2.0
RISC-V (64-bits) gcc 11.3.0
RISC-V (64-bits) gcc 11.4.0
RISC-V (64-bits) gcc 12.1.0
RISC-V (64-bits) gcc 12.2.0
RISC-V (64-bits) gcc 12.3.0
RISC-V (64-bits) gcc 12.4.0
RISC-V (64-bits) gcc 12.5.0
RISC-V (64-bits) gcc 13.1.0
RISC-V (64-bits) gcc 13.2.0
RISC-V (64-bits) gcc 13.3.0
RISC-V (64-bits) gcc 13.4.0
RISC-V (64-bits) gcc 14.1.0
RISC-V (64-bits) gcc 14.2.0
RISC-V (64-bits) gcc 14.3.0
RISC-V (64-bits) gcc 15.1.0
RISC-V (64-bits) gcc 15.2.0
RISC-V (64-bits) gcc 8.2.0
RISC-V (64-bits) gcc 8.5.0
RISC-V (64-bits) gcc 9.4.0
RISC-V rv32gc clang (trunk)
RISC-V rv32gc clang 10.0.0
RISC-V rv32gc clang 10.0.1
RISC-V rv32gc clang 11.0.0
RISC-V rv32gc clang 11.0.1
RISC-V rv32gc clang 12.0.0
RISC-V rv32gc clang 12.0.1
RISC-V rv32gc clang 13.0.0
RISC-V rv32gc clang 13.0.1
RISC-V rv32gc clang 14.0.0
RISC-V rv32gc clang 15.0.0
RISC-V rv32gc clang 16.0.0
RISC-V rv32gc clang 17.0.1
RISC-V rv32gc clang 18.1.0
RISC-V rv32gc clang 19.1.0
RISC-V rv32gc clang 20.1.0
RISC-V rv32gc clang 21.1.0
RISC-V rv32gc clang 9.0.0
RISC-V rv32gc clang 9.0.1
RISC-V rv64gc clang (trunk)
RISC-V rv64gc clang 10.0.0
RISC-V rv64gc clang 10.0.1
RISC-V rv64gc clang 11.0.0
RISC-V rv64gc clang 11.0.1
RISC-V rv64gc clang 12.0.0
RISC-V rv64gc clang 12.0.1
RISC-V rv64gc clang 13.0.0
RISC-V rv64gc clang 13.0.1
RISC-V rv64gc clang 14.0.0
RISC-V rv64gc clang 15.0.0
RISC-V rv64gc clang 16.0.0
RISC-V rv64gc clang 17.0.1
RISC-V rv64gc clang 18.1.0
RISC-V rv64gc clang 19.1.0
RISC-V rv64gc clang 20.1.0
RISC-V rv64gc clang 21.1.0
RISC-V rv64gc clang 9.0.0
RISC-V rv64gc clang 9.0.1
Raspbian Buster
Raspbian Stretch
SDCC 4.0.0
SDCC 4.1.0
SDCC 4.2.0
SDCC 4.3.0
SDCC 4.4.0
SDCC 4.5.0
SPARC LEON gcc 12.2.0
SPARC LEON gcc 12.3.0
SPARC LEON gcc 12.4.0
SPARC LEON gcc 12.5.0
SPARC LEON gcc 13.1.0
SPARC LEON gcc 13.2.0
SPARC LEON gcc 13.3.0
SPARC LEON gcc 13.4.0
SPARC LEON gcc 14.1.0
SPARC LEON gcc 14.2.0
SPARC LEON gcc 14.3.0
SPARC LEON gcc 15.1.0
SPARC LEON gcc 15.2.0
SPARC gcc 12.2.0
SPARC gcc 12.3.0
SPARC gcc 12.4.0
SPARC gcc 12.5.0
SPARC gcc 13.1.0
SPARC gcc 13.2.0
SPARC gcc 13.3.0
SPARC gcc 13.4.0
SPARC gcc 14.1.0
SPARC gcc 14.2.0
SPARC gcc 14.3.0
SPARC gcc 15.1.0
SPARC gcc 15.2.0
SPARC64 gcc 12.2.0
SPARC64 gcc 12.3.0
SPARC64 gcc 12.4.0
SPARC64 gcc 12.5.0
SPARC64 gcc 13.1.0
SPARC64 gcc 13.2.0
SPARC64 gcc 13.3.0
SPARC64 gcc 13.4.0
SPARC64 gcc 14.1.0
SPARC64 gcc 14.2.0
SPARC64 gcc 14.3.0
SPARC64 gcc 15.1.0
SPARC64 gcc 15.2.0
TCC (trunk)
TCC 0.9.27
TI C6x gcc 12.2.0
TI C6x gcc 12.3.0
TI C6x gcc 12.4.0
TI C6x gcc 12.5.0
TI C6x gcc 13.1.0
TI C6x gcc 13.2.0
TI C6x gcc 13.3.0
TI C6x gcc 13.4.0
TI C6x gcc 14.1.0
TI C6x gcc 14.2.0
TI C6x gcc 14.3.0
TI C6x gcc 15.1.0
TI C6x gcc 15.2.0
TI CL430 21.6.1
Tricore gcc 11.3.0 (EEESlab)
VAX gcc NetBSDELF 10.4.0
VAX gcc NetBSDELF 10.5.0 (Nov 15 03:50:22 2023)
VAX gcc NetBSDELF 12.4.0 (Apr 16 05:27 2025)
WebAssembly clang (trunk)
Xtensa ESP32 gcc 11.2.0 (2022r1)
Xtensa ESP32 gcc 12.2.0 (20230208)
Xtensa ESP32 gcc 14.2.0 (20241119)
Xtensa ESP32 gcc 8.2.0 (2019r2)
Xtensa ESP32 gcc 8.2.0 (2020r1)
Xtensa ESP32 gcc 8.2.0 (2020r2)
Xtensa ESP32 gcc 8.4.0 (2020r3)
Xtensa ESP32 gcc 8.4.0 (2021r1)
Xtensa ESP32 gcc 8.4.0 (2021r2)
Xtensa ESP32-S2 gcc 11.2.0 (2022r1)
Xtensa ESP32-S2 gcc 12.2.0 (20230208)
Xtensa ESP32-S2 gcc 14.2.0 (20241119)
Xtensa ESP32-S2 gcc 8.2.0 (2019r2)
Xtensa ESP32-S2 gcc 8.2.0 (2020r1)
Xtensa ESP32-S2 gcc 8.2.0 (2020r2)
Xtensa ESP32-S2 gcc 8.4.0 (2020r3)
Xtensa ESP32-S2 gcc 8.4.0 (2021r1)
Xtensa ESP32-S2 gcc 8.4.0 (2021r2)
Xtensa ESP32-S3 gcc 11.2.0 (2022r1)
Xtensa ESP32-S3 gcc 12.2.0 (20230208)
Xtensa ESP32-S3 gcc 14.2.0 (20241119)
Xtensa ESP32-S3 gcc 8.4.0 (2020r3)
Xtensa ESP32-S3 gcc 8.4.0 (2021r1)
Xtensa ESP32-S3 gcc 8.4.0 (2021r2)
arm64 msvc v19.20 VS16.0
arm64 msvc v19.21 VS16.1
arm64 msvc v19.22 VS16.2
arm64 msvc v19.23 VS16.3
arm64 msvc v19.24 VS16.4
arm64 msvc v19.25 VS16.5
arm64 msvc v19.27 VS16.7
arm64 msvc v19.28 VS16.8
arm64 msvc v19.28 VS16.9
arm64 msvc v19.29 VS16.10
arm64 msvc v19.29 VS16.11
arm64 msvc v19.30 VS17.0
arm64 msvc v19.31 VS17.1
arm64 msvc v19.32 VS17.2
arm64 msvc v19.33 VS17.3
arm64 msvc v19.34 VS17.4
arm64 msvc v19.35 VS17.5
arm64 msvc v19.36 VS17.6
arm64 msvc v19.37 VS17.7
arm64 msvc v19.38 VS17.8
arm64 msvc v19.39 VS17.9
arm64 msvc v19.40 VS17.10
arm64 msvc v19.41 VS17.11
arm64 msvc v19.42 VS17.12
arm64 msvc v19.43 VS17.13
arm64 msvc v19.latest
armv7-a clang (trunk)
armv7-a clang 10.0.0
armv7-a clang 10.0.1
armv7-a clang 11.0.0
armv7-a clang 11.0.1
armv7-a clang 12.0.0
armv7-a clang 12.0.1
armv7-a clang 13.0.0
armv7-a clang 13.0.1
armv7-a clang 14.0.0
armv7-a clang 15.0.0
armv7-a clang 16.0.0
armv7-a clang 17.0.1
armv7-a clang 18.1.0
armv7-a clang 19.1.0
armv7-a clang 20.1.0
armv7-a clang 21.1.0
armv7-a clang 9.0.0
armv7-a clang 9.0.1
armv8-a clang (all architectural features, trunk)
armv8-a clang (trunk)
armv8-a clang 10.0.0
armv8-a clang 10.0.1
armv8-a clang 11.0.0
armv8-a clang 11.0.1
armv8-a clang 12.0.0
armv8-a clang 12.0.1
armv8-a clang 13.0.0
armv8-a clang 13.0.1
armv8-a clang 14.0.0
armv8-a clang 15.0.0
armv8-a clang 16.0.0
armv8-a clang 17.0.1
armv8-a clang 18.1.0
armv8-a clang 19.1.0
armv8-a clang 20.1.0
armv8-a clang 21.1.0
armv8-a clang 9.0.0
armv8-a clang 9.0.1
clang 12 for DPU (rel 2023.2.0)
cproc-master
ez80-clang 15.0.0
ez80-clang 15.0.7
llvm-mos commander X16
llvm-mos commodore 64
llvm-mos mega65
llvm-mos nes-cnrom
llvm-mos nes-mmc1
llvm-mos nes-mmc3
llvm-mos nes-nrom
llvm-mos osi-c1p
loongarch64 gcc 12.2.0
loongarch64 gcc 12.3.0
loongarch64 gcc 12.4.0
loongarch64 gcc 12.5.0
loongarch64 gcc 13.1.0
loongarch64 gcc 13.2.0
loongarch64 gcc 13.3.0
loongarch64 gcc 13.4.0
loongarch64 gcc 14.1.0
loongarch64 gcc 14.2.0
loongarch64 gcc 14.3.0
loongarch64 gcc 15.1.0
loongarch64 gcc 15.2.0
mips (el) gcc 12.1.0
mips (el) gcc 12.2.0
mips (el) gcc 12.3.0
mips (el) gcc 12.4.0
mips (el) gcc 12.5.0
mips (el) gcc 13.1.0
mips (el) gcc 13.2.0
mips (el) gcc 13.3.0
mips (el) gcc 13.4.0
mips (el) gcc 14.1.0
mips (el) gcc 14.2.0
mips (el) gcc 14.3.0
mips (el) gcc 15.1.0
mips (el) gcc 15.2.0
mips (el) gcc 4.9.4
mips (el) gcc 5.4
mips (el) gcc 5.5.0
mips (el) gcc 9.5.0
mips clang 13.0.0
mips clang 14.0.0
mips clang 15.0.0
mips clang 16.0.0
mips clang 17.0.1
mips clang 18.1.0
mips clang 19.1.0
mips clang 20.1.0
mips clang 21.1.0
mips gcc 11.2.0
mips gcc 12.1.0
mips gcc 12.2.0
mips gcc 12.3.0
mips gcc 12.4.0
mips gcc 12.5.0
mips gcc 13.1.0
mips gcc 13.2.0
mips gcc 13.3.0
mips gcc 13.4.0
mips gcc 14.1.0
mips gcc 14.2.0
mips gcc 14.3.0
mips gcc 15.1.0
mips gcc 15.2.0
mips gcc 4.9.4
mips gcc 5.4
mips gcc 5.5.0
mips gcc 9.3.0 (codescape)
mips gcc 9.5.0
mips64 (el) gcc 12.1.0
mips64 (el) gcc 12.2.0
mips64 (el) gcc 12.3.0
mips64 (el) gcc 12.4.0
mips64 (el) gcc 12.5.0
mips64 (el) gcc 13.1.0
mips64 (el) gcc 13.2.0
mips64 (el) gcc 13.3.0
mips64 (el) gcc 13.4.0
mips64 (el) gcc 14.1.0
mips64 (el) gcc 14.2.0
mips64 (el) gcc 14.3.0
mips64 (el) gcc 15.1.0
mips64 (el) gcc 15.2.0
mips64 (el) gcc 4.9.4
mips64 (el) gcc 5.4.0
mips64 (el) gcc 5.5.0
mips64 (el) gcc 9.5.0
mips64 clang 13.0.0
mips64 clang 14.0.0
mips64 clang 15.0.0
mips64 clang 16.0.0
mips64 clang 17.0.1
mips64 clang 18.1.0
mips64 clang 19.1.0
mips64 clang 20.1.0
mips64 clang 21.1.0
mips64 gcc 11.2.0
mips64 gcc 12.1.0
mips64 gcc 12.2.0
mips64 gcc 12.3.0
mips64 gcc 12.4.0
mips64 gcc 12.5.0
mips64 gcc 13.1.0
mips64 gcc 13.2.0
mips64 gcc 13.3.0
mips64 gcc 13.4.0
mips64 gcc 14.1.0
mips64 gcc 14.2.0
mips64 gcc 14.3.0
mips64 gcc 15.1.0
mips64 gcc 15.2.0
mips64 gcc 4.9.4
mips64 gcc 5.4
mips64 gcc 5.5.0
mips64 gcc 9.5.0
mips64el clang 13.0.0
mips64el clang 14.0.0
mips64el clang 15.0.0
mips64el clang 16.0.0
mips64el clang 17.0.1
mips64el clang 18.1.0
mips64el clang 19.1.0
mips64el clang 20.1.0
mips64el clang 21.1.0
mipsel clang 13.0.0
mipsel clang 14.0.0
mipsel clang 15.0.0
mipsel clang 16.0.0
mipsel clang 17.0.1
mipsel clang 18.1.0
mipsel clang 19.1.0
mipsel clang 20.1.0
mipsel clang 21.1.0
movfuscator (trunk)
nanoMIPS gcc 6.3.0
power gcc 11.2.0
power gcc 12.1.0
power gcc 12.2.0
power gcc 12.3.0
power gcc 12.4.0
power gcc 12.5.0
power gcc 13.1.0
power gcc 13.2.0
power gcc 13.3.0
power gcc 13.4.0
power gcc 14.1.0
power gcc 14.2.0
power gcc 14.3.0
power gcc 15.1.0
power gcc 15.2.0
power gcc 4.8.5
power64 AT12.0 (gcc8)
power64 AT13.0 (gcc9)
power64le AT12.0 (gcc8)
power64le AT13.0 (gcc9)
power64le clang (trunk)
power64le gcc 11.2.0
power64le gcc 12.1.0
power64le gcc 12.2.0
power64le gcc 12.3.0
power64le gcc 12.4.0
power64le gcc 12.5.0
power64le gcc 13.1.0
power64le gcc 13.2.0
power64le gcc 13.3.0
power64le gcc 13.4.0
power64le gcc 14.1.0
power64le gcc 14.2.0
power64le gcc 14.3.0
power64le gcc 15.1.0
power64le gcc 15.2.0
power64le gcc 6.3.0
power64le gcc trunk
powerpc64 clang (trunk)
ppci 0.5.5
s390x gcc 11.2.0
s390x gcc 12.1.0
s390x gcc 12.2.0
s390x gcc 12.3.0
s390x gcc 12.4.0
s390x gcc 12.5.0
s390x gcc 13.1.0
s390x gcc 13.2.0
s390x gcc 13.3.0
s390x gcc 13.4.0
s390x gcc 14.1.0
s390x gcc 14.2.0
s390x gcc 14.3.0
s390x gcc 15.1.0
s390x gcc 15.2.0
sh gcc 12.2.0
sh gcc 12.3.0
sh gcc 12.4.0
sh gcc 12.5.0
sh gcc 13.1.0
sh gcc 13.2.0
sh gcc 13.3.0
sh gcc 13.4.0
sh gcc 14.1.0
sh gcc 14.2.0
sh gcc 14.3.0
sh gcc 15.1.0
sh gcc 15.2.0
sh gcc 4.9.4
sh gcc 9.5.0
vast (trunk)
x64 msvc v19.0 (ex-WINE)
x64 msvc v19.10 (ex-WINE)
x64 msvc v19.14 (ex-WINE)
x64 msvc v19.20 VS16.0
x64 msvc v19.21 VS16.1
x64 msvc v19.22 VS16.2
x64 msvc v19.23 VS16.3
x64 msvc v19.24 VS16.4
x64 msvc v19.25 VS16.5
x64 msvc v19.27 VS16.7
x64 msvc v19.28 VS16.8
x64 msvc v19.28 VS16.9
x64 msvc v19.29 VS16.10
x64 msvc v19.29 VS16.11
x64 msvc v19.30 VS17.0
x64 msvc v19.31 VS17.1
x64 msvc v19.32 VS17.2
x64 msvc v19.33 VS17.3
x64 msvc v19.34 VS17.4
x64 msvc v19.35 VS17.5
x64 msvc v19.36 VS17.6
x64 msvc v19.37 VS17.7
x64 msvc v19.38 VS17.8
x64 msvc v19.39 VS17.9
x64 msvc v19.40 VS17.10
x64 msvc v19.41 VS17.11
x64 msvc v19.42 VS17.12
x64 msvc v19.43 VS17.13
x64 msvc v19.latest
x86 CompCert 3.10
x86 CompCert 3.11
x86 CompCert 3.12
x86 CompCert 3.9
x86 gcc 1.27
x86 msvc v19.0 (ex-WINE)
x86 msvc v19.10 (ex-WINE)
x86 msvc v19.14 (ex-WINE)
x86 msvc v19.20 VS16.0
x86 msvc v19.21 VS16.1
x86 msvc v19.22 VS16.2
x86 msvc v19.23 VS16.3
x86 msvc v19.24 VS16.4
x86 msvc v19.25 VS16.5
x86 msvc v19.27 VS16.7
x86 msvc v19.28 VS16.8
x86 msvc v19.28 VS16.9
x86 msvc v19.29 VS16.10
x86 msvc v19.29 VS16.11
x86 msvc v19.30 VS17.0
x86 msvc v19.31 VS17.1
x86 msvc v19.32 VS17.2
x86 msvc v19.33 VS17.3
x86 msvc v19.34 VS17.4
x86 msvc v19.35 VS17.5
x86 msvc v19.36 VS17.6
x86 msvc v19.37 VS17.7
x86 msvc v19.38 VS17.8
x86 msvc v19.39 VS17.9
x86 msvc v19.40 VS17.10
x86 msvc v19.41 VS17.11
x86 msvc v19.42 VS17.12
x86 msvc v19.43 VS17.13
x86 msvc v19.latest
x86 nvc 24.11
x86 nvc 24.9
x86 nvc 25.1
x86 nvc 25.3
x86 nvc 25.5
x86 nvc 25.7
x86 nvc 25.9
x86 tendra (trunk)
x86-64 clang (assertions trunk)
x86-64 clang (thephd.dev)
x86-64 clang (trunk)
x86-64 clang (widberg)
x86-64 clang 10.0.0
x86-64 clang 10.0.1
x86-64 clang 11.0.0
x86-64 clang 11.0.1
x86-64 clang 12.0.0
x86-64 clang 12.0.1
x86-64 clang 13.0.0
x86-64 clang 13.0.1
x86-64 clang 14.0.0
x86-64 clang 15.0.0
x86-64 clang 16.0.0
x86-64 clang 17.0.1
x86-64 clang 18.1.0
x86-64 clang 19.1.0
x86-64 clang 20.1.0
x86-64 clang 21.1.0
x86-64 clang 3.0.0
x86-64 clang 3.1
x86-64 clang 3.2
x86-64 clang 3.3
x86-64 clang 3.4.1
x86-64 clang 3.5
x86-64 clang 3.5.1
x86-64 clang 3.5.2
x86-64 clang 3.6
x86-64 clang 3.7
x86-64 clang 3.7.1
x86-64 clang 3.8
x86-64 clang 3.8.1
x86-64 clang 3.9.0
x86-64 clang 3.9.1
x86-64 clang 4.0.0
x86-64 clang 4.0.1
x86-64 clang 5.0.0
x86-64 clang 5.0.1
x86-64 clang 5.0.2
x86-64 clang 6.0.0
x86-64 clang 6.0.1
x86-64 clang 7.0.0
x86-64 clang 7.0.1
x86-64 clang 7.1.0
x86-64 clang 8.0.0
x86-64 clang 8.0.1
x86-64 clang 9.0.0
x86-64 clang 9.0.1
x86-64 gcc (trunk)
x86-64 gcc 10.1
x86-64 gcc 10.2
x86-64 gcc 10.3
x86-64 gcc 10.3 (assertions)
x86-64 gcc 10.4
x86-64 gcc 10.4 (assertions)
x86-64 gcc 10.5
x86-64 gcc 10.5 (assertions)
x86-64 gcc 11.1
x86-64 gcc 11.1 (assertions)
x86-64 gcc 11.2
x86-64 gcc 11.2 (assertions)
x86-64 gcc 11.3
x86-64 gcc 11.3 (assertions)
x86-64 gcc 11.4
x86-64 gcc 11.4 (assertions)
x86-64 gcc 12.1
x86-64 gcc 12.1 (assertions)
x86-64 gcc 12.2
x86-64 gcc 12.2 (assertions)
x86-64 gcc 12.3
x86-64 gcc 12.3 (assertions)
x86-64 gcc 12.4
x86-64 gcc 12.4 (assertions)
x86-64 gcc 12.5
x86-64 gcc 12.5 (assertions)
x86-64 gcc 13.1
x86-64 gcc 13.1 (assertions)
x86-64 gcc 13.2
x86-64 gcc 13.2 (assertions)
x86-64 gcc 13.3
x86-64 gcc 13.3 (assertions)
x86-64 gcc 13.4
x86-64 gcc 13.4 (assertions)
x86-64 gcc 14.1
x86-64 gcc 14.1 (assertions)
x86-64 gcc 14.2
x86-64 gcc 14.2 (assertions)
x86-64 gcc 14.3
x86-64 gcc 14.3 (assertions)
x86-64 gcc 15.1
x86-64 gcc 15.1 (assertions)
x86-64 gcc 15.2
x86-64 gcc 15.2 (assertions)
x86-64 gcc 3.4.6
x86-64 gcc 4.0.4
x86-64 gcc 4.1.2
x86-64 gcc 4.4.7
x86-64 gcc 4.5.3
x86-64 gcc 4.6.4
x86-64 gcc 4.7.1
x86-64 gcc 4.7.2
x86-64 gcc 4.7.3
x86-64 gcc 4.7.4
x86-64 gcc 4.8.1
x86-64 gcc 4.8.2
x86-64 gcc 4.8.3
x86-64 gcc 4.8.4
x86-64 gcc 4.8.5
x86-64 gcc 4.9.0
x86-64 gcc 4.9.1
x86-64 gcc 4.9.2
x86-64 gcc 4.9.3
x86-64 gcc 4.9.4
x86-64 gcc 5.1
x86-64 gcc 5.2
x86-64 gcc 5.3
x86-64 gcc 5.4
x86-64 gcc 6.1
x86-64 gcc 6.2
x86-64 gcc 6.3
x86-64 gcc 6.5
x86-64 gcc 7.1
x86-64 gcc 7.2
x86-64 gcc 7.3
x86-64 gcc 7.4
x86-64 gcc 7.5
x86-64 gcc 8.1
x86-64 gcc 8.2
x86-64 gcc 8.3
x86-64 gcc 8.4
x86-64 gcc 8.5
x86-64 gcc 9.1
x86-64 gcc 9.2
x86-64 gcc 9.3
x86-64 gcc 9.4
x86-64 gcc 9.5
x86-64 icc 13.0.1
x86-64 icc 16.0.3
x86-64 icc 17.0.0
x86-64 icc 18.0.0
x86-64 icc 19.0.0
x86-64 icc 19.0.1
x86-64 icc 2021.1.2
x86-64 icc 2021.10.0
x86-64 icc 2021.2.0
x86-64 icc 2021.3.0
x86-64 icc 2021.4.0
x86-64 icc 2021.5.0
x86-64 icc 2021.6.0
x86-64 icc 2021.7.0
x86-64 icc 2021.7.1
x86-64 icc 2021.8.0
x86-64 icc 2021.9.0
x86-64 icx (latest)
x86-64 icx 2021.1.2
x86-64 icx 2021.2.0
x86-64 icx 2021.3.0
x86-64 icx 2021.4.0
x86-64 icx 2022.0.0
x86-64 icx 2022.1.0
x86-64 icx 2022.2.0
x86-64 icx 2022.2.1
x86-64 icx 2023.0.0
x86-64 icx 2023.1.0
x86-64 icx 2024.0.0
x86_64 CompCert 3.10
x86_64 CompCert 3.11
x86_64 CompCert 3.12
x86_64 CompCert 3.9
z180-clang 15.0.0
z180-clang 15.0.7
z80-clang 15.0.0
z80-clang 15.0.7
z88dk 2.2
zig cc 0.10.0
zig cc 0.11.0
zig cc 0.12.0
zig cc 0.12.1
zig cc 0.13.0
zig cc 0.14.0
zig cc 0.14.1
zig cc 0.15.1
zig cc 0.6.0
zig cc 0.7.0
zig cc 0.7.1
zig cc 0.8.0
zig cc 0.9.0
zig cc trunk
Options
Source code
#include <stdio.h> #include <stdint.h> #define INCREMENT_0 1 #define INCREMENT_1 2 #define INCREMENT_2 3 #define INCREMENT_3 4 #define INCREMENT_4 5 #define INCREMENT_5 6 #define INCREMENT_6 7 #define INCREMENT_7 8 #define INCREMENT_8 9 #define INCREMENT_9 10 #define INCREMENT_10 11 #define INCREMENT_11 12 #define INCREMENT_12 13 #define INCREMENT_13 14 #define INCREMENT_14 15 #define INCREMENT_15 16 #define INCREMENT_16 17 #define INCREMENT_17 18 #define INCREMENT_18 19 #define INCREMENT_19 20 #define INCREMENT_20 21 #define INCREMENT_21 22 #define INCREMENT_22 23 #define INCREMENT_23 24 #define INCREMENT_24 25 #define INCREMENT_25 26 #define INCREMENT_26 27 #define INCREMENT_27 28 #define INCREMENT_28 29 #define INCREMENT_29 30 #define INCREMENT_30 31 #define INCREMENT_31 32 #define INCREMENT_32 33 #define INCREMENT_33 34 #define INCREMENT_34 35 #define INCREMENT_35 36 #define INCREMENT_36 37 #define INCREMENT_37 38 #define INCREMENT_38 39 #define INCREMENT_39 40 #define INCREMENT_40 41 #define INCREMENT_41 42 #define INCREMENT_42 43 #define INCREMENT_43 44 #define INCREMENT_44 45 #define INCREMENT_45 46 #define INCREMENT_46 47 #define INCREMENT_47 48 #define INCREMENT_48 49 #define INCREMENT_49 50 #define INCREMENT_50 51 #define INCREMENT_51 52 #define INCREMENT_52 53 #define INCREMENT_53 54 #define INCREMENT_54 55 #define INCREMENT_55 56 #define INCREMENT_56 57 #define INCREMENT_57 58 #define INCREMENT_58 59 #define INCREMENT_59 60 #define INCREMENT_60 61 #define INCREMENT_61 62 #define INCREMENT_62 63 #define INCREMENT_63 64 #define INCREMENT_64 65 #define INCREMENT_65 66 #define INCREMENT_66 67 #define INCREMENT_67 68 #define INCREMENT_68 69 #define INCREMENT_69 70 #define INCREMENT_70 71 #define INCREMENT_71 72 #define INCREMENT_72 73 #define INCREMENT_73 74 #define INCREMENT_74 75 #define INCREMENT_75 76 #define INCREMENT_76 77 #define INCREMENT_77 78 #define INCREMENT_78 79 #define INCREMENT_79 80 #define INCREMENT_80 81 #define INCREMENT_81 82 #define INCREMENT_82 83 #define INCREMENT_83 84 #define INCREMENT_84 85 #define INCREMENT_85 86 #define INCREMENT_86 87 #define INCREMENT_87 88 #define INCREMENT_88 89 #define INCREMENT_89 90 #define INCREMENT_90 91 #define INCREMENT_91 92 #define INCREMENT_92 93 #define INCREMENT_93 94 #define INCREMENT_94 95 #define INCREMENT_95 96 #define INCREMENT_96 97 #define INCREMENT_97 98 #define INCREMENT_98 99 #define INCREMENT_99 100 #define INCREMENT_100 101 #define INCREMENT_101 102 #define INCREMENT_102 103 #define INCREMENT_103 104 #define INCREMENT_104 105 #define INCREMENT_105 106 #define INCREMENT_106 107 #define INCREMENT_107 108 #define INCREMENT_108 109 #define INCREMENT_109 110 #define INCREMENT_110 111 #define INCREMENT_111 112 #define INCREMENT_112 113 #define INCREMENT_113 114 #define INCREMENT_114 115 #define INCREMENT_115 116 #define INCREMENT_116 117 #define INCREMENT_117 118 #define INCREMENT_118 119 #define INCREMENT_119 120 #define INCREMENT_120 121 #define INCREMENT_121 122 #define INCREMENT_122 123 #define INCREMENT_123 124 #define INCREMENT_124 125 #define INCREMENT_125 126 #define INCREMENT_126 127 #define INCREMENT_127 128 #define INCREMENT_128 129 #define INCREMENT_129 130 #define INCREMENT_130 131 #define INCREMENT_131 132 #define INCREMENT_132 133 #define INCREMENT_133 134 #define INCREMENT_134 135 #define INCREMENT_135 136 #define INCREMENT_136 137 #define INCREMENT_137 138 #define INCREMENT_138 139 #define INCREMENT_139 140 #define INCREMENT_140 141 #define INCREMENT_141 142 #define INCREMENT_142 143 #define INCREMENT_143 144 #define INCREMENT_144 145 #define INCREMENT_145 146 #define INCREMENT_146 147 #define INCREMENT_147 148 #define INCREMENT_148 149 #define INCREMENT_149 150 #define INCREMENT_150 151 #define INCREMENT_151 152 #define INCREMENT_152 153 #define INCREMENT_153 154 #define INCREMENT_154 155 #define INCREMENT_155 156 #define INCREMENT_156 157 #define INCREMENT_157 158 #define INCREMENT_158 159 #define INCREMENT_159 160 #define INCREMENT_160 161 #define INCREMENT_161 162 #define INCREMENT_162 163 #define INCREMENT_163 164 #define INCREMENT_164 165 #define INCREMENT_165 166 #define INCREMENT_166 167 #define INCREMENT_167 168 #define INCREMENT_168 169 #define INCREMENT_169 170 #define INCREMENT_170 171 #define INCREMENT_171 172 #define INCREMENT_172 173 #define INCREMENT_173 174 #define INCREMENT_174 175 #define INCREMENT_175 176 #define INCREMENT_176 177 #define INCREMENT_177 178 #define INCREMENT_178 179 #define INCREMENT_179 180 #define INCREMENT_180 181 #define INCREMENT_181 182 #define INCREMENT_182 183 #define INCREMENT_183 184 #define INCREMENT_184 185 #define INCREMENT_185 186 #define INCREMENT_186 187 #define INCREMENT_187 188 #define INCREMENT_188 189 #define INCREMENT_189 190 #define INCREMENT_190 191 #define INCREMENT_191 192 #define INCREMENT_192 193 #define INCREMENT_193 194 #define INCREMENT_194 195 #define INCREMENT_195 196 #define INCREMENT_196 197 #define INCREMENT_197 198 #define INCREMENT_198 199 #define INCREMENT_199 200 #define INCREMENT_200 201 #define INCREMENT_201 202 #define INCREMENT_202 203 #define INCREMENT_203 204 #define INCREMENT_204 205 #define INCREMENT_205 206 #define INCREMENT_206 207 #define INCREMENT_207 208 #define INCREMENT_208 209 #define INCREMENT_209 210 #define INCREMENT_210 211 #define INCREMENT_211 212 #define INCREMENT_212 213 #define INCREMENT_213 214 #define INCREMENT_214 215 #define INCREMENT_215 216 #define INCREMENT_216 217 #define INCREMENT_217 218 #define INCREMENT_218 219 #define INCREMENT_219 220 #define INCREMENT_220 221 #define INCREMENT_221 222 #define INCREMENT_222 223 #define INCREMENT_223 224 #define INCREMENT_224 225 #define INCREMENT_225 226 #define INCREMENT_226 227 #define INCREMENT_227 228 #define INCREMENT_228 229 #define INCREMENT_229 230 #define INCREMENT_230 231 #define INCREMENT_231 232 #define INCREMENT_232 233 #define INCREMENT_233 234 #define INCREMENT_234 235 #define INCREMENT_235 236 #define INCREMENT_236 237 #define INCREMENT_237 238 #define INCREMENT_238 239 #define INCREMENT_239 240 #define INCREMENT_240 241 #define INCREMENT_241 242 #define INCREMENT_242 243 #define INCREMENT_243 244 #define INCREMENT_244 245 #define INCREMENT_245 246 #define INCREMENT_246 247 #define INCREMENT_247 248 #define INCREMENT_248 249 #define INCREMENT_249 250 #define INCREMENT_250 251 #define INCREMENT_251 252 #define INCREMENT_252 253 #define INCREMENT_253 254 #define INCREMENT_254 255 #define INCREMENT_255 256 #define INCREMENT_256 257 #define INCREMENT_257 258 #define INCREMENT_258 259 #define INCREMENT_259 260 #define INCREMENT_260 261 #define INCREMENT_261 262 #define INCREMENT_262 263 #define INCREMENT_263 264 #define INCREMENT_264 265 #define INCREMENT_265 266 #define INCREMENT_266 267 #define INCREMENT_267 268 #define INCREMENT_268 269 #define INCREMENT_269 270 #define INCREMENT_270 271 #define INCREMENT_271 272 #define INCREMENT_272 273 #define INCREMENT_273 274 #define INCREMENT_274 275 #define INCREMENT_275 276 #define INCREMENT_276 277 #define INCREMENT_277 278 #define INCREMENT_278 279 #define INCREMENT_279 280 #define INCREMENT_280 281 #define INCREMENT_281 282 #define INCREMENT_282 283 #define INCREMENT_283 284 #define INCREMENT_284 285 #define INCREMENT_285 286 #define INCREMENT_286 287 #define INCREMENT_287 288 #define INCREMENT_288 289 #define INCREMENT_289 290 #define INCREMENT_290 291 #define INCREMENT_291 292 #define INCREMENT_292 293 #define INCREMENT_293 294 #define INCREMENT_294 295 #define INCREMENT_295 296 #define INCREMENT_296 297 #define INCREMENT_297 298 #define INCREMENT_298 299 #define INCREMENT_299 300 #define INCREMENT_300 301 #define INCREMENT_301 302 #define INCREMENT_302 303 #define INCREMENT_303 304 #define INCREMENT_304 305 #define INCREMENT_305 306 #define INCREMENT_306 307 #define INCREMENT_307 308 #define INCREMENT_308 309 #define INCREMENT_309 310 #define INCREMENT_310 311 #define INCREMENT_311 312 #define INCREMENT_312 313 #define INCREMENT_313 314 #define INCREMENT_314 315 #define INCREMENT_315 316 #define INCREMENT_316 317 #define INCREMENT_317 318 #define INCREMENT_318 319 #define INCREMENT_319 320 #define INCREMENT_320 321 #define INCREMENT_321 322 #define INCREMENT_322 323 #define INCREMENT_323 324 #define INCREMENT_324 325 #define INCREMENT_325 326 #define INCREMENT_326 327 #define INCREMENT_327 328 #define INCREMENT_328 329 #define INCREMENT_329 330 #define INCREMENT_330 331 #define INCREMENT_331 332 #define INCREMENT_332 333 #define INCREMENT_333 334 #define INCREMENT_334 335 #define INCREMENT_335 336 #define INCREMENT_336 337 #define INCREMENT_337 338 #define INCREMENT_338 339 #define INCREMENT_339 340 #define INCREMENT_340 341 #define INCREMENT_341 342 #define INCREMENT_342 343 #define INCREMENT_343 344 #define INCREMENT_344 345 #define INCREMENT_345 346 #define INCREMENT_346 347 #define INCREMENT_347 348 #define INCREMENT_348 349 #define INCREMENT_349 350 #define INCREMENT_350 351 #define INCREMENT_351 352 #define INCREMENT_352 353 #define INCREMENT_353 354 #define INCREMENT_354 355 #define INCREMENT_355 356 #define INCREMENT_356 357 #define INCREMENT_357 358 #define INCREMENT_358 359 #define INCREMENT_359 360 #define INCREMENT_360 361 #define INCREMENT_361 362 #define INCREMENT_362 363 #define INCREMENT_363 364 #define INCREMENT_364 365 #define INCREMENT_365 366 #define INCREMENT_366 367 #define INCREMENT_367 368 #define INCREMENT_368 369 #define INCREMENT_369 370 #define INCREMENT_370 371 #define INCREMENT_371 372 #define INCREMENT_372 373 #define INCREMENT_373 374 #define INCREMENT_374 375 #define INCREMENT_375 376 #define INCREMENT_376 377 #define INCREMENT_377 378 #define INCREMENT_378 379 #define INCREMENT_379 380 #define INCREMENT_380 381 #define INCREMENT_381 382 #define INCREMENT_382 383 #define INCREMENT_383 384 #define INCREMENT_384 385 #define INCREMENT_385 386 #define INCREMENT_386 387 #define INCREMENT_387 388 #define INCREMENT_388 389 #define INCREMENT_389 390 #define INCREMENT_390 391 #define INCREMENT_391 392 #define INCREMENT_392 393 #define INCREMENT_393 394 #define INCREMENT_394 395 #define INCREMENT_395 396 #define INCREMENT_396 397 #define INCREMENT_397 398 #define INCREMENT_398 399 #define INCREMENT_399 400 #define INCREMENT_400 401 #define INCREMENT_401 402 #define INCREMENT_402 403 #define INCREMENT_403 404 #define INCREMENT_404 405 #define INCREMENT_405 406 #define INCREMENT_406 407 #define INCREMENT_407 408 #define INCREMENT_408 409 #define INCREMENT_409 410 #define INCREMENT_410 411 #define INCREMENT_411 412 #define INCREMENT_412 413 #define INCREMENT_413 414 #define INCREMENT_414 415 #define INCREMENT_415 416 #define INCREMENT_416 417 #define INCREMENT_417 418 #define INCREMENT_418 419 #define INCREMENT_419 420 #define INCREMENT_420 421 #define INCREMENT_421 422 #define INCREMENT_422 423 #define INCREMENT_423 424 #define INCREMENT_424 425 #define INCREMENT_425 426 #define INCREMENT_426 427 #define INCREMENT_427 428 #define INCREMENT_428 429 #define INCREMENT_429 430 #define INCREMENT_430 431 #define INCREMENT_431 432 #define INCREMENT_432 433 #define INCREMENT_433 434 #define INCREMENT_434 435 #define INCREMENT_435 436 #define INCREMENT_436 437 #define INCREMENT_437 438 #define INCREMENT_438 439 #define INCREMENT_439 440 #define INCREMENT_440 441 #define INCREMENT_441 442 #define INCREMENT_442 443 #define INCREMENT_443 444 #define INCREMENT_444 445 #define INCREMENT_445 446 #define INCREMENT_446 447 #define INCREMENT_447 448 #define INCREMENT_448 449 #define INCREMENT_449 450 #define INCREMENT_450 451 #define INCREMENT_451 452 #define INCREMENT_452 453 #define INCREMENT_453 454 #define INCREMENT_454 455 #define INCREMENT_455 456 #define INCREMENT_456 457 #define INCREMENT_457 458 #define INCREMENT_458 459 #define INCREMENT_459 460 #define INCREMENT_460 461 #define INCREMENT_461 462 #define INCREMENT_462 463 #define INCREMENT_463 464 #define INCREMENT_464 465 #define INCREMENT_465 466 #define INCREMENT_466 467 #define INCREMENT_467 468 #define INCREMENT_468 469 #define INCREMENT_469 470 #define INCREMENT_470 471 #define INCREMENT_471 472 #define INCREMENT_472 473 #define INCREMENT_473 474 #define INCREMENT_474 475 #define INCREMENT_475 476 #define INCREMENT_476 477 #define INCREMENT_477 478 #define INCREMENT_478 479 #define INCREMENT_479 480 #define INCREMENT_480 481 #define INCREMENT_481 482 #define INCREMENT_482 483 #define INCREMENT_483 484 #define INCREMENT_484 485 #define INCREMENT_485 486 #define INCREMENT_486 487 #define INCREMENT_487 488 #define INCREMENT_488 489 #define INCREMENT_489 490 #define INCREMENT_490 491 #define INCREMENT_491 492 #define INCREMENT_492 493 #define INCREMENT_493 494 #define INCREMENT_494 495 #define INCREMENT_495 496 #define INCREMENT_496 497 #define INCREMENT_497 498 #define INCREMENT_498 499 #define INCREMENT_499 500 #define INCREMENT_500 501 #define INCREMENT_501 502 #define INCREMENT_502 503 #define INCREMENT_503 504 #define INCREMENT_504 505 #define INCREMENT_505 506 #define INCREMENT_506 507 #define INCREMENT_507 508 #define INCREMENT_508 509 #define INCREMENT_509 510 #define INCREMENT_510 511 #define INCREMENT_511 512 #define INCREMENT_512 513 #define INCREMENT_513 514 #define INCREMENT_514 515 #define INCREMENT_515 516 #define INCREMENT_516 517 #define INCREMENT_517 518 #define INCREMENT_518 519 #define INCREMENT_519 520 #define INCREMENT_520 521 #define INCREMENT_521 522 #define INCREMENT_522 523 #define INCREMENT_523 524 #define INCREMENT_524 525 #define INCREMENT_525 526 #define INCREMENT_526 527 #define INCREMENT_527 528 #define INCREMENT_528 529 #define INCREMENT_529 530 #define INCREMENT_530 531 #define INCREMENT_531 532 #define INCREMENT_532 533 #define INCREMENT_533 534 #define INCREMENT_534 535 #define INCREMENT_535 536 #define INCREMENT_536 537 #define INCREMENT_537 538 #define INCREMENT_538 539 #define INCREMENT_539 540 #define INCREMENT_540 541 #define INCREMENT_541 542 #define INCREMENT_542 543 #define INCREMENT_543 544 #define INCREMENT_544 545 #define INCREMENT_545 546 #define INCREMENT_546 547 #define INCREMENT_547 548 #define INCREMENT_548 549 #define INCREMENT_549 550 #define INCREMENT_550 551 #define INCREMENT_551 552 #define INCREMENT_552 553 #define INCREMENT_553 554 #define INCREMENT_554 555 #define INCREMENT_555 556 #define INCREMENT_556 557 #define INCREMENT_557 558 #define INCREMENT_558 559 #define INCREMENT_559 560 #define INCREMENT_560 561 #define INCREMENT_561 562 #define INCREMENT_562 563 #define INCREMENT_563 564 #define INCREMENT_564 565 #define INCREMENT_565 566 #define INCREMENT_566 567 #define INCREMENT_567 568 #define INCREMENT_568 569 #define INCREMENT_569 570 #define INCREMENT_570 571 #define INCREMENT_571 572 #define INCREMENT_572 573 #define INCREMENT_573 574 #define INCREMENT_574 575 #define INCREMENT_575 576 #define INCREMENT_576 577 #define INCREMENT_577 578 #define INCREMENT_578 579 #define INCREMENT_579 580 #define INCREMENT_580 581 #define INCREMENT_581 582 #define INCREMENT_582 583 #define INCREMENT_583 584 #define INCREMENT_584 585 #define INCREMENT_585 586 #define INCREMENT_586 587 #define INCREMENT_587 588 #define INCREMENT_588 589 #define INCREMENT_589 590 #define INCREMENT_590 591 #define INCREMENT_591 592 #define INCREMENT_592 593 #define INCREMENT_593 594 #define INCREMENT_594 595 #define INCREMENT_595 596 #define INCREMENT_596 597 #define INCREMENT_597 598 #define INCREMENT_598 599 #define INCREMENT_599 600 #define INCREMENT_600 601 #define INCREMENT_601 602 #define INCREMENT_602 603 #define INCREMENT_603 604 #define INCREMENT_604 605 #define INCREMENT_605 606 #define INCREMENT_606 607 #define INCREMENT_607 608 #define INCREMENT_608 609 #define INCREMENT_609 610 #define INCREMENT_610 611 #define INCREMENT_611 612 #define INCREMENT_612 613 #define INCREMENT_613 614 #define INCREMENT_614 615 #define INCREMENT_615 616 #define INCREMENT_616 617 #define INCREMENT_617 618 #define INCREMENT_618 619 #define INCREMENT_619 620 #define INCREMENT_620 621 #define INCREMENT_621 622 #define INCREMENT_622 623 #define INCREMENT_623 624 #define INCREMENT_624 625 #define INCREMENT_625 626 #define INCREMENT_626 627 #define INCREMENT_627 628 #define INCREMENT_628 629 #define INCREMENT_629 630 #define INCREMENT_630 631 #define INCREMENT_631 632 #define INCREMENT_632 633 #define INCREMENT_633 634 #define INCREMENT_634 635 #define INCREMENT_635 636 #define INCREMENT_636 637 #define INCREMENT_637 638 #define INCREMENT_638 639 #define INCREMENT_639 640 #define INCREMENT_640 641 #define INCREMENT_641 642 #define INCREMENT_642 643 #define INCREMENT_643 644 #define INCREMENT_644 645 #define INCREMENT_645 646 #define INCREMENT_646 647 #define INCREMENT_647 648 #define INCREMENT_648 649 #define INCREMENT_649 650 #define INCREMENT_650 651 #define INCREMENT_651 652 #define INCREMENT_652 653 #define INCREMENT_653 654 #define INCREMENT_654 655 #define INCREMENT_655 656 #define INCREMENT_656 657 #define INCREMENT_657 658 #define INCREMENT_658 659 #define INCREMENT_659 660 #define INCREMENT_660 661 #define INCREMENT_661 662 #define INCREMENT_662 663 #define INCREMENT_663 664 #define INCREMENT_664 665 #define INCREMENT_665 666 #define INCREMENT_666 667 #define INCREMENT_667 668 #define INCREMENT_668 669 #define INCREMENT_669 670 #define INCREMENT_670 671 #define INCREMENT_671 672 #define INCREMENT_672 673 #define INCREMENT_673 674 #define INCREMENT_674 675 #define INCREMENT_675 676 #define INCREMENT_676 677 #define INCREMENT_677 678 #define INCREMENT_678 679 #define INCREMENT_679 680 #define INCREMENT_680 681 #define INCREMENT_681 682 #define INCREMENT_682 683 #define INCREMENT_683 684 #define INCREMENT_684 685 #define INCREMENT_685 686 #define INCREMENT_686 687 #define INCREMENT_687 688 #define INCREMENT_688 689 #define INCREMENT_689 690 #define INCREMENT_690 691 #define INCREMENT_691 692 #define INCREMENT_692 693 #define INCREMENT_693 694 #define INCREMENT_694 695 #define INCREMENT_695 696 #define INCREMENT_696 697 #define INCREMENT_697 698 #define INCREMENT_698 699 #define INCREMENT_699 700 #define INCREMENT_700 701 #define INCREMENT_701 702 #define INCREMENT_702 703 #define INCREMENT_703 704 #define INCREMENT_704 705 #define INCREMENT_705 706 #define INCREMENT_706 707 #define INCREMENT_707 708 #define INCREMENT_708 709 #define INCREMENT_709 710 #define INCREMENT_710 711 #define INCREMENT_711 712 #define INCREMENT_712 713 #define INCREMENT_713 714 #define INCREMENT_714 715 #define INCREMENT_715 716 #define INCREMENT_716 717 #define INCREMENT_717 718 #define INCREMENT_718 719 #define INCREMENT_719 720 #define INCREMENT_720 721 #define INCREMENT_721 722 #define INCREMENT_722 723 #define INCREMENT_723 724 #define INCREMENT_724 725 #define INCREMENT_725 726 #define INCREMENT_726 727 #define INCREMENT_727 728 #define INCREMENT_728 729 #define INCREMENT_729 730 #define INCREMENT_730 731 #define INCREMENT_731 732 #define INCREMENT_732 733 #define INCREMENT_733 734 #define INCREMENT_734 735 #define INCREMENT_735 736 #define INCREMENT_736 737 #define INCREMENT_737 738 #define INCREMENT_738 739 #define INCREMENT_739 740 #define INCREMENT_740 741 #define INCREMENT_741 742 #define INCREMENT_742 743 #define INCREMENT_743 744 #define INCREMENT_744 745 #define INCREMENT_745 746 #define INCREMENT_746 747 #define INCREMENT_747 748 #define INCREMENT_748 749 #define INCREMENT_749 750 #define INCREMENT_750 751 #define INCREMENT_751 752 #define INCREMENT_752 753 #define INCREMENT_753 754 #define INCREMENT_754 755 #define INCREMENT_755 756 #define INCREMENT_756 757 #define INCREMENT_757 758 #define INCREMENT_758 759 #define INCREMENT_759 760 #define INCREMENT_760 761 #define INCREMENT_761 762 #define INCREMENT_762 763 #define INCREMENT_763 764 #define INCREMENT_764 765 #define INCREMENT_765 766 #define INCREMENT_766 767 #define INCREMENT_767 768 #define INCREMENT_768 769 #define INCREMENT_769 770 #define INCREMENT_770 771 #define INCREMENT_771 772 #define INCREMENT_772 773 #define INCREMENT_773 774 #define INCREMENT_774 775 #define INCREMENT_775 776 #define INCREMENT_776 777 #define INCREMENT_777 778 #define INCREMENT_778 779 #define INCREMENT_779 780 #define INCREMENT_780 781 #define INCREMENT_781 782 #define INCREMENT_782 783 #define INCREMENT_783 784 #define INCREMENT_784 785 #define INCREMENT_785 786 #define INCREMENT_786 787 #define INCREMENT_787 788 #define INCREMENT_788 789 #define INCREMENT_789 790 #define INCREMENT_790 791 #define INCREMENT_791 792 #define INCREMENT_792 793 #define INCREMENT_793 794 #define INCREMENT_794 795 #define INCREMENT_795 796 #define INCREMENT_796 797 #define INCREMENT_797 798 #define INCREMENT_798 799 #define INCREMENT_799 800 #define INCREMENT_800 801 #define INCREMENT_801 802 #define INCREMENT_802 803 #define INCREMENT_803 804 #define INCREMENT_804 805 #define INCREMENT_805 806 #define INCREMENT_806 807 #define INCREMENT_807 808 #define INCREMENT_808 809 #define INCREMENT_809 810 #define INCREMENT_810 811 #define INCREMENT_811 812 #define INCREMENT_812 813 #define INCREMENT_813 814 #define INCREMENT_814 815 #define INCREMENT_815 816 #define INCREMENT_816 817 #define INCREMENT_817 818 #define INCREMENT_818 819 #define INCREMENT_819 820 #define INCREMENT_820 821 #define INCREMENT_821 822 #define INCREMENT_822 823 #define INCREMENT_823 824 #define INCREMENT_824 825 #define INCREMENT_825 826 #define INCREMENT_826 827 #define INCREMENT_827 828 #define INCREMENT_828 829 #define INCREMENT_829 830 #define INCREMENT_830 831 #define INCREMENT_831 832 #define INCREMENT_832 833 #define INCREMENT_833 834 #define INCREMENT_834 835 #define INCREMENT_835 836 #define INCREMENT_836 837 #define INCREMENT_837 838 #define INCREMENT_838 839 #define INCREMENT_839 840 #define INCREMENT_840 841 #define INCREMENT_841 842 #define INCREMENT_842 843 #define INCREMENT_843 844 #define INCREMENT_844 845 #define INCREMENT_845 846 #define INCREMENT_846 847 #define INCREMENT_847 848 #define INCREMENT_848 849 #define INCREMENT_849 850 #define INCREMENT_850 851 #define INCREMENT_851 852 #define INCREMENT_852 853 #define INCREMENT_853 854 #define INCREMENT_854 855 #define INCREMENT_855 856 #define INCREMENT_856 857 #define INCREMENT_857 858 #define INCREMENT_858 859 #define INCREMENT_859 860 #define INCREMENT_860 861 #define INCREMENT_861 862 #define INCREMENT_862 863 #define INCREMENT_863 864 #define INCREMENT_864 865 #define INCREMENT_865 866 #define INCREMENT_866 867 #define INCREMENT_867 868 #define INCREMENT_868 869 #define INCREMENT_869 870 #define INCREMENT_870 871 #define INCREMENT_871 872 #define INCREMENT_872 873 #define INCREMENT_873 874 #define INCREMENT_874 875 #define INCREMENT_875 876 #define INCREMENT_876 877 #define INCREMENT_877 878 #define INCREMENT_878 879 #define INCREMENT_879 880 #define INCREMENT_880 881 #define INCREMENT_881 882 #define INCREMENT_882 883 #define INCREMENT_883 884 #define INCREMENT_884 885 #define INCREMENT_885 886 #define INCREMENT_886 887 #define INCREMENT_887 888 #define INCREMENT_888 889 #define INCREMENT_889 890 #define INCREMENT_890 891 #define INCREMENT_891 892 #define INCREMENT_892 893 #define INCREMENT_893 894 #define INCREMENT_894 895 #define INCREMENT_895 896 #define INCREMENT_896 897 #define INCREMENT_897 898 #define INCREMENT_898 899 #define INCREMENT_899 900 #define INCREMENT_900 901 #define INCREMENT_901 902 #define INCREMENT_902 903 #define INCREMENT_903 904 #define INCREMENT_904 905 #define INCREMENT_905 906 #define INCREMENT_906 907 #define INCREMENT_907 908 #define INCREMENT_908 909 #define INCREMENT_909 910 #define INCREMENT_910 911 #define INCREMENT_911 912 #define INCREMENT_912 913 #define INCREMENT_913 914 #define INCREMENT_914 915 #define INCREMENT_915 916 #define INCREMENT_916 917 #define INCREMENT_917 918 #define INCREMENT_918 919 #define INCREMENT_919 920 #define INCREMENT_920 921 #define INCREMENT_921 922 #define INCREMENT_922 923 #define INCREMENT_923 924 #define INCREMENT_924 925 #define INCREMENT_925 926 #define INCREMENT_926 927 #define INCREMENT_927 928 #define INCREMENT_928 929 #define INCREMENT_929 930 #define INCREMENT_930 931 #define INCREMENT_931 932 #define INCREMENT_932 933 #define INCREMENT_933 934 #define INCREMENT_934 935 #define INCREMENT_935 936 #define INCREMENT_936 937 #define INCREMENT_937 938 #define INCREMENT_938 939 #define INCREMENT_939 940 #define INCREMENT_940 941 #define INCREMENT_941 942 #define INCREMENT_942 943 #define INCREMENT_943 944 #define INCREMENT_944 945 #define INCREMENT_945 946 #define INCREMENT_946 947 #define INCREMENT_947 948 #define INCREMENT_948 949 #define INCREMENT_949 950 #define INCREMENT_950 951 #define INCREMENT_951 952 #define INCREMENT_952 953 #define INCREMENT_953 954 #define INCREMENT_954 955 #define INCREMENT_955 956 #define INCREMENT_956 957 #define INCREMENT_957 958 #define INCREMENT_958 959 #define INCREMENT_959 960 #define INCREMENT_960 961 #define INCREMENT_961 962 #define INCREMENT_962 963 #define INCREMENT_963 964 #define INCREMENT_964 965 #define INCREMENT_965 966 #define INCREMENT_966 967 #define INCREMENT_967 968 #define INCREMENT_968 969 #define INCREMENT_969 970 #define INCREMENT_970 971 #define INCREMENT_971 972 #define INCREMENT_972 973 #define INCREMENT_973 974 #define INCREMENT_974 975 #define INCREMENT_975 976 #define INCREMENT_976 977 #define INCREMENT_977 978 #define INCREMENT_978 979 #define INCREMENT_979 980 #define INCREMENT_980 981 #define INCREMENT_981 982 #define INCREMENT_982 983 #define INCREMENT_983 984 #define INCREMENT_984 985 #define INCREMENT_985 986 #define INCREMENT_986 987 #define INCREMENT_987 988 #define INCREMENT_988 989 #define INCREMENT_989 990 #define INCREMENT_990 991 #define INCREMENT_991 992 #define INCREMENT_992 993 #define INCREMENT_993 994 #define INCREMENT_994 995 #define INCREMENT_995 996 #define INCREMENT_996 997 #define INCREMENT_997 998 #define INCREMENT_998 999 #define INCREMENT_999 1000 #define INCREMENT_1000 1001 #define INCREMENT_1001 1002 #define INCREMENT_1002 1003 #define INCREMENT_1003 1004 #define INCREMENT_1004 1005 #define INCREMENT_1005 1006 #define INCREMENT_1006 1007 #define INCREMENT_1007 1008 #define INCREMENT_1008 1009 #define INCREMENT_1009 1010 #define INCREMENT_1010 1011 #define INCREMENT_1011 1012 #define INCREMENT_1012 1013 #define INCREMENT_1013 1014 #define INCREMENT_1014 1015 #define INCREMENT_1015 1016 #define INCREMENT_1016 1017 #define INCREMENT_1017 1018 #define INCREMENT_1018 1019 #define INCREMENT_1019 1020 #define INCREMENT_1020 1021 #define INCREMENT_1021 1022 #define INCREMENT_1022 1023 #define INCREMENT_1023 1024 #define DECREMENT_1 0 #define DECREMENT_2 1 #define DECREMENT_3 2 #define DECREMENT_4 3 #define DECREMENT_5 4 #define DECREMENT_6 5 #define DECREMENT_7 6 #define DECREMENT_8 7 #define DECREMENT_9 8 #define DECREMENT_10 9 #define DECREMENT_11 10 #define DECREMENT_12 11 #define DECREMENT_13 12 #define DECREMENT_14 13 #define DECREMENT_15 14 #define DECREMENT_16 15 #define DECREMENT_17 16 #define DECREMENT_18 17 #define DECREMENT_19 18 #define DECREMENT_20 19 #define DECREMENT_21 20 #define DECREMENT_22 21 #define DECREMENT_23 22 #define DECREMENT_24 23 #define DECREMENT_25 24 #define DECREMENT_26 25 #define DECREMENT_27 26 #define DECREMENT_28 27 #define DECREMENT_29 28 #define DECREMENT_30 29 #define DECREMENT_31 30 #define DECREMENT_32 31 #define DECREMENT_33 32 #define DECREMENT_34 33 #define DECREMENT_35 34 #define DECREMENT_36 35 #define DECREMENT_37 36 #define DECREMENT_38 37 #define DECREMENT_39 38 #define DECREMENT_40 39 #define DECREMENT_41 40 #define DECREMENT_42 41 #define DECREMENT_43 42 #define DECREMENT_44 43 #define DECREMENT_45 44 #define DECREMENT_46 45 #define DECREMENT_47 46 #define DECREMENT_48 47 #define DECREMENT_49 48 #define DECREMENT_50 49 #define DECREMENT_51 50 #define DECREMENT_52 51 #define DECREMENT_53 52 #define DECREMENT_54 53 #define DECREMENT_55 54 #define DECREMENT_56 55 #define DECREMENT_57 56 #define DECREMENT_58 57 #define DECREMENT_59 58 #define DECREMENT_60 59 #define DECREMENT_61 60 #define DECREMENT_62 61 #define DECREMENT_63 62 #define DECREMENT_64 63 #define DECREMENT_65 64 #define DECREMENT_66 65 #define DECREMENT_67 66 #define DECREMENT_68 67 #define DECREMENT_69 68 #define DECREMENT_70 69 #define DECREMENT_71 70 #define DECREMENT_72 71 #define DECREMENT_73 72 #define DECREMENT_74 73 #define DECREMENT_75 74 #define DECREMENT_76 75 #define DECREMENT_77 76 #define DECREMENT_78 77 #define DECREMENT_79 78 #define DECREMENT_80 79 #define DECREMENT_81 80 #define DECREMENT_82 81 #define DECREMENT_83 82 #define DECREMENT_84 83 #define DECREMENT_85 84 #define DECREMENT_86 85 #define DECREMENT_87 86 #define DECREMENT_88 87 #define DECREMENT_89 88 #define DECREMENT_90 89 #define DECREMENT_91 90 #define DECREMENT_92 91 #define DECREMENT_93 92 #define DECREMENT_94 93 #define DECREMENT_95 94 #define DECREMENT_96 95 #define DECREMENT_97 96 #define DECREMENT_98 97 #define DECREMENT_99 98 #define DECREMENT_100 99 #define DECREMENT_101 100 #define DECREMENT_102 101 #define DECREMENT_103 102 #define DECREMENT_104 103 #define DECREMENT_105 104 #define DECREMENT_106 105 #define DECREMENT_107 106 #define DECREMENT_108 107 #define DECREMENT_109 108 #define DECREMENT_110 109 #define DECREMENT_111 110 #define DECREMENT_112 111 #define DECREMENT_113 112 #define DECREMENT_114 113 #define DECREMENT_115 114 #define DECREMENT_116 115 #define DECREMENT_117 116 #define DECREMENT_118 117 #define DECREMENT_119 118 #define DECREMENT_120 119 #define DECREMENT_121 120 #define DECREMENT_122 121 #define DECREMENT_123 122 #define DECREMENT_124 123 #define DECREMENT_125 124 #define DECREMENT_126 125 #define DECREMENT_127 126 #define DECREMENT_128 127 #define DECREMENT_129 128 #define DECREMENT_130 129 #define DECREMENT_131 130 #define DECREMENT_132 131 #define DECREMENT_133 132 #define DECREMENT_134 133 #define DECREMENT_135 134 #define DECREMENT_136 135 #define DECREMENT_137 136 #define DECREMENT_138 137 #define DECREMENT_139 138 #define DECREMENT_140 139 #define DECREMENT_141 140 #define DECREMENT_142 141 #define DECREMENT_143 142 #define DECREMENT_144 143 #define DECREMENT_145 144 #define DECREMENT_146 145 #define DECREMENT_147 146 #define DECREMENT_148 147 #define DECREMENT_149 148 #define DECREMENT_150 149 #define DECREMENT_151 150 #define DECREMENT_152 151 #define DECREMENT_153 152 #define DECREMENT_154 153 #define DECREMENT_155 154 #define DECREMENT_156 155 #define DECREMENT_157 156 #define DECREMENT_158 157 #define DECREMENT_159 158 #define DECREMENT_160 159 #define DECREMENT_161 160 #define DECREMENT_162 161 #define DECREMENT_163 162 #define DECREMENT_164 163 #define DECREMENT_165 164 #define DECREMENT_166 165 #define DECREMENT_167 166 #define DECREMENT_168 167 #define DECREMENT_169 168 #define DECREMENT_170 169 #define DECREMENT_171 170 #define DECREMENT_172 171 #define DECREMENT_173 172 #define DECREMENT_174 173 #define DECREMENT_175 174 #define DECREMENT_176 175 #define DECREMENT_177 176 #define DECREMENT_178 177 #define DECREMENT_179 178 #define DECREMENT_180 179 #define DECREMENT_181 180 #define DECREMENT_182 181 #define DECREMENT_183 182 #define DECREMENT_184 183 #define DECREMENT_185 184 #define DECREMENT_186 185 #define DECREMENT_187 186 #define DECREMENT_188 187 #define DECREMENT_189 188 #define DECREMENT_190 189 #define DECREMENT_191 190 #define DECREMENT_192 191 #define DECREMENT_193 192 #define DECREMENT_194 193 #define DECREMENT_195 194 #define DECREMENT_196 195 #define DECREMENT_197 196 #define DECREMENT_198 197 #define DECREMENT_199 198 #define DECREMENT_200 199 #define DECREMENT_201 200 #define DECREMENT_202 201 #define DECREMENT_203 202 #define DECREMENT_204 203 #define DECREMENT_205 204 #define DECREMENT_206 205 #define DECREMENT_207 206 #define DECREMENT_208 207 #define DECREMENT_209 208 #define DECREMENT_210 209 #define DECREMENT_211 210 #define DECREMENT_212 211 #define DECREMENT_213 212 #define DECREMENT_214 213 #define DECREMENT_215 214 #define DECREMENT_216 215 #define DECREMENT_217 216 #define DECREMENT_218 217 #define DECREMENT_219 218 #define DECREMENT_220 219 #define DECREMENT_221 220 #define DECREMENT_222 221 #define DECREMENT_223 222 #define DECREMENT_224 223 #define DECREMENT_225 224 #define DECREMENT_226 225 #define DECREMENT_227 226 #define DECREMENT_228 227 #define DECREMENT_229 228 #define DECREMENT_230 229 #define DECREMENT_231 230 #define DECREMENT_232 231 #define DECREMENT_233 232 #define DECREMENT_234 233 #define DECREMENT_235 234 #define DECREMENT_236 235 #define DECREMENT_237 236 #define DECREMENT_238 237 #define DECREMENT_239 238 #define DECREMENT_240 239 #define DECREMENT_241 240 #define DECREMENT_242 241 #define DECREMENT_243 242 #define DECREMENT_244 243 #define DECREMENT_245 244 #define DECREMENT_246 245 #define DECREMENT_247 246 #define DECREMENT_248 247 #define DECREMENT_249 248 #define DECREMENT_250 249 #define DECREMENT_251 250 #define DECREMENT_252 251 #define DECREMENT_253 252 #define DECREMENT_254 253 #define DECREMENT_255 254 #define DECREMENT_256 255 #define DECREMENT_257 256 #define DECREMENT_258 257 #define DECREMENT_259 258 #define DECREMENT_260 259 #define DECREMENT_261 260 #define DECREMENT_262 261 #define DECREMENT_263 262 #define DECREMENT_264 263 #define DECREMENT_265 264 #define DECREMENT_266 265 #define DECREMENT_267 266 #define DECREMENT_268 267 #define DECREMENT_269 268 #define DECREMENT_270 269 #define DECREMENT_271 270 #define DECREMENT_272 271 #define DECREMENT_273 272 #define DECREMENT_274 273 #define DECREMENT_275 274 #define DECREMENT_276 275 #define DECREMENT_277 276 #define DECREMENT_278 277 #define DECREMENT_279 278 #define DECREMENT_280 279 #define DECREMENT_281 280 #define DECREMENT_282 281 #define DECREMENT_283 282 #define DECREMENT_284 283 #define DECREMENT_285 284 #define DECREMENT_286 285 #define DECREMENT_287 286 #define DECREMENT_288 287 #define DECREMENT_289 288 #define DECREMENT_290 289 #define DECREMENT_291 290 #define DECREMENT_292 291 #define DECREMENT_293 292 #define DECREMENT_294 293 #define DECREMENT_295 294 #define DECREMENT_296 295 #define DECREMENT_297 296 #define DECREMENT_298 297 #define DECREMENT_299 298 #define DECREMENT_300 299 #define DECREMENT_301 300 #define DECREMENT_302 301 #define DECREMENT_303 302 #define DECREMENT_304 303 #define DECREMENT_305 304 #define DECREMENT_306 305 #define DECREMENT_307 306 #define DECREMENT_308 307 #define DECREMENT_309 308 #define DECREMENT_310 309 #define DECREMENT_311 310 #define DECREMENT_312 311 #define DECREMENT_313 312 #define DECREMENT_314 313 #define DECREMENT_315 314 #define DECREMENT_316 315 #define DECREMENT_317 316 #define DECREMENT_318 317 #define DECREMENT_319 318 #define DECREMENT_320 319 #define DECREMENT_321 320 #define DECREMENT_322 321 #define DECREMENT_323 322 #define DECREMENT_324 323 #define DECREMENT_325 324 #define DECREMENT_326 325 #define DECREMENT_327 326 #define DECREMENT_328 327 #define DECREMENT_329 328 #define DECREMENT_330 329 #define DECREMENT_331 330 #define DECREMENT_332 331 #define DECREMENT_333 332 #define DECREMENT_334 333 #define DECREMENT_335 334 #define DECREMENT_336 335 #define DECREMENT_337 336 #define DECREMENT_338 337 #define DECREMENT_339 338 #define DECREMENT_340 339 #define DECREMENT_341 340 #define DECREMENT_342 341 #define DECREMENT_343 342 #define DECREMENT_344 343 #define DECREMENT_345 344 #define DECREMENT_346 345 #define DECREMENT_347 346 #define DECREMENT_348 347 #define DECREMENT_349 348 #define DECREMENT_350 349 #define DECREMENT_351 350 #define DECREMENT_352 351 #define DECREMENT_353 352 #define DECREMENT_354 353 #define DECREMENT_355 354 #define DECREMENT_356 355 #define DECREMENT_357 356 #define DECREMENT_358 357 #define DECREMENT_359 358 #define DECREMENT_360 359 #define DECREMENT_361 360 #define DECREMENT_362 361 #define DECREMENT_363 362 #define DECREMENT_364 363 #define DECREMENT_365 364 #define DECREMENT_366 365 #define DECREMENT_367 366 #define DECREMENT_368 367 #define DECREMENT_369 368 #define DECREMENT_370 369 #define DECREMENT_371 370 #define DECREMENT_372 371 #define DECREMENT_373 372 #define DECREMENT_374 373 #define DECREMENT_375 374 #define DECREMENT_376 375 #define DECREMENT_377 376 #define DECREMENT_378 377 #define DECREMENT_379 378 #define DECREMENT_380 379 #define DECREMENT_381 380 #define DECREMENT_382 381 #define DECREMENT_383 382 #define DECREMENT_384 383 #define DECREMENT_385 384 #define DECREMENT_386 385 #define DECREMENT_387 386 #define DECREMENT_388 387 #define DECREMENT_389 388 #define DECREMENT_390 389 #define DECREMENT_391 390 #define DECREMENT_392 391 #define DECREMENT_393 392 #define DECREMENT_394 393 #define DECREMENT_395 394 #define DECREMENT_396 395 #define DECREMENT_397 396 #define DECREMENT_398 397 #define DECREMENT_399 398 #define DECREMENT_400 399 #define DECREMENT_401 400 #define DECREMENT_402 401 #define DECREMENT_403 402 #define DECREMENT_404 403 #define DECREMENT_405 404 #define DECREMENT_406 405 #define DECREMENT_407 406 #define DECREMENT_408 407 #define DECREMENT_409 408 #define DECREMENT_410 409 #define DECREMENT_411 410 #define DECREMENT_412 411 #define DECREMENT_413 412 #define DECREMENT_414 413 #define DECREMENT_415 414 #define DECREMENT_416 415 #define DECREMENT_417 416 #define DECREMENT_418 417 #define DECREMENT_419 418 #define DECREMENT_420 419 #define DECREMENT_421 420 #define DECREMENT_422 421 #define DECREMENT_423 422 #define DECREMENT_424 423 #define DECREMENT_425 424 #define DECREMENT_426 425 #define DECREMENT_427 426 #define DECREMENT_428 427 #define DECREMENT_429 428 #define DECREMENT_430 429 #define DECREMENT_431 430 #define DECREMENT_432 431 #define DECREMENT_433 432 #define DECREMENT_434 433 #define DECREMENT_435 434 #define DECREMENT_436 435 #define DECREMENT_437 436 #define DECREMENT_438 437 #define DECREMENT_439 438 #define DECREMENT_440 439 #define DECREMENT_441 440 #define DECREMENT_442 441 #define DECREMENT_443 442 #define DECREMENT_444 443 #define DECREMENT_445 444 #define DECREMENT_446 445 #define DECREMENT_447 446 #define DECREMENT_448 447 #define DECREMENT_449 448 #define DECREMENT_450 449 #define DECREMENT_451 450 #define DECREMENT_452 451 #define DECREMENT_453 452 #define DECREMENT_454 453 #define DECREMENT_455 454 #define DECREMENT_456 455 #define DECREMENT_457 456 #define DECREMENT_458 457 #define DECREMENT_459 458 #define DECREMENT_460 459 #define DECREMENT_461 460 #define DECREMENT_462 461 #define DECREMENT_463 462 #define DECREMENT_464 463 #define DECREMENT_465 464 #define DECREMENT_466 465 #define DECREMENT_467 466 #define DECREMENT_468 467 #define DECREMENT_469 468 #define DECREMENT_470 469 #define DECREMENT_471 470 #define DECREMENT_472 471 #define DECREMENT_473 472 #define DECREMENT_474 473 #define DECREMENT_475 474 #define DECREMENT_476 475 #define DECREMENT_477 476 #define DECREMENT_478 477 #define DECREMENT_479 478 #define DECREMENT_480 479 #define DECREMENT_481 480 #define DECREMENT_482 481 #define DECREMENT_483 482 #define DECREMENT_484 483 #define DECREMENT_485 484 #define DECREMENT_486 485 #define DECREMENT_487 486 #define DECREMENT_488 487 #define DECREMENT_489 488 #define DECREMENT_490 489 #define DECREMENT_491 490 #define DECREMENT_492 491 #define DECREMENT_493 492 #define DECREMENT_494 493 #define DECREMENT_495 494 #define DECREMENT_496 495 #define DECREMENT_497 496 #define DECREMENT_498 497 #define DECREMENT_499 498 #define DECREMENT_500 499 #define DECREMENT_501 500 #define DECREMENT_502 501 #define DECREMENT_503 502 #define DECREMENT_504 503 #define DECREMENT_505 504 #define DECREMENT_506 505 #define DECREMENT_507 506 #define DECREMENT_508 507 #define DECREMENT_509 508 #define DECREMENT_510 509 #define DECREMENT_511 510 #define DECREMENT_512 511 #define DECREMENT_513 512 #define DECREMENT_514 513 #define DECREMENT_515 514 #define DECREMENT_516 515 #define DECREMENT_517 516 #define DECREMENT_518 517 #define DECREMENT_519 518 #define DECREMENT_520 519 #define DECREMENT_521 520 #define DECREMENT_522 521 #define DECREMENT_523 522 #define DECREMENT_524 523 #define DECREMENT_525 524 #define DECREMENT_526 525 #define DECREMENT_527 526 #define DECREMENT_528 527 #define DECREMENT_529 528 #define DECREMENT_530 529 #define DECREMENT_531 530 #define DECREMENT_532 531 #define DECREMENT_533 532 #define DECREMENT_534 533 #define DECREMENT_535 534 #define DECREMENT_536 535 #define DECREMENT_537 536 #define DECREMENT_538 537 #define DECREMENT_539 538 #define DECREMENT_540 539 #define DECREMENT_541 540 #define DECREMENT_542 541 #define DECREMENT_543 542 #define DECREMENT_544 543 #define DECREMENT_545 544 #define DECREMENT_546 545 #define DECREMENT_547 546 #define DECREMENT_548 547 #define DECREMENT_549 548 #define DECREMENT_550 549 #define DECREMENT_551 550 #define DECREMENT_552 551 #define DECREMENT_553 552 #define DECREMENT_554 553 #define DECREMENT_555 554 #define DECREMENT_556 555 #define DECREMENT_557 556 #define DECREMENT_558 557 #define DECREMENT_559 558 #define DECREMENT_560 559 #define DECREMENT_561 560 #define DECREMENT_562 561 #define DECREMENT_563 562 #define DECREMENT_564 563 #define DECREMENT_565 564 #define DECREMENT_566 565 #define DECREMENT_567 566 #define DECREMENT_568 567 #define DECREMENT_569 568 #define DECREMENT_570 569 #define DECREMENT_571 570 #define DECREMENT_572 571 #define DECREMENT_573 572 #define DECREMENT_574 573 #define DECREMENT_575 574 #define DECREMENT_576 575 #define DECREMENT_577 576 #define DECREMENT_578 577 #define DECREMENT_579 578 #define DECREMENT_580 579 #define DECREMENT_581 580 #define DECREMENT_582 581 #define DECREMENT_583 582 #define DECREMENT_584 583 #define DECREMENT_585 584 #define DECREMENT_586 585 #define DECREMENT_587 586 #define DECREMENT_588 587 #define DECREMENT_589 588 #define DECREMENT_590 589 #define DECREMENT_591 590 #define DECREMENT_592 591 #define DECREMENT_593 592 #define DECREMENT_594 593 #define DECREMENT_595 594 #define DECREMENT_596 595 #define DECREMENT_597 596 #define DECREMENT_598 597 #define DECREMENT_599 598 #define DECREMENT_600 599 #define DECREMENT_601 600 #define DECREMENT_602 601 #define DECREMENT_603 602 #define DECREMENT_604 603 #define DECREMENT_605 604 #define DECREMENT_606 605 #define DECREMENT_607 606 #define DECREMENT_608 607 #define DECREMENT_609 608 #define DECREMENT_610 609 #define DECREMENT_611 610 #define DECREMENT_612 611 #define DECREMENT_613 612 #define DECREMENT_614 613 #define DECREMENT_615 614 #define DECREMENT_616 615 #define DECREMENT_617 616 #define DECREMENT_618 617 #define DECREMENT_619 618 #define DECREMENT_620 619 #define DECREMENT_621 620 #define DECREMENT_622 621 #define DECREMENT_623 622 #define DECREMENT_624 623 #define DECREMENT_625 624 #define DECREMENT_626 625 #define DECREMENT_627 626 #define DECREMENT_628 627 #define DECREMENT_629 628 #define DECREMENT_630 629 #define DECREMENT_631 630 #define DECREMENT_632 631 #define DECREMENT_633 632 #define DECREMENT_634 633 #define DECREMENT_635 634 #define DECREMENT_636 635 #define DECREMENT_637 636 #define DECREMENT_638 637 #define DECREMENT_639 638 #define DECREMENT_640 639 #define DECREMENT_641 640 #define DECREMENT_642 641 #define DECREMENT_643 642 #define DECREMENT_644 643 #define DECREMENT_645 644 #define DECREMENT_646 645 #define DECREMENT_647 646 #define DECREMENT_648 647 #define DECREMENT_649 648 #define DECREMENT_650 649 #define DECREMENT_651 650 #define DECREMENT_652 651 #define DECREMENT_653 652 #define DECREMENT_654 653 #define DECREMENT_655 654 #define DECREMENT_656 655 #define DECREMENT_657 656 #define DECREMENT_658 657 #define DECREMENT_659 658 #define DECREMENT_660 659 #define DECREMENT_661 660 #define DECREMENT_662 661 #define DECREMENT_663 662 #define DECREMENT_664 663 #define DECREMENT_665 664 #define DECREMENT_666 665 #define DECREMENT_667 666 #define DECREMENT_668 667 #define DECREMENT_669 668 #define DECREMENT_670 669 #define DECREMENT_671 670 #define DECREMENT_672 671 #define DECREMENT_673 672 #define DECREMENT_674 673 #define DECREMENT_675 674 #define DECREMENT_676 675 #define DECREMENT_677 676 #define DECREMENT_678 677 #define DECREMENT_679 678 #define DECREMENT_680 679 #define DECREMENT_681 680 #define DECREMENT_682 681 #define DECREMENT_683 682 #define DECREMENT_684 683 #define DECREMENT_685 684 #define DECREMENT_686 685 #define DECREMENT_687 686 #define DECREMENT_688 687 #define DECREMENT_689 688 #define DECREMENT_690 689 #define DECREMENT_691 690 #define DECREMENT_692 691 #define DECREMENT_693 692 #define DECREMENT_694 693 #define DECREMENT_695 694 #define DECREMENT_696 695 #define DECREMENT_697 696 #define DECREMENT_698 697 #define DECREMENT_699 698 #define DECREMENT_700 699 #define DECREMENT_701 700 #define DECREMENT_702 701 #define DECREMENT_703 702 #define DECREMENT_704 703 #define DECREMENT_705 704 #define DECREMENT_706 705 #define DECREMENT_707 706 #define DECREMENT_708 707 #define DECREMENT_709 708 #define DECREMENT_710 709 #define DECREMENT_711 710 #define DECREMENT_712 711 #define DECREMENT_713 712 #define DECREMENT_714 713 #define DECREMENT_715 714 #define DECREMENT_716 715 #define DECREMENT_717 716 #define DECREMENT_718 717 #define DECREMENT_719 718 #define DECREMENT_720 719 #define DECREMENT_721 720 #define DECREMENT_722 721 #define DECREMENT_723 722 #define DECREMENT_724 723 #define DECREMENT_725 724 #define DECREMENT_726 725 #define DECREMENT_727 726 #define DECREMENT_728 727 #define DECREMENT_729 728 #define DECREMENT_730 729 #define DECREMENT_731 730 #define DECREMENT_732 731 #define DECREMENT_733 732 #define DECREMENT_734 733 #define DECREMENT_735 734 #define DECREMENT_736 735 #define DECREMENT_737 736 #define DECREMENT_738 737 #define DECREMENT_739 738 #define DECREMENT_740 739 #define DECREMENT_741 740 #define DECREMENT_742 741 #define DECREMENT_743 742 #define DECREMENT_744 743 #define DECREMENT_745 744 #define DECREMENT_746 745 #define DECREMENT_747 746 #define DECREMENT_748 747 #define DECREMENT_749 748 #define DECREMENT_750 749 #define DECREMENT_751 750 #define DECREMENT_752 751 #define DECREMENT_753 752 #define DECREMENT_754 753 #define DECREMENT_755 754 #define DECREMENT_756 755 #define DECREMENT_757 756 #define DECREMENT_758 757 #define DECREMENT_759 758 #define DECREMENT_760 759 #define DECREMENT_761 760 #define DECREMENT_762 761 #define DECREMENT_763 762 #define DECREMENT_764 763 #define DECREMENT_765 764 #define DECREMENT_766 765 #define DECREMENT_767 766 #define DECREMENT_768 767 #define DECREMENT_769 768 #define DECREMENT_770 769 #define DECREMENT_771 770 #define DECREMENT_772 771 #define DECREMENT_773 772 #define DECREMENT_774 773 #define DECREMENT_775 774 #define DECREMENT_776 775 #define DECREMENT_777 776 #define DECREMENT_778 777 #define DECREMENT_779 778 #define DECREMENT_780 779 #define DECREMENT_781 780 #define DECREMENT_782 781 #define DECREMENT_783 782 #define DECREMENT_784 783 #define DECREMENT_785 784 #define DECREMENT_786 785 #define DECREMENT_787 786 #define DECREMENT_788 787 #define DECREMENT_789 788 #define DECREMENT_790 789 #define DECREMENT_791 790 #define DECREMENT_792 791 #define DECREMENT_793 792 #define DECREMENT_794 793 #define DECREMENT_795 794 #define DECREMENT_796 795 #define DECREMENT_797 796 #define DECREMENT_798 797 #define DECREMENT_799 798 #define DECREMENT_800 799 #define DECREMENT_801 800 #define DECREMENT_802 801 #define DECREMENT_803 802 #define DECREMENT_804 803 #define DECREMENT_805 804 #define DECREMENT_806 805 #define DECREMENT_807 806 #define DECREMENT_808 807 #define DECREMENT_809 808 #define DECREMENT_810 809 #define DECREMENT_811 810 #define DECREMENT_812 811 #define DECREMENT_813 812 #define DECREMENT_814 813 #define DECREMENT_815 814 #define DECREMENT_816 815 #define DECREMENT_817 816 #define DECREMENT_818 817 #define DECREMENT_819 818 #define DECREMENT_820 819 #define DECREMENT_821 820 #define DECREMENT_822 821 #define DECREMENT_823 822 #define DECREMENT_824 823 #define DECREMENT_825 824 #define DECREMENT_826 825 #define DECREMENT_827 826 #define DECREMENT_828 827 #define DECREMENT_829 828 #define DECREMENT_830 829 #define DECREMENT_831 830 #define DECREMENT_832 831 #define DECREMENT_833 832 #define DECREMENT_834 833 #define DECREMENT_835 834 #define DECREMENT_836 835 #define DECREMENT_837 836 #define DECREMENT_838 837 #define DECREMENT_839 838 #define DECREMENT_840 839 #define DECREMENT_841 840 #define DECREMENT_842 841 #define DECREMENT_843 842 #define DECREMENT_844 843 #define DECREMENT_845 844 #define DECREMENT_846 845 #define DECREMENT_847 846 #define DECREMENT_848 847 #define DECREMENT_849 848 #define DECREMENT_850 849 #define DECREMENT_851 850 #define DECREMENT_852 851 #define DECREMENT_853 852 #define DECREMENT_854 853 #define DECREMENT_855 854 #define DECREMENT_856 855 #define DECREMENT_857 856 #define DECREMENT_858 857 #define DECREMENT_859 858 #define DECREMENT_860 859 #define DECREMENT_861 860 #define DECREMENT_862 861 #define DECREMENT_863 862 #define DECREMENT_864 863 #define DECREMENT_865 864 #define DECREMENT_866 865 #define DECREMENT_867 866 #define DECREMENT_868 867 #define DECREMENT_869 868 #define DECREMENT_870 869 #define DECREMENT_871 870 #define DECREMENT_872 871 #define DECREMENT_873 872 #define DECREMENT_874 873 #define DECREMENT_875 874 #define DECREMENT_876 875 #define DECREMENT_877 876 #define DECREMENT_878 877 #define DECREMENT_879 878 #define DECREMENT_880 879 #define DECREMENT_881 880 #define DECREMENT_882 881 #define DECREMENT_883 882 #define DECREMENT_884 883 #define DECREMENT_885 884 #define DECREMENT_886 885 #define DECREMENT_887 886 #define DECREMENT_888 887 #define DECREMENT_889 888 #define DECREMENT_890 889 #define DECREMENT_891 890 #define DECREMENT_892 891 #define DECREMENT_893 892 #define DECREMENT_894 893 #define DECREMENT_895 894 #define DECREMENT_896 895 #define DECREMENT_897 896 #define DECREMENT_898 897 #define DECREMENT_899 898 #define DECREMENT_900 899 #define DECREMENT_901 900 #define DECREMENT_902 901 #define DECREMENT_903 902 #define DECREMENT_904 903 #define DECREMENT_905 904 #define DECREMENT_906 905 #define DECREMENT_907 906 #define DECREMENT_908 907 #define DECREMENT_909 908 #define DECREMENT_910 909 #define DECREMENT_911 910 #define DECREMENT_912 911 #define DECREMENT_913 912 #define DECREMENT_914 913 #define DECREMENT_915 914 #define DECREMENT_916 915 #define DECREMENT_917 916 #define DECREMENT_918 917 #define DECREMENT_919 918 #define DECREMENT_920 919 #define DECREMENT_921 920 #define DECREMENT_922 921 #define DECREMENT_923 922 #define DECREMENT_924 923 #define DECREMENT_925 924 #define DECREMENT_926 925 #define DECREMENT_927 926 #define DECREMENT_928 927 #define DECREMENT_929 928 #define DECREMENT_930 929 #define DECREMENT_931 930 #define DECREMENT_932 931 #define DECREMENT_933 932 #define DECREMENT_934 933 #define DECREMENT_935 934 #define DECREMENT_936 935 #define DECREMENT_937 936 #define DECREMENT_938 937 #define DECREMENT_939 938 #define DECREMENT_940 939 #define DECREMENT_941 940 #define DECREMENT_942 941 #define DECREMENT_943 942 #define DECREMENT_944 943 #define DECREMENT_945 944 #define DECREMENT_946 945 #define DECREMENT_947 946 #define DECREMENT_948 947 #define DECREMENT_949 948 #define DECREMENT_950 949 #define DECREMENT_951 950 #define DECREMENT_952 951 #define DECREMENT_953 952 #define DECREMENT_954 953 #define DECREMENT_955 954 #define DECREMENT_956 955 #define DECREMENT_957 956 #define DECREMENT_958 957 #define DECREMENT_959 958 #define DECREMENT_960 959 #define DECREMENT_961 960 #define DECREMENT_962 961 #define DECREMENT_963 962 #define DECREMENT_964 963 #define DECREMENT_965 964 #define DECREMENT_966 965 #define DECREMENT_967 966 #define DECREMENT_968 967 #define DECREMENT_969 968 #define DECREMENT_970 969 #define DECREMENT_971 970 #define DECREMENT_972 971 #define DECREMENT_973 972 #define DECREMENT_974 973 #define DECREMENT_975 974 #define DECREMENT_976 975 #define DECREMENT_977 976 #define DECREMENT_978 977 #define DECREMENT_979 978 #define DECREMENT_980 979 #define DECREMENT_981 980 #define DECREMENT_982 981 #define DECREMENT_983 982 #define DECREMENT_984 983 #define DECREMENT_985 984 #define DECREMENT_986 985 #define DECREMENT_987 986 #define DECREMENT_988 987 #define DECREMENT_989 988 #define DECREMENT_990 989 #define DECREMENT_991 990 #define DECREMENT_992 991 #define DECREMENT_993 992 #define DECREMENT_994 993 #define DECREMENT_995 994 #define DECREMENT_996 995 #define DECREMENT_997 996 #define DECREMENT_998 997 #define DECREMENT_999 998 #define DECREMENT_1000 999 #define DECREMENT_1001 1000 #define DECREMENT_1002 1001 #define DECREMENT_1003 1002 #define DECREMENT_1004 1003 #define DECREMENT_1005 1004 #define DECREMENT_1006 1005 #define DECREMENT_1007 1006 #define DECREMENT_1008 1007 #define DECREMENT_1009 1008 #define DECREMENT_1010 1009 #define DECREMENT_1011 1010 #define DECREMENT_1012 1011 #define DECREMENT_1013 1012 #define DECREMENT_1014 1013 #define DECREMENT_1015 1014 #define DECREMENT_1016 1015 #define DECREMENT_1017 1016 #define DECREMENT_1018 1017 #define DECREMENT_1019 1018 #define DECREMENT_1020 1019 #define DECREMENT_1021 1020 #define DECREMENT_1022 1021 #define DECREMENT_1023 1022 #define DECREMENT_1024 1023 #define INCREMENTX(X) INCREMENT_##X #define INCREMENT(X) INCREMENTX(X) #define DECREMENTX(X) DECREMENT_##X #define DECREMENT(X) DECREMENTX(X) #define __assume(cond) do { if (!(cond)) __builtin_unreachable(); } while (0) #define STEP() _STEP(__COUNTER__) #define _LABEL(word, number) word ## number #define LABEL(word, number) _LABEL(word, number) #define PASS_ANALYZING 0 #define PASS_CHECKING 1 #define PASS_RUNNING 2 #define PASS_CLEANING 3 #define _STEP_WAIT_SIGNAL 666 #define _STEP_DONE_SIGNAL 0 #define _STEP_SHOULD_WAIT(result) result == _STEP_WAIT_SIGNAL #define unlikely(c) __builtin_expect(c, 0) #define likely(c) __builtin_expect(c, 1) #define STEP_PRINTF(s, ...) printf("[%d/%d/%d]" s, _step->pass, *_step->progress, *_step->checkpoint, ##__VA_ARGS__) typedef struct { int offset; int result; int current; int prevented; uint8_t *progress ; uint8_t *checkpoint; uint8_t pass; uint8_t count; uint8_t run_flag; uint8_t defer_flag; uint8_t flags; } _step_t; #define unlikely(c) __builtin_expect(c, 0) #define likely(c) __builtin_expect(c, 1) #define STEP_GUARD_ANALYZE(COUNTER) \ flags |= (1 << PASS_CHECKING) #define STEP_GUARD_CLEAN(COUNTER) #define STEP_GUARD_CHECK(COUNTER) \ if (*_step->progress < COUNTER - _step->offset) {\ STEP_PRINTF(". Stopped checking at %d\n", COUNTER - _step->offset);\ goto running;\ }\ STEP_PRINTF(". Check: Before %d\n", COUNTER - _step->offset);\ goto LABEL(run_, COUNTER) #define STEP_GUARD_BEFORE(COUNTER) \ STEP_PRINTF("Guard: Before %d\n", COUNTER - _step->offset); #define STEP_GUARD_AFTER(COUNTER) \ STEP_PRINTF("Guard: After %d %i\n", COUNTER - _step->offset, _step->result); \ if (_step->result) {\ STEP_PRINTF("Guard passed check %d\n", COUNTER - _step->offset);\ if (_step->pass == PASS_CHECKING)\ goto LABEL(check_, INCREMENT(COUNTER)); \ }else {\ STEP_PRINTF("FAILED CHECK %d\n", COUNTER - _step->offset);\ *_step->checkpoint = COUNTER - _step->offset;\ goto cleaning; \ } #define STEP_DEFER_ANALYZE(COUNTER) \ flags |= (1 << PASS_CLEANING) #define STEP_DEFER_CLEAN(COUNTER) \ STEP_PRINTF("Defer: RRR %d/%d\n", *_step->checkpoint, COUNTER - _step->offset);\ if (COUNTER - _step->offset > *_step->checkpoint) {\ goto LABEL(run_, COUNTER);\ } else {\ goto LABEL(clean_, DECREMENT(COUNTER));\ } #define STEP_DEFER_CHECK(COUNTER) #define STEP_DEFER_BEFORE(COUNTER) \ _step->prevented = _step->pass != PASS_CLEANING;\ STEP_PRINTF("Defer: Before %d %d\n", _step->pass, COUNTER - _step->offset); #define STEP_DEFER_AFTER(COUNTER) \ *_step->progress = COUNTER - _step->offset;\ _step->pass = PASS_CLEANING;\ STEP_PRINTF("Defer: After %d %i\n", COUNTER - _step->offset, _step->result); \ goto LABEL(clean_, DECREMENT(COUNTER)); \ #define STEP_AWAIT_ANALYZE(COUNTER) #define STEP_AWAIT_CLEAN(COUNTER) #define STEP_AWAIT_CHECK(COUNTER) #define STEP_AWAIT_BEFORE(COUNTER) \ _step->prevented = 0;\ STEP_PRINTF("Await: Before %d\n", COUNTER - _step->offset); #define STEP_AWAIT_AFTER(COUNTER) \ STEP_PRINTF("Await: After %d %i\n", COUNTER - _step->offset, _step->result); \ if (unlikely(_step->result == 666)) {\ *_step->progress = COUNTER - _step->offset;\ goto wait;\ } #define _STEP(...) __STEP(__COUNTER__, __VA_ARGS__) #define __STEP(COUNTER,...) ___STEP(COUNTER, COUNTER, __VA_ARGS__) #define DEFER _STEP(STEP_DEFER_ANALYZE, STEP_DEFER_CHECK, STEP_DEFER_BEFORE, STEP_DEFER_AFTER, STEP_DEFER_CLEAN, _step->defer_flag,) #define GUARD _STEP(STEP_GUARD_ANALYZE, STEP_GUARD_CHECK, STEP_GUARD_BEFORE, STEP_GUARD_AFTER, STEP_GUARD_CLEAN, _step->run_flag,_step->result =) #define AWAIT _STEP(STEP_AWAIT_ANALYZE, STEP_AWAIT_CHECK, STEP_AWAIT_BEFORE, STEP_AWAIT_AFTER, STEP_AWAIT_CLEAN, _step->run_flag,_step->result =) #define ___STEP(COUNTER, INDEX, ANALYZE, CHECK, BEFORE, AFTER, CLEAN, FLAG, LHS) \ case COUNTER:\ if (0) {\ LABEL(analyze_, COUNTER): {}\ ANALYZE(COUNTER);\ goto LABEL(analyze_, INCREMENT(COUNTER)); \ LABEL(check_, COUNTER): {}\ CHECK(COUNTER);\ goto LABEL(check_, INCREMENT(COUNTER)); \ LABEL(clean_, COUNTER): {}\ CLEAN(COUNTER);\ goto LABEL(clean_, DECREMENT(COUNTER)); \ }\ goto LABEL(run_, COUNTER);\ LABEL(run_, COUNTER): {}\ BEFORE(COUNTER);\ if (_step->prevented) {}\ else \ for (FLAG = 0; 1; FLAG = 1) \ if (unlikely(FLAG)) {\ AFTER(COUNTER);\ break;\ } else \ LHS #define _LEAVE(COUNTER) \ case COUNTER: \ /* Running -> Cleaning*/ \ STEP_PRINTF("!!! Complete pass %d\n", _step->pass); \ *_step->progress = COUNTER - _step->offset; \ STEP_PRINTF("RAN %d \n\n", _step->current); \ *_step->checkpoint = 1; \ \ /* Start cleaning from back to front*/ \ goto cleaning; \ cleaning: \ _step->pass = PASS_CLEANING; \ goto LABEL(clean_, DECREMENT(COUNTER)); \ } \ if (0) { \ /* Analyze -> Checking/Running phase*/ \ LABEL(analyze_, COUNTER): \ _step->count = COUNTER - _step->offset; \ STEP_PRINTF("ANALYZED %d \n\n", _step->current); \ _step->pass = PASS_CHECKING; \ \ if (*_step->checkpoint > 0) \ goto run_start; \ goto check_start; \ \ goto running; \ running: \ _step->pass = PASS_RUNNING; \ LABEL(check_, COUNTER): \ goto run_start; \ } \ exit: \ STEP_PRINTF("Returned\n"); \ if (0) { \ wait: {} \ STEP_PRINTF("Waiting now\n\n"); \ } \ \ return 0; #define LEAVE() _LEAVE(__COUNTER__) #define _ENTER(COUNTER) \ uint8_t flags = 0; \ _step_t _step[1]; \ *_step = (_step_t) { \ .pass = PASS_ANALYZING, \ .offset = COUNTER, \ .run_flag = 1, \ .defer_flag = 1, \ .progress = &async->progress, \ .checkpoint = &async->checkpoint \ }; \ STEP_PRINTF(">>> RESTART %d (Flags: %d, Defers: %d, Checks: %d)\n", *_step->progress, flags, flags & ( 1 << PASS_CLEANING), flags & ( 1 << PASS_CHECKING)); \ \ /* start analuzing*/ \ goto LABEL(analyze_, INCREMENT(COUNTER)); \ /* jump to first checking step*/ \ check_start: \ goto LABEL(check_, INCREMENT(COUNTER)); \ /* exit after cleaning*/ \ LABEL(clean_, COUNTER): \ *_step->progress = 0; \ *_step->checkpoint = 0; \ STEP_PRINTF("CLEANED %d \n\n", *_step->progress); \ goto exit; \ /* start running after checking*/ \ goto run_start; \ run_start: \ printf(". RUNNING AGAIN %d (Flags: %d, Defers: %d, Checks: %d)\n", *_step->progress, flags, flags & ( 1 << PASS_CLEANING), flags & ( 1 << PASS_CHECKING)); \ printf(". Jumping to %d\n", *_step->progress); \ _step->pass = PASS_RUNNING; \ \ switch (_step->offset + *_step->progress) { \ default: #define ENTER() _ENTER(__COUNTER__) typedef struct { uint8_t progress; uint8_t checkpoint; } async_t; int test(async_t *async, int block, int await) { ENTER(); printf("NO EVEN STEP LOL\n"); AWAIT STEP_PRINTF("Step %d\n", __LINE__); AWAIT STEP_PRINTF("Mini await %d\n", __LINE__); DEFER STEP_PRINTF("XXXDEFER %d\n", __LINE__); AWAIT STEP_PRINTF("Step %d\n", __LINE__); GUARD !block; printf("!!!!Before defer\n"); DEFER { printf("In defer lol\n"); AWAIT await ? 666 : 1; //AWAIT STEP_PRINTF("UNDEFER %d\n", __LINE__); printf("/ In defer lol\n"); } printf("/ defer\n"); AWAIT STEP_PRINTF("Step %d\n", __LINE__); AWAIT STEP_PRINTF("Step %d\n", __LINE__); AWAIT STEP_PRINTF("Step %d\n", __LINE__); LEAVE(); } int main(void) { async_t async = {0}; printf("1...\n"); test(&async, 0, 1); printf("2...\n"); test(&async, 0, 0); printf("3...\n"); test(&async, 1, 0); printf("4...\n"); test(&async, 0, 0); printf("5...\n"); return 0; }
Become a Patron
Sponsor on GitHub
Donate via PayPal
Compiler Explorer Shop
Source on GitHub
Mailing list
Installed libraries
Wiki
Report an issue
How it works
Contact the author
CE on Mastodon
CE on Bluesky
Statistics
Changelog
Version tree