diff options
Diffstat (limited to 'services')
-rw-r--r-- | services/Makefile.am | 20 | ||||
-rw-r--r-- | services/Makefile.in | 718 | ||||
-rw-r--r-- | services/bench.h | 17 | ||||
-rw-r--r-- | services/comm.cpp | 1698 | ||||
-rw-r--r-- | services/comm.h | 601 | ||||
-rw-r--r-- | services/exitcode.h | 61 | ||||
-rw-r--r-- | services/getifaddrs.cpp | 270 | ||||
-rw-r--r-- | services/getifaddrs.h | 100 | ||||
-rw-r--r-- | services/icecc.pc.in | 14 | ||||
-rw-r--r-- | services/job.cpp | 112 | ||||
-rw-r--r-- | services/job.h | 120 | ||||
-rw-r--r-- | services/logging.cpp | 153 | ||||
-rw-r--r-- | services/logging.h | 134 | ||||
-rw-r--r-- | services/platform.cpp | 68 | ||||
-rw-r--r-- | services/platform.h | 28 | ||||
-rw-r--r-- | services/scheduler.cpp | 2149 | ||||
-rw-r--r-- | services/tempfile.c | 130 | ||||
-rw-r--r-- | services/tempfile.h | 33 |
18 files changed, 6426 insertions, 0 deletions
diff --git a/services/Makefile.am b/services/Makefile.am new file mode 100644 index 0000000..158dc4a --- /dev/null +++ b/services/Makefile.am @@ -0,0 +1,20 @@ +INCLUDES = -I$(srcdir)/../minilzo + +lib_LTLIBRARIES = libicecc.la + +libicecc_la_SOURCES = job.cpp comm.cpp getifaddrs.cpp logging.cpp tempfile.c platform.cpp +libicecc_la_LIBADD = ../minilzo/libminilzo.la -ldl +libicecc_la_CFLAGS = -fPIC -DPIC +libicecc_la_CXXFLAGS = -fPIC -DPIC + +ice_HEADERS = job.h comm.h +noinst_HEADERS = bench.h exitcode.h getifaddrs.h logging.h tempfile.h platform.h +icedir = $(includedir)/icecc + +sbin_PROGRAMS = scheduler +scheduler_SOURCES = scheduler.cpp +scheduler_LDADD = libicecc.la + +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = icecc.pc + diff --git a/services/Makefile.in b/services/Makefile.in new file mode 100644 index 0000000..8aac0a1 --- /dev/null +++ b/services/Makefile.in @@ -0,0 +1,718 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + + + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +sbin_PROGRAMS = scheduler$(EXEEXT) +subdir = services +DIST_COMMON = $(ice_HEADERS) $(noinst_HEADERS) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in $(srcdir)/icecc.pc.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = icecc.pc +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(sbindir)" \ + "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(icedir)" +LTLIBRARIES = $(lib_LTLIBRARIES) +libicecc_la_DEPENDENCIES = ../minilzo/libminilzo.la +am_libicecc_la_OBJECTS = libicecc_la-job.lo libicecc_la-comm.lo \ + libicecc_la-getifaddrs.lo libicecc_la-logging.lo \ + libicecc_la-tempfile.lo libicecc_la-platform.lo +libicecc_la_OBJECTS = $(am_libicecc_la_OBJECTS) +libicecc_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(libicecc_la_CXXFLAGS) \ + $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +PROGRAMS = $(sbin_PROGRAMS) +am_scheduler_OBJECTS = scheduler.$(OBJEXT) +scheduler_OBJECTS = $(am_scheduler_OBJECTS) +scheduler_DEPENDENCIES = libicecc.la +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(libicecc_la_SOURCES) $(scheduler_SOURCES) +DIST_SOURCES = $(libicecc_la_SOURCES) $(scheduler_SOURCES) +DATA = $(pkgconfig_DATA) +HEADERS = $(ice_HEADERS) $(noinst_HEADERS) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBRSYNC = @LIBRSYNC@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_KINFO = @LIB_KINFO@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TAR = @TAR@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +INCLUDES = -I$(srcdir)/../minilzo +lib_LTLIBRARIES = libicecc.la +libicecc_la_SOURCES = job.cpp comm.cpp getifaddrs.cpp logging.cpp tempfile.c platform.cpp +libicecc_la_LIBADD = ../minilzo/libminilzo.la -ldl +libicecc_la_CFLAGS = -fPIC -DPIC +libicecc_la_CXXFLAGS = -fPIC -DPIC +ice_HEADERS = job.h comm.h +noinst_HEADERS = bench.h exitcode.h getifaddrs.h logging.h tempfile.h platform.h +icedir = $(includedir)/icecc +scheduler_SOURCES = scheduler.cpp +scheduler_LDADD = libicecc.la +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = icecc.pc +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .cpp .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign services/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign services/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +icecc.pc: $(top_builddir)/config.status $(srcdir)/icecc.pc.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ + } + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +libicecc.la: $(libicecc_la_OBJECTS) $(libicecc_la_DEPENDENCIES) + $(libicecc_la_LINK) -rpath $(libdir) $(libicecc_la_OBJECTS) $(libicecc_la_LIBADD) $(LIBS) +install-sbinPROGRAMS: $(sbin_PROGRAMS) + @$(NORMAL_INSTALL) + test -z "$(sbindir)" || $(MKDIR_P) "$(DESTDIR)$(sbindir)" + @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p || test -f $$p1; \ + then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(sbindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(sbindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-sbinPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(sbindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(sbindir)" && rm -f $$files + +clean-sbinPROGRAMS: + @list='$(sbin_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +scheduler$(EXEEXT): $(scheduler_OBJECTS) $(scheduler_DEPENDENCIES) + @rm -f scheduler$(EXEEXT) + $(CXXLINK) $(scheduler_OBJECTS) $(scheduler_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libicecc_la-comm.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libicecc_la-getifaddrs.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libicecc_la-job.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libicecc_la-logging.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libicecc_la-platform.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libicecc_la-tempfile.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scheduler.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +libicecc_la-tempfile.lo: tempfile.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libicecc_la_CFLAGS) $(CFLAGS) -MT libicecc_la-tempfile.lo -MD -MP -MF $(DEPDIR)/libicecc_la-tempfile.Tpo -c -o libicecc_la-tempfile.lo `test -f 'tempfile.c' || echo '$(srcdir)/'`tempfile.c +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libicecc_la-tempfile.Tpo $(DEPDIR)/libicecc_la-tempfile.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tempfile.c' object='libicecc_la-tempfile.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libicecc_la_CFLAGS) $(CFLAGS) -c -o libicecc_la-tempfile.lo `test -f 'tempfile.c' || echo '$(srcdir)/'`tempfile.c + +.cpp.o: +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< + +.cpp.obj: +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.cpp.lo: +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< + +libicecc_la-job.lo: job.cpp +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libicecc_la_CXXFLAGS) $(CXXFLAGS) -MT libicecc_la-job.lo -MD -MP -MF $(DEPDIR)/libicecc_la-job.Tpo -c -o libicecc_la-job.lo `test -f 'job.cpp' || echo '$(srcdir)/'`job.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/libicecc_la-job.Tpo $(DEPDIR)/libicecc_la-job.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='job.cpp' object='libicecc_la-job.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libicecc_la_CXXFLAGS) $(CXXFLAGS) -c -o libicecc_la-job.lo `test -f 'job.cpp' || echo '$(srcdir)/'`job.cpp + +libicecc_la-comm.lo: comm.cpp +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libicecc_la_CXXFLAGS) $(CXXFLAGS) -MT libicecc_la-comm.lo -MD -MP -MF $(DEPDIR)/libicecc_la-comm.Tpo -c -o libicecc_la-comm.lo `test -f 'comm.cpp' || echo '$(srcdir)/'`comm.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/libicecc_la-comm.Tpo $(DEPDIR)/libicecc_la-comm.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='comm.cpp' object='libicecc_la-comm.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libicecc_la_CXXFLAGS) $(CXXFLAGS) -c -o libicecc_la-comm.lo `test -f 'comm.cpp' || echo '$(srcdir)/'`comm.cpp + +libicecc_la-getifaddrs.lo: getifaddrs.cpp +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libicecc_la_CXXFLAGS) $(CXXFLAGS) -MT libicecc_la-getifaddrs.lo -MD -MP -MF $(DEPDIR)/libicecc_la-getifaddrs.Tpo -c -o libicecc_la-getifaddrs.lo `test -f 'getifaddrs.cpp' || echo '$(srcdir)/'`getifaddrs.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/libicecc_la-getifaddrs.Tpo $(DEPDIR)/libicecc_la-getifaddrs.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='getifaddrs.cpp' object='libicecc_la-getifaddrs.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libicecc_la_CXXFLAGS) $(CXXFLAGS) -c -o libicecc_la-getifaddrs.lo `test -f 'getifaddrs.cpp' || echo '$(srcdir)/'`getifaddrs.cpp + +libicecc_la-logging.lo: logging.cpp +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libicecc_la_CXXFLAGS) $(CXXFLAGS) -MT libicecc_la-logging.lo -MD -MP -MF $(DEPDIR)/libicecc_la-logging.Tpo -c -o libicecc_la-logging.lo `test -f 'logging.cpp' || echo '$(srcdir)/'`logging.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/libicecc_la-logging.Tpo $(DEPDIR)/libicecc_la-logging.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='logging.cpp' object='libicecc_la-logging.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libicecc_la_CXXFLAGS) $(CXXFLAGS) -c -o libicecc_la-logging.lo `test -f 'logging.cpp' || echo '$(srcdir)/'`logging.cpp + +libicecc_la-platform.lo: platform.cpp +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libicecc_la_CXXFLAGS) $(CXXFLAGS) -MT libicecc_la-platform.lo -MD -MP -MF $(DEPDIR)/libicecc_la-platform.Tpo -c -o libicecc_la-platform.lo `test -f 'platform.cpp' || echo '$(srcdir)/'`platform.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/libicecc_la-platform.Tpo $(DEPDIR)/libicecc_la-platform.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='platform.cpp' object='libicecc_la-platform.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libicecc_la_CXXFLAGS) $(CXXFLAGS) -c -o libicecc_la-platform.lo `test -f 'platform.cpp' || echo '$(srcdir)/'`platform.cpp + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgconfigDATA: $(pkgconfig_DATA) + @$(NORMAL_INSTALL) + test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" + @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ + done + +uninstall-pkgconfigDATA: + @$(NORMAL_UNINSTALL) + @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(pkgconfigdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(pkgconfigdir)" && rm -f $$files +install-iceHEADERS: $(ice_HEADERS) + @$(NORMAL_INSTALL) + test -z "$(icedir)" || $(MKDIR_P) "$(DESTDIR)$(icedir)" + @list='$(ice_HEADERS)'; test -n "$(icedir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(icedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(icedir)" || exit $$?; \ + done + +uninstall-iceHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(ice_HEADERS)'; test -n "$(icedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(icedir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(icedir)" && rm -f $$files + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(DATA) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(icedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ + clean-sbinPROGRAMS mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-iceHEADERS install-pkgconfigDATA + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-libLTLIBRARIES install-sbinPROGRAMS + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-iceHEADERS uninstall-libLTLIBRARIES \ + uninstall-pkgconfigDATA uninstall-sbinPROGRAMS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libLTLIBRARIES clean-libtool clean-sbinPROGRAMS ctags \ + distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am \ + install-iceHEADERS install-info install-info-am \ + install-libLTLIBRARIES install-man install-pdf install-pdf-am \ + install-pkgconfigDATA install-ps install-ps-am \ + install-sbinPROGRAMS install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags uninstall uninstall-am uninstall-iceHEADERS \ + uninstall-libLTLIBRARIES uninstall-pkgconfigDATA \ + uninstall-sbinPROGRAMS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/services/bench.h b/services/bench.h new file mode 100644 index 0000000..4d27ee2 --- /dev/null +++ b/services/bench.h @@ -0,0 +1,17 @@ +/* this is from gcc testsuite. actually anything that takes a while to compile is fine. */ + + +const char icecream_bench_code[] = "\n" +"\n" +"unsigned foo(int x[64], int y[64])\n" +"{\n" +" if ((x)[0] > (y)[0]) goto gt; if ((x)[0] < (y)[0]) goto lt; if ((x)[1] > (y)[0]) goto gt; if ((x)[1] < (y)[0]) goto lt; if ((x)[2] > (y)[0]) goto gt; if ((x)[2] < (y)[0]) goto lt; if ((x)[3] > (y)[0]) goto gt; if ((x)[3] < (y)[0]) goto lt; if ((x)[0] > (y)[1]) goto gt; if ((x)[0] < (y)[1]) goto lt; if ((x)[1] > (y)[1]) goto gt; if ((x)[1] < (y)[1]) goto lt; if ((x)[2] > (y)[1]) goto gt; if ((x)[2] < (y)[1]) goto lt; if ((x)[3] > (y)[1]) goto gt; if ((x)[3] < (y)[1]) goto lt; if ((x)[0] > (y)[2]) goto gt; if ((x)[0] < (y)[2]) goto lt; if ((x)[1] > (y)[2]) goto gt; if ((x)[1] < (y)[2]) goto lt; if ((x)[2] > (y)[2]) goto gt; if ((x)[2] < (y)[2]) goto lt; if ((x)[3] > (y)[2]) goto gt; if ((x)[3] < (y)[2]) goto lt; if ((x)[0] > (y)[3]) goto gt; if ((x)[0] < (y)[3]) goto lt; if ((x)[1] > (y)[3]) goto gt; if ((x)[1] < (y)[3]) goto lt; if ((x)[2] > (y)[3]) goto gt; if ((x)[2] < (y)[3]) goto lt; if ((x)[3] > (y)[3]) goto gt; if ((x)[3] < (y)[3]) goto lt; if ((x+4)[0] > (y)[0]) goto gt; if ((x+4)[0] < (y)[0]) goto lt; if ((x+4)[1] > (y)[0]) goto gt; if ((x+4)[1] < (y)[0]) goto lt; if ((x+4)[2] > (y)[0]) goto gt; if ((x+4)[2] < (y)[0]) goto lt; if ((x+4)[3] > (y)[0]) goto gt; if ((x+4)[3] < (y)[0]) goto lt; if ((x+4)[0] > (y)[1]) goto gt; if ((x+4)[0] < (y)[1]) goto lt; if ((x+4)[1] > (y)[1]) goto gt; if ((x+4)[1] < (y)[1]) goto lt; if ((x+4)[2] > (y)[1]) goto gt; if ((x+4)[2] < (y)[1]) goto lt; if ((x+4)[3] > (y)[1]) goto gt; if ((x+4)[3] < (y)[1]) goto lt; if ((x+4)[0] > (y)[2]) goto gt; if ((x+4)[0] < (y)[2]) goto lt; if ((x+4)[1] > (y)[2]) goto gt; if ((x+4)[1] < (y)[2]) goto lt; if ((x+4)[2] > (y)[2]) goto gt; if ((x+4)[2] < (y)[2]) goto lt; if ((x+4)[3] > (y)[2]) goto gt; if ((x+4)[3] < (y)[2]) goto lt; if ((x+4)[0] > (y)[3]) goto gt; if ((x+4)[0] < (y)[3]) goto lt; if ((x+4)[1] > (y)[3]) goto gt; if ((x+4)[1] < (y)[3]) goto lt; if ((x+4)[2] > (y)[3]) goto gt; if ((x+4)[2] < (y)[3]) goto lt; if ((x+4)[3] > (y)[3]) goto gt; if ((x+4)[3] < (y)[3]) goto lt; if ((x+8)[0] > (y)[0]) goto gt; if ((x+8)[0] < (y)[0]) goto lt; if ((x+8)[1] > (y)[0]) goto gt; if ((x+8)[1] < (y)[0]) goto lt; if ((x+8)[2] > (y)[0]) goto gt; if ((x+8)[2] < (y)[0]) goto lt; if ((x+8)[3] > (y)[0]) goto gt; if ((x+8)[3] < (y)[0]) goto lt; if ((x+8)[0] > (y)[1]) goto gt; if ((x+8)[0] < (y)[1]) goto lt; if ((x+8)[1] > (y)[1]) goto gt; if ((x+8)[1] < (y)[1]) goto lt; if ((x+8)[2] > (y)[1]) goto gt; if ((x+8)[2] < (y)[1]) goto lt; if ((x+8)[3] > (y)[1]) goto gt; if ((x+8)[3] < (y)[1]) goto lt; if ((x+8)[0] > (y)[2]) goto gt; if ((x+8)[0] < (y)[2]) goto lt; if ((x+8)[1] > (y)[2]) goto gt; if ((x+8)[1] < (y)[2]) goto lt; if ((x+8)[2] > (y)[2]) goto gt; if ((x+8)[2] < (y)[2]) goto lt; if ((x+8)[3] > (y)[2]) goto gt; if ((x+8)[3] < (y)[2]) goto lt; if ((x+8)[0] > (y)[3]) goto gt; if ((x+8)[0] < (y)[3]) goto lt; if ((x+8)[1] > (y)[3]) goto gt; if ((x+8)[1] < (y)[3]) goto lt; if ((x+8)[2] > (y)[3]) goto gt; if ((x+8)[2] < (y)[3]) goto lt; if ((x+8)[3] > (y)[3]) goto gt; if ((x+8)[3] < (y)[3]) goto lt; if ((x+12)[0] > (y)[0]) goto gt; if ((x+12)[0] < (y)[0]) goto lt; if ((x+12)[1] > (y)[0]) goto gt; if ((x+12)[1] < (y)[0]) goto lt; if ((x+12)[2] > (y)[0]) goto gt; if ((x+12)[2] < (y)[0]) goto lt; if ((x+12)[3] > (y)[0]) goto gt; if ((x+12)[3] < (y)[0]) goto lt; if ((x+12)[0] > (y)[1]) goto gt; if ((x+12)[0] < (y)[1]) goto lt; if ((x+12)[1] > (y)[1]) goto gt; if ((x+12)[1] < (y)[1]) goto lt; if ((x+12)[2] > (y)[1]) goto gt; if ((x+12)[2] < (y)[1]) goto lt; if ((x+12)[3] > (y)[1]) goto gt; if ((x+12)[3] < (y)[1]) goto lt; if ((x+12)[0] > (y)[2]) goto gt; if ((x+12)[0] < (y)[2]) goto lt; if ((x+12)[1] > (y)[2]) goto gt; if ((x+12)[1] < (y)[2]) goto lt; if ((x+12)[2] > (y)[2]) goto gt; if ((x+12)[2] < (y)[2]) goto lt; if ((x+12)[3] > (y)[2]) goto gt; if ((x+12)[3] < (y)[2]) goto lt; if ((x+12)[0] > (y)[3]) goto gt; if ((x+12)[0] < (y)[3]) goto lt; if ((x+12)[1] > (y)[3]) goto gt; if ((x+12)[1] < (y)[3]) goto lt; if ((x+12)[2] > (y)[3]) goto gt; if ((x+12)[2] < (y)[3]) goto lt; if ((x+12)[3] > (y)[3]) goto gt; if ((x+12)[3] < (y)[3]) goto lt; if ((x)[0] > (y+4)[0]) goto gt; if ((x)[0] < (y+4)[0]) goto lt; if ((x)[1] > (y+4)[0]) goto gt; if ((x)[1] < (y+4)[0]) goto lt; if ((x)[2] > (y+4)[0]) goto gt; if ((x)[2] < (y+4)[0]) goto lt; if ((x)[3] > (y+4)[0]) goto gt; if ((x)[3] < (y+4)[0]) goto lt; if ((x)[0] > (y+4)[1]) goto gt; if ((x)[0] < (y+4)[1]) goto lt; if ((x)[1] > (y+4)[1]) goto gt; if ((x)[1] < (y+4)[1]) goto lt; if ((x)[2] > (y+4)[1]) goto gt; if ((x)[2] < (y+4)[1]) goto lt; if ((x)[3] > (y+4)[1]) goto gt; if ((x)[3] < (y+4)[1]) goto lt; if ((x)[0] > (y+4)[2]) goto gt; if ((x)[0] < (y+4)[2]) goto lt; if ((x)[1] > (y+4)[2]) goto gt; if ((x)[1] < (y+4)[2]) goto lt; if ((x)[2] > (y+4)[2]) goto gt; if ((x)[2] < (y+4)[2]) goto lt; if ((x)[3] > (y+4)[2]) goto gt; if ((x)[3] < (y+4)[2]) goto lt; if ((x)[0] > (y+4)[3]) goto gt; if ((x)[0] < (y+4)[3]) goto lt; if ((x)[1] > (y+4)[3]) goto gt; if ((x)[1] < (y+4)[3]) goto lt; if ((x)[2] > (y+4)[3]) goto gt; if ((x)[2] < (y+4)[3]) goto lt; if ((x)[3] > (y+4)[3]) goto gt; if ((x)[3] < (y+4)[3]) goto lt; if ((x+4)[0] > (y+4)[0]) goto gt; if ((x+4)[0] < (y+4)[0]) goto lt; if ((x+4)[1] > (y+4)[0]) goto gt; if ((x+4)[1] < (y+4)[0]) goto lt; if ((x+4)[2] > (y+4)[0]) goto gt; if ((x+4)[2] < (y+4)[0]) goto lt; if ((x+4)[3] > (y+4)[0]) goto gt; if ((x+4)[3] < (y+4)[0]) goto lt; if ((x+4)[0] > (y+4)[1]) goto gt; if ((x+4)[0] < (y+4)[1]) goto lt; if ((x+4)[1] > (y+4)[1]) goto gt; if ((x+4)[1] < (y+4)[1]) goto lt; if ((x+4)[2] > (y+4)[1]) goto gt; if ((x+4)[2] < (y+4)[1]) goto lt; if ((x+4)[3] > (y+4)[1]) goto gt; if ((x+4)[3] < (y+4)[1]) goto lt; if ((x+4)[0] > (y+4)[2]) goto gt; if ((x+4)[0] < (y+4)[2]) goto lt; if ((x+4)[1] > (y+4)[2]) goto gt; if ((x+4)[1] < (y+4)[2]) goto lt; if ((x+4)[2] > (y+4)[2]) goto gt; if ((x+4)[2] < (y+4)[2]) goto lt; if ((x+4)[3] > (y+4)[2]) goto gt; if ((x+4)[3] < (y+4)[2]) goto lt; if ((x+4)[0] > (y+4)[3]) goto gt; if ((x+4)[0] < (y+4)[3]) goto lt; if ((x+4)[1] > (y+4)[3]) goto gt; if ((x+4)[1] < (y+4)[3]) goto lt; if ((x+4)[2] > (y+4)[3]) goto gt; if ((x+4)[2] < (y+4)[3]) goto lt; if ((x+4)[3] > (y+4)[3]) goto gt; if ((x+4)[3] < (y+4)[3]) goto lt; if ((x+8)[0] > (y+4)[0]) goto gt; if ((x+8)[0] < (y+4)[0]) goto lt; if ((x+8)[1] > (y+4)[0]) goto gt; if ((x+8)[1] < (y+4)[0]) goto lt; if ((x+8)[2] > (y+4)[0]) goto gt; if ((x+8)[2] < (y+4)[0]) goto lt; if ((x+8)[3] > (y+4)[0]) goto gt; if ((x+8)[3] < (y+4)[0]) goto lt; if ((x+8)[0] > (y+4)[1]) goto gt; if ((x+8)[0] < (y+4)[1]) goto lt; if ((x+8)[1] > (y+4)[1]) goto gt; if ((x+8)[1] < (y+4)[1]) goto lt; if ((x+8)[2] > (y+4)[1]) goto gt; if ((x+8)[2] < (y+4)[1]) goto lt; if ((x+8)[3] > (y+4)[1]) goto gt; if ((x+8)[3] < (y+4)[1]) goto lt; if ((x+8)[0] > (y+4)[2]) goto gt; if ((x+8)[0] < (y+4)[2]) goto lt; if ((x+8)[1] > (y+4)[2]) goto gt; if ((x+8)[1] < (y+4)[2]) goto lt; if ((x+8)[2] > (y+4)[2]) goto gt; if ((x+8)[2] < (y+4)[2]) goto lt; if ((x+8)[3] > (y+4)[2]) goto gt; if ((x+8)[3] < (y+4)[2]) goto lt; if ((x+8)[0] > (y+4)[3]) goto gt; if ((x+8)[0] < (y+4)[3]) goto lt; if ((x+8)[1] > (y+4)[3]) goto gt; if ((x+8)[1] < (y+4)[3]) goto lt; if ((x+8)[2] > (y+4)[3]) goto gt; if ((x+8)[2] < (y+4)[3]) goto lt; if ((x+8)[3] > (y+4)[3]) goto gt; if ((x+8)[3] < (y+4)[3]) goto lt; if ((x+12)[0] > (y+4)[0]) goto gt; if ((x+12)[0] < (y+4)[0]) goto lt; if ((x+12)[1] > (y+4)[0]) goto gt; if ((x+12)[1] < (y+4)[0]) goto lt; if ((x+12)[2] > (y+4)[0]) goto gt; if ((x+12)[2] < (y+4)[0]) goto lt; if ((x+12)[3] > (y+4)[0]) goto gt; if ((x+12)[3] < (y+4)[0]) goto lt; if ((x+12)[0] > (y+4)[1]) goto gt; if ((x+12)[0] < (y+4)[1]) goto lt; if ((x+12)[1] > (y+4)[1]) goto gt; if ((x+12)[1] < (y+4)[1]) goto lt; if ((x+12)[2] > (y+4)[1]) goto gt; if ((x+12)[2] < (y+4)[1]) goto lt; if ((x+12)[3] > (y+4)[1]) goto gt; if ((x+12)[3] < (y+4)[1]) goto lt; if ((x+12)[0] > (y+4)[2]) goto gt; if ((x+12)[0] < (y+4)[2]) goto lt; if ((x+12)[1] > (y+4)[2]) goto gt; if ((x+12)[1] < (y+4)[2]) goto lt; if ((x+12)[2] > (y+4)[2]) goto gt; if ((x+12)[2] < (y+4)[2]) goto lt; if ((x+12)[3] > (y+4)[2]) goto gt; if ((x+12)[3] < (y+4)[2]) goto lt; if ((x+12)[0] > (y+4)[3]) goto gt; if ((x+12)[0] < (y+4)[3]) goto lt; if ((x+12)[1] > (y+4)[3]) goto gt; if ((x+12)[1] < (y+4)[3]) goto lt; if ((x+12)[2] > (y+4)[3]) goto gt; if ((x+12)[2] < (y+4)[3]) goto lt; if ((x+12)[3] > (y+4)[3]) goto gt; if ((x+12)[3] < (y+4)[3]) goto lt; if ((x)[0] > (y+8)[0]) goto gt; if ((x)[0] < (y+8)[0]) goto lt; if ((x)[1] > (y+8)[0]) goto gt; if ((x)[1] < (y+8)[0]) goto lt; if ((x)[2] > (y+8)[0]) goto gt; if ((x)[2] < (y+8)[0]) goto lt; if ((x)[3] > (y+8)[0]) goto gt; if ((x)[3] < (y+8)[0]) goto lt; if ((x)[0] > (y+8)[1]) goto gt; if ((x)[0] < (y+8)[1]) goto lt; if ((x)[1] > (y+8)[1]) goto gt; if ((x)[1] < (y+8)[1]) goto lt; if ((x)[2] > (y+8)[1]) goto gt; if ((x)[2] < (y+8)[1]) goto lt; if ((x)[3] > (y+8)[1]) goto gt; if ((x)[3] < (y+8)[1]) goto lt; if ((x)[0] > (y+8)[2]) goto gt; if ((x)[0] < (y+8)[2]) goto lt; if ((x)[1] > (y+8)[2]) goto gt; if ((x)[1] < (y+8)[2]) goto lt; if ((x)[2] > (y+8)[2]) goto gt; if ((x)[2] < (y+8)[2]) goto lt; if ((x)[3] > (y+8)[2]) goto gt; if ((x)[3] < (y+8)[2]) goto lt; if ((x)[0] > (y+8)[3]) goto gt; if ((x)[0] < (y+8)[3]) goto lt; if ((x)[1] > (y+8)[3]) goto gt; if ((x)[1] < (y+8)[3]) goto lt; if ((x)[2] > (y+8)[3]) goto gt; if ((x)[2] < (y+8)[3]) goto lt; if ((x)[3] > (y+8)[3]) goto gt; if ((x)[3] < (y+8)[3]) goto lt; if ((x+4)[0] > (y+8)[0]) goto gt; if ((x+4)[0] < (y+8)[0]) goto lt; if ((x+4)[1] > (y+8)[0]) goto gt; if ((x+4)[1] < (y+8)[0]) goto lt; if ((x+4)[2] > (y+8)[0]) goto gt; if ((x+4)[2] < (y+8)[0]) goto lt; if ((x+4)[3] > (y+8)[0]) goto gt; if ((x+4)[3] < (y+8)[0]) goto lt; if ((x+4)[0] > (y+8)[1]) goto gt; if ((x+4)[0] < (y+8)[1]) goto lt; if ((x+4)[1] > (y+8)[1]) goto gt; if ((x+4)[1] < (y+8)[1]) goto lt; if ((x+4)[2] > (y+8)[1]) goto gt; if ((x+4)[2] < (y+8)[1]) goto lt; if ((x+4)[3] > (y+8)[1]) goto gt; if ((x+4)[3] < (y+8)[1]) goto lt; if ((x+4)[0] > (y+8)[2]) goto gt; if ((x+4)[0] < (y+8)[2]) goto lt; if ((x+4)[1] > (y+8)[2]) goto gt; if ((x+4)[1] < (y+8)[2]) goto lt; if ((x+4)[2] > (y+8)[2]) goto gt; if ((x+4)[2] < (y+8)[2]) goto lt; if ((x+4)[3] > (y+8)[2]) goto gt; if ((x+4)[3] < (y+8)[2]) goto lt; if ((x+4)[0] > (y+8)[3]) goto gt; if ((x+4)[0] < (y+8)[3]) goto lt; if ((x+4)[1] > (y+8)[3]) goto gt; if ((x+4)[1] < (y+8)[3]) goto lt; if ((x+4)[2] > (y+8)[3]) goto gt; if ((x+4)[2] < (y+8)[3]) goto lt; if ((x+4)[3] > (y+8)[3]) goto gt; if ((x+4)[3] < (y+8)[3]) goto lt; if ((x+8)[0] > (y+8)[0]) goto gt; if ((x+8)[0] < (y+8)[0]) goto lt; if ((x+8)[1] > (y+8)[0]) goto gt; if ((x+8)[1] < (y+8)[0]) goto lt; if ((x+8)[2] > (y+8)[0]) goto gt; if ((x+8)[2] < (y+8)[0]) goto lt; if ((x+8)[3] > (y+8)[0]) goto gt; if ((x+8)[3] < (y+8)[0]) goto lt; if ((x+8)[0] > (y+8)[1]) goto gt; if ((x+8)[0] < (y+8)[1]) goto lt; if ((x+8)[1] > (y+8)[1]) goto gt; if ((x+8)[1] < (y+8)[1]) goto lt; if ((x+8)[2] > (y+8)[1]) goto gt; if ((x+8)[2] < (y+8)[1]) goto lt; if ((x+8)[3] > (y+8)[1]) goto gt; if ((x+8)[3] < (y+8)[1]) goto lt; if ((x+8)[0] > (y+8)[2]) goto gt; if ((x+8)[0] < (y+8)[2]) goto lt; if ((x+8)[1] > (y+8)[2]) goto gt; if ((x+8)[1] < (y+8)[2]) goto lt; if ((x+8)[2] > (y+8)[2]) goto gt; if ((x+8)[2] < (y+8)[2]) goto lt; if ((x+8)[3] > (y+8)[2]) goto gt; if ((x+8)[3] < (y+8)[2]) goto lt; if ((x+8)[0] > (y+8)[3]) goto gt; if ((x+8)[0] < (y+8)[3]) goto lt; if ((x+8)[1] > (y+8)[3]) goto gt; if ((x+8)[1] < (y+8)[3]) goto lt; if ((x+8)[2] > (y+8)[3]) goto gt; if ((x+8)[2] < (y+8)[3]) goto lt; if ((x+8)[3] > (y+8)[3]) goto gt; if ((x+8)[3] < (y+8)[3]) goto lt; if ((x+12)[0] > (y+8)[0]) goto gt; if ((x+12)[0] < (y+8)[0]) goto lt; if ((x+12)[1] > (y+8)[0]) goto gt; if ((x+12)[1] < (y+8)[0]) goto lt; if ((x+12)[2] > (y+8)[0]) goto gt; if ((x+12)[2] < (y+8)[0]) goto lt; if ((x+12)[3] > (y+8)[0]) goto gt; if ((x+12)[3] < (y+8)[0]) goto lt; if ((x+12)[0] > (y+8)[1]) goto gt; if ((x+12)[0] < (y+8)[1]) goto lt; if ((x+12)[1] > (y+8)[1]) goto gt; if ((x+12)[1] < (y+8)[1]) goto lt; if ((x+12)[2] > (y+8)[1]) goto gt; if ((x+12)[2] < (y+8)[1]) goto lt; if ((x+12)[3] > (y+8)[1]) goto gt; if ((x+12)[3] < (y+8)[1]) goto lt; if ((x+12)[0] > (y+8)[2]) goto gt; if ((x+12)[0] < (y+8)[2]) goto lt; if ((x+12)[1] > (y+8)[2]) goto gt; if ((x+12)[1] < (y+8)[2]) goto lt; if ((x+12)[2] > (y+8)[2]) goto gt; if ((x+12)[2] < (y+8)[2]) goto lt; if ((x+12)[3] > (y+8)[2]) goto gt; if ((x+12)[3] < (y+8)[2]) goto lt; if ((x+12)[0] > (y+8)[3]) goto gt; if ((x+12)[0] < (y+8)[3]) goto lt; if ((x+12)[1] > (y+8)[3]) goto gt; if ((x+12)[1] < (y+8)[3]) goto lt; if ((x+12)[2] > (y+8)[3]) goto gt; if ((x+12)[2] < (y+8)[3]) goto lt; if ((x+12)[3] > (y+8)[3]) goto gt; if ((x+12)[3] < (y+8)[3]) goto lt; if ((x)[0] > (y+12)[0]) goto gt; if ((x)[0] < (y+12)[0]) goto lt; if ((x)[1] > (y+12)[0]) goto gt; if ((x)[1] < (y+12)[0]) goto lt; if ((x)[2] > (y+12)[0]) goto gt; if ((x)[2] < (y+12)[0]) goto lt; if ((x)[3] > (y+12)[0]) goto gt; if ((x)[3] < (y+12)[0]) goto lt; if ((x)[0] > (y+12)[1]) goto gt; if ((x)[0] < (y+12)[1]) goto lt; if ((x)[1] > (y+12)[1]) goto gt; if ((x)[1] < (y+12)[1]) goto lt; if ((x)[2] > (y+12)[1]) goto gt; if ((x)[2] < (y+12)[1]) goto lt; if ((x)[3] > (y+12)[1]) goto gt; if ((x)[3] < (y+12)[1]) goto lt; if ((x)[0] > (y+12)[2]) goto gt; if ((x)[0] < (y+12)[2]) goto lt; if ((x)[1] > (y+12)[2]) goto gt; if ((x)[1] < (y+12)[2]) goto lt; if ((x)[2] > (y+12)[2]) goto gt; if ((x)[2] < (y+12)[2]) goto lt; if ((x)[3] > (y+12)[2]) goto gt; if ((x)[3] < (y+12)[2]) goto lt; if ((x)[0] > (y+12)[3]) goto gt; if ((x)[0] < (y+12)[3]) goto lt; if ((x)[1] > (y+12)[3]) goto gt; if ((x)[1] < (y+12)[3]) goto lt; if ((x)[2] > (y+12)[3]) goto gt; if ((x)[2] < (y+12)[3]) goto lt; if ((x)[3] > (y+12)[3]) goto gt; if ((x)[3] < (y+12)[3]) goto lt; if ((x+4)[0] > (y+12)[0]) goto gt; if ((x+4)[0] < (y+12)[0]) goto lt; if ((x+4)[1] > (y+12)[0]) goto gt; if ((x+4)[1] < (y+12)[0]) goto lt; if ((x+4)[2] > (y+12)[0]) goto gt; if ((x+4)[2] < (y+12)[0]) goto lt; if ((x+4)[3] > (y+12)[0]) goto gt; if ((x+4)[3] < (y+12)[0]) goto lt; if ((x+4)[0] > (y+12)[1]) goto gt; if ((x+4)[0] < (y+12)[1]) goto lt; if ((x+4)[1] > (y+12)[1]) goto gt; if ((x+4)[1] < (y+12)[1]) goto lt; if ((x+4)[2] > (y+12)[1]) goto gt; if ((x+4)[2] < (y+12)[1]) goto lt; if ((x+4)[3] > (y+12)[1]) goto gt; if ((x+4)[3] < (y+12)[1]) goto lt; if ((x+4)[0] > (y+12)[2]) goto gt; if ((x+4)[0] < (y+12)[2]) goto lt; if ((x+4)[1] > (y+12)[2]) goto gt; if ((x+4)[1] < (y+12)[2]) goto lt; if ((x+4)[2] > (y+12)[2]) goto gt; if ((x+4)[2] < (y+12)[2]) goto lt; if ((x+4)[3] > (y+12)[2]) goto gt; if ((x+4)[3] < (y+12)[2]) goto lt; if ((x+4)[0] > (y+12)[3]) goto gt; if ((x+4)[0] < (y+12)[3]) goto lt; if ((x+4)[1] > (y+12)[3]) goto gt; if ((x+4)[1] < (y+12)[3]) goto lt; if ((x+4)[2] > (y+12)[3]) goto gt; if ((x+4)[2] < (y+12)[3]) goto lt; if ((x+4)[3] > (y+12)[3]) goto gt; if ((x+4)[3] < (y+12)[3]) goto lt; if ((x+8)[0] > (y+12)[0]) goto gt; if ((x+8)[0] < (y+12)[0]) goto lt; if ((x+8)[1] > (y+12)[0]) goto gt; if ((x+8)[1] < (y+12)[0]) goto lt; if ((x+8)[2] > (y+12)[0]) goto gt; if ((x+8)[2] < (y+12)[0]) goto lt; if ((x+8)[3] > (y+12)[0]) goto gt; if ((x+8)[3] < (y+12)[0]) goto lt; if ((x+8)[0] > (y+12)[1]) goto gt; if ((x+8)[0] < (y+12)[1]) goto lt; if ((x+8)[1] > (y+12)[1]) goto gt; if ((x+8)[1] < (y+12)[1]) goto lt; if ((x+8)[2] > (y+12)[1]) goto gt; if ((x+8)[2] < (y+12)[1]) goto lt; if ((x+8)[3] > (y+12)[1]) goto gt; if ((x+8)[3] < (y+12)[1]) goto lt; if ((x+8)[0] > (y+12)[2]) goto gt; if ((x+8)[0] < (y+12)[2]) goto lt; if ((x+8)[1] > (y+12)[2]) goto gt; if ((x+8)[1] < (y+12)[2]) goto lt; if ((x+8)[2] > (y+12)[2]) goto gt; if ((x+8)[2] < (y+12)[2]) goto lt; if ((x+8)[3] > (y+12)[2]) goto gt; if ((x+8)[3] < (y+12)[2]) goto lt; if ((x+8)[0] > (y+12)[3]) goto gt; if ((x+8)[0] < (y+12)[3]) goto lt; if ((x+8)[1] > (y+12)[3]) goto gt; if ((x+8)[1] < (y+12)[3]) goto lt; if ((x+8)[2] > (y+12)[3]) goto gt; if ((x+8)[2] < (y+12)[3]) goto lt; if ((x+8)[3] > (y+12)[3]) goto gt; if ((x+8)[3] < (y+12)[3]) goto lt; if ((x+12)[0] > (y+12)[0]) goto gt; if ((x+12)[0] < (y+12)[0]) goto lt; if ((x+12)[1] > (y+12)[0]) goto gt; if ((x+12)[1] < (y+12)[0]) goto lt; if ((x+12)[2] > (y+12)[0]) goto gt; if ((x+12)[2] < (y+12)[0]) goto lt; if ((x+12)[3] > (y+12)[0]) goto gt; if ((x+12)[3] < (y+12)[0]) goto lt; if ((x+12)[0] > (y+12)[1]) goto gt; if ((x+12)[0] < (y+12)[1]) goto lt; if ((x+12)[1] > (y+12)[1]) goto gt; if ((x+12)[1] < (y+12)[1]) goto lt; if ((x+12)[2] > (y+12)[1]) goto gt; if ((x+12)[2] < (y+12)[1]) goto lt; if ((x+12)[3] > (y+12)[1]) goto gt; if ((x+12)[3] < (y+12)[1]) goto lt; if ((x+12)[0] > (y+12)[2]) goto gt; if ((x+12)[0] < (y+12)[2]) goto lt; if ((x+12)[1] > (y+12)[2]) goto gt; if ((x+12)[1] < (y+12)[2]) goto lt; if ((x+12)[2] > (y+12)[2]) goto gt; if ((x+12)[2] < (y+12)[2]) goto lt; if ((x+12)[3] > (y+12)[2]) goto gt; if ((x+12)[3] < (y+12)[2]) goto lt; if ((x+12)[0] > (y+12)[3]) goto gt; if ((x+12)[0] < (y+12)[3]) goto lt; if ((x+12)[1] > (y+12)[3]) goto gt; if ((x+12)[1] < (y+12)[3]) goto lt; if ((x+12)[2] > (y+12)[3]) goto gt; if ((x+12)[2] < (y+12)[3]) goto lt; if ((x+12)[3] > (y+12)[3]) goto gt; if ((x+12)[3] < (y+12)[3]) goto lt; if ((x+16)[0] > (y)[0]) goto gt; if ((x+16)[0] < (y)[0]) goto lt; if ((x+16)[1] > (y)[0]) goto gt; if ((x+16)[1] < (y)[0]) goto lt; if ((x+16)[2] > (y)[0]) goto gt; if ((x+16)[2] < (y)[0]) goto lt; if ((x+16)[3] > (y)[0]) goto gt; if ((x+16)[3] < (y)[0]) goto lt; if ((x+16)[0] > (y)[1]) goto gt; if ((x+16)[0] < (y)[1]) goto lt; if ((x+16)[1] > (y)[1]) goto gt; if ((x+16)[1] < (y)[1]) goto lt; if ((x+16)[2] > (y)[1]) goto gt; if ((x+16)[2] < (y)[1]) goto lt; if ((x+16)[3] > (y)[1]) goto gt; if ((x+16)[3] < (y)[1]) goto lt; if ((x+16)[0] > (y)[2]) goto gt; if ((x+16)[0] < (y)[2]) goto lt; if ((x+16)[1] > (y)[2]) goto gt; if ((x+16)[1] < (y)[2]) goto lt; if ((x+16)[2] > (y)[2]) goto gt; if ((x+16)[2] < (y)[2]) goto lt; if ((x+16)[3] > (y)[2]) goto gt; if ((x+16)[3] < (y)[2]) goto lt; if ((x+16)[0] > (y)[3]) goto gt; if ((x+16)[0] < (y)[3]) goto lt; if ((x+16)[1] > (y)[3]) goto gt; if ((x+16)[1] < (y)[3]) goto lt; if ((x+16)[2] > (y)[3]) goto gt; if ((x+16)[2] < (y)[3]) goto lt; if ((x+16)[3] > (y)[3]) goto gt; if ((x+16)[3] < (y)[3]) goto lt; if ((x+16 +4)[0] > (y)[0]) goto gt; if ((x+16 +4)[0] < (y)[0]) goto lt; if ((x+16 +4)[1] > (y)[0]) goto gt; if ((x+16 +4)[1] < (y)[0]) goto lt; if ((x+16 +4)[2] > (y)[0]) goto gt; if ((x+16 +4)[2] < (y)[0]) goto lt; if ((x+16 +4)[3] > (y)[0]) goto gt; if ((x+16 +4)[3] < (y)[0]) goto lt; if ((x+16 +4)[0] > (y)[1]) goto gt; if ((x+16 +4)[0] < (y)[1]) goto lt; if ((x+16 +4)[1] > (y)[1]) goto gt; if ((x+16 +4)[1] < (y)[1]) goto lt; if ((x+16 +4)[2] > (y)[1]) goto gt; if ((x+16 +4)[2] < (y)[1]) goto lt; if ((x+16 +4)[3] > (y)[1]) goto gt; if ((x+16 +4)[3] < (y)[1]) goto lt; if ((x+16 +4)[0] > (y)[2]) goto gt; if ((x+16 +4)[0] < (y)[2]) goto lt; if ((x+16 +4)[1] > (y)[2]) goto gt; if ((x+16 +4)[1] < (y)[2]) goto lt; if ((x+16 +4)[2] > (y)[2]) goto gt; if ((x+16 +4)[2] < (y)[2]) goto lt; if ((x+16 +4)[3] > (y)[2]) goto gt; if ((x+16 +4)[3] < (y)[2]) goto lt; if ((x+16 +4)[0] > (y)[3]) goto gt; if ((x+16 +4)[0] < (y)[3]) goto lt; if ((x+16 +4)[1] > (y)[3]) goto gt; if ((x+16 +4)[1] < (y)[3]) goto lt; if ((x+16 +4)[2] > (y)[3]) goto gt; if ((x+16 +4)[2] < (y)[3]) goto lt; if ((x+16 +4)[3] > (y)[3]) goto gt; if ((x+16 +4)[3] < (y)[3]) goto lt; if ((x+16 +8)[0] > (y)[0]) goto gt; if ((x+16 +8)[0] < (y)[0]) goto lt; if ((x+16 +8)[1] > (y)[0]) goto gt; if ((x+16 +8)[1] < (y)[0]) goto lt; if ((x+16 +8)[2] > (y)[0]) goto gt; if ((x+16 +8)[2] < (y)[0]) goto lt; if ((x+16 +8)[3] > (y)[0]) goto gt; if ((x+16 +8)[3] < (y)[0]) goto lt; if ((x+16 +8)[0] > (y)[1]) goto gt; if ((x+16 +8)[0] < (y)[1]) goto lt; if ((x+16 +8)[1] > (y)[1]) goto gt; if ((x+16 +8)[1] < (y)[1]) goto lt; if ((x+16 +8)[2] > (y)[1]) goto gt; if ((x+16 +8)[2] < (y)[1]) goto lt; if ((x+16 +8)[3] > (y)[1]) goto gt; if ((x+16 +8)[3] < (y)[1]) goto lt; if ((x+16 +8)[0] > (y)[2]) goto gt; if ((x+16 +8)[0] < (y)[2]) goto lt; if ((x+16 +8)[1] > (y)[2]) goto gt; if ((x+16 +8)[1] < (y)[2]) goto lt; if ((x+16 +8)[2] > (y)[2]) goto gt; if ((x+16 +8)[2] < (y)[2]) goto lt; if ((x+16 +8)[3] > (y)[2]) goto gt; if ((x+16 +8)[3] < (y)[2]) goto lt; if ((x+16 +8)[0] > (y)[3]) goto gt; if ((x+16 +8)[0] < (y)[3]) goto lt; if ((x+16 +8)[1] > (y)[3]) goto gt; if ((x+16 +8)[1] < (y)[3]) goto lt; if ((x+16 +8)[2] > (y)[3]) goto gt; if ((x+16 +8)[2] < (y)[3]) goto lt; if ((x+16 +8)[3] > (y)[3]) goto gt; if ((x+16 +8)[3] < (y)[3]) goto lt; if ((x+16 +12)[0] > (y)[0]) goto gt; if ((x+16 +12)[0] < (y)[0]) goto lt; if ((x+16 +12)[1] > (y)[0]) goto gt; if ((x+16 +12)[1] < (y)[0]) goto lt; if ((x+16 +12)[2] > (y)[0]) goto gt; if ((x+16 +12)[2] < (y)[0]) goto lt; if ((x+16 +12)[3] > (y)[0]) goto gt; if ((x+16 +12)[3] < (y)[0]) goto lt; if ((x+16 +12)[0] > (y)[1]) goto gt; if ((x+16 +12)[0] < (y)[1]) goto lt; if ((x+16 +12)[1] > (y)[1]) goto gt; if ((x+16 +12)[1] < (y)[1]) goto lt; if ((x+16 +12)[2] > (y)[1]) goto gt; if ((x+16 +12)[2] < (y)[1]) goto lt; if ((x+16 +12)[3] > (y)[1]) goto gt; if ((x+16 +12)[3] < (y)[1]) goto lt; if ((x+16 +12)[0] > (y)[2]) goto gt; if ((x+16 +12)[0] < (y)[2]) goto lt; if ((x+16 +12)[1] > (y)[2]) goto gt; if ((x+16 +12)[1] < (y)[2]) goto lt; if ((x+16 +12)[2] > (y)[2]) goto gt; if ((x+16 +12)[2] < (y)[2]) goto lt; if ((x+16 +12)[3] > (y)[2]) goto gt; if ((x+16 +12)[3] < (y)[2]) goto lt; if ((x+16 +12)[0] > (y)[3]) goto gt; if ((x+16 +12)[0] < (y)[3]) goto lt; if ((x+16 +12)[1] > (y)[3]) goto gt; if ((x+16 +12)[1] < (y)[3]) goto lt; if ((x+16 +12)[2] > (y)[3]) goto gt; if ((x+16 +12)[2] < (y)[3]) goto lt; if ((x+16 +12)[3] > (y)[3]) goto gt; if ((x+16 +12)[3] < (y)[3]) goto lt; if ((x+16)[0] > (y+4)[0]) goto gt; if ((x+16)[0] < (y+4)[0]) goto lt; if ((x+16)[1] > (y+4)[0]) goto gt; if ((x+16)[1] < (y+4)[0]) goto lt; if ((x+16)[2] > (y+4)[0]) goto gt; if ((x+16)[2] < (y+4)[0]) goto lt; if ((x+16)[3] > (y+4)[0]) goto gt; if ((x+16)[3] < (y+4)[0]) goto lt; if ((x+16)[0] > (y+4)[1]) goto gt; if ((x+16)[0] < (y+4)[1]) goto lt; if ((x+16)[1] > (y+4)[1]) goto gt; if ((x+16)[1] < (y+4)[1]) goto lt; if ((x+16)[2] > (y+4)[1]) goto gt; if ((x+16)[2] < (y+4)[1]) goto lt; if ((x+16)[3] > (y+4)[1]) goto gt; if ((x+16)[3] < (y+4)[1]) goto lt; if ((x+16)[0] > (y+4)[2]) goto gt; if ((x+16)[0] < (y+4)[2]) goto lt; if ((x+16)[1] > (y+4)[2]) goto gt; if ((x+16)[1] < (y+4)[2]) goto lt; if ((x+16)[2] > (y+4)[2]) goto gt; if ((x+16)[2] < (y+4)[2]) goto lt; if ((x+16)[3] > (y+4)[2]) goto gt; if ((x+16)[3] < (y+4)[2]) goto lt; if ((x+16)[0] > (y+4)[3]) goto gt; if ((x+16)[0] < (y+4)[3]) goto lt; if ((x+16)[1] > (y+4)[3]) goto gt; if ((x+16)[1] < (y+4)[3]) goto lt; if ((x+16)[2] > (y+4)[3]) goto gt; if ((x+16)[2] < (y+4)[3]) goto lt; if ((x+16)[3] > (y+4)[3]) goto gt; if ((x+16)[3] < (y+4)[3]) goto lt; if ((x+16 +4)[0] > (y+4)[0]) goto gt; if ((x+16 +4)[0] < (y+4)[0]) goto lt; if ((x+16 +4)[1] > (y+4)[0]) goto gt; if ((x+16 +4)[1] < (y+4)[0]) goto lt; if ((x+16 +4)[2] > (y+4)[0]) goto gt; if ((x+16 +4)[2] < (y+4)[0]) goto lt; if ((x+16 +4)[3] > (y+4)[0]) goto gt; if ((x+16 +4)[3] < (y+4)[0]) goto lt; if ((x+16 +4)[0] > (y+4)[1]) goto gt; if ((x+16 +4)[0] < (y+4)[1]) goto lt; if ((x+16 +4)[1] > (y+4)[1]) goto gt; if ((x+16 +4)[1] < (y+4)[1]) goto lt; if ((x+16 +4)[2] > (y+4)[1]) goto gt; if ((x+16 +4)[2] < (y+4)[1]) goto lt; if ((x+16 +4)[3] > (y+4)[1]) goto gt; if ((x+16 +4)[3] < (y+4)[1]) goto lt; if ((x+16 +4)[0] > (y+4)[2]) goto gt; if ((x+16 +4)[0] < (y+4)[2]) goto lt; if ((x+16 +4)[1] > (y+4)[2]) goto gt; if ((x+16 +4)[1] < (y+4)[2]) goto lt; if ((x+16 +4)[2] > (y+4)[2]) goto gt; if ((x+16 +4)[2] < (y+4)[2]) goto lt; if ((x+16 +4)[3] > (y+4)[2]) goto gt; if ((x+16 +4)[3] < (y+4)[2]) goto lt; if ((x+16 +4)[0] > (y+4)[3]) goto gt; if ((x+16 +4)[0] < (y+4)[3]) goto lt; if ((x+16 +4)[1] > (y+4)[3]) goto gt; if ((x+16 +4)[1] < (y+4)[3]) goto lt; if ((x+16 +4)[2] > (y+4)[3]) goto gt; if ((x+16 +4)[2] < (y+4)[3]) goto lt; if ((x+16 +4)[3] > (y+4)[3]) goto gt; if ((x+16 +4)[3] < (y+4)[3]) goto lt; if ((x+16 +8)[0] > (y+4)[0]) goto gt; if ((x+16 +8)[0] < (y+4)[0]) goto lt; if ((x+16 +8)[1] > (y+4)[0]) goto gt; if ((x+16 +8)[1] < (y+4)[0]) goto lt; if ((x+16 +8)[2] > (y+4)[0]) goto gt; if ((x+16 +8)[2] < (y+4)[0]) goto lt; if ((x+16 +8)[3] > (y+4)[0]) goto gt; if ((x+16 +8)[3] < (y+4)[0]) goto lt; if ((x+16 +8)[0] > (y+4)[1]) goto gt; if ((x+16 +8)[0] < (y+4)[1]) goto lt; if ((x+16 +8)[1] > (y+4)[1]) goto gt; if ((x+16 +8)[1] < (y+4)[1]) goto lt; if ((x+16 +8)[2] > (y+4)[1]) goto gt; if ((x+16 +8)[2] < (y+4)[1]) goto lt; if ((x+16 +8)[3] > (y+4)[1]) goto gt; if ((x+16 +8)[3] < (y+4)[1]) goto lt; if ((x+16 +8)[0] > (y+4)[2]) goto gt; if ((x+16 +8)[0] < (y+4)[2]) goto lt; if ((x+16 +8)[1] > (y+4)[2]) goto gt; if ((x+16 +8)[1] < (y+4)[2]) goto lt; if ((x+16 +8)[2] > (y+4)[2]) goto gt; if ((x+16 +8)[2] < (y+4)[2]) goto lt; if ((x+16 +8)[3] > (y+4)[2]) goto gt; if ((x+16 +8)[3] < (y+4)[2]) goto lt; if ((x+16 +8)[0] > (y+4)[3]) goto gt; if ((x+16 +8)[0] < (y+4)[3]) goto lt; if ((x+16 +8)[1] > (y+4)[3]) goto gt; if ((x+16 +8)[1] < (y+4)[3]) goto lt; if ((x+16 +8)[2] > (y+4)[3]) goto gt; if ((x+16 +8)[2] < (y+4)[3]) goto lt; if ((x+16 +8)[3] > (y+4)[3]) goto gt; if ((x+16 +8)[3] < (y+4)[3]) goto lt; if ((x+16 +12)[0] > (y+4)[0]) goto gt; if ((x+16 +12)[0] < (y+4)[0]) goto lt; if ((x+16 +12)[1] > (y+4)[0]) goto gt; if ((x+16 +12)[1] < (y+4)[0]) goto lt; if ((x+16 +12)[2] > (y+4)[0]) goto gt; if ((x+16 +12)[2] < (y+4)[0]) goto lt; if ((x+16 +12)[3] > (y+4)[0]) goto gt; if ((x+16 +12)[3] < (y+4)[0]) goto lt; if ((x+16 +12)[0] > (y+4)[1]) goto gt; if ((x+16 +12)[0] < (y+4)[1]) goto lt; if ((x+16 +12)[1] > (y+4)[1]) goto gt; if ((x+16 +12)[1] < (y+4)[1]) goto lt; if ((x+16 +12)[2] > (y+4)[1]) goto gt; if ((x+16 +12)[2] < (y+4)[1]) goto lt; if ((x+16 +12)[3] > (y+4)[1]) goto gt; if ((x+16 +12)[3] < (y+4)[1]) goto lt; if ((x+16 +12)[0] > (y+4)[2]) goto gt; if ((x+16 +12)[0] < (y+4)[2]) goto lt; if ((x+16 +12)[1] > (y+4)[2]) goto gt; if ((x+16 +12)[1] < (y+4)[2]) goto lt; if ((x+16 +12)[2] > (y+4)[2]) goto gt; if ((x+16 +12)[2] < (y+4)[2]) goto lt; if ((x+16 +12)[3] > (y+4)[2]) goto gt; if ((x+16 +12)[3] < (y+4)[2]) goto lt; if ((x+16 +12)[0] > (y+4)[3]) goto gt; if ((x+16 +12)[0] < (y+4)[3]) goto lt; if ((x+16 +12)[1] > (y+4)[3]) goto gt; if ((x+16 +12)[1] < (y+4)[3]) goto lt; if ((x+16 +12)[2] > (y+4)[3]) goto gt; if ((x+16 +12)[2] < (y+4)[3]) goto lt; if ((x+16 +12)[3] > (y+4)[3]) goto gt; if ((x+16 +12)[3] < (y+4)[3]) goto lt; if ((x+16)[0] > (y+8)[0]) goto gt; if ((x+16)[0] < (y+8)[0]) goto lt; if ((x+16)[1] > (y+8)[0]) goto gt; if ((x+16)[1] < (y+8)[0]) goto lt; if ((x+16)[2] > (y+8)[0]) goto gt; if ((x+16)[2] < (y+8)[0]) goto lt; if ((x+16)[3] > (y+8)[0]) goto gt; if ((x+16)[3] < (y+8)[0]) goto lt; if ((x+16)[0] > (y+8)[1]) goto gt; if ((x+16)[0] < (y+8)[1]) goto lt; if ((x+16)[1] > (y+8)[1]) goto gt; if ((x+16)[1] < (y+8)[1]) goto lt; if ((x+16)[2] > (y+8)[1]) goto gt; if ((x+16)[2] < (y+8)[1]) goto lt; if ((x+16)[3] > (y+8)[1]) goto gt; if ((x+16)[3] < (y+8)[1]) goto lt; if ((x+16)[0] > (y+8)[2]) goto gt; if ((x+16)[0] < (y+8)[2]) goto lt; if ((x+16)[1] > (y+8)[2]) goto gt; if ((x+16)[1] < (y+8)[2]) goto lt; if ((x+16)[2] > (y+8)[2]) goto gt; if ((x+16)[2] < (y+8)[2]) goto lt; if ((x+16)[3] > (y+8)[2]) goto gt; if ((x+16)[3] < (y+8)[2]) goto lt; if ((x+16)[0] > (y+8)[3]) goto gt; if ((x+16)[0] < (y+8)[3]) goto lt; if ((x+16)[1] > (y+8)[3]) goto gt; if ((x+16)[1] < (y+8)[3]) goto lt; if ((x+16)[2] > (y+8)[3]) goto gt; if ((x+16)[2] < (y+8)[3]) goto lt; if ((x+16)[3] > (y+8)[3]) goto gt; if ((x+16)[3] < (y+8)[3]) goto lt; if ((x+16 +4)[0] > (y+8)[0]) goto gt; if ((x+16 +4)[0] < (y+8)[0]) goto lt; if ((x+16 +4)[1] > (y+8)[0]) goto gt; if ((x+16 +4)[1] < (y+8)[0]) goto lt; if ((x+16 +4)[2] > (y+8)[0]) goto gt; if ((x+16 +4)[2] < (y+8)[0]) goto lt; if ((x+16 +4)[3] > (y+8)[0]) goto gt; if ((x+16 +4)[3] < (y+8)[0]) goto lt; if ((x+16 +4)[0] > (y+8)[1]) goto gt; if ((x+16 +4)[0] < (y+8)[1]) goto lt; if ((x+16 +4)[1] > (y+8)[1]) goto gt; if ((x+16 +4)[1] < (y+8)[1]) goto lt; if ((x+16 +4)[2] > (y+8)[1]) goto gt; if ((x+16 +4)[2] < (y+8)[1]) goto lt; if ((x+16 +4)[3] > (y+8)[1]) goto gt; if ((x+16 +4)[3] < (y+8)[1]) goto lt; if ((x+16 +4)[0] > (y+8)[2]) goto gt; if ((x+16 +4)[0] < (y+8)[2]) goto lt; if ((x+16 +4)[1] > (y+8)[2]) goto gt; if ((x+16 +4)[1] < (y+8)[2]) goto lt; if ((x+16 +4)[2] > (y+8)[2]) goto gt; if ((x+16 +4)[2] < (y+8)[2]) goto lt; if ((x+16 +4)[3] > (y+8)[2]) goto gt; if ((x+16 +4)[3] < (y+8)[2]) goto lt; if ((x+16 +4)[0] > (y+8)[3]) goto gt; if ((x+16 +4)[0] < (y+8)[3]) goto lt; if ((x+16 +4)[1] > (y+8)[3]) goto gt; if ((x+16 +4)[1] < (y+8)[3]) goto lt; if ((x+16 +4)[2] > (y+8)[3]) goto gt; if ((x+16 +4)[2] < (y+8)[3]) goto lt; if ((x+16 +4)[3] > (y+8)[3]) goto gt; if ((x+16 +4)[3] < (y+8)[3]) goto lt; if ((x+16 +8)[0] > (y+8)[0]) goto gt; if ((x+16 +8)[0] < (y+8)[0]) goto lt; if ((x+16 +8)[1] > (y+8)[0]) goto gt; if ((x+16 +8)[1] < (y+8)[0]) goto lt; if ((x+16 +8)[2] > (y+8)[0]) goto gt; if ((x+16 +8)[2] < (y+8)[0]) goto lt; if ((x+16 +8)[3] > (y+8)[0]) goto gt; if ((x+16 +8)[3] < (y+8)[0]) goto lt; if ((x+16 +8)[0] > (y+8)[1]) goto gt; if ((x+16 +8)[0] < (y+8)[1]) goto lt; if ((x+16 +8)[1] > (y+8)[1]) goto gt; if ((x+16 +8)[1] < (y+8)[1]) goto lt; if ((x+16 +8)[2] > (y+8)[1]) goto gt; if ((x+16 +8)[2] < (y+8)[1]) goto lt; if ((x+16 +8)[3] > (y+8)[1]) goto gt; if ((x+16 +8)[3] < (y+8)[1]) goto lt; if ((x+16 +8)[0] > (y+8)[2]) goto gt; if ((x+16 +8)[0] < (y+8)[2]) goto lt; if ((x+16 +8)[1] > (y+8)[2]) goto gt; if ((x+16 +8)[1] < (y+8)[2]) goto lt; if ((x+16 +8)[2] > (y+8)[2]) goto gt; if ((x+16 +8)[2] < (y+8)[2]) goto lt; if ((x+16 +8)[3] > (y+8)[2]) goto gt; if ((x+16 +8)[3] < (y+8)[2]) goto lt; if ((x+16 +8)[0] > (y+8)[3]) goto gt; if ((x+16 +8)[0] < (y+8)[3]) goto lt; if ((x+16 +8)[1] > (y+8)[3]) goto gt; if ((x+16 +8)[1] < (y+8)[3]) goto lt; if ((x+16 +8)[2] > (y+8)[3]) goto gt; if ((x+16 +8)[2] < (y+8)[3]) goto lt; if ((x+16 +8)[3] > (y+8)[3]) goto gt; if ((x+16 +8)[3] < (y+8)[3]) goto lt; if ((x+16 +12)[0] > (y+8)[0]) goto gt; if ((x+16 +12)[0] < (y+8)[0]) goto lt; if ((x+16 +12)[1] > (y+8)[0]) goto gt; if ((x+16 +12)[1] < (y+8)[0]) goto lt; if ((x+16 +12)[2] > (y+8)[0]) goto gt; if ((x+16 +12)[2] < (y+8)[0]) goto lt; if ((x+16 +12)[3] > (y+8)[0]) goto gt; if ((x+16 +12)[3] < (y+8)[0]) goto lt; if ((x+16 +12)[0] > (y+8)[1]) goto gt; if ((x+16 +12)[0] < (y+8)[1]) goto lt; if ((x+16 +12)[1] > (y+8)[1]) goto gt; if ((x+16 +12)[1] < (y+8)[1]) goto lt; if ((x+16 +12)[2] > (y+8)[1]) goto gt; if ((x+16 +12)[2] < (y+8)[1]) goto lt; if ((x+16 +12)[3] > (y+8)[1]) goto gt; if ((x+16 +12)[3] < (y+8)[1]) goto lt; if ((x+16 +12)[0] > (y+8)[2]) goto gt; if ((x+16 +12)[0] < (y+8)[2]) goto lt; if ((x+16 +12)[1] > (y+8)[2]) goto gt; if ((x+16 +12)[1] < (y+8)[2]) goto lt; if ((x+16 +12)[2] > (y+8)[2]) goto gt; if ((x+16 +12)[2] < (y+8)[2]) goto lt; if ((x+16 +12)[3] > (y+8)[2]) goto gt; if ((x+16 +12)[3] < (y+8)[2]) goto lt; if ((x+16 +12)[0] > (y+8)[3]) goto gt; if ((x+16 +12)[0] < (y+8)[3]) goto lt; if ((x+16 +12)[1] > (y+8)[3]) goto gt; if ((x+16 +12)[1] < (y+8)[3]) goto lt; if ((x+16 +12)[2] > (y+8)[3]) goto gt; if ((x+16 +12)[2] < (y+8)[3]) goto lt; if ((x+16 +12)[3] > (y+8)[3]) goto gt; if ((x+16 +12)[3] < (y+8)[3]) goto lt; if ((x+16)[0] > (y+12)[0]) goto gt; if ((x+16)[0] < (y+12)[0]) goto lt; if ((x+16)[1] > (y+12)[0]) goto gt; if ((x+16)[1] < (y+12)[0]) goto lt; if ((x+16)[2] > (y+12)[0]) goto gt; if ((x+16)[2] < (y+12)[0]) goto lt; if ((x+16)[3] > (y+12)[0]) goto gt; if ((x+16)[3] < (y+12)[0]) goto lt; if ((x+16)[0] > (y+12)[1]) goto gt; if ((x+16)[0] < (y+12)[1]) goto lt; if ((x+16)[1] > (y+12)[1]) goto gt; if ((x+16)[1] < (y+12)[1]) goto lt; if ((x+16)[2] > (y+12)[1]) goto gt; if ((x+16)[2] < (y+12)[1]) goto lt; if ((x+16)[3] > (y+12)[1]) goto gt; if ((x+16)[3] < (y+12)[1]) goto lt; if ((x+16)[0] > (y+12)[2]) goto gt; if ((x+16)[0] < (y+12)[2]) goto lt; if ((x+16)[1] > (y+12)[2]) goto gt; if ((x+16)[1] < (y+12)[2]) goto lt; if ((x+16)[2] > (y+12)[2]) goto gt; if ((x+16)[2] < (y+12)[2]) goto lt; if ((x+16)[3] > (y+12)[2]) goto gt; if ((x+16)[3] < (y+12)[2]) goto lt; if ((x+16)[0] > (y+12)[3]) goto gt; if ((x+16)[0] < (y+12)[3]) goto lt; if ((x+16)[1] > (y+12)[3]) goto gt; if ((x+16)[1] < (y+12)[3]) goto lt; if ((x+16)[2] > (y+12)[3]) goto gt; if ((x+16)[2] < (y+12)[3]) goto lt; if ((x+16)[3] > (y+12)[3]) goto gt; if ((x+16)[3] < (y+12)[3]) goto lt; if ((x+16 +4)[0] > (y+12)[0]) goto gt; if ((x+16 +4)[0] < (y+12)[0]) goto lt; if ((x+16 +4)[1] > (y+12)[0]) goto gt; if ((x+16 +4)[1] < (y+12)[0]) goto lt; if ((x+16 +4)[2] > (y+12)[0]) goto gt; if ((x+16 +4)[2] < (y+12)[0]) goto lt; if ((x+16 +4)[3] > (y+12)[0]) goto gt; if ((x+16 +4)[3] < (y+12)[0]) goto lt; if ((x+16 +4)[0] > (y+12)[1]) goto gt; if ((x+16 +4)[0] < (y+12)[1]) goto lt; if ((x+16 +4)[1] > (y+12)[1]) goto gt; if ((x+16 +4)[1] < (y+12)[1]) goto lt; if ((x+16 +4)[2] > (y+12)[1]) goto gt; if ((x+16 +4)[2] < (y+12)[1]) goto lt; if ((x+16 +4)[3] > (y+12)[1]) goto gt; if ((x+16 +4)[3] < (y+12)[1]) goto lt; if ((x+16 +4)[0] > (y+12)[2]) goto gt; if ((x+16 +4)[0] < (y+12)[2]) goto lt; if ((x+16 +4)[1] > (y+12)[2]) goto gt; if ((x+16 +4)[1] < (y+12)[2]) goto lt; if ((x+16 +4)[2] > (y+12)[2]) goto gt; if ((x+16 +4)[2] < (y+12)[2]) goto lt; if ((x+16 +4)[3] > (y+12)[2]) goto gt; if ((x+16 +4)[3] < (y+12)[2]) goto lt; if ((x+16 +4)[0] > (y+12)[3]) goto gt; if ((x+16 +4)[0] < (y+12)[3]) goto lt; if ((x+16 +4)[1] > (y+12)[3]) goto gt; if ((x+16 +4)[1] < (y+12)[3]) goto lt; if ((x+16 +4)[2] > (y+12)[3]) goto gt; if ((x+16 +4)[2] < (y+12)[3]) goto lt; if ((x+16 +4)[3] > (y+12)[3]) goto gt; if ((x+16 +4)[3] < (y+12)[3]) goto lt; if ((x+16 +8)[0] > (y+12)[0]) goto gt; if ((x+16 +8)[0] < (y+12)[0]) goto lt; if ((x+16 +8)[1] > (y+12)[0]) goto gt; if ((x+16 +8)[1] < (y+12)[0]) goto lt; if ((x+16 +8)[2] > (y+12)[0]) goto gt; if ((x+16 +8)[2] < (y+12)[0]) goto lt; if ((x+16 +8)[3] > (y+12)[0]) goto gt; if ((x+16 +8)[3] < (y+12)[0]) goto lt; if ((x+16 +8)[0] > (y+12)[1]) goto gt; if ((x+16 +8)[0] < (y+12)[1]) goto lt; if ((x+16 +8)[1] > (y+12)[1]) goto gt; if ((x+16 +8)[1] < (y+12)[1]) goto lt; if ((x+16 +8)[2] > (y+12)[1]) goto gt; if ((x+16 +8)[2] < (y+12)[1]) goto lt; if ((x+16 +8)[3] > (y+12)[1]) goto gt; if ((x+16 +8)[3] < (y+12)[1]) goto lt; if ((x+16 +8)[0] > (y+12)[2]) goto gt; if ((x+16 +8)[0] < (y+12)[2]) goto lt; if ((x+16 +8)[1] > (y+12)[2]) goto gt; if ((x+16 +8)[1] < (y+12)[2]) goto lt; if ((x+16 +8)[2] > (y+12)[2]) goto gt; if ((x+16 +8)[2] < (y+12)[2]) goto lt; if ((x+16 +8)[3] > (y+12)[2]) goto gt; if ((x+16 +8)[3] < (y+12)[2]) goto lt; if ((x+16 +8)[0] > (y+12)[3]) goto gt; if ((x+16 +8)[0] < (y+12)[3]) goto lt; if ((x+16 +8)[1] > (y+12)[3]) goto gt; if ((x+16 +8)[1] < (y+12)[3]) goto lt; if ((x+16 +8)[2] > (y+12)[3]) goto gt; if ((x+16 +8)[2] < (y+12)[3]) goto lt; if ((x+16 +8)[3] > (y+12)[3]) goto gt; if ((x+16 +8)[3] < (y+12)[3]) goto lt; if ((x+16 +12)[0] > (y+12)[0]) goto gt; if ((x+16 +12)[0] < (y+12)[0]) goto lt; if ((x+16 +12)[1] > (y+12)[0]) goto gt; if ((x+16 +12)[1] < (y+12)[0]) goto lt; if ((x+16 +12)[2] > (y+12)[0]) goto gt; if ((x+16 +12)[2] < (y+12)[0]) goto lt; if ((x+16 +12)[3] > (y+12)[0]) goto gt; if ((x+16 +12)[3] < (y+12)[0]) goto lt; if ((x+16 +12)[0] > (y+12)[1]) goto gt; if ((x+16 +12)[0] < (y+12)[1]) goto lt; if ((x+16 +12)[1] > (y+12)[1]) goto gt; if ((x+16 +12)[1] < (y+12)[1]) goto lt; if ((x+16 +12)[2] > (y+12)[1]) goto gt; if ((x+16 +12)[2] < (y+12)[1]) goto lt; if ((x+16 +12)[3] > (y+12)[1]) goto gt; if ((x+16 +12)[3] < (y+12)[1]) goto lt; if ((x+16 +12)[0] > (y+12)[2]) goto gt; if ((x+16 +12)[0] < (y+12)[2]) goto lt; if ((x+16 +12)[1] > (y+12)[2]) goto gt; if ((x+16 +12)[1] < (y+12)[2]) goto lt; if ((x+16 +12)[2] > (y+12)[2]) goto gt; if ((x+16 +12)[2] < (y+12)[2]) goto lt; if ((x+16 +12)[3] > (y+12)[2]) goto gt; if ((x+16 +12)[3] < (y+12)[2]) goto lt; if ((x+16 +12)[0] > (y+12)[3]) goto gt; if ((x+16 +12)[0] < (y+12)[3]) goto lt; if ((x+16 +12)[1] > (y+12)[3]) goto gt; if ((x+16 +12)[1] < (y+12)[3]) goto lt; if ((x+16 +12)[2] > (y+12)[3]) goto gt; if ((x+16 +12)[2] < (y+12)[3]) goto lt; if ((x+16 +12)[3] > (y+12)[3]) goto gt; if ((x+16 +12)[3] < (y+12)[3]) goto lt; if ((x+32)[0] > (y)[0]) goto gt; if ((x+32)[0] < (y)[0]) goto lt; if ((x+32)[1] > (y)[0]) goto gt; if ((x+32)[1] < (y)[0]) goto lt; if ((x+32)[2] > (y)[0]) goto gt; if ((x+32)[2] < (y)[0]) goto lt; if ((x+32)[3] > (y)[0]) goto gt; if ((x+32)[3] < (y)[0]) goto lt; if ((x+32)[0] > (y)[1]) goto gt; if ((x+32)[0] < (y)[1]) goto lt; if ((x+32)[1] > (y)[1]) goto gt; if ((x+32)[1] < (y)[1]) goto lt; if ((x+32)[2] > (y)[1]) goto gt; if ((x+32)[2] < (y)[1]) goto lt; if ((x+32)[3] > (y)[1]) goto gt; if ((x+32)[3] < (y)[1]) goto lt; if ((x+32)[0] > (y)[2]) goto gt; if ((x+32)[0] < (y)[2]) goto lt; if ((x+32)[1] > (y)[2]) goto gt; if ((x+32)[1] < (y)[2]) goto lt; if ((x+32)[2] > (y)[2]) goto gt; if ((x+32)[2] < (y)[2]) goto lt; if ((x+32)[3] > (y)[2]) goto gt; if ((x+32)[3] < (y)[2]) goto lt; if ((x+32)[0] > (y)[3]) goto gt; if ((x+32)[0] < (y)[3]) goto lt; if ((x+32)[1] > (y)[3]) goto gt; if ((x+32)[1] < (y)[3]) goto lt; if ((x+32)[2] > (y)[3]) goto gt; if ((x+32)[2] < (y)[3]) goto lt; if ((x+32)[3] > (y)[3]) goto gt; if ((x+32)[3] < (y)[3]) goto lt; if ((x+32 +4)[0] > (y)[0]) goto gt; if ((x+32 +4)[0] < (y)[0]) goto lt; if ((x+32 +4)[1] > (y)[0]) goto gt; if ((x+32 +4)[1] < (y)[0]) goto lt; if ((x+32 +4)[2] > (y)[0]) goto gt; if ((x+32 +4)[2] < (y)[0]) goto lt; if ((x+32 +4)[3] > (y)[0]) goto gt; if ((x+32 +4)[3] < (y)[0]) goto lt; if ((x+32 +4)[0] > (y)[1]) goto gt; if ((x+32 +4)[0] < (y)[1]) goto lt; if ((x+32 +4)[1] > (y)[1]) goto gt; if ((x+32 +4)[1] < (y)[1]) goto lt; if ((x+32 +4)[2] > (y)[1]) goto gt; if ((x+32 +4)[2] < (y)[1]) goto lt; if ((x+32 +4)[3] > (y)[1]) goto gt; if ((x+32 +4)[3] < (y)[1]) goto lt; if ((x+32 +4)[0] > (y)[2]) goto gt; if ((x+32 +4)[0] < (y)[2]) goto lt; if ((x+32 +4)[1] > (y)[2]) goto gt; if ((x+32 +4)[1] < (y)[2]) goto lt; if ((x+32 +4)[2] > (y)[2]) goto gt; if ((x+32 +4)[2] < (y)[2]) goto lt; if ((x+32 +4)[3] > (y)[2]) goto gt; if ((x+32 +4)[3] < (y)[2]) goto lt; if ((x+32 +4)[0] > (y)[3]) goto gt; if ((x+32 +4)[0] < (y)[3]) goto lt; if ((x+32 +4)[1] > (y)[3]) goto gt; if ((x+32 +4)[1] < (y)[3]) goto lt; if ((x+32 +4)[2] > (y)[3]) goto gt; if ((x+32 +4)[2] < (y)[3]) goto lt; if ((x+32 +4)[3] > (y)[3]) goto gt; if ((x+32 +4)[3] < (y)[3]) goto lt; if ((x+32 +8)[0] > (y)[0]) goto gt; if ((x+32 +8)[0] < (y)[0]) goto lt; if ((x+32 +8)[1] > (y)[0]) goto gt; if ((x+32 +8)[1] < (y)[0]) goto lt; if ((x+32 +8)[2] > (y)[0]) goto gt; if ((x+32 +8)[2] < (y)[0]) goto lt; if ((x+32 +8)[3] > (y)[0]) goto gt; if ((x+32 +8)[3] < (y)[0]) goto lt; if ((x+32 +8)[0] > (y)[1]) goto gt; if ((x+32 +8)[0] < (y)[1]) goto lt; if ((x+32 +8)[1] > (y)[1]) goto gt; if ((x+32 +8)[1] < (y)[1]) goto lt; if ((x+32 +8)[2] > (y)[1]) goto gt; if ((x+32 +8)[2] < (y)[1]) goto lt; if ((x+32 +8)[3] > (y)[1]) goto gt; if ((x+32 +8)[3] < (y)[1]) goto lt; if ((x+32 +8)[0] > (y)[2]) goto gt; if ((x+32 +8)[0] < (y)[2]) goto lt; if ((x+32 +8)[1] > (y)[2]) goto gt; if ((x+32 +8)[1] < (y)[2]) goto lt; if ((x+32 +8)[2] > (y)[2]) goto gt; if ((x+32 +8)[2] < (y)[2]) goto lt; if ((x+32 +8)[3] > (y)[2]) goto gt; if ((x+32 +8)[3] < (y)[2]) goto lt; if ((x+32 +8)[0] > (y)[3]) goto gt; if ((x+32 +8)[0] < (y)[3]) goto lt; if ((x+32 +8)[1] > (y)[3]) goto gt; if ((x+32 +8)[1] < (y)[3]) goto lt; if ((x+32 +8)[2] > (y)[3]) goto gt; if ((x+32 +8)[2] < (y)[3]) goto lt; if ((x+32 +8)[3] > (y)[3]) goto gt; if ((x+32 +8)[3] < (y)[3]) goto lt; if ((x+32 +12)[0] > (y)[0]) goto gt; if ((x+32 +12)[0] < (y)[0]) goto lt; if ((x+32 +12)[1] > (y)[0]) goto gt; if ((x+32 +12)[1] < (y)[0]) goto lt; if ((x+32 +12)[2] > (y)[0]) goto gt; if ((x+32 +12)[2] < (y)[0]) goto lt; if ((x+32 +12)[3] > (y)[0]) goto gt; if ((x+32 +12)[3] < (y)[0]) goto lt; if ((x+32 +12)[0] > (y)[1]) goto gt; if ((x+32 +12)[0] < (y)[1]) goto lt; if ((x+32 +12)[1] > (y)[1]) goto gt; if ((x+32 +12)[1] < (y)[1]) goto lt; if ((x+32 +12)[2] > (y)[1]) goto gt; if ((x+32 +12)[2] < (y)[1]) goto lt; if ((x+32 +12)[3] > (y)[1]) goto gt; if ((x+32 +12)[3] < (y)[1]) goto lt; if ((x+32 +12)[0] > (y)[2]) goto gt; if ((x+32 +12)[0] < (y)[2]) goto lt; if ((x+32 +12)[1] > (y)[2]) goto gt; if ((x+32 +12)[1] < (y)[2]) goto lt; if ((x+32 +12)[2] > (y)[2]) goto gt; if ((x+32 +12)[2] < (y)[2]) goto lt; if ((x+32 +12)[3] > (y)[2]) goto gt; if ((x+32 +12)[3] < (y)[2]) goto lt; if ((x+32 +12)[0] > (y)[3]) goto gt; if ((x+32 +12)[0] < (y)[3]) goto lt; if ((x+32 +12)[1] > (y)[3]) goto gt; if ((x+32 +12)[1] < (y)[3]) goto lt; if ((x+32 +12)[2] > (y)[3]) goto gt; if ((x+32 +12)[2] < (y)[3]) goto lt; if ((x+32 +12)[3] > (y)[3]) goto gt; if ((x+32 +12)[3] < (y)[3]) goto lt; if ((x+32)[0] > (y+4)[0]) goto gt; if ((x+32)[0] < (y+4)[0]) goto lt; if ((x+32)[1] > (y+4)[0]) goto gt; if ((x+32)[1] < (y+4)[0]) goto lt; if ((x+32)[2] > (y+4)[0]) goto gt; if ((x+32)[2] < (y+4)[0]) goto lt; if ((x+32)[3] > (y+4)[0]) goto gt; if ((x+32)[3] < (y+4)[0]) goto lt; if ((x+32)[0] > (y+4)[1]) goto gt; if ((x+32)[0] < (y+4)[1]) goto lt; if ((x+32)[1] > (y+4)[1]) goto gt; if ((x+32)[1] < (y+4)[1]) goto lt; if ((x+32)[2] > (y+4)[1]) goto gt; if ((x+32)[2] < (y+4)[1]) goto lt; if ((x+32)[3] > (y+4)[1]) goto gt; if ((x+32)[3] < (y+4)[1]) goto lt; if ((x+32)[0] > (y+4)[2]) goto gt; if ((x+32)[0] < (y+4)[2]) goto lt; if ((x+32)[1] > (y+4)[2]) goto gt; if ((x+32)[1] < (y+4)[2]) goto lt; if ((x+32)[2] > (y+4)[2]) goto gt; if ((x+32)[2] < (y+4)[2]) goto lt; if ((x+32)[3] > (y+4)[2]) goto gt; if ((x+32)[3] < (y+4)[2]) goto lt; if ((x+32)[0] > (y+4)[3]) goto gt; if ((x+32)[0] < (y+4)[3]) goto lt; if ((x+32)[1] > (y+4)[3]) goto gt; if ((x+32)[1] < (y+4)[3]) goto lt; if ((x+32)[2] > (y+4)[3]) goto gt; if ((x+32)[2] < (y+4)[3]) goto lt; if ((x+32)[3] > (y+4)[3]) goto gt; if ((x+32)[3] < (y+4)[3]) goto lt; if ((x+32 +4)[0] > (y+4)[0]) goto gt; if ((x+32 +4)[0] < (y+4)[0]) goto lt; if ((x+32 +4)[1] > (y+4)[0]) goto gt; if ((x+32 +4)[1] < (y+4)[0]) goto lt; if ((x+32 +4)[2] > (y+4)[0]) goto gt; if ((x+32 +4)[2] < (y+4)[0]) goto lt; if ((x+32 +4)[3] > (y+4)[0]) goto gt; if ((x+32 +4)[3] < (y+4)[0]) goto lt; if ((x+32 +4)[0] > (y+4)[1]) goto gt; if ((x+32 +4)[0] < (y+4)[1]) goto lt; if ((x+32 +4)[1] > (y+4)[1]) goto gt; if ((x+32 +4)[1] < (y+4)[1]) goto lt; if ((x+32 +4)[2] > (y+4)[1]) goto gt; if ((x+32 +4)[2] < (y+4)[1]) goto lt; if ((x+32 +4)[3] > (y+4)[1]) goto gt; if ((x+32 +4)[3] < (y+4)[1]) goto lt; if ((x+32 +4)[0] > (y+4)[2]) goto gt; if ((x+32 +4)[0] < (y+4)[2]) goto lt; if ((x+32 +4)[1] > (y+4)[2]) goto gt; if ((x+32 +4)[1] < (y+4)[2]) goto lt; if ((x+32 +4)[2] > (y+4)[2]) goto gt; if ((x+32 +4)[2] < (y+4)[2]) goto lt; if ((x+32 +4)[3] > (y+4)[2]) goto gt; if ((x+32 +4)[3] < (y+4)[2]) goto lt; if ((x+32 +4)[0] > (y+4)[3]) goto gt; if ((x+32 +4)[0] < (y+4)[3]) goto lt; if ((x+32 +4)[1] > (y+4)[3]) goto gt; if ((x+32 +4)[1] < (y+4)[3]) goto lt; if ((x+32 +4)[2] > (y+4)[3]) goto gt; if ((x+32 +4)[2] < (y+4)[3]) goto lt; if ((x+32 +4)[3] > (y+4)[3]) goto gt; if ((x+32 +4)[3] < (y+4)[3]) goto lt; if ((x+32 +8)[0] > (y+4)[0]) goto gt; if ((x+32 +8)[0] < (y+4)[0]) goto lt; if ((x+32 +8)[1] > (y+4)[0]) goto gt; if ((x+32 +8)[1] < (y+4)[0]) goto lt; if ((x+32 +8)[2] > (y+4)[0]) goto gt; if ((x+32 +8)[2] < (y+4)[0]) goto lt; if ((x+32 +8)[3] > (y+4)[0]) goto gt; if ((x+32 +8)[3] < (y+4)[0]) goto lt; if ((x+32 +8)[0] > (y+4)[1]) goto gt; if ((x+32 +8)[0] < (y+4)[1]) goto lt; if ((x+32 +8)[1] > (y+4)[1]) goto gt; if ((x+32 +8)[1] < (y+4)[1]) goto lt; if ((x+32 +8)[2] > (y+4)[1]) goto gt; if ((x+32 +8)[2] < (y+4)[1]) goto lt; if ((x+32 +8)[3] > (y+4)[1]) goto gt; if ((x+32 +8)[3] < (y+4)[1]) goto lt; if ((x+32 +8)[0] > (y+4)[2]) goto gt; if ((x+32 +8)[0] < (y+4)[2]) goto lt; if ((x+32 +8)[1] > (y+4)[2]) goto gt; if ((x+32 +8)[1] < (y+4)[2]) goto lt; if ((x+32 +8)[2] > (y+4)[2]) goto gt; if ((x+32 +8)[2] < (y+4)[2]) goto lt; if ((x+32 +8)[3] > (y+4)[2]) goto gt; if ((x+32 +8)[3] < (y+4)[2]) goto lt; if ((x+32 +8)[0] > (y+4)[3]) goto gt; if ((x+32 +8)[0] < (y+4)[3]) goto lt; if ((x+32 +8)[1] > (y+4)[3]) goto gt; if ((x+32 +8)[1] < (y+4)[3]) goto lt; if ((x+32 +8)[2] > (y+4)[3]) goto gt; if ((x+32 +8)[2] < (y+4)[3]) goto lt; if ((x+32 +8)[3] > (y+4)[3]) goto gt; if ((x+32 +8)[3] < (y+4)[3]) goto lt; if ((x+32 +12)[0] > (y+4)[0]) goto gt; if ((x+32 +12)[0] < (y+4)[0]) goto lt; if ((x+32 +12)[1] > (y+4)[0]) goto gt; if ((x+32 +12)[1] < (y+4)[0]) goto lt; if ((x+32 +12)[2] > (y+4)[0]) goto gt; if ((x+32 +12)[2] < (y+4)[0]) goto lt; if ((x+32 +12)[3] > (y+4)[0]) goto gt; if ((x+32 +12)[3] < (y+4)[0]) goto lt; if ((x+32 +12)[0] > (y+4)[1]) goto gt; if ((x+32 +12)[0] < (y+4)[1]) goto lt; if ((x+32 +12)[1] > (y+4)[1]) goto gt; if ((x+32 +12)[1] < (y+4)[1]) goto lt; if ((x+32 +12)[2] > (y+4)[1]) goto gt; if ((x+32 +12)[2] < (y+4)[1]) goto lt; if ((x+32 +12)[3] > (y+4)[1]) goto gt; if ((x+32 +12)[3] < (y+4)[1]) goto lt; if ((x+32 +12)[0] > (y+4)[2]) goto gt; if ((x+32 +12)[0] < (y+4)[2]) goto lt; if ((x+32 +12)[1] > (y+4)[2]) goto gt; if ((x+32 +12)[1] < (y+4)[2]) goto lt; if ((x+32 +12)[2] > (y+4)[2]) goto gt; if ((x+32 +12)[2] < (y+4)[2]) goto lt; if ((x+32 +12)[3] > (y+4)[2]) goto gt; if ((x+32 +12)[3] < (y+4)[2]) goto lt; if ((x+32 +12)[0] > (y+4)[3]) goto gt; if ((x+32 +12)[0] < (y+4)[3]) goto lt; if ((x+32 +12)[1] > (y+4)[3]) goto gt; if ((x+32 +12)[1] < (y+4)[3]) goto lt; if ((x+32 +12)[2] > (y+4)[3]) goto gt; if ((x+32 +12)[2] < (y+4)[3]) goto lt; if ((x+32 +12)[3] > (y+4)[3]) goto gt; if ((x+32 +12)[3] < (y+4)[3]) goto lt; if ((x+32)[0] > (y+8)[0]) goto gt; if ((x+32)[0] < (y+8)[0]) goto lt; if ((x+32)[1] > (y+8)[0]) goto gt; if ((x+32)[1] < (y+8)[0]) goto lt; if ((x+32)[2] > (y+8)[0]) goto gt; if ((x+32)[2] < (y+8)[0]) goto lt; if ((x+32)[3] > (y+8)[0]) goto gt; if ((x+32)[3] < (y+8)[0]) goto lt; if ((x+32)[0] > (y+8)[1]) goto gt; if ((x+32)[0] < (y+8)[1]) goto lt; if ((x+32)[1] > (y+8)[1]) goto gt; if ((x+32)[1] < (y+8)[1]) goto lt; if ((x+32)[2] > (y+8)[1]) goto gt; if ((x+32)[2] < (y+8)[1]) goto lt; if ((x+32)[3] > (y+8)[1]) goto gt; if ((x+32)[3] < (y+8)[1]) goto lt; if ((x+32)[0] > (y+8)[2]) goto gt; if ((x+32)[0] < (y+8)[2]) goto lt; if ((x+32)[1] > (y+8)[2]) goto gt; if ((x+32)[1] < (y+8)[2]) goto lt; if ((x+32)[2] > (y+8)[2]) goto gt; if ((x+32)[2] < (y+8)[2]) goto lt; if ((x+32)[3] > (y+8)[2]) goto gt; if ((x+32)[3] < (y+8)[2]) goto lt; if ((x+32)[0] > (y+8)[3]) goto gt; if ((x+32)[0] < (y+8)[3]) goto lt; if ((x+32)[1] > (y+8)[3]) goto gt; if ((x+32)[1] < (y+8)[3]) goto lt; if ((x+32)[2] > (y+8)[3]) goto gt; if ((x+32)[2] < (y+8)[3]) goto lt; if ((x+32)[3] > (y+8)[3]) goto gt; if ((x+32)[3] < (y+8)[3]) goto lt; if ((x+32 +4)[0] > (y+8)[0]) goto gt; if ((x+32 +4)[0] < (y+8)[0]) goto lt; if ((x+32 +4)[1] > (y+8)[0]) goto gt; if ((x+32 +4)[1] < (y+8)[0]) goto lt; if ((x+32 +4)[2] > (y+8)[0]) goto gt; if ((x+32 +4)[2] < (y+8)[0]) goto lt; if ((x+32 +4)[3] > (y+8)[0]) goto gt; if ((x+32 +4)[3] < (y+8)[0]) goto lt; if ((x+32 +4)[0] > (y+8)[1]) goto gt; if ((x+32 +4)[0] < (y+8)[1]) goto lt; if ((x+32 +4)[1] > (y+8)[1]) goto gt; if ((x+32 +4)[1] < (y+8)[1]) goto lt; if ((x+32 +4)[2] > (y+8)[1]) goto gt; if ((x+32 +4)[2] < (y+8)[1]) goto lt; if ((x+32 +4)[3] > (y+8)[1]) goto gt; if ((x+32 +4)[3] < (y+8)[1]) goto lt; if ((x+32 +4)[0] > (y+8)[2]) goto gt; if ((x+32 +4)[0] < (y+8)[2]) goto lt; if ((x+32 +4)[1] > (y+8)[2]) goto gt; if ((x+32 +4)[1] < (y+8)[2]) goto lt; if ((x+32 +4)[2] > (y+8)[2]) goto gt; if ((x+32 +4)[2] < (y+8)[2]) goto lt; if ((x+32 +4)[3] > (y+8)[2]) goto gt; if ((x+32 +4)[3] < (y+8)[2]) goto lt; if ((x+32 +4)[0] > (y+8)[3]) goto gt; if ((x+32 +4)[0] < (y+8)[3]) goto lt; if ((x+32 +4)[1] > (y+8)[3]) goto gt; if ((x+32 +4)[1] < (y+8)[3]) goto lt; if ((x+32 +4)[2] > (y+8)[3]) goto gt; if ((x+32 +4)[2] < (y+8)[3]) goto lt; if ((x+32 +4)[3] > (y+8)[3]) goto gt; if ((x+32 +4)[3] < (y+8)[3]) goto lt; if ((x+32 +8)[0] > (y+8)[0]) goto gt; if ((x+32 +8)[0] < (y+8)[0]) goto lt; if ((x+32 +8)[1] > (y+8)[0]) goto gt; if ((x+32 +8)[1] < (y+8)[0]) goto lt; if ((x+32 +8)[2] > (y+8)[0]) goto gt; if ((x+32 +8)[2] < (y+8)[0]) goto lt; if ((x+32 +8)[3] > (y+8)[0]) goto gt; if ((x+32 +8)[3] < (y+8)[0]) goto lt; if ((x+32 +8)[0] > (y+8)[1]) goto gt; if ((x+32 +8)[0] < (y+8)[1]) goto lt; if ((x+32 +8)[1] > (y+8)[1]) goto gt; if ((x+32 +8)[1] < (y+8)[1]) goto lt; if ((x+32 +8)[2] > (y+8)[1]) goto gt; if ((x+32 +8)[2] < (y+8)[1]) goto lt; if ((x+32 +8)[3] > (y+8)[1]) goto gt; if ((x+32 +8)[3] < (y+8)[1]) goto lt; if ((x+32 +8)[0] > (y+8)[2]) goto gt; if ((x+32 +8)[0] < (y+8)[2]) goto lt; if ((x+32 +8)[1] > (y+8)[2]) goto gt; if ((x+32 +8)[1] < (y+8)[2]) goto lt; if ((x+32 +8)[2] > (y+8)[2]) goto gt; if ((x+32 +8)[2] < (y+8)[2]) goto lt; if ((x+32 +8)[3] > (y+8)[2]) goto gt; if ((x+32 +8)[3] < (y+8)[2]) goto lt; if ((x+32 +8)[0] > (y+8)[3]) goto gt; if ((x+32 +8)[0] < (y+8)[3]) goto lt; if ((x+32 +8)[1] > (y+8)[3]) goto gt; if ((x+32 +8)[1] < (y+8)[3]) goto lt; if ((x+32 +8)[2] > (y+8)[3]) goto gt; if ((x+32 +8)[2] < (y+8)[3]) goto lt; if ((x+32 +8)[3] > (y+8)[3]) goto gt; if ((x+32 +8)[3] < (y+8)[3]) goto lt; if ((x+32 +12)[0] > (y+8)[0]) goto gt; if ((x+32 +12)[0] < (y+8)[0]) goto lt; if ((x+32 +12)[1] > (y+8)[0]) goto gt; if ((x+32 +12)[1] < (y+8)[0]) goto lt; if ((x+32 +12)[2] > (y+8)[0]) goto gt; if ((x+32 +12)[2] < (y+8)[0]) goto lt; if ((x+32 +12)[3] > (y+8)[0]) goto gt; if ((x+32 +12)[3] < (y+8)[0]) goto lt; if ((x+32 +12)[0] > (y+8)[1]) goto gt; if ((x+32 +12)[0] < (y+8)[1]) goto lt; if ((x+32 +12)[1] > (y+8)[1]) goto gt; if ((x+32 +12)[1] < (y+8)[1]) goto lt; if ((x+32 +12)[2] > (y+8)[1]) goto gt; if ((x+32 +12)[2] < (y+8)[1]) goto lt; if ((x+32 +12)[3] > (y+8)[1]) goto gt; if ((x+32 +12)[3] < (y+8)[1]) goto lt; if ((x+32 +12)[0] > (y+8)[2]) goto gt; if ((x+32 +12)[0] < (y+8)[2]) goto lt; if ((x+32 +12)[1] > (y+8)[2]) goto gt; if ((x+32 +12)[1] < (y+8)[2]) goto lt; if ((x+32 +12)[2] > (y+8)[2]) goto gt; if ((x+32 +12)[2] < (y+8)[2]) goto lt; if ((x+32 +12)[3] > (y+8)[2]) goto gt; if ((x+32 +12)[3] < (y+8)[2]) goto lt; if ((x+32 +12)[0] > (y+8)[3]) goto gt; if ((x+32 +12)[0] < (y+8)[3]) goto lt; if ((x+32 +12)[1] > (y+8)[3]) goto gt; if ((x+32 +12)[1] < (y+8)[3]) goto lt; if ((x+32 +12)[2] > (y+8)[3]) goto gt; if ((x+32 +12)[2] < (y+8)[3]) goto lt; if ((x+32 +12)[3] > (y+8)[3]) goto gt; if ((x+32 +12)[3] < (y+8)[3]) goto lt; if ((x+32)[0] > (y+12)[0]) goto gt; if ((x+32)[0] < (y+12)[0]) goto lt; if ((x+32)[1] > (y+12)[0]) goto gt; if ((x+32)[1] < (y+12)[0]) goto lt; if ((x+32)[2] > (y+12)[0]) goto gt; if ((x+32)[2] < (y+12)[0]) goto lt; if ((x+32)[3] > (y+12)[0]) goto gt; if ((x+32)[3] < (y+12)[0]) goto lt; if ((x+32)[0] > (y+12)[1]) goto gt; if ((x+32)[0] < (y+12)[1]) goto lt; if ((x+32)[1] > (y+12)[1]) goto gt; if ((x+32)[1] < (y+12)[1]) goto lt; if ((x+32)[2] > (y+12)[1]) goto gt; if ((x+32)[2] < (y+12)[1]) goto lt; if ((x+32)[3] > (y+12)[1]) goto gt; if ((x+32)[3] < (y+12)[1]) goto lt; if ((x+32)[0] > (y+12)[2]) goto gt; if ((x+32)[0] < (y+12)[2]) goto lt; if ((x+32)[1] > (y+12)[2]) goto gt; if ((x+32)[1] < (y+12)[2]) goto lt; if ((x+32)[2] > (y+12)[2]) goto gt; if ((x+32)[2] < (y+12)[2]) goto lt; if ((x+32)[3] > (y+12)[2]) goto gt; if ((x+32)[3] < (y+12)[2]) goto lt; if ((x+32)[0] > (y+12)[3]) goto gt; if ((x+32)[0] < (y+12)[3]) goto lt; if ((x+32)[1] > (y+12)[3]) goto gt; if ((x+32)[1] < (y+12)[3]) goto lt; if ((x+32)[2] > (y+12)[3]) goto gt; if ((x+32)[2] < (y+12)[3]) goto lt; if ((x+32)[3] > (y+12)[3]) goto gt; if ((x+32)[3] < (y+12)[3]) goto lt; if ((x+32 +4)[0] > (y+12)[0]) goto gt; if ((x+32 +4)[0] < (y+12)[0]) goto lt; if ((x+32 +4)[1] > (y+12)[0]) goto gt; if ((x+32 +4)[1] < (y+12)[0]) goto lt; if ((x+32 +4)[2] > (y+12)[0]) goto gt; if ((x+32 +4)[2] < (y+12)[0]) goto lt; if ((x+32 +4)[3] > (y+12)[0]) goto gt; if ((x+32 +4)[3] < (y+12)[0]) goto lt; if ((x+32 +4)[0] > (y+12)[1]) goto gt; if ((x+32 +4)[0] < (y+12)[1]) goto lt; if ((x+32 +4)[1] > (y+12)[1]) goto gt; if ((x+32 +4)[1] < (y+12)[1]) goto lt; if ((x+32 +4)[2] > (y+12)[1]) goto gt; if ((x+32 +4)[2] < (y+12)[1]) goto lt; if ((x+32 +4)[3] > (y+12)[1]) goto gt; if ((x+32 +4)[3] < (y+12)[1]) goto lt; if ((x+32 +4)[0] > (y+12)[2]) goto gt; if ((x+32 +4)[0] < (y+12)[2]) goto lt; if ((x+32 +4)[1] > (y+12)[2]) goto gt; if ((x+32 +4)[1] < (y+12)[2]) goto lt; if ((x+32 +4)[2] > (y+12)[2]) goto gt; if ((x+32 +4)[2] < (y+12)[2]) goto lt; if ((x+32 +4)[3] > (y+12)[2]) goto gt; if ((x+32 +4)[3] < (y+12)[2]) goto lt; if ((x+32 +4)[0] > (y+12)[3]) goto gt; if ((x+32 +4)[0] < (y+12)[3]) goto lt; if ((x+32 +4)[1] > (y+12)[3]) goto gt; if ((x+32 +4)[1] < (y+12)[3]) goto lt; if ((x+32 +4)[2] > (y+12)[3]) goto gt; if ((x+32 +4)[2] < (y+12)[3]) goto lt; if ((x+32 +4)[3] > (y+12)[3]) goto gt; if ((x+32 +4)[3] < (y+12)[3]) goto lt; if ((x+32 +8)[0] > (y+12)[0]) goto gt; if ((x+32 +8)[0] < (y+12)[0]) goto lt; if ((x+32 +8)[1] > (y+12)[0]) goto gt; if ((x+32 +8)[1] < (y+12)[0]) goto lt; if ((x+32 +8)[2] > (y+12)[0]) goto gt; if ((x+32 +8)[2] < (y+12)[0]) goto lt; if ((x+32 +8)[3] > (y+12)[0]) goto gt; if ((x+32 +8)[3] < (y+12)[0]) goto lt; if ((x+32 +8)[0] > (y+12)[1]) goto gt; if ((x+32 +8)[0] < (y+12)[1]) goto lt; if ((x+32 +8)[1] > (y+12)[1]) goto gt; if ((x+32 +8)[1] < (y+12)[1]) goto lt; if ((x+32 +8)[2] > (y+12)[1]) goto gt; if ((x+32 +8)[2] < (y+12)[1]) goto lt; if ((x+32 +8)[3] > (y+12)[1]) goto gt; if ((x+32 +8)[3] < (y+12)[1]) goto lt; if ((x+32 +8)[0] > (y+12)[2]) goto gt; if ((x+32 +8)[0] < (y+12)[2]) goto lt; if ((x+32 +8)[1] > (y+12)[2]) goto gt; if ((x+32 +8)[1] < (y+12)[2]) goto lt; if ((x+32 +8)[2] > (y+12)[2]) goto gt; if ((x+32 +8)[2] < (y+12)[2]) goto lt; if ((x+32 +8)[3] > (y+12)[2]) goto gt; if ((x+32 +8)[3] < (y+12)[2]) goto lt; if ((x+32 +8)[0] > (y+12)[3]) goto gt; if ((x+32 +8)[0] < (y+12)[3]) goto lt; if ((x+32 +8)[1] > (y+12)[3]) goto gt; if ((x+32 +8)[1] < (y+12)[3]) goto lt; if ((x+32 +8)[2] > (y+12)[3]) goto gt; if ((x+32 +8)[2] < (y+12)[3]) goto lt; if ((x+32 +8)[3] > (y+12)[3]) goto gt; if ((x+32 +8)[3] < (y+12)[3]) goto lt; if ((x+32 +12)[0] > (y+12)[0]) goto gt; if ((x+32 +12)[0] < (y+12)[0]) goto lt; if ((x+32 +12)[1] > (y+12)[0]) goto gt; if ((x+32 +12)[1] < (y+12)[0]) goto lt; if ((x+32 +12)[2] > (y+12)[0]) goto gt; if ((x+32 +12)[2] < (y+12)[0]) goto lt; if ((x+32 +12)[3] > (y+12)[0]) goto gt; if ((x+32 +12)[3] < (y+12)[0]) goto lt; if ((x+32 +12)[0] > (y+12)[1]) goto gt; if ((x+32 +12)[0] < (y+12)[1]) goto lt; if ((x+32 +12)[1] > (y+12)[1]) goto gt; if ((x+32 +12)[1] < (y+12)[1]) goto lt; if ((x+32 +12)[2] > (y+12)[1]) goto gt; if ((x+32 +12)[2] < (y+12)[1]) goto lt; if ((x+32 +12)[3] > (y+12)[1]) goto gt; if ((x+32 +12)[3] < (y+12)[1]) goto lt; if ((x+32 +12)[0] > (y+12)[2]) goto gt; if ((x+32 +12)[0] < (y+12)[2]) goto lt; if ((x+32 +12)[1] > (y+12)[2]) goto gt; if ((x+32 +12)[1] < (y+12)[2]) goto lt; if ((x+32 +12)[2] > (y+12)[2]) goto gt; if ((x+32 +12)[2] < (y+12)[2]) goto lt; if ((x+32 +12)[3] > (y+12)[2]) goto gt; if ((x+32 +12)[3] < (y+12)[2]) goto lt; if ((x+32 +12)[0] > (y+12)[3]) goto gt; if ((x+32 +12)[0] < (y+12)[3]) goto lt; if ((x+32 +12)[1] > (y+12)[3]) goto gt; if ((x+32 +12)[1] < (y+12)[3]) goto lt; if ((x+32 +12)[2] > (y+12)[3]) goto gt; if ((x+32 +12)[2] < (y+12)[3]) goto lt; if ((x+32 +12)[3] > (y+12)[3]) goto gt; if ((x+32 +12)[3] < (y+12)[3]) goto lt; if ((x+48)[0] > (y)[0]) goto gt; if ((x+48)[0] < (y)[0]) goto lt; if ((x+48)[1] > (y)[0]) goto gt; if ((x+48)[1] < (y)[0]) goto lt; if ((x+48)[2] > (y)[0]) goto gt; if ((x+48)[2] < (y)[0]) goto lt; if ((x+48)[3] > (y)[0]) goto gt; if ((x+48)[3] < (y)[0]) goto lt; if ((x+48)[0] > (y)[1]) goto gt; if ((x+48)[0] < (y)[1]) goto lt; if ((x+48)[1] > (y)[1]) goto gt; if ((x+48)[1] < (y)[1]) goto lt; if ((x+48)[2] > (y)[1]) goto gt; if ((x+48)[2] < (y)[1]) goto lt; if ((x+48)[3] > (y)[1]) goto gt; if ((x+48)[3] < (y)[1]) goto lt; if ((x+48)[0] > (y)[2]) goto gt; if ((x+48)[0] < (y)[2]) goto lt; if ((x+48)[1] > (y)[2]) goto gt; if ((x+48)[1] < (y)[2]) goto lt; if ((x+48)[2] > (y)[2]) goto gt; if ((x+48)[2] < (y)[2]) goto lt; if ((x+48)[3] > (y)[2]) goto gt; if ((x+48)[3] < (y)[2]) goto lt; if ((x+48)[0] > (y)[3]) goto gt; if ((x+48)[0] < (y)[3]) goto lt; if ((x+48)[1] > (y)[3]) goto gt; if ((x+48)[1] < (y)[3]) goto lt; if ((x+48)[2] > (y)[3]) goto gt; if ((x+48)[2] < (y)[3]) goto lt; if ((x+48)[3] > (y)[3]) goto gt; if ((x+48)[3] < (y)[3]) goto lt; if ((x+48 +4)[0] > (y)[0]) goto gt; if ((x+48 +4)[0] < (y)[0]) goto lt; if ((x+48 +4)[1] > (y)[0]) goto gt; if ((x+48 +4)[1] < (y)[0]) goto lt; if ((x+48 +4)[2] > (y)[0]) goto gt; if ((x+48 +4)[2] < (y)[0]) goto lt; if ((x+48 +4)[3] > (y)[0]) goto gt; if ((x+48 +4)[3] < (y)[0]) goto lt; if ((x+48 +4)[0] > (y)[1]) goto gt; if ((x+48 +4)[0] < (y)[1]) goto lt; if ((x+48 +4)[1] > (y)[1]) goto gt; if ((x+48 +4)[1] < (y)[1]) goto lt; if ((x+48 +4)[2] > (y)[1]) goto gt; if ((x+48 +4)[2] < (y)[1]) goto lt; if ((x+48 +4)[3] > (y)[1]) goto gt; if ((x+48 +4)[3] < (y)[1]) goto lt; if ((x+48 +4)[0] > (y)[2]) goto gt; if ((x+48 +4)[0] < (y)[2]) goto lt; if ((x+48 +4)[1] > (y)[2]) goto gt; if ((x+48 +4)[1] < (y)[2]) goto lt; if ((x+48 +4)[2] > (y)[2]) goto gt; if ((x+48 +4)[2] < (y)[2]) goto lt; if ((x+48 +4)[3] > (y)[2]) goto gt; if ((x+48 +4)[3] < (y)[2]) goto lt; if ((x+48 +4)[0] > (y)[3]) goto gt; if ((x+48 +4)[0] < (y)[3]) goto lt; if ((x+48 +4)[1] > (y)[3]) goto gt; if ((x+48 +4)[1] < (y)[3]) goto lt; if ((x+48 +4)[2] > (y)[3]) goto gt; if ((x+48 +4)[2] < (y)[3]) goto lt; if ((x+48 +4)[3] > (y)[3]) goto gt; if ((x+48 +4)[3] < (y)[3]) goto lt; if ((x+48 +8)[0] > (y)[0]) goto gt; if ((x+48 +8)[0] < (y)[0]) goto lt; if ((x+48 +8)[1] > (y)[0]) goto gt; if ((x+48 +8)[1] < (y)[0]) goto lt; if ((x+48 +8)[2] > (y)[0]) goto gt; if ((x+48 +8)[2] < (y)[0]) goto lt; if ((x+48 +8)[3] > (y)[0]) goto gt; if ((x+48 +8)[3] < (y)[0]) goto lt; if ((x+48 +8)[0] > (y)[1]) goto gt; if ((x+48 +8)[0] < (y)[1]) goto lt; if ((x+48 +8)[1] > (y)[1]) goto gt; if ((x+48 +8)[1] < (y)[1]) goto lt; if ((x+48 +8)[2] > (y)[1]) goto gt; if ((x+48 +8)[2] < (y)[1]) goto lt; if ((x+48 +8)[3] > (y)[1]) goto gt; if ((x+48 +8)[3] < (y)[1]) goto lt; if ((x+48 +8)[0] > (y)[2]) goto gt; if ((x+48 +8)[0] < (y)[2]) goto lt; if ((x+48 +8)[1] > (y)[2]) goto gt; if ((x+48 +8)[1] < (y)[2]) goto lt; if ((x+48 +8)[2] > (y)[2]) goto gt; if ((x+48 +8)[2] < (y)[2]) goto lt; if ((x+48 +8)[3] > (y)[2]) goto gt; if ((x+48 +8)[3] < (y)[2]) goto lt; if ((x+48 +8)[0] > (y)[3]) goto gt; if ((x+48 +8)[0] < (y)[3]) goto lt; if ((x+48 +8)[1] > (y)[3]) goto gt; if ((x+48 +8)[1] < (y)[3]) goto lt; if ((x+48 +8)[2] > (y)[3]) goto gt; if ((x+48 +8)[2] < (y)[3]) goto lt; if ((x+48 +8)[3] > (y)[3]) goto gt; if ((x+48 +8)[3] < (y)[3]) goto lt; if ((x+48 +12)[0] > (y)[0]) goto gt; if ((x+48 +12)[0] < (y)[0]) goto lt; if ((x+48 +12)[1] > (y)[0]) goto gt; if ((x+48 +12)[1] < (y)[0]) goto lt; if ((x+48 +12)[2] > (y)[0]) goto gt; if ((x+48 +12)[2] < (y)[0]) goto lt; if ((x+48 +12)[3] > (y)[0]) goto gt; if ((x+48 +12)[3] < (y)[0]) goto lt; if ((x+48 +12)[0] > (y)[1]) goto gt; if ((x+48 +12)[0] < (y)[1]) goto lt; if ((x+48 +12)[1] > (y)[1]) goto gt; if ((x+48 +12)[1] < (y)[1]) goto lt; if ((x+48 +12)[2] > (y)[1]) goto gt; if ((x+48 +12)[2] < (y)[1]) goto lt; if ((x+48 +12)[3] > (y)[1]) goto gt; if ((x+48 +12)[3] < (y)[1]) goto lt; if ((x+48 +12)[0] > (y)[2]) goto gt; if ((x+48 +12)[0] < (y)[2]) goto lt; if ((x+48 +12)[1] > (y)[2]) goto gt; if ((x+48 +12)[1] < (y)[2]) goto lt; if ((x+48 +12)[2] > (y)[2]) goto gt; if ((x+48 +12)[2] < (y)[2]) goto lt; if ((x+48 +12)[3] > (y)[2]) goto gt; if ((x+48 +12)[3] < (y)[2]) goto lt; if ((x+48 +12)[0] > (y)[3]) goto gt; if ((x+48 +12)[0] < (y)[3]) goto lt; if ((x+48 +12)[1] > (y)[3]) goto gt; if ((x+48 +12)[1] < (y)[3]) goto lt; if ((x+48 +12)[2] > (y)[3]) goto gt; if ((x+48 +12)[2] < (y)[3]) goto lt; if ((x+48 +12)[3] > (y)[3]) goto gt; if ((x+48 +12)[3] < (y)[3]) goto lt; if ((x+48)[0] > (y+4)[0]) goto gt; if ((x+48)[0] < (y+4)[0]) goto lt; if ((x+48)[1] > (y+4)[0]) goto gt; if ((x+48)[1] < (y+4)[0]) goto lt; if ((x+48)[2] > (y+4)[0]) goto gt; if ((x+48)[2] < (y+4)[0]) goto lt; if ((x+48)[3] > (y+4)[0]) goto gt; if ((x+48)[3] < (y+4)[0]) goto lt; if ((x+48)[0] > (y+4)[1]) goto gt; if ((x+48)[0] < (y+4)[1]) goto lt; if ((x+48)[1] > (y+4)[1]) goto gt; if ((x+48)[1] < (y+4)[1]) goto lt; if ((x+48)[2] > (y+4)[1]) goto gt; if ((x+48)[2] < (y+4)[1]) goto lt; if ((x+48)[3] > (y+4)[1]) goto gt; if ((x+48)[3] < (y+4)[1]) goto lt; if ((x+48)[0] > (y+4)[2]) goto gt; if ((x+48)[0] < (y+4)[2]) goto lt; if ((x+48)[1] > (y+4)[2]) goto gt; if ((x+48)[1] < (y+4)[2]) goto lt; if ((x+48)[2] > (y+4)[2]) goto gt; if ((x+48)[2] < (y+4)[2]) goto lt; if ((x+48)[3] > (y+4)[2]) goto gt; if ((x+48)[3] < (y+4)[2]) goto lt; if ((x+48)[0] > (y+4)[3]) goto gt; if ((x+48)[0] < (y+4)[3]) goto lt; if ((x+48)[1] > (y+4)[3]) goto gt; if ((x+48)[1] < (y+4)[3]) goto lt; if ((x+48)[2] > (y+4)[3]) goto gt; if ((x+48)[2] < (y+4)[3]) goto lt; if ((x+48)[3] > (y+4)[3]) goto gt; if ((x+48)[3] < (y+4)[3]) goto lt; if ((x+48 +4)[0] > (y+4)[0]) goto gt; if ((x+48 +4)[0] < (y+4)[0]) goto lt; if ((x+48 +4)[1] > (y+4)[0]) goto gt; if ((x+48 +4)[1] < (y+4)[0]) goto lt; if ((x+48 +4)[2] > (y+4)[0]) goto gt; if ((x+48 +4)[2] < (y+4)[0]) goto lt; if ((x+48 +4)[3] > (y+4)[0]) goto gt; if ((x+48 +4)[3] < (y+4)[0]) goto lt; if ((x+48 +4)[0] > (y+4)[1]) goto gt; if ((x+48 +4)[0] < (y+4)[1]) goto lt; if ((x+48 +4)[1] > (y+4)[1]) goto gt; if ((x+48 +4)[1] < (y+4)[1]) goto lt; if ((x+48 +4)[2] > (y+4)[1]) goto gt; if ((x+48 +4)[2] < (y+4)[1]) goto lt; if ((x+48 +4)[3] > (y+4)[1]) goto gt; if ((x+48 +4)[3] < (y+4)[1]) goto lt; if ((x+48 +4)[0] > (y+4)[2]) goto gt; if ((x+48 +4)[0] < (y+4)[2]) goto lt; if ((x+48 +4)[1] > (y+4)[2]) goto gt; if ((x+48 +4)[1] < (y+4)[2]) goto lt; if ((x+48 +4)[2] > (y+4)[2]) goto gt; if ((x+48 +4)[2] < (y+4)[2]) goto lt; if ((x+48 +4)[3] > (y+4)[2]) goto gt; if ((x+48 +4)[3] < (y+4)[2]) goto lt; if ((x+48 +4)[0] > (y+4)[3]) goto gt; if ((x+48 +4)[0] < (y+4)[3]) goto lt; if ((x+48 +4)[1] > (y+4)[3]) goto gt; if ((x+48 +4)[1] < (y+4)[3]) goto lt; if ((x+48 +4)[2] > (y+4)[3]) goto gt; if ((x+48 +4)[2] < (y+4)[3]) goto lt; if ((x+48 +4)[3] > (y+4)[3]) goto gt; if ((x+48 +4)[3] < (y+4)[3]) goto lt; if ((x+48 +8)[0] > (y+4)[0]) goto gt; if ((x+48 +8)[0] < (y+4)[0]) goto lt; if ((x+48 +8)[1] > (y+4)[0]) goto gt; if ((x+48 +8)[1] < (y+4)[0]) goto lt; if ((x+48 +8)[2] > (y+4)[0]) goto gt; if ((x+48 +8)[2] < (y+4)[0]) goto lt; if ((x+48 +8)[3] > (y+4)[0]) goto gt; if ((x+48 +8)[3] < (y+4)[0]) goto lt; if ((x+48 +8)[0] > (y+4)[1]) goto gt; if ((x+48 +8)[0] < (y+4)[1]) goto lt; if ((x+48 +8)[1] > (y+4)[1]) goto gt; if ((x+48 +8)[1] < (y+4)[1]) goto lt; if ((x+48 +8)[2] > (y+4)[1]) goto gt; if ((x+48 +8)[2] < (y+4)[1]) goto lt; if ((x+48 +8)[3] > (y+4)[1]) goto gt; if ((x+48 +8)[3] < (y+4)[1]) goto lt; if ((x+48 +8)[0] > (y+4)[2]) goto gt; if ((x+48 +8)[0] < (y+4)[2]) goto lt; if ((x+48 +8)[1] > (y+4)[2]) goto gt; if ((x+48 +8)[1] < (y+4)[2]) goto lt; if ((x+48 +8)[2] > (y+4)[2]) goto gt; if ((x+48 +8)[2] < (y+4)[2]) goto lt; if ((x+48 +8)[3] > (y+4)[2]) goto gt; if ((x+48 +8)[3] < (y+4)[2]) goto lt; if ((x+48 +8)[0] > (y+4)[3]) goto gt; if ((x+48 +8)[0] < (y+4)[3]) goto lt; if ((x+48 +8)[1] > (y+4)[3]) goto gt; if ((x+48 +8)[1] < (y+4)[3]) goto lt; if ((x+48 +8)[2] > (y+4)[3]) goto gt; if ((x+48 +8)[2] < (y+4)[3]) goto lt; if ((x+48 +8)[3] > (y+4)[3]) goto gt; if ((x+48 +8)[3] < (y+4)[3]) goto lt; if ((x+48 +12)[0] > (y+4)[0]) goto gt; if ((x+48 +12)[0] < (y+4)[0]) goto lt; if ((x+48 +12)[1] > (y+4)[0]) goto gt; if ((x+48 +12)[1] < (y+4)[0]) goto lt; if ((x+48 +12)[2] > (y+4)[0]) goto gt; if ((x+48 +12)[2] < (y+4)[0]) goto lt; if ((x+48 +12)[3] > (y+4)[0]) goto gt; if ((x+48 +12)[3] < (y+4)[0]) goto lt; if ((x+48 +12)[0] > (y+4)[1]) goto gt; if ((x+48 +12)[0] < (y+4)[1]) goto lt; if ((x+48 +12)[1] > (y+4)[1]) goto gt; if ((x+48 +12)[1] < (y+4)[1]) goto lt; if ((x+48 +12)[2] > (y+4)[1]) goto gt; if ((x+48 +12)[2] < (y+4)[1]) goto lt; if ((x+48 +12)[3] > (y+4)[1]) goto gt; if ((x+48 +12)[3] < (y+4)[1]) goto lt; if ((x+48 +12)[0] > (y+4)[2]) goto gt; if ((x+48 +12)[0] < (y+4)[2]) goto lt; if ((x+48 +12)[1] > (y+4)[2]) goto gt; if ((x+48 +12)[1] < (y+4)[2]) goto lt; if ((x+48 +12)[2] > (y+4)[2]) goto gt; if ((x+48 +12)[2] < (y+4)[2]) goto lt; if ((x+48 +12)[3] > (y+4)[2]) goto gt; if ((x+48 +12)[3] < (y+4)[2]) goto lt; if ((x+48 +12)[0] > (y+4)[3]) goto gt; if ((x+48 +12)[0] < (y+4)[3]) goto lt; if ((x+48 +12)[1] > (y+4)[3]) goto gt; if ((x+48 +12)[1] < (y+4)[3]) goto lt; if ((x+48 +12)[2] > (y+4)[3]) goto gt; if ((x+48 +12)[2] < (y+4)[3]) goto lt; if ((x+48 +12)[3] > (y+4)[3]) goto gt; if ((x+48 +12)[3] < (y+4)[3]) goto lt; if ((x+48)[0] > (y+8)[0]) goto gt; if ((x+48)[0] < (y+8)[0]) goto lt; if ((x+48)[1] > (y+8)[0]) goto gt; if ((x+48)[1] < (y+8)[0]) goto lt; if ((x+48)[2] > (y+8)[0]) goto gt; if ((x+48)[2] < (y+8)[0]) goto lt; if ((x+48)[3] > (y+8)[0]) goto gt; if ((x+48)[3] < (y+8)[0]) goto lt; if ((x+48)[0] > (y+8)[1]) goto gt; if ((x+48)[0] < (y+8)[1]) goto lt; if ((x+48)[1] > (y+8)[1]) goto gt; if ((x+48)[1] < (y+8)[1]) goto lt; if ((x+48)[2] > (y+8)[1]) goto gt; if ((x+48)[2] < (y+8)[1]) goto lt; if ((x+48)[3] > (y+8)[1]) goto gt; if ((x+48)[3] < (y+8)[1]) goto lt; if ((x+48)[0] > (y+8)[2]) goto gt; if ((x+48)[0] < (y+8)[2]) goto lt; if ((x+48)[1] > (y+8)[2]) goto gt; if ((x+48)[1] < (y+8)[2]) goto lt; if ((x+48)[2] > (y+8)[2]) goto gt; if ((x+48)[2] < (y+8)[2]) goto lt; if ((x+48)[3] > (y+8)[2]) goto gt; if ((x+48)[3] < (y+8)[2]) goto lt; if ((x+48)[0] > (y+8)[3]) goto gt; if ((x+48)[0] < (y+8)[3]) goto lt; if ((x+48)[1] > (y+8)[3]) goto gt; if ((x+48)[1] < (y+8)[3]) goto lt; if ((x+48)[2] > (y+8)[3]) goto gt; if ((x+48)[2] < (y+8)[3]) goto lt; if ((x+48)[3] > (y+8)[3]) goto gt; if ((x+48)[3] < (y+8)[3]) goto lt; if ((x+48 +4)[0] > (y+8)[0]) goto gt; if ((x+48 +4)[0] < (y+8)[0]) goto lt; if ((x+48 +4)[1] > (y+8)[0]) goto gt; if ((x+48 +4)[1] < (y+8)[0]) goto lt; if ((x+48 +4)[2] > (y+8)[0]) goto gt; if ((x+48 +4)[2] < (y+8)[0]) goto lt; if ((x+48 +4)[3] > (y+8)[0]) goto gt; if ((x+48 +4)[3] < (y+8)[0]) goto lt; if ((x+48 +4)[0] > (y+8)[1]) goto gt; if ((x+48 +4)[0] < (y+8)[1]) goto lt; if ((x+48 +4)[1] > (y+8)[1]) goto gt; if ((x+48 +4)[1] < (y+8)[1]) goto lt; if ((x+48 +4)[2] > (y+8)[1]) goto gt; if ((x+48 +4)[2] < (y+8)[1]) goto lt; if ((x+48 +4)[3] > (y+8)[1]) goto gt; if ((x+48 +4)[3] < (y+8)[1]) goto lt; if ((x+48 +4)[0] > (y+8)[2]) goto gt; if ((x+48 +4)[0] < (y+8)[2]) goto lt; if ((x+48 +4)[1] > (y+8)[2]) goto gt; if ((x+48 +4)[1] < (y+8)[2]) goto lt; if ((x+48 +4)[2] > (y+8)[2]) goto gt; if ((x+48 +4)[2] < (y+8)[2]) goto lt; if ((x+48 +4)[3] > (y+8)[2]) goto gt; if ((x+48 +4)[3] < (y+8)[2]) goto lt; if ((x+48 +4)[0] > (y+8)[3]) goto gt; if ((x+48 +4)[0] < (y+8)[3]) goto lt; if ((x+48 +4)[1] > (y+8)[3]) goto gt; if ((x+48 +4)[1] < (y+8)[3]) goto lt; if ((x+48 +4)[2] > (y+8)[3]) goto gt; if ((x+48 +4)[2] < (y+8)[3]) goto lt; if ((x+48 +4)[3] > (y+8)[3]) goto gt; if ((x+48 +4)[3] < (y+8)[3]) goto lt; if ((x+48 +8)[0] > (y+8)[0]) goto gt; if ((x+48 +8)[0] < (y+8)[0]) goto lt; if ((x+48 +8)[1] > (y+8)[0]) goto gt; if ((x+48 +8)[1] < (y+8)[0]) goto lt; if ((x+48 +8)[2] > (y+8)[0]) goto gt; if ((x+48 +8)[2] < (y+8)[0]) goto lt; if ((x+48 +8)[3] > (y+8)[0]) goto gt; if ((x+48 +8)[3] < (y+8)[0]) goto lt; if ((x+48 +8)[0] > (y+8)[1]) goto gt; if ((x+48 +8)[0] < (y+8)[1]) goto lt; if ((x+48 +8)[1] > (y+8)[1]) goto gt; if ((x+48 +8)[1] < (y+8)[1]) goto lt; if ((x+48 +8)[2] > (y+8)[1]) goto gt; if ((x+48 +8)[2] < (y+8)[1]) goto lt; if ((x+48 +8)[3] > (y+8)[1]) goto gt; if ((x+48 +8)[3] < (y+8)[1]) goto lt; if ((x+48 +8)[0] > (y+8)[2]) goto gt; if ((x+48 +8)[0] < (y+8)[2]) goto lt; if ((x+48 +8)[1] > (y+8)[2]) goto gt; if ((x+48 +8)[1] < (y+8)[2]) goto lt; if ((x+48 +8)[2] > (y+8)[2]) goto gt; if ((x+48 +8)[2] < (y+8)[2]) goto lt; if ((x+48 +8)[3] > (y+8)[2]) goto gt; if ((x+48 +8)[3] < (y+8)[2]) goto lt; if ((x+48 +8)[0] > (y+8)[3]) goto gt; if ((x+48 +8)[0] < (y+8)[3]) goto lt; if ((x+48 +8)[1] > (y+8)[3]) goto gt; if ((x+48 +8)[1] < (y+8)[3]) goto lt; if ((x+48 +8)[2] > (y+8)[3]) goto gt; if ((x+48 +8)[2] < (y+8)[3]) goto lt; if ((x+48 +8)[3] > (y+8)[3]) goto gt; if ((x+48 +8)[3] < (y+8)[3]) goto lt; if ((x+48 +12)[0] > (y+8)[0]) goto gt; if ((x+48 +12)[0] < (y+8)[0]) goto lt; if ((x+48 +12)[1] > (y+8)[0]) goto gt; if ((x+48 +12)[1] < (y+8)[0]) goto lt; if ((x+48 +12)[2] > (y+8)[0]) goto gt; if ((x+48 +12)[2] < (y+8)[0]) goto lt; if ((x+48 +12)[3] > (y+8)[0]) goto gt; if ((x+48 +12)[3] < (y+8)[0]) goto lt; if ((x+48 +12)[0] > (y+8)[1]) goto gt; if ((x+48 +12)[0] < (y+8)[1]) goto lt; if ((x+48 +12)[1] > (y+8)[1]) goto gt; if ((x+48 +12)[1] < (y+8)[1]) goto lt; if ((x+48 +12)[2] > (y+8)[1]) goto gt; if ((x+48 +12)[2] < (y+8)[1]) goto lt; if ((x+48 +12)[3] > (y+8)[1]) goto gt; if ((x+48 +12)[3] < (y+8)[1]) goto lt; if ((x+48 +12)[0] > (y+8)[2]) goto gt; if ((x+48 +12)[0] < (y+8)[2]) goto lt; if ((x+48 +12)[1] > (y+8)[2]) goto gt; if ((x+48 +12)[1] < (y+8)[2]) goto lt; if ((x+48 +12)[2] > (y+8)[2]) goto gt; if ((x+48 +12)[2] < (y+8)[2]) goto lt; if ((x+48 +12)[3] > (y+8)[2]) goto gt; if ((x+48 +12)[3] < (y+8)[2]) goto lt; if ((x+48 +12)[0] > (y+8)[3]) goto gt; if ((x+48 +12)[0] < (y+8)[3]) goto lt; if ((x+48 +12)[1] > (y+8)[3]) goto gt; if ((x+48 +12)[1] < (y+8)[3]) goto lt; if ((x+48 +12)[2] > (y+8)[3]) goto gt; if ((x+48 +12)[2] < (y+8)[3]) goto lt; if ((x+48 +12)[3] > (y+8)[3]) goto gt; if ((x+48 +12)[3] < (y+8)[3]) goto lt; if ((x+48)[0] > (y+12)[0]) goto gt; if ((x+48)[0] < (y+12)[0]) goto lt; if ((x+48)[1] > (y+12)[0]) goto gt; if ((x+48)[1] < (y+12)[0]) goto lt; if ((x+48)[2] > (y+12)[0]) goto gt; if ((x+48)[2] < (y+12)[0]) goto lt; if ((x+48)[3] > (y+12)[0]) goto gt; if ((x+48)[3] < (y+12)[0]) goto lt; if ((x+48)[0] > (y+12)[1]) goto gt; if ((x+48)[0] < (y+12)[1]) goto lt; if ((x+48)[1] > (y+12)[1]) goto gt; if ((x+48)[1] < (y+12)[1]) goto lt; if ((x+48)[2] > (y+12)[1]) goto gt; if ((x+48)[2] < (y+12)[1]) goto lt; if ((x+48)[3] > (y+12)[1]) goto gt; if ((x+48)[3] < (y+12)[1]) goto lt; if ((x+48)[0] > (y+12)[2]) goto gt; if ((x+48)[0] < (y+12)[2]) goto lt; if ((x+48)[1] > (y+12)[2]) goto gt; if ((x+48)[1] < (y+12)[2]) goto lt; if ((x+48)[2] > (y+12)[2]) goto gt; if ((x+48)[2] < (y+12)[2]) goto lt; if ((x+48)[3] > (y+12)[2]) goto gt; if ((x+48)[3] < (y+12)[2]) goto lt; if ((x+48)[0] > (y+12)[3]) goto gt; if ((x+48)[0] < (y+12)[3]) goto lt; if ((x+48)[1] > (y+12)[3]) goto gt; if ((x+48)[1] < (y+12)[3]) goto lt; if ((x+48)[2] > (y+12)[3]) goto gt; if ((x+48)[2] < (y+12)[3]) goto lt; if ((x+48)[3] > (y+12)[3]) goto gt; if ((x+48)[3] < (y+12)[3]) goto lt; if ((x+48 +4)[0] > (y+12)[0]) goto gt; if ((x+48 +4)[0] < (y+12)[0]) goto lt; if ((x+48 +4)[1] > (y+12)[0]) goto gt; if ((x+48 +4)[1] < (y+12)[0]) goto lt; if ((x+48 +4)[2] > (y+12)[0]) goto gt; if ((x+48 +4)[2] < (y+12)[0]) goto lt; if ((x+48 +4)[3] > (y+12)[0]) goto gt; if ((x+48 +4)[3] < (y+12)[0]) goto lt; if ((x+48 +4)[0] > (y+12)[1]) goto gt; if ((x+48 +4)[0] < (y+12)[1]) goto lt; if ((x+48 +4)[1] > (y+12)[1]) goto gt; if ((x+48 +4)[1] < (y+12)[1]) goto lt; if ((x+48 +4)[2] > (y+12)[1]) goto gt; if ((x+48 +4)[2] < (y+12)[1]) goto lt; if ((x+48 +4)[3] > (y+12)[1]) goto gt; if ((x+48 +4)[3] < (y+12)[1]) goto lt; if ((x+48 +4)[0] > (y+12)[2]) goto gt; if ((x+48 +4)[0] < (y+12)[2]) goto lt; if ((x+48 +4)[1] > (y+12)[2]) goto gt; if ((x+48 +4)[1] < (y+12)[2]) goto lt; if ((x+48 +4)[2] > (y+12)[2]) goto gt; if ((x+48 +4)[2] < (y+12)[2]) goto lt; if ((x+48 +4)[3] > (y+12)[2]) goto gt; if ((x+48 +4)[3] < (y+12)[2]) goto lt; if ((x+48 +4)[0] > (y+12)[3]) goto gt; if ((x+48 +4)[0] < (y+12)[3]) goto lt; if ((x+48 +4)[1] > (y+12)[3]) goto gt; if ((x+48 +4)[1] < (y+12)[3]) goto lt; if ((x+48 +4)[2] > (y+12)[3]) goto gt; if ((x+48 +4)[2] < (y+12)[3]) goto lt; if ((x+48 +4)[3] > (y+12)[3]) goto gt; if ((x+48 +4)[3] < (y+12)[3]) goto lt; if ((x+48 +8)[0] > (y+12)[0]) goto gt; if ((x+48 +8)[0] < (y+12)[0]) goto lt; if ((x+48 +8)[1] > (y+12)[0]) goto gt; if ((x+48 +8)[1] < (y+12)[0]) goto lt; if ((x+48 +8)[2] > (y+12)[0]) goto gt; if ((x+48 +8)[2] < (y+12)[0]) goto lt; if ((x+48 +8)[3] > (y+12)[0]) goto gt; if ((x+48 +8)[3] < (y+12)[0]) goto lt; if ((x+48 +8)[0] > (y+12)[1]) goto gt; if ((x+48 +8)[0] < (y+12)[1]) goto lt; if ((x+48 +8)[1] > (y+12)[1]) goto gt; if ((x+48 +8)[1] < (y+12)[1]) goto lt; if ((x+48 +8)[2] > (y+12)[1]) goto gt; if ((x+48 +8)[2] < (y+12)[1]) goto lt; if ((x+48 +8)[3] > (y+12)[1]) goto gt; if ((x+48 +8)[3] < (y+12)[1]) goto lt; if ((x+48 +8)[0] > (y+12)[2]) goto gt; if ((x+48 +8)[0] < (y+12)[2]) goto lt; if ((x+48 +8)[1] > (y+12)[2]) goto gt; if ((x+48 +8)[1] < (y+12)[2]) goto lt; if ((x+48 +8)[2] > (y+12)[2]) goto gt; if ((x+48 +8)[2] < (y+12)[2]) goto lt; if ((x+48 +8)[3] > (y+12)[2]) goto gt; if ((x+48 +8)[3] < (y+12)[2]) goto lt; if ((x+48 +8)[0] > (y+12)[3]) goto gt; if ((x+48 +8)[0] < (y+12)[3]) goto lt; if ((x+48 +8)[1] > (y+12)[3]) goto gt; if ((x+48 +8)[1] < (y+12)[3]) goto lt; if ((x+48 +8)[2] > (y+12)[3]) goto gt; if ((x+48 +8)[2] < (y+12)[3]) goto lt; if ((x+48 +8)[3] > (y+12)[3]) goto gt; if ((x+48 +8)[3] < (y+12)[3]) goto lt; if ((x+48 +12)[0] > (y+12)[0]) goto gt; if ((x+48 +12)[0] < (y+12)[0]) goto lt; if ((x+48 +12)[1] > (y+12)[0]) goto gt; if ((x+48 +12)[1] < (y+12)[0]) goto lt; if ((x+48 +12)[2] > (y+12)[0]) goto gt; if ((x+48 +12)[2] < (y+12)[0]) goto lt; if ((x+48 +12)[3] > (y+12)[0]) goto gt; if ((x+48 +12)[3] < (y+12)[0]) goto lt; if ((x+48 +12)[0] > (y+12)[1]) goto gt; if ((x+48 +12)[0] < (y+12)[1]) goto lt; if ((x+48 +12)[1] > (y+12)[1]) goto gt; if ((x+48 +12)[1] < (y+12)[1]) goto lt; if ((x+48 +12)[2] > (y+12)[1]) goto gt; if ((x+48 +12)[2] < (y+12)[1]) goto lt; if ((x+48 +12)[3] > (y+12)[1]) goto gt; if ((x+48 +12)[3] < (y+12)[1]) goto lt; if ((x+48 +12)[0] > (y+12)[2]) goto gt; if ((x+48 +12)[0] < (y+12)[2]) goto lt; if ((x+48 +12)[1] > (y+12)[2]) goto gt; if ((x+48 +12)[1] < (y+12)[2]) goto lt; if ((x+48 +12)[2] > (y+12)[2]) goto gt; if ((x+48 +12)[2] < (y+12)[2]) goto lt; if ((x+48 +12)[3] > (y+12)[2]) goto gt; if ((x+48 +12)[3] < (y+12)[2]) goto lt; if ((x+48 +12)[0] > (y+12)[3]) goto gt; if ((x+48 +12)[0] < (y+12)[3]) goto lt; if ((x+48 +12)[1] > (y+12)[3]) goto gt; if ((x+48 +12)[1] < (y+12)[3]) goto lt; if ((x+48 +12)[2] > (y+12)[3]) goto gt; if ((x+48 +12)[2] < (y+12)[3]) goto lt; if ((x+48 +12)[3] > (y+12)[3]) goto gt; if ((x+48 +12)[3] < (y+12)[3]) goto lt; if ((x)[0] > (y+16)[0]) goto gt; if ((x)[0] < (y+16)[0]) goto lt; if ((x)[1] > (y+16)[0]) goto gt; if ((x)[1] < (y+16)[0]) goto lt; if ((x)[2] > (y+16)[0]) goto gt; if ((x)[2] < (y+16)[0]) goto lt; if ((x)[3] > (y+16)[0]) goto gt; if ((x)[3] < (y+16)[0]) goto lt; if ((x)[0] > (y+16)[1]) goto gt; if ((x)[0] < (y+16)[1]) goto lt; if ((x)[1] > (y+16)[1]) goto gt; if ((x)[1] < (y+16)[1]) goto lt; if ((x)[2] > (y+16)[1]) goto gt; if ((x)[2] < (y+16)[1]) goto lt; if ((x)[3] > (y+16)[1]) goto gt; if ((x)[3] < (y+16)[1]) goto lt; if ((x)[0] > (y+16)[2]) goto gt; if ((x)[0] < (y+16)[2]) goto lt; if ((x)[1] > (y+16)[2]) goto gt; if ((x)[1] < (y+16)[2]) goto lt; if ((x)[2] > (y+16)[2]) goto gt; if ((x)[2] < (y+16)[2]) goto lt; if ((x)[3] > (y+16)[2]) goto gt; if ((x)[3] < (y+16)[2]) goto lt; if ((x)[0] > (y+16)[3]) goto gt; if ((x)[0] < (y+16)[3]) goto lt; if ((x)[1] > (y+16)[3]) goto gt; if ((x)[1] < (y+16)[3]) goto lt; if ((x)[2] > (y+16)[3]) goto gt; if ((x)[2] < (y+16)[3]) goto lt; if ((x)[3] > (y+16)[3]) goto gt; if ((x)[3] < (y+16)[3]) goto lt; if ((x+4)[0] > (y+16)[0]) goto gt; if ((x+4)[0] < (y+16)[0]) goto lt; if ((x+4)[1] > (y+16)[0]) goto gt; if ((x+4)[1] < (y+16)[0]) goto lt; if ((x+4)[2] > (y+16)[0]) goto gt; if ((x+4)[2] < (y+16)[0]) goto lt; if ((x+4)[3] > (y+16)[0]) goto gt; if ((x+4)[3] < (y+16)[0]) goto lt; if ((x+4)[0] > (y+16)[1]) goto gt; if ((x+4)[0] < (y+16)[1]) goto lt; if ((x+4)[1] > (y+16)[1]) goto gt; if ((x+4)[1] < (y+16)[1]) goto lt; if ((x+4)[2] > (y+16)[1]) goto gt; if ((x+4)[2] < (y+16)[1]) goto lt; if ((x+4)[3] > (y+16)[1]) goto gt; if ((x+4)[3] < (y+16)[1]) goto lt; if ((x+4)[0] > (y+16)[2]) goto gt; if ((x+4)[0] < (y+16)[2]) goto lt; if ((x+4)[1] > (y+16)[2]) goto gt; if ((x+4)[1] < (y+16)[2]) goto lt; if ((x+4)[2] > (y+16)[2]) goto gt; if ((x+4)[2] < (y+16)[2]) goto lt; if ((x+4)[3] > (y+16)[2]) goto gt; if ((x+4)[3] < (y+16)[2]) goto lt; if ((x+4)[0] > (y+16)[3]) goto gt; if ((x+4)[0] < (y+16)[3]) goto lt; if ((x+4)[1] > (y+16)[3]) goto gt; if ((x+4)[1] < (y+16)[3]) goto lt; if ((x+4)[2] > (y+16)[3]) goto gt; if ((x+4)[2] < (y+16)[3]) goto lt; if ((x+4)[3] > (y+16)[3]) goto gt; if ((x+4)[3] < (y+16)[3]) goto lt; if ((x+8)[0] > (y+16)[0]) goto gt; if ((x+8)[0] < (y+16)[0]) goto lt; if ((x+8)[1] > (y+16)[0]) goto gt; if ((x+8)[1] < (y+16)[0]) goto lt; if ((x+8)[2] > (y+16)[0]) goto gt; if ((x+8)[2] < (y+16)[0]) goto lt; if ((x+8)[3] > (y+16)[0]) goto gt; if ((x+8)[3] < (y+16)[0]) goto lt; if ((x+8)[0] > (y+16)[1]) goto gt; if ((x+8)[0] < (y+16)[1]) goto lt; if ((x+8)[1] > (y+16)[1]) goto gt; if ((x+8)[1] < (y+16)[1]) goto lt; if ((x+8)[2] > (y+16)[1]) goto gt; if ((x+8)[2] < (y+16)[1]) goto lt; if ((x+8)[3] > (y+16)[1]) goto gt; if ((x+8)[3] < (y+16)[1]) goto lt; if ((x+8)[0] > (y+16)[2]) goto gt; if ((x+8)[0] < (y+16)[2]) goto lt; if ((x+8)[1] > (y+16)[2]) goto gt; if ((x+8)[1] < (y+16)[2]) goto lt; if ((x+8)[2] > (y+16)[2]) goto gt; if ((x+8)[2] < (y+16)[2]) goto lt; if ((x+8)[3] > (y+16)[2]) goto gt; if ((x+8)[3] < (y+16)[2]) goto lt; if ((x+8)[0] > (y+16)[3]) goto gt; if ((x+8)[0] < (y+16)[3]) goto lt; if ((x+8)[1] > (y+16)[3]) goto gt; if ((x+8)[1] < (y+16)[3]) goto lt; if ((x+8)[2] > (y+16)[3]) goto gt; if ((x+8)[2] < (y+16)[3]) goto lt; if ((x+8)[3] > (y+16)[3]) goto gt; if ((x+8)[3] < (y+16)[3]) goto lt; if ((x+12)[0] > (y+16)[0]) goto gt; if ((x+12)[0] < (y+16)[0]) goto lt; if ((x+12)[1] > (y+16)[0]) goto gt; if ((x+12)[1] < (y+16)[0]) goto lt; if ((x+12)[2] > (y+16)[0]) goto gt; if ((x+12)[2] < (y+16)[0]) goto lt; if ((x+12)[3] > (y+16)[0]) goto gt; if ((x+12)[3] < (y+16)[0]) goto lt; if ((x+12)[0] > (y+16)[1]) goto gt; if ((x+12)[0] < (y+16)[1]) goto lt; if ((x+12)[1] > (y+16)[1]) goto gt; if ((x+12)[1] < (y+16)[1]) goto lt; if ((x+12)[2] > (y+16)[1]) goto gt; if ((x+12)[2] < (y+16)[1]) goto lt; if ((x+12)[3] > (y+16)[1]) goto gt; if ((x+12)[3] < (y+16)[1]) goto lt; if ((x+12)[0] > (y+16)[2]) goto gt; if ((x+12)[0] < (y+16)[2]) goto lt; if ((x+12)[1] > (y+16)[2]) goto gt; if ((x+12)[1] < (y+16)[2]) goto lt; if ((x+12)[2] > (y+16)[2]) goto gt; if ((x+12)[2] < (y+16)[2]) goto lt; if ((x+12)[3] > (y+16)[2]) goto gt; if ((x+12)[3] < (y+16)[2]) goto lt; if ((x+12)[0] > (y+16)[3]) goto gt; if ((x+12)[0] < (y+16)[3]) goto lt; if ((x+12)[1] > (y+16)[3]) goto gt; if ((x+12)[1] < (y+16)[3]) goto lt; if ((x+12)[2] > (y+16)[3]) goto gt; if ((x+12)[2] < (y+16)[3]) goto lt; if ((x+12)[3] > (y+16)[3]) goto gt; if ((x+12)[3] < (y+16)[3]) goto lt; if ((x)[0] > (y+16 +4)[0]) goto gt; if ((x)[0] < (y+16 +4)[0]) goto lt; if ((x)[1] > (y+16 +4)[0]) goto gt; if ((x)[1] < (y+16 +4)[0]) goto lt; if ((x)[2] > (y+16 +4)[0]) goto gt; if ((x)[2] < (y+16 +4)[0]) goto lt; if ((x)[3] > (y+16 +4)[0]) goto gt; if ((x)[3] < (y+16 +4)[0]) goto lt; if ((x)[0] > (y+16 +4)[1]) goto gt; if ((x)[0] < (y+16 +4)[1]) goto lt; if ((x)[1] > (y+16 +4)[1]) goto gt; if ((x)[1] < (y+16 +4)[1]) goto lt; if ((x)[2] > (y+16 +4)[1]) goto gt; if ((x)[2] < (y+16 +4)[1]) goto lt; if ((x)[3] > (y+16 +4)[1]) goto gt; if ((x)[3] < (y+16 +4)[1]) goto lt; if ((x)[0] > (y+16 +4)[2]) goto gt; if ((x)[0] < (y+16 +4)[2]) goto lt; if ((x)[1] > (y+16 +4)[2]) goto gt; if ((x)[1] < (y+16 +4)[2]) goto lt; if ((x)[2] > (y+16 +4)[2]) goto gt; if ((x)[2] < (y+16 +4)[2]) goto lt; if ((x)[3] > (y+16 +4)[2]) goto gt; if ((x)[3] < (y+16 +4)[2]) goto lt; if ((x)[0] > (y+16 +4)[3]) goto gt; if ((x)[0] < (y+16 +4)[3]) goto lt; if ((x)[1] > (y+16 +4)[3]) goto gt; if ((x)[1] < (y+16 +4)[3]) goto lt; if ((x)[2] > (y+16 +4)[3]) goto gt; if ((x)[2] < (y+16 +4)[3]) goto lt; if ((x)[3] > (y+16 +4)[3]) goto gt; if ((x)[3] < (y+16 +4)[3]) goto lt; if ((x+4)[0] > (y+16 +4)[0]) goto gt; if ((x+4)[0] < (y+16 +4)[0]) goto lt; if ((x+4)[1] > (y+16 +4)[0]) goto gt; if ((x+4)[1] < (y+16 +4)[0]) goto lt; if ((x+4)[2] > (y+16 +4)[0]) goto gt; if ((x+4)[2] < (y+16 +4)[0]) goto lt; if ((x+4)[3] > (y+16 +4)[0]) goto gt; if ((x+4)[3] < (y+16 +4)[0]) goto lt; if ((x+4)[0] > (y+16 +4)[1]) goto gt; if ((x+4)[0] < (y+16 +4)[1]) goto lt; if ((x+4)[1] > (y+16 +4)[1]) goto gt; if ((x+4)[1] < (y+16 +4)[1]) goto lt; if ((x+4)[2] > (y+16 +4)[1]) goto gt; if ((x+4)[2] < (y+16 +4)[1]) goto lt; if ((x+4)[3] > (y+16 +4)[1]) goto gt; if ((x+4)[3] < (y+16 +4)[1]) goto lt; if ((x+4)[0] > (y+16 +4)[2]) goto gt; if ((x+4)[0] < (y+16 +4)[2]) goto lt; if ((x+4)[1] > (y+16 +4)[2]) goto gt; if ((x+4)[1] < (y+16 +4)[2]) goto lt; if ((x+4)[2] > (y+16 +4)[2]) goto gt; if ((x+4)[2] < (y+16 +4)[2]) goto lt; if ((x+4)[3] > (y+16 +4)[2]) goto gt; if ((x+4)[3] < (y+16 +4)[2]) goto lt; if ((x+4)[0] > (y+16 +4)[3]) goto gt; if ((x+4)[0] < (y+16 +4)[3]) goto lt; if ((x+4)[1] > (y+16 +4)[3]) goto gt; if ((x+4)[1] < (y+16 +4)[3]) goto lt; if ((x+4)[2] > (y+16 +4)[3]) goto gt; if ((x+4)[2] < (y+16 +4)[3]) goto lt; if ((x+4)[3] > (y+16 +4)[3]) goto gt; if ((x+4)[3] < (y+16 +4)[3]) goto lt; if ((x+8)[0] > (y+16 +4)[0]) goto gt; if ((x+8)[0] < (y+16 +4)[0]) goto lt; if ((x+8)[1] > (y+16 +4)[0]) goto gt; if ((x+8)[1] < (y+16 +4)[0]) goto lt; if ((x+8)[2] > (y+16 +4)[0]) goto gt; if ((x+8)[2] < (y+16 +4)[0]) goto lt; if ((x+8)[3] > (y+16 +4)[0]) goto gt; if ((x+8)[3] < (y+16 +4)[0]) goto lt; if ((x+8)[0] > (y+16 +4)[1]) goto gt; if ((x+8)[0] < (y+16 +4)[1]) goto lt; if ((x+8)[1] > (y+16 +4)[1]) goto gt; if ((x+8)[1] < (y+16 +4)[1]) goto lt; if ((x+8)[2] > (y+16 +4)[1]) goto gt; if ((x+8)[2] < (y+16 +4)[1]) goto lt; if ((x+8)[3] > (y+16 +4)[1]) goto gt; if ((x+8)[3] < (y+16 +4)[1]) goto lt; if ((x+8)[0] > (y+16 +4)[2]) goto gt; if ((x+8)[0] < (y+16 +4)[2]) goto lt; if ((x+8)[1] > (y+16 +4)[2]) goto gt; if ((x+8)[1] < (y+16 +4)[2]) goto lt; if ((x+8)[2] > (y+16 +4)[2]) goto gt; if ((x+8)[2] < (y+16 +4)[2]) goto lt; if ((x+8)[3] > (y+16 +4)[2]) goto gt; if ((x+8)[3] < (y+16 +4)[2]) goto lt; if ((x+8)[0] > (y+16 +4)[3]) goto gt; if ((x+8)[0] < (y+16 +4)[3]) goto lt; if ((x+8)[1] > (y+16 +4)[3]) goto gt; if ((x+8)[1] < (y+16 +4)[3]) goto lt; if ((x+8)[2] > (y+16 +4)[3]) goto gt; if ((x+8)[2] < (y+16 +4)[3]) goto lt; if ((x+8)[3] > (y+16 +4)[3]) goto gt; if ((x+8)[3] < (y+16 +4)[3]) goto lt; if ((x+12)[0] > (y+16 +4)[0]) goto gt; if ((x+12)[0] < (y+16 +4)[0]) goto lt; if ((x+12)[1] > (y+16 +4)[0]) goto gt; if ((x+12)[1] < (y+16 +4)[0]) goto lt; if ((x+12)[2] > (y+16 +4)[0]) goto gt; if ((x+12)[2] < (y+16 +4)[0]) goto lt; if ((x+12)[3] > (y+16 +4)[0]) goto gt; if ((x+12)[3] < (y+16 +4)[0]) goto lt; if ((x+12)[0] > (y+16 +4)[1]) goto gt; if ((x+12)[0] < (y+16 +4)[1]) goto lt; if ((x+12)[1] > (y+16 +4)[1]) goto gt; if ((x+12)[1] < (y+16 +4)[1]) goto lt; if ((x+12)[2] > (y+16 +4)[1]) goto gt; if ((x+12)[2] < (y+16 +4)[1]) goto lt; if ((x+12)[3] > (y+16 +4)[1]) goto gt; if ((x+12)[3] < (y+16 +4)[1]) goto lt; if ((x+12)[0] > (y+16 +4)[2]) goto gt; if ((x+12)[0] < (y+16 +4)[2]) goto lt; if ((x+12)[1] > (y+16 +4)[2]) goto gt; if ((x+12)[1] < (y+16 +4)[2]) goto lt; if ((x+12)[2] > (y+16 +4)[2]) goto gt; if ((x+12)[2] < (y+16 +4)[2]) goto lt; if ((x+12)[3] > (y+16 +4)[2]) goto gt; if ((x+12)[3] < (y+16 +4)[2]) goto lt; if ((x+12)[0] > (y+16 +4)[3]) goto gt; if ((x+12)[0] < (y+16 +4)[3]) goto lt; if ((x+12)[1] > (y+16 +4)[3]) goto gt; if ((x+12)[1] < (y+16 +4)[3]) goto lt; if ((x+12)[2] > (y+16 +4)[3]) goto gt; if ((x+12)[2] < (y+16 +4)[3]) goto lt; if ((x+12)[3] > (y+16 +4)[3]) goto gt; if ((x+12)[3] < (y+16 +4)[3]) goto lt; if ((x)[0] > (y+16 +8)[0]) goto gt; if ((x)[0] < (y+16 +8)[0]) goto lt; if ((x)[1] > (y+16 +8)[0]) goto gt; if ((x)[1] < (y+16 +8)[0]) goto lt; if ((x)[2] > (y+16 +8)[0]) goto gt; if ((x)[2] < (y+16 +8)[0]) goto lt; if ((x)[3] > (y+16 +8)[0]) goto gt; if ((x)[3] < (y+16 +8)[0]) goto lt; if ((x)[0] > (y+16 +8)[1]) goto gt; if ((x)[0] < (y+16 +8)[1]) goto lt; if ((x)[1] > (y+16 +8)[1]) goto gt; if ((x)[1] < (y+16 +8)[1]) goto lt; if ((x)[2] > (y+16 +8)[1]) goto gt; if ((x)[2] < (y+16 +8)[1]) goto lt; if ((x)[3] > (y+16 +8)[1]) goto gt; if ((x)[3] < (y+16 +8)[1]) goto lt; if ((x)[0] > (y+16 +8)[2]) goto gt; if ((x)[0] < (y+16 +8)[2]) goto lt; if ((x)[1] > (y+16 +8)[2]) goto gt; if ((x)[1] < (y+16 +8)[2]) goto lt; if ((x)[2] > (y+16 +8)[2]) goto gt; if ((x)[2] < (y+16 +8)[2]) goto lt; if ((x)[3] > (y+16 +8)[2]) goto gt; if ((x)[3] < (y+16 +8)[2]) goto lt; if ((x)[0] > (y+16 +8)[3]) goto gt; if ((x)[0] < (y+16 +8)[3]) goto lt; if ((x)[1] > (y+16 +8)[3]) goto gt; if ((x)[1] < (y+16 +8)[3]) goto lt; if ((x)[2] > (y+16 +8)[3]) goto gt; if ((x)[2] < (y+16 +8)[3]) goto lt; if ((x)[3] > (y+16 +8)[3]) goto gt; if ((x)[3] < (y+16 +8)[3]) goto lt; if ((x+4)[0] > (y+16 +8)[0]) goto gt; if ((x+4)[0] < (y+16 +8)[0]) goto lt; if ((x+4)[1] > (y+16 +8)[0]) goto gt; if ((x+4)[1] < (y+16 +8)[0]) goto lt; if ((x+4)[2] > (y+16 +8)[0]) goto gt; if ((x+4)[2] < (y+16 +8)[0]) goto lt; if ((x+4)[3] > (y+16 +8)[0]) goto gt; if ((x+4)[3] < (y+16 +8)[0]) goto lt; if ((x+4)[0] > (y+16 +8)[1]) goto gt; if ((x+4)[0] < (y+16 +8)[1]) goto lt; if ((x+4)[1] > (y+16 +8)[1]) goto gt; if ((x+4)[1] < (y+16 +8)[1]) goto lt; if ((x+4)[2] > (y+16 +8)[1]) goto gt; if ((x+4)[2] < (y+16 +8)[1]) goto lt; if ((x+4)[3] > (y+16 +8)[1]) goto gt; if ((x+4)[3] < (y+16 +8)[1]) goto lt; if ((x+4)[0] > (y+16 +8)[2]) goto gt; if ((x+4)[0] < (y+16 +8)[2]) goto lt; if ((x+4)[1] > (y+16 +8)[2]) goto gt; if ((x+4)[1] < (y+16 +8)[2]) goto lt; if ((x+4)[2] > (y+16 +8)[2]) goto gt; if ((x+4)[2] < (y+16 +8)[2]) goto lt; if ((x+4)[3] > (y+16 +8)[2]) goto gt; if ((x+4)[3] < (y+16 +8)[2]) goto lt; if ((x+4)[0] > (y+16 +8)[3]) goto gt; if ((x+4)[0] < (y+16 +8)[3]) goto lt; if ((x+4)[1] > (y+16 +8)[3]) goto gt; if ((x+4)[1] < (y+16 +8)[3]) goto lt; if ((x+4)[2] > (y+16 +8)[3]) goto gt; if ((x+4)[2] < (y+16 +8)[3]) goto lt; if ((x+4)[3] > (y+16 +8)[3]) goto gt; if ((x+4)[3] < (y+16 +8)[3]) goto lt; if ((x+8)[0] > (y+16 +8)[0]) goto gt; if ((x+8)[0] < (y+16 +8)[0]) goto lt; if ((x+8)[1] > (y+16 +8)[0]) goto gt; if ((x+8)[1] < (y+16 +8)[0]) goto lt; if ((x+8)[2] > (y+16 +8)[0]) goto gt; if ((x+8)[2] < (y+16 +8)[0]) goto lt; if ((x+8)[3] > (y+16 +8)[0]) goto gt; if ((x+8)[3] < (y+16 +8)[0]) goto lt; if ((x+8)[0] > (y+16 +8)[1]) goto gt; if ((x+8)[0] < (y+16 +8)[1]) goto lt; if ((x+8)[1] > (y+16 +8)[1]) goto gt; if ((x+8)[1] < (y+16 +8)[1]) goto lt; if ((x+8)[2] > (y+16 +8)[1]) goto gt; if ((x+8)[2] < (y+16 +8)[1]) goto lt; if ((x+8)[3] > (y+16 +8)[1]) goto gt; if ((x+8)[3] < (y+16 +8)[1]) goto lt; if ((x+8)[0] > (y+16 +8)[2]) goto gt; if ((x+8)[0] < (y+16 +8)[2]) goto lt; if ((x+8)[1] > (y+16 +8)[2]) goto gt; if ((x+8)[1] < (y+16 +8)[2]) goto lt; if ((x+8)[2] > (y+16 +8)[2]) goto gt; if ((x+8)[2] < (y+16 +8)[2]) goto lt; if ((x+8)[3] > (y+16 +8)[2]) goto gt; if ((x+8)[3] < (y+16 +8)[2]) goto lt; if ((x+8)[0] > (y+16 +8)[3]) goto gt; if ((x+8)[0] < (y+16 +8)[3]) goto lt; if ((x+8)[1] > (y+16 +8)[3]) goto gt; if ((x+8)[1] < (y+16 +8)[3]) goto lt; if ((x+8)[2] > (y+16 +8)[3]) goto gt; if ((x+8)[2] < (y+16 +8)[3]) goto lt; if ((x+8)[3] > (y+16 +8)[3]) goto gt; if ((x+8)[3] < (y+16 +8)[3]) goto lt; if ((x+12)[0] > (y+16 +8)[0]) goto gt; if ((x+12)[0] < (y+16 +8)[0]) goto lt; if ((x+12)[1] > (y+16 +8)[0]) goto gt; if ((x+12)[1] < (y+16 +8)[0]) goto lt; if ((x+12)[2] > (y+16 +8)[0]) goto gt; if ((x+12)[2] < (y+16 +8)[0]) goto lt; if ((x+12)[3] > (y+16 +8)[0]) goto gt; if ((x+12)[3] < (y+16 +8)[0]) goto lt; if ((x+12)[0] > (y+16 +8)[1]) goto gt; if ((x+12)[0] < (y+16 +8)[1]) goto lt; if ((x+12)[1] > (y+16 +8)[1]) goto gt; if ((x+12)[1] < (y+16 +8)[1]) goto lt; if ((x+12)[2] > (y+16 +8)[1]) goto gt; if ((x+12)[2] < (y+16 +8)[1]) goto lt; if ((x+12)[3] > (y+16 +8)[1]) goto gt; if ((x+12)[3] < (y+16 +8)[1]) goto lt; if ((x+12)[0] > (y+16 +8)[2]) goto gt; if ((x+12)[0] < (y+16 +8)[2]) goto lt; if ((x+12)[1] > (y+16 +8)[2]) goto gt; if ((x+12)[1] < (y+16 +8)[2]) goto lt; if ((x+12)[2] > (y+16 +8)[2]) goto gt; if ((x+12)[2] < (y+16 +8)[2]) goto lt; if ((x+12)[3] > (y+16 +8)[2]) goto gt; if ((x+12)[3] < (y+16 +8)[2]) goto lt; if ((x+12)[0] > (y+16 +8)[3]) goto gt; if ((x+12)[0] < (y+16 +8)[3]) goto lt; if ((x+12)[1] > (y+16 +8)[3]) goto gt; if ((x+12)[1] < (y+16 +8)[3]) goto lt; if ((x+12)[2] > (y+16 +8)[3]) goto gt; if ((x+12)[2] < (y+16 +8)[3]) goto lt; if ((x+12)[3] > (y+16 +8)[3]) goto gt; if ((x+12)[3] < (y+16 +8)[3]) goto lt; if ((x)[0] > (y+16 +12)[0]) goto gt; if ((x)[0] < (y+16 +12)[0]) goto lt; if ((x)[1] > (y+16 +12)[0]) goto gt; if ((x)[1] < (y+16 +12)[0]) goto lt; if ((x)[2] > (y+16 +12)[0]) goto gt; if ((x)[2] < (y+16 +12)[0]) goto lt; if ((x)[3] > (y+16 +12)[0]) goto gt; if ((x)[3] < (y+16 +12)[0]) goto lt; if ((x)[0] > (y+16 +12)[1]) goto gt; if ((x)[0] < (y+16 +12)[1]) goto lt; if ((x)[1] > (y+16 +12)[1]) goto gt; if ((x)[1] < (y+16 +12)[1]) goto lt; if ((x)[2] > (y+16 +12)[1]) goto gt; if ((x)[2] < (y+16 +12)[1]) goto lt; if ((x)[3] > (y+16 +12)[1]) goto gt; if ((x)[3] < (y+16 +12)[1]) goto lt; if ((x)[0] > (y+16 +12)[2]) goto gt; if ((x)[0] < (y+16 +12)[2]) goto lt; if ((x)[1] > (y+16 +12)[2]) goto gt; if ((x)[1] < (y+16 +12)[2]) goto lt; if ((x)[2] > (y+16 +12)[2]) goto gt; if ((x)[2] < (y+16 +12)[2]) goto lt; if ((x)[3] > (y+16 +12)[2]) goto gt; if ((x)[3] < (y+16 +12)[2]) goto lt; if ((x)[0] > (y+16 +12)[3]) goto gt; if ((x)[0] < (y+16 +12)[3]) goto lt; if ((x)[1] > (y+16 +12)[3]) goto gt; if ((x)[1] < (y+16 +12)[3]) goto lt; if ((x)[2] > (y+16 +12)[3]) goto gt; if ((x)[2] < (y+16 +12)[3]) goto lt; if ((x)[3] > (y+16 +12)[3]) goto gt; if ((x)[3] < (y+16 +12)[3]) goto lt; if ((x+4)[0] > (y+16 +12)[0]) goto gt; if ((x+4)[0] < (y+16 +12)[0]) goto lt; if ((x+4)[1] > (y+16 +12)[0]) goto gt; if ((x+4)[1] < (y+16 +12)[0]) goto lt; if ((x+4)[2] > (y+16 +12)[0]) goto gt; if ((x+4)[2] < (y+16 +12)[0]) goto lt; if ((x+4)[3] > (y+16 +12)[0]) goto gt; if ((x+4)[3] < (y+16 +12)[0]) goto lt; if ((x+4)[0] > (y+16 +12)[1]) goto gt; if ((x+4)[0] < (y+16 +12)[1]) goto lt; if ((x+4)[1] > (y+16 +12)[1]) goto gt; if ((x+4)[1] < (y+16 +12)[1]) goto lt; if ((x+4)[2] > (y+16 +12)[1]) goto gt; if ((x+4)[2] < (y+16 +12)[1]) goto lt; if ((x+4)[3] > (y+16 +12)[1]) goto gt; if ((x+4)[3] < (y+16 +12)[1]) goto lt; if ((x+4)[0] > (y+16 +12)[2]) goto gt; if ((x+4)[0] < (y+16 +12)[2]) goto lt; if ((x+4)[1] > (y+16 +12)[2]) goto gt; if ((x+4)[1] < (y+16 +12)[2]) goto lt; if ((x+4)[2] > (y+16 +12)[2]) goto gt; if ((x+4)[2] < (y+16 +12)[2]) goto lt; if ((x+4)[3] > (y+16 +12)[2]) goto gt; if ((x+4)[3] < (y+16 +12)[2]) goto lt; if ((x+4)[0] > (y+16 +12)[3]) goto gt; if ((x+4)[0] < (y+16 +12)[3]) goto lt; if ((x+4)[1] > (y+16 +12)[3]) goto gt; if ((x+4)[1] < (y+16 +12)[3]) goto lt; if ((x+4)[2] > (y+16 +12)[3]) goto gt; if ((x+4)[2] < (y+16 +12)[3]) goto lt; if ((x+4)[3] > (y+16 +12)[3]) goto gt; if ((x+4)[3] < (y+16 +12)[3]) goto lt; if ((x+8)[0] > (y+16 +12)[0]) goto gt; if ((x+8)[0] < (y+16 +12)[0]) goto lt; if ((x+8)[1] > (y+16 +12)[0]) goto gt; if ((x+8)[1] < (y+16 +12)[0]) goto lt; if ((x+8)[2] > (y+16 +12)[0]) goto gt; if ((x+8)[2] < (y+16 +12)[0]) goto lt; if ((x+8)[3] > (y+16 +12)[0]) goto gt; if ((x+8)[3] < (y+16 +12)[0]) goto lt; if ((x+8)[0] > (y+16 +12)[1]) goto gt; if ((x+8)[0] < (y+16 +12)[1]) goto lt; if ((x+8)[1] > (y+16 +12)[1]) goto gt; if ((x+8)[1] < (y+16 +12)[1]) goto lt; if ((x+8)[2] > (y+16 +12)[1]) goto gt; if ((x+8)[2] < (y+16 +12)[1]) goto lt; if ((x+8)[3] > (y+16 +12)[1]) goto gt; if ((x+8)[3] < (y+16 +12)[1]) goto lt; if ((x+8)[0] > (y+16 +12)[2]) goto gt; if ((x+8)[0] < (y+16 +12)[2]) goto lt; if ((x+8)[1] > (y+16 +12)[2]) goto gt; if ((x+8)[1] < (y+16 +12)[2]) goto lt; if ((x+8)[2] > (y+16 +12)[2]) goto gt; if ((x+8)[2] < (y+16 +12)[2]) goto lt; if ((x+8)[3] > (y+16 +12)[2]) goto gt; if ((x+8)[3] < (y+16 +12)[2]) goto lt; if ((x+8)[0] > (y+16 +12)[3]) goto gt; if ((x+8)[0] < (y+16 +12)[3]) goto lt; if ((x+8)[1] > (y+16 +12)[3]) goto gt; if ((x+8)[1] < (y+16 +12)[3]) goto lt; if ((x+8)[2] > (y+16 +12)[3]) goto gt; if ((x+8)[2] < (y+16 +12)[3]) goto lt; if ((x+8)[3] > (y+16 +12)[3]) goto gt; if ((x+8)[3] < (y+16 +12)[3]) goto lt; if ((x+12)[0] > (y+16 +12)[0]) goto gt; if ((x+12)[0] < (y+16 +12)[0]) goto lt; if ((x+12)[1] > (y+16 +12)[0]) goto gt; if ((x+12)[1] < (y+16 +12)[0]) goto lt; if ((x+12)[2] > (y+16 +12)[0]) goto gt; if ((x+12)[2] < (y+16 +12)[0]) goto lt; if ((x+12)[3] > (y+16 +12)[0]) goto gt; if ((x+12)[3] < (y+16 +12)[0]) goto lt; if ((x+12)[0] > (y+16 +12)[1]) goto gt; if ((x+12)[0] < (y+16 +12)[1]) goto lt; if ((x+12)[1] > (y+16 +12)[1]) goto gt; if ((x+12)[1] < (y+16 +12)[1]) goto lt; if ((x+12)[2] > (y+16 +12)[1]) goto gt; if ((x+12)[2] < (y+16 +12)[1]) goto lt; if ((x+12)[3] > (y+16 +12)[1]) goto gt; if ((x+12)[3] < (y+16 +12)[1]) goto lt; if ((x+12)[0] > (y+16 +12)[2]) goto gt; if ((x+12)[0] < (y+16 +12)[2]) goto lt; if ((x+12)[1] > (y+16 +12)[2]) goto gt; if ((x+12)[1] < (y+16 +12)[2]) goto lt; if ((x+12)[2] > (y+16 +12)[2]) goto gt; if ((x+12)[2] < (y+16 +12)[2]) goto lt; if ((x+12)[3] > (y+16 +12)[2]) goto gt; if ((x+12)[3] < (y+16 +12)[2]) goto lt; if ((x+12)[0] > (y+16 +12)[3]) goto gt; if ((x+12)[0] < (y+16 +12)[3]) goto lt; if ((x+12)[1] > (y+16 +12)[3]) goto gt; if ((x+12)[1] < (y+16 +12)[3]) goto lt; if ((x+12)[2] > (y+16 +12)[3]) goto gt; if ((x+12)[2] < (y+16 +12)[3]) goto lt; if ((x+12)[3] > (y+16 +12)[3]) goto gt; if ((x+12)[3] < (y+16 +12)[3]) goto lt; if ((x+16)[0] > (y+16)[0]) goto gt; if ((x+16)[0] < (y+16)[0]) goto lt; if ((x+16)[1] > (y+16)[0]) goto gt; if ((x+16)[1] < (y+16)[0]) goto lt; if ((x+16)[2] > (y+16)[0]) goto gt; if ((x+16)[2] < (y+16)[0]) goto lt; if ((x+16)[3] > (y+16)[0]) goto gt; if ((x+16)[3] < (y+16)[0]) goto lt; if ((x+16)[0] > (y+16)[1]) goto gt; if ((x+16)[0] < (y+16)[1]) goto lt; if ((x+16)[1] > (y+16)[1]) goto gt; if ((x+16)[1] < (y+16)[1]) goto lt; if ((x+16)[2] > (y+16)[1]) goto gt; if ((x+16)[2] < (y+16)[1]) goto lt; if ((x+16)[3] > (y+16)[1]) goto gt; if ((x+16)[3] < (y+16)[1]) goto lt; if ((x+16)[0] > (y+16)[2]) goto gt; if ((x+16)[0] < (y+16)[2]) goto lt; if ((x+16)[1] > (y+16)[2]) goto gt; if ((x+16)[1] < (y+16)[2]) goto lt; if ((x+16)[2] > (y+16)[2]) goto gt; if ((x+16)[2] < (y+16)[2]) goto lt; if ((x+16)[3] > (y+16)[2]) goto gt; if ((x+16)[3] < (y+16)[2]) goto lt; if ((x+16)[0] > (y+16)[3]) goto gt; if ((x+16)[0] < (y+16)[3]) goto lt; if ((x+16)[1] > (y+16)[3]) goto gt; if ((x+16)[1] < (y+16)[3]) goto lt; if ((x+16)[2] > (y+16)[3]) goto gt; if ((x+16)[2] < (y+16)[3]) goto lt; if ((x+16)[3] > (y+16)[3]) goto gt; if ((x+16)[3] < (y+16)[3]) goto lt; if ((x+16 +4)[0] > (y+16)[0]) goto gt; if ((x+16 +4)[0] < (y+16)[0]) goto lt; if ((x+16 +4)[1] > (y+16)[0]) goto gt; if ((x+16 +4)[1] < (y+16)[0]) goto lt; if ((x+16 +4)[2] > (y+16)[0]) goto gt; if ((x+16 +4)[2] < (y+16)[0]) goto lt; if ((x+16 +4)[3] > (y+16)[0]) goto gt; if ((x+16 +4)[3] < (y+16)[0]) goto lt; if ((x+16 +4)[0] > (y+16)[1]) goto gt; if ((x+16 +4)[0] < (y+16)[1]) goto lt; if ((x+16 +4)[1] > (y+16)[1]) goto gt; if ((x+16 +4)[1] < (y+16)[1]) goto lt; if ((x+16 +4)[2] > (y+16)[1]) goto gt; if ((x+16 +4)[2] < (y+16)[1]) goto lt; if ((x+16 +4)[3] > (y+16)[1]) goto gt; if ((x+16 +4)[3] < (y+16)[1]) goto lt; if ((x+16 +4)[0] > (y+16)[2]) goto gt; if ((x+16 +4)[0] < (y+16)[2]) goto lt; if ((x+16 +4)[1] > (y+16)[2]) goto gt; if ((x+16 +4)[1] < (y+16)[2]) goto lt; if ((x+16 +4)[2] > (y+16)[2]) goto gt; if ((x+16 +4)[2] < (y+16)[2]) goto lt; if ((x+16 +4)[3] > (y+16)[2]) goto gt; if ((x+16 +4)[3] < (y+16)[2]) goto lt; if ((x+16 +4)[0] > (y+16)[3]) goto gt; if ((x+16 +4)[0] < (y+16)[3]) goto lt; if ((x+16 +4)[1] > (y+16)[3]) goto gt; if ((x+16 +4)[1] < (y+16)[3]) goto lt; if ((x+16 +4)[2] > (y+16)[3]) goto gt; if ((x+16 +4)[2] < (y+16)[3]) goto lt; if ((x+16 +4)[3] > (y+16)[3]) goto gt; if ((x+16 +4)[3] < (y+16)[3]) goto lt; if ((x+16 +8)[0] > (y+16)[0]) goto gt; if ((x+16 +8)[0] < (y+16)[0]) goto lt; if ((x+16 +8)[1] > (y+16)[0]) goto gt; if ((x+16 +8)[1] < (y+16)[0]) goto lt; if ((x+16 +8)[2] > (y+16)[0]) goto gt; if ((x+16 +8)[2] < (y+16)[0]) goto lt; if ((x+16 +8)[3] > (y+16)[0]) goto gt; if ((x+16 +8)[3] < (y+16)[0]) goto lt; if ((x+16 +8)[0] > (y+16)[1]) goto gt; if ((x+16 +8)[0] < (y+16)[1]) goto lt; if ((x+16 +8)[1] > (y+16)[1]) goto gt; if ((x+16 +8)[1] < (y+16)[1]) goto lt; if ((x+16 +8)[2] > (y+16)[1]) goto gt; if ((x+16 +8)[2] < (y+16)[1]) goto lt; if ((x+16 +8)[3] > (y+16)[1]) goto gt; if ((x+16 +8)[3] < (y+16)[1]) goto lt; if ((x+16 +8)[0] > (y+16)[2]) goto gt; if ((x+16 +8)[0] < (y+16)[2]) goto lt; if ((x+16 +8)[1] > (y+16)[2]) goto gt; if ((x+16 +8)[1] < (y+16)[2]) goto lt; if ((x+16 +8)[2] > (y+16)[2]) goto gt; if ((x+16 +8)[2] < (y+16)[2]) goto lt; if ((x+16 +8)[3] > (y+16)[2]) goto gt; if ((x+16 +8)[3] < (y+16)[2]) goto lt; if ((x+16 +8)[0] > (y+16)[3]) goto gt; if ((x+16 +8)[0] < (y+16)[3]) goto lt; if ((x+16 +8)[1] > (y+16)[3]) goto gt; if ((x+16 +8)[1] < (y+16)[3]) goto lt; if ((x+16 +8)[2] > (y+16)[3]) goto gt; if ((x+16 +8)[2] < (y+16)[3]) goto lt; if ((x+16 +8)[3] > (y+16)[3]) goto gt; if ((x+16 +8)[3] < (y+16)[3]) goto lt; if ((x+16 +12)[0] > (y+16)[0]) goto gt; if ((x+16 +12)[0] < (y+16)[0]) goto lt; if ((x+16 +12)[1] > (y+16)[0]) goto gt; if ((x+16 +12)[1] < (y+16)[0]) goto lt; if ((x+16 +12)[2] > (y+16)[0]) goto gt; if ((x+16 +12)[2] < (y+16)[0]) goto lt; if ((x+16 +12)[3] > (y+16)[0]) goto gt; if ((x+16 +12)[3] < (y+16)[0]) goto lt; if ((x+16 +12)[0] > (y+16)[1]) goto gt; if ((x+16 +12)[0] < (y+16)[1]) goto lt; if ((x+16 +12)[1] > (y+16)[1]) goto gt; if ((x+16 +12)[1] < (y+16)[1]) goto lt; if ((x+16 +12)[2] > (y+16)[1]) goto gt; if ((x+16 +12)[2] < (y+16)[1]) goto lt; if ((x+16 +12)[3] > (y+16)[1]) goto gt; if ((x+16 +12)[3] < (y+16)[1]) goto lt; if ((x+16 +12)[0] > (y+16)[2]) goto gt; if ((x+16 +12)[0] < (y+16)[2]) goto lt; if ((x+16 +12)[1] > (y+16)[2]) goto gt; if ((x+16 +12)[1] < (y+16)[2]) goto lt; if ((x+16 +12)[2] > (y+16)[2]) goto gt; if ((x+16 +12)[2] < (y+16)[2]) goto lt; if ((x+16 +12)[3] > (y+16)[2]) goto gt; if ((x+16 +12)[3] < (y+16)[2]) goto lt; if ((x+16 +12)[0] > (y+16)[3]) goto gt; if ((x+16 +12)[0] < (y+16)[3]) goto lt; if ((x+16 +12)[1] > (y+16)[3]) goto gt; if ((x+16 +12)[1] < (y+16)[3]) goto lt; if ((x+16 +12)[2] > (y+16)[3]) goto gt; if ((x+16 +12)[2] < (y+16)[3]) goto lt; if ((x+16 +12)[3] > (y+16)[3]) goto gt; if ((x+16 +12)[3] < (y+16)[3]) goto lt; if ((x+16)[0] > (y+16 +4)[0]) goto gt; if ((x+16)[0] < (y+16 +4)[0]) goto lt; if ((x+16)[1] > (y+16 +4)[0]) goto gt; if ((x+16)[1] < (y+16 +4)[0]) goto lt; if ((x+16)[2] > (y+16 +4)[0]) goto gt; if ((x+16)[2] < (y+16 +4)[0]) goto lt; if ((x+16)[3] > (y+16 +4)[0]) goto gt; if ((x+16)[3] < (y+16 +4)[0]) goto lt; if ((x+16)[0] > (y+16 +4)[1]) goto gt; if ((x+16)[0] < (y+16 +4)[1]) goto lt; if ((x+16)[1] > (y+16 +4)[1]) goto gt; if ((x+16)[1] < (y+16 +4)[1]) goto lt; if ((x+16)[2] > (y+16 +4)[1]) goto gt; if ((x+16)[2] < (y+16 +4)[1]) goto lt; if ((x+16)[3] > (y+16 +4)[1]) goto gt; if ((x+16)[3] < (y+16 +4)[1]) goto lt; if ((x+16)[0] > (y+16 +4)[2]) goto gt; if ((x+16)[0] < (y+16 +4)[2]) goto lt; if ((x+16)[1] > (y+16 +4)[2]) goto gt; if ((x+16)[1] < (y+16 +4)[2]) goto lt; if ((x+16)[2] > (y+16 +4)[2]) goto gt; if ((x+16)[2] < (y+16 +4)[2]) goto lt; if ((x+16)[3] > (y+16 +4)[2]) goto gt; if ((x+16)[3] < (y+16 +4)[2]) goto lt; if ((x+16)[0] > (y+16 +4)[3]) goto gt; if ((x+16)[0] < (y+16 +4)[3]) goto lt; if ((x+16)[1] > (y+16 +4)[3]) goto gt; if ((x+16)[1] < (y+16 +4)[3]) goto lt; if ((x+16)[2] > (y+16 +4)[3]) goto gt; if ((x+16)[2] < (y+16 +4)[3]) goto lt; if ((x+16)[3] > (y+16 +4)[3]) goto gt; if ((x+16)[3] < (y+16 +4)[3]) goto lt; if ((x+16 +4)[0] > (y+16 +4)[0]) goto gt; if ((x+16 +4)[0] < (y+16 +4)[0]) goto lt; if ((x+16 +4)[1] > (y+16 +4)[0]) goto gt; if ((x+16 +4)[1] < (y+16 +4)[0]) goto lt; if ((x+16 +4)[2] > (y+16 +4)[0]) goto gt; if ((x+16 +4)[2] < (y+16 +4)[0]) goto lt; if ((x+16 +4)[3] > (y+16 +4)[0]) goto gt; if ((x+16 +4)[3] < (y+16 +4)[0]) goto lt; if ((x+16 +4)[0] > (y+16 +4)[1]) goto gt; if ((x+16 +4)[0] < (y+16 +4)[1]) goto lt; if ((x+16 +4)[1] > (y+16 +4)[1]) goto gt; if ((x+16 +4)[1] < (y+16 +4)[1]) goto lt; if ((x+16 +4)[2] > (y+16 +4)[1]) goto gt; if ((x+16 +4)[2] < (y+16 +4)[1]) goto lt; if ((x+16 +4)[3] > (y+16 +4)[1]) goto gt; if ((x+16 +4)[3] < (y+16 +4)[1]) goto lt; if ((x+16 +4)[0] > (y+16 +4)[2]) goto gt; if ((x+16 +4)[0] < (y+16 +4)[2]) goto lt; if ((x+16 +4)[1] > (y+16 +4)[2]) goto gt; if ((x+16 +4)[1] < (y+16 +4)[2]) goto lt; if ((x+16 +4)[2] > (y+16 +4)[2]) goto gt; if ((x+16 +4)[2] < (y+16 +4)[2]) goto lt; if ((x+16 +4)[3] > (y+16 +4)[2]) goto gt; if ((x+16 +4)[3] < (y+16 +4)[2]) goto lt; if ((x+16 +4)[0] > (y+16 +4)[3]) goto gt; if ((x+16 +4)[0] < (y+16 +4)[3]) goto lt; if ((x+16 +4)[1] > (y+16 +4)[3]) goto gt; if ((x+16 +4)[1] < (y+16 +4)[3]) goto lt; if ((x+16 +4)[2] > (y+16 +4)[3]) goto gt; if ((x+16 +4)[2] < (y+16 +4)[3]) goto lt; if ((x+16 +4)[3] > (y+16 +4)[3]) goto gt; if ((x+16 +4)[3] < (y+16 +4)[3]) goto lt; if ((x+16 +8)[0] > (y+16 +4)[0]) goto gt; if ((x+16 +8)[0] < (y+16 +4)[0]) goto lt; if ((x+16 +8)[1] > (y+16 +4)[0]) goto gt; if ((x+16 +8)[1] < (y+16 +4)[0]) goto lt; if ((x+16 +8)[2] > (y+16 +4)[0]) goto gt; if ((x+16 +8)[2] < (y+16 +4)[0]) goto lt; if ((x+16 +8)[3] > (y+16 +4)[0]) goto gt; if ((x+16 +8)[3] < (y+16 +4)[0]) goto lt; if ((x+16 +8)[0] > (y+16 +4)[1]) goto gt; if ((x+16 +8)[0] < (y+16 +4)[1]) goto lt; if ((x+16 +8)[1] > (y+16 +4)[1]) goto gt; if ((x+16 +8)[1] < (y+16 +4)[1]) goto lt; if ((x+16 +8)[2] > (y+16 +4)[1]) goto gt; if ((x+16 +8)[2] < (y+16 +4)[1]) goto lt; if ((x+16 +8)[3] > (y+16 +4)[1]) goto gt; if ((x+16 +8)[3] < (y+16 +4)[1]) goto lt; if ((x+16 +8)[0] > (y+16 +4)[2]) goto gt; if ((x+16 +8)[0] < (y+16 +4)[2]) goto lt; if ((x+16 +8)[1] > (y+16 +4)[2]) goto gt; if ((x+16 +8)[1] < (y+16 +4)[2]) goto lt; if ((x+16 +8)[2] > (y+16 +4)[2]) goto gt; if ((x+16 +8)[2] < (y+16 +4)[2]) goto lt; if ((x+16 +8)[3] > (y+16 +4)[2]) goto gt; if ((x+16 +8)[3] < (y+16 +4)[2]) goto lt; if ((x+16 +8)[0] > (y+16 +4)[3]) goto gt; if ((x+16 +8)[0] < (y+16 +4)[3]) goto lt; if ((x+16 +8)[1] > (y+16 +4)[3]) goto gt; if ((x+16 +8)[1] < (y+16 +4)[3]) goto lt; if ((x+16 +8)[2] > (y+16 +4)[3]) goto gt; if ((x+16 +8)[2] < (y+16 +4)[3]) goto lt; if ((x+16 +8)[3] > (y+16 +4)[3]) goto gt; if ((x+16 +8)[3] < (y+16 +4)[3]) goto lt; if ((x+16 +12)[0] > (y+16 +4)[0]) goto gt; if ((x+16 +12)[0] < (y+16 +4)[0]) goto lt; if ((x+16 +12)[1] > (y+16 +4)[0]) goto gt; if ((x+16 +12)[1] < (y+16 +4)[0]) goto lt; if ((x+16 +12)[2] > (y+16 +4)[0]) goto gt; if ((x+16 +12)[2] < (y+16 +4)[0]) goto lt; if ((x+16 +12)[3] > (y+16 +4)[0]) goto gt; if ((x+16 +12)[3] < (y+16 +4)[0]) goto lt; if ((x+16 +12)[0] > (y+16 +4)[1]) goto gt; if ((x+16 +12)[0] < (y+16 +4)[1]) goto lt; if ((x+16 +12)[1] > (y+16 +4)[1]) goto gt; if ((x+16 +12)[1] < (y+16 +4)[1]) goto lt; if ((x+16 +12)[2] > (y+16 +4)[1]) goto gt; if ((x+16 +12)[2] < (y+16 +4)[1]) goto lt; if ((x+16 +12)[3] > (y+16 +4)[1]) goto gt; if ((x+16 +12)[3] < (y+16 +4)[1]) goto lt; if ((x+16 +12)[0] > (y+16 +4)[2]) goto gt; if ((x+16 +12)[0] < (y+16 +4)[2]) goto lt; if ((x+16 +12)[1] > (y+16 +4)[2]) goto gt; if ((x+16 +12)[1] < (y+16 +4)[2]) goto lt; if ((x+16 +12)[2] > (y+16 +4)[2]) goto gt; if ((x+16 +12)[2] < (y+16 +4)[2]) goto lt; if ((x+16 +12)[3] > (y+16 +4)[2]) goto gt; if ((x+16 +12)[3] < (y+16 +4)[2]) goto lt; if ((x+16 +12)[0] > (y+16 +4)[3]) goto gt; if ((x+16 +12)[0] < (y+16 +4)[3]) goto lt; if ((x+16 +12)[1] > (y+16 +4)[3]) goto gt; if ((x+16 +12)[1] < (y+16 +4)[3]) goto lt; if ((x+16 +12)[2] > (y+16 +4)[3]) goto gt; if ((x+16 +12)[2] < (y+16 +4)[3]) goto lt; if ((x+16 +12)[3] > (y+16 +4)[3]) goto gt; if ((x+16 +12)[3] < (y+16 +4)[3]) goto lt; if ((x+16)[0] > (y+16 +8)[0]) goto gt; if ((x+16)[0] < (y+16 +8)[0]) goto lt; if ((x+16)[1] > (y+16 +8)[0]) goto gt; if ((x+16)[1] < (y+16 +8)[0]) goto lt; if ((x+16)[2] > (y+16 +8)[0]) goto gt; if ((x+16)[2] < (y+16 +8)[0]) goto lt; if ((x+16)[3] > (y+16 +8)[0]) goto gt; if ((x+16)[3] < (y+16 +8)[0]) goto lt; if ((x+16)[0] > (y+16 +8)[1]) goto gt; if ((x+16)[0] < (y+16 +8)[1]) goto lt; if ((x+16)[1] > (y+16 +8)[1]) goto gt; if ((x+16)[1] < (y+16 +8)[1]) goto lt; if ((x+16)[2] > (y+16 +8)[1]) goto gt; if ((x+16)[2] < (y+16 +8)[1]) goto lt; if ((x+16)[3] > (y+16 +8)[1]) goto gt; if ((x+16)[3] < (y+16 +8)[1]) goto lt; if ((x+16)[0] > (y+16 +8)[2]) goto gt; if ((x+16)[0] < (y+16 +8)[2]) goto lt; if ((x+16)[1] > (y+16 +8)[2]) goto gt; if ((x+16)[1] < (y+16 +8)[2]) goto lt; if ((x+16)[2] > (y+16 +8)[2]) goto gt; if ((x+16)[2] < (y+16 +8)[2]) goto lt; if ((x+16)[3] > (y+16 +8)[2]) goto gt; if ((x+16)[3] < (y+16 +8)[2]) goto lt; if ((x+16)[0] > (y+16 +8)[3]) goto gt; if ((x+16)[0] < (y+16 +8)[3]) goto lt; if ((x+16)[1] > (y+16 +8)[3]) goto gt; if ((x+16)[1] < (y+16 +8)[3]) goto lt; if ((x+16)[2] > (y+16 +8)[3]) goto gt; if ((x+16)[2] < (y+16 +8)[3]) goto lt; if ((x+16)[3] > (y+16 +8)[3]) goto gt; if ((x+16)[3] < (y+16 +8)[3]) goto lt; if ((x+16 +4)[0] > (y+16 +8)[0]) goto gt; if ((x+16 +4)[0] < (y+16 +8)[0]) goto lt; if ((x+16 +4)[1] > (y+16 +8)[0]) goto gt; if ((x+16 +4)[1] < (y+16 +8)[0]) goto lt; if ((x+16 +4)[2] > (y+16 +8)[0]) goto gt; if ((x+16 +4)[2] < (y+16 +8)[0]) goto lt; if ((x+16 +4)[3] > (y+16 +8)[0]) goto gt; if ((x+16 +4)[3] < (y+16 +8)[0]) goto lt; if ((x+16 +4)[0] > (y+16 +8)[1]) goto gt; if ((x+16 +4)[0] < (y+16 +8)[1]) goto lt; if ((x+16 +4)[1] > (y+16 +8)[1]) goto gt; if ((x+16 +4)[1] < (y+16 +8)[1]) goto lt; if ((x+16 +4)[2] > (y+16 +8)[1]) goto gt; if ((x+16 +4)[2] < (y+16 +8)[1]) goto lt; if ((x+16 +4)[3] > (y+16 +8)[1]) goto gt; if ((x+16 +4)[3] < (y+16 +8)[1]) goto lt; if ((x+16 +4)[0] > (y+16 +8)[2]) goto gt; if ((x+16 +4)[0] < (y+16 +8)[2]) goto lt; if ((x+16 +4)[1] > (y+16 +8)[2]) goto gt; if ((x+16 +4)[1] < (y+16 +8)[2]) goto lt; if ((x+16 +4)[2] > (y+16 +8)[2]) goto gt; if ((x+16 +4)[2] < (y+16 +8)[2]) goto lt; if ((x+16 +4)[3] > (y+16 +8)[2]) goto gt; if ((x+16 +4)[3] < (y+16 +8)[2]) goto lt; if ((x+16 +4)[0] > (y+16 +8)[3]) goto gt; if ((x+16 +4)[0] < (y+16 +8)[3]) goto lt; if ((x+16 +4)[1] > (y+16 +8)[3]) goto gt; if ((x+16 +4)[1] < (y+16 +8)[3]) goto lt; if ((x+16 +4)[2] > (y+16 +8)[3]) goto gt; if ((x+16 +4)[2] < (y+16 +8)[3]) goto lt; if ((x+16 +4)[3] > (y+16 +8)[3]) goto gt; if ((x+16 +4)[3] < (y+16 +8)[3]) goto lt; if ((x+16 +8)[0] > (y+16 +8)[0]) goto gt; if ((x+16 +8)[0] < (y+16 +8)[0]) goto lt; if ((x+16 +8)[1] > (y+16 +8)[0]) goto gt; if ((x+16 +8)[1] < (y+16 +8)[0]) goto lt; if ((x+16 +8)[2] > (y+16 +8)[0]) goto gt; if ((x+16 +8)[2] < (y+16 +8)[0]) goto lt; if ((x+16 +8)[3] > (y+16 +8)[0]) goto gt; if ((x+16 +8)[3] < (y+16 +8)[0]) goto lt; if ((x+16 +8)[0] > (y+16 +8)[1]) goto gt; if ((x+16 +8)[0] < (y+16 +8)[1]) goto lt; if ((x+16 +8)[1] > (y+16 +8)[1]) goto gt; if ((x+16 +8)[1] < (y+16 +8)[1]) goto lt; if ((x+16 +8)[2] > (y+16 +8)[1]) goto gt; if ((x+16 +8)[2] < (y+16 +8)[1]) goto lt; if ((x+16 +8)[3] > (y+16 +8)[1]) goto gt; if ((x+16 +8)[3] < (y+16 +8)[1]) goto lt; if ((x+16 +8)[0] > (y+16 +8)[2]) goto gt; if ((x+16 +8)[0] < (y+16 +8)[2]) goto lt; if ((x+16 +8)[1] > (y+16 +8)[2]) goto gt; if ((x+16 +8)[1] < (y+16 +8)[2]) goto lt; if ((x+16 +8)[2] > (y+16 +8)[2]) goto gt; if ((x+16 +8)[2] < (y+16 +8)[2]) goto lt; if ((x+16 +8)[3] > (y+16 +8)[2]) goto gt; if ((x+16 +8)[3] < (y+16 +8)[2]) goto lt; if ((x+16 +8)[0] > (y+16 +8)[3]) goto gt; if ((x+16 +8)[0] < (y+16 +8)[3]) goto lt; if ((x+16 +8)[1] > (y+16 +8)[3]) goto gt; if ((x+16 +8)[1] < (y+16 +8)[3]) goto lt; if ((x+16 +8)[2] > (y+16 +8)[3]) goto gt; if ((x+16 +8)[2] < (y+16 +8)[3]) goto lt; if ((x+16 +8)[3] > (y+16 +8)[3]) goto gt; if ((x+16 +8)[3] < (y+16 +8)[3]) goto lt; if ((x+16 +12)[0] > (y+16 +8)[0]) goto gt; if ((x+16 +12)[0] < (y+16 +8)[0]) goto lt; if ((x+16 +12)[1] > (y+16 +8)[0]) goto gt; if ((x+16 +12)[1] < (y+16 +8)[0]) goto lt; if ((x+16 +12)[2] > (y+16 +8)[0]) goto gt; if ((x+16 +12)[2] < (y+16 +8)[0]) goto lt; if ((x+16 +12)[3] > (y+16 +8)[0]) goto gt; if ((x+16 +12)[3] < (y+16 +8)[0]) goto lt; if ((x+16 +12)[0] > (y+16 +8)[1]) goto gt; if ((x+16 +12)[0] < (y+16 +8)[1]) goto lt; if ((x+16 +12)[1] > (y+16 +8)[1]) goto gt; if ((x+16 +12)[1] < (y+16 +8)[1]) goto lt; if ((x+16 +12)[2] > (y+16 +8)[1]) goto gt; if ((x+16 +12)[2] < (y+16 +8)[1]) goto lt; if ((x+16 +12)[3] > (y+16 +8)[1]) goto gt; if ((x+16 +12)[3] < (y+16 +8)[1]) goto lt; if ((x+16 +12)[0] > (y+16 +8)[2]) goto gt; if ((x+16 +12)[0] < (y+16 +8)[2]) goto lt; if ((x+16 +12)[1] > (y+16 +8)[2]) goto gt; if ((x+16 +12)[1] < (y+16 +8)[2]) goto lt; if ((x+16 +12)[2] > (y+16 +8)[2]) goto gt; if ((x+16 +12)[2] < (y+16 +8)[2]) goto lt; if ((x+16 +12)[3] > (y+16 +8)[2]) goto gt; if ((x+16 +12)[3] < (y+16 +8)[2]) goto lt; if ((x+16 +12)[0] > (y+16 +8)[3]) goto gt; if ((x+16 +12)[0] < (y+16 +8)[3]) goto lt; if ((x+16 +12)[1] > (y+16 +8)[3]) goto gt; if ((x+16 +12)[1] < (y+16 +8)[3]) goto lt; if ((x+16 +12)[2] > (y+16 +8)[3]) goto gt; if ((x+16 +12)[2] < (y+16 +8)[3]) goto lt; if ((x+16 +12)[3] > (y+16 +8)[3]) goto gt; if ((x+16 +12)[3] < (y+16 +8)[3]) goto lt; if ((x+16)[0] > (y+16 +12)[0]) goto gt; if ((x+16)[0] < (y+16 +12)[0]) goto lt; if ((x+16)[1] > (y+16 +12)[0]) goto gt; if ((x+16)[1] < (y+16 +12)[0]) goto lt; if ((x+16)[2] > (y+16 +12)[0]) goto gt; if ((x+16)[2] < (y+16 +12)[0]) goto lt; if ((x+16)[3] > (y+16 +12)[0]) goto gt; if ((x+16)[3] < (y+16 +12)[0]) goto lt; if ((x+16)[0] > (y+16 +12)[1]) goto gt; if ((x+16)[0] < (y+16 +12)[1]) goto lt; if ((x+16)[1] > (y+16 +12)[1]) goto gt; if ((x+16)[1] < (y+16 +12)[1]) goto lt; if ((x+16)[2] > (y+16 +12)[1]) goto gt; if ((x+16)[2] < (y+16 +12)[1]) goto lt; if ((x+16)[3] > (y+16 +12)[1]) goto gt; if ((x+16)[3] < (y+16 +12)[1]) goto lt; if ((x+16)[0] > (y+16 +12)[2]) goto gt; if ((x+16)[0] < (y+16 +12)[2]) goto lt; if ((x+16)[1] > (y+16 +12)[2]) goto gt; if ((x+16)[1] < (y+16 +12)[2]) goto lt; if ((x+16)[2] > (y+16 +12)[2]) goto gt; if ((x+16)[2] < (y+16 +12)[2]) goto lt; if ((x+16)[3] > (y+16 +12)[2]) goto gt; if ((x+16)[3] < (y+16 +12)[2]) goto lt; if ((x+16)[0] > (y+16 +12)[3]) goto gt; if ((x+16)[0] < (y+16 +12)[3]) goto lt; if ((x+16)[1] > (y+16 +12)[3]) goto gt; if ((x+16)[1] < (y+16 +12)[3]) goto lt; if ((x+16)[2] > (y+16 +12)[3]) goto gt; if ((x+16)[2] < (y+16 +12)[3]) goto lt; if ((x+16)[3] > (y+16 +12)[3]) goto gt; if ((x+16)[3] < (y+16 +12)[3]) goto lt; if ((x+16 +4)[0] > (y+16 +12)[0]) goto gt; if ((x+16 +4)[0] < (y+16 +12)[0]) goto lt; if ((x+16 +4)[1] > (y+16 +12)[0]) goto gt; if ((x+16 +4)[1] < (y+16 +12)[0]) goto lt; if ((x+16 +4)[2] > (y+16 +12)[0]) goto gt; if ((x+16 +4)[2] < (y+16 +12)[0]) goto lt; if ((x+16 +4)[3] > (y+16 +12)[0]) goto gt; if ((x+16 +4)[3] < (y+16 +12)[0]) goto lt; if ((x+16 +4)[0] > (y+16 +12)[1]) goto gt; if ((x+16 +4)[0] < (y+16 +12)[1]) goto lt; if ((x+16 +4)[1] > (y+16 +12)[1]) goto gt; if ((x+16 +4)[1] < (y+16 +12)[1]) goto lt; if ((x+16 +4)[2] > (y+16 +12)[1]) goto gt; if ((x+16 +4)[2] < (y+16 +12)[1]) goto lt; if ((x+16 +4)[3] > (y+16 +12)[1]) goto gt; if ((x+16 +4)[3] < (y+16 +12)[1]) goto lt; if ((x+16 +4)[0] > (y+16 +12)[2]) goto gt; if ((x+16 +4)[0] < (y+16 +12)[2]) goto lt; if ((x+16 +4)[1] > (y+16 +12)[2]) goto gt; if ((x+16 +4)[1] < (y+16 +12)[2]) goto lt; if ((x+16 +4)[2] > (y+16 +12)[2]) goto gt; if ((x+16 +4)[2] < (y+16 +12)[2]) goto lt; if ((x+16 +4)[3] > (y+16 +12)[2]) goto gt; if ((x+16 +4)[3] < (y+16 +12)[2]) goto lt; if ((x+16 +4)[0] > (y+16 +12)[3]) goto gt; if ((x+16 +4)[0] < (y+16 +12)[3]) goto lt; if ((x+16 +4)[1] > (y+16 +12)[3]) goto gt; if ((x+16 +4)[1] < (y+16 +12)[3]) goto lt; if ((x+16 +4)[2] > (y+16 +12)[3]) goto gt; if ((x+16 +4)[2] < (y+16 +12)[3]) goto lt; if ((x+16 +4)[3] > (y+16 +12)[3]) goto gt; if ((x+16 +4)[3] < (y+16 +12)[3]) goto lt; if ((x+16 +8)[0] > (y+16 +12)[0]) goto gt; if ((x+16 +8)[0] < (y+16 +12)[0]) goto lt; if ((x+16 +8)[1] > (y+16 +12)[0]) goto gt; if ((x+16 +8)[1] < (y+16 +12)[0]) goto lt; if ((x+16 +8)[2] > (y+16 +12)[0]) goto gt; if ((x+16 +8)[2] < (y+16 +12)[0]) goto lt; if ((x+16 +8)[3] > (y+16 +12)[0]) goto gt; if ((x+16 +8)[3] < (y+16 +12)[0]) goto lt; if ((x+16 +8)[0] > (y+16 +12)[1]) goto gt; if ((x+16 +8)[0] < (y+16 +12)[1]) goto lt; if ((x+16 +8)[1] > (y+16 +12)[1]) goto gt; if ((x+16 +8)[1] < (y+16 +12)[1]) goto lt; if ((x+16 +8)[2] > (y+16 +12)[1]) goto gt; if ((x+16 +8)[2] < (y+16 +12)[1]) goto lt; if ((x+16 +8)[3] > (y+16 +12)[1]) goto gt; if ((x+16 +8)[3] < (y+16 +12)[1]) goto lt; if ((x+16 +8)[0] > (y+16 +12)[2]) goto gt; if ((x+16 +8)[0] < (y+16 +12)[2]) goto lt; if ((x+16 +8)[1] > (y+16 +12)[2]) goto gt; if ((x+16 +8)[1] < (y+16 +12)[2]) goto lt; if ((x+16 +8)[2] > (y+16 +12)[2]) goto gt; if ((x+16 +8)[2] < (y+16 +12)[2]) goto lt; if ((x+16 +8)[3] > (y+16 +12)[2]) goto gt; if ((x+16 +8)[3] < (y+16 +12)[2]) goto lt; if ((x+16 +8)[0] > (y+16 +12)[3]) goto gt; if ((x+16 +8)[0] < (y+16 +12)[3]) goto lt; if ((x+16 +8)[1] > (y+16 +12)[3]) goto gt; if ((x+16 +8)[1] < (y+16 +12)[3]) goto lt; if ((x+16 +8)[2] > (y+16 +12)[3]) goto gt; if ((x+16 +8)[2] < (y+16 +12)[3]) goto lt; if ((x+16 +8)[3] > (y+16 +12)[3]) goto gt; if ((x+16 +8)[3] < (y+16 +12)[3]) goto lt; if ((x+16 +12)[0] > (y+16 +12)[0]) goto gt; if ((x+16 +12)[0] < (y+16 +12)[0]) goto lt; if ((x+16 +12)[1] > (y+16 +12)[0]) goto gt; if ((x+16 +12)[1] < (y+16 +12)[0]) goto lt; if ((x+16 +12)[2] > (y+16 +12)[0]) goto gt; if ((x+16 +12)[2] < (y+16 +12)[0]) goto lt; if ((x+16 +12)[3] > (y+16 +12)[0]) goto gt; if ((x+16 +12)[3] < (y+16 +12)[0]) goto lt; if ((x+16 +12)[0] > (y+16 +12)[1]) goto gt; if ((x+16 +12)[0] < (y+16 +12)[1]) goto lt; if ((x+16 +12)[1] > (y+16 +12)[1]) goto gt; if ((x+16 +12)[1] < (y+16 +12)[1]) goto lt; if ((x+16 +12)[2] > (y+16 +12)[1]) goto gt; if ((x+16 +12)[2] < (y+16 +12)[1]) goto lt; if ((x+16 +12)[3] > (y+16 +12)[1]) goto gt; if ((x+16 +12)[3] < (y+16 +12)[1]) goto lt; if ((x+16 +12)[0] > (y+16 +12)[2]) goto gt; if ((x+16 +12)[0] < (y+16 +12)[2]) goto lt; if ((x+16 +12)[1] > (y+16 +12)[2]) goto gt; if ((x+16 +12)[1] < (y+16 +12)[2]) goto lt; if ((x+16 +12)[2] > (y+16 +12)[2]) goto gt; if ((x+16 +12)[2] < (y+16 +12)[2]) goto lt; if ((x+16 +12)[3] > (y+16 +12)[2]) goto gt; if ((x+16 +12)[3] < (y+16 +12)[2]) goto lt; if ((x+16 +12)[0] > (y+16 +12)[3]) goto gt; if ((x+16 +12)[0] < (y+16 +12)[3]) goto lt; if ((x+16 +12)[1] > (y+16 +12)[3]) goto gt; if ((x+16 +12)[1] < (y+16 +12)[3]) goto lt; if ((x+16 +12)[2] > (y+16 +12)[3]) goto gt; if ((x+16 +12)[2] < (y+16 +12)[3]) goto lt; if ((x+16 +12)[3] > (y+16 +12)[3]) goto gt; if ((x+16 +12)[3] < (y+16 +12)[3]) goto lt; if ((x+32)[0] > (y+16)[0]) goto gt; if ((x+32)[0] < (y+16)[0]) goto lt; if ((x+32)[1] > (y+16)[0]) goto gt; if ((x+32)[1] < (y+16)[0]) goto lt; if ((x+32)[2] > (y+16)[0]) goto gt; if ((x+32)[2] < (y+16)[0]) goto lt; if ((x+32)[3] > (y+16)[0]) goto gt; if ((x+32)[3] < (y+16)[0]) goto lt; if ((x+32)[0] > (y+16)[1]) goto gt; if ((x+32)[0] < (y+16)[1]) goto lt; if ((x+32)[1] > (y+16)[1]) goto gt; if ((x+32)[1] < (y+16)[1]) goto lt; if ((x+32)[2] > (y+16)[1]) goto gt; if ((x+32)[2] < (y+16)[1]) goto lt; if ((x+32)[3] > (y+16)[1]) goto gt; if ((x+32)[3] < (y+16)[1]) goto lt; if ((x+32)[0] > (y+16)[2]) goto gt; if ((x+32)[0] < (y+16)[2]) goto lt; if ((x+32)[1] > (y+16)[2]) goto gt; if ((x+32)[1] < (y+16)[2]) goto lt; if ((x+32)[2] > (y+16)[2]) goto gt; if ((x+32)[2] < (y+16)[2]) goto lt; if ((x+32)[3] > (y+16)[2]) goto gt; if ((x+32)[3] < (y+16)[2]) goto lt; if ((x+32)[0] > (y+16)[3]) goto gt; if ((x+32)[0] < (y+16)[3]) goto lt; if ((x+32)[1] > (y+16)[3]) goto gt; if ((x+32)[1] < (y+16)[3]) goto lt; if ((x+32)[2] > (y+16)[3]) goto gt; if ((x+32)[2] < (y+16)[3]) goto lt; if ((x+32)[3] > (y+16)[3]) goto gt; if ((x+32)[3] < (y+16)[3]) goto lt; if ((x+32 +4)[0] > (y+16)[0]) goto gt; if ((x+32 +4)[0] < (y+16)[0]) goto lt; if ((x+32 +4)[1] > (y+16)[0]) goto gt; if ((x+32 +4)[1] < (y+16)[0]) goto lt; if ((x+32 +4)[2] > (y+16)[0]) goto gt; if ((x+32 +4)[2] < (y+16)[0]) goto lt; if ((x+32 +4)[3] > (y+16)[0]) goto gt; if ((x+32 +4)[3] < (y+16)[0]) goto lt; if ((x+32 +4)[0] > (y+16)[1]) goto gt; if ((x+32 +4)[0] < (y+16)[1]) goto lt; if ((x+32 +4)[1] > (y+16)[1]) goto gt; if ((x+32 +4)[1] < (y+16)[1]) goto lt; if ((x+32 +4)[2] > (y+16)[1]) goto gt; if ((x+32 +4)[2] < (y+16)[1]) goto lt; if ((x+32 +4)[3] > (y+16)[1]) goto gt; if ((x+32 +4)[3] < (y+16)[1]) goto lt; if ((x+32 +4)[0] > (y+16)[2]) goto gt; if ((x+32 +4)[0] < (y+16)[2]) goto lt; if ((x+32 +4)[1] > (y+16)[2]) goto gt; if ((x+32 +4)[1] < (y+16)[2]) goto lt; if ((x+32 +4)[2] > (y+16)[2]) goto gt; if ((x+32 +4)[2] < (y+16)[2]) goto lt; if ((x+32 +4)[3] > (y+16)[2]) goto gt; if ((x+32 +4)[3] < (y+16)[2]) goto lt; if ((x+32 +4)[0] > (y+16)[3]) goto gt; if ((x+32 +4)[0] < (y+16)[3]) goto lt; if ((x+32 +4)[1] > (y+16)[3]) goto gt; if ((x+32 +4)[1] < (y+16)[3]) goto lt; if ((x+32 +4)[2] > (y+16)[3]) goto gt; if ((x+32 +4)[2] < (y+16)[3]) goto lt; if ((x+32 +4)[3] > (y+16)[3]) goto gt; if ((x+32 +4)[3] < (y+16)[3]) goto lt; if ((x+32 +8)[0] > (y+16)[0]) goto gt; if ((x+32 +8)[0] < (y+16)[0]) goto lt; if ((x+32 +8)[1] > (y+16)[0]) goto gt; if ((x+32 +8)[1] < (y+16)[0]) goto lt; if ((x+32 +8)[2] > (y+16)[0]) goto gt; if ((x+32 +8)[2] < (y+16)[0]) goto lt; if ((x+32 +8)[3] > (y+16)[0]) goto gt; if ((x+32 +8)[3] < (y+16)[0]) goto lt; if ((x+32 +8)[0] > (y+16)[1]) goto gt; if ((x+32 +8)[0] < (y+16)[1]) goto lt; if ((x+32 +8)[1] > (y+16)[1]) goto gt; if ((x+32 +8)[1] < (y+16)[1]) goto lt; if ((x+32 +8)[2] > (y+16)[1]) goto gt; if ((x+32 +8)[2] < (y+16)[1]) goto lt; if ((x+32 +8)[3] > (y+16)[1]) goto gt; if ((x+32 +8)[3] < (y+16)[1]) goto lt; if ((x+32 +8)[0] > (y+16)[2]) goto gt; if ((x+32 +8)[0] < (y+16)[2]) goto lt; if ((x+32 +8)[1] > (y+16)[2]) goto gt; if ((x+32 +8)[1] < (y+16)[2]) goto lt; if ((x+32 +8)[2] > (y+16)[2]) goto gt; if ((x+32 +8)[2] < (y+16)[2]) goto lt; if ((x+32 +8)[3] > (y+16)[2]) goto gt; if ((x+32 +8)[3] < (y+16)[2]) goto lt; if ((x+32 +8)[0] > (y+16)[3]) goto gt; if ((x+32 +8)[0] < (y+16)[3]) goto lt; if ((x+32 +8)[1] > (y+16)[3]) goto gt; if ((x+32 +8)[1] < (y+16)[3]) goto lt; if ((x+32 +8)[2] > (y+16)[3]) goto gt; if ((x+32 +8)[2] < (y+16)[3]) goto lt; if ((x+32 +8)[3] > (y+16)[3]) goto gt; if ((x+32 +8)[3] < (y+16)[3]) goto lt; if ((x+32 +12)[0] > (y+16)[0]) goto gt; if ((x+32 +12)[0] < (y+16)[0]) goto lt; if ((x+32 +12)[1] > (y+16)[0]) goto gt; if ((x+32 +12)[1] < (y+16)[0]) goto lt; if ((x+32 +12)[2] > (y+16)[0]) goto gt; if ((x+32 +12)[2] < (y+16)[0]) goto lt; if ((x+32 +12)[3] > (y+16)[0]) goto gt; if ((x+32 +12)[3] < (y+16)[0]) goto lt; if ((x+32 +12)[0] > (y+16)[1]) goto gt; if ((x+32 +12)[0] < (y+16)[1]) goto lt; if ((x+32 +12)[1] > (y+16)[1]) goto gt; if ((x+32 +12)[1] < (y+16)[1]) goto lt; if ((x+32 +12)[2] > (y+16)[1]) goto gt; if ((x+32 +12)[2] < (y+16)[1]) goto lt; if ((x+32 +12)[3] > (y+16)[1]) goto gt; if ((x+32 +12)[3] < (y+16)[1]) goto lt; if ((x+32 +12)[0] > (y+16)[2]) goto gt; if ((x+32 +12)[0] < (y+16)[2]) goto lt; if ((x+32 +12)[1] > (y+16)[2]) goto gt; if ((x+32 +12)[1] < (y+16)[2]) goto lt; if ((x+32 +12)[2] > (y+16)[2]) goto gt; if ((x+32 +12)[2] < (y+16)[2]) goto lt; if ((x+32 +12)[3] > (y+16)[2]) goto gt; if ((x+32 +12)[3] < (y+16)[2]) goto lt; if ((x+32 +12)[0] > (y+16)[3]) goto gt; if ((x+32 +12)[0] < (y+16)[3]) goto lt; if ((x+32 +12)[1] > (y+16)[3]) goto gt; if ((x+32 +12)[1] < (y+16)[3]) goto lt; if ((x+32 +12)[2] > (y+16)[3]) goto gt; if ((x+32 +12)[2] < (y+16)[3]) goto lt; if ((x+32 +12)[3] > (y+16)[3]) goto gt; if ((x+32 +12)[3] < (y+16)[3]) goto lt; if ((x+32)[0] > (y+16 +4)[0]) goto gt; if ((x+32)[0] < (y+16 +4)[0]) goto lt; if ((x+32)[1] > (y+16 +4)[0]) goto gt; if ((x+32)[1] < (y+16 +4)[0]) goto lt; if ((x+32)[2] > (y+16 +4)[0]) goto gt; if ((x+32)[2] < (y+16 +4)[0]) goto lt; if ((x+32)[3] > (y+16 +4)[0]) goto gt; if ((x+32)[3] < (y+16 +4)[0]) goto lt; if ((x+32)[0] > (y+16 +4)[1]) goto gt; if ((x+32)[0] < (y+16 +4)[1]) goto lt; if ((x+32)[1] > (y+16 +4)[1]) goto gt; if ((x+32)[1] < (y+16 +4)[1]) goto lt; if ((x+32)[2] > (y+16 +4)[1]) goto gt; if ((x+32)[2] < (y+16 +4)[1]) goto lt; if ((x+32)[3] > (y+16 +4)[1]) goto gt; if ((x+32)[3] < (y+16 +4)[1]) goto lt; if ((x+32)[0] > (y+16 +4)[2]) goto gt; if ((x+32)[0] < (y+16 +4)[2]) goto lt; if ((x+32)[1] > (y+16 +4)[2]) goto gt; if ((x+32)[1] < (y+16 +4)[2]) goto lt; if ((x+32)[2] > (y+16 +4)[2]) goto gt; if ((x+32)[2] < (y+16 +4)[2]) goto lt; if ((x+32)[3] > (y+16 +4)[2]) goto gt; if ((x+32)[3] < (y+16 +4)[2]) goto lt; if ((x+32)[0] > (y+16 +4)[3]) goto gt; if ((x+32)[0] < (y+16 +4)[3]) goto lt; if ((x+32)[1] > (y+16 +4)[3]) goto gt; if ((x+32)[1] < (y+16 +4)[3]) goto lt; if ((x+32)[2] > (y+16 +4)[3]) goto gt; if ((x+32)[2] < (y+16 +4)[3]) goto lt; if ((x+32)[3] > (y+16 +4)[3]) goto gt; if ((x+32)[3] < (y+16 +4)[3]) goto lt; if ((x+32 +4)[0] > (y+16 +4)[0]) goto gt; if ((x+32 +4)[0] < (y+16 +4)[0]) goto lt; if ((x+32 +4)[1] > (y+16 +4)[0]) goto gt; if ((x+32 +4)[1] < (y+16 +4)[0]) goto lt; if ((x+32 +4)[2] > (y+16 +4)[0]) goto gt; if ((x+32 +4)[2] < (y+16 +4)[0]) goto lt; if ((x+32 +4)[3] > (y+16 +4)[0]) goto gt; if ((x+32 +4)[3] < (y+16 +4)[0]) goto lt; if ((x+32 +4)[0] > (y+16 +4)[1]) goto gt; if ((x+32 +4)[0] < (y+16 +4)[1]) goto lt; if ((x+32 +4)[1] > (y+16 +4)[1]) goto gt; if ((x+32 +4)[1] < (y+16 +4)[1]) goto lt; if ((x+32 +4)[2] > (y+16 +4)[1]) goto gt; if ((x+32 +4)[2] < (y+16 +4)[1]) goto lt; if ((x+32 +4)[3] > (y+16 +4)[1]) goto gt; if ((x+32 +4)[3] < (y+16 +4)[1]) goto lt; if ((x+32 +4)[0] > (y+16 +4)[2]) goto gt; if ((x+32 +4)[0] < (y+16 +4)[2]) goto lt; if ((x+32 +4)[1] > (y+16 +4)[2]) goto gt; if ((x+32 +4)[1] < (y+16 +4)[2]) goto lt; if ((x+32 +4)[2] > (y+16 +4)[2]) goto gt; if ((x+32 +4)[2] < (y+16 +4)[2]) goto lt; if ((x+32 +4)[3] > (y+16 +4)[2]) goto gt; if ((x+32 +4)[3] < (y+16 +4)[2]) goto lt; if ((x+32 +4)[0] > (y+16 +4)[3]) goto gt; if ((x+32 +4)[0] < (y+16 +4)[3]) goto lt; if ((x+32 +4)[1] > (y+16 +4)[3]) goto gt; if ((x+32 +4)[1] < (y+16 +4)[3]) goto lt; if ((x+32 +4)[2] > (y+16 +4)[3]) goto gt; if ((x+32 +4)[2] < (y+16 +4)[3]) goto lt; if ((x+32 +4)[3] > (y+16 +4)[3]) goto gt; if ((x+32 +4)[3] < (y+16 +4)[3]) goto lt; if ((x+32 +8)[0] > (y+16 +4)[0]) goto gt; if ((x+32 +8)[0] < (y+16 +4)[0]) goto lt; if ((x+32 +8)[1] > (y+16 +4)[0]) goto gt; if ((x+32 +8)[1] < (y+16 +4)[0]) goto lt; if ((x+32 +8)[2] > (y+16 +4)[0]) goto gt; if ((x+32 +8)[2] < (y+16 +4)[0]) goto lt; if ((x+32 +8)[3] > (y+16 +4)[0]) goto gt; if ((x+32 +8)[3] < (y+16 +4)[0]) goto lt; if ((x+32 +8)[0] > (y+16 +4)[1]) goto gt; if ((x+32 +8)[0] < (y+16 +4)[1]) goto lt; if ((x+32 +8)[1] > (y+16 +4)[1]) goto gt; if ((x+32 +8)[1] < (y+16 +4)[1]) goto lt; if ((x+32 +8)[2] > (y+16 +4)[1]) goto gt; if ((x+32 +8)[2] < (y+16 +4)[1]) goto lt; if ((x+32 +8)[3] > (y+16 +4)[1]) goto gt; if ((x+32 +8)[3] < (y+16 +4)[1]) goto lt; if ((x+32 +8)[0] > (y+16 +4)[2]) goto gt; if ((x+32 +8)[0] < (y+16 +4)[2]) goto lt; if ((x+32 +8)[1] > (y+16 +4)[2]) goto gt; if ((x+32 +8)[1] < (y+16 +4)[2]) goto lt; if ((x+32 +8)[2] > (y+16 +4)[2]) goto gt; if ((x+32 +8)[2] < (y+16 +4)[2]) goto lt; if ((x+32 +8)[3] > (y+16 +4)[2]) goto gt; if ((x+32 +8)[3] < (y+16 +4)[2]) goto lt; if ((x+32 +8)[0] > (y+16 +4)[3]) goto gt; if ((x+32 +8)[0] < (y+16 +4)[3]) goto lt; if ((x+32 +8)[1] > (y+16 +4)[3]) goto gt; if ((x+32 +8)[1] < (y+16 +4)[3]) goto lt; if ((x+32 +8)[2] > (y+16 +4)[3]) goto gt; if ((x+32 +8)[2] < (y+16 +4)[3]) goto lt; if ((x+32 +8)[3] > (y+16 +4)[3]) goto gt; if ((x+32 +8)[3] < (y+16 +4)[3]) goto lt; if ((x+32 +12)[0] > (y+16 +4)[0]) goto gt; if ((x+32 +12)[0] < (y+16 +4)[0]) goto lt; if ((x+32 +12)[1] > (y+16 +4)[0]) goto gt; if ((x+32 +12)[1] < (y+16 +4)[0]) goto lt; if ((x+32 +12)[2] > (y+16 +4)[0]) goto gt; if ((x+32 +12)[2] < (y+16 +4)[0]) goto lt; if ((x+32 +12)[3] > (y+16 +4)[0]) goto gt; if ((x+32 +12)[3] < (y+16 +4)[0]) goto lt; if ((x+32 +12)[0] > (y+16 +4)[1]) goto gt; if ((x+32 +12)[0] < (y+16 +4)[1]) goto lt; if ((x+32 +12)[1] > (y+16 +4)[1]) goto gt; if ((x+32 +12)[1] < (y+16 +4)[1]) goto lt; if ((x+32 +12)[2] > (y+16 +4)[1]) goto gt; if ((x+32 +12)[2] < (y+16 +4)[1]) goto lt; if ((x+32 +12)[3] > (y+16 +4)[1]) goto gt; if ((x+32 +12)[3] < (y+16 +4)[1]) goto lt; if ((x+32 +12)[0] > (y+16 +4)[2]) goto gt; if ((x+32 +12)[0] < (y+16 +4)[2]) goto lt; if ((x+32 +12)[1] > (y+16 +4)[2]) goto gt; if ((x+32 +12)[1] < (y+16 +4)[2]) goto lt; if ((x+32 +12)[2] > (y+16 +4)[2]) goto gt; if ((x+32 +12)[2] < (y+16 +4)[2]) goto lt; if ((x+32 +12)[3] > (y+16 +4)[2]) goto gt; if ((x+32 +12)[3] < (y+16 +4)[2]) goto lt; if ((x+32 +12)[0] > (y+16 +4)[3]) goto gt; if ((x+32 +12)[0] < (y+16 +4)[3]) goto lt; if ((x+32 +12)[1] > (y+16 +4)[3]) goto gt; if ((x+32 +12)[1] < (y+16 +4)[3]) goto lt; if ((x+32 +12)[2] > (y+16 +4)[3]) goto gt; if ((x+32 +12)[2] < (y+16 +4)[3]) goto lt; if ((x+32 +12)[3] > (y+16 +4)[3]) goto gt; if ((x+32 +12)[3] < (y+16 +4)[3]) goto lt; if ((x+32)[0] > (y+16 +8)[0]) goto gt; if ((x+32)[0] < (y+16 +8)[0]) goto lt; if ((x+32)[1] > (y+16 +8)[0]) goto gt; if ((x+32)[1] < (y+16 +8)[0]) goto lt; if ((x+32)[2] > (y+16 +8)[0]) goto gt; if ((x+32)[2] < (y+16 +8)[0]) goto lt; if ((x+32)[3] > (y+16 +8)[0]) goto gt; if ((x+32)[3] < (y+16 +8)[0]) goto lt; if ((x+32)[0] > (y+16 +8)[1]) goto gt; if ((x+32)[0] < (y+16 +8)[1]) goto lt; if ((x+32)[1] > (y+16 +8)[1]) goto gt; if ((x+32)[1] < (y+16 +8)[1]) goto lt; if ((x+32)[2] > (y+16 +8)[1]) goto gt; if ((x+32)[2] < (y+16 +8)[1]) goto lt; if ((x+32)[3] > (y+16 +8)[1]) goto gt; if ((x+32)[3] < (y+16 +8)[1]) goto lt; if ((x+32)[0] > (y+16 +8)[2]) goto gt; if ((x+32)[0] < (y+16 +8)[2]) goto lt; if ((x+32)[1] > (y+16 +8)[2]) goto gt; if ((x+32)[1] < (y+16 +8)[2]) goto lt; if ((x+32)[2] > (y+16 +8)[2]) goto gt; if ((x+32)[2] < (y+16 +8)[2]) goto lt; if ((x+32)[3] > (y+16 +8)[2]) goto gt; if ((x+32)[3] < (y+16 +8)[2]) goto lt; if ((x+32)[0] > (y+16 +8)[3]) goto gt; if ((x+32)[0] < (y+16 +8)[3]) goto lt; if ((x+32)[1] > (y+16 +8)[3]) goto gt; if ((x+32)[1] < (y+16 +8)[3]) goto lt; if ((x+32)[2] > (y+16 +8)[3]) goto gt; if ((x+32)[2] < (y+16 +8)[3]) goto lt; if ((x+32)[3] > (y+16 +8)[3]) goto gt; if ((x+32)[3] < (y+16 +8)[3]) goto lt; if ((x+32 +4)[0] > (y+16 +8)[0]) goto gt; if ((x+32 +4)[0] < (y+16 +8)[0]) goto lt; if ((x+32 +4)[1] > (y+16 +8)[0]) goto gt; if ((x+32 +4)[1] < (y+16 +8)[0]) goto lt; if ((x+32 +4)[2] > (y+16 +8)[0]) goto gt; if ((x+32 +4)[2] < (y+16 +8)[0]) goto lt; if ((x+32 +4)[3] > (y+16 +8)[0]) goto gt; if ((x+32 +4)[3] < (y+16 +8)[0]) goto lt; if ((x+32 +4)[0] > (y+16 +8)[1]) goto gt; if ((x+32 +4)[0] < (y+16 +8)[1]) goto lt; if ((x+32 +4)[1] > (y+16 +8)[1]) goto gt; if ((x+32 +4)[1] < (y+16 +8)[1]) goto lt; if ((x+32 +4)[2] > (y+16 +8)[1]) goto gt; if ((x+32 +4)[2] < (y+16 +8)[1]) goto lt; if ((x+32 +4)[3] > (y+16 +8)[1]) goto gt; if ((x+32 +4)[3] < (y+16 +8)[1]) goto lt; if ((x+32 +4)[0] > (y+16 +8)[2]) goto gt; if ((x+32 +4)[0] < (y+16 +8)[2]) goto lt; if ((x+32 +4)[1] > (y+16 +8)[2]) goto gt; if ((x+32 +4)[1] < (y+16 +8)[2]) goto lt; if ((x+32 +4)[2] > (y+16 +8)[2]) goto gt; if ((x+32 +4)[2] < (y+16 +8)[2]) goto lt; if ((x+32 +4)[3] > (y+16 +8)[2]) goto gt; if ((x+32 +4)[3] < (y+16 +8)[2]) goto lt; if ((x+32 +4)[0] > (y+16 +8)[3]) goto gt; if ((x+32 +4)[0] < (y+16 +8)[3]) goto lt; if ((x+32 +4)[1] > (y+16 +8)[3]) goto gt; if ((x+32 +4)[1] < (y+16 +8)[3]) goto lt; if ((x+32 +4)[2] > (y+16 +8)[3]) goto gt; if ((x+32 +4)[2] < (y+16 +8)[3]) goto lt; if ((x+32 +4)[3] > (y+16 +8)[3]) goto gt; if ((x+32 +4)[3] < (y+16 +8)[3]) goto lt; if ((x+32 +8)[0] > (y+16 +8)[0]) goto gt; if ((x+32 +8)[0] < (y+16 +8)[0]) goto lt; if ((x+32 +8)[1] > (y+16 +8)[0]) goto gt; if ((x+32 +8)[1] < (y+16 +8)[0]) goto lt; if ((x+32 +8)[2] > (y+16 +8)[0]) goto gt; if ((x+32 +8)[2] < (y+16 +8)[0]) goto lt; if ((x+32 +8)[3] > (y+16 +8)[0]) goto gt; if ((x+32 +8)[3] < (y+16 +8)[0]) goto lt; if ((x+32 +8)[0] > (y+16 +8)[1]) goto gt; if ((x+32 +8)[0] < (y+16 +8)[1]) goto lt; if ((x+32 +8)[1] > (y+16 +8)[1]) goto gt; if ((x+32 +8)[1] < (y+16 +8)[1]) goto lt; if ((x+32 +8)[2] > (y+16 +8)[1]) goto gt; if ((x+32 +8)[2] < (y+16 +8)[1]) goto lt; if ((x+32 +8)[3] > (y+16 +8)[1]) goto gt; if ((x+32 +8)[3] < (y+16 +8)[1]) goto lt; if ((x+32 +8)[0] > (y+16 +8)[2]) goto gt; if ((x+32 +8)[0] < (y+16 +8)[2]) goto lt; if ((x+32 +8)[1] > (y+16 +8)[2]) goto gt; if ((x+32 +8)[1] < (y+16 +8)[2]) goto lt; if ((x+32 +8)[2] > (y+16 +8)[2]) goto gt; if ((x+32 +8)[2] < (y+16 +8)[2]) goto lt; if ((x+32 +8)[3] > (y+16 +8)[2]) goto gt; if ((x+32 +8)[3] < (y+16 +8)[2]) goto lt; if ((x+32 +8)[0] > (y+16 +8)[3]) goto gt; if ((x+32 +8)[0] < (y+16 +8)[3]) goto lt; if ((x+32 +8)[1] > (y+16 +8)[3]) goto gt; if ((x+32 +8)[1] < (y+16 +8)[3]) goto lt; if ((x+32 +8)[2] > (y+16 +8)[3]) goto gt; if ((x+32 +8)[2] < (y+16 +8)[3]) goto lt; if ((x+32 +8)[3] > (y+16 +8)[3]) goto gt; if ((x+32 +8)[3] < (y+16 +8)[3]) goto lt; if ((x+32 +12)[0] > (y+16 +8)[0]) goto gt; if ((x+32 +12)[0] < (y+16 +8)[0]) goto lt; if ((x+32 +12)[1] > (y+16 +8)[0]) goto gt; if ((x+32 +12)[1] < (y+16 +8)[0]) goto lt; if ((x+32 +12)[2] > (y+16 +8)[0]) goto gt; if ((x+32 +12)[2] < (y+16 +8)[0]) goto lt; if ((x+32 +12)[3] > (y+16 +8)[0]) goto gt; if ((x+32 +12)[3] < (y+16 +8)[0]) goto lt; if ((x+32 +12)[0] > (y+16 +8)[1]) goto gt; if ((x+32 +12)[0] < (y+16 +8)[1]) goto lt; if ((x+32 +12)[1] > (y+16 +8)[1]) goto gt; if ((x+32 +12)[1] < (y+16 +8)[1]) goto lt; if ((x+32 +12)[2] > (y+16 +8)[1]) goto gt; if ((x+32 +12)[2] < (y+16 +8)[1]) goto lt; if ((x+32 +12)[3] > (y+16 +8)[1]) goto gt; if ((x+32 +12)[3] < (y+16 +8)[1]) goto lt; if ((x+32 +12)[0] > (y+16 +8)[2]) goto gt; if ((x+32 +12)[0] < (y+16 +8)[2]) goto lt; if ((x+32 +12)[1] > (y+16 +8)[2]) goto gt; if ((x+32 +12)[1] < (y+16 +8)[2]) goto lt; if ((x+32 +12)[2] > (y+16 +8)[2]) goto gt; if ((x+32 +12)[2] < (y+16 +8)[2]) goto lt; if ((x+32 +12)[3] > (y+16 +8)[2]) goto gt; if ((x+32 +12)[3] < (y+16 +8)[2]) goto lt; if ((x+32 +12)[0] > (y+16 +8)[3]) goto gt; if ((x+32 +12)[0] < (y+16 +8)[3]) goto lt; if ((x+32 +12)[1] > (y+16 +8)[3]) goto gt; if ((x+32 +12)[1] < (y+16 +8)[3]) goto lt; if ((x+32 +12)[2] > (y+16 +8)[3]) goto gt; if ((x+32 +12)[2] < (y+16 +8)[3]) goto lt; if ((x+32 +12)[3] > (y+16 +8)[3]) goto gt; if ((x+32 +12)[3] < (y+16 +8)[3]) goto lt; if ((x+32)[0] > (y+16 +12)[0]) goto gt; if ((x+32)[0] < (y+16 +12)[0]) goto lt; if ((x+32)[1] > (y+16 +12)[0]) goto gt; if ((x+32)[1] < (y+16 +12)[0]) goto lt; if ((x+32)[2] > (y+16 +12)[0]) goto gt; if ((x+32)[2] < (y+16 +12)[0]) goto lt; if ((x+32)[3] > (y+16 +12)[0]) goto gt; if ((x+32)[3] < (y+16 +12)[0]) goto lt; if ((x+32)[0] > (y+16 +12)[1]) goto gt; if ((x+32)[0] < (y+16 +12)[1]) goto lt; if ((x+32)[1] > (y+16 +12)[1]) goto gt; if ((x+32)[1] < (y+16 +12)[1]) goto lt; if ((x+32)[2] > (y+16 +12)[1]) goto gt; if ((x+32)[2] < (y+16 +12)[1]) goto lt; if ((x+32)[3] > (y+16 +12)[1]) goto gt; if ((x+32)[3] < (y+16 +12)[1]) goto lt; if ((x+32)[0] > (y+16 +12)[2]) goto gt; if ((x+32)[0] < (y+16 +12)[2]) goto lt; if ((x+32)[1] > (y+16 +12)[2]) goto gt; if ((x+32)[1] < (y+16 +12)[2]) goto lt; if ((x+32)[2] > (y+16 +12)[2]) goto gt; if ((x+32)[2] < (y+16 +12)[2]) goto lt; if ((x+32)[3] > (y+16 +12)[2]) goto gt; if ((x+32)[3] < (y+16 +12)[2]) goto lt; if ((x+32)[0] > (y+16 +12)[3]) goto gt; if ((x+32)[0] < (y+16 +12)[3]) goto lt; if ((x+32)[1] > (y+16 +12)[3]) goto gt; if ((x+32)[1] < (y+16 +12)[3]) goto lt; if ((x+32)[2] > (y+16 +12)[3]) goto gt; if ((x+32)[2] < (y+16 +12)[3]) goto lt; if ((x+32)[3] > (y+16 +12)[3]) goto gt; if ((x+32)[3] < (y+16 +12)[3]) goto lt; if ((x+32 +4)[0] > (y+16 +12)[0]) goto gt; if ((x+32 +4)[0] < (y+16 +12)[0]) goto lt; if ((x+32 +4)[1] > (y+16 +12)[0]) goto gt; if ((x+32 +4)[1] < (y+16 +12)[0]) goto lt; if ((x+32 +4)[2] > (y+16 +12)[0]) goto gt; if ((x+32 +4)[2] < (y+16 +12)[0]) goto lt; if ((x+32 +4)[3] > (y+16 +12)[0]) goto gt; if ((x+32 +4)[3] < (y+16 +12)[0]) goto lt; if ((x+32 +4)[0] > (y+16 +12)[1]) goto gt; if ((x+32 +4)[0] < (y+16 +12)[1]) goto lt; if ((x+32 +4)[1] > (y+16 +12)[1]) goto gt; if ((x+32 +4)[1] < (y+16 +12)[1]) goto lt; if ((x+32 +4)[2] > (y+16 +12)[1]) goto gt; if ((x+32 +4)[2] < (y+16 +12)[1]) goto lt; if ((x+32 +4)[3] > (y+16 +12)[1]) goto gt; if ((x+32 +4)[3] < (y+16 +12)[1]) goto lt; if ((x+32 +4)[0] > (y+16 +12)[2]) goto gt; if ((x+32 +4)[0] < (y+16 +12)[2]) goto lt; if ((x+32 +4)[1] > (y+16 +12)[2]) goto gt; if ((x+32 +4)[1] < (y+16 +12)[2]) goto lt; if ((x+32 +4)[2] > (y+16 +12)[2]) goto gt; if ((x+32 +4)[2] < (y+16 +12)[2]) goto lt; if ((x+32 +4)[3] > (y+16 +12)[2]) goto gt; if ((x+32 +4)[3] < (y+16 +12)[2]) goto lt; if ((x+32 +4)[0] > (y+16 +12)[3]) goto gt; if ((x+32 +4)[0] < (y+16 +12)[3]) goto lt; if ((x+32 +4)[1] > (y+16 +12)[3]) goto gt; if ((x+32 +4)[1] < (y+16 +12)[3]) goto lt; if ((x+32 +4)[2] > (y+16 +12)[3]) goto gt; if ((x+32 +4)[2] < (y+16 +12)[3]) goto lt; if ((x+32 +4)[3] > (y+16 +12)[3]) goto gt; if ((x+32 +4)[3] < (y+16 +12)[3]) goto lt; if ((x+32 +8)[0] > (y+16 +12)[0]) goto gt; if ((x+32 +8)[0] < (y+16 +12)[0]) goto lt; if ((x+32 +8)[1] > (y+16 +12)[0]) goto gt; if ((x+32 +8)[1] < (y+16 +12)[0]) goto lt; if ((x+32 +8)[2] > (y+16 +12)[0]) goto gt; if ((x+32 +8)[2] < (y+16 +12)[0]) goto lt; if ((x+32 +8)[3] > (y+16 +12)[0]) goto gt; if ((x+32 +8)[3] < (y+16 +12)[0]) goto lt; if ((x+32 +8)[0] > (y+16 +12)[1]) goto gt; if ((x+32 +8)[0] < (y+16 +12)[1]) goto lt; if ((x+32 +8)[1] > (y+16 +12)[1]) goto gt; if ((x+32 +8)[1] < (y+16 +12)[1]) goto lt; if ((x+32 +8)[2] > (y+16 +12)[1]) goto gt; if ((x+32 +8)[2] < (y+16 +12)[1]) goto lt; if ((x+32 +8)[3] > (y+16 +12)[1]) goto gt; if ((x+32 +8)[3] < (y+16 +12)[1]) goto lt; if ((x+32 +8)[0] > (y+16 +12)[2]) goto gt; if ((x+32 +8)[0] < (y+16 +12)[2]) goto lt; if ((x+32 +8)[1] > (y+16 +12)[2]) goto gt; if ((x+32 +8)[1] < (y+16 +12)[2]) goto lt; if ((x+32 +8)[2] > (y+16 +12)[2]) goto gt; if ((x+32 +8)[2] < (y+16 +12)[2]) goto lt; if ((x+32 +8)[3] > (y+16 +12)[2]) goto gt; if ((x+32 +8)[3] < (y+16 +12)[2]) goto lt; if ((x+32 +8)[0] > (y+16 +12)[3]) goto gt; if ((x+32 +8)[0] < (y+16 +12)[3]) goto lt; if ((x+32 +8)[1] > (y+16 +12)[3]) goto gt; if ((x+32 +8)[1] < (y+16 +12)[3]) goto lt; if ((x+32 +8)[2] > (y+16 +12)[3]) goto gt; if ((x+32 +8)[2] < (y+16 +12)[3]) goto lt; if ((x+32 +8)[3] > (y+16 +12)[3]) goto gt; if ((x+32 +8)[3] < (y+16 +12)[3]) goto lt; if ((x+32 +12)[0] > (y+16 +12)[0]) goto gt; if ((x+32 +12)[0] < (y+16 +12)[0]) goto lt; if ((x+32 +12)[1] > (y+16 +12)[0]) goto gt; if ((x+32 +12)[1] < (y+16 +12)[0]) goto lt; if ((x+32 +12)[2] > (y+16 +12)[0]) goto gt; if ((x+32 +12)[2] < (y+16 +12)[0]) goto lt; if ((x+32 +12)[3] > (y+16 +12)[0]) goto gt; if ((x+32 +12)[3] < (y+16 +12)[0]) goto lt; if ((x+32 +12)[0] > (y+16 +12)[1]) goto gt; if ((x+32 +12)[0] < (y+16 +12)[1]) goto lt; if ((x+32 +12)[1] > (y+16 +12)[1]) goto gt; if ((x+32 +12)[1] < (y+16 +12)[1]) goto lt; if ((x+32 +12)[2] > (y+16 +12)[1]) goto gt; if ((x+32 +12)[2] < (y+16 +12)[1]) goto lt; if ((x+32 +12)[3] > (y+16 +12)[1]) goto gt; if ((x+32 +12)[3] < (y+16 +12)[1]) goto lt; if ((x+32 +12)[0] > (y+16 +12)[2]) goto gt; if ((x+32 +12)[0] < (y+16 +12)[2]) goto lt; if ((x+32 +12)[1] > (y+16 +12)[2]) goto gt; if ((x+32 +12)[1] < (y+16 +12)[2]) goto lt; if ((x+32 +12)[2] > (y+16 +12)[2]) goto gt; if ((x+32 +12)[2] < (y+16 +12)[2]) goto lt; if ((x+32 +12)[3] > (y+16 +12)[2]) goto gt; if ((x+32 +12)[3] < (y+16 +12)[2]) goto lt; if ((x+32 +12)[0] > (y+16 +12)[3]) goto gt; if ((x+32 +12)[0] < (y+16 +12)[3]) goto lt; if ((x+32 +12)[1] > (y+16 +12)[3]) goto gt; if ((x+32 +12)[1] < (y+16 +12)[3]) goto lt; if ((x+32 +12)[2] > (y+16 +12)[3]) goto gt; if ((x+32 +12)[2] < (y+16 +12)[3]) goto lt; if ((x+32 +12)[3] > (y+16 +12)[3]) goto gt; if ((x+32 +12)[3] < (y+16 +12)[3]) goto lt; if ((x+48)[0] > (y+16)[0]) goto gt; if ((x+48)[0] < (y+16)[0]) goto lt; if ((x+48)[1] > (y+16)[0]) goto gt; if ((x+48)[1] < (y+16)[0]) goto lt; if ((x+48)[2] > (y+16)[0]) goto gt; if ((x+48)[2] < (y+16)[0]) goto lt; if ((x+48)[3] > (y+16)[0]) goto gt; if ((x+48)[3] < (y+16)[0]) goto lt; if ((x+48)[0] > (y+16)[1]) goto gt; if ((x+48)[0] < (y+16)[1]) goto lt; if ((x+48)[1] > (y+16)[1]) goto gt; if ((x+48)[1] < (y+16)[1]) goto lt; if ((x+48)[2] > (y+16)[1]) goto gt; if ((x+48)[2] < (y+16)[1]) goto lt; if ((x+48)[3] > (y+16)[1]) goto gt; if ((x+48)[3] < (y+16)[1]) goto lt; if ((x+48)[0] > (y+16)[2]) goto gt; if ((x+48)[0] < (y+16)[2]) goto lt; if ((x+48)[1] > (y+16)[2]) goto gt; if ((x+48)[1] < (y+16)[2]) goto lt; if ((x+48)[2] > (y+16)[2]) goto gt; if ((x+48)[2] < (y+16)[2]) goto lt; if ((x+48)[3] > (y+16)[2]) goto gt; if ((x+48)[3] < (y+16)[2]) goto lt; if ((x+48)[0] > (y+16)[3]) goto gt; if ((x+48)[0] < (y+16)[3]) goto lt; if ((x+48)[1] > (y+16)[3]) goto gt; if ((x+48)[1] < (y+16)[3]) goto lt; if ((x+48)[2] > (y+16)[3]) goto gt; if ((x+48)[2] < (y+16)[3]) goto lt; if ((x+48)[3] > (y+16)[3]) goto gt; if ((x+48)[3] < (y+16)[3]) goto lt; if ((x+48 +4)[0] > (y+16)[0]) goto gt; if ((x+48 +4)[0] < (y+16)[0]) goto lt; if ((x+48 +4)[1] > (y+16)[0]) goto gt; if ((x+48 +4)[1] < (y+16)[0]) goto lt; if ((x+48 +4)[2] > (y+16)[0]) goto gt; if ((x+48 +4)[2] < (y+16)[0]) goto lt; if ((x+48 +4)[3] > (y+16)[0]) goto gt; if ((x+48 +4)[3] < (y+16)[0]) goto lt; if ((x+48 +4)[0] > (y+16)[1]) goto gt; if ((x+48 +4)[0] < (y+16)[1]) goto lt; if ((x+48 +4)[1] > (y+16)[1]) goto gt; if ((x+48 +4)[1] < (y+16)[1]) goto lt; if ((x+48 +4)[2] > (y+16)[1]) goto gt; if ((x+48 +4)[2] < (y+16)[1]) goto lt; if ((x+48 +4)[3] > (y+16)[1]) goto gt; if ((x+48 +4)[3] < (y+16)[1]) goto lt; if ((x+48 +4)[0] > (y+16)[2]) goto gt; if ((x+48 +4)[0] < (y+16)[2]) goto lt; if ((x+48 +4)[1] > (y+16)[2]) goto gt; if ((x+48 +4)[1] < (y+16)[2]) goto lt; if ((x+48 +4)[2] > (y+16)[2]) goto gt; if ((x+48 +4)[2] < (y+16)[2]) goto lt; if ((x+48 +4)[3] > (y+16)[2]) goto gt; if ((x+48 +4)[3] < (y+16)[2]) goto lt; if ((x+48 +4)[0] > (y+16)[3]) goto gt; if ((x+48 +4)[0] < (y+16)[3]) goto lt; if ((x+48 +4)[1] > (y+16)[3]) goto gt; if ((x+48 +4)[1] < (y+16)[3]) goto lt; if ((x+48 +4)[2] > (y+16)[3]) goto gt; if ((x+48 +4)[2] < (y+16)[3]) goto lt; if ((x+48 +4)[3] > (y+16)[3]) goto gt; if ((x+48 +4)[3] < (y+16)[3]) goto lt; if ((x+48 +8)[0] > (y+16)[0]) goto gt; if ((x+48 +8)[0] < (y+16)[0]) goto lt; if ((x+48 +8)[1] > (y+16)[0]) goto gt; if ((x+48 +8)[1] < (y+16)[0]) goto lt; if ((x+48 +8)[2] > (y+16)[0]) goto gt; if ((x+48 +8)[2] < (y+16)[0]) goto lt; if ((x+48 +8)[3] > (y+16)[0]) goto gt; if ((x+48 +8)[3] < (y+16)[0]) goto lt; if ((x+48 +8)[0] > (y+16)[1]) goto gt; if ((x+48 +8)[0] < (y+16)[1]) goto lt; if ((x+48 +8)[1] > (y+16)[1]) goto gt; if ((x+48 +8)[1] < (y+16)[1]) goto lt; if ((x+48 +8)[2] > (y+16)[1]) goto gt; if ((x+48 +8)[2] < (y+16)[1]) goto lt; if ((x+48 +8)[3] > (y+16)[1]) goto gt; if ((x+48 +8)[3] < (y+16)[1]) goto lt; if ((x+48 +8)[0] > (y+16)[2]) goto gt; if ((x+48 +8)[0] < (y+16)[2]) goto lt; if ((x+48 +8)[1] > (y+16)[2]) goto gt; if ((x+48 +8)[1] < (y+16)[2]) goto lt; if ((x+48 +8)[2] > (y+16)[2]) goto gt; if ((x+48 +8)[2] < (y+16)[2]) goto lt; if ((x+48 +8)[3] > (y+16)[2]) goto gt; if ((x+48 +8)[3] < (y+16)[2]) goto lt; if ((x+48 +8)[0] > (y+16)[3]) goto gt; if ((x+48 +8)[0] < (y+16)[3]) goto lt; if ((x+48 +8)[1] > (y+16)[3]) goto gt; if ((x+48 +8)[1] < (y+16)[3]) goto lt; if ((x+48 +8)[2] > (y+16)[3]) goto gt; if ((x+48 +8)[2] < (y+16)[3]) goto lt; if ((x+48 +8)[3] > (y+16)[3]) goto gt; if ((x+48 +8)[3] < (y+16)[3]) goto lt; if ((x+48 +12)[0] > (y+16)[0]) goto gt; if ((x+48 +12)[0] < (y+16)[0]) goto lt; if ((x+48 +12)[1] > (y+16)[0]) goto gt; if ((x+48 +12)[1] < (y+16)[0]) goto lt; if ((x+48 +12)[2] > (y+16)[0]) goto gt; if ((x+48 +12)[2] < (y+16)[0]) goto lt; if ((x+48 +12)[3] > (y+16)[0]) goto gt; if ((x+48 +12)[3] < (y+16)[0]) goto lt; if ((x+48 +12)[0] > (y+16)[1]) goto gt; if ((x+48 +12)[0] < (y+16)[1]) goto lt; if ((x+48 +12)[1] > (y+16)[1]) goto gt; if ((x+48 +12)[1] < (y+16)[1]) goto lt; if ((x+48 +12)[2] > (y+16)[1]) goto gt; if ((x+48 +12)[2] < (y+16)[1]) goto lt; if ((x+48 +12)[3] > (y+16)[1]) goto gt; if ((x+48 +12)[3] < (y+16)[1]) goto lt; if ((x+48 +12)[0] > (y+16)[2]) goto gt; if ((x+48 +12)[0] < (y+16)[2]) goto lt; if ((x+48 +12)[1] > (y+16)[2]) goto gt; if ((x+48 +12)[1] < (y+16)[2]) goto lt; if ((x+48 +12)[2] > (y+16)[2]) goto gt; if ((x+48 +12)[2] < (y+16)[2]) goto lt; if ((x+48 +12)[3] > (y+16)[2]) goto gt; if ((x+48 +12)[3] < (y+16)[2]) goto lt; if ((x+48 +12)[0] > (y+16)[3]) goto gt; if ((x+48 +12)[0] < (y+16)[3]) goto lt; if ((x+48 +12)[1] > (y+16)[3]) goto gt; if ((x+48 +12)[1] < (y+16)[3]) goto lt; if ((x+48 +12)[2] > (y+16)[3]) goto gt; if ((x+48 +12)[2] < (y+16)[3]) goto lt; if ((x+48 +12)[3] > (y+16)[3]) goto gt; if ((x+48 +12)[3] < (y+16)[3]) goto lt; if ((x+48)[0] > (y+16 +4)[0]) goto gt; if ((x+48)[0] < (y+16 +4)[0]) goto lt; if ((x+48)[1] > (y+16 +4)[0]) goto gt; if ((x+48)[1] < (y+16 +4)[0]) goto lt; if ((x+48)[2] > (y+16 +4)[0]) goto gt; if ((x+48)[2] < (y+16 +4)[0]) goto lt; if ((x+48)[3] > (y+16 +4)[0]) goto gt; if ((x+48)[3] < (y+16 +4)[0]) goto lt; if ((x+48)[0] > (y+16 +4)[1]) goto gt; if ((x+48)[0] < (y+16 +4)[1]) goto lt; if ((x+48)[1] > (y+16 +4)[1]) goto gt; if ((x+48)[1] < (y+16 +4)[1]) goto lt; if ((x+48)[2] > (y+16 +4)[1]) goto gt; if ((x+48)[2] < (y+16 +4)[1]) goto lt; if ((x+48)[3] > (y+16 +4)[1]) goto gt; if ((x+48)[3] < (y+16 +4)[1]) goto lt; if ((x+48)[0] > (y+16 +4)[2]) goto gt; if ((x+48)[0] < (y+16 +4)[2]) goto lt; if ((x+48)[1] > (y+16 +4)[2]) goto gt; if ((x+48)[1] < (y+16 +4)[2]) goto lt; if ((x+48)[2] > (y+16 +4)[2]) goto gt; if ((x+48)[2] < (y+16 +4)[2]) goto lt; if ((x+48)[3] > (y+16 +4)[2]) goto gt; if ((x+48)[3] < (y+16 +4)[2]) goto lt; if ((x+48)[0] > (y+16 +4)[3]) goto gt; if ((x+48)[0] < (y+16 +4)[3]) goto lt; if ((x+48)[1] > (y+16 +4)[3]) goto gt; if ((x+48)[1] < (y+16 +4)[3]) goto lt; if ((x+48)[2] > (y+16 +4)[3]) goto gt; if ((x+48)[2] < (y+16 +4)[3]) goto lt; if ((x+48)[3] > (y+16 +4)[3]) goto gt; if ((x+48)[3] < (y+16 +4)[3]) goto lt; if ((x+48 +4)[0] > (y+16 +4)[0]) goto gt; if ((x+48 +4)[0] < (y+16 +4)[0]) goto lt; if ((x+48 +4)[1] > (y+16 +4)[0]) goto gt; if ((x+48 +4)[1] < (y+16 +4)[0]) goto lt; if ((x+48 +4)[2] > (y+16 +4)[0]) goto gt; if ((x+48 +4)[2] < (y+16 +4)[0]) goto lt; if ((x+48 +4)[3] > (y+16 +4)[0]) goto gt; if ((x+48 +4)[3] < (y+16 +4)[0]) goto lt; if ((x+48 +4)[0] > (y+16 +4)[1]) goto gt; if ((x+48 +4)[0] < (y+16 +4)[1]) goto lt; if ((x+48 +4)[1] > (y+16 +4)[1]) goto gt; if ((x+48 +4)[1] < (y+16 +4)[1]) goto lt; if ((x+48 +4)[2] > (y+16 +4)[1]) goto gt; if ((x+48 +4)[2] < (y+16 +4)[1]) goto lt; if ((x+48 +4)[3] > (y+16 +4)[1]) goto gt; if ((x+48 +4)[3] < (y+16 +4)[1]) goto lt; if ((x+48 +4)[0] > (y+16 +4)[2]) goto gt; if ((x+48 +4)[0] < (y+16 +4)[2]) goto lt; if ((x+48 +4)[1] > (y+16 +4)[2]) goto gt; if ((x+48 +4)[1] < (y+16 +4)[2]) goto lt; if ((x+48 +4)[2] > (y+16 +4)[2]) goto gt; if ((x+48 +4)[2] < (y+16 +4)[2]) goto lt; if ((x+48 +4)[3] > (y+16 +4)[2]) goto gt; if ((x+48 +4)[3] < (y+16 +4)[2]) goto lt; if ((x+48 +4)[0] > (y+16 +4)[3]) goto gt; if ((x+48 +4)[0] < (y+16 +4)[3]) goto lt; if ((x+48 +4)[1] > (y+16 +4)[3]) goto gt; if ((x+48 +4)[1] < (y+16 +4)[3]) goto lt; if ((x+48 +4)[2] > (y+16 +4)[3]) goto gt; if ((x+48 +4)[2] < (y+16 +4)[3]) goto lt; if ((x+48 +4)[3] > (y+16 +4)[3]) goto gt; if ((x+48 +4)[3] < (y+16 +4)[3]) goto lt; if ((x+48 +8)[0] > (y+16 +4)[0]) goto gt; if ((x+48 +8)[0] < (y+16 +4)[0]) goto lt; if ((x+48 +8)[1] > (y+16 +4)[0]) goto gt; if ((x+48 +8)[1] < (y+16 +4)[0]) goto lt; if ((x+48 +8)[2] > (y+16 +4)[0]) goto gt; if ((x+48 +8)[2] < (y+16 +4)[0]) goto lt; if ((x+48 +8)[3] > (y+16 +4)[0]) goto gt; if ((x+48 +8)[3] < (y+16 +4)[0]) goto lt; if ((x+48 +8)[0] > (y+16 +4)[1]) goto gt; if ((x+48 +8)[0] < (y+16 +4)[1]) goto lt; if ((x+48 +8)[1] > (y+16 +4)[1]) goto gt; if ((x+48 +8)[1] < (y+16 +4)[1]) goto lt; if ((x+48 +8)[2] > (y+16 +4)[1]) goto gt; if ((x+48 +8)[2] < (y+16 +4)[1]) goto lt; if ((x+48 +8)[3] > (y+16 +4)[1]) goto gt; if ((x+48 +8)[3] < (y+16 +4)[1]) goto lt; if ((x+48 +8)[0] > (y+16 +4)[2]) goto gt; if ((x+48 +8)[0] < (y+16 +4)[2]) goto lt; if ((x+48 +8)[1] > (y+16 +4)[2]) goto gt; if ((x+48 +8)[1] < (y+16 +4)[2]) goto lt; if ((x+48 +8)[2] > (y+16 +4)[2]) goto gt; if ((x+48 +8)[2] < (y+16 +4)[2]) goto lt; if ((x+48 +8)[3] > (y+16 +4)[2]) goto gt; if ((x+48 +8)[3] < (y+16 +4)[2]) goto lt; if ((x+48 +8)[0] > (y+16 +4)[3]) goto gt; if ((x+48 +8)[0] < (y+16 +4)[3]) goto lt; if ((x+48 +8)[1] > (y+16 +4)[3]) goto gt; if ((x+48 +8)[1] < (y+16 +4)[3]) goto lt; if ((x+48 +8)[2] > (y+16 +4)[3]) goto gt; if ((x+48 +8)[2] < (y+16 +4)[3]) goto lt; if ((x+48 +8)[3] > (y+16 +4)[3]) goto gt; if ((x+48 +8)[3] < (y+16 +4)[3]) goto lt; if ((x+48 +12)[0] > (y+16 +4)[0]) goto gt; if ((x+48 +12)[0] < (y+16 +4)[0]) goto lt; if ((x+48 +12)[1] > (y+16 +4)[0]) goto gt; if ((x+48 +12)[1] < (y+16 +4)[0]) goto lt; if ((x+48 +12)[2] > (y+16 +4)[0]) goto gt; if ((x+48 +12)[2] < (y+16 +4)[0]) goto lt; if ((x+48 +12)[3] > (y+16 +4)[0]) goto gt; if ((x+48 +12)[3] < (y+16 +4)[0]) goto lt; if ((x+48 +12)[0] > (y+16 +4)[1]) goto gt; if ((x+48 +12)[0] < (y+16 +4)[1]) goto lt; if ((x+48 +12)[1] > (y+16 +4)[1]) goto gt; if ((x+48 +12)[1] < (y+16 +4)[1]) goto lt; if ((x+48 +12)[2] > (y+16 +4)[1]) goto gt; if ((x+48 +12)[2] < (y+16 +4)[1]) goto lt; if ((x+48 +12)[3] > (y+16 +4)[1]) goto gt; if ((x+48 +12)[3] < (y+16 +4)[1]) goto lt; if ((x+48 +12)[0] > (y+16 +4)[2]) goto gt; if ((x+48 +12)[0] < (y+16 +4)[2]) goto lt; if ((x+48 +12)[1] > (y+16 +4)[2]) goto gt; if ((x+48 +12)[1] < (y+16 +4)[2]) goto lt; if ((x+48 +12)[2] > (y+16 +4)[2]) goto gt; if ((x+48 +12)[2] < (y+16 +4)[2]) goto lt; if ((x+48 +12)[3] > (y+16 +4)[2]) goto gt; if ((x+48 +12)[3] < (y+16 +4)[2]) goto lt; if ((x+48 +12)[0] > (y+16 +4)[3]) goto gt; if ((x+48 +12)[0] < (y+16 +4)[3]) goto lt; if ((x+48 +12)[1] > (y+16 +4)[3]) goto gt; if ((x+48 +12)[1] < (y+16 +4)[3]) goto lt; if ((x+48 +12)[2] > (y+16 +4)[3]) goto gt; if ((x+48 +12)[2] < (y+16 +4)[3]) goto lt; if ((x+48 +12)[3] > (y+16 +4)[3]) goto gt; if ((x+48 +12)[3] < (y+16 +4)[3]) goto lt; if ((x+48)[0] > (y+16 +8)[0]) goto gt; if ((x+48)[0] < (y+16 +8)[0]) goto lt; if ((x+48)[1] > (y+16 +8)[0]) goto gt; if ((x+48)[1] < (y+16 +8)[0]) goto lt; if ((x+48)[2] > (y+16 +8)[0]) goto gt; if ((x+48)[2] < (y+16 +8)[0]) goto lt; if ((x+48)[3] > (y+16 +8)[0]) goto gt; if ((x+48)[3] < (y+16 +8)[0]) goto lt; if ((x+48)[0] > (y+16 +8)[1]) goto gt; if ((x+48)[0] < (y+16 +8)[1]) goto lt; if ((x+48)[1] > (y+16 +8)[1]) goto gt; if ((x+48)[1] < (y+16 +8)[1]) goto lt; if ((x+48)[2] > (y+16 +8)[1]) goto gt; if ((x+48)[2] < (y+16 +8)[1]) goto lt; if ((x+48)[3] > (y+16 +8)[1]) goto gt; if ((x+48)[3] < (y+16 +8)[1]) goto lt; if ((x+48)[0] > (y+16 +8)[2]) goto gt; if ((x+48)[0] < (y+16 +8)[2]) goto lt; if ((x+48)[1] > (y+16 +8)[2]) goto gt; if ((x+48)[1] < (y+16 +8)[2]) goto lt; if ((x+48)[2] > (y+16 +8)[2]) goto gt; if ((x+48)[2] < (y+16 +8)[2]) goto lt; if ((x+48)[3] > (y+16 +8)[2]) goto gt; if ((x+48)[3] < (y+16 +8)[2]) goto lt; if ((x+48)[0] > (y+16 +8)[3]) goto gt; if ((x+48)[0] < (y+16 +8)[3]) goto lt; if ((x+48)[1] > (y+16 +8)[3]) goto gt; if ((x+48)[1] < (y+16 +8)[3]) goto lt; if ((x+48)[2] > (y+16 +8)[3]) goto gt; if ((x+48)[2] < (y+16 +8)[3]) goto lt; if ((x+48)[3] > (y+16 +8)[3]) goto gt; if ((x+48)[3] < (y+16 +8)[3]) goto lt; if ((x+48 +4)[0] > (y+16 +8)[0]) goto gt; if ((x+48 +4)[0] < (y+16 +8)[0]) goto lt; if ((x+48 +4)[1] > (y+16 +8)[0]) goto gt; if ((x+48 +4)[1] < (y+16 +8)[0]) goto lt; if ((x+48 +4)[2] > (y+16 +8)[0]) goto gt; if ((x+48 +4)[2] < (y+16 +8)[0]) goto lt; if ((x+48 +4)[3] > (y+16 +8)[0]) goto gt; if ((x+48 +4)[3] < (y+16 +8)[0]) goto lt; if ((x+48 +4)[0] > (y+16 +8)[1]) goto gt; if ((x+48 +4)[0] < (y+16 +8)[1]) goto lt; if ((x+48 +4)[1] > (y+16 +8)[1]) goto gt; if ((x+48 +4)[1] < (y+16 +8)[1]) goto lt; if ((x+48 +4)[2] > (y+16 +8)[1]) goto gt; if ((x+48 +4)[2] < (y+16 +8)[1]) goto lt; if ((x+48 +4)[3] > (y+16 +8)[1]) goto gt; if ((x+48 +4)[3] < (y+16 +8)[1]) goto lt; if ((x+48 +4)[0] > (y+16 +8)[2]) goto gt; if ((x+48 +4)[0] < (y+16 +8)[2]) goto lt; if ((x+48 +4)[1] > (y+16 +8)[2]) goto gt; if ((x+48 +4)[1] < (y+16 +8)[2]) goto lt; if ((x+48 +4)[2] > (y+16 +8)[2]) goto gt; if ((x+48 +4)[2] < (y+16 +8)[2]) goto lt; if ((x+48 +4)[3] > (y+16 +8)[2]) goto gt; if ((x+48 +4)[3] < (y+16 +8)[2]) goto lt; if ((x+48 +4)[0] > (y+16 +8)[3]) goto gt; if ((x+48 +4)[0] < (y+16 +8)[3]) goto lt; if ((x+48 +4)[1] > (y+16 +8)[3]) goto gt; if ((x+48 +4)[1] < (y+16 +8)[3]) goto lt; if ((x+48 +4)[2] > (y+16 +8)[3]) goto gt; if ((x+48 +4)[2] < (y+16 +8)[3]) goto lt; if ((x+48 +4)[3] > (y+16 +8)[3]) goto gt; if ((x+48 +4)[3] < (y+16 +8)[3]) goto lt; if ((x+48 +8)[0] > (y+16 +8)[0]) goto gt; if ((x+48 +8)[0] < (y+16 +8)[0]) goto lt; if ((x+48 +8)[1] > (y+16 +8)[0]) goto gt; if ((x+48 +8)[1] < (y+16 +8)[0]) goto lt; if ((x+48 +8)[2] > (y+16 +8)[0]) goto gt; if ((x+48 +8)[2] < (y+16 +8)[0]) goto lt; if ((x+48 +8)[3] > (y+16 +8)[0]) goto gt; if ((x+48 +8)[3] < (y+16 +8)[0]) goto lt; if ((x+48 +8)[0] > (y+16 +8)[1]) goto gt; if ((x+48 +8)[0] < (y+16 +8)[1]) goto lt; if ((x+48 +8)[1] > (y+16 +8)[1]) goto gt; if ((x+48 +8)[1] < (y+16 +8)[1]) goto lt; if ((x+48 +8)[2] > (y+16 +8)[1]) goto gt; if ((x+48 +8)[2] < (y+16 +8)[1]) goto lt; if ((x+48 +8)[3] > (y+16 +8)[1]) goto gt; if ((x+48 +8)[3] < (y+16 +8)[1]) goto lt; if ((x+48 +8)[0] > (y+16 +8)[2]) goto gt; if ((x+48 +8)[0] < (y+16 +8)[2]) goto lt; if ((x+48 +8)[1] > (y+16 +8)[2]) goto gt; if ((x+48 +8)[1] < (y+16 +8)[2]) goto lt; if ((x+48 +8)[2] > (y+16 +8)[2]) goto gt; if ((x+48 +8)[2] < (y+16 +8)[2]) goto lt; if ((x+48 +8)[3] > (y+16 +8)[2]) goto gt; if ((x+48 +8)[3] < (y+16 +8)[2]) goto lt; if ((x+48 +8)[0] > (y+16 +8)[3]) goto gt; if ((x+48 +8)[0] < (y+16 +8)[3]) goto lt; if ((x+48 +8)[1] > (y+16 +8)[3]) goto gt; if ((x+48 +8)[1] < (y+16 +8)[3]) goto lt; if ((x+48 +8)[2] > (y+16 +8)[3]) goto gt; if ((x+48 +8)[2] < (y+16 +8)[3]) goto lt; if ((x+48 +8)[3] > (y+16 +8)[3]) goto gt; if ((x+48 +8)[3] < (y+16 +8)[3]) goto lt; if ((x+48 +12)[0] > (y+16 +8)[0]) goto gt; if ((x+48 +12)[0] < (y+16 +8)[0]) goto lt; if ((x+48 +12)[1] > (y+16 +8)[0]) goto gt; if ((x+48 +12)[1] < (y+16 +8)[0]) goto lt; if ((x+48 +12)[2] > (y+16 +8)[0]) goto gt; if ((x+48 +12)[2] < (y+16 +8)[0]) goto lt; if ((x+48 +12)[3] > (y+16 +8)[0]) goto gt; if ((x+48 +12)[3] < (y+16 +8)[0]) goto lt; if ((x+48 +12)[0] > (y+16 +8)[1]) goto gt; if ((x+48 +12)[0] < (y+16 +8)[1]) goto lt; if ((x+48 +12)[1] > (y+16 +8)[1]) goto gt; if ((x+48 +12)[1] < (y+16 +8)[1]) goto lt; if ((x+48 +12)[2] > (y+16 +8)[1]) goto gt; if ((x+48 +12)[2] < (y+16 +8)[1]) goto lt; if ((x+48 +12)[3] > (y+16 +8)[1]) goto gt; if ((x+48 +12)[3] < (y+16 +8)[1]) goto lt; if ((x+48 +12)[0] > (y+16 +8)[2]) goto gt; if ((x+48 +12)[0] < (y+16 +8)[2]) goto lt; if ((x+48 +12)[1] > (y+16 +8)[2]) goto gt; if ((x+48 +12)[1] < (y+16 +8)[2]) goto lt; if ((x+48 +12)[2] > (y+16 +8)[2]) goto gt; if ((x+48 +12)[2] < (y+16 +8)[2]) goto lt; if ((x+48 +12)[3] > (y+16 +8)[2]) goto gt; if ((x+48 +12)[3] < (y+16 +8)[2]) goto lt; if ((x+48 +12)[0] > (y+16 +8)[3]) goto gt; if ((x+48 +12)[0] < (y+16 +8)[3]) goto lt; if ((x+48 +12)[1] > (y+16 +8)[3]) goto gt; if ((x+48 +12)[1] < (y+16 +8)[3]) goto lt; if ((x+48 +12)[2] > (y+16 +8)[3]) goto gt; if ((x+48 +12)[2] < (y+16 +8)[3]) goto lt; if ((x+48 +12)[3] > (y+16 +8)[3]) goto gt; if ((x+48 +12)[3] < (y+16 +8)[3]) goto lt; if ((x+48)[0] > (y+16 +12)[0]) goto gt; if ((x+48)[0] < (y+16 +12)[0]) goto lt; if ((x+48)[1] > (y+16 +12)[0]) goto gt; if ((x+48)[1] < (y+16 +12)[0]) goto lt; if ((x+48)[2] > (y+16 +12)[0]) goto gt; if ((x+48)[2] < (y+16 +12)[0]) goto lt; if ((x+48)[3] > (y+16 +12)[0]) goto gt; if ((x+48)[3] < (y+16 +12)[0]) goto lt; if ((x+48)[0] > (y+16 +12)[1]) goto gt; if ((x+48)[0] < (y+16 +12)[1]) goto lt; if ((x+48)[1] > (y+16 +12)[1]) goto gt; if ((x+48)[1] < (y+16 +12)[1]) goto lt; if ((x+48)[2] > (y+16 +12)[1]) goto gt; if ((x+48)[2] < (y+16 +12)[1]) goto lt; if ((x+48)[3] > (y+16 +12)[1]) goto gt; if ((x+48)[3] < (y+16 +12)[1]) goto lt; if ((x+48)[0] > (y+16 +12)[2]) goto gt; if ((x+48)[0] < (y+16 +12)[2]) goto lt; if ((x+48)[1] > (y+16 +12)[2]) goto gt; if ((x+48)[1] < (y+16 +12)[2]) goto lt; if ((x+48)[2] > (y+16 +12)[2]) goto gt; if ((x+48)[2] < (y+16 +12)[2]) goto lt; if ((x+48)[3] > (y+16 +12)[2]) goto gt; if ((x+48)[3] < (y+16 +12)[2]) goto lt; if ((x+48)[0] > (y+16 +12)[3]) goto gt; if ((x+48)[0] < (y+16 +12)[3]) goto lt; if ((x+48)[1] > (y+16 +12)[3]) goto gt; if ((x+48)[1] < (y+16 +12)[3]) goto lt; if ((x+48)[2] > (y+16 +12)[3]) goto gt; if ((x+48)[2] < (y+16 +12)[3]) goto lt; if ((x+48)[3] > (y+16 +12)[3]) goto gt; if ((x+48)[3] < (y+16 +12)[3]) goto lt; if ((x+48 +4)[0] > (y+16 +12)[0]) goto gt; if ((x+48 +4)[0] < (y+16 +12)[0]) goto lt; if ((x+48 +4)[1] > (y+16 +12)[0]) goto gt; if ((x+48 +4)[1] < (y+16 +12)[0]) goto lt; if ((x+48 +4)[2] > (y+16 +12)[0]) goto gt; if ((x+48 +4)[2] < (y+16 +12)[0]) goto lt; if ((x+48 +4)[3] > (y+16 +12)[0]) goto gt; if ((x+48 +4)[3] < (y+16 +12)[0]) goto lt; if ((x+48 +4)[0] > (y+16 +12)[1]) goto gt; if ((x+48 +4)[0] < (y+16 +12)[1]) goto lt; if ((x+48 +4)[1] > (y+16 +12)[1]) goto gt; if ((x+48 +4)[1] < (y+16 +12)[1]) goto lt; if ((x+48 +4)[2] > (y+16 +12)[1]) goto gt; if ((x+48 +4)[2] < (y+16 +12)[1]) goto lt; if ((x+48 +4)[3] > (y+16 +12)[1]) goto gt; if ((x+48 +4)[3] < (y+16 +12)[1]) goto lt; if ((x+48 +4)[0] > (y+16 +12)[2]) goto gt; if ((x+48 +4)[0] < (y+16 +12)[2]) goto lt; if ((x+48 +4)[1] > (y+16 +12)[2]) goto gt; if ((x+48 +4)[1] < (y+16 +12)[2]) goto lt; if ((x+48 +4)[2] > (y+16 +12)[2]) goto gt; if ((x+48 +4)[2] < (y+16 +12)[2]) goto lt; if ((x+48 +4)[3] > (y+16 +12)[2]) goto gt; if ((x+48 +4)[3] < (y+16 +12)[2]) goto lt; if ((x+48 +4)[0] > (y+16 +12)[3]) goto gt; if ((x+48 +4)[0] < (y+16 +12)[3]) goto lt; if ((x+48 +4)[1] > (y+16 +12)[3]) goto gt; if ((x+48 +4)[1] < (y+16 +12)[3]) goto lt; if ((x+48 +4)[2] > (y+16 +12)[3]) goto gt; if ((x+48 +4)[2] < (y+16 +12)[3]) goto lt; if ((x+48 +4)[3] > (y+16 +12)[3]) goto gt; if ((x+48 +4)[3] < (y+16 +12)[3]) goto lt; if ((x+48 +8)[0] > (y+16 +12)[0]) goto gt; if ((x+48 +8)[0] < (y+16 +12)[0]) goto lt; if ((x+48 +8)[1] > (y+16 +12)[0]) goto gt; if ((x+48 +8)[1] < (y+16 +12)[0]) goto lt; if ((x+48 +8)[2] > (y+16 +12)[0]) goto gt; if ((x+48 +8)[2] < (y+16 +12)[0]) goto lt; if ((x+48 +8)[3] > (y+16 +12)[0]) goto gt; if ((x+48 +8)[3] < (y+16 +12)[0]) goto lt; if ((x+48 +8)[0] > (y+16 +12)[1]) goto gt; if ((x+48 +8)[0] < (y+16 +12)[1]) goto lt; if ((x+48 +8)[1] > (y+16 +12)[1]) goto gt; if ((x+48 +8)[1] < (y+16 +12)[1]) goto lt; if ((x+48 +8)[2] > (y+16 +12)[1]) goto gt; if ((x+48 +8)[2] < (y+16 +12)[1]) goto lt; if ((x+48 +8)[3] > (y+16 +12)[1]) goto gt; if ((x+48 +8)[3] < (y+16 +12)[1]) goto lt; if ((x+48 +8)[0] > (y+16 +12)[2]) goto gt; if ((x+48 +8)[0] < (y+16 +12)[2]) goto lt; if ((x+48 +8)[1] > (y+16 +12)[2]) goto gt; if ((x+48 +8)[1] < (y+16 +12)[2]) goto lt; if ((x+48 +8)[2] > (y+16 +12)[2]) goto gt; if ((x+48 +8)[2] < (y+16 +12)[2]) goto lt; if ((x+48 +8)[3] > (y+16 +12)[2]) goto gt; if ((x+48 +8)[3] < (y+16 +12)[2]) goto lt; if ((x+48 +8)[0] > (y+16 +12)[3]) goto gt; if ((x+48 +8)[0] < (y+16 +12)[3]) goto lt; if ((x+48 +8)[1] > (y+16 +12)[3]) goto gt; if ((x+48 +8)[1] < (y+16 +12)[3]) goto lt; if ((x+48 +8)[2] > (y+16 +12)[3]) goto gt; if ((x+48 +8)[2] < (y+16 +12)[3]) goto lt; if ((x+48 +8)[3] > (y+16 +12)[3]) goto gt; if ((x+48 +8)[3] < (y+16 +12)[3]) goto lt; if ((x+48 +12)[0] > (y+16 +12)[0]) goto gt; if ((x+48 +12)[0] < (y+16 +12)[0]) goto lt; if ((x+48 +12)[1] > (y+16 +12)[0]) goto gt; if ((x+48 +12)[1] < (y+16 +12)[0]) goto lt; if ((x+48 +12)[2] > (y+16 +12)[0]) goto gt; if ((x+48 +12)[2] < (y+16 +12)[0]) goto lt; if ((x+48 +12)[3] > (y+16 +12)[0]) goto gt; if ((x+48 +12)[3] < (y+16 +12)[0]) goto lt; if ((x+48 +12)[0] > (y+16 +12)[1]) goto gt; if ((x+48 +12)[0] < (y+16 +12)[1]) goto lt; if ((x+48 +12)[1] > (y+16 +12)[1]) goto gt; if ((x+48 +12)[1] < (y+16 +12)[1]) goto lt; if ((x+48 +12)[2] > (y+16 +12)[1]) goto gt; if ((x+48 +12)[2] < (y+16 +12)[1]) goto lt; if ((x+48 +12)[3] > (y+16 +12)[1]) goto gt; if ((x+48 +12)[3] < (y+16 +12)[1]) goto lt; if ((x+48 +12)[0] > (y+16 +12)[2]) goto gt; if ((x+48 +12)[0] < (y+16 +12)[2]) goto lt; if ((x+48 +12)[1] > (y+16 +12)[2]) goto gt; if ((x+48 +12)[1] < (y+16 +12)[2]) goto lt; if ((x+48 +12)[2] > (y+16 +12)[2]) goto gt; if ((x+48 +12)[2] < (y+16 +12)[2]) goto lt; if ((x+48 +12)[3] > (y+16 +12)[2]) goto gt; if ((x+48 +12)[3] < (y+16 +12)[2]) goto lt; if ((x+48 +12)[0] > (y+16 +12)[3]) goto gt; if ((x+48 +12)[0] < (y+16 +12)[3]) goto lt; if ((x+48 +12)[1] > (y+16 +12)[3]) goto gt; if ((x+48 +12)[1] < (y+16 +12)[3]) goto lt; if ((x+48 +12)[2] > (y+16 +12)[3]) goto gt; if ((x+48 +12)[2] < (y+16 +12)[3]) goto lt; if ((x+48 +12)[3] > (y+16 +12)[3]) goto gt; if ((x+48 +12)[3] < (y+16 +12)[3]) goto lt; if ((x)[0] > (y+32)[0]) goto gt; if ((x)[0] < (y+32)[0]) goto lt; if ((x)[1] > (y+32)[0]) goto gt; if ((x)[1] < (y+32)[0]) goto lt; if ((x)[2] > (y+32)[0]) goto gt; if ((x)[2] < (y+32)[0]) goto lt; if ((x)[3] > (y+32)[0]) goto gt; if ((x)[3] < (y+32)[0]) goto lt; if ((x)[0] > (y+32)[1]) goto gt; if ((x)[0] < (y+32)[1]) goto lt; if ((x)[1] > (y+32)[1]) goto gt; if ((x)[1] < (y+32)[1]) goto lt; if ((x)[2] > (y+32)[1]) goto gt; if ((x)[2] < (y+32)[1]) goto lt; if ((x)[3] > (y+32)[1]) goto gt; if ((x)[3] < (y+32)[1]) goto lt; if ((x)[0] > (y+32)[2]) goto gt; if ((x)[0] < (y+32)[2]) goto lt; if ((x)[1] > (y+32)[2]) goto gt; if ((x)[1] < (y+32)[2]) goto lt; if ((x)[2] > (y+32)[2]) goto gt; if ((x)[2] < (y+32)[2]) goto lt; if ((x)[3] > (y+32)[2]) goto gt; if ((x)[3] < (y+32)[2]) goto lt; if ((x)[0] > (y+32)[3]) goto gt; if ((x)[0] < (y+32)[3]) goto lt; if ((x)[1] > (y+32)[3]) goto gt; if ((x)[1] < (y+32)[3]) goto lt; if ((x)[2] > (y+32)[3]) goto gt; if ((x)[2] < (y+32)[3]) goto lt; if ((x)[3] > (y+32)[3]) goto gt; if ((x)[3] < (y+32)[3]) goto lt; if ((x+4)[0] > (y+32)[0]) goto gt; if ((x+4)[0] < (y+32)[0]) goto lt; if ((x+4)[1] > (y+32)[0]) goto gt; if ((x+4)[1] < (y+32)[0]) goto lt; if ((x+4)[2] > (y+32)[0]) goto gt; if ((x+4)[2] < (y+32)[0]) goto lt; if ((x+4)[3] > (y+32)[0]) goto gt; if ((x+4)[3] < (y+32)[0]) goto lt; if ((x+4)[0] > (y+32)[1]) goto gt; if ((x+4)[0] < (y+32)[1]) goto lt; if ((x+4)[1] > (y+32)[1]) goto gt; if ((x+4)[1] < (y+32)[1]) goto lt; if ((x+4)[2] > (y+32)[1]) goto gt; if ((x+4)[2] < (y+32)[1]) goto lt; if ((x+4)[3] > (y+32)[1]) goto gt; if ((x+4)[3] < (y+32)[1]) goto lt; if ((x+4)[0] > (y+32)[2]) goto gt; if ((x+4)[0] < (y+32)[2]) goto lt; if ((x+4)[1] > (y+32)[2]) goto gt; if ((x+4)[1] < (y+32)[2]) goto lt; if ((x+4)[2] > (y+32)[2]) goto gt; if ((x+4)[2] < (y+32)[2]) goto lt; if ((x+4)[3] > (y+32)[2]) goto gt; if ((x+4)[3] < (y+32)[2]) goto lt; if ((x+4)[0] > (y+32)[3]) goto gt; if ((x+4)[0] < (y+32)[3]) goto lt; if ((x+4)[1] > (y+32)[3]) goto gt; if ((x+4)[1] < (y+32)[3]) goto lt; if ((x+4)[2] > (y+32)[3]) goto gt; if ((x+4)[2] < (y+32)[3]) goto lt; if ((x+4)[3] > (y+32)[3]) goto gt; if ((x+4)[3] < (y+32)[3]) goto lt; if ((x+8)[0] > (y+32)[0]) goto gt; if ((x+8)[0] < (y+32)[0]) goto lt; if ((x+8)[1] > (y+32)[0]) goto gt; if ((x+8)[1] < (y+32)[0]) goto lt; if ((x+8)[2] > (y+32)[0]) goto gt; if ((x+8)[2] < (y+32)[0]) goto lt; if ((x+8)[3] > (y+32)[0]) goto gt; if ((x+8)[3] < (y+32)[0]) goto lt; if ((x+8)[0] > (y+32)[1]) goto gt; if ((x+8)[0] < (y+32)[1]) goto lt; if ((x+8)[1] > (y+32)[1]) goto gt; if ((x+8)[1] < (y+32)[1]) goto lt; if ((x+8)[2] > (y+32)[1]) goto gt; if ((x+8)[2] < (y+32)[1]) goto lt; if ((x+8)[3] > (y+32)[1]) goto gt; if ((x+8)[3] < (y+32)[1]) goto lt; if ((x+8)[0] > (y+32)[2]) goto gt; if ((x+8)[0] < (y+32)[2]) goto lt; if ((x+8)[1] > (y+32)[2]) goto gt; if ((x+8)[1] < (y+32)[2]) goto lt; if ((x+8)[2] > (y+32)[2]) goto gt; if ((x+8)[2] < (y+32)[2]) goto lt; if ((x+8)[3] > (y+32)[2]) goto gt; if ((x+8)[3] < (y+32)[2]) goto lt; if ((x+8)[0] > (y+32)[3]) goto gt; if ((x+8)[0] < (y+32)[3]) goto lt; if ((x+8)[1] > (y+32)[3]) goto gt; if ((x+8)[1] < (y+32)[3]) goto lt; if ((x+8)[2] > (y+32)[3]) goto gt; if ((x+8)[2] < (y+32)[3]) goto lt; if ((x+8)[3] > (y+32)[3]) goto gt; if ((x+8)[3] < (y+32)[3]) goto lt; if ((x+12)[0] > (y+32)[0]) goto gt; if ((x+12)[0] < (y+32)[0]) goto lt; if ((x+12)[1] > (y+32)[0]) goto gt; if ((x+12)[1] < (y+32)[0]) goto lt; if ((x+12)[2] > (y+32)[0]) goto gt; if ((x+12)[2] < (y+32)[0]) goto lt; if ((x+12)[3] > (y+32)[0]) goto gt; if ((x+12)[3] < (y+32)[0]) goto lt; if ((x+12)[0] > (y+32)[1]) goto gt; if ((x+12)[0] < (y+32)[1]) goto lt; if ((x+12)[1] > (y+32)[1]) goto gt; if ((x+12)[1] < (y+32)[1]) goto lt; if ((x+12)[2] > (y+32)[1]) goto gt; if ((x+12)[2] < (y+32)[1]) goto lt; if ((x+12)[3] > (y+32)[1]) goto gt; if ((x+12)[3] < (y+32)[1]) goto lt; if ((x+12)[0] > (y+32)[2]) goto gt; if ((x+12)[0] < (y+32)[2]) goto lt; if ((x+12)[1] > (y+32)[2]) goto gt; if ((x+12)[1] < (y+32)[2]) goto lt; if ((x+12)[2] > (y+32)[2]) goto gt; if ((x+12)[2] < (y+32)[2]) goto lt; if ((x+12)[3] > (y+32)[2]) goto gt; if ((x+12)[3] < (y+32)[2]) goto lt; if ((x+12)[0] > (y+32)[3]) goto gt; if ((x+12)[0] < (y+32)[3]) goto lt; if ((x+12)[1] > (y+32)[3]) goto gt; if ((x+12)[1] < (y+32)[3]) goto lt; if ((x+12)[2] > (y+32)[3]) goto gt; if ((x+12)[2] < (y+32)[3]) goto lt; if ((x+12)[3] > (y+32)[3]) goto gt; if ((x+12)[3] < (y+32)[3]) goto lt; if ((x)[0] > (y+32 +4)[0]) goto gt; if ((x)[0] < (y+32 +4)[0]) goto lt; if ((x)[1] > (y+32 +4)[0]) goto gt; if ((x)[1] < (y+32 +4)[0]) goto lt; if ((x)[2] > (y+32 +4)[0]) goto gt; if ((x)[2] < (y+32 +4)[0]) goto lt; if ((x)[3] > (y+32 +4)[0]) goto gt; if ((x)[3] < (y+32 +4)[0]) goto lt; if ((x)[0] > (y+32 +4)[1]) goto gt; if ((x)[0] < (y+32 +4)[1]) goto lt; if ((x)[1] > (y+32 +4)[1]) goto gt; if ((x)[1] < (y+32 +4)[1]) goto lt; if ((x)[2] > (y+32 +4)[1]) goto gt; if ((x)[2] < (y+32 +4)[1]) goto lt; if ((x)[3] > (y+32 +4)[1]) goto gt; if ((x)[3] < (y+32 +4)[1]) goto lt; if ((x)[0] > (y+32 +4)[2]) goto gt; if ((x)[0] < (y+32 +4)[2]) goto lt; if ((x)[1] > (y+32 +4)[2]) goto gt; if ((x)[1] < (y+32 +4)[2]) goto lt; if ((x)[2] > (y+32 +4)[2]) goto gt; if ((x)[2] < (y+32 +4)[2]) goto lt; if ((x)[3] > (y+32 +4)[2]) goto gt; if ((x)[3] < (y+32 +4)[2]) goto lt; if ((x)[0] > (y+32 +4)[3]) goto gt; if ((x)[0] < (y+32 +4)[3]) goto lt; if ((x)[1] > (y+32 +4)[3]) goto gt; if ((x)[1] < (y+32 +4)[3]) goto lt; if ((x)[2] > (y+32 +4)[3]) goto gt; if ((x)[2] < (y+32 +4)[3]) goto lt; if ((x)[3] > (y+32 +4)[3]) goto gt; if ((x)[3] < (y+32 +4)[3]) goto lt; if ((x+4)[0] > (y+32 +4)[0]) goto gt; if ((x+4)[0] < (y+32 +4)[0]) goto lt; if ((x+4)[1] > (y+32 +4)[0]) goto gt; if ((x+4)[1] < (y+32 +4)[0]) goto lt; if ((x+4)[2] > (y+32 +4)[0]) goto gt; if ((x+4)[2] < (y+32 +4)[0]) goto lt; if ((x+4)[3] > (y+32 +4)[0]) goto gt; if ((x+4)[3] < (y+32 +4)[0]) goto lt; if ((x+4)[0] > (y+32 +4)[1]) goto gt; if ((x+4)[0] < (y+32 +4)[1]) goto lt; if ((x+4)[1] > (y+32 +4)[1]) goto gt; if ((x+4)[1] < (y+32 +4)[1]) goto lt; if ((x+4)[2] > (y+32 +4)[1]) goto gt; if ((x+4)[2] < (y+32 +4)[1]) goto lt; if ((x+4)[3] > (y+32 +4)[1]) goto gt; if ((x+4)[3] < (y+32 +4)[1]) goto lt; if ((x+4)[0] > (y+32 +4)[2]) goto gt; if ((x+4)[0] < (y+32 +4)[2]) goto lt; if ((x+4)[1] > (y+32 +4)[2]) goto gt; if ((x+4)[1] < (y+32 +4)[2]) goto lt; if ((x+4)[2] > (y+32 +4)[2]) goto gt; if ((x+4)[2] < (y+32 +4)[2]) goto lt; if ((x+4)[3] > (y+32 +4)[2]) goto gt; if ((x+4)[3] < (y+32 +4)[2]) goto lt; if ((x+4)[0] > (y+32 +4)[3]) goto gt; if ((x+4)[0] < (y+32 +4)[3]) goto lt; if ((x+4)[1] > (y+32 +4)[3]) goto gt; if ((x+4)[1] < (y+32 +4)[3]) goto lt; if ((x+4)[2] > (y+32 +4)[3]) goto gt; if ((x+4)[2] < (y+32 +4)[3]) goto lt; if ((x+4)[3] > (y+32 +4)[3]) goto gt; if ((x+4)[3] < (y+32 +4)[3]) goto lt; if ((x+8)[0] > (y+32 +4)[0]) goto gt; if ((x+8)[0] < (y+32 +4)[0]) goto lt; if ((x+8)[1] > (y+32 +4)[0]) goto gt; if ((x+8)[1] < (y+32 +4)[0]) goto lt; if ((x+8)[2] > (y+32 +4)[0]) goto gt; if ((x+8)[2] < (y+32 +4)[0]) goto lt; if ((x+8)[3] > (y+32 +4)[0]) goto gt; if ((x+8)[3] < (y+32 +4)[0]) goto lt; if ((x+8)[0] > (y+32 +4)[1]) goto gt; if ((x+8)[0] < (y+32 +4)[1]) goto lt; if ((x+8)[1] > (y+32 +4)[1]) goto gt; if ((x+8)[1] < (y+32 +4)[1]) goto lt; if ((x+8)[2] > (y+32 +4)[1]) goto gt; if ((x+8)[2] < (y+32 +4)[1]) goto lt; if ((x+8)[3] > (y+32 +4)[1]) goto gt; if ((x+8)[3] < (y+32 +4)[1]) goto lt; if ((x+8)[0] > (y+32 +4)[2]) goto gt; if ((x+8)[0] < (y+32 +4)[2]) goto lt; if ((x+8)[1] > (y+32 +4)[2]) goto gt; if ((x+8)[1] < (y+32 +4)[2]) goto lt; if ((x+8)[2] > (y+32 +4)[2]) goto gt; if ((x+8)[2] < (y+32 +4)[2]) goto lt; if ((x+8)[3] > (y+32 +4)[2]) goto gt; if ((x+8)[3] < (y+32 +4)[2]) goto lt; if ((x+8)[0] > (y+32 +4)[3]) goto gt; if ((x+8)[0] < (y+32 +4)[3]) goto lt; if ((x+8)[1] > (y+32 +4)[3]) goto gt; if ((x+8)[1] < (y+32 +4)[3]) goto lt; if ((x+8)[2] > (y+32 +4)[3]) goto gt; if ((x+8)[2] < (y+32 +4)[3]) goto lt; if ((x+8)[3] > (y+32 +4)[3]) goto gt; if ((x+8)[3] < (y+32 +4)[3]) goto lt; if ((x+12)[0] > (y+32 +4)[0]) goto gt; if ((x+12)[0] < (y+32 +4)[0]) goto lt; if ((x+12)[1] > (y+32 +4)[0]) goto gt; if ((x+12)[1] < (y+32 +4)[0]) goto lt; if ((x+12)[2] > (y+32 +4)[0]) goto gt; if ((x+12)[2] < (y+32 +4)[0]) goto lt; if ((x+12)[3] > (y+32 +4)[0]) goto gt; if ((x+12)[3] < (y+32 +4)[0]) goto lt; if ((x+12)[0] > (y+32 +4)[1]) goto gt; if ((x+12)[0] < (y+32 +4)[1]) goto lt; if ((x+12)[1] > (y+32 +4)[1]) goto gt; if ((x+12)[1] < (y+32 +4)[1]) goto lt; if ((x+12)[2] > (y+32 +4)[1]) goto gt; if ((x+12)[2] < (y+32 +4)[1]) goto lt; if ((x+12)[3] > (y+32 +4)[1]) goto gt; if ((x+12)[3] < (y+32 +4)[1]) goto lt; if ((x+12)[0] > (y+32 +4)[2]) goto gt; if ((x+12)[0] < (y+32 +4)[2]) goto lt; if ((x+12)[1] > (y+32 +4)[2]) goto gt; if ((x+12)[1] < (y+32 +4)[2]) goto lt; if ((x+12)[2] > (y+32 +4)[2]) goto gt; if ((x+12)[2] < (y+32 +4)[2]) goto lt; if ((x+12)[3] > (y+32 +4)[2]) goto gt; if ((x+12)[3] < (y+32 +4)[2]) goto lt; if ((x+12)[0] > (y+32 +4)[3]) goto gt; if ((x+12)[0] < (y+32 +4)[3]) goto lt; if ((x+12)[1] > (y+32 +4)[3]) goto gt; if ((x+12)[1] < (y+32 +4)[3]) goto lt; if ((x+12)[2] > (y+32 +4)[3]) goto gt; if ((x+12)[2] < (y+32 +4)[3]) goto lt; if ((x+12)[3] > (y+32 +4)[3]) goto gt; if ((x+12)[3] < (y+32 +4)[3]) goto lt; if ((x)[0] > (y+32 +8)[0]) goto gt; if ((x)[0] < (y+32 +8)[0]) goto lt; if ((x)[1] > (y+32 +8)[0]) goto gt; if ((x)[1] < (y+32 +8)[0]) goto lt; if ((x)[2] > (y+32 +8)[0]) goto gt; if ((x)[2] < (y+32 +8)[0]) goto lt; if ((x)[3] > (y+32 +8)[0]) goto gt; if ((x)[3] < (y+32 +8)[0]) goto lt; if ((x)[0] > (y+32 +8)[1]) goto gt; if ((x)[0] < (y+32 +8)[1]) goto lt; if ((x)[1] > (y+32 +8)[1]) goto gt; if ((x)[1] < (y+32 +8)[1]) goto lt; if ((x)[2] > (y+32 +8)[1]) goto gt; if ((x)[2] < (y+32 +8)[1]) goto lt; if ((x)[3] > (y+32 +8)[1]) goto gt; if ((x)[3] < (y+32 +8)[1]) goto lt; if ((x)[0] > (y+32 +8)[2]) goto gt; if ((x)[0] < (y+32 +8)[2]) goto lt; if ((x)[1] > (y+32 +8)[2]) goto gt; if ((x)[1] < (y+32 +8)[2]) goto lt; if ((x)[2] > (y+32 +8)[2]) goto gt; if ((x)[2] < (y+32 +8)[2]) goto lt; if ((x)[3] > (y+32 +8)[2]) goto gt; if ((x)[3] < (y+32 +8)[2]) goto lt; if ((x)[0] > (y+32 +8)[3]) goto gt; if ((x)[0] < (y+32 +8)[3]) goto lt; if ((x)[1] > (y+32 +8)[3]) goto gt; if ((x)[1] < (y+32 +8)[3]) goto lt; if ((x)[2] > (y+32 +8)[3]) goto gt; if ((x)[2] < (y+32 +8)[3]) goto lt; if ((x)[3] > (y+32 +8)[3]) goto gt; if ((x)[3] < (y+32 +8)[3]) goto lt; if ((x+4)[0] > (y+32 +8)[0]) goto gt; if ((x+4)[0] < (y+32 +8)[0]) goto lt; if ((x+4)[1] > (y+32 +8)[0]) goto gt; if ((x+4)[1] < (y+32 +8)[0]) goto lt; if ((x+4)[2] > (y+32 +8)[0]) goto gt; if ((x+4)[2] < (y+32 +8)[0]) goto lt; if ((x+4)[3] > (y+32 +8)[0]) goto gt; if ((x+4)[3] < (y+32 +8)[0]) goto lt; if ((x+4)[0] > (y+32 +8)[1]) goto gt; if ((x+4)[0] < (y+32 +8)[1]) goto lt; if ((x+4)[1] > (y+32 +8)[1]) goto gt; if ((x+4)[1] < (y+32 +8)[1]) goto lt; if ((x+4)[2] > (y+32 +8)[1]) goto gt; if ((x+4)[2] < (y+32 +8)[1]) goto lt; if ((x+4)[3] > (y+32 +8)[1]) goto gt; if ((x+4)[3] < (y+32 +8)[1]) goto lt; if ((x+4)[0] > (y+32 +8)[2]) goto gt; if ((x+4)[0] < (y+32 +8)[2]) goto lt; if ((x+4)[1] > (y+32 +8)[2]) goto gt; if ((x+4)[1] < (y+32 +8)[2]) goto lt; if ((x+4)[2] > (y+32 +8)[2]) goto gt; if ((x+4)[2] < (y+32 +8)[2]) goto lt; if ((x+4)[3] > (y+32 +8)[2]) goto gt; if ((x+4)[3] < (y+32 +8)[2]) goto lt; if ((x+4)[0] > (y+32 +8)[3]) goto gt; if ((x+4)[0] < (y+32 +8)[3]) goto lt; if ((x+4)[1] > (y+32 +8)[3]) goto gt; if ((x+4)[1] < (y+32 +8)[3]) goto lt; if ((x+4)[2] > (y+32 +8)[3]) goto gt; if ((x+4)[2] < (y+32 +8)[3]) goto lt; if ((x+4)[3] > (y+32 +8)[3]) goto gt; if ((x+4)[3] < (y+32 +8)[3]) goto lt; if ((x+8)[0] > (y+32 +8)[0]) goto gt; if ((x+8)[0] < (y+32 +8)[0]) goto lt; if ((x+8)[1] > (y+32 +8)[0]) goto gt; if ((x+8)[1] < (y+32 +8)[0]) goto lt; if ((x+8)[2] > (y+32 +8)[0]) goto gt; if ((x+8)[2] < (y+32 +8)[0]) goto lt; if ((x+8)[3] > (y+32 +8)[0]) goto gt; if ((x+8)[3] < (y+32 +8)[0]) goto lt; if ((x+8)[0] > (y+32 +8)[1]) goto gt; if ((x+8)[0] < (y+32 +8)[1]) goto lt; if ((x+8)[1] > (y+32 +8)[1]) goto gt; if ((x+8)[1] < (y+32 +8)[1]) goto lt; if ((x+8)[2] > (y+32 +8)[1]) goto gt; if ((x+8)[2] < (y+32 +8)[1]) goto lt; if ((x+8)[3] > (y+32 +8)[1]) goto gt; if ((x+8)[3] < (y+32 +8)[1]) goto lt; if ((x+8)[0] > (y+32 +8)[2]) goto gt; if ((x+8)[0] < (y+32 +8)[2]) goto lt; if ((x+8)[1] > (y+32 +8)[2]) goto gt; if ((x+8)[1] < (y+32 +8)[2]) goto lt; if ((x+8)[2] > (y+32 +8)[2]) goto gt; if ((x+8)[2] < (y+32 +8)[2]) goto lt; if ((x+8)[3] > (y+32 +8)[2]) goto gt; if ((x+8)[3] < (y+32 +8)[2]) goto lt; if ((x+8)[0] > (y+32 +8)[3]) goto gt; if ((x+8)[0] < (y+32 +8)[3]) goto lt; if ((x+8)[1] > (y+32 +8)[3]) goto gt; if ((x+8)[1] < (y+32 +8)[3]) goto lt; if ((x+8)[2] > (y+32 +8)[3]) goto gt; if ((x+8)[2] < (y+32 +8)[3]) goto lt; if ((x+8)[3] > (y+32 +8)[3]) goto gt; if ((x+8)[3] < (y+32 +8)[3]) goto lt; if ((x+12)[0] > (y+32 +8)[0]) goto gt; if ((x+12)[0] < (y+32 +8)[0]) goto lt; if ((x+12)[1] > (y+32 +8)[0]) goto gt; if ((x+12)[1] < (y+32 +8)[0]) goto lt; if ((x+12)[2] > (y+32 +8)[0]) goto gt; if ((x+12)[2] < (y+32 +8)[0]) goto lt; if ((x+12)[3] > (y+32 +8)[0]) goto gt; if ((x+12)[3] < (y+32 +8)[0]) goto lt; if ((x+12)[0] > (y+32 +8)[1]) goto gt; if ((x+12)[0] < (y+32 +8)[1]) goto lt; if ((x+12)[1] > (y+32 +8)[1]) goto gt; if ((x+12)[1] < (y+32 +8)[1]) goto lt; if ((x+12)[2] > (y+32 +8)[1]) goto gt; if ((x+12)[2] < (y+32 +8)[1]) goto lt; if ((x+12)[3] > (y+32 +8)[1]) goto gt; if ((x+12)[3] < (y+32 +8)[1]) goto lt; if ((x+12)[0] > (y+32 +8)[2]) goto gt; if ((x+12)[0] < (y+32 +8)[2]) goto lt; if ((x+12)[1] > (y+32 +8)[2]) goto gt; if ((x+12)[1] < (y+32 +8)[2]) goto lt; if ((x+12)[2] > (y+32 +8)[2]) goto gt; if ((x+12)[2] < (y+32 +8)[2]) goto lt; if ((x+12)[3] > (y+32 +8)[2]) goto gt; if ((x+12)[3] < (y+32 +8)[2]) goto lt; if ((x+12)[0] > (y+32 +8)[3]) goto gt; if ((x+12)[0] < (y+32 +8)[3]) goto lt; if ((x+12)[1] > (y+32 +8)[3]) goto gt; if ((x+12)[1] < (y+32 +8)[3]) goto lt; if ((x+12)[2] > (y+32 +8)[3]) goto gt; if ((x+12)[2] < (y+32 +8)[3]) goto lt; if ((x+12)[3] > (y+32 +8)[3]) goto gt; if ((x+12)[3] < (y+32 +8)[3]) goto lt; if ((x)[0] > (y+32 +12)[0]) goto gt; if ((x)[0] < (y+32 +12)[0]) goto lt; if ((x)[1] > (y+32 +12)[0]) goto gt; if ((x)[1] < (y+32 +12)[0]) goto lt; if ((x)[2] > (y+32 +12)[0]) goto gt; if ((x)[2] < (y+32 +12)[0]) goto lt; if ((x)[3] > (y+32 +12)[0]) goto gt; if ((x)[3] < (y+32 +12)[0]) goto lt; if ((x)[0] > (y+32 +12)[1]) goto gt; if ((x)[0] < (y+32 +12)[1]) goto lt; if ((x)[1] > (y+32 +12)[1]) goto gt; if ((x)[1] < (y+32 +12)[1]) goto lt; if ((x)[2] > (y+32 +12)[1]) goto gt; if ((x)[2] < (y+32 +12)[1]) goto lt; if ((x)[3] > (y+32 +12)[1]) goto gt; if ((x)[3] < (y+32 +12)[1]) goto lt; if ((x)[0] > (y+32 +12)[2]) goto gt; if ((x)[0] < (y+32 +12)[2]) goto lt; if ((x)[1] > (y+32 +12)[2]) goto gt; if ((x)[1] < (y+32 +12)[2]) goto lt; if ((x)[2] > (y+32 +12)[2]) goto gt; if ((x)[2] < (y+32 +12)[2]) goto lt; if ((x)[3] > (y+32 +12)[2]) goto gt; if ((x)[3] < (y+32 +12)[2]) goto lt; if ((x)[0] > (y+32 +12)[3]) goto gt; if ((x)[0] < (y+32 +12)[3]) goto lt; if ((x)[1] > (y+32 +12)[3]) goto gt; if ((x)[1] < (y+32 +12)[3]) goto lt; if ((x)[2] > (y+32 +12)[3]) goto gt; if ((x)[2] < (y+32 +12)[3]) goto lt; if ((x)[3] > (y+32 +12)[3]) goto gt; if ((x)[3] < (y+32 +12)[3]) goto lt; if ((x+4)[0] > (y+32 +12)[0]) goto gt; if ((x+4)[0] < (y+32 +12)[0]) goto lt; if ((x+4)[1] > (y+32 +12)[0]) goto gt; if ((x+4)[1] < (y+32 +12)[0]) goto lt; if ((x+4)[2] > (y+32 +12)[0]) goto gt; if ((x+4)[2] < (y+32 +12)[0]) goto lt; if ((x+4)[3] > (y+32 +12)[0]) goto gt; if ((x+4)[3] < (y+32 +12)[0]) goto lt; if ((x+4)[0] > (y+32 +12)[1]) goto gt; if ((x+4)[0] < (y+32 +12)[1]) goto lt; if ((x+4)[1] > (y+32 +12)[1]) goto gt; if ((x+4)[1] < (y+32 +12)[1]) goto lt; if ((x+4)[2] > (y+32 +12)[1]) goto gt; if ((x+4)[2] < (y+32 +12)[1]) goto lt; if ((x+4)[3] > (y+32 +12)[1]) goto gt; if ((x+4)[3] < (y+32 +12)[1]) goto lt; if ((x+4)[0] > (y+32 +12)[2]) goto gt; if ((x+4)[0] < (y+32 +12)[2]) goto lt; if ((x+4)[1] > (y+32 +12)[2]) goto gt; if ((x+4)[1] < (y+32 +12)[2]) goto lt; if ((x+4)[2] > (y+32 +12)[2]) goto gt; if ((x+4)[2] < (y+32 +12)[2]) goto lt; if ((x+4)[3] > (y+32 +12)[2]) goto gt; if ((x+4)[3] < (y+32 +12)[2]) goto lt; if ((x+4)[0] > (y+32 +12)[3]) goto gt; if ((x+4)[0] < (y+32 +12)[3]) goto lt; if ((x+4)[1] > (y+32 +12)[3]) goto gt; if ((x+4)[1] < (y+32 +12)[3]) goto lt; if ((x+4)[2] > (y+32 +12)[3]) goto gt; if ((x+4)[2] < (y+32 +12)[3]) goto lt; if ((x+4)[3] > (y+32 +12)[3]) goto gt; if ((x+4)[3] < (y+32 +12)[3]) goto lt; if ((x+8)[0] > (y+32 +12)[0]) goto gt; if ((x+8)[0] < (y+32 +12)[0]) goto lt; if ((x+8)[1] > (y+32 +12)[0]) goto gt; if ((x+8)[1] < (y+32 +12)[0]) goto lt; if ((x+8)[2] > (y+32 +12)[0]) goto gt; if ((x+8)[2] < (y+32 +12)[0]) goto lt; if ((x+8)[3] > (y+32 +12)[0]) goto gt; if ((x+8)[3] < (y+32 +12)[0]) goto lt; if ((x+8)[0] > (y+32 +12)[1]) goto gt; if ((x+8)[0] < (y+32 +12)[1]) goto lt; if ((x+8)[1] > (y+32 +12)[1]) goto gt; if ((x+8)[1] < (y+32 +12)[1]) goto lt; if ((x+8)[2] > (y+32 +12)[1]) goto gt; if ((x+8)[2] < (y+32 +12)[1]) goto lt; if ((x+8)[3] > (y+32 +12)[1]) goto gt; if ((x+8)[3] < (y+32 +12)[1]) goto lt; if ((x+8)[0] > (y+32 +12)[2]) goto gt; if ((x+8)[0] < (y+32 +12)[2]) goto lt; if ((x+8)[1] > (y+32 +12)[2]) goto gt; if ((x+8)[1] < (y+32 +12)[2]) goto lt; if ((x+8)[2] > (y+32 +12)[2]) goto gt; if ((x+8)[2] < (y+32 +12)[2]) goto lt; if ((x+8)[3] > (y+32 +12)[2]) goto gt; if ((x+8)[3] < (y+32 +12)[2]) goto lt; if ((x+8)[0] > (y+32 +12)[3]) goto gt; if ((x+8)[0] < (y+32 +12)[3]) goto lt; if ((x+8)[1] > (y+32 +12)[3]) goto gt; if ((x+8)[1] < (y+32 +12)[3]) goto lt; if ((x+8)[2] > (y+32 +12)[3]) goto gt; if ((x+8)[2] < (y+32 +12)[3]) goto lt; if ((x+8)[3] > (y+32 +12)[3]) goto gt; if ((x+8)[3] < (y+32 +12)[3]) goto lt; if ((x+12)[0] > (y+32 +12)[0]) goto gt; if ((x+12)[0] < (y+32 +12)[0]) goto lt; if ((x+12)[1] > (y+32 +12)[0]) goto gt; if ((x+12)[1] < (y+32 +12)[0]) goto lt; if ((x+12)[2] > (y+32 +12)[0]) goto gt; if ((x+12)[2] < (y+32 +12)[0]) goto lt; if ((x+12)[3] > (y+32 +12)[0]) goto gt; if ((x+12)[3] < (y+32 +12)[0]) goto lt; if ((x+12)[0] > (y+32 +12)[1]) goto gt; if ((x+12)[0] < (y+32 +12)[1]) goto lt; if ((x+12)[1] > (y+32 +12)[1]) goto gt; if ((x+12)[1] < (y+32 +12)[1]) goto lt; if ((x+12)[2] > (y+32 +12)[1]) goto gt; if ((x+12)[2] < (y+32 +12)[1]) goto lt; if ((x+12)[3] > (y+32 +12)[1]) goto gt; if ((x+12)[3] < (y+32 +12)[1]) goto lt; if ((x+12)[0] > (y+32 +12)[2]) goto gt; if ((x+12)[0] < (y+32 +12)[2]) goto lt; if ((x+12)[1] > (y+32 +12)[2]) goto gt; if ((x+12)[1] < (y+32 +12)[2]) goto lt; if ((x+12)[2] > (y+32 +12)[2]) goto gt; if ((x+12)[2] < (y+32 +12)[2]) goto lt; if ((x+12)[3] > (y+32 +12)[2]) goto gt; if ((x+12)[3] < (y+32 +12)[2]) goto lt; if ((x+12)[0] > (y+32 +12)[3]) goto gt; if ((x+12)[0] < (y+32 +12)[3]) goto lt; if ((x+12)[1] > (y+32 +12)[3]) goto gt; if ((x+12)[1] < (y+32 +12)[3]) goto lt; if ((x+12)[2] > (y+32 +12)[3]) goto gt; if ((x+12)[2] < (y+32 +12)[3]) goto lt; if ((x+12)[3] > (y+32 +12)[3]) goto gt; if ((x+12)[3] < (y+32 +12)[3]) goto lt; if ((x+16)[0] > (y+32)[0]) goto gt; if ((x+16)[0] < (y+32)[0]) goto lt; if ((x+16)[1] > (y+32)[0]) goto gt; if ((x+16)[1] < (y+32)[0]) goto lt; if ((x+16)[2] > (y+32)[0]) goto gt; if ((x+16)[2] < (y+32)[0]) goto lt; if ((x+16)[3] > (y+32)[0]) goto gt; if ((x+16)[3] < (y+32)[0]) goto lt; if ((x+16)[0] > (y+32)[1]) goto gt; if ((x+16)[0] < (y+32)[1]) goto lt; if ((x+16)[1] > (y+32)[1]) goto gt; if ((x+16)[1] < (y+32)[1]) goto lt; if ((x+16)[2] > (y+32)[1]) goto gt; if ((x+16)[2] < (y+32)[1]) goto lt; if ((x+16)[3] > (y+32)[1]) goto gt; if ((x+16)[3] < (y+32)[1]) goto lt; if ((x+16)[0] > (y+32)[2]) goto gt; if ((x+16)[0] < (y+32)[2]) goto lt; if ((x+16)[1] > (y+32)[2]) goto gt; if ((x+16)[1] < (y+32)[2]) goto lt; if ((x+16)[2] > (y+32)[2]) goto gt; if ((x+16)[2] < (y+32)[2]) goto lt; if ((x+16)[3] > (y+32)[2]) goto gt; if ((x+16)[3] < (y+32)[2]) goto lt; if ((x+16)[0] > (y+32)[3]) goto gt; if ((x+16)[0] < (y+32)[3]) goto lt; if ((x+16)[1] > (y+32)[3]) goto gt; if ((x+16)[1] < (y+32)[3]) goto lt; if ((x+16)[2] > (y+32)[3]) goto gt; if ((x+16)[2] < (y+32)[3]) goto lt; if ((x+16)[3] > (y+32)[3]) goto gt; if ((x+16)[3] < (y+32)[3]) goto lt; if ((x+16 +4)[0] > (y+32)[0]) goto gt; if ((x+16 +4)[0] < (y+32)[0]) goto lt; if ((x+16 +4)[1] > (y+32)[0]) goto gt; if ((x+16 +4)[1] < (y+32)[0]) goto lt; if ((x+16 +4)[2] > (y+32)[0]) goto gt; if ((x+16 +4)[2] < (y+32)[0]) goto lt; if ((x+16 +4)[3] > (y+32)[0]) goto gt; if ((x+16 +4)[3] < (y+32)[0]) goto lt; if ((x+16 +4)[0] > (y+32)[1]) goto gt; if ((x+16 +4)[0] < (y+32)[1]) goto lt; if ((x+16 +4)[1] > (y+32)[1]) goto gt; if ((x+16 +4)[1] < (y+32)[1]) goto lt; if ((x+16 +4)[2] > (y+32)[1]) goto gt; if ((x+16 +4)[2] < (y+32)[1]) goto lt; if ((x+16 +4)[3] > (y+32)[1]) goto gt; if ((x+16 +4)[3] < (y+32)[1]) goto lt; if ((x+16 +4)[0] > (y+32)[2]) goto gt; if ((x+16 +4)[0] < (y+32)[2]) goto lt; if ((x+16 +4)[1] > (y+32)[2]) goto gt; if ((x+16 +4)[1] < (y+32)[2]) goto lt; if ((x+16 +4)[2] > (y+32)[2]) goto gt; if ((x+16 +4)[2] < (y+32)[2]) goto lt; if ((x+16 +4)[3] > (y+32)[2]) goto gt; if ((x+16 +4)[3] < (y+32)[2]) goto lt; if ((x+16 +4)[0] > (y+32)[3]) goto gt; if ((x+16 +4)[0] < (y+32)[3]) goto lt; if ((x+16 +4)[1] > (y+32)[3]) goto gt; if ((x+16 +4)[1] < (y+32)[3]) goto lt; if ((x+16 +4)[2] > (y+32)[3]) goto gt; if ((x+16 +4)[2] < (y+32)[3]) goto lt; if ((x+16 +4)[3] > (y+32)[3]) goto gt; if ((x+16 +4)[3] < (y+32)[3]) goto lt; if ((x+16 +8)[0] > (y+32)[0]) goto gt; if ((x+16 +8)[0] < (y+32)[0]) goto lt; if ((x+16 +8)[1] > (y+32)[0]) goto gt; if ((x+16 +8)[1] < (y+32)[0]) goto lt; if ((x+16 +8)[2] > (y+32)[0]) goto gt; if ((x+16 +8)[2] < (y+32)[0]) goto lt; if ((x+16 +8)[3] > (y+32)[0]) goto gt; if ((x+16 +8)[3] < (y+32)[0]) goto lt; if ((x+16 +8)[0] > (y+32)[1]) goto gt; if ((x+16 +8)[0] < (y+32)[1]) goto lt; if ((x+16 +8)[1] > (y+32)[1]) goto gt; if ((x+16 +8)[1] < (y+32)[1]) goto lt; if ((x+16 +8)[2] > (y+32)[1]) goto gt; if ((x+16 +8)[2] < (y+32)[1]) goto lt; if ((x+16 +8)[3] > (y+32)[1]) goto gt; if ((x+16 +8)[3] < (y+32)[1]) goto lt; if ((x+16 +8)[0] > (y+32)[2]) goto gt; if ((x+16 +8)[0] < (y+32)[2]) goto lt; if ((x+16 +8)[1] > (y+32)[2]) goto gt; if ((x+16 +8)[1] < (y+32)[2]) goto lt; if ((x+16 +8)[2] > (y+32)[2]) goto gt; if ((x+16 +8)[2] < (y+32)[2]) goto lt; if ((x+16 +8)[3] > (y+32)[2]) goto gt; if ((x+16 +8)[3] < (y+32)[2]) goto lt; if ((x+16 +8)[0] > (y+32)[3]) goto gt; if ((x+16 +8)[0] < (y+32)[3]) goto lt; if ((x+16 +8)[1] > (y+32)[3]) goto gt; if ((x+16 +8)[1] < (y+32)[3]) goto lt; if ((x+16 +8)[2] > (y+32)[3]) goto gt; if ((x+16 +8)[2] < (y+32)[3]) goto lt; if ((x+16 +8)[3] > (y+32)[3]) goto gt; if ((x+16 +8)[3] < (y+32)[3]) goto lt; if ((x+16 +12)[0] > (y+32)[0]) goto gt; if ((x+16 +12)[0] < (y+32)[0]) goto lt; if ((x+16 +12)[1] > (y+32)[0]) goto gt; if ((x+16 +12)[1] < (y+32)[0]) goto lt; if ((x+16 +12)[2] > (y+32)[0]) goto gt; if ((x+16 +12)[2] < (y+32)[0]) goto lt; if ((x+16 +12)[3] > (y+32)[0]) goto gt; if ((x+16 +12)[3] < (y+32)[0]) goto lt; if ((x+16 +12)[0] > (y+32)[1]) goto gt; if ((x+16 +12)[0] < (y+32)[1]) goto lt; if ((x+16 +12)[1] > (y+32)[1]) goto gt; if ((x+16 +12)[1] < (y+32)[1]) goto lt; if ((x+16 +12)[2] > (y+32)[1]) goto gt; if ((x+16 +12)[2] < (y+32)[1]) goto lt; if ((x+16 +12)[3] > (y+32)[1]) goto gt; if ((x+16 +12)[3] < (y+32)[1]) goto lt; if ((x+16 +12)[0] > (y+32)[2]) goto gt; if ((x+16 +12)[0] < (y+32)[2]) goto lt; if ((x+16 +12)[1] > (y+32)[2]) goto gt; if ((x+16 +12)[1] < (y+32)[2]) goto lt; if ((x+16 +12)[2] > (y+32)[2]) goto gt; if ((x+16 +12)[2] < (y+32)[2]) goto lt; if ((x+16 +12)[3] > (y+32)[2]) goto gt; if ((x+16 +12)[3] < (y+32)[2]) goto lt; if ((x+16 +12)[0] > (y+32)[3]) goto gt; if ((x+16 +12)[0] < (y+32)[3]) goto lt; if ((x+16 +12)[1] > (y+32)[3]) goto gt; if ((x+16 +12)[1] < (y+32)[3]) goto lt; if ((x+16 +12)[2] > (y+32)[3]) goto gt; if ((x+16 +12)[2] < (y+32)[3]) goto lt; if ((x+16 +12)[3] > (y+32)[3]) goto gt; if ((x+16 +12)[3] < (y+32)[3]) goto lt; if ((x+16)[0] > (y+32 +4)[0]) goto gt; if ((x+16)[0] < (y+32 +4)[0]) goto lt; if ((x+16)[1] > (y+32 +4)[0]) goto gt; if ((x+16)[1] < (y+32 +4)[0]) goto lt; if ((x+16)[2] > (y+32 +4)[0]) goto gt; if ((x+16)[2] < (y+32 +4)[0]) goto lt; if ((x+16)[3] > (y+32 +4)[0]) goto gt; if ((x+16)[3] < (y+32 +4)[0]) goto lt; if ((x+16)[0] > (y+32 +4)[1]) goto gt; if ((x+16)[0] < (y+32 +4)[1]) goto lt; if ((x+16)[1] > (y+32 +4)[1]) goto gt; if ((x+16)[1] < (y+32 +4)[1]) goto lt; if ((x+16)[2] > (y+32 +4)[1]) goto gt; if ((x+16)[2] < (y+32 +4)[1]) goto lt; if ((x+16)[3] > (y+32 +4)[1]) goto gt; if ((x+16)[3] < (y+32 +4)[1]) goto lt; if ((x+16)[0] > (y+32 +4)[2]) goto gt; if ((x+16)[0] < (y+32 +4)[2]) goto lt; if ((x+16)[1] > (y+32 +4)[2]) goto gt; if ((x+16)[1] < (y+32 +4)[2]) goto lt; if ((x+16)[2] > (y+32 +4)[2]) goto gt; if ((x+16)[2] < (y+32 +4)[2]) goto lt; if ((x+16)[3] > (y+32 +4)[2]) goto gt; if ((x+16)[3] < (y+32 +4)[2]) goto lt; if ((x+16)[0] > (y+32 +4)[3]) goto gt; if ((x+16)[0] < (y+32 +4)[3]) goto lt; if ((x+16)[1] > (y+32 +4)[3]) goto gt; if ((x+16)[1] < (y+32 +4)[3]) goto lt; if ((x+16)[2] > (y+32 +4)[3]) goto gt; if ((x+16)[2] < (y+32 +4)[3]) goto lt; if ((x+16)[3] > (y+32 +4)[3]) goto gt; if ((x+16)[3] < (y+32 +4)[3]) goto lt; if ((x+16 +4)[0] > (y+32 +4)[0]) goto gt; if ((x+16 +4)[0] < (y+32 +4)[0]) goto lt; if ((x+16 +4)[1] > (y+32 +4)[0]) goto gt; if ((x+16 +4)[1] < (y+32 +4)[0]) goto lt; if ((x+16 +4)[2] > (y+32 +4)[0]) goto gt; if ((x+16 +4)[2] < (y+32 +4)[0]) goto lt; if ((x+16 +4)[3] > (y+32 +4)[0]) goto gt; if ((x+16 +4)[3] < (y+32 +4)[0]) goto lt; if ((x+16 +4)[0] > (y+32 +4)[1]) goto gt; if ((x+16 +4)[0] < (y+32 +4)[1]) goto lt; if ((x+16 +4)[1] > (y+32 +4)[1]) goto gt; if ((x+16 +4)[1] < (y+32 +4)[1]) goto lt; if ((x+16 +4)[2] > (y+32 +4)[1]) goto gt; if ((x+16 +4)[2] < (y+32 +4)[1]) goto lt; if ((x+16 +4)[3] > (y+32 +4)[1]) goto gt; if ((x+16 +4)[3] < (y+32 +4)[1]) goto lt; if ((x+16 +4)[0] > (y+32 +4)[2]) goto gt; if ((x+16 +4)[0] < (y+32 +4)[2]) goto lt; if ((x+16 +4)[1] > (y+32 +4)[2]) goto gt; if ((x+16 +4)[1] < (y+32 +4)[2]) goto lt; if ((x+16 +4)[2] > (y+32 +4)[2]) goto gt; if ((x+16 +4)[2] < (y+32 +4)[2]) goto lt; if ((x+16 +4)[3] > (y+32 +4)[2]) goto gt; if ((x+16 +4)[3] < (y+32 +4)[2]) goto lt; if ((x+16 +4)[0] > (y+32 +4)[3]) goto gt; if ((x+16 +4)[0] < (y+32 +4)[3]) goto lt; if ((x+16 +4)[1] > (y+32 +4)[3]) goto gt; if ((x+16 +4)[1] < (y+32 +4)[3]) goto lt; if ((x+16 +4)[2] > (y+32 +4)[3]) goto gt; if ((x+16 +4)[2] < (y+32 +4)[3]) goto lt; if ((x+16 +4)[3] > (y+32 +4)[3]) goto gt; if ((x+16 +4)[3] < (y+32 +4)[3]) goto lt; if ((x+16 +8)[0] > (y+32 +4)[0]) goto gt; if ((x+16 +8)[0] < (y+32 +4)[0]) goto lt; if ((x+16 +8)[1] > (y+32 +4)[0]) goto gt; if ((x+16 +8)[1] < (y+32 +4)[0]) goto lt; if ((x+16 +8)[2] > (y+32 +4)[0]) goto gt; if ((x+16 +8)[2] < (y+32 +4)[0]) goto lt; if ((x+16 +8)[3] > (y+32 +4)[0]) goto gt; if ((x+16 +8)[3] < (y+32 +4)[0]) goto lt; if ((x+16 +8)[0] > (y+32 +4)[1]) goto gt; if ((x+16 +8)[0] < (y+32 +4)[1]) goto lt; if ((x+16 +8)[1] > (y+32 +4)[1]) goto gt; if ((x+16 +8)[1] < (y+32 +4)[1]) goto lt; if ((x+16 +8)[2] > (y+32 +4)[1]) goto gt; if ((x+16 +8)[2] < (y+32 +4)[1]) goto lt; if ((x+16 +8)[3] > (y+32 +4)[1]) goto gt; if ((x+16 +8)[3] < (y+32 +4)[1]) goto lt; if ((x+16 +8)[0] > (y+32 +4)[2]) goto gt; if ((x+16 +8)[0] < (y+32 +4)[2]) goto lt; if ((x+16 +8)[1] > (y+32 +4)[2]) goto gt; if ((x+16 +8)[1] < (y+32 +4)[2]) goto lt; if ((x+16 +8)[2] > (y+32 +4)[2]) goto gt; if ((x+16 +8)[2] < (y+32 +4)[2]) goto lt; if ((x+16 +8)[3] > (y+32 +4)[2]) goto gt; if ((x+16 +8)[3] < (y+32 +4)[2]) goto lt; if ((x+16 +8)[0] > (y+32 +4)[3]) goto gt; if ((x+16 +8)[0] < (y+32 +4)[3]) goto lt; if ((x+16 +8)[1] > (y+32 +4)[3]) goto gt; if ((x+16 +8)[1] < (y+32 +4)[3]) goto lt; if ((x+16 +8)[2] > (y+32 +4)[3]) goto gt; if ((x+16 +8)[2] < (y+32 +4)[3]) goto lt; if ((x+16 +8)[3] > (y+32 +4)[3]) goto gt; if ((x+16 +8)[3] < (y+32 +4)[3]) goto lt; if ((x+16 +12)[0] > (y+32 +4)[0]) goto gt; if ((x+16 +12)[0] < (y+32 +4)[0]) goto lt; if ((x+16 +12)[1] > (y+32 +4)[0]) goto gt; if ((x+16 +12)[1] < (y+32 +4)[0]) goto lt; if ((x+16 +12)[2] > (y+32 +4)[0]) goto gt; if ((x+16 +12)[2] < (y+32 +4)[0]) goto lt; if ((x+16 +12)[3] > (y+32 +4)[0]) goto gt; if ((x+16 +12)[3] < (y+32 +4)[0]) goto lt; if ((x+16 +12)[0] > (y+32 +4)[1]) goto gt; if ((x+16 +12)[0] < (y+32 +4)[1]) goto lt; if ((x+16 +12)[1] > (y+32 +4)[1]) goto gt; if ((x+16 +12)[1] < (y+32 +4)[1]) goto lt; if ((x+16 +12)[2] > (y+32 +4)[1]) goto gt; if ((x+16 +12)[2] < (y+32 +4)[1]) goto lt; if ((x+16 +12)[3] > (y+32 +4)[1]) goto gt; if ((x+16 +12)[3] < (y+32 +4)[1]) goto lt; if ((x+16 +12)[0] > (y+32 +4)[2]) goto gt; if ((x+16 +12)[0] < (y+32 +4)[2]) goto lt; if ((x+16 +12)[1] > (y+32 +4)[2]) goto gt; if ((x+16 +12)[1] < (y+32 +4)[2]) goto lt; if ((x+16 +12)[2] > (y+32 +4)[2]) goto gt; if ((x+16 +12)[2] < (y+32 +4)[2]) goto lt; if ((x+16 +12)[3] > (y+32 +4)[2]) goto gt; if ((x+16 +12)[3] < (y+32 +4)[2]) goto lt; if ((x+16 +12)[0] > (y+32 +4)[3]) goto gt; if ((x+16 +12)[0] < (y+32 +4)[3]) goto lt; if ((x+16 +12)[1] > (y+32 +4)[3]) goto gt; if ((x+16 +12)[1] < (y+32 +4)[3]) goto lt; if ((x+16 +12)[2] > (y+32 +4)[3]) goto gt; if ((x+16 +12)[2] < (y+32 +4)[3]) goto lt; if ((x+16 +12)[3] > (y+32 +4)[3]) goto gt; if ((x+16 +12)[3] < (y+32 +4)[3]) goto lt; if ((x+16)[0] > (y+32 +8)[0]) goto gt; if ((x+16)[0] < (y+32 +8)[0]) goto lt; if ((x+16)[1] > (y+32 +8)[0]) goto gt; if ((x+16)[1] < (y+32 +8)[0]) goto lt; if ((x+16)[2] > (y+32 +8)[0]) goto gt; if ((x+16)[2] < (y+32 +8)[0]) goto lt; if ((x+16)[3] > (y+32 +8)[0]) goto gt; if ((x+16)[3] < (y+32 +8)[0]) goto lt; if ((x+16)[0] > (y+32 +8)[1]) goto gt; if ((x+16)[0] < (y+32 +8)[1]) goto lt; if ((x+16)[1] > (y+32 +8)[1]) goto gt; if ((x+16)[1] < (y+32 +8)[1]) goto lt; if ((x+16)[2] > (y+32 +8)[1]) goto gt; if ((x+16)[2] < (y+32 +8)[1]) goto lt; if ((x+16)[3] > (y+32 +8)[1]) goto gt; if ((x+16)[3] < (y+32 +8)[1]) goto lt; if ((x+16)[0] > (y+32 +8)[2]) goto gt; if ((x+16)[0] < (y+32 +8)[2]) goto lt; if ((x+16)[1] > (y+32 +8)[2]) goto gt; if ((x+16)[1] < (y+32 +8)[2]) goto lt; if ((x+16)[2] > (y+32 +8)[2]) goto gt; if ((x+16)[2] < (y+32 +8)[2]) goto lt; if ((x+16)[3] > (y+32 +8)[2]) goto gt; if ((x+16)[3] < (y+32 +8)[2]) goto lt; if ((x+16)[0] > (y+32 +8)[3]) goto gt; if ((x+16)[0] < (y+32 +8)[3]) goto lt; if ((x+16)[1] > (y+32 +8)[3]) goto gt; if ((x+16)[1] < (y+32 +8)[3]) goto lt; if ((x+16)[2] > (y+32 +8)[3]) goto gt; if ((x+16)[2] < (y+32 +8)[3]) goto lt; if ((x+16)[3] > (y+32 +8)[3]) goto gt; if ((x+16)[3] < (y+32 +8)[3]) goto lt; if ((x+16 +4)[0] > (y+32 +8)[0]) goto gt; if ((x+16 +4)[0] < (y+32 +8)[0]) goto lt; if ((x+16 +4)[1] > (y+32 +8)[0]) goto gt; if ((x+16 +4)[1] < (y+32 +8)[0]) goto lt; if ((x+16 +4)[2] > (y+32 +8)[0]) goto gt; if ((x+16 +4)[2] < (y+32 +8)[0]) goto lt; if ((x+16 +4)[3] > (y+32 +8)[0]) goto gt; if ((x+16 +4)[3] < (y+32 +8)[0]) goto lt; if ((x+16 +4)[0] > (y+32 +8)[1]) goto gt; if ((x+16 +4)[0] < (y+32 +8)[1]) goto lt; if ((x+16 +4)[1] > (y+32 +8)[1]) goto gt; if ((x+16 +4)[1] < (y+32 +8)[1]) goto lt; if ((x+16 +4)[2] > (y+32 +8)[1]) goto gt; if ((x+16 +4)[2] < (y+32 +8)[1]) goto lt; if ((x+16 +4)[3] > (y+32 +8)[1]) goto gt; if ((x+16 +4)[3] < (y+32 +8)[1]) goto lt; if ((x+16 +4)[0] > (y+32 +8)[2]) goto gt; if ((x+16 +4)[0] < (y+32 +8)[2]) goto lt; if ((x+16 +4)[1] > (y+32 +8)[2]) goto gt; if ((x+16 +4)[1] < (y+32 +8)[2]) goto lt; if ((x+16 +4)[2] > (y+32 +8)[2]) goto gt; if ((x+16 +4)[2] < (y+32 +8)[2]) goto lt; if ((x+16 +4)[3] > (y+32 +8)[2]) goto gt; if ((x+16 +4)[3] < (y+32 +8)[2]) goto lt; if ((x+16 +4)[0] > (y+32 +8)[3]) goto gt; if ((x+16 +4)[0] < (y+32 +8)[3]) goto lt; if ((x+16 +4)[1] > (y+32 +8)[3]) goto gt; if ((x+16 +4)[1] < (y+32 +8)[3]) goto lt; if ((x+16 +4)[2] > (y+32 +8)[3]) goto gt; if ((x+16 +4)[2] < (y+32 +8)[3]) goto lt; if ((x+16 +4)[3] > (y+32 +8)[3]) goto gt; if ((x+16 +4)[3] < (y+32 +8)[3]) goto lt; if ((x+16 +8)[0] > (y+32 +8)[0]) goto gt; if ((x+16 +8)[0] < (y+32 +8)[0]) goto lt; if ((x+16 +8)[1] > (y+32 +8)[0]) goto gt; if ((x+16 +8)[1] < (y+32 +8)[0]) goto lt; if ((x+16 +8)[2] > (y+32 +8)[0]) goto gt; if ((x+16 +8)[2] < (y+32 +8)[0]) goto lt; if ((x+16 +8)[3] > (y+32 +8)[0]) goto gt; if ((x+16 +8)[3] < (y+32 +8)[0]) goto lt; if ((x+16 +8)[0] > (y+32 +8)[1]) goto gt; if ((x+16 +8)[0] < (y+32 +8)[1]) goto lt; if ((x+16 +8)[1] > (y+32 +8)[1]) goto gt; if ((x+16 +8)[1] < (y+32 +8)[1]) goto lt; if ((x+16 +8)[2] > (y+32 +8)[1]) goto gt; if ((x+16 +8)[2] < (y+32 +8)[1]) goto lt; if ((x+16 +8)[3] > (y+32 +8)[1]) goto gt; if ((x+16 +8)[3] < (y+32 +8)[1]) goto lt; if ((x+16 +8)[0] > (y+32 +8)[2]) goto gt; if ((x+16 +8)[0] < (y+32 +8)[2]) goto lt; if ((x+16 +8)[1] > (y+32 +8)[2]) goto gt; if ((x+16 +8)[1] < (y+32 +8)[2]) goto lt; if ((x+16 +8)[2] > (y+32 +8)[2]) goto gt; if ((x+16 +8)[2] < (y+32 +8)[2]) goto lt; if ((x+16 +8)[3] > (y+32 +8)[2]) goto gt; if ((x+16 +8)[3] < (y+32 +8)[2]) goto lt; if ((x+16 +8)[0] > (y+32 +8)[3]) goto gt; if ((x+16 +8)[0] < (y+32 +8)[3]) goto lt; if ((x+16 +8)[1] > (y+32 +8)[3]) goto gt; if ((x+16 +8)[1] < (y+32 +8)[3]) goto lt; if ((x+16 +8)[2] > (y+32 +8)[3]) goto gt; if ((x+16 +8)[2] < (y+32 +8)[3]) goto lt; if ((x+16 +8)[3] > (y+32 +8)[3]) goto gt; if ((x+16 +8)[3] < (y+32 +8)[3]) goto lt; if ((x+16 +12)[0] > (y+32 +8)[0]) goto gt; if ((x+16 +12)[0] < (y+32 +8)[0]) goto lt; if ((x+16 +12)[1] > (y+32 +8)[0]) goto gt; if ((x+16 +12)[1] < (y+32 +8)[0]) goto lt; if ((x+16 +12)[2] > (y+32 +8)[0]) goto gt; if ((x+16 +12)[2] < (y+32 +8)[0]) goto lt; if ((x+16 +12)[3] > (y+32 +8)[0]) goto gt; if ((x+16 +12)[3] < (y+32 +8)[0]) goto lt; if ((x+16 +12)[0] > (y+32 +8)[1]) goto gt; if ((x+16 +12)[0] < (y+32 +8)[1]) goto lt; if ((x+16 +12)[1] > (y+32 +8)[1]) goto gt; if ((x+16 +12)[1] < (y+32 +8)[1]) goto lt; if ((x+16 +12)[2] > (y+32 +8)[1]) goto gt; if ((x+16 +12)[2] < (y+32 +8)[1]) goto lt; if ((x+16 +12)[3] > (y+32 +8)[1]) goto gt; if ((x+16 +12)[3] < (y+32 +8)[1]) goto lt; if ((x+16 +12)[0] > (y+32 +8)[2]) goto gt; if ((x+16 +12)[0] < (y+32 +8)[2]) goto lt; if ((x+16 +12)[1] > (y+32 +8)[2]) goto gt; if ((x+16 +12)[1] < (y+32 +8)[2]) goto lt; if ((x+16 +12)[2] > (y+32 +8)[2]) goto gt; if ((x+16 +12)[2] < (y+32 +8)[2]) goto lt; if ((x+16 +12)[3] > (y+32 +8)[2]) goto gt; if ((x+16 +12)[3] < (y+32 +8)[2]) goto lt; if ((x+16 +12)[0] > (y+32 +8)[3]) goto gt; if ((x+16 +12)[0] < (y+32 +8)[3]) goto lt; if ((x+16 +12)[1] > (y+32 +8)[3]) goto gt; if ((x+16 +12)[1] < (y+32 +8)[3]) goto lt; if ((x+16 +12)[2] > (y+32 +8)[3]) goto gt; if ((x+16 +12)[2] < (y+32 +8)[3]) goto lt; if ((x+16 +12)[3] > (y+32 +8)[3]) goto gt; if ((x+16 +12)[3] < (y+32 +8)[3]) goto lt; if ((x+16)[0] > (y+32 +12)[0]) goto gt; if ((x+16)[0] < (y+32 +12)[0]) goto lt; if ((x+16)[1] > (y+32 +12)[0]) goto gt; if ((x+16)[1] < (y+32 +12)[0]) goto lt; if ((x+16)[2] > (y+32 +12)[0]) goto gt; if ((x+16)[2] < (y+32 +12)[0]) goto lt; if ((x+16)[3] > (y+32 +12)[0]) goto gt; if ((x+16)[3] < (y+32 +12)[0]) goto lt; if ((x+16)[0] > (y+32 +12)[1]) goto gt; if ((x+16)[0] < (y+32 +12)[1]) goto lt; if ((x+16)[1] > (y+32 +12)[1]) goto gt; if ((x+16)[1] < (y+32 +12)[1]) goto lt; if ((x+16)[2] > (y+32 +12)[1]) goto gt; if ((x+16)[2] < (y+32 +12)[1]) goto lt; if ((x+16)[3] > (y+32 +12)[1]) goto gt; if ((x+16)[3] < (y+32 +12)[1]) goto lt; if ((x+16)[0] > (y+32 +12)[2]) goto gt; if ((x+16)[0] < (y+32 +12)[2]) goto lt; if ((x+16)[1] > (y+32 +12)[2]) goto gt; if ((x+16)[1] < (y+32 +12)[2]) goto lt; if ((x+16)[2] > (y+32 +12)[2]) goto gt; if ((x+16)[2] < (y+32 +12)[2]) goto lt; if ((x+16)[3] > (y+32 +12)[2]) goto gt; if ((x+16)[3] < (y+32 +12)[2]) goto lt; if ((x+16)[0] > (y+32 +12)[3]) goto gt; if ((x+16)[0] < (y+32 +12)[3]) goto lt; if ((x+16)[1] > (y+32 +12)[3]) goto gt; if ((x+16)[1] < (y+32 +12)[3]) goto lt; if ((x+16)[2] > (y+32 +12)[3]) goto gt; if ((x+16)[2] < (y+32 +12)[3]) goto lt; if ((x+16)[3] > (y+32 +12)[3]) goto gt; if ((x+16)[3] < (y+32 +12)[3]) goto lt; if ((x+16 +4)[0] > (y+32 +12)[0]) goto gt; if ((x+16 +4)[0] < (y+32 +12)[0]) goto lt; if ((x+16 +4)[1] > (y+32 +12)[0]) goto gt; if ((x+16 +4)[1] < (y+32 +12)[0]) goto lt; if ((x+16 +4)[2] > (y+32 +12)[0]) goto gt; if ((x+16 +4)[2] < (y+32 +12)[0]) goto lt; if ((x+16 +4)[3] > (y+32 +12)[0]) goto gt; if ((x+16 +4)[3] < (y+32 +12)[0]) goto lt; if ((x+16 +4)[0] > (y+32 +12)[1]) goto gt; if ((x+16 +4)[0] < (y+32 +12)[1]) goto lt; if ((x+16 +4)[1] > (y+32 +12)[1]) goto gt; if ((x+16 +4)[1] < (y+32 +12)[1]) goto lt; if ((x+16 +4)[2] > (y+32 +12)[1]) goto gt; if ((x+16 +4)[2] < (y+32 +12)[1]) goto lt; if ((x+16 +4)[3] > (y+32 +12)[1]) goto gt; if ((x+16 +4)[3] < (y+32 +12)[1]) goto lt; if ((x+16 +4)[0] > (y+32 +12)[2]) goto gt; if ((x+16 +4)[0] < (y+32 +12)[2]) goto lt; if ((x+16 +4)[1] > (y+32 +12)[2]) goto gt; if ((x+16 +4)[1] < (y+32 +12)[2]) goto lt; if ((x+16 +4)[2] > (y+32 +12)[2]) goto gt; if ((x+16 +4)[2] < (y+32 +12)[2]) goto lt; if ((x+16 +4)[3] > (y+32 +12)[2]) goto gt; if ((x+16 +4)[3] < (y+32 +12)[2]) goto lt; if ((x+16 +4)[0] > (y+32 +12)[3]) goto gt; if ((x+16 +4)[0] < (y+32 +12)[3]) goto lt; if ((x+16 +4)[1] > (y+32 +12)[3]) goto gt; if ((x+16 +4)[1] < (y+32 +12)[3]) goto lt; if ((x+16 +4)[2] > (y+32 +12)[3]) goto gt; if ((x+16 +4)[2] < (y+32 +12)[3]) goto lt; if ((x+16 +4)[3] > (y+32 +12)[3]) goto gt; if ((x+16 +4)[3] < (y+32 +12)[3]) goto lt; if ((x+16 +8)[0] > (y+32 +12)[0]) goto gt; if ((x+16 +8)[0] < (y+32 +12)[0]) goto lt; if ((x+16 +8)[1] > (y+32 +12)[0]) goto gt; if ((x+16 +8)[1] < (y+32 +12)[0]) goto lt; if ((x+16 +8)[2] > (y+32 +12)[0]) goto gt; if ((x+16 +8)[2] < (y+32 +12)[0]) goto lt; if ((x+16 +8)[3] > (y+32 +12)[0]) goto gt; if ((x+16 +8)[3] < (y+32 +12)[0]) goto lt; if ((x+16 +8)[0] > (y+32 +12)[1]) goto gt; if ((x+16 +8)[0] < (y+32 +12)[1]) goto lt; if ((x+16 +8)[1] > (y+32 +12)[1]) goto gt; if ((x+16 +8)[1] < (y+32 +12)[1]) goto lt; if ((x+16 +8)[2] > (y+32 +12)[1]) goto gt; if ((x+16 +8)[2] < (y+32 +12)[1]) goto lt; if ((x+16 +8)[3] > (y+32 +12)[1]) goto gt; if ((x+16 +8)[3] < (y+32 +12)[1]) goto lt; if ((x+16 +8)[0] > (y+32 +12)[2]) goto gt; if ((x+16 +8)[0] < (y+32 +12)[2]) goto lt; if ((x+16 +8)[1] > (y+32 +12)[2]) goto gt; if ((x+16 +8)[1] < (y+32 +12)[2]) goto lt; if ((x+16 +8)[2] > (y+32 +12)[2]) goto gt; if ((x+16 +8)[2] < (y+32 +12)[2]) goto lt; if ((x+16 +8)[3] > (y+32 +12)[2]) goto gt; if ((x+16 +8)[3] < (y+32 +12)[2]) goto lt; if ((x+16 +8)[0] > (y+32 +12)[3]) goto gt; if ((x+16 +8)[0] < (y+32 +12)[3]) goto lt; if ((x+16 +8)[1] > (y+32 +12)[3]) goto gt; if ((x+16 +8)[1] < (y+32 +12)[3]) goto lt; if ((x+16 +8)[2] > (y+32 +12)[3]) goto gt; if ((x+16 +8)[2] < (y+32 +12)[3]) goto lt; if ((x+16 +8)[3] > (y+32 +12)[3]) goto gt; if ((x+16 +8)[3] < (y+32 +12)[3]) goto lt; if ((x+16 +12)[0] > (y+32 +12)[0]) goto gt; if ((x+16 +12)[0] < (y+32 +12)[0]) goto lt; if ((x+16 +12)[1] > (y+32 +12)[0]) goto gt; if ((x+16 +12)[1] < (y+32 +12)[0]) goto lt; if ((x+16 +12)[2] > (y+32 +12)[0]) goto gt; if ((x+16 +12)[2] < (y+32 +12)[0]) goto lt; if ((x+16 +12)[3] > (y+32 +12)[0]) goto gt; if ((x+16 +12)[3] < (y+32 +12)[0]) goto lt; if ((x+16 +12)[0] > (y+32 +12)[1]) goto gt; if ((x+16 +12)[0] < (y+32 +12)[1]) goto lt; if ((x+16 +12)[1] > (y+32 +12)[1]) goto gt; if ((x+16 +12)[1] < (y+32 +12)[1]) goto lt; if ((x+16 +12)[2] > (y+32 +12)[1]) goto gt; if ((x+16 +12)[2] < (y+32 +12)[1]) goto lt; if ((x+16 +12)[3] > (y+32 +12)[1]) goto gt; if ((x+16 +12)[3] < (y+32 +12)[1]) goto lt; if ((x+16 +12)[0] > (y+32 +12)[2]) goto gt; if ((x+16 +12)[0] < (y+32 +12)[2]) goto lt; if ((x+16 +12)[1] > (y+32 +12)[2]) goto gt; if ((x+16 +12)[1] < (y+32 +12)[2]) goto lt; if ((x+16 +12)[2] > (y+32 +12)[2]) goto gt; if ((x+16 +12)[2] < (y+32 +12)[2]) goto lt; if ((x+16 +12)[3] > (y+32 +12)[2]) goto gt; if ((x+16 +12)[3] < (y+32 +12)[2]) goto lt; if ((x+16 +12)[0] > (y+32 +12)[3]) goto gt; if ((x+16 +12)[0] < (y+32 +12)[3]) goto lt; if ((x+16 +12)[1] > (y+32 +12)[3]) goto gt; if ((x+16 +12)[1] < (y+32 +12)[3]) goto lt; if ((x+16 +12)[2] > (y+32 +12)[3]) goto gt; if ((x+16 +12)[2] < (y+32 +12)[3]) goto lt; if ((x+16 +12)[3] > (y+32 +12)[3]) goto gt; if ((x+16 +12)[3] < (y+32 +12)[3]) goto lt; if ((x+32)[0] > (y+32)[0]) goto gt; if ((x+32)[0] < (y+32)[0]) goto lt; if ((x+32)[1] > (y+32)[0]) goto gt; if ((x+32)[1] < (y+32)[0]) goto lt; if ((x+32)[2] > (y+32)[0]) goto gt; if ((x+32)[2] < (y+32)[0]) goto lt; if ((x+32)[3] > (y+32)[0]) goto gt; if ((x+32)[3] < (y+32)[0]) goto lt; if ((x+32)[0] > (y+32)[1]) goto gt; if ((x+32)[0] < (y+32)[1]) goto lt; if ((x+32)[1] > (y+32)[1]) goto gt; if ((x+32)[1] < (y+32)[1]) goto lt; if ((x+32)[2] > (y+32)[1]) goto gt; if ((x+32)[2] < (y+32)[1]) goto lt; if ((x+32)[3] > (y+32)[1]) goto gt; if ((x+32)[3] < (y+32)[1]) goto lt; if ((x+32)[0] > (y+32)[2]) goto gt; if ((x+32)[0] < (y+32)[2]) goto lt; if ((x+32)[1] > (y+32)[2]) goto gt; if ((x+32)[1] < (y+32)[2]) goto lt; if ((x+32)[2] > (y+32)[2]) goto gt; if ((x+32)[2] < (y+32)[2]) goto lt; if ((x+32)[3] > (y+32)[2]) goto gt; if ((x+32)[3] < (y+32)[2]) goto lt; if ((x+32)[0] > (y+32)[3]) goto gt; if ((x+32)[0] < (y+32)[3]) goto lt; if ((x+32)[1] > (y+32)[3]) goto gt; if ((x+32)[1] < (y+32)[3]) goto lt; if ((x+32)[2] > (y+32)[3]) goto gt; if ((x+32)[2] < (y+32)[3]) goto lt; if ((x+32)[3] > (y+32)[3]) goto gt; if ((x+32)[3] < (y+32)[3]) goto lt; if ((x+32 +4)[0] > (y+32)[0]) goto gt; if ((x+32 +4)[0] < (y+32)[0]) goto lt; if ((x+32 +4)[1] > (y+32)[0]) goto gt; if ((x+32 +4)[1] < (y+32)[0]) goto lt; if ((x+32 +4)[2] > (y+32)[0]) goto gt; if ((x+32 +4)[2] < (y+32)[0]) goto lt; if ((x+32 +4)[3] > (y+32)[0]) goto gt; if ((x+32 +4)[3] < (y+32)[0]) goto lt; if ((x+32 +4)[0] > (y+32)[1]) goto gt; if ((x+32 +4)[0] < (y+32)[1]) goto lt; if ((x+32 +4)[1] > (y+32)[1]) goto gt; if ((x+32 +4)[1] < (y+32)[1]) goto lt; if ((x+32 +4)[2] > (y+32)[1]) goto gt; if ((x+32 +4)[2] < (y+32)[1]) goto lt; if ((x+32 +4)[3] > (y+32)[1]) goto gt; if ((x+32 +4)[3] < (y+32)[1]) goto lt; if ((x+32 +4)[0] > (y+32)[2]) goto gt; if ((x+32 +4)[0] < (y+32)[2]) goto lt; if ((x+32 +4)[1] > (y+32)[2]) goto gt; if ((x+32 +4)[1] < (y+32)[2]) goto lt; if ((x+32 +4)[2] > (y+32)[2]) goto gt; if ((x+32 +4)[2] < (y+32)[2]) goto lt; if ((x+32 +4)[3] > (y+32)[2]) goto gt; if ((x+32 +4)[3] < (y+32)[2]) goto lt; if ((x+32 +4)[0] > (y+32)[3]) goto gt; if ((x+32 +4)[0] < (y+32)[3]) goto lt; if ((x+32 +4)[1] > (y+32)[3]) goto gt; if ((x+32 +4)[1] < (y+32)[3]) goto lt; if ((x+32 +4)[2] > (y+32)[3]) goto gt; if ((x+32 +4)[2] < (y+32)[3]) goto lt; if ((x+32 +4)[3] > (y+32)[3]) goto gt; if ((x+32 +4)[3] < (y+32)[3]) goto lt; if ((x+32 +8)[0] > (y+32)[0]) goto gt; if ((x+32 +8)[0] < (y+32)[0]) goto lt; if ((x+32 +8)[1] > (y+32)[0]) goto gt; if ((x+32 +8)[1] < (y+32)[0]) goto lt; if ((x+32 +8)[2] > (y+32)[0]) goto gt; if ((x+32 +8)[2] < (y+32)[0]) goto lt; if ((x+32 +8)[3] > (y+32)[0]) goto gt; if ((x+32 +8)[3] < (y+32)[0]) goto lt; if ((x+32 +8)[0] > (y+32)[1]) goto gt; if ((x+32 +8)[0] < (y+32)[1]) goto lt; if ((x+32 +8)[1] > (y+32)[1]) goto gt; if ((x+32 +8)[1] < (y+32)[1]) goto lt; if ((x+32 +8)[2] > (y+32)[1]) goto gt; if ((x+32 +8)[2] < (y+32)[1]) goto lt; if ((x+32 +8)[3] > (y+32)[1]) goto gt; if ((x+32 +8)[3] < (y+32)[1]) goto lt; if ((x+32 +8)[0] > (y+32)[2]) goto gt; if ((x+32 +8)[0] < (y+32)[2]) goto lt; if ((x+32 +8)[1] > (y+32)[2]) goto gt; if ((x+32 +8)[1] < (y+32)[2]) goto lt; if ((x+32 +8)[2] > (y+32)[2]) goto gt; if ((x+32 +8)[2] < (y+32)[2]) goto lt; if ((x+32 +8)[3] > (y+32)[2]) goto gt; if ((x+32 +8)[3] < (y+32)[2]) goto lt; if ((x+32 +8)[0] > (y+32)[3]) goto gt; if ((x+32 +8)[0] < (y+32)[3]) goto lt; if ((x+32 +8)[1] > (y+32)[3]) goto gt; if ((x+32 +8)[1] < (y+32)[3]) goto lt; if ((x+32 +8)[2] > (y+32)[3]) goto gt; if ((x+32 +8)[2] < (y+32)[3]) goto lt; if ((x+32 +8)[3] > (y+32)[3]) goto gt; if ((x+32 +8)[3] < (y+32)[3]) goto lt; if ((x+32 +12)[0] > (y+32)[0]) goto gt; if ((x+32 +12)[0] < (y+32)[0]) goto lt; if ((x+32 +12)[1] > (y+32)[0]) goto gt; if ((x+32 +12)[1] < (y+32)[0]) goto lt; if ((x+32 +12)[2] > (y+32)[0]) goto gt; if ((x+32 +12)[2] < (y+32)[0]) goto lt; if ((x+32 +12)[3] > (y+32)[0]) goto gt; if ((x+32 +12)[3] < (y+32)[0]) goto lt; if ((x+32 +12)[0] > (y+32)[1]) goto gt; if ((x+32 +12)[0] < (y+32)[1]) goto lt; if ((x+32 +12)[1] > (y+32)[1]) goto gt; if ((x+32 +12)[1] < (y+32)[1]) goto lt; if ((x+32 +12)[2] > (y+32)[1]) goto gt; if ((x+32 +12)[2] < (y+32)[1]) goto lt; if ((x+32 +12)[3] > (y+32)[1]) goto gt; if ((x+32 +12)[3] < (y+32)[1]) goto lt; if ((x+32 +12)[0] > (y+32)[2]) goto gt; if ((x+32 +12)[0] < (y+32)[2]) goto lt; if ((x+32 +12)[1] > (y+32)[2]) goto gt; if ((x+32 +12)[1] < (y+32)[2]) goto lt; if ((x+32 +12)[2] > (y+32)[2]) goto gt; if ((x+32 +12)[2] < (y+32)[2]) goto lt; if ((x+32 +12)[3] > (y+32)[2]) goto gt; if ((x+32 +12)[3] < (y+32)[2]) goto lt; if ((x+32 +12)[0] > (y+32)[3]) goto gt; if ((x+32 +12)[0] < (y+32)[3]) goto lt; if ((x+32 +12)[1] > (y+32)[3]) goto gt; if ((x+32 +12)[1] < (y+32)[3]) goto lt; if ((x+32 +12)[2] > (y+32)[3]) goto gt; if ((x+32 +12)[2] < (y+32)[3]) goto lt; if ((x+32 +12)[3] > (y+32)[3]) goto gt; if ((x+32 +12)[3] < (y+32)[3]) goto lt; if ((x+32)[0] > (y+32 +4)[0]) goto gt; if ((x+32)[0] < (y+32 +4)[0]) goto lt; if ((x+32)[1] > (y+32 +4)[0]) goto gt; if ((x+32)[1] < (y+32 +4)[0]) goto lt; if ((x+32)[2] > (y+32 +4)[0]) goto gt; if ((x+32)[2] < (y+32 +4)[0]) goto lt; if ((x+32)[3] > (y+32 +4)[0]) goto gt; if ((x+32)[3] < (y+32 +4)[0]) goto lt; if ((x+32)[0] > (y+32 +4)[1]) goto gt; if ((x+32)[0] < (y+32 +4)[1]) goto lt; if ((x+32)[1] > (y+32 +4)[1]) goto gt; if ((x+32)[1] < (y+32 +4)[1]) goto lt; if ((x+32)[2] > (y+32 +4)[1]) goto gt; if ((x+32)[2] < (y+32 +4)[1]) goto lt; if ((x+32)[3] > (y+32 +4)[1]) goto gt; if ((x+32)[3] < (y+32 +4)[1]) goto lt; if ((x+32)[0] > (y+32 +4)[2]) goto gt; if ((x+32)[0] < (y+32 +4)[2]) goto lt; if ((x+32)[1] > (y+32 +4)[2]) goto gt; if ((x+32)[1] < (y+32 +4)[2]) goto lt; if ((x+32)[2] > (y+32 +4)[2]) goto gt; if ((x+32)[2] < (y+32 +4)[2]) goto lt; if ((x+32)[3] > (y+32 +4)[2]) goto gt; if ((x+32)[3] < (y+32 +4)[2]) goto lt; if ((x+32)[0] > (y+32 +4)[3]) goto gt; if ((x+32)[0] < (y+32 +4)[3]) goto lt; if ((x+32)[1] > (y+32 +4)[3]) goto gt; if ((x+32)[1] < (y+32 +4)[3]) goto lt; if ((x+32)[2] > (y+32 +4)[3]) goto gt; if ((x+32)[2] < (y+32 +4)[3]) goto lt; if ((x+32)[3] > (y+32 +4)[3]) goto gt; if ((x+32)[3] < (y+32 +4)[3]) goto lt; if ((x+32 +4)[0] > (y+32 +4)[0]) goto gt; if ((x+32 +4)[0] < (y+32 +4)[0]) goto lt; if ((x+32 +4)[1] > (y+32 +4)[0]) goto gt; if ((x+32 +4)[1] < (y+32 +4)[0]) goto lt; if ((x+32 +4)[2] > (y+32 +4)[0]) goto gt; if ((x+32 +4)[2] < (y+32 +4)[0]) goto lt; if ((x+32 +4)[3] > (y+32 +4)[0]) goto gt; if ((x+32 +4)[3] < (y+32 +4)[0]) goto lt; if ((x+32 +4)[0] > (y+32 +4)[1]) goto gt; if ((x+32 +4)[0] < (y+32 +4)[1]) goto lt; if ((x+32 +4)[1] > (y+32 +4)[1]) goto gt; if ((x+32 +4)[1] < (y+32 +4)[1]) goto lt; if ((x+32 +4)[2] > (y+32 +4)[1]) goto gt; if ((x+32 +4)[2] < (y+32 +4)[1]) goto lt; if ((x+32 +4)[3] > (y+32 +4)[1]) goto gt; if ((x+32 +4)[3] < (y+32 +4)[1]) goto lt; if ((x+32 +4)[0] > (y+32 +4)[2]) goto gt; if ((x+32 +4)[0] < (y+32 +4)[2]) goto lt; if ((x+32 +4)[1] > (y+32 +4)[2]) goto gt; if ((x+32 +4)[1] < (y+32 +4)[2]) goto lt; if ((x+32 +4)[2] > (y+32 +4)[2]) goto gt; if ((x+32 +4)[2] < (y+32 +4)[2]) goto lt; if ((x+32 +4)[3] > (y+32 +4)[2]) goto gt; if ((x+32 +4)[3] < (y+32 +4)[2]) goto lt; if ((x+32 +4)[0] > (y+32 +4)[3]) goto gt; if ((x+32 +4)[0] < (y+32 +4)[3]) goto lt; if ((x+32 +4)[1] > (y+32 +4)[3]) goto gt; if ((x+32 +4)[1] < (y+32 +4)[3]) goto lt; if ((x+32 +4)[2] > (y+32 +4)[3]) goto gt; if ((x+32 +4)[2] < (y+32 +4)[3]) goto lt; if ((x+32 +4)[3] > (y+32 +4)[3]) goto gt; if ((x+32 +4)[3] < (y+32 +4)[3]) goto lt; if ((x+32 +8)[0] > (y+32 +4)[0]) goto gt; if ((x+32 +8)[0] < (y+32 +4)[0]) goto lt; if ((x+32 +8)[1] > (y+32 +4)[0]) goto gt; if ((x+32 +8)[1] < (y+32 +4)[0]) goto lt; if ((x+32 +8)[2] > (y+32 +4)[0]) goto gt; if ((x+32 +8)[2] < (y+32 +4)[0]) goto lt; if ((x+32 +8)[3] > (y+32 +4)[0]) goto gt; if ((x+32 +8)[3] < (y+32 +4)[0]) goto lt; if ((x+32 +8)[0] > (y+32 +4)[1]) goto gt; if ((x+32 +8)[0] < (y+32 +4)[1]) goto lt; if ((x+32 +8)[1] > (y+32 +4)[1]) goto gt; if ((x+32 +8)[1] < (y+32 +4)[1]) goto lt; if ((x+32 +8)[2] > (y+32 +4)[1]) goto gt; if ((x+32 +8)[2] < (y+32 +4)[1]) goto lt; if ((x+32 +8)[3] > (y+32 +4)[1]) goto gt; if ((x+32 +8)[3] < (y+32 +4)[1]) goto lt; if ((x+32 +8)[0] > (y+32 +4)[2]) goto gt; if ((x+32 +8)[0] < (y+32 +4)[2]) goto lt; if ((x+32 +8)[1] > (y+32 +4)[2]) goto gt; if ((x+32 +8)[1] < (y+32 +4)[2]) goto lt; if ((x+32 +8)[2] > (y+32 +4)[2]) goto gt; if ((x+32 +8)[2] < (y+32 +4)[2]) goto lt; if ((x+32 +8)[3] > (y+32 +4)[2]) goto gt; if ((x+32 +8)[3] < (y+32 +4)[2]) goto lt; if ((x+32 +8)[0] > (y+32 +4)[3]) goto gt; if ((x+32 +8)[0] < (y+32 +4)[3]) goto lt; if ((x+32 +8)[1] > (y+32 +4)[3]) goto gt; if ((x+32 +8)[1] < (y+32 +4)[3]) goto lt; if ((x+32 +8)[2] > (y+32 +4)[3]) goto gt; if ((x+32 +8)[2] < (y+32 +4)[3]) goto lt; if ((x+32 +8)[3] > (y+32 +4)[3]) goto gt; if ((x+32 +8)[3] < (y+32 +4)[3]) goto lt; if ((x+32 +12)[0] > (y+32 +4)[0]) goto gt; if ((x+32 +12)[0] < (y+32 +4)[0]) goto lt; if ((x+32 +12)[1] > (y+32 +4)[0]) goto gt; if ((x+32 +12)[1] < (y+32 +4)[0]) goto lt; if ((x+32 +12)[2] > (y+32 +4)[0]) goto gt; if ((x+32 +12)[2] < (y+32 +4)[0]) goto lt; if ((x+32 +12)[3] > (y+32 +4)[0]) goto gt; if ((x+32 +12)[3] < (y+32 +4)[0]) goto lt; if ((x+32 +12)[0] > (y+32 +4)[1]) goto gt; if ((x+32 +12)[0] < (y+32 +4)[1]) goto lt; if ((x+32 +12)[1] > (y+32 +4)[1]) goto gt; if ((x+32 +12)[1] < (y+32 +4)[1]) goto lt; if ((x+32 +12)[2] > (y+32 +4)[1]) goto gt; if ((x+32 +12)[2] < (y+32 +4)[1]) goto lt; if ((x+32 +12)[3] > (y+32 +4)[1]) goto gt; if ((x+32 +12)[3] < (y+32 +4)[1]) goto lt; if ((x+32 +12)[0] > (y+32 +4)[2]) goto gt; if ((x+32 +12)[0] < (y+32 +4)[2]) goto lt; if ((x+32 +12)[1] > (y+32 +4)[2]) goto gt; if ((x+32 +12)[1] < (y+32 +4)[2]) goto lt; if ((x+32 +12)[2] > (y+32 +4)[2]) goto gt; if ((x+32 +12)[2] < (y+32 +4)[2]) goto lt; if ((x+32 +12)[3] > (y+32 +4)[2]) goto gt; if ((x+32 +12)[3] < (y+32 +4)[2]) goto lt; if ((x+32 +12)[0] > (y+32 +4)[3]) goto gt; if ((x+32 +12)[0] < (y+32 +4)[3]) goto lt; if ((x+32 +12)[1] > (y+32 +4)[3]) goto gt; if ((x+32 +12)[1] < (y+32 +4)[3]) goto lt; if ((x+32 +12)[2] > (y+32 +4)[3]) goto gt; if ((x+32 +12)[2] < (y+32 +4)[3]) goto lt; if ((x+32 +12)[3] > (y+32 +4)[3]) goto gt; if ((x+32 +12)[3] < (y+32 +4)[3]) goto lt; if ((x+32)[0] > (y+32 +8)[0]) goto gt; if ((x+32)[0] < (y+32 +8)[0]) goto lt; if ((x+32)[1] > (y+32 +8)[0]) goto gt; if ((x+32)[1] < (y+32 +8)[0]) goto lt; if ((x+32)[2] > (y+32 +8)[0]) goto gt; if ((x+32)[2] < (y+32 +8)[0]) goto lt; if ((x+32)[3] > (y+32 +8)[0]) goto gt; if ((x+32)[3] < (y+32 +8)[0]) goto lt; if ((x+32)[0] > (y+32 +8)[1]) goto gt; if ((x+32)[0] < (y+32 +8)[1]) goto lt; if ((x+32)[1] > (y+32 +8)[1]) goto gt; if ((x+32)[1] < (y+32 +8)[1]) goto lt; if ((x+32)[2] > (y+32 +8)[1]) goto gt; if ((x+32)[2] < (y+32 +8)[1]) goto lt; if ((x+32)[3] > (y+32 +8)[1]) goto gt; if ((x+32)[3] < (y+32 +8)[1]) goto lt; if ((x+32)[0] > (y+32 +8)[2]) goto gt; if ((x+32)[0] < (y+32 +8)[2]) goto lt; if ((x+32)[1] > (y+32 +8)[2]) goto gt; if ((x+32)[1] < (y+32 +8)[2]) goto lt; if ((x+32)[2] > (y+32 +8)[2]) goto gt; if ((x+32)[2] < (y+32 +8)[2]) goto lt; if ((x+32)[3] > (y+32 +8)[2]) goto gt; if ((x+32)[3] < (y+32 +8)[2]) goto lt; if ((x+32)[0] > (y+32 +8)[3]) goto gt; if ((x+32)[0] < (y+32 +8)[3]) goto lt; if ((x+32)[1] > (y+32 +8)[3]) goto gt; if ((x+32)[1] < (y+32 +8)[3]) goto lt; if ((x+32)[2] > (y+32 +8)[3]) goto gt; if ((x+32)[2] < (y+32 +8)[3]) goto lt; if ((x+32)[3] > (y+32 +8)[3]) goto gt; if ((x+32)[3] < (y+32 +8)[3]) goto lt; if ((x+32 +4)[0] > (y+32 +8)[0]) goto gt; if ((x+32 +4)[0] < (y+32 +8)[0]) goto lt; if ((x+32 +4)[1] > (y+32 +8)[0]) goto gt; if ((x+32 +4)[1] < (y+32 +8)[0]) goto lt; if ((x+32 +4)[2] > (y+32 +8)[0]) goto gt; if ((x+32 +4)[2] < (y+32 +8)[0]) goto lt; if ((x+32 +4)[3] > (y+32 +8)[0]) goto gt; if ((x+32 +4)[3] < (y+32 +8)[0]) goto lt; if ((x+32 +4)[0] > (y+32 +8)[1]) goto gt; if ((x+32 +4)[0] < (y+32 +8)[1]) goto lt; if ((x+32 +4)[1] > (y+32 +8)[1]) goto gt; if ((x+32 +4)[1] < (y+32 +8)[1]) goto lt; if ((x+32 +4)[2] > (y+32 +8)[1]) goto gt; if ((x+32 +4)[2] < (y+32 +8)[1]) goto lt; if ((x+32 +4)[3] > (y+32 +8)[1]) goto gt; if ((x+32 +4)[3] < (y+32 +8)[1]) goto lt; if ((x+32 +4)[0] > (y+32 +8)[2]) goto gt; if ((x+32 +4)[0] < (y+32 +8)[2]) goto lt; if ((x+32 +4)[1] > (y+32 +8)[2]) goto gt; if ((x+32 +4)[1] < (y+32 +8)[2]) goto lt; if ((x+32 +4)[2] > (y+32 +8)[2]) goto gt; if ((x+32 +4)[2] < (y+32 +8)[2]) goto lt; if ((x+32 +4)[3] > (y+32 +8)[2]) goto gt; if ((x+32 +4)[3] < (y+32 +8)[2]) goto lt; if ((x+32 +4)[0] > (y+32 +8)[3]) goto gt; if ((x+32 +4)[0] < (y+32 +8)[3]) goto lt; if ((x+32 +4)[1] > (y+32 +8)[3]) goto gt; if ((x+32 +4)[1] < (y+32 +8)[3]) goto lt; if ((x+32 +4)[2] > (y+32 +8)[3]) goto gt; if ((x+32 +4)[2] < (y+32 +8)[3]) goto lt; if ((x+32 +4)[3] > (y+32 +8)[3]) goto gt; if ((x+32 +4)[3] < (y+32 +8)[3]) goto lt; if ((x+32 +8)[0] > (y+32 +8)[0]) goto gt; if ((x+32 +8)[0] < (y+32 +8)[0]) goto lt; if ((x+32 +8)[1] > (y+32 +8)[0]) goto gt; if ((x+32 +8)[1] < (y+32 +8)[0]) goto lt; if ((x+32 +8)[2] > (y+32 +8)[0]) goto gt; if ((x+32 +8)[2] < (y+32 +8)[0]) goto lt; if ((x+32 +8)[3] > (y+32 +8)[0]) goto gt; if ((x+32 +8)[3] < (y+32 +8)[0]) goto lt; if ((x+32 +8)[0] > (y+32 +8)[1]) goto gt; if ((x+32 +8)[0] < (y+32 +8)[1]) goto lt; if ((x+32 +8)[1] > (y+32 +8)[1]) goto gt; if ((x+32 +8)[1] < (y+32 +8)[1]) goto lt; if ((x+32 +8)[2] > (y+32 +8)[1]) goto gt; if ((x+32 +8)[2] < (y+32 +8)[1]) goto lt; if ((x+32 +8)[3] > (y+32 +8)[1]) goto gt; if ((x+32 +8)[3] < (y+32 +8)[1]) goto lt; if ((x+32 +8)[0] > (y+32 +8)[2]) goto gt; if ((x+32 +8)[0] < (y+32 +8)[2]) goto lt; if ((x+32 +8)[1] > (y+32 +8)[2]) goto gt; if ((x+32 +8)[1] < (y+32 +8)[2]) goto lt; if ((x+32 +8)[2] > (y+32 +8)[2]) goto gt; if ((x+32 +8)[2] < (y+32 +8)[2]) goto lt; if ((x+32 +8)[3] > (y+32 +8)[2]) goto gt; if ((x+32 +8)[3] < (y+32 +8)[2]) goto lt; if ((x+32 +8)[0] > (y+32 +8)[3]) goto gt; if ((x+32 +8)[0] < (y+32 +8)[3]) goto lt; if ((x+32 +8)[1] > (y+32 +8)[3]) goto gt; if ((x+32 +8)[1] < (y+32 +8)[3]) goto lt; if ((x+32 +8)[2] > (y+32 +8)[3]) goto gt; if ((x+32 +8)[2] < (y+32 +8)[3]) goto lt; if ((x+32 +8)[3] > (y+32 +8)[3]) goto gt; if ((x+32 +8)[3] < (y+32 +8)[3]) goto lt; if ((x+32 +12)[0] > (y+32 +8)[0]) goto gt; if ((x+32 +12)[0] < (y+32 +8)[0]) goto lt; if ((x+32 +12)[1] > (y+32 +8)[0]) goto gt; if ((x+32 +12)[1] < (y+32 +8)[0]) goto lt; if ((x+32 +12)[2] > (y+32 +8)[0]) goto gt; if ((x+32 +12)[2] < (y+32 +8)[0]) goto lt; if ((x+32 +12)[3] > (y+32 +8)[0]) goto gt; if ((x+32 +12)[3] < (y+32 +8)[0]) goto lt; if ((x+32 +12)[0] > (y+32 +8)[1]) goto gt; if ((x+32 +12)[0] < (y+32 +8)[1]) goto lt; if ((x+32 +12)[1] > (y+32 +8)[1]) goto gt; if ((x+32 +12)[1] < (y+32 +8)[1]) goto lt; if ((x+32 +12)[2] > (y+32 +8)[1]) goto gt; if ((x+32 +12)[2] < (y+32 +8)[1]) goto lt; if ((x+32 +12)[3] > (y+32 +8)[1]) goto gt; if ((x+32 +12)[3] < (y+32 +8)[1]) goto lt; if ((x+32 +12)[0] > (y+32 +8)[2]) goto gt; if ((x+32 +12)[0] < (y+32 +8)[2]) goto lt; if ((x+32 +12)[1] > (y+32 +8)[2]) goto gt; if ((x+32 +12)[1] < (y+32 +8)[2]) goto lt; if ((x+32 +12)[2] > (y+32 +8)[2]) goto gt; if ((x+32 +12)[2] < (y+32 +8)[2]) goto lt; if ((x+32 +12)[3] > (y+32 +8)[2]) goto gt; if ((x+32 +12)[3] < (y+32 +8)[2]) goto lt; if ((x+32 +12)[0] > (y+32 +8)[3]) goto gt; if ((x+32 +12)[0] < (y+32 +8)[3]) goto lt; if ((x+32 +12)[1] > (y+32 +8)[3]) goto gt; if ((x+32 +12)[1] < (y+32 +8)[3]) goto lt; if ((x+32 +12)[2] > (y+32 +8)[3]) goto gt; if ((x+32 +12)[2] < (y+32 +8)[3]) goto lt; if ((x+32 +12)[3] > (y+32 +8)[3]) goto gt; if ((x+32 +12)[3] < (y+32 +8)[3]) goto lt; if ((x+32)[0] > (y+32 +12)[0]) goto gt; if ((x+32)[0] < (y+32 +12)[0]) goto lt; if ((x+32)[1] > (y+32 +12)[0]) goto gt; if ((x+32)[1] < (y+32 +12)[0]) goto lt; if ((x+32)[2] > (y+32 +12)[0]) goto gt; if ((x+32)[2] < (y+32 +12)[0]) goto lt; if ((x+32)[3] > (y+32 +12)[0]) goto gt; if ((x+32)[3] < (y+32 +12)[0]) goto lt; if ((x+32)[0] > (y+32 +12)[1]) goto gt; if ((x+32)[0] < (y+32 +12)[1]) goto lt; if ((x+32)[1] > (y+32 +12)[1]) goto gt; if ((x+32)[1] < (y+32 +12)[1]) goto lt; if ((x+32)[2] > (y+32 +12)[1]) goto gt; if ((x+32)[2] < (y+32 +12)[1]) goto lt; if ((x+32)[3] > (y+32 +12)[1]) goto gt; if ((x+32)[3] < (y+32 +12)[1]) goto lt; if ((x+32)[0] > (y+32 +12)[2]) goto gt; if ((x+32)[0] < (y+32 +12)[2]) goto lt; if ((x+32)[1] > (y+32 +12)[2]) goto gt; if ((x+32)[1] < (y+32 +12)[2]) goto lt; if ((x+32)[2] > (y+32 +12)[2]) goto gt; if ((x+32)[2] < (y+32 +12)[2]) goto lt; if ((x+32)[3] > (y+32 +12)[2]) goto gt; if ((x+32)[3] < (y+32 +12)[2]) goto lt; if ((x+32)[0] > (y+32 +12)[3]) goto gt; if ((x+32)[0] < (y+32 +12)[3]) goto lt; if ((x+32)[1] > (y+32 +12)[3]) goto gt; if ((x+32)[1] < (y+32 +12)[3]) goto lt; if ((x+32)[2] > (y+32 +12)[3]) goto gt; if ((x+32)[2] < (y+32 +12)[3]) goto lt; if ((x+32)[3] > (y+32 +12)[3]) goto gt; if ((x+32)[3] < (y+32 +12)[3]) goto lt; if ((x+32 +4)[0] > (y+32 +12)[0]) goto gt; if ((x+32 +4)[0] < (y+32 +12)[0]) goto lt; if ((x+32 +4)[1] > (y+32 +12)[0]) goto gt; if ((x+32 +4)[1] < (y+32 +12)[0]) goto lt; if ((x+32 +4)[2] > (y+32 +12)[0]) goto gt; if ((x+32 +4)[2] < (y+32 +12)[0]) goto lt; if ((x+32 +4)[3] > (y+32 +12)[0]) goto gt; if ((x+32 +4)[3] < (y+32 +12)[0]) goto lt; if ((x+32 +4)[0] > (y+32 +12)[1]) goto gt; if ((x+32 +4)[0] < (y+32 +12)[1]) goto lt; if ((x+32 +4)[1] > (y+32 +12)[1]) goto gt; if ((x+32 +4)[1] < (y+32 +12)[1]) goto lt; if ((x+32 +4)[2] > (y+32 +12)[1]) goto gt; if ((x+32 +4)[2] < (y+32 +12)[1]) goto lt; if ((x+32 +4)[3] > (y+32 +12)[1]) goto gt; if ((x+32 +4)[3] < (y+32 +12)[1]) goto lt; if ((x+32 +4)[0] > (y+32 +12)[2]) goto gt; if ((x+32 +4)[0] < (y+32 +12)[2]) goto lt; if ((x+32 +4)[1] > (y+32 +12)[2]) goto gt; if ((x+32 +4)[1] < (y+32 +12)[2]) goto lt; if ((x+32 +4)[2] > (y+32 +12)[2]) goto gt; if ((x+32 +4)[2] < (y+32 +12)[2]) goto lt; if ((x+32 +4)[3] > (y+32 +12)[2]) goto gt; if ((x+32 +4)[3] < (y+32 +12)[2]) goto lt; if ((x+32 +4)[0] > (y+32 +12)[3]) goto gt; if ((x+32 +4)[0] < (y+32 +12)[3]) goto lt; if ((x+32 +4)[1] > (y+32 +12)[3]) goto gt; if ((x+32 +4)[1] < (y+32 +12)[3]) goto lt; if ((x+32 +4)[2] > (y+32 +12)[3]) goto gt; if ((x+32 +4)[2] < (y+32 +12)[3]) goto lt; if ((x+32 +4)[3] > (y+32 +12)[3]) goto gt; if ((x+32 +4)[3] < (y+32 +12)[3]) goto lt; if ((x+32 +8)[0] > (y+32 +12)[0]) goto gt; if ((x+32 +8)[0] < (y+32 +12)[0]) goto lt; if ((x+32 +8)[1] > (y+32 +12)[0]) goto gt; if ((x+32 +8)[1] < (y+32 +12)[0]) goto lt; if ((x+32 +8)[2] > (y+32 +12)[0]) goto gt; if ((x+32 +8)[2] < (y+32 +12)[0]) goto lt; if ((x+32 +8)[3] > (y+32 +12)[0]) goto gt; if ((x+32 +8)[3] < (y+32 +12)[0]) goto lt; if ((x+32 +8)[0] > (y+32 +12)[1]) goto gt; if ((x+32 +8)[0] < (y+32 +12)[1]) goto lt; if ((x+32 +8)[1] > (y+32 +12)[1]) goto gt; if ((x+32 +8)[1] < (y+32 +12)[1]) goto lt; if ((x+32 +8)[2] > (y+32 +12)[1]) goto gt; if ((x+32 +8)[2] < (y+32 +12)[1]) goto lt; if ((x+32 +8)[3] > (y+32 +12)[1]) goto gt; if ((x+32 +8)[3] < (y+32 +12)[1]) goto lt; if ((x+32 +8)[0] > (y+32 +12)[2]) goto gt; if ((x+32 +8)[0] < (y+32 +12)[2]) goto lt; if ((x+32 +8)[1] > (y+32 +12)[2]) goto gt; if ((x+32 +8)[1] < (y+32 +12)[2]) goto lt; if ((x+32 +8)[2] > (y+32 +12)[2]) goto gt; if ((x+32 +8)[2] < (y+32 +12)[2]) goto lt; if ((x+32 +8)[3] > (y+32 +12)[2]) goto gt; if ((x+32 +8)[3] < (y+32 +12)[2]) goto lt; if ((x+32 +8)[0] > (y+32 +12)[3]) goto gt; if ((x+32 +8)[0] < (y+32 +12)[3]) goto lt; if ((x+32 +8)[1] > (y+32 +12)[3]) goto gt; if ((x+32 +8)[1] < (y+32 +12)[3]) goto lt; if ((x+32 +8)[2] > (y+32 +12)[3]) goto gt; if ((x+32 +8)[2] < (y+32 +12)[3]) goto lt; if ((x+32 +8)[3] > (y+32 +12)[3]) goto gt; if ((x+32 +8)[3] < (y+32 +12)[3]) goto lt; if ((x+32 +12)[0] > (y+32 +12)[0]) goto gt; if ((x+32 +12)[0] < (y+32 +12)[0]) goto lt; if ((x+32 +12)[1] > (y+32 +12)[0]) goto gt; if ((x+32 +12)[1] < (y+32 +12)[0]) goto lt; if ((x+32 +12)[2] > (y+32 +12)[0]) goto gt; if ((x+32 +12)[2] < (y+32 +12)[0]) goto lt; if ((x+32 +12)[3] > (y+32 +12)[0]) goto gt; if ((x+32 +12)[3] < (y+32 +12)[0]) goto lt; if ((x+32 +12)[0] > (y+32 +12)[1]) goto gt; if ((x+32 +12)[0] < (y+32 +12)[1]) goto lt; if ((x+32 +12)[1] > (y+32 +12)[1]) goto gt; if ((x+32 +12)[1] < (y+32 +12)[1]) goto lt; if ((x+32 +12)[2] > (y+32 +12)[1]) goto gt; if ((x+32 +12)[2] < (y+32 +12)[1]) goto lt; if ((x+32 +12)[3] > (y+32 +12)[1]) goto gt; if ((x+32 +12)[3] < (y+32 +12)[1]) goto lt; if ((x+32 +12)[0] > (y+32 +12)[2]) goto gt; if ((x+32 +12)[0] < (y+32 +12)[2]) goto lt; if ((x+32 +12)[1] > (y+32 +12)[2]) goto gt; if ((x+32 +12)[1] < (y+32 +12)[2]) goto lt; if ((x+32 +12)[2] > (y+32 +12)[2]) goto gt; if ((x+32 +12)[2] < (y+32 +12)[2]) goto lt; if ((x+32 +12)[3] > (y+32 +12)[2]) goto gt; if ((x+32 +12)[3] < (y+32 +12)[2]) goto lt; if ((x+32 +12)[0] > (y+32 +12)[3]) goto gt; if ((x+32 +12)[0] < (y+32 +12)[3]) goto lt; if ((x+32 +12)[1] > (y+32 +12)[3]) goto gt; if ((x+32 +12)[1] < (y+32 +12)[3]) goto lt; if ((x+32 +12)[2] > (y+32 +12)[3]) goto gt; if ((x+32 +12)[2] < (y+32 +12)[3]) goto lt; if ((x+32 +12)[3] > (y+32 +12)[3]) goto gt; if ((x+32 +12)[3] < (y+32 +12)[3]) goto lt; if ((x+48)[0] > (y+32)[0]) goto gt; if ((x+48)[0] < (y+32)[0]) goto lt; if ((x+48)[1] > (y+32)[0]) goto gt; if ((x+48)[1] < (y+32)[0]) goto lt; if ((x+48)[2] > (y+32)[0]) goto gt; if ((x+48)[2] < (y+32)[0]) goto lt; if ((x+48)[3] > (y+32)[0]) goto gt; if ((x+48)[3] < (y+32)[0]) goto lt; if ((x+48)[0] > (y+32)[1]) goto gt; if ((x+48)[0] < (y+32)[1]) goto lt; if ((x+48)[1] > (y+32)[1]) goto gt; if ((x+48)[1] < (y+32)[1]) goto lt; if ((x+48)[2] > (y+32)[1]) goto gt; if ((x+48)[2] < (y+32)[1]) goto lt; if ((x+48)[3] > (y+32)[1]) goto gt; if ((x+48)[3] < (y+32)[1]) goto lt; if ((x+48)[0] > (y+32)[2]) goto gt; if ((x+48)[0] < (y+32)[2]) goto lt; if ((x+48)[1] > (y+32)[2]) goto gt; if ((x+48)[1] < (y+32)[2]) goto lt; if ((x+48)[2] > (y+32)[2]) goto gt; if ((x+48)[2] < (y+32)[2]) goto lt; if ((x+48)[3] > (y+32)[2]) goto gt; if ((x+48)[3] < (y+32)[2]) goto lt; if ((x+48)[0] > (y+32)[3]) goto gt; if ((x+48)[0] < (y+32)[3]) goto lt; if ((x+48)[1] > (y+32)[3]) goto gt; if ((x+48)[1] < (y+32)[3]) goto lt; if ((x+48)[2] > (y+32)[3]) goto gt; if ((x+48)[2] < (y+32)[3]) goto lt; if ((x+48)[3] > (y+32)[3]) goto gt; if ((x+48)[3] < (y+32)[3]) goto lt; if ((x+48 +4)[0] > (y+32)[0]) goto gt; if ((x+48 +4)[0] < (y+32)[0]) goto lt; if ((x+48 +4)[1] > (y+32)[0]) goto gt; if ((x+48 +4)[1] < (y+32)[0]) goto lt; if ((x+48 +4)[2] > (y+32)[0]) goto gt; if ((x+48 +4)[2] < (y+32)[0]) goto lt; if ((x+48 +4)[3] > (y+32)[0]) goto gt; if ((x+48 +4)[3] < (y+32)[0]) goto lt; if ((x+48 +4)[0] > (y+32)[1]) goto gt; if ((x+48 +4)[0] < (y+32)[1]) goto lt; if ((x+48 +4)[1] > (y+32)[1]) goto gt; if ((x+48 +4)[1] < (y+32)[1]) goto lt; if ((x+48 +4)[2] > (y+32)[1]) goto gt; if ((x+48 +4)[2] < (y+32)[1]) goto lt; if ((x+48 +4)[3] > (y+32)[1]) goto gt; if ((x+48 +4)[3] < (y+32)[1]) goto lt; if ((x+48 +4)[0] > (y+32)[2]) goto gt; if ((x+48 +4)[0] < (y+32)[2]) goto lt; if ((x+48 +4)[1] > (y+32)[2]) goto gt; if ((x+48 +4)[1] < (y+32)[2]) goto lt; if ((x+48 +4)[2] > (y+32)[2]) goto gt; if ((x+48 +4)[2] < (y+32)[2]) goto lt; if ((x+48 +4)[3] > (y+32)[2]) goto gt; if ((x+48 +4)[3] < (y+32)[2]) goto lt; if ((x+48 +4)[0] > (y+32)[3]) goto gt; if ((x+48 +4)[0] < (y+32)[3]) goto lt; if ((x+48 +4)[1] > (y+32)[3]) goto gt; if ((x+48 +4)[1] < (y+32)[3]) goto lt; if ((x+48 +4)[2] > (y+32)[3]) goto gt; if ((x+48 +4)[2] < (y+32)[3]) goto lt; if ((x+48 +4)[3] > (y+32)[3]) goto gt; if ((x+48 +4)[3] < (y+32)[3]) goto lt; if ((x+48 +8)[0] > (y+32)[0]) goto gt; if ((x+48 +8)[0] < (y+32)[0]) goto lt; if ((x+48 +8)[1] > (y+32)[0]) goto gt; if ((x+48 +8)[1] < (y+32)[0]) goto lt; if ((x+48 +8)[2] > (y+32)[0]) goto gt; if ((x+48 +8)[2] < (y+32)[0]) goto lt; if ((x+48 +8)[3] > (y+32)[0]) goto gt; if ((x+48 +8)[3] < (y+32)[0]) goto lt; if ((x+48 +8)[0] > (y+32)[1]) goto gt; if ((x+48 +8)[0] < (y+32)[1]) goto lt; if ((x+48 +8)[1] > (y+32)[1]) goto gt; if ((x+48 +8)[1] < (y+32)[1]) goto lt; if ((x+48 +8)[2] > (y+32)[1]) goto gt; if ((x+48 +8)[2] < (y+32)[1]) goto lt; if ((x+48 +8)[3] > (y+32)[1]) goto gt; if ((x+48 +8)[3] < (y+32)[1]) goto lt; if ((x+48 +8)[0] > (y+32)[2]) goto gt; if ((x+48 +8)[0] < (y+32)[2]) goto lt; if ((x+48 +8)[1] > (y+32)[2]) goto gt; if ((x+48 +8)[1] < (y+32)[2]) goto lt; if ((x+48 +8)[2] > (y+32)[2]) goto gt; if ((x+48 +8)[2] < (y+32)[2]) goto lt; if ((x+48 +8)[3] > (y+32)[2]) goto gt; if ((x+48 +8)[3] < (y+32)[2]) goto lt; if ((x+48 +8)[0] > (y+32)[3]) goto gt; if ((x+48 +8)[0] < (y+32)[3]) goto lt; if ((x+48 +8)[1] > (y+32)[3]) goto gt; if ((x+48 +8)[1] < (y+32)[3]) goto lt; if ((x+48 +8)[2] > (y+32)[3]) goto gt; if ((x+48 +8)[2] < (y+32)[3]) goto lt; if ((x+48 +8)[3] > (y+32)[3]) goto gt; if ((x+48 +8)[3] < (y+32)[3]) goto lt; if ((x+48 +12)[0] > (y+32)[0]) goto gt; if ((x+48 +12)[0] < (y+32)[0]) goto lt; if ((x+48 +12)[1] > (y+32)[0]) goto gt; if ((x+48 +12)[1] < (y+32)[0]) goto lt; if ((x+48 +12)[2] > (y+32)[0]) goto gt; if ((x+48 +12)[2] < (y+32)[0]) goto lt; if ((x+48 +12)[3] > (y+32)[0]) goto gt; if ((x+48 +12)[3] < (y+32)[0]) goto lt; if ((x+48 +12)[0] > (y+32)[1]) goto gt; if ((x+48 +12)[0] < (y+32)[1]) goto lt; if ((x+48 +12)[1] > (y+32)[1]) goto gt; if ((x+48 +12)[1] < (y+32)[1]) goto lt; if ((x+48 +12)[2] > (y+32)[1]) goto gt; if ((x+48 +12)[2] < (y+32)[1]) goto lt; if ((x+48 +12)[3] > (y+32)[1]) goto gt; if ((x+48 +12)[3] < (y+32)[1]) goto lt; if ((x+48 +12)[0] > (y+32)[2]) goto gt; if ((x+48 +12)[0] < (y+32)[2]) goto lt; if ((x+48 +12)[1] > (y+32)[2]) goto gt; if ((x+48 +12)[1] < (y+32)[2]) goto lt; if ((x+48 +12)[2] > (y+32)[2]) goto gt; if ((x+48 +12)[2] < (y+32)[2]) goto lt; if ((x+48 +12)[3] > (y+32)[2]) goto gt; if ((x+48 +12)[3] < (y+32)[2]) goto lt; if ((x+48 +12)[0] > (y+32)[3]) goto gt; if ((x+48 +12)[0] < (y+32)[3]) goto lt; if ((x+48 +12)[1] > (y+32)[3]) goto gt; if ((x+48 +12)[1] < (y+32)[3]) goto lt; if ((x+48 +12)[2] > (y+32)[3]) goto gt; if ((x+48 +12)[2] < (y+32)[3]) goto lt; if ((x+48 +12)[3] > (y+32)[3]) goto gt; if ((x+48 +12)[3] < (y+32)[3]) goto lt; if ((x+48)[0] > (y+32 +4)[0]) goto gt; if ((x+48)[0] < (y+32 +4)[0]) goto lt; if ((x+48)[1] > (y+32 +4)[0]) goto gt; if ((x+48)[1] < (y+32 +4)[0]) goto lt; if ((x+48)[2] > (y+32 +4)[0]) goto gt; if ((x+48)[2] < (y+32 +4)[0]) goto lt; if ((x+48)[3] > (y+32 +4)[0]) goto gt; if ((x+48)[3] < (y+32 +4)[0]) goto lt; if ((x+48)[0] > (y+32 +4)[1]) goto gt; if ((x+48)[0] < (y+32 +4)[1]) goto lt; if ((x+48)[1] > (y+32 +4)[1]) goto gt; if ((x+48)[1] < (y+32 +4)[1]) goto lt; if ((x+48)[2] > (y+32 +4)[1]) goto gt; if ((x+48)[2] < (y+32 +4)[1]) goto lt; if ((x+48)[3] > (y+32 +4)[1]) goto gt; if ((x+48)[3] < (y+32 +4)[1]) goto lt; if ((x+48)[0] > (y+32 +4)[2]) goto gt; if ((x+48)[0] < (y+32 +4)[2]) goto lt; if ((x+48)[1] > (y+32 +4)[2]) goto gt; if ((x+48)[1] < (y+32 +4)[2]) goto lt; if ((x+48)[2] > (y+32 +4)[2]) goto gt; if ((x+48)[2] < (y+32 +4)[2]) goto lt; if ((x+48)[3] > (y+32 +4)[2]) goto gt; if ((x+48)[3] < (y+32 +4)[2]) goto lt; if ((x+48)[0] > (y+32 +4)[3]) goto gt; if ((x+48)[0] < (y+32 +4)[3]) goto lt; if ((x+48)[1] > (y+32 +4)[3]) goto gt; if ((x+48)[1] < (y+32 +4)[3]) goto lt; if ((x+48)[2] > (y+32 +4)[3]) goto gt; if ((x+48)[2] < (y+32 +4)[3]) goto lt; if ((x+48)[3] > (y+32 +4)[3]) goto gt; if ((x+48)[3] < (y+32 +4)[3]) goto lt; if ((x+48 +4)[0] > (y+32 +4)[0]) goto gt; if ((x+48 +4)[0] < (y+32 +4)[0]) goto lt; if ((x+48 +4)[1] > (y+32 +4)[0]) goto gt; if ((x+48 +4)[1] < (y+32 +4)[0]) goto lt; if ((x+48 +4)[2] > (y+32 +4)[0]) goto gt; if ((x+48 +4)[2] < (y+32 +4)[0]) goto lt; if ((x+48 +4)[3] > (y+32 +4)[0]) goto gt; if ((x+48 +4)[3] < (y+32 +4)[0]) goto lt; if ((x+48 +4)[0] > (y+32 +4)[1]) goto gt; if ((x+48 +4)[0] < (y+32 +4)[1]) goto lt; if ((x+48 +4)[1] > (y+32 +4)[1]) goto gt; if ((x+48 +4)[1] < (y+32 +4)[1]) goto lt; if ((x+48 +4)[2] > (y+32 +4)[1]) goto gt; if ((x+48 +4)[2] < (y+32 +4)[1]) goto lt; if ((x+48 +4)[3] > (y+32 +4)[1]) goto gt; if ((x+48 +4)[3] < (y+32 +4)[1]) goto lt; if ((x+48 +4)[0] > (y+32 +4)[2]) goto gt; if ((x+48 +4)[0] < (y+32 +4)[2]) goto lt; if ((x+48 +4)[1] > (y+32 +4)[2]) goto gt; if ((x+48 +4)[1] < (y+32 +4)[2]) goto lt; if ((x+48 +4)[2] > (y+32 +4)[2]) goto gt; if ((x+48 +4)[2] < (y+32 +4)[2]) goto lt; if ((x+48 +4)[3] > (y+32 +4)[2]) goto gt; if ((x+48 +4)[3] < (y+32 +4)[2]) goto lt; if ((x+48 +4)[0] > (y+32 +4)[3]) goto gt; if ((x+48 +4)[0] < (y+32 +4)[3]) goto lt; if ((x+48 +4)[1] > (y+32 +4)[3]) goto gt; if ((x+48 +4)[1] < (y+32 +4)[3]) goto lt; if ((x+48 +4)[2] > (y+32 +4)[3]) goto gt; if ((x+48 +4)[2] < (y+32 +4)[3]) goto lt; if ((x+48 +4)[3] > (y+32 +4)[3]) goto gt; if ((x+48 +4)[3] < (y+32 +4)[3]) goto lt; if ((x+48 +8)[0] > (y+32 +4)[0]) goto gt; if ((x+48 +8)[0] < (y+32 +4)[0]) goto lt; if ((x+48 +8)[1] > (y+32 +4)[0]) goto gt; if ((x+48 +8)[1] < (y+32 +4)[0]) goto lt; if ((x+48 +8)[2] > (y+32 +4)[0]) goto gt; if ((x+48 +8)[2] < (y+32 +4)[0]) goto lt; if ((x+48 +8)[3] > (y+32 +4)[0]) goto gt; if ((x+48 +8)[3] < (y+32 +4)[0]) goto lt; if ((x+48 +8)[0] > (y+32 +4)[1]) goto gt; if ((x+48 +8)[0] < (y+32 +4)[1]) goto lt; if ((x+48 +8)[1] > (y+32 +4)[1]) goto gt; if ((x+48 +8)[1] < (y+32 +4)[1]) goto lt; if ((x+48 +8)[2] > (y+32 +4)[1]) goto gt; if ((x+48 +8)[2] < (y+32 +4)[1]) goto lt; if ((x+48 +8)[3] > (y+32 +4)[1]) goto gt; if ((x+48 +8)[3] < (y+32 +4)[1]) goto lt; if ((x+48 +8)[0] > (y+32 +4)[2]) goto gt; if ((x+48 +8)[0] < (y+32 +4)[2]) goto lt; if ((x+48 +8)[1] > (y+32 +4)[2]) goto gt; if ((x+48 +8)[1] < (y+32 +4)[2]) goto lt; if ((x+48 +8)[2] > (y+32 +4)[2]) goto gt; if ((x+48 +8)[2] < (y+32 +4)[2]) goto lt; if ((x+48 +8)[3] > (y+32 +4)[2]) goto gt; if ((x+48 +8)[3] < (y+32 +4)[2]) goto lt; if ((x+48 +8)[0] > (y+32 +4)[3]) goto gt; if ((x+48 +8)[0] < (y+32 +4)[3]) goto lt; if ((x+48 +8)[1] > (y+32 +4)[3]) goto gt; if ((x+48 +8)[1] < (y+32 +4)[3]) goto lt; if ((x+48 +8)[2] > (y+32 +4)[3]) goto gt; if ((x+48 +8)[2] < (y+32 +4)[3]) goto lt; if ((x+48 +8)[3] > (y+32 +4)[3]) goto gt; if ((x+48 +8)[3] < (y+32 +4)[3]) goto lt; if ((x+48 +12)[0] > (y+32 +4)[0]) goto gt; if ((x+48 +12)[0] < (y+32 +4)[0]) goto lt; if ((x+48 +12)[1] > (y+32 +4)[0]) goto gt; if ((x+48 +12)[1] < (y+32 +4)[0]) goto lt; if ((x+48 +12)[2] > (y+32 +4)[0]) goto gt; if ((x+48 +12)[2] < (y+32 +4)[0]) goto lt; if ((x+48 +12)[3] > (y+32 +4)[0]) goto gt; if ((x+48 +12)[3] < (y+32 +4)[0]) goto lt; if ((x+48 +12)[0] > (y+32 +4)[1]) goto gt; if ((x+48 +12)[0] < (y+32 +4)[1]) goto lt; if ((x+48 +12)[1] > (y+32 +4)[1]) goto gt; if ((x+48 +12)[1] < (y+32 +4)[1]) goto lt; if ((x+48 +12)[2] > (y+32 +4)[1]) goto gt; if ((x+48 +12)[2] < (y+32 +4)[1]) goto lt; if ((x+48 +12)[3] > (y+32 +4)[1]) goto gt; if ((x+48 +12)[3] < (y+32 +4)[1]) goto lt; if ((x+48 +12)[0] > (y+32 +4)[2]) goto gt; if ((x+48 +12)[0] < (y+32 +4)[2]) goto lt; if ((x+48 +12)[1] > (y+32 +4)[2]) goto gt; if ((x+48 +12)[1] < (y+32 +4)[2]) goto lt; if ((x+48 +12)[2] > (y+32 +4)[2]) goto gt; if ((x+48 +12)[2] < (y+32 +4)[2]) goto lt; if ((x+48 +12)[3] > (y+32 +4)[2]) goto gt; if ((x+48 +12)[3] < (y+32 +4)[2]) goto lt; if ((x+48 +12)[0] > (y+32 +4)[3]) goto gt; if ((x+48 +12)[0] < (y+32 +4)[3]) goto lt; if ((x+48 +12)[1] > (y+32 +4)[3]) goto gt; if ((x+48 +12)[1] < (y+32 +4)[3]) goto lt; if ((x+48 +12)[2] > (y+32 +4)[3]) goto gt; if ((x+48 +12)[2] < (y+32 +4)[3]) goto lt; if ((x+48 +12)[3] > (y+32 +4)[3]) goto gt; if ((x+48 +12)[3] < (y+32 +4)[3]) goto lt; if ((x+48)[0] > (y+32 +8)[0]) goto gt; if ((x+48)[0] < (y+32 +8)[0]) goto lt; if ((x+48)[1] > (y+32 +8)[0]) goto gt; if ((x+48)[1] < (y+32 +8)[0]) goto lt; if ((x+48)[2] > (y+32 +8)[0]) goto gt; if ((x+48)[2] < (y+32 +8)[0]) goto lt; if ((x+48)[3] > (y+32 +8)[0]) goto gt; if ((x+48)[3] < (y+32 +8)[0]) goto lt; if ((x+48)[0] > (y+32 +8)[1]) goto gt; if ((x+48)[0] < (y+32 +8)[1]) goto lt; if ((x+48)[1] > (y+32 +8)[1]) goto gt; if ((x+48)[1] < (y+32 +8)[1]) goto lt; if ((x+48)[2] > (y+32 +8)[1]) goto gt; if ((x+48)[2] < (y+32 +8)[1]) goto lt; if ((x+48)[3] > (y+32 +8)[1]) goto gt; if ((x+48)[3] < (y+32 +8)[1]) goto lt; if ((x+48)[0] > (y+32 +8)[2]) goto gt; if ((x+48)[0] < (y+32 +8)[2]) goto lt; if ((x+48)[1] > (y+32 +8)[2]) goto gt; if ((x+48)[1] < (y+32 +8)[2]) goto lt; if ((x+48)[2] > (y+32 +8)[2]) goto gt; if ((x+48)[2] < (y+32 +8)[2]) goto lt; if ((x+48)[3] > (y+32 +8)[2]) goto gt; if ((x+48)[3] < (y+32 +8)[2]) goto lt; if ((x+48)[0] > (y+32 +8)[3]) goto gt; if ((x+48)[0] < (y+32 +8)[3]) goto lt; if ((x+48)[1] > (y+32 +8)[3]) goto gt; if ((x+48)[1] < (y+32 +8)[3]) goto lt; if ((x+48)[2] > (y+32 +8)[3]) goto gt; if ((x+48)[2] < (y+32 +8)[3]) goto lt; if ((x+48)[3] > (y+32 +8)[3]) goto gt; if ((x+48)[3] < (y+32 +8)[3]) goto lt; if ((x+48 +4)[0] > (y+32 +8)[0]) goto gt; if ((x+48 +4)[0] < (y+32 +8)[0]) goto lt; if ((x+48 +4)[1] > (y+32 +8)[0]) goto gt; if ((x+48 +4)[1] < (y+32 +8)[0]) goto lt; if ((x+48 +4)[2] > (y+32 +8)[0]) goto gt; if ((x+48 +4)[2] < (y+32 +8)[0]) goto lt; if ((x+48 +4)[3] > (y+32 +8)[0]) goto gt; if ((x+48 +4)[3] < (y+32 +8)[0]) goto lt; if ((x+48 +4)[0] > (y+32 +8)[1]) goto gt; if ((x+48 +4)[0] < (y+32 +8)[1]) goto lt; if ((x+48 +4)[1] > (y+32 +8)[1]) goto gt; if ((x+48 +4)[1] < (y+32 +8)[1]) goto lt; if ((x+48 +4)[2] > (y+32 +8)[1]) goto gt; if ((x+48 +4)[2] < (y+32 +8)[1]) goto lt; if ((x+48 +4)[3] > (y+32 +8)[1]) goto gt; if ((x+48 +4)[3] < (y+32 +8)[1]) goto lt; if ((x+48 +4)[0] > (y+32 +8)[2]) goto gt; if ((x+48 +4)[0] < (y+32 +8)[2]) goto lt; if ((x+48 +4)[1] > (y+32 +8)[2]) goto gt; if ((x+48 +4)[1] < (y+32 +8)[2]) goto lt; if ((x+48 +4)[2] > (y+32 +8)[2]) goto gt; if ((x+48 +4)[2] < (y+32 +8)[2]) goto lt; if ((x+48 +4)[3] > (y+32 +8)[2]) goto gt; if ((x+48 +4)[3] < (y+32 +8)[2]) goto lt; if ((x+48 +4)[0] > (y+32 +8)[3]) goto gt; if ((x+48 +4)[0] < (y+32 +8)[3]) goto lt; if ((x+48 +4)[1] > (y+32 +8)[3]) goto gt; if ((x+48 +4)[1] < (y+32 +8)[3]) goto lt; if ((x+48 +4)[2] > (y+32 +8)[3]) goto gt; if ((x+48 +4)[2] < (y+32 +8)[3]) goto lt; if ((x+48 +4)[3] > (y+32 +8)[3]) goto gt; if ((x+48 +4)[3] < (y+32 +8)[3]) goto lt; if ((x+48 +8)[0] > (y+32 +8)[0]) goto gt; if ((x+48 +8)[0] < (y+32 +8)[0]) goto lt; if ((x+48 +8)[1] > (y+32 +8)[0]) goto gt; if ((x+48 +8)[1] < (y+32 +8)[0]) goto lt; if ((x+48 +8)[2] > (y+32 +8)[0]) goto gt; if ((x+48 +8)[2] < (y+32 +8)[0]) goto lt; if ((x+48 +8)[3] > (y+32 +8)[0]) goto gt; if ((x+48 +8)[3] < (y+32 +8)[0]) goto lt; if ((x+48 +8)[0] > (y+32 +8)[1]) goto gt; if ((x+48 +8)[0] < (y+32 +8)[1]) goto lt; if ((x+48 +8)[1] > (y+32 +8)[1]) goto gt; if ((x+48 +8)[1] < (y+32 +8)[1]) goto lt; if ((x+48 +8)[2] > (y+32 +8)[1]) goto gt; if ((x+48 +8)[2] < (y+32 +8)[1]) goto lt; if ((x+48 +8)[3] > (y+32 +8)[1]) goto gt; if ((x+48 +8)[3] < (y+32 +8)[1]) goto lt; if ((x+48 +8)[0] > (y+32 +8)[2]) goto gt; if ((x+48 +8)[0] < (y+32 +8)[2]) goto lt; if ((x+48 +8)[1] > (y+32 +8)[2]) goto gt; if ((x+48 +8)[1] < (y+32 +8)[2]) goto lt; if ((x+48 +8)[2] > (y+32 +8)[2]) goto gt; if ((x+48 +8)[2] < (y+32 +8)[2]) goto lt; if ((x+48 +8)[3] > (y+32 +8)[2]) goto gt; if ((x+48 +8)[3] < (y+32 +8)[2]) goto lt; if ((x+48 +8)[0] > (y+32 +8)[3]) goto gt; if ((x+48 +8)[0] < (y+32 +8)[3]) goto lt; if ((x+48 +8)[1] > (y+32 +8)[3]) goto gt; if ((x+48 +8)[1] < (y+32 +8)[3]) goto lt; if ((x+48 +8)[2] > (y+32 +8)[3]) goto gt; if ((x+48 +8)[2] < (y+32 +8)[3]) goto lt; if ((x+48 +8)[3] > (y+32 +8)[3]) goto gt; if ((x+48 +8)[3] < (y+32 +8)[3]) goto lt; if ((x+48 +12)[0] > (y+32 +8)[0]) goto gt; if ((x+48 +12)[0] < (y+32 +8)[0]) goto lt; if ((x+48 +12)[1] > (y+32 +8)[0]) goto gt; if ((x+48 +12)[1] < (y+32 +8)[0]) goto lt; if ((x+48 +12)[2] > (y+32 +8)[0]) goto gt; if ((x+48 +12)[2] < (y+32 +8)[0]) goto lt; if ((x+48 +12)[3] > (y+32 +8)[0]) goto gt; if ((x+48 +12)[3] < (y+32 +8)[0]) goto lt; if ((x+48 +12)[0] > (y+32 +8)[1]) goto gt; if ((x+48 +12)[0] < (y+32 +8)[1]) goto lt; if ((x+48 +12)[1] > (y+32 +8)[1]) goto gt; if ((x+48 +12)[1] < (y+32 +8)[1]) goto lt; if ((x+48 +12)[2] > (y+32 +8)[1]) goto gt; if ((x+48 +12)[2] < (y+32 +8)[1]) goto lt; if ((x+48 +12)[3] > (y+32 +8)[1]) goto gt; if ((x+48 +12)[3] < (y+32 +8)[1]) goto lt; if ((x+48 +12)[0] > (y+32 +8)[2]) goto gt; if ((x+48 +12)[0] < (y+32 +8)[2]) goto lt; if ((x+48 +12)[1] > (y+32 +8)[2]) goto gt; if ((x+48 +12)[1] < (y+32 +8)[2]) goto lt; if ((x+48 +12)[2] > (y+32 +8)[2]) goto gt; if ((x+48 +12)[2] < (y+32 +8)[2]) goto lt; if ((x+48 +12)[3] > (y+32 +8)[2]) goto gt; if ((x+48 +12)[3] < (y+32 +8)[2]) goto lt; if ((x+48 +12)[0] > (y+32 +8)[3]) goto gt; if ((x+48 +12)[0] < (y+32 +8)[3]) goto lt; if ((x+48 +12)[1] > (y+32 +8)[3]) goto gt; if ((x+48 +12)[1] < (y+32 +8)[3]) goto lt; if ((x+48 +12)[2] > (y+32 +8)[3]) goto gt; if ((x+48 +12)[2] < (y+32 +8)[3]) goto lt; if ((x+48 +12)[3] > (y+32 +8)[3]) goto gt; if ((x+48 +12)[3] < (y+32 +8)[3]) goto lt; if ((x+48)[0] > (y+32 +12)[0]) goto gt; if ((x+48)[0] < (y+32 +12)[0]) goto lt; if ((x+48)[1] > (y+32 +12)[0]) goto gt; if ((x+48)[1] < (y+32 +12)[0]) goto lt; if ((x+48)[2] > (y+32 +12)[0]) goto gt; if ((x+48)[2] < (y+32 +12)[0]) goto lt; if ((x+48)[3] > (y+32 +12)[0]) goto gt; if ((x+48)[3] < (y+32 +12)[0]) goto lt; if ((x+48)[0] > (y+32 +12)[1]) goto gt; if ((x+48)[0] < (y+32 +12)[1]) goto lt; if ((x+48)[1] > (y+32 +12)[1]) goto gt; if ((x+48)[1] < (y+32 +12)[1]) goto lt; if ((x+48)[2] > (y+32 +12)[1]) goto gt; if ((x+48)[2] < (y+32 +12)[1]) goto lt; if ((x+48)[3] > (y+32 +12)[1]) goto gt; if ((x+48)[3] < (y+32 +12)[1]) goto lt; if ((x+48)[0] > (y+32 +12)[2]) goto gt; if ((x+48)[0] < (y+32 +12)[2]) goto lt; if ((x+48)[1] > (y+32 +12)[2]) goto gt; if ((x+48)[1] < (y+32 +12)[2]) goto lt; if ((x+48)[2] > (y+32 +12)[2]) goto gt; if ((x+48)[2] < (y+32 +12)[2]) goto lt; if ((x+48)[3] > (y+32 +12)[2]) goto gt; if ((x+48)[3] < (y+32 +12)[2]) goto lt; if ((x+48)[0] > (y+32 +12)[3]) goto gt; if ((x+48)[0] < (y+32 +12)[3]) goto lt; if ((x+48)[1] > (y+32 +12)[3]) goto gt; if ((x+48)[1] < (y+32 +12)[3]) goto lt; if ((x+48)[2] > (y+32 +12)[3]) goto gt; if ((x+48)[2] < (y+32 +12)[3]) goto lt; if ((x+48)[3] > (y+32 +12)[3]) goto gt; if ((x+48)[3] < (y+32 +12)[3]) goto lt; if ((x+48 +4)[0] > (y+32 +12)[0]) goto gt; if ((x+48 +4)[0] < (y+32 +12)[0]) goto lt; if ((x+48 +4)[1] > (y+32 +12)[0]) goto gt; if ((x+48 +4)[1] < (y+32 +12)[0]) goto lt; if ((x+48 +4)[2] > (y+32 +12)[0]) goto gt; if ((x+48 +4)[2] < (y+32 +12)[0]) goto lt; if ((x+48 +4)[3] > (y+32 +12)[0]) goto gt; if ((x+48 +4)[3] < (y+32 +12)[0]) goto lt; if ((x+48 +4)[0] > (y+32 +12)[1]) goto gt; if ((x+48 +4)[0] < (y+32 +12)[1]) goto lt; if ((x+48 +4)[1] > (y+32 +12)[1]) goto gt; if ((x+48 +4)[1] < (y+32 +12)[1]) goto lt; if ((x+48 +4)[2] > (y+32 +12)[1]) goto gt; if ((x+48 +4)[2] < (y+32 +12)[1]) goto lt; if ((x+48 +4)[3] > (y+32 +12)[1]) goto gt; if ((x+48 +4)[3] < (y+32 +12)[1]) goto lt; if ((x+48 +4)[0] > (y+32 +12)[2]) goto gt; if ((x+48 +4)[0] < (y+32 +12)[2]) goto lt; if ((x+48 +4)[1] > (y+32 +12)[2]) goto gt; if ((x+48 +4)[1] < (y+32 +12)[2]) goto lt; if ((x+48 +4)[2] > (y+32 +12)[2]) goto gt; if ((x+48 +4)[2] < (y+32 +12)[2]) goto lt; if ((x+48 +4)[3] > (y+32 +12)[2]) goto gt; if ((x+48 +4)[3] < (y+32 +12)[2]) goto lt; if ((x+48 +4)[0] > (y+32 +12)[3]) goto gt; if ((x+48 +4)[0] < (y+32 +12)[3]) goto lt; if ((x+48 +4)[1] > (y+32 +12)[3]) goto gt; if ((x+48 +4)[1] < (y+32 +12)[3]) goto lt; if ((x+48 +4)[2] > (y+32 +12)[3]) goto gt; if ((x+48 +4)[2] < (y+32 +12)[3]) goto lt; if ((x+48 +4)[3] > (y+32 +12)[3]) goto gt; if ((x+48 +4)[3] < (y+32 +12)[3]) goto lt; if ((x+48 +8)[0] > (y+32 +12)[0]) goto gt; if ((x+48 +8)[0] < (y+32 +12)[0]) goto lt; if ((x+48 +8)[1] > (y+32 +12)[0]) goto gt; if ((x+48 +8)[1] < (y+32 +12)[0]) goto lt; if ((x+48 +8)[2] > (y+32 +12)[0]) goto gt; if ((x+48 +8)[2] < (y+32 +12)[0]) goto lt; if ((x+48 +8)[3] > (y+32 +12)[0]) goto gt; if ((x+48 +8)[3] < (y+32 +12)[0]) goto lt; if ((x+48 +8)[0] > (y+32 +12)[1]) goto gt; if ((x+48 +8)[0] < (y+32 +12)[1]) goto lt; if ((x+48 +8)[1] > (y+32 +12)[1]) goto gt; if ((x+48 +8)[1] < (y+32 +12)[1]) goto lt; if ((x+48 +8)[2] > (y+32 +12)[1]) goto gt; if ((x+48 +8)[2] < (y+32 +12)[1]) goto lt; if ((x+48 +8)[3] > (y+32 +12)[1]) goto gt; if ((x+48 +8)[3] < (y+32 +12)[1]) goto lt; if ((x+48 +8)[0] > (y+32 +12)[2]) goto gt; if ((x+48 +8)[0] < (y+32 +12)[2]) goto lt; if ((x+48 +8)[1] > (y+32 +12)[2]) goto gt; if ((x+48 +8)[1] < (y+32 +12)[2]) goto lt; if ((x+48 +8)[2] > (y+32 +12)[2]) goto gt; if ((x+48 +8)[2] < (y+32 +12)[2]) goto lt; if ((x+48 +8)[3] > (y+32 +12)[2]) goto gt; if ((x+48 +8)[3] < (y+32 +12)[2]) goto lt; if ((x+48 +8)[0] > (y+32 +12)[3]) goto gt; if ((x+48 +8)[0] < (y+32 +12)[3]) goto lt; if ((x+48 +8)[1] > (y+32 +12)[3]) goto gt; if ((x+48 +8)[1] < (y+32 +12)[3]) goto lt; if ((x+48 +8)[2] > (y+32 +12)[3]) goto gt; if ((x+48 +8)[2] < (y+32 +12)[3]) goto lt; if ((x+48 +8)[3] > (y+32 +12)[3]) goto gt; if ((x+48 +8)[3] < (y+32 +12)[3]) goto lt; if ((x+48 +12)[0] > (y+32 +12)[0]) goto gt; if ((x+48 +12)[0] < (y+32 +12)[0]) goto lt; if ((x+48 +12)[1] > (y+32 +12)[0]) goto gt; if ((x+48 +12)[1] < (y+32 +12)[0]) goto lt; if ((x+48 +12)[2] > (y+32 +12)[0]) goto gt; if ((x+48 +12)[2] < (y+32 +12)[0]) goto lt; if ((x+48 +12)[3] > (y+32 +12)[0]) goto gt; if ((x+48 +12)[3] < (y+32 +12)[0]) goto lt; if ((x+48 +12)[0] > (y+32 +12)[1]) goto gt; if ((x+48 +12)[0] < (y+32 +12)[1]) goto lt; if ((x+48 +12)[1] > (y+32 +12)[1]) goto gt; if ((x+48 +12)[1] < (y+32 +12)[1]) goto lt; if ((x+48 +12)[2] > (y+32 +12)[1]) goto gt; if ((x+48 +12)[2] < (y+32 +12)[1]) goto lt; if ((x+48 +12)[3] > (y+32 +12)[1]) goto gt; if ((x+48 +12)[3] < (y+32 +12)[1]) goto lt; if ((x+48 +12)[0] > (y+32 +12)[2]) goto gt; if ((x+48 +12)[0] < (y+32 +12)[2]) goto lt; if ((x+48 +12)[1] > (y+32 +12)[2]) goto gt; if ((x+48 +12)[1] < (y+32 +12)[2]) goto lt; if ((x+48 +12)[2] > (y+32 +12)[2]) goto gt; if ((x+48 +12)[2] < (y+32 +12)[2]) goto lt; if ((x+48 +12)[3] > (y+32 +12)[2]) goto gt; if ((x+48 +12)[3] < (y+32 +12)[2]) goto lt; if ((x+48 +12)[0] > (y+32 +12)[3]) goto gt; if ((x+48 +12)[0] < (y+32 +12)[3]) goto lt; if ((x+48 +12)[1] > (y+32 +12)[3]) goto gt; if ((x+48 +12)[1] < (y+32 +12)[3]) goto lt; if ((x+48 +12)[2] > (y+32 +12)[3]) goto gt; if ((x+48 +12)[2] < (y+32 +12)[3]) goto lt; if ((x+48 +12)[3] > (y+32 +12)[3]) goto gt; if ((x+48 +12)[3] < (y+32 +12)[3]) goto lt; if ((x)[0] > (y+48)[0]) goto gt; if ((x)[0] < (y+48)[0]) goto lt; if ((x)[1] > (y+48)[0]) goto gt; if ((x)[1] < (y+48)[0]) goto lt; if ((x)[2] > (y+48)[0]) goto gt; if ((x)[2] < (y+48)[0]) goto lt; if ((x)[3] > (y+48)[0]) goto gt; if ((x)[3] < (y+48)[0]) goto lt; if ((x)[0] > (y+48)[1]) goto gt; if ((x)[0] < (y+48)[1]) goto lt; if ((x)[1] > (y+48)[1]) goto gt; if ((x)[1] < (y+48)[1]) goto lt; if ((x)[2] > (y+48)[1]) goto gt; if ((x)[2] < (y+48)[1]) goto lt; if ((x)[3] > (y+48)[1]) goto gt; if ((x)[3] < (y+48)[1]) goto lt; if ((x)[0] > (y+48)[2]) goto gt; if ((x)[0] < (y+48)[2]) goto lt; if ((x)[1] > (y+48)[2]) goto gt; if ((x)[1] < (y+48)[2]) goto lt; if ((x)[2] > (y+48)[2]) goto gt; if ((x)[2] < (y+48)[2]) goto lt; if ((x)[3] > (y+48)[2]) goto gt; if ((x)[3] < (y+48)[2]) goto lt; if ((x)[0] > (y+48)[3]) goto gt; if ((x)[0] < (y+48)[3]) goto lt; if ((x)[1] > (y+48)[3]) goto gt; if ((x)[1] < (y+48)[3]) goto lt; if ((x)[2] > (y+48)[3]) goto gt; if ((x)[2] < (y+48)[3]) goto lt; if ((x)[3] > (y+48)[3]) goto gt; if ((x)[3] < (y+48)[3]) goto lt; if ((x+4)[0] > (y+48)[0]) goto gt; if ((x+4)[0] < (y+48)[0]) goto lt; if ((x+4)[1] > (y+48)[0]) goto gt; if ((x+4)[1] < (y+48)[0]) goto lt; if ((x+4)[2] > (y+48)[0]) goto gt; if ((x+4)[2] < (y+48)[0]) goto lt; if ((x+4)[3] > (y+48)[0]) goto gt; if ((x+4)[3] < (y+48)[0]) goto lt; if ((x+4)[0] > (y+48)[1]) goto gt; if ((x+4)[0] < (y+48)[1]) goto lt; if ((x+4)[1] > (y+48)[1]) goto gt; if ((x+4)[1] < (y+48)[1]) goto lt; if ((x+4)[2] > (y+48)[1]) goto gt; if ((x+4)[2] < (y+48)[1]) goto lt; if ((x+4)[3] > (y+48)[1]) goto gt; if ((x+4)[3] < (y+48)[1]) goto lt; if ((x+4)[0] > (y+48)[2]) goto gt; if ((x+4)[0] < (y+48)[2]) goto lt; if ((x+4)[1] > (y+48)[2]) goto gt; if ((x+4)[1] < (y+48)[2]) goto lt; if ((x+4)[2] > (y+48)[2]) goto gt; if ((x+4)[2] < (y+48)[2]) goto lt; if ((x+4)[3] > (y+48)[2]) goto gt; if ((x+4)[3] < (y+48)[2]) goto lt; if ((x+4)[0] > (y+48)[3]) goto gt; if ((x+4)[0] < (y+48)[3]) goto lt; if ((x+4)[1] > (y+48)[3]) goto gt; if ((x+4)[1] < (y+48)[3]) goto lt; if ((x+4)[2] > (y+48)[3]) goto gt; if ((x+4)[2] < (y+48)[3]) goto lt; if ((x+4)[3] > (y+48)[3]) goto gt; if ((x+4)[3] < (y+48)[3]) goto lt; if ((x+8)[0] > (y+48)[0]) goto gt; if ((x+8)[0] < (y+48)[0]) goto lt; if ((x+8)[1] > (y+48)[0]) goto gt; if ((x+8)[1] < (y+48)[0]) goto lt; if ((x+8)[2] > (y+48)[0]) goto gt; if ((x+8)[2] < (y+48)[0]) goto lt; if ((x+8)[3] > (y+48)[0]) goto gt; if ((x+8)[3] < (y+48)[0]) goto lt; if ((x+8)[0] > (y+48)[1]) goto gt; if ((x+8)[0] < (y+48)[1]) goto lt; if ((x+8)[1] > (y+48)[1]) goto gt; if ((x+8)[1] < (y+48)[1]) goto lt; if ((x+8)[2] > (y+48)[1]) goto gt; if ((x+8)[2] < (y+48)[1]) goto lt; if ((x+8)[3] > (y+48)[1]) goto gt; if ((x+8)[3] < (y+48)[1]) goto lt; if ((x+8)[0] > (y+48)[2]) goto gt; if ((x+8)[0] < (y+48)[2]) goto lt; if ((x+8)[1] > (y+48)[2]) goto gt; if ((x+8)[1] < (y+48)[2]) goto lt; if ((x+8)[2] > (y+48)[2]) goto gt; if ((x+8)[2] < (y+48)[2]) goto lt; if ((x+8)[3] > (y+48)[2]) goto gt; if ((x+8)[3] < (y+48)[2]) goto lt; if ((x+8)[0] > (y+48)[3]) goto gt; if ((x+8)[0] < (y+48)[3]) goto lt; if ((x+8)[1] > (y+48)[3]) goto gt; if ((x+8)[1] < (y+48)[3]) goto lt; if ((x+8)[2] > (y+48)[3]) goto gt; if ((x+8)[2] < (y+48)[3]) goto lt; if ((x+8)[3] > (y+48)[3]) goto gt; if ((x+8)[3] < (y+48)[3]) goto lt; if ((x+12)[0] > (y+48)[0]) goto gt; if ((x+12)[0] < (y+48)[0]) goto lt; if ((x+12)[1] > (y+48)[0]) goto gt; if ((x+12)[1] < (y+48)[0]) goto lt; if ((x+12)[2] > (y+48)[0]) goto gt; if ((x+12)[2] < (y+48)[0]) goto lt; if ((x+12)[3] > (y+48)[0]) goto gt; if ((x+12)[3] < (y+48)[0]) goto lt; if ((x+12)[0] > (y+48)[1]) goto gt; if ((x+12)[0] < (y+48)[1]) goto lt; if ((x+12)[1] > (y+48)[1]) goto gt; if ((x+12)[1] < (y+48)[1]) goto lt; if ((x+12)[2] > (y+48)[1]) goto gt; if ((x+12)[2] < (y+48)[1]) goto lt; if ((x+12)[3] > (y+48)[1]) goto gt; if ((x+12)[3] < (y+48)[1]) goto lt; if ((x+12)[0] > (y+48)[2]) goto gt; if ((x+12)[0] < (y+48)[2]) goto lt; if ((x+12)[1] > (y+48)[2]) goto gt; if ((x+12)[1] < (y+48)[2]) goto lt; if ((x+12)[2] > (y+48)[2]) goto gt; if ((x+12)[2] < (y+48)[2]) goto lt; if ((x+12)[3] > (y+48)[2]) goto gt; if ((x+12)[3] < (y+48)[2]) goto lt; if ((x+12)[0] > (y+48)[3]) goto gt; if ((x+12)[0] < (y+48)[3]) goto lt; if ((x+12)[1] > (y+48)[3]) goto gt; if ((x+12)[1] < (y+48)[3]) goto lt; if ((x+12)[2] > (y+48)[3]) goto gt; if ((x+12)[2] < (y+48)[3]) goto lt; if ((x+12)[3] > (y+48)[3]) goto gt; if ((x+12)[3] < (y+48)[3]) goto lt; if ((x)[0] > (y+48 +4)[0]) goto gt; if ((x)[0] < (y+48 +4)[0]) goto lt; if ((x)[1] > (y+48 +4)[0]) goto gt; if ((x)[1] < (y+48 +4)[0]) goto lt; if ((x)[2] > (y+48 +4)[0]) goto gt; if ((x)[2] < (y+48 +4)[0]) goto lt; if ((x)[3] > (y+48 +4)[0]) goto gt; if ((x)[3] < (y+48 +4)[0]) goto lt; if ((x)[0] > (y+48 +4)[1]) goto gt; if ((x)[0] < (y+48 +4)[1]) goto lt; if ((x)[1] > (y+48 +4)[1]) goto gt; if ((x)[1] < (y+48 +4)[1]) goto lt; if ((x)[2] > (y+48 +4)[1]) goto gt; if ((x)[2] < (y+48 +4)[1]) goto lt; if ((x)[3] > (y+48 +4)[1]) goto gt; if ((x)[3] < (y+48 +4)[1]) goto lt; if ((x)[0] > (y+48 +4)[2]) goto gt; if ((x)[0] < (y+48 +4)[2]) goto lt; if ((x)[1] > (y+48 +4)[2]) goto gt; if ((x)[1] < (y+48 +4)[2]) goto lt; if ((x)[2] > (y+48 +4)[2]) goto gt; if ((x)[2] < (y+48 +4)[2]) goto lt; if ((x)[3] > (y+48 +4)[2]) goto gt; if ((x)[3] < (y+48 +4)[2]) goto lt; if ((x)[0] > (y+48 +4)[3]) goto gt; if ((x)[0] < (y+48 +4)[3]) goto lt; if ((x)[1] > (y+48 +4)[3]) goto gt; if ((x)[1] < (y+48 +4)[3]) goto lt; if ((x)[2] > (y+48 +4)[3]) goto gt; if ((x)[2] < (y+48 +4)[3]) goto lt; if ((x)[3] > (y+48 +4)[3]) goto gt; if ((x)[3] < (y+48 +4)[3]) goto lt; if ((x+4)[0] > (y+48 +4)[0]) goto gt; if ((x+4)[0] < (y+48 +4)[0]) goto lt; if ((x+4)[1] > (y+48 +4)[0]) goto gt; if ((x+4)[1] < (y+48 +4)[0]) goto lt; if ((x+4)[2] > (y+48 +4)[0]) goto gt; if ((x+4)[2] < (y+48 +4)[0]) goto lt; if ((x+4)[3] > (y+48 +4)[0]) goto gt; if ((x+4)[3] < (y+48 +4)[0]) goto lt; if ((x+4)[0] > (y+48 +4)[1]) goto gt; if ((x+4)[0] < (y+48 +4)[1]) goto lt; if ((x+4)[1] > (y+48 +4)[1]) goto gt; if ((x+4)[1] < (y+48 +4)[1]) goto lt; if ((x+4)[2] > (y+48 +4)[1]) goto gt; if ((x+4)[2] < (y+48 +4)[1]) goto lt; if ((x+4)[3] > (y+48 +4)[1]) goto gt; if ((x+4)[3] < (y+48 +4)[1]) goto lt; if ((x+4)[0] > (y+48 +4)[2]) goto gt; if ((x+4)[0] < (y+48 +4)[2]) goto lt; if ((x+4)[1] > (y+48 +4)[2]) goto gt; if ((x+4)[1] < (y+48 +4)[2]) goto lt; if ((x+4)[2] > (y+48 +4)[2]) goto gt; if ((x+4)[2] < (y+48 +4)[2]) goto lt; if ((x+4)[3] > (y+48 +4)[2]) goto gt; if ((x+4)[3] < (y+48 +4)[2]) goto lt; if ((x+4)[0] > (y+48 +4)[3]) goto gt; if ((x+4)[0] < (y+48 +4)[3]) goto lt; if ((x+4)[1] > (y+48 +4)[3]) goto gt; if ((x+4)[1] < (y+48 +4)[3]) goto lt; if ((x+4)[2] > (y+48 +4)[3]) goto gt; if ((x+4)[2] < (y+48 +4)[3]) goto lt; if ((x+4)[3] > (y+48 +4)[3]) goto gt; if ((x+4)[3] < (y+48 +4)[3]) goto lt; if ((x+8)[0] > (y+48 +4)[0]) goto gt; if ((x+8)[0] < (y+48 +4)[0]) goto lt; if ((x+8)[1] > (y+48 +4)[0]) goto gt; if ((x+8)[1] < (y+48 +4)[0]) goto lt; if ((x+8)[2] > (y+48 +4)[0]) goto gt; if ((x+8)[2] < (y+48 +4)[0]) goto lt; if ((x+8)[3] > (y+48 +4)[0]) goto gt; if ((x+8)[3] < (y+48 +4)[0]) goto lt; if ((x+8)[0] > (y+48 +4)[1]) goto gt; if ((x+8)[0] < (y+48 +4)[1]) goto lt; if ((x+8)[1] > (y+48 +4)[1]) goto gt; if ((x+8)[1] < (y+48 +4)[1]) goto lt; if ((x+8)[2] > (y+48 +4)[1]) goto gt; if ((x+8)[2] < (y+48 +4)[1]) goto lt; if ((x+8)[3] > (y+48 +4)[1]) goto gt; if ((x+8)[3] < (y+48 +4)[1]) goto lt; if ((x+8)[0] > (y+48 +4)[2]) goto gt; if ((x+8)[0] < (y+48 +4)[2]) goto lt; if ((x+8)[1] > (y+48 +4)[2]) goto gt; if ((x+8)[1] < (y+48 +4)[2]) goto lt; if ((x+8)[2] > (y+48 +4)[2]) goto gt; if ((x+8)[2] < (y+48 +4)[2]) goto lt; if ((x+8)[3] > (y+48 +4)[2]) goto gt; if ((x+8)[3] < (y+48 +4)[2]) goto lt; if ((x+8)[0] > (y+48 +4)[3]) goto gt; if ((x+8)[0] < (y+48 +4)[3]) goto lt; if ((x+8)[1] > (y+48 +4)[3]) goto gt; if ((x+8)[1] < (y+48 +4)[3]) goto lt; if ((x+8)[2] > (y+48 +4)[3]) goto gt; if ((x+8)[2] < (y+48 +4)[3]) goto lt; if ((x+8)[3] > (y+48 +4)[3]) goto gt; if ((x+8)[3] < (y+48 +4)[3]) goto lt; if ((x+12)[0] > (y+48 +4)[0]) goto gt; if ((x+12)[0] < (y+48 +4)[0]) goto lt; if ((x+12)[1] > (y+48 +4)[0]) goto gt; if ((x+12)[1] < (y+48 +4)[0]) goto lt; if ((x+12)[2] > (y+48 +4)[0]) goto gt; if ((x+12)[2] < (y+48 +4)[0]) goto lt; if ((x+12)[3] > (y+48 +4)[0]) goto gt; if ((x+12)[3] < (y+48 +4)[0]) goto lt; if ((x+12)[0] > (y+48 +4)[1]) goto gt; if ((x+12)[0] < (y+48 +4)[1]) goto lt; if ((x+12)[1] > (y+48 +4)[1]) goto gt; if ((x+12)[1] < (y+48 +4)[1]) goto lt; if ((x+12)[2] > (y+48 +4)[1]) goto gt; if ((x+12)[2] < (y+48 +4)[1]) goto lt; if ((x+12)[3] > (y+48 +4)[1]) goto gt; if ((x+12)[3] < (y+48 +4)[1]) goto lt; if ((x+12)[0] > (y+48 +4)[2]) goto gt; if ((x+12)[0] < (y+48 +4)[2]) goto lt; if ((x+12)[1] > (y+48 +4)[2]) goto gt; if ((x+12)[1] < (y+48 +4)[2]) goto lt; if ((x+12)[2] > (y+48 +4)[2]) goto gt; if ((x+12)[2] < (y+48 +4)[2]) goto lt; if ((x+12)[3] > (y+48 +4)[2]) goto gt; if ((x+12)[3] < (y+48 +4)[2]) goto lt; if ((x+12)[0] > (y+48 +4)[3]) goto gt; if ((x+12)[0] < (y+48 +4)[3]) goto lt; if ((x+12)[1] > (y+48 +4)[3]) goto gt; if ((x+12)[1] < (y+48 +4)[3]) goto lt; if ((x+12)[2] > (y+48 +4)[3]) goto gt; if ((x+12)[2] < (y+48 +4)[3]) goto lt; if ((x+12)[3] > (y+48 +4)[3]) goto gt; if ((x+12)[3] < (y+48 +4)[3]) goto lt; if ((x)[0] > (y+48 +8)[0]) goto gt; if ((x)[0] < (y+48 +8)[0]) goto lt; if ((x)[1] > (y+48 +8)[0]) goto gt; if ((x)[1] < (y+48 +8)[0]) goto lt; if ((x)[2] > (y+48 +8)[0]) goto gt; if ((x)[2] < (y+48 +8)[0]) goto lt; if ((x)[3] > (y+48 +8)[0]) goto gt; if ((x)[3] < (y+48 +8)[0]) goto lt; if ((x)[0] > (y+48 +8)[1]) goto gt; if ((x)[0] < (y+48 +8)[1]) goto lt; if ((x)[1] > (y+48 +8)[1]) goto gt; if ((x)[1] < (y+48 +8)[1]) goto lt; if ((x)[2] > (y+48 +8)[1]) goto gt; if ((x)[2] < (y+48 +8)[1]) goto lt; if ((x)[3] > (y+48 +8)[1]) goto gt; if ((x)[3] < (y+48 +8)[1]) goto lt; if ((x)[0] > (y+48 +8)[2]) goto gt; if ((x)[0] < (y+48 +8)[2]) goto lt; if ((x)[1] > (y+48 +8)[2]) goto gt; if ((x)[1] < (y+48 +8)[2]) goto lt; if ((x)[2] > (y+48 +8)[2]) goto gt; if ((x)[2] < (y+48 +8)[2]) goto lt; if ((x)[3] > (y+48 +8)[2]) goto gt; if ((x)[3] < (y+48 +8)[2]) goto lt; if ((x)[0] > (y+48 +8)[3]) goto gt; if ((x)[0] < (y+48 +8)[3]) goto lt; if ((x)[1] > (y+48 +8)[3]) goto gt; if ((x)[1] < (y+48 +8)[3]) goto lt; if ((x)[2] > (y+48 +8)[3]) goto gt; if ((x)[2] < (y+48 +8)[3]) goto lt; if ((x)[3] > (y+48 +8)[3]) goto gt; if ((x)[3] < (y+48 +8)[3]) goto lt; if ((x+4)[0] > (y+48 +8)[0]) goto gt; if ((x+4)[0] < (y+48 +8)[0]) goto lt; if ((x+4)[1] > (y+48 +8)[0]) goto gt; if ((x+4)[1] < (y+48 +8)[0]) goto lt; if ((x+4)[2] > (y+48 +8)[0]) goto gt; if ((x+4)[2] < (y+48 +8)[0]) goto lt; if ((x+4)[3] > (y+48 +8)[0]) goto gt; if ((x+4)[3] < (y+48 +8)[0]) goto lt; if ((x+4)[0] > (y+48 +8)[1]) goto gt; if ((x+4)[0] < (y+48 +8)[1]) goto lt; if ((x+4)[1] > (y+48 +8)[1]) goto gt; if ((x+4)[1] < (y+48 +8)[1]) goto lt; if ((x+4)[2] > (y+48 +8)[1]) goto gt; if ((x+4)[2] < (y+48 +8)[1]) goto lt; if ((x+4)[3] > (y+48 +8)[1]) goto gt; if ((x+4)[3] < (y+48 +8)[1]) goto lt; if ((x+4)[0] > (y+48 +8)[2]) goto gt; if ((x+4)[0] < (y+48 +8)[2]) goto lt; if ((x+4)[1] > (y+48 +8)[2]) goto gt; if ((x+4)[1] < (y+48 +8)[2]) goto lt; if ((x+4)[2] > (y+48 +8)[2]) goto gt; if ((x+4)[2] < (y+48 +8)[2]) goto lt; if ((x+4)[3] > (y+48 +8)[2]) goto gt; if ((x+4)[3] < (y+48 +8)[2]) goto lt; if ((x+4)[0] > (y+48 +8)[3]) goto gt; if ((x+4)[0] < (y+48 +8)[3]) goto lt; if ((x+4)[1] > (y+48 +8)[3]) goto gt; if ((x+4)[1] < (y+48 +8)[3]) goto lt; if ((x+4)[2] > (y+48 +8)[3]) goto gt; if ((x+4)[2] < (y+48 +8)[3]) goto lt; if ((x+4)[3] > (y+48 +8)[3]) goto gt; if ((x+4)[3] < (y+48 +8)[3]) goto lt; if ((x+8)[0] > (y+48 +8)[0]) goto gt; if ((x+8)[0] < (y+48 +8)[0]) goto lt; if ((x+8)[1] > (y+48 +8)[0]) goto gt; if ((x+8)[1] < (y+48 +8)[0]) goto lt; if ((x+8)[2] > (y+48 +8)[0]) goto gt; if ((x+8)[2] < (y+48 +8)[0]) goto lt; if ((x+8)[3] > (y+48 +8)[0]) goto gt; if ((x+8)[3] < (y+48 +8)[0]) goto lt; if ((x+8)[0] > (y+48 +8)[1]) goto gt; if ((x+8)[0] < (y+48 +8)[1]) goto lt; if ((x+8)[1] > (y+48 +8)[1]) goto gt; if ((x+8)[1] < (y+48 +8)[1]) goto lt; if ((x+8)[2] > (y+48 +8)[1]) goto gt; if ((x+8)[2] < (y+48 +8)[1]) goto lt; if ((x+8)[3] > (y+48 +8)[1]) goto gt; if ((x+8)[3] < (y+48 +8)[1]) goto lt; if ((x+8)[0] > (y+48 +8)[2]) goto gt; if ((x+8)[0] < (y+48 +8)[2]) goto lt; if ((x+8)[1] > (y+48 +8)[2]) goto gt; if ((x+8)[1] < (y+48 +8)[2]) goto lt; if ((x+8)[2] > (y+48 +8)[2]) goto gt; if ((x+8)[2] < (y+48 +8)[2]) goto lt; if ((x+8)[3] > (y+48 +8)[2]) goto gt; if ((x+8)[3] < (y+48 +8)[2]) goto lt; if ((x+8)[0] > (y+48 +8)[3]) goto gt; if ((x+8)[0] < (y+48 +8)[3]) goto lt; if ((x+8)[1] > (y+48 +8)[3]) goto gt; if ((x+8)[1] < (y+48 +8)[3]) goto lt; if ((x+8)[2] > (y+48 +8)[3]) goto gt; if ((x+8)[2] < (y+48 +8)[3]) goto lt; if ((x+8)[3] > (y+48 +8)[3]) goto gt; if ((x+8)[3] < (y+48 +8)[3]) goto lt; if ((x+12)[0] > (y+48 +8)[0]) goto gt; if ((x+12)[0] < (y+48 +8)[0]) goto lt; if ((x+12)[1] > (y+48 +8)[0]) goto gt; if ((x+12)[1] < (y+48 +8)[0]) goto lt; if ((x+12)[2] > (y+48 +8)[0]) goto gt; if ((x+12)[2] < (y+48 +8)[0]) goto lt; if ((x+12)[3] > (y+48 +8)[0]) goto gt; if ((x+12)[3] < (y+48 +8)[0]) goto lt; if ((x+12)[0] > (y+48 +8)[1]) goto gt; if ((x+12)[0] < (y+48 +8)[1]) goto lt; if ((x+12)[1] > (y+48 +8)[1]) goto gt; if ((x+12)[1] < (y+48 +8)[1]) goto lt; if ((x+12)[2] > (y+48 +8)[1]) goto gt; if ((x+12)[2] < (y+48 +8)[1]) goto lt; if ((x+12)[3] > (y+48 +8)[1]) goto gt; if ((x+12)[3] < (y+48 +8)[1]) goto lt; if ((x+12)[0] > (y+48 +8)[2]) goto gt; if ((x+12)[0] < (y+48 +8)[2]) goto lt; if ((x+12)[1] > (y+48 +8)[2]) goto gt; if ((x+12)[1] < (y+48 +8)[2]) goto lt; if ((x+12)[2] > (y+48 +8)[2]) goto gt; if ((x+12)[2] < (y+48 +8)[2]) goto lt; if ((x+12)[3] > (y+48 +8)[2]) goto gt; if ((x+12)[3] < (y+48 +8)[2]) goto lt; if ((x+12)[0] > (y+48 +8)[3]) goto gt; if ((x+12)[0] < (y+48 +8)[3]) goto lt; if ((x+12)[1] > (y+48 +8)[3]) goto gt; if ((x+12)[1] < (y+48 +8)[3]) goto lt; if ((x+12)[2] > (y+48 +8)[3]) goto gt; if ((x+12)[2] < (y+48 +8)[3]) goto lt; if ((x+12)[3] > (y+48 +8)[3]) goto gt; if ((x+12)[3] < (y+48 +8)[3]) goto lt; if ((x)[0] > (y+48 +12)[0]) goto gt; if ((x)[0] < (y+48 +12)[0]) goto lt; if ((x)[1] > (y+48 +12)[0]) goto gt; if ((x)[1] < (y+48 +12)[0]) goto lt; if ((x)[2] > (y+48 +12)[0]) goto gt; if ((x)[2] < (y+48 +12)[0]) goto lt; if ((x)[3] > (y+48 +12)[0]) goto gt; if ((x)[3] < (y+48 +12)[0]) goto lt; if ((x)[0] > (y+48 +12)[1]) goto gt; if ((x)[0] < (y+48 +12)[1]) goto lt; if ((x)[1] > (y+48 +12)[1]) goto gt; if ((x)[1] < (y+48 +12)[1]) goto lt; if ((x)[2] > (y+48 +12)[1]) goto gt; if ((x)[2] < (y+48 +12)[1]) goto lt; if ((x)[3] > (y+48 +12)[1]) goto gt; if ((x)[3] < (y+48 +12)[1]) goto lt; if ((x)[0] > (y+48 +12)[2]) goto gt; if ((x)[0] < (y+48 +12)[2]) goto lt; if ((x)[1] > (y+48 +12)[2]) goto gt; if ((x)[1] < (y+48 +12)[2]) goto lt; if ((x)[2] > (y+48 +12)[2]) goto gt; if ((x)[2] < (y+48 +12)[2]) goto lt; if ((x)[3] > (y+48 +12)[2]) goto gt; if ((x)[3] < (y+48 +12)[2]) goto lt; if ((x)[0] > (y+48 +12)[3]) goto gt; if ((x)[0] < (y+48 +12)[3]) goto lt; if ((x)[1] > (y+48 +12)[3]) goto gt; if ((x)[1] < (y+48 +12)[3]) goto lt; if ((x)[2] > (y+48 +12)[3]) goto gt; if ((x)[2] < (y+48 +12)[3]) goto lt; if ((x)[3] > (y+48 +12)[3]) goto gt; if ((x)[3] < (y+48 +12)[3]) goto lt; if ((x+4)[0] > (y+48 +12)[0]) goto gt; if ((x+4)[0] < (y+48 +12)[0]) goto lt; if ((x+4)[1] > (y+48 +12)[0]) goto gt; if ((x+4)[1] < (y+48 +12)[0]) goto lt; if ((x+4)[2] > (y+48 +12)[0]) goto gt; if ((x+4)[2] < (y+48 +12)[0]) goto lt; if ((x+4)[3] > (y+48 +12)[0]) goto gt; if ((x+4)[3] < (y+48 +12)[0]) goto lt; if ((x+4)[0] > (y+48 +12)[1]) goto gt; if ((x+4)[0] < (y+48 +12)[1]) goto lt; if ((x+4)[1] > (y+48 +12)[1]) goto gt; if ((x+4)[1] < (y+48 +12)[1]) goto lt; if ((x+4)[2] > (y+48 +12)[1]) goto gt; if ((x+4)[2] < (y+48 +12)[1]) goto lt; if ((x+4)[3] > (y+48 +12)[1]) goto gt; if ((x+4)[3] < (y+48 +12)[1]) goto lt; if ((x+4)[0] > (y+48 +12)[2]) goto gt; if ((x+4)[0] < (y+48 +12)[2]) goto lt; if ((x+4)[1] > (y+48 +12)[2]) goto gt; if ((x+4)[1] < (y+48 +12)[2]) goto lt; if ((x+4)[2] > (y+48 +12)[2]) goto gt; if ((x+4)[2] < (y+48 +12)[2]) goto lt; if ((x+4)[3] > (y+48 +12)[2]) goto gt; if ((x+4)[3] < (y+48 +12)[2]) goto lt; if ((x+4)[0] > (y+48 +12)[3]) goto gt; if ((x+4)[0] < (y+48 +12)[3]) goto lt; if ((x+4)[1] > (y+48 +12)[3]) goto gt; if ((x+4)[1] < (y+48 +12)[3]) goto lt; if ((x+4)[2] > (y+48 +12)[3]) goto gt; if ((x+4)[2] < (y+48 +12)[3]) goto lt; if ((x+4)[3] > (y+48 +12)[3]) goto gt; if ((x+4)[3] < (y+48 +12)[3]) goto lt; if ((x+8)[0] > (y+48 +12)[0]) goto gt; if ((x+8)[0] < (y+48 +12)[0]) goto lt; if ((x+8)[1] > (y+48 +12)[0]) goto gt; if ((x+8)[1] < (y+48 +12)[0]) goto lt; if ((x+8)[2] > (y+48 +12)[0]) goto gt; if ((x+8)[2] < (y+48 +12)[0]) goto lt; if ((x+8)[3] > (y+48 +12)[0]) goto gt; if ((x+8)[3] < (y+48 +12)[0]) goto lt; if ((x+8)[0] > (y+48 +12)[1]) goto gt; if ((x+8)[0] < (y+48 +12)[1]) goto lt; if ((x+8)[1] > (y+48 +12)[1]) goto gt; if ((x+8)[1] < (y+48 +12)[1]) goto lt; if ((x+8)[2] > (y+48 +12)[1]) goto gt; if ((x+8)[2] < (y+48 +12)[1]) goto lt; if ((x+8)[3] > (y+48 +12)[1]) goto gt; if ((x+8)[3] < (y+48 +12)[1]) goto lt; if ((x+8)[0] > (y+48 +12)[2]) goto gt; if ((x+8)[0] < (y+48 +12)[2]) goto lt; if ((x+8)[1] > (y+48 +12)[2]) goto gt; if ((x+8)[1] < (y+48 +12)[2]) goto lt; if ((x+8)[2] > (y+48 +12)[2]) goto gt; if ((x+8)[2] < (y+48 +12)[2]) goto lt; if ((x+8)[3] > (y+48 +12)[2]) goto gt; if ((x+8)[3] < (y+48 +12)[2]) goto lt; if ((x+8)[0] > (y+48 +12)[3]) goto gt; if ((x+8)[0] < (y+48 +12)[3]) goto lt; if ((x+8)[1] > (y+48 +12)[3]) goto gt; if ((x+8)[1] < (y+48 +12)[3]) goto lt; if ((x+8)[2] > (y+48 +12)[3]) goto gt; if ((x+8)[2] < (y+48 +12)[3]) goto lt; if ((x+8)[3] > (y+48 +12)[3]) goto gt; if ((x+8)[3] < (y+48 +12)[3]) goto lt; if ((x+12)[0] > (y+48 +12)[0]) goto gt; if ((x+12)[0] < (y+48 +12)[0]) goto lt; if ((x+12)[1] > (y+48 +12)[0]) goto gt; if ((x+12)[1] < (y+48 +12)[0]) goto lt; if ((x+12)[2] > (y+48 +12)[0]) goto gt; if ((x+12)[2] < (y+48 +12)[0]) goto lt; if ((x+12)[3] > (y+48 +12)[0]) goto gt; if ((x+12)[3] < (y+48 +12)[0]) goto lt; if ((x+12)[0] > (y+48 +12)[1]) goto gt; if ((x+12)[0] < (y+48 +12)[1]) goto lt; if ((x+12)[1] > (y+48 +12)[1]) goto gt; if ((x+12)[1] < (y+48 +12)[1]) goto lt; if ((x+12)[2] > (y+48 +12)[1]) goto gt; if ((x+12)[2] < (y+48 +12)[1]) goto lt; if ((x+12)[3] > (y+48 +12)[1]) goto gt; if ((x+12)[3] < (y+48 +12)[1]) goto lt; if ((x+12)[0] > (y+48 +12)[2]) goto gt; if ((x+12)[0] < (y+48 +12)[2]) goto lt; if ((x+12)[1] > (y+48 +12)[2]) goto gt; if ((x+12)[1] < (y+48 +12)[2]) goto lt; if ((x+12)[2] > (y+48 +12)[2]) goto gt; if ((x+12)[2] < (y+48 +12)[2]) goto lt; if ((x+12)[3] > (y+48 +12)[2]) goto gt; if ((x+12)[3] < (y+48 +12)[2]) goto lt; if ((x+12)[0] > (y+48 +12)[3]) goto gt; if ((x+12)[0] < (y+48 +12)[3]) goto lt; if ((x+12)[1] > (y+48 +12)[3]) goto gt; if ((x+12)[1] < (y+48 +12)[3]) goto lt; if ((x+12)[2] > (y+48 +12)[3]) goto gt; if ((x+12)[2] < (y+48 +12)[3]) goto lt; if ((x+12)[3] > (y+48 +12)[3]) goto gt; if ((x+12)[3] < (y+48 +12)[3]) goto lt; if ((x+16)[0] > (y+48)[0]) goto gt; if ((x+16)[0] < (y+48)[0]) goto lt; if ((x+16)[1] > (y+48)[0]) goto gt; if ((x+16)[1] < (y+48)[0]) goto lt; if ((x+16)[2] > (y+48)[0]) goto gt; if ((x+16)[2] < (y+48)[0]) goto lt; if ((x+16)[3] > (y+48)[0]) goto gt; if ((x+16)[3] < (y+48)[0]) goto lt; if ((x+16)[0] > (y+48)[1]) goto gt; if ((x+16)[0] < (y+48)[1]) goto lt; if ((x+16)[1] > (y+48)[1]) goto gt; if ((x+16)[1] < (y+48)[1]) goto lt; if ((x+16)[2] > (y+48)[1]) goto gt; if ((x+16)[2] < (y+48)[1]) goto lt; if ((x+16)[3] > (y+48)[1]) goto gt; if ((x+16)[3] < (y+48)[1]) goto lt; if ((x+16)[0] > (y+48)[2]) goto gt; if ((x+16)[0] < (y+48)[2]) goto lt; if ((x+16)[1] > (y+48)[2]) goto gt; if ((x+16)[1] < (y+48)[2]) goto lt; if ((x+16)[2] > (y+48)[2]) goto gt; if ((x+16)[2] < (y+48)[2]) goto lt; if ((x+16)[3] > (y+48)[2]) goto gt; if ((x+16)[3] < (y+48)[2]) goto lt; if ((x+16)[0] > (y+48)[3]) goto gt; if ((x+16)[0] < (y+48)[3]) goto lt; if ((x+16)[1] > (y+48)[3]) goto gt; if ((x+16)[1] < (y+48)[3]) goto lt; if ((x+16)[2] > (y+48)[3]) goto gt; if ((x+16)[2] < (y+48)[3]) goto lt; if ((x+16)[3] > (y+48)[3]) goto gt; if ((x+16)[3] < (y+48)[3]) goto lt; if ((x+16 +4)[0] > (y+48)[0]) goto gt; if ((x+16 +4)[0] < (y+48)[0]) goto lt; if ((x+16 +4)[1] > (y+48)[0]) goto gt; if ((x+16 +4)[1] < (y+48)[0]) goto lt; if ((x+16 +4)[2] > (y+48)[0]) goto gt; if ((x+16 +4)[2] < (y+48)[0]) goto lt; if ((x+16 +4)[3] > (y+48)[0]) goto gt; if ((x+16 +4)[3] < (y+48)[0]) goto lt; if ((x+16 +4)[0] > (y+48)[1]) goto gt; if ((x+16 +4)[0] < (y+48)[1]) goto lt; if ((x+16 +4)[1] > (y+48)[1]) goto gt; if ((x+16 +4)[1] < (y+48)[1]) goto lt; if ((x+16 +4)[2] > (y+48)[1]) goto gt; if ((x+16 +4)[2] < (y+48)[1]) goto lt; if ((x+16 +4)[3] > (y+48)[1]) goto gt; if ((x+16 +4)[3] < (y+48)[1]) goto lt; if ((x+16 +4)[0] > (y+48)[2]) goto gt; if ((x+16 +4)[0] < (y+48)[2]) goto lt; if ((x+16 +4)[1] > (y+48)[2]) goto gt; if ((x+16 +4)[1] < (y+48)[2]) goto lt; if ((x+16 +4)[2] > (y+48)[2]) goto gt; if ((x+16 +4)[2] < (y+48)[2]) goto lt; if ((x+16 +4)[3] > (y+48)[2]) goto gt; if ((x+16 +4)[3] < (y+48)[2]) goto lt; if ((x+16 +4)[0] > (y+48)[3]) goto gt; if ((x+16 +4)[0] < (y+48)[3]) goto lt; if ((x+16 +4)[1] > (y+48)[3]) goto gt; if ((x+16 +4)[1] < (y+48)[3]) goto lt; if ((x+16 +4)[2] > (y+48)[3]) goto gt; if ((x+16 +4)[2] < (y+48)[3]) goto lt; if ((x+16 +4)[3] > (y+48)[3]) goto gt; if ((x+16 +4)[3] < (y+48)[3]) goto lt; if ((x+16 +8)[0] > (y+48)[0]) goto gt; if ((x+16 +8)[0] < (y+48)[0]) goto lt; if ((x+16 +8)[1] > (y+48)[0]) goto gt; if ((x+16 +8)[1] < (y+48)[0]) goto lt; if ((x+16 +8)[2] > (y+48)[0]) goto gt; if ((x+16 +8)[2] < (y+48)[0]) goto lt; if ((x+16 +8)[3] > (y+48)[0]) goto gt; if ((x+16 +8)[3] < (y+48)[0]) goto lt; if ((x+16 +8)[0] > (y+48)[1]) goto gt; if ((x+16 +8)[0] < (y+48)[1]) goto lt; if ((x+16 +8)[1] > (y+48)[1]) goto gt; if ((x+16 +8)[1] < (y+48)[1]) goto lt; if ((x+16 +8)[2] > (y+48)[1]) goto gt; if ((x+16 +8)[2] < (y+48)[1]) goto lt; if ((x+16 +8)[3] > (y+48)[1]) goto gt; if ((x+16 +8)[3] < (y+48)[1]) goto lt; if ((x+16 +8)[0] > (y+48)[2]) goto gt; if ((x+16 +8)[0] < (y+48)[2]) goto lt; if ((x+16 +8)[1] > (y+48)[2]) goto gt; if ((x+16 +8)[1] < (y+48)[2]) goto lt; if ((x+16 +8)[2] > (y+48)[2]) goto gt; if ((x+16 +8)[2] < (y+48)[2]) goto lt; if ((x+16 +8)[3] > (y+48)[2]) goto gt; if ((x+16 +8)[3] < (y+48)[2]) goto lt; if ((x+16 +8)[0] > (y+48)[3]) goto gt; if ((x+16 +8)[0] < (y+48)[3]) goto lt; if ((x+16 +8)[1] > (y+48)[3]) goto gt; if ((x+16 +8)[1] < (y+48)[3]) goto lt; if ((x+16 +8)[2] > (y+48)[3]) goto gt; if ((x+16 +8)[2] < (y+48)[3]) goto lt; if ((x+16 +8)[3] > (y+48)[3]) goto gt; if ((x+16 +8)[3] < (y+48)[3]) goto lt; if ((x+16 +12)[0] > (y+48)[0]) goto gt; if ((x+16 +12)[0] < (y+48)[0]) goto lt; if ((x+16 +12)[1] > (y+48)[0]) goto gt; if ((x+16 +12)[1] < (y+48)[0]) goto lt; if ((x+16 +12)[2] > (y+48)[0]) goto gt; if ((x+16 +12)[2] < (y+48)[0]) goto lt; if ((x+16 +12)[3] > (y+48)[0]) goto gt; if ((x+16 +12)[3] < (y+48)[0]) goto lt; if ((x+16 +12)[0] > (y+48)[1]) goto gt; if ((x+16 +12)[0] < (y+48)[1]) goto lt; if ((x+16 +12)[1] > (y+48)[1]) goto gt; if ((x+16 +12)[1] < (y+48)[1]) goto lt; if ((x+16 +12)[2] > (y+48)[1]) goto gt; if ((x+16 +12)[2] < (y+48)[1]) goto lt; if ((x+16 +12)[3] > (y+48)[1]) goto gt; if ((x+16 +12)[3] < (y+48)[1]) goto lt; if ((x+16 +12)[0] > (y+48)[2]) goto gt; if ((x+16 +12)[0] < (y+48)[2]) goto lt; if ((x+16 +12)[1] > (y+48)[2]) goto gt; if ((x+16 +12)[1] < (y+48)[2]) goto lt; if ((x+16 +12)[2] > (y+48)[2]) goto gt; if ((x+16 +12)[2] < (y+48)[2]) goto lt; if ((x+16 +12)[3] > (y+48)[2]) goto gt; if ((x+16 +12)[3] < (y+48)[2]) goto lt; if ((x+16 +12)[0] > (y+48)[3]) goto gt; if ((x+16 +12)[0] < (y+48)[3]) goto lt; if ((x+16 +12)[1] > (y+48)[3]) goto gt; if ((x+16 +12)[1] < (y+48)[3]) goto lt; if ((x+16 +12)[2] > (y+48)[3]) goto gt; if ((x+16 +12)[2] < (y+48)[3]) goto lt; if ((x+16 +12)[3] > (y+48)[3]) goto gt; if ((x+16 +12)[3] < (y+48)[3]) goto lt; if ((x+16)[0] > (y+48 +4)[0]) goto gt; if ((x+16)[0] < (y+48 +4)[0]) goto lt; if ((x+16)[1] > (y+48 +4)[0]) goto gt; if ((x+16)[1] < (y+48 +4)[0]) goto lt; if ((x+16)[2] > (y+48 +4)[0]) goto gt; if ((x+16)[2] < (y+48 +4)[0]) goto lt; if ((x+16)[3] > (y+48 +4)[0]) goto gt; if ((x+16)[3] < (y+48 +4)[0]) goto lt; if ((x+16)[0] > (y+48 +4)[1]) goto gt; if ((x+16)[0] < (y+48 +4)[1]) goto lt; if ((x+16)[1] > (y+48 +4)[1]) goto gt; if ((x+16)[1] < (y+48 +4)[1]) goto lt; if ((x+16)[2] > (y+48 +4)[1]) goto gt; if ((x+16)[2] < (y+48 +4)[1]) goto lt; if ((x+16)[3] > (y+48 +4)[1]) goto gt; if ((x+16)[3] < (y+48 +4)[1]) goto lt; if ((x+16)[0] > (y+48 +4)[2]) goto gt; if ((x+16)[0] < (y+48 +4)[2]) goto lt; if ((x+16)[1] > (y+48 +4)[2]) goto gt; if ((x+16)[1] < (y+48 +4)[2]) goto lt; if ((x+16)[2] > (y+48 +4)[2]) goto gt; if ((x+16)[2] < (y+48 +4)[2]) goto lt; if ((x+16)[3] > (y+48 +4)[2]) goto gt; if ((x+16)[3] < (y+48 +4)[2]) goto lt; if ((x+16)[0] > (y+48 +4)[3]) goto gt; if ((x+16)[0] < (y+48 +4)[3]) goto lt; if ((x+16)[1] > (y+48 +4)[3]) goto gt; if ((x+16)[1] < (y+48 +4)[3]) goto lt; if ((x+16)[2] > (y+48 +4)[3]) goto gt; if ((x+16)[2] < (y+48 +4)[3]) goto lt; if ((x+16)[3] > (y+48 +4)[3]) goto gt; if ((x+16)[3] < (y+48 +4)[3]) goto lt; if ((x+16 +4)[0] > (y+48 +4)[0]) goto gt; if ((x+16 +4)[0] < (y+48 +4)[0]) goto lt; if ((x+16 +4)[1] > (y+48 +4)[0]) goto gt; if ((x+16 +4)[1] < (y+48 +4)[0]) goto lt; if ((x+16 +4)[2] > (y+48 +4)[0]) goto gt; if ((x+16 +4)[2] < (y+48 +4)[0]) goto lt; if ((x+16 +4)[3] > (y+48 +4)[0]) goto gt; if ((x+16 +4)[3] < (y+48 +4)[0]) goto lt; if ((x+16 +4)[0] > (y+48 +4)[1]) goto gt; if ((x+16 +4)[0] < (y+48 +4)[1]) goto lt; if ((x+16 +4)[1] > (y+48 +4)[1]) goto gt; if ((x+16 +4)[1] < (y+48 +4)[1]) goto lt; if ((x+16 +4)[2] > (y+48 +4)[1]) goto gt; if ((x+16 +4)[2] < (y+48 +4)[1]) goto lt; if ((x+16 +4)[3] > (y+48 +4)[1]) goto gt; if ((x+16 +4)[3] < (y+48 +4)[1]) goto lt; if ((x+16 +4)[0] > (y+48 +4)[2]) goto gt; if ((x+16 +4)[0] < (y+48 +4)[2]) goto lt; if ((x+16 +4)[1] > (y+48 +4)[2]) goto gt; if ((x+16 +4)[1] < (y+48 +4)[2]) goto lt; if ((x+16 +4)[2] > (y+48 +4)[2]) goto gt; if ((x+16 +4)[2] < (y+48 +4)[2]) goto lt; if ((x+16 +4)[3] > (y+48 +4)[2]) goto gt; if ((x+16 +4)[3] < (y+48 +4)[2]) goto lt; if ((x+16 +4)[0] > (y+48 +4)[3]) goto gt; if ((x+16 +4)[0] < (y+48 +4)[3]) goto lt; if ((x+16 +4)[1] > (y+48 +4)[3]) goto gt; if ((x+16 +4)[1] < (y+48 +4)[3]) goto lt; if ((x+16 +4)[2] > (y+48 +4)[3]) goto gt; if ((x+16 +4)[2] < (y+48 +4)[3]) goto lt; if ((x+16 +4)[3] > (y+48 +4)[3]) goto gt; if ((x+16 +4)[3] < (y+48 +4)[3]) goto lt; if ((x+16 +8)[0] > (y+48 +4)[0]) goto gt; if ((x+16 +8)[0] < (y+48 +4)[0]) goto lt; if ((x+16 +8)[1] > (y+48 +4)[0]) goto gt; if ((x+16 +8)[1] < (y+48 +4)[0]) goto lt; if ((x+16 +8)[2] > (y+48 +4)[0]) goto gt; if ((x+16 +8)[2] < (y+48 +4)[0]) goto lt; if ((x+16 +8)[3] > (y+48 +4)[0]) goto gt; if ((x+16 +8)[3] < (y+48 +4)[0]) goto lt; if ((x+16 +8)[0] > (y+48 +4)[1]) goto gt; if ((x+16 +8)[0] < (y+48 +4)[1]) goto lt; if ((x+16 +8)[1] > (y+48 +4)[1]) goto gt; if ((x+16 +8)[1] < (y+48 +4)[1]) goto lt; if ((x+16 +8)[2] > (y+48 +4)[1]) goto gt; if ((x+16 +8)[2] < (y+48 +4)[1]) goto lt; if ((x+16 +8)[3] > (y+48 +4)[1]) goto gt; if ((x+16 +8)[3] < (y+48 +4)[1]) goto lt; if ((x+16 +8)[0] > (y+48 +4)[2]) goto gt; if ((x+16 +8)[0] < (y+48 +4)[2]) goto lt; if ((x+16 +8)[1] > (y+48 +4)[2]) goto gt; if ((x+16 +8)[1] < (y+48 +4)[2]) goto lt; if ((x+16 +8)[2] > (y+48 +4)[2]) goto gt; if ((x+16 +8)[2] < (y+48 +4)[2]) goto lt; if ((x+16 +8)[3] > (y+48 +4)[2]) goto gt; if ((x+16 +8)[3] < (y+48 +4)[2]) goto lt; if ((x+16 +8)[0] > (y+48 +4)[3]) goto gt; if ((x+16 +8)[0] < (y+48 +4)[3]) goto lt; if ((x+16 +8)[1] > (y+48 +4)[3]) goto gt; if ((x+16 +8)[1] < (y+48 +4)[3]) goto lt; if ((x+16 +8)[2] > (y+48 +4)[3]) goto gt; if ((x+16 +8)[2] < (y+48 +4)[3]) goto lt; if ((x+16 +8)[3] > (y+48 +4)[3]) goto gt; if ((x+16 +8)[3] < (y+48 +4)[3]) goto lt; if ((x+16 +12)[0] > (y+48 +4)[0]) goto gt; if ((x+16 +12)[0] < (y+48 +4)[0]) goto lt; if ((x+16 +12)[1] > (y+48 +4)[0]) goto gt; if ((x+16 +12)[1] < (y+48 +4)[0]) goto lt; if ((x+16 +12)[2] > (y+48 +4)[0]) goto gt; if ((x+16 +12)[2] < (y+48 +4)[0]) goto lt; if ((x+16 +12)[3] > (y+48 +4)[0]) goto gt; if ((x+16 +12)[3] < (y+48 +4)[0]) goto lt; if ((x+16 +12)[0] > (y+48 +4)[1]) goto gt; if ((x+16 +12)[0] < (y+48 +4)[1]) goto lt; if ((x+16 +12)[1] > (y+48 +4)[1]) goto gt; if ((x+16 +12)[1] < (y+48 +4)[1]) goto lt; if ((x+16 +12)[2] > (y+48 +4)[1]) goto gt; if ((x+16 +12)[2] < (y+48 +4)[1]) goto lt; if ((x+16 +12)[3] > (y+48 +4)[1]) goto gt; if ((x+16 +12)[3] < (y+48 +4)[1]) goto lt; if ((x+16 +12)[0] > (y+48 +4)[2]) goto gt; if ((x+16 +12)[0] < (y+48 +4)[2]) goto lt; if ((x+16 +12)[1] > (y+48 +4)[2]) goto gt; if ((x+16 +12)[1] < (y+48 +4)[2]) goto lt; if ((x+16 +12)[2] > (y+48 +4)[2]) goto gt; if ((x+16 +12)[2] < (y+48 +4)[2]) goto lt; if ((x+16 +12)[3] > (y+48 +4)[2]) goto gt; if ((x+16 +12)[3] < (y+48 +4)[2]) goto lt; if ((x+16 +12)[0] > (y+48 +4)[3]) goto gt; if ((x+16 +12)[0] < (y+48 +4)[3]) goto lt; if ((x+16 +12)[1] > (y+48 +4)[3]) goto gt; if ((x+16 +12)[1] < (y+48 +4)[3]) goto lt; if ((x+16 +12)[2] > (y+48 +4)[3]) goto gt; if ((x+16 +12)[2] < (y+48 +4)[3]) goto lt; if ((x+16 +12)[3] > (y+48 +4)[3]) goto gt; if ((x+16 +12)[3] < (y+48 +4)[3]) goto lt; if ((x+16)[0] > (y+48 +8)[0]) goto gt; if ((x+16)[0] < (y+48 +8)[0]) goto lt; if ((x+16)[1] > (y+48 +8)[0]) goto gt; if ((x+16)[1] < (y+48 +8)[0]) goto lt; if ((x+16)[2] > (y+48 +8)[0]) goto gt; if ((x+16)[2] < (y+48 +8)[0]) goto lt; if ((x+16)[3] > (y+48 +8)[0]) goto gt; if ((x+16)[3] < (y+48 +8)[0]) goto lt; if ((x+16)[0] > (y+48 +8)[1]) goto gt; if ((x+16)[0] < (y+48 +8)[1]) goto lt; if ((x+16)[1] > (y+48 +8)[1]) goto gt; if ((x+16)[1] < (y+48 +8)[1]) goto lt; if ((x+16)[2] > (y+48 +8)[1]) goto gt; if ((x+16)[2] < (y+48 +8)[1]) goto lt; if ((x+16)[3] > (y+48 +8)[1]) goto gt; if ((x+16)[3] < (y+48 +8)[1]) goto lt; if ((x+16)[0] > (y+48 +8)[2]) goto gt; if ((x+16)[0] < (y+48 +8)[2]) goto lt; if ((x+16)[1] > (y+48 +8)[2]) goto gt; if ((x+16)[1] < (y+48 +8)[2]) goto lt; if ((x+16)[2] > (y+48 +8)[2]) goto gt; if ((x+16)[2] < (y+48 +8)[2]) goto lt; if ((x+16)[3] > (y+48 +8)[2]) goto gt; if ((x+16)[3] < (y+48 +8)[2]) goto lt; if ((x+16)[0] > (y+48 +8)[3]) goto gt; if ((x+16)[0] < (y+48 +8)[3]) goto lt; if ((x+16)[1] > (y+48 +8)[3]) goto gt; if ((x+16)[1] < (y+48 +8)[3]) goto lt; if ((x+16)[2] > (y+48 +8)[3]) goto gt; if ((x+16)[2] < (y+48 +8)[3]) goto lt; if ((x+16)[3] > (y+48 +8)[3]) goto gt; if ((x+16)[3] < (y+48 +8)[3]) goto lt; if ((x+16 +4)[0] > (y+48 +8)[0]) goto gt; if ((x+16 +4)[0] < (y+48 +8)[0]) goto lt; if ((x+16 +4)[1] > (y+48 +8)[0]) goto gt; if ((x+16 +4)[1] < (y+48 +8)[0]) goto lt; if ((x+16 +4)[2] > (y+48 +8)[0]) goto gt; if ((x+16 +4)[2] < (y+48 +8)[0]) goto lt; if ((x+16 +4)[3] > (y+48 +8)[0]) goto gt; if ((x+16 +4)[3] < (y+48 +8)[0]) goto lt; if ((x+16 +4)[0] > (y+48 +8)[1]) goto gt; if ((x+16 +4)[0] < (y+48 +8)[1]) goto lt; if ((x+16 +4)[1] > (y+48 +8)[1]) goto gt; if ((x+16 +4)[1] < (y+48 +8)[1]) goto lt; if ((x+16 +4)[2] > (y+48 +8)[1]) goto gt; if ((x+16 +4)[2] < (y+48 +8)[1]) goto lt; if ((x+16 +4)[3] > (y+48 +8)[1]) goto gt; if ((x+16 +4)[3] < (y+48 +8)[1]) goto lt; if ((x+16 +4)[0] > (y+48 +8)[2]) goto gt; if ((x+16 +4)[0] < (y+48 +8)[2]) goto lt; if ((x+16 +4)[1] > (y+48 +8)[2]) goto gt; if ((x+16 +4)[1] < (y+48 +8)[2]) goto lt; if ((x+16 +4)[2] > (y+48 +8)[2]) goto gt; if ((x+16 +4)[2] < (y+48 +8)[2]) goto lt; if ((x+16 +4)[3] > (y+48 +8)[2]) goto gt; if ((x+16 +4)[3] < (y+48 +8)[2]) goto lt; if ((x+16 +4)[0] > (y+48 +8)[3]) goto gt; if ((x+16 +4)[0] < (y+48 +8)[3]) goto lt; if ((x+16 +4)[1] > (y+48 +8)[3]) goto gt; if ((x+16 +4)[1] < (y+48 +8)[3]) goto lt; if ((x+16 +4)[2] > (y+48 +8)[3]) goto gt; if ((x+16 +4)[2] < (y+48 +8)[3]) goto lt; if ((x+16 +4)[3] > (y+48 +8)[3]) goto gt; if ((x+16 +4)[3] < (y+48 +8)[3]) goto lt; if ((x+16 +8)[0] > (y+48 +8)[0]) goto gt; if ((x+16 +8)[0] < (y+48 +8)[0]) goto lt; if ((x+16 +8)[1] > (y+48 +8)[0]) goto gt; if ((x+16 +8)[1] < (y+48 +8)[0]) goto lt; if ((x+16 +8)[2] > (y+48 +8)[0]) goto gt; if ((x+16 +8)[2] < (y+48 +8)[0]) goto lt; if ((x+16 +8)[3] > (y+48 +8)[0]) goto gt; if ((x+16 +8)[3] < (y+48 +8)[0]) goto lt; if ((x+16 +8)[0] > (y+48 +8)[1]) goto gt; if ((x+16 +8)[0] < (y+48 +8)[1]) goto lt; if ((x+16 +8)[1] > (y+48 +8)[1]) goto gt; if ((x+16 +8)[1] < (y+48 +8)[1]) goto lt; if ((x+16 +8)[2] > (y+48 +8)[1]) goto gt; if ((x+16 +8)[2] < (y+48 +8)[1]) goto lt; if ((x+16 +8)[3] > (y+48 +8)[1]) goto gt; if ((x+16 +8)[3] < (y+48 +8)[1]) goto lt; if ((x+16 +8)[0] > (y+48 +8)[2]) goto gt; if ((x+16 +8)[0] < (y+48 +8)[2]) goto lt; if ((x+16 +8)[1] > (y+48 +8)[2]) goto gt; if ((x+16 +8)[1] < (y+48 +8)[2]) goto lt; if ((x+16 +8)[2] > (y+48 +8)[2]) goto gt; if ((x+16 +8)[2] < (y+48 +8)[2]) goto lt; if ((x+16 +8)[3] > (y+48 +8)[2]) goto gt; if ((x+16 +8)[3] < (y+48 +8)[2]) goto lt; if ((x+16 +8)[0] > (y+48 +8)[3]) goto gt; if ((x+16 +8)[0] < (y+48 +8)[3]) goto lt; if ((x+16 +8)[1] > (y+48 +8)[3]) goto gt; if ((x+16 +8)[1] < (y+48 +8)[3]) goto lt; if ((x+16 +8)[2] > (y+48 +8)[3]) goto gt; if ((x+16 +8)[2] < (y+48 +8)[3]) goto lt; if ((x+16 +8)[3] > (y+48 +8)[3]) goto gt; if ((x+16 +8)[3] < (y+48 +8)[3]) goto lt; if ((x+16 +12)[0] > (y+48 +8)[0]) goto gt; if ((x+16 +12)[0] < (y+48 +8)[0]) goto lt; if ((x+16 +12)[1] > (y+48 +8)[0]) goto gt; if ((x+16 +12)[1] < (y+48 +8)[0]) goto lt; if ((x+16 +12)[2] > (y+48 +8)[0]) goto gt; if ((x+16 +12)[2] < (y+48 +8)[0]) goto lt; if ((x+16 +12)[3] > (y+48 +8)[0]) goto gt; if ((x+16 +12)[3] < (y+48 +8)[0]) goto lt; if ((x+16 +12)[0] > (y+48 +8)[1]) goto gt; if ((x+16 +12)[0] < (y+48 +8)[1]) goto lt; if ((x+16 +12)[1] > (y+48 +8)[1]) goto gt; if ((x+16 +12)[1] < (y+48 +8)[1]) goto lt; if ((x+16 +12)[2] > (y+48 +8)[1]) goto gt; if ((x+16 +12)[2] < (y+48 +8)[1]) goto lt; if ((x+16 +12)[3] > (y+48 +8)[1]) goto gt; if ((x+16 +12)[3] < (y+48 +8)[1]) goto lt; if ((x+16 +12)[0] > (y+48 +8)[2]) goto gt; if ((x+16 +12)[0] < (y+48 +8)[2]) goto lt; if ((x+16 +12)[1] > (y+48 +8)[2]) goto gt; if ((x+16 +12)[1] < (y+48 +8)[2]) goto lt; if ((x+16 +12)[2] > (y+48 +8)[2]) goto gt; if ((x+16 +12)[2] < (y+48 +8)[2]) goto lt; if ((x+16 +12)[3] > (y+48 +8)[2]) goto gt; if ((x+16 +12)[3] < (y+48 +8)[2]) goto lt; if ((x+16 +12)[0] > (y+48 +8)[3]) goto gt; if ((x+16 +12)[0] < (y+48 +8)[3]) goto lt; if ((x+16 +12)[1] > (y+48 +8)[3]) goto gt; if ((x+16 +12)[1] < (y+48 +8)[3]) goto lt; if ((x+16 +12)[2] > (y+48 +8)[3]) goto gt; if ((x+16 +12)[2] < (y+48 +8)[3]) goto lt; if ((x+16 +12)[3] > (y+48 +8)[3]) goto gt; if ((x+16 +12)[3] < (y+48 +8)[3]) goto lt; if ((x+16)[0] > (y+48 +12)[0]) goto gt; if ((x+16)[0] < (y+48 +12)[0]) goto lt; if ((x+16)[1] > (y+48 +12)[0]) goto gt; if ((x+16)[1] < (y+48 +12)[0]) goto lt; if ((x+16)[2] > (y+48 +12)[0]) goto gt; if ((x+16)[2] < (y+48 +12)[0]) goto lt; if ((x+16)[3] > (y+48 +12)[0]) goto gt; if ((x+16)[3] < (y+48 +12)[0]) goto lt; if ((x+16)[0] > (y+48 +12)[1]) goto gt; if ((x+16)[0] < (y+48 +12)[1]) goto lt; if ((x+16)[1] > (y+48 +12)[1]) goto gt; if ((x+16)[1] < (y+48 +12)[1]) goto lt; if ((x+16)[2] > (y+48 +12)[1]) goto gt; if ((x+16)[2] < (y+48 +12)[1]) goto lt; if ((x+16)[3] > (y+48 +12)[1]) goto gt; if ((x+16)[3] < (y+48 +12)[1]) goto lt; if ((x+16)[0] > (y+48 +12)[2]) goto gt; if ((x+16)[0] < (y+48 +12)[2]) goto lt; if ((x+16)[1] > (y+48 +12)[2]) goto gt; if ((x+16)[1] < (y+48 +12)[2]) goto lt; if ((x+16)[2] > (y+48 +12)[2]) goto gt; if ((x+16)[2] < (y+48 +12)[2]) goto lt; if ((x+16)[3] > (y+48 +12)[2]) goto gt; if ((x+16)[3] < (y+48 +12)[2]) goto lt; if ((x+16)[0] > (y+48 +12)[3]) goto gt; if ((x+16)[0] < (y+48 +12)[3]) goto lt; if ((x+16)[1] > (y+48 +12)[3]) goto gt; if ((x+16)[1] < (y+48 +12)[3]) goto lt; if ((x+16)[2] > (y+48 +12)[3]) goto gt; if ((x+16)[2] < (y+48 +12)[3]) goto lt; if ((x+16)[3] > (y+48 +12)[3]) goto gt; if ((x+16)[3] < (y+48 +12)[3]) goto lt; if ((x+16 +4)[0] > (y+48 +12)[0]) goto gt; if ((x+16 +4)[0] < (y+48 +12)[0]) goto lt; if ((x+16 +4)[1] > (y+48 +12)[0]) goto gt; if ((x+16 +4)[1] < (y+48 +12)[0]) goto lt; if ((x+16 +4)[2] > (y+48 +12)[0]) goto gt; if ((x+16 +4)[2] < (y+48 +12)[0]) goto lt; if ((x+16 +4)[3] > (y+48 +12)[0]) goto gt; if ((x+16 +4)[3] < (y+48 +12)[0]) goto lt; if ((x+16 +4)[0] > (y+48 +12)[1]) goto gt; if ((x+16 +4)[0] < (y+48 +12)[1]) goto lt; if ((x+16 +4)[1] > (y+48 +12)[1]) goto gt; if ((x+16 +4)[1] < (y+48 +12)[1]) goto lt; if ((x+16 +4)[2] > (y+48 +12)[1]) goto gt; if ((x+16 +4)[2] < (y+48 +12)[1]) goto lt; if ((x+16 +4)[3] > (y+48 +12)[1]) goto gt; if ((x+16 +4)[3] < (y+48 +12)[1]) goto lt; if ((x+16 +4)[0] > (y+48 +12)[2]) goto gt; if ((x+16 +4)[0] < (y+48 +12)[2]) goto lt; if ((x+16 +4)[1] > (y+48 +12)[2]) goto gt; if ((x+16 +4)[1] < (y+48 +12)[2]) goto lt; if ((x+16 +4)[2] > (y+48 +12)[2]) goto gt; if ((x+16 +4)[2] < (y+48 +12)[2]) goto lt; if ((x+16 +4)[3] > (y+48 +12)[2]) goto gt; if ((x+16 +4)[3] < (y+48 +12)[2]) goto lt; if ((x+16 +4)[0] > (y+48 +12)[3]) goto gt; if ((x+16 +4)[0] < (y+48 +12)[3]) goto lt; if ((x+16 +4)[1] > (y+48 +12)[3]) goto gt; if ((x+16 +4)[1] < (y+48 +12)[3]) goto lt; if ((x+16 +4)[2] > (y+48 +12)[3]) goto gt; if ((x+16 +4)[2] < (y+48 +12)[3]) goto lt; if ((x+16 +4)[3] > (y+48 +12)[3]) goto gt; if ((x+16 +4)[3] < (y+48 +12)[3]) goto lt; if ((x+16 +8)[0] > (y+48 +12)[0]) goto gt; if ((x+16 +8)[0] < (y+48 +12)[0]) goto lt; if ((x+16 +8)[1] > (y+48 +12)[0]) goto gt; if ((x+16 +8)[1] < (y+48 +12)[0]) goto lt; if ((x+16 +8)[2] > (y+48 +12)[0]) goto gt; if ((x+16 +8)[2] < (y+48 +12)[0]) goto lt; if ((x+16 +8)[3] > (y+48 +12)[0]) goto gt; if ((x+16 +8)[3] < (y+48 +12)[0]) goto lt; if ((x+16 +8)[0] > (y+48 +12)[1]) goto gt; if ((x+16 +8)[0] < (y+48 +12)[1]) goto lt; if ((x+16 +8)[1] > (y+48 +12)[1]) goto gt; if ((x+16 +8)[1] < (y+48 +12)[1]) goto lt; if ((x+16 +8)[2] > (y+48 +12)[1]) goto gt; if ((x+16 +8)[2] < (y+48 +12)[1]) goto lt; if ((x+16 +8)[3] > (y+48 +12)[1]) goto gt; if ((x+16 +8)[3] < (y+48 +12)[1]) goto lt; if ((x+16 +8)[0] > (y+48 +12)[2]) goto gt; if ((x+16 +8)[0] < (y+48 +12)[2]) goto lt; if ((x+16 +8)[1] > (y+48 +12)[2]) goto gt; if ((x+16 +8)[1] < (y+48 +12)[2]) goto lt; if ((x+16 +8)[2] > (y+48 +12)[2]) goto gt; if ((x+16 +8)[2] < (y+48 +12)[2]) goto lt; if ((x+16 +8)[3] > (y+48 +12)[2]) goto gt; if ((x+16 +8)[3] < (y+48 +12)[2]) goto lt; if ((x+16 +8)[0] > (y+48 +12)[3]) goto gt; if ((x+16 +8)[0] < (y+48 +12)[3]) goto lt; if ((x+16 +8)[1] > (y+48 +12)[3]) goto gt; if ((x+16 +8)[1] < (y+48 +12)[3]) goto lt; if ((x+16 +8)[2] > (y+48 +12)[3]) goto gt; if ((x+16 +8)[2] < (y+48 +12)[3]) goto lt; if ((x+16 +8)[3] > (y+48 +12)[3]) goto gt; if ((x+16 +8)[3] < (y+48 +12)[3]) goto lt; if ((x+16 +12)[0] > (y+48 +12)[0]) goto gt; if ((x+16 +12)[0] < (y+48 +12)[0]) goto lt; if ((x+16 +12)[1] > (y+48 +12)[0]) goto gt; if ((x+16 +12)[1] < (y+48 +12)[0]) goto lt; if ((x+16 +12)[2] > (y+48 +12)[0]) goto gt; if ((x+16 +12)[2] < (y+48 +12)[0]) goto lt; if ((x+16 +12)[3] > (y+48 +12)[0]) goto gt; if ((x+16 +12)[3] < (y+48 +12)[0]) goto lt; if ((x+16 +12)[0] > (y+48 +12)[1]) goto gt; if ((x+16 +12)[0] < (y+48 +12)[1]) goto lt; if ((x+16 +12)[1] > (y+48 +12)[1]) goto gt; if ((x+16 +12)[1] < (y+48 +12)[1]) goto lt; if ((x+16 +12)[2] > (y+48 +12)[1]) goto gt; if ((x+16 +12)[2] < (y+48 +12)[1]) goto lt; if ((x+16 +12)[3] > (y+48 +12)[1]) goto gt; if ((x+16 +12)[3] < (y+48 +12)[1]) goto lt; if ((x+16 +12)[0] > (y+48 +12)[2]) goto gt; if ((x+16 +12)[0] < (y+48 +12)[2]) goto lt; if ((x+16 +12)[1] > (y+48 +12)[2]) goto gt; if ((x+16 +12)[1] < (y+48 +12)[2]) goto lt; if ((x+16 +12)[2] > (y+48 +12)[2]) goto gt; if ((x+16 +12)[2] < (y+48 +12)[2]) goto lt; if ((x+16 +12)[3] > (y+48 +12)[2]) goto gt; if ((x+16 +12)[3] < (y+48 +12)[2]) goto lt; if ((x+16 +12)[0] > (y+48 +12)[3]) goto gt; if ((x+16 +12)[0] < (y+48 +12)[3]) goto lt; if ((x+16 +12)[1] > (y+48 +12)[3]) goto gt; if ((x+16 +12)[1] < (y+48 +12)[3]) goto lt; if ((x+16 +12)[2] > (y+48 +12)[3]) goto gt; if ((x+16 +12)[2] < (y+48 +12)[3]) goto lt; if ((x+16 +12)[3] > (y+48 +12)[3]) goto gt; if ((x+16 +12)[3] < (y+48 +12)[3]) goto lt; if ((x+32)[0] > (y+48)[0]) goto gt; if ((x+32)[0] < (y+48)[0]) goto lt; if ((x+32)[1] > (y+48)[0]) goto gt; if ((x+32)[1] < (y+48)[0]) goto lt; if ((x+32)[2] > (y+48)[0]) goto gt; if ((x+32)[2] < (y+48)[0]) goto lt; if ((x+32)[3] > (y+48)[0]) goto gt; if ((x+32)[3] < (y+48)[0]) goto lt; if ((x+32)[0] > (y+48)[1]) goto gt; if ((x+32)[0] < (y+48)[1]) goto lt; if ((x+32)[1] > (y+48)[1]) goto gt; if ((x+32)[1] < (y+48)[1]) goto lt; if ((x+32)[2] > (y+48)[1]) goto gt; if ((x+32)[2] < (y+48)[1]) goto lt; if ((x+32)[3] > (y+48)[1]) goto gt; if ((x+32)[3] < (y+48)[1]) goto lt; if ((x+32)[0] > (y+48)[2]) goto gt; if ((x+32)[0] < (y+48)[2]) goto lt; if ((x+32)[1] > (y+48)[2]) goto gt; if ((x+32)[1] < (y+48)[2]) goto lt; if ((x+32)[2] > (y+48)[2]) goto gt; if ((x+32)[2] < (y+48)[2]) goto lt; if ((x+32)[3] > (y+48)[2]) goto gt; if ((x+32)[3] < (y+48)[2]) goto lt; if ((x+32)[0] > (y+48)[3]) goto gt; if ((x+32)[0] < (y+48)[3]) goto lt; if ((x+32)[1] > (y+48)[3]) goto gt; if ((x+32)[1] < (y+48)[3]) goto lt; if ((x+32)[2] > (y+48)[3]) goto gt; if ((x+32)[2] < (y+48)[3]) goto lt; if ((x+32)[3] > (y+48)[3]) goto gt; if ((x+32)[3] < (y+48)[3]) goto lt; if ((x+32 +4)[0] > (y+48)[0]) goto gt; if ((x+32 +4)[0] < (y+48)[0]) goto lt; if ((x+32 +4)[1] > (y+48)[0]) goto gt; if ((x+32 +4)[1] < (y+48)[0]) goto lt; if ((x+32 +4)[2] > (y+48)[0]) goto gt; if ((x+32 +4)[2] < (y+48)[0]) goto lt; if ((x+32 +4)[3] > (y+48)[0]) goto gt; if ((x+32 +4)[3] < (y+48)[0]) goto lt; if ((x+32 +4)[0] > (y+48)[1]) goto gt; if ((x+32 +4)[0] < (y+48)[1]) goto lt; if ((x+32 +4)[1] > (y+48)[1]) goto gt; if ((x+32 +4)[1] < (y+48)[1]) goto lt; if ((x+32 +4)[2] > (y+48)[1]) goto gt; if ((x+32 +4)[2] < (y+48)[1]) goto lt; if ((x+32 +4)[3] > (y+48)[1]) goto gt; if ((x+32 +4)[3] < (y+48)[1]) goto lt; if ((x+32 +4)[0] > (y+48)[2]) goto gt; if ((x+32 +4)[0] < (y+48)[2]) goto lt; if ((x+32 +4)[1] > (y+48)[2]) goto gt; if ((x+32 +4)[1] < (y+48)[2]) goto lt; if ((x+32 +4)[2] > (y+48)[2]) goto gt; if ((x+32 +4)[2] < (y+48)[2]) goto lt; if ((x+32 +4)[3] > (y+48)[2]) goto gt; if ((x+32 +4)[3] < (y+48)[2]) goto lt; if ((x+32 +4)[0] > (y+48)[3]) goto gt; if ((x+32 +4)[0] < (y+48)[3]) goto lt; if ((x+32 +4)[1] > (y+48)[3]) goto gt; if ((x+32 +4)[1] < (y+48)[3]) goto lt; if ((x+32 +4)[2] > (y+48)[3]) goto gt; if ((x+32 +4)[2] < (y+48)[3]) goto lt; if ((x+32 +4)[3] > (y+48)[3]) goto gt; if ((x+32 +4)[3] < (y+48)[3]) goto lt; if ((x+32 +8)[0] > (y+48)[0]) goto gt; if ((x+32 +8)[0] < (y+48)[0]) goto lt; if ((x+32 +8)[1] > (y+48)[0]) goto gt; if ((x+32 +8)[1] < (y+48)[0]) goto lt; if ((x+32 +8)[2] > (y+48)[0]) goto gt; if ((x+32 +8)[2] < (y+48)[0]) goto lt; if ((x+32 +8)[3] > (y+48)[0]) goto gt; if ((x+32 +8)[3] < (y+48)[0]) goto lt; if ((x+32 +8)[0] > (y+48)[1]) goto gt; if ((x+32 +8)[0] < (y+48)[1]) goto lt; if ((x+32 +8)[1] > (y+48)[1]) goto gt; if ((x+32 +8)[1] < (y+48)[1]) goto lt; if ((x+32 +8)[2] > (y+48)[1]) goto gt; if ((x+32 +8)[2] < (y+48)[1]) goto lt; if ((x+32 +8)[3] > (y+48)[1]) goto gt; if ((x+32 +8)[3] < (y+48)[1]) goto lt; if ((x+32 +8)[0] > (y+48)[2]) goto gt; if ((x+32 +8)[0] < (y+48)[2]) goto lt; if ((x+32 +8)[1] > (y+48)[2]) goto gt; if ((x+32 +8)[1] < (y+48)[2]) goto lt; if ((x+32 +8)[2] > (y+48)[2]) goto gt; if ((x+32 +8)[2] < (y+48)[2]) goto lt; if ((x+32 +8)[3] > (y+48)[2]) goto gt; if ((x+32 +8)[3] < (y+48)[2]) goto lt; if ((x+32 +8)[0] > (y+48)[3]) goto gt; if ((x+32 +8)[0] < (y+48)[3]) goto lt; if ((x+32 +8)[1] > (y+48)[3]) goto gt; if ((x+32 +8)[1] < (y+48)[3]) goto lt; if ((x+32 +8)[2] > (y+48)[3]) goto gt; if ((x+32 +8)[2] < (y+48)[3]) goto lt; if ((x+32 +8)[3] > (y+48)[3]) goto gt; if ((x+32 +8)[3] < (y+48)[3]) goto lt; if ((x+32 +12)[0] > (y+48)[0]) goto gt; if ((x+32 +12)[0] < (y+48)[0]) goto lt; if ((x+32 +12)[1] > (y+48)[0]) goto gt; if ((x+32 +12)[1] < (y+48)[0]) goto lt; if ((x+32 +12)[2] > (y+48)[0]) goto gt; if ((x+32 +12)[2] < (y+48)[0]) goto lt; if ((x+32 +12)[3] > (y+48)[0]) goto gt; if ((x+32 +12)[3] < (y+48)[0]) goto lt; if ((x+32 +12)[0] > (y+48)[1]) goto gt; if ((x+32 +12)[0] < (y+48)[1]) goto lt; if ((x+32 +12)[1] > (y+48)[1]) goto gt; if ((x+32 +12)[1] < (y+48)[1]) goto lt; if ((x+32 +12)[2] > (y+48)[1]) goto gt; if ((x+32 +12)[2] < (y+48)[1]) goto lt; if ((x+32 +12)[3] > (y+48)[1]) goto gt; if ((x+32 +12)[3] < (y+48)[1]) goto lt; if ((x+32 +12)[0] > (y+48)[2]) goto gt; if ((x+32 +12)[0] < (y+48)[2]) goto lt; if ((x+32 +12)[1] > (y+48)[2]) goto gt; if ((x+32 +12)[1] < (y+48)[2]) goto lt; if ((x+32 +12)[2] > (y+48)[2]) goto gt; if ((x+32 +12)[2] < (y+48)[2]) goto lt; if ((x+32 +12)[3] > (y+48)[2]) goto gt; if ((x+32 +12)[3] < (y+48)[2]) goto lt; if ((x+32 +12)[0] > (y+48)[3]) goto gt; if ((x+32 +12)[0] < (y+48)[3]) goto lt; if ((x+32 +12)[1] > (y+48)[3]) goto gt; if ((x+32 +12)[1] < (y+48)[3]) goto lt; if ((x+32 +12)[2] > (y+48)[3]) goto gt; if ((x+32 +12)[2] < (y+48)[3]) goto lt; if ((x+32 +12)[3] > (y+48)[3]) goto gt; if ((x+32 +12)[3] < (y+48)[3]) goto lt; if ((x+32)[0] > (y+48 +4)[0]) goto gt; if ((x+32)[0] < (y+48 +4)[0]) goto lt; if ((x+32)[1] > (y+48 +4)[0]) goto gt; if ((x+32)[1] < (y+48 +4)[0]) goto lt; if ((x+32)[2] > (y+48 +4)[0]) goto gt; if ((x+32)[2] < (y+48 +4)[0]) goto lt; if ((x+32)[3] > (y+48 +4)[0]) goto gt; if ((x+32)[3] < (y+48 +4)[0]) goto lt; if ((x+32)[0] > (y+48 +4)[1]) goto gt; if ((x+32)[0] < (y+48 +4)[1]) goto lt; if ((x+32)[1] > (y+48 +4)[1]) goto gt; if ((x+32)[1] < (y+48 +4)[1]) goto lt; if ((x+32)[2] > (y+48 +4)[1]) goto gt; if ((x+32)[2] < (y+48 +4)[1]) goto lt; if ((x+32)[3] > (y+48 +4)[1]) goto gt; if ((x+32)[3] < (y+48 +4)[1]) goto lt; if ((x+32)[0] > (y+48 +4)[2]) goto gt; if ((x+32)[0] < (y+48 +4)[2]) goto lt; if ((x+32)[1] > (y+48 +4)[2]) goto gt; if ((x+32)[1] < (y+48 +4)[2]) goto lt; if ((x+32)[2] > (y+48 +4)[2]) goto gt; if ((x+32)[2] < (y+48 +4)[2]) goto lt; if ((x+32)[3] > (y+48 +4)[2]) goto gt; if ((x+32)[3] < (y+48 +4)[2]) goto lt; if ((x+32)[0] > (y+48 +4)[3]) goto gt; if ((x+32)[0] < (y+48 +4)[3]) goto lt; if ((x+32)[1] > (y+48 +4)[3]) goto gt; if ((x+32)[1] < (y+48 +4)[3]) goto lt; if ((x+32)[2] > (y+48 +4)[3]) goto gt; if ((x+32)[2] < (y+48 +4)[3]) goto lt; if ((x+32)[3] > (y+48 +4)[3]) goto gt; if ((x+32)[3] < (y+48 +4)[3]) goto lt; if ((x+32 +4)[0] > (y+48 +4)[0]) goto gt; if ((x+32 +4)[0] < (y+48 +4)[0]) goto lt; if ((x+32 +4)[1] > (y+48 +4)[0]) goto gt; if ((x+32 +4)[1] < (y+48 +4)[0]) goto lt; if ((x+32 +4)[2] > (y+48 +4)[0]) goto gt; if ((x+32 +4)[2] < (y+48 +4)[0]) goto lt; if ((x+32 +4)[3] > (y+48 +4)[0]) goto gt; if ((x+32 +4)[3] < (y+48 +4)[0]) goto lt; if ((x+32 +4)[0] > (y+48 +4)[1]) goto gt; if ((x+32 +4)[0] < (y+48 +4)[1]) goto lt; if ((x+32 +4)[1] > (y+48 +4)[1]) goto gt; if ((x+32 +4)[1] < (y+48 +4)[1]) goto lt; if ((x+32 +4)[2] > (y+48 +4)[1]) goto gt; if ((x+32 +4)[2] < (y+48 +4)[1]) goto lt; if ((x+32 +4)[3] > (y+48 +4)[1]) goto gt; if ((x+32 +4)[3] < (y+48 +4)[1]) goto lt; if ((x+32 +4)[0] > (y+48 +4)[2]) goto gt; if ((x+32 +4)[0] < (y+48 +4)[2]) goto lt; if ((x+32 +4)[1] > (y+48 +4)[2]) goto gt; if ((x+32 +4)[1] < (y+48 +4)[2]) goto lt; if ((x+32 +4)[2] > (y+48 +4)[2]) goto gt; if ((x+32 +4)[2] < (y+48 +4)[2]) goto lt; if ((x+32 +4)[3] > (y+48 +4)[2]) goto gt; if ((x+32 +4)[3] < (y+48 +4)[2]) goto lt; if ((x+32 +4)[0] > (y+48 +4)[3]) goto gt; if ((x+32 +4)[0] < (y+48 +4)[3]) goto lt; if ((x+32 +4)[1] > (y+48 +4)[3]) goto gt; if ((x+32 +4)[1] < (y+48 +4)[3]) goto lt; if ((x+32 +4)[2] > (y+48 +4)[3]) goto gt; if ((x+32 +4)[2] < (y+48 +4)[3]) goto lt; if ((x+32 +4)[3] > (y+48 +4)[3]) goto gt; if ((x+32 +4)[3] < (y+48 +4)[3]) goto lt; if ((x+32 +8)[0] > (y+48 +4)[0]) goto gt; if ((x+32 +8)[0] < (y+48 +4)[0]) goto lt; if ((x+32 +8)[1] > (y+48 +4)[0]) goto gt; if ((x+32 +8)[1] < (y+48 +4)[0]) goto lt; if ((x+32 +8)[2] > (y+48 +4)[0]) goto gt; if ((x+32 +8)[2] < (y+48 +4)[0]) goto lt; if ((x+32 +8)[3] > (y+48 +4)[0]) goto gt; if ((x+32 +8)[3] < (y+48 +4)[0]) goto lt; if ((x+32 +8)[0] > (y+48 +4)[1]) goto gt; if ((x+32 +8)[0] < (y+48 +4)[1]) goto lt; if ((x+32 +8)[1] > (y+48 +4)[1]) goto gt; if ((x+32 +8)[1] < (y+48 +4)[1]) goto lt; if ((x+32 +8)[2] > (y+48 +4)[1]) goto gt; if ((x+32 +8)[2] < (y+48 +4)[1]) goto lt; if ((x+32 +8)[3] > (y+48 +4)[1]) goto gt; if ((x+32 +8)[3] < (y+48 +4)[1]) goto lt; if ((x+32 +8)[0] > (y+48 +4)[2]) goto gt; if ((x+32 +8)[0] < (y+48 +4)[2]) goto lt; if ((x+32 +8)[1] > (y+48 +4)[2]) goto gt; if ((x+32 +8)[1] < (y+48 +4)[2]) goto lt; if ((x+32 +8)[2] > (y+48 +4)[2]) goto gt; if ((x+32 +8)[2] < (y+48 +4)[2]) goto lt; if ((x+32 +8)[3] > (y+48 +4)[2]) goto gt; if ((x+32 +8)[3] < (y+48 +4)[2]) goto lt; if ((x+32 +8)[0] > (y+48 +4)[3]) goto gt; if ((x+32 +8)[0] < (y+48 +4)[3]) goto lt; if ((x+32 +8)[1] > (y+48 +4)[3]) goto gt; if ((x+32 +8)[1] < (y+48 +4)[3]) goto lt; if ((x+32 +8)[2] > (y+48 +4)[3]) goto gt; if ((x+32 +8)[2] < (y+48 +4)[3]) goto lt; if ((x+32 +8)[3] > (y+48 +4)[3]) goto gt; if ((x+32 +8)[3] < (y+48 +4)[3]) goto lt; if ((x+32 +12)[0] > (y+48 +4)[0]) goto gt; if ((x+32 +12)[0] < (y+48 +4)[0]) goto lt; if ((x+32 +12)[1] > (y+48 +4)[0]) goto gt; if ((x+32 +12)[1] < (y+48 +4)[0]) goto lt; if ((x+32 +12)[2] > (y+48 +4)[0]) goto gt; if ((x+32 +12)[2] < (y+48 +4)[0]) goto lt; if ((x+32 +12)[3] > (y+48 +4)[0]) goto gt; if ((x+32 +12)[3] < (y+48 +4)[0]) goto lt; if ((x+32 +12)[0] > (y+48 +4)[1]) goto gt; if ((x+32 +12)[0] < (y+48 +4)[1]) goto lt; if ((x+32 +12)[1] > (y+48 +4)[1]) goto gt; if ((x+32 +12)[1] < (y+48 +4)[1]) goto lt; if ((x+32 +12)[2] > (y+48 +4)[1]) goto gt; if ((x+32 +12)[2] < (y+48 +4)[1]) goto lt; if ((x+32 +12)[3] > (y+48 +4)[1]) goto gt; if ((x+32 +12)[3] < (y+48 +4)[1]) goto lt; if ((x+32 +12)[0] > (y+48 +4)[2]) goto gt; if ((x+32 +12)[0] < (y+48 +4)[2]) goto lt; if ((x+32 +12)[1] > (y+48 +4)[2]) goto gt; if ((x+32 +12)[1] < (y+48 +4)[2]) goto lt; if ((x+32 +12)[2] > (y+48 +4)[2]) goto gt; if ((x+32 +12)[2] < (y+48 +4)[2]) goto lt; if ((x+32 +12)[3] > (y+48 +4)[2]) goto gt; if ((x+32 +12)[3] < (y+48 +4)[2]) goto lt; if ((x+32 +12)[0] > (y+48 +4)[3]) goto gt; if ((x+32 +12)[0] < (y+48 +4)[3]) goto lt; if ((x+32 +12)[1] > (y+48 +4)[3]) goto gt; if ((x+32 +12)[1] < (y+48 +4)[3]) goto lt; if ((x+32 +12)[2] > (y+48 +4)[3]) goto gt; if ((x+32 +12)[2] < (y+48 +4)[3]) goto lt; if ((x+32 +12)[3] > (y+48 +4)[3]) goto gt; if ((x+32 +12)[3] < (y+48 +4)[3]) goto lt; if ((x+32)[0] > (y+48 +8)[0]) goto gt; if ((x+32)[0] < (y+48 +8)[0]) goto lt; if ((x+32)[1] > (y+48 +8)[0]) goto gt; if ((x+32)[1] < (y+48 +8)[0]) goto lt; if ((x+32)[2] > (y+48 +8)[0]) goto gt; if ((x+32)[2] < (y+48 +8)[0]) goto lt; if ((x+32)[3] > (y+48 +8)[0]) goto gt; if ((x+32)[3] < (y+48 +8)[0]) goto lt; if ((x+32)[0] > (y+48 +8)[1]) goto gt; if ((x+32)[0] < (y+48 +8)[1]) goto lt; if ((x+32)[1] > (y+48 +8)[1]) goto gt; if ((x+32)[1] < (y+48 +8)[1]) goto lt; if ((x+32)[2] > (y+48 +8)[1]) goto gt; if ((x+32)[2] < (y+48 +8)[1]) goto lt; if ((x+32)[3] > (y+48 +8)[1]) goto gt; if ((x+32)[3] < (y+48 +8)[1]) goto lt; if ((x+32)[0] > (y+48 +8)[2]) goto gt; if ((x+32)[0] < (y+48 +8)[2]) goto lt; if ((x+32)[1] > (y+48 +8)[2]) goto gt; if ((x+32)[1] < (y+48 +8)[2]) goto lt; if ((x+32)[2] > (y+48 +8)[2]) goto gt; if ((x+32)[2] < (y+48 +8)[2]) goto lt; if ((x+32)[3] > (y+48 +8)[2]) goto gt; if ((x+32)[3] < (y+48 +8)[2]) goto lt; if ((x+32)[0] > (y+48 +8)[3]) goto gt; if ((x+32)[0] < (y+48 +8)[3]) goto lt; if ((x+32)[1] > (y+48 +8)[3]) goto gt; if ((x+32)[1] < (y+48 +8)[3]) goto lt; if ((x+32)[2] > (y+48 +8)[3]) goto gt; if ((x+32)[2] < (y+48 +8)[3]) goto lt; if ((x+32)[3] > (y+48 +8)[3]) goto gt; if ((x+32)[3] < (y+48 +8)[3]) goto lt; if ((x+32 +4)[0] > (y+48 +8)[0]) goto gt; if ((x+32 +4)[0] < (y+48 +8)[0]) goto lt; if ((x+32 +4)[1] > (y+48 +8)[0]) goto gt; if ((x+32 +4)[1] < (y+48 +8)[0]) goto lt; if ((x+32 +4)[2] > (y+48 +8)[0]) goto gt; if ((x+32 +4)[2] < (y+48 +8)[0]) goto lt; if ((x+32 +4)[3] > (y+48 +8)[0]) goto gt; if ((x+32 +4)[3] < (y+48 +8)[0]) goto lt; if ((x+32 +4)[0] > (y+48 +8)[1]) goto gt; if ((x+32 +4)[0] < (y+48 +8)[1]) goto lt; if ((x+32 +4)[1] > (y+48 +8)[1]) goto gt; if ((x+32 +4)[1] < (y+48 +8)[1]) goto lt; if ((x+32 +4)[2] > (y+48 +8)[1]) goto gt; if ((x+32 +4)[2] < (y+48 +8)[1]) goto lt; if ((x+32 +4)[3] > (y+48 +8)[1]) goto gt; if ((x+32 +4)[3] < (y+48 +8)[1]) goto lt; if ((x+32 +4)[0] > (y+48 +8)[2]) goto gt; if ((x+32 +4)[0] < (y+48 +8)[2]) goto lt; if ((x+32 +4)[1] > (y+48 +8)[2]) goto gt; if ((x+32 +4)[1] < (y+48 +8)[2]) goto lt; if ((x+32 +4)[2] > (y+48 +8)[2]) goto gt; if ((x+32 +4)[2] < (y+48 +8)[2]) goto lt; if ((x+32 +4)[3] > (y+48 +8)[2]) goto gt; if ((x+32 +4)[3] < (y+48 +8)[2]) goto lt; if ((x+32 +4)[0] > (y+48 +8)[3]) goto gt; if ((x+32 +4)[0] < (y+48 +8)[3]) goto lt; if ((x+32 +4)[1] > (y+48 +8)[3]) goto gt; if ((x+32 +4)[1] < (y+48 +8)[3]) goto lt; if ((x+32 +4)[2] > (y+48 +8)[3]) goto gt; if ((x+32 +4)[2] < (y+48 +8)[3]) goto lt; if ((x+32 +4)[3] > (y+48 +8)[3]) goto gt; if ((x+32 +4)[3] < (y+48 +8)[3]) goto lt; if ((x+32 +8)[0] > (y+48 +8)[0]) goto gt; if ((x+32 +8)[0] < (y+48 +8)[0]) goto lt; if ((x+32 +8)[1] > (y+48 +8)[0]) goto gt; if ((x+32 +8)[1] < (y+48 +8)[0]) goto lt; if ((x+32 +8)[2] > (y+48 +8)[0]) goto gt; if ((x+32 +8)[2] < (y+48 +8)[0]) goto lt; if ((x+32 +8)[3] > (y+48 +8)[0]) goto gt; if ((x+32 +8)[3] < (y+48 +8)[0]) goto lt; if ((x+32 +8)[0] > (y+48 +8)[1]) goto gt; if ((x+32 +8)[0] < (y+48 +8)[1]) goto lt; if ((x+32 +8)[1] > (y+48 +8)[1]) goto gt; if ((x+32 +8)[1] < (y+48 +8)[1]) goto lt; if ((x+32 +8)[2] > (y+48 +8)[1]) goto gt; if ((x+32 +8)[2] < (y+48 +8)[1]) goto lt; if ((x+32 +8)[3] > (y+48 +8)[1]) goto gt; if ((x+32 +8)[3] < (y+48 +8)[1]) goto lt; if ((x+32 +8)[0] > (y+48 +8)[2]) goto gt; if ((x+32 +8)[0] < (y+48 +8)[2]) goto lt; if ((x+32 +8)[1] > (y+48 +8)[2]) goto gt; if ((x+32 +8)[1] < (y+48 +8)[2]) goto lt; if ((x+32 +8)[2] > (y+48 +8)[2]) goto gt; if ((x+32 +8)[2] < (y+48 +8)[2]) goto lt; if ((x+32 +8)[3] > (y+48 +8)[2]) goto gt; if ((x+32 +8)[3] < (y+48 +8)[2]) goto lt; if ((x+32 +8)[0] > (y+48 +8)[3]) goto gt; if ((x+32 +8)[0] < (y+48 +8)[3]) goto lt; if ((x+32 +8)[1] > (y+48 +8)[3]) goto gt; if ((x+32 +8)[1] < (y+48 +8)[3]) goto lt; if ((x+32 +8)[2] > (y+48 +8)[3]) goto gt; if ((x+32 +8)[2] < (y+48 +8)[3]) goto lt; if ((x+32 +8)[3] > (y+48 +8)[3]) goto gt; if ((x+32 +8)[3] < (y+48 +8)[3]) goto lt; if ((x+32 +12)[0] > (y+48 +8)[0]) goto gt; if ((x+32 +12)[0] < (y+48 +8)[0]) goto lt; if ((x+32 +12)[1] > (y+48 +8)[0]) goto gt; if ((x+32 +12)[1] < (y+48 +8)[0]) goto lt; if ((x+32 +12)[2] > (y+48 +8)[0]) goto gt; if ((x+32 +12)[2] < (y+48 +8)[0]) goto lt; if ((x+32 +12)[3] > (y+48 +8)[0]) goto gt; if ((x+32 +12)[3] < (y+48 +8)[0]) goto lt; if ((x+32 +12)[0] > (y+48 +8)[1]) goto gt; if ((x+32 +12)[0] < (y+48 +8)[1]) goto lt; if ((x+32 +12)[1] > (y+48 +8)[1]) goto gt; if ((x+32 +12)[1] < (y+48 +8)[1]) goto lt; if ((x+32 +12)[2] > (y+48 +8)[1]) goto gt; if ((x+32 +12)[2] < (y+48 +8)[1]) goto lt; if ((x+32 +12)[3] > (y+48 +8)[1]) goto gt; if ((x+32 +12)[3] < (y+48 +8)[1]) goto lt; if ((x+32 +12)[0] > (y+48 +8)[2]) goto gt; if ((x+32 +12)[0] < (y+48 +8)[2]) goto lt; if ((x+32 +12)[1] > (y+48 +8)[2]) goto gt; if ((x+32 +12)[1] < (y+48 +8)[2]) goto lt; if ((x+32 +12)[2] > (y+48 +8)[2]) goto gt; if ((x+32 +12)[2] < (y+48 +8)[2]) goto lt; if ((x+32 +12)[3] > (y+48 +8)[2]) goto gt; if ((x+32 +12)[3] < (y+48 +8)[2]) goto lt; if ((x+32 +12)[0] > (y+48 +8)[3]) goto gt; if ((x+32 +12)[0] < (y+48 +8)[3]) goto lt; if ((x+32 +12)[1] > (y+48 +8)[3]) goto gt; if ((x+32 +12)[1] < (y+48 +8)[3]) goto lt; if ((x+32 +12)[2] > (y+48 +8)[3]) goto gt; if ((x+32 +12)[2] < (y+48 +8)[3]) goto lt; if ((x+32 +12)[3] > (y+48 +8)[3]) goto gt; if ((x+32 +12)[3] < (y+48 +8)[3]) goto lt; if ((x+32)[0] > (y+48 +12)[0]) goto gt; if ((x+32)[0] < (y+48 +12)[0]) goto lt; if ((x+32)[1] > (y+48 +12)[0]) goto gt; if ((x+32)[1] < (y+48 +12)[0]) goto lt; if ((x+32)[2] > (y+48 +12)[0]) goto gt; if ((x+32)[2] < (y+48 +12)[0]) goto lt; if ((x+32)[3] > (y+48 +12)[0]) goto gt; if ((x+32)[3] < (y+48 +12)[0]) goto lt; if ((x+32)[0] > (y+48 +12)[1]) goto gt; if ((x+32)[0] < (y+48 +12)[1]) goto lt; if ((x+32)[1] > (y+48 +12)[1]) goto gt; if ((x+32)[1] < (y+48 +12)[1]) goto lt; if ((x+32)[2] > (y+48 +12)[1]) goto gt; if ((x+32)[2] < (y+48 +12)[1]) goto lt; if ((x+32)[3] > (y+48 +12)[1]) goto gt; if ((x+32)[3] < (y+48 +12)[1]) goto lt; if ((x+32)[0] > (y+48 +12)[2]) goto gt; if ((x+32)[0] < (y+48 +12)[2]) goto lt; if ((x+32)[1] > (y+48 +12)[2]) goto gt; if ((x+32)[1] < (y+48 +12)[2]) goto lt; if ((x+32)[2] > (y+48 +12)[2]) goto gt; if ((x+32)[2] < (y+48 +12)[2]) goto lt; if ((x+32)[3] > (y+48 +12)[2]) goto gt; if ((x+32)[3] < (y+48 +12)[2]) goto lt; if ((x+32)[0] > (y+48 +12)[3]) goto gt; if ((x+32)[0] < (y+48 +12)[3]) goto lt; if ((x+32)[1] > (y+48 +12)[3]) goto gt; if ((x+32)[1] < (y+48 +12)[3]) goto lt; if ((x+32)[2] > (y+48 +12)[3]) goto gt; if ((x+32)[2] < (y+48 +12)[3]) goto lt; if ((x+32)[3] > (y+48 +12)[3]) goto gt; if ((x+32)[3] < (y+48 +12)[3]) goto lt; if ((x+32 +4)[0] > (y+48 +12)[0]) goto gt; if ((x+32 +4)[0] < (y+48 +12)[0]) goto lt; if ((x+32 +4)[1] > (y+48 +12)[0]) goto gt; if ((x+32 +4)[1] < (y+48 +12)[0]) goto lt; if ((x+32 +4)[2] > (y+48 +12)[0]) goto gt; if ((x+32 +4)[2] < (y+48 +12)[0]) goto lt; if ((x+32 +4)[3] > (y+48 +12)[0]) goto gt; if ((x+32 +4)[3] < (y+48 +12)[0]) goto lt; if ((x+32 +4)[0] > (y+48 +12)[1]) goto gt; if ((x+32 +4)[0] < (y+48 +12)[1]) goto lt; if ((x+32 +4)[1] > (y+48 +12)[1]) goto gt; if ((x+32 +4)[1] < (y+48 +12)[1]) goto lt; if ((x+32 +4)[2] > (y+48 +12)[1]) goto gt; if ((x+32 +4)[2] < (y+48 +12)[1]) goto lt; if ((x+32 +4)[3] > (y+48 +12)[1]) goto gt; if ((x+32 +4)[3] < (y+48 +12)[1]) goto lt; if ((x+32 +4)[0] > (y+48 +12)[2]) goto gt; if ((x+32 +4)[0] < (y+48 +12)[2]) goto lt; if ((x+32 +4)[1] > (y+48 +12)[2]) goto gt; if ((x+32 +4)[1] < (y+48 +12)[2]) goto lt; if ((x+32 +4)[2] > (y+48 +12)[2]) goto gt; if ((x+32 +4)[2] < (y+48 +12)[2]) goto lt; if ((x+32 +4)[3] > (y+48 +12)[2]) goto gt; if ((x+32 +4)[3] < (y+48 +12)[2]) goto lt; if ((x+32 +4)[0] > (y+48 +12)[3]) goto gt; if ((x+32 +4)[0] < (y+48 +12)[3]) goto lt; if ((x+32 +4)[1] > (y+48 +12)[3]) goto gt; if ((x+32 +4)[1] < (y+48 +12)[3]) goto lt; if ((x+32 +4)[2] > (y+48 +12)[3]) goto gt; if ((x+32 +4)[2] < (y+48 +12)[3]) goto lt; if ((x+32 +4)[3] > (y+48 +12)[3]) goto gt; if ((x+32 +4)[3] < (y+48 +12)[3]) goto lt; if ((x+32 +8)[0] > (y+48 +12)[0]) goto gt; if ((x+32 +8)[0] < (y+48 +12)[0]) goto lt; if ((x+32 +8)[1] > (y+48 +12)[0]) goto gt; if ((x+32 +8)[1] < (y+48 +12)[0]) goto lt; if ((x+32 +8)[2] > (y+48 +12)[0]) goto gt; if ((x+32 +8)[2] < (y+48 +12)[0]) goto lt; if ((x+32 +8)[3] > (y+48 +12)[0]) goto gt; if ((x+32 +8)[3] < (y+48 +12)[0]) goto lt; if ((x+32 +8)[0] > (y+48 +12)[1]) goto gt; if ((x+32 +8)[0] < (y+48 +12)[1]) goto lt; if ((x+32 +8)[1] > (y+48 +12)[1]) goto gt; if ((x+32 +8)[1] < (y+48 +12)[1]) goto lt; if ((x+32 +8)[2] > (y+48 +12)[1]) goto gt; if ((x+32 +8)[2] < (y+48 +12)[1]) goto lt; if ((x+32 +8)[3] > (y+48 +12)[1]) goto gt; if ((x+32 +8)[3] < (y+48 +12)[1]) goto lt; if ((x+32 +8)[0] > (y+48 +12)[2]) goto gt; if ((x+32 +8)[0] < (y+48 +12)[2]) goto lt; if ((x+32 +8)[1] > (y+48 +12)[2]) goto gt; if ((x+32 +8)[1] < (y+48 +12)[2]) goto lt; if ((x+32 +8)[2] > (y+48 +12)[2]) goto gt; if ((x+32 +8)[2] < (y+48 +12)[2]) goto lt; if ((x+32 +8)[3] > (y+48 +12)[2]) goto gt; if ((x+32 +8)[3] < (y+48 +12)[2]) goto lt; if ((x+32 +8)[0] > (y+48 +12)[3]) goto gt; if ((x+32 +8)[0] < (y+48 +12)[3]) goto lt; if ((x+32 +8)[1] > (y+48 +12)[3]) goto gt; if ((x+32 +8)[1] < (y+48 +12)[3]) goto lt; if ((x+32 +8)[2] > (y+48 +12)[3]) goto gt; if ((x+32 +8)[2] < (y+48 +12)[3]) goto lt; if ((x+32 +8)[3] > (y+48 +12)[3]) goto gt; if ((x+32 +8)[3] < (y+48 +12)[3]) goto lt; if ((x+32 +12)[0] > (y+48 +12)[0]) goto gt; if ((x+32 +12)[0] < (y+48 +12)[0]) goto lt; if ((x+32 +12)[1] > (y+48 +12)[0]) goto gt; if ((x+32 +12)[1] < (y+48 +12)[0]) goto lt; if ((x+32 +12)[2] > (y+48 +12)[0]) goto gt; if ((x+32 +12)[2] < (y+48 +12)[0]) goto lt; if ((x+32 +12)[3] > (y+48 +12)[0]) goto gt; if ((x+32 +12)[3] < (y+48 +12)[0]) goto lt; if ((x+32 +12)[0] > (y+48 +12)[1]) goto gt; if ((x+32 +12)[0] < (y+48 +12)[1]) goto lt; if ((x+32 +12)[1] > (y+48 +12)[1]) goto gt; if ((x+32 +12)[1] < (y+48 +12)[1]) goto lt; if ((x+32 +12)[2] > (y+48 +12)[1]) goto gt; if ((x+32 +12)[2] < (y+48 +12)[1]) goto lt; if ((x+32 +12)[3] > (y+48 +12)[1]) goto gt; if ((x+32 +12)[3] < (y+48 +12)[1]) goto lt; if ((x+32 +12)[0] > (y+48 +12)[2]) goto gt; if ((x+32 +12)[0] < (y+48 +12)[2]) goto lt; if ((x+32 +12)[1] > (y+48 +12)[2]) goto gt; if ((x+32 +12)[1] < (y+48 +12)[2]) goto lt; if ((x+32 +12)[2] > (y+48 +12)[2]) goto gt; if ((x+32 +12)[2] < (y+48 +12)[2]) goto lt; if ((x+32 +12)[3] > (y+48 +12)[2]) goto gt; if ((x+32 +12)[3] < (y+48 +12)[2]) goto lt; if ((x+32 +12)[0] > (y+48 +12)[3]) goto gt; if ((x+32 +12)[0] < (y+48 +12)[3]) goto lt; if ((x+32 +12)[1] > (y+48 +12)[3]) goto gt; if ((x+32 +12)[1] < (y+48 +12)[3]) goto lt; if ((x+32 +12)[2] > (y+48 +12)[3]) goto gt; if ((x+32 +12)[2] < (y+48 +12)[3]) goto lt; if ((x+32 +12)[3] > (y+48 +12)[3]) goto gt; if ((x+32 +12)[3] < (y+48 +12)[3]) goto lt; if ((x+48)[0] > (y+48)[0]) goto gt; if ((x+48)[0] < (y+48)[0]) goto lt; if ((x+48)[1] > (y+48)[0]) goto gt; if ((x+48)[1] < (y+48)[0]) goto lt; if ((x+48)[2] > (y+48)[0]) goto gt; if ((x+48)[2] < (y+48)[0]) goto lt; if ((x+48)[3] > (y+48)[0]) goto gt; if ((x+48)[3] < (y+48)[0]) goto lt; if ((x+48)[0] > (y+48)[1]) goto gt; if ((x+48)[0] < (y+48)[1]) goto lt; if ((x+48)[1] > (y+48)[1]) goto gt; if ((x+48)[1] < (y+48)[1]) goto lt; if ((x+48)[2] > (y+48)[1]) goto gt; if ((x+48)[2] < (y+48)[1]) goto lt; if ((x+48)[3] > (y+48)[1]) goto gt; if ((x+48)[3] < (y+48)[1]) goto lt; if ((x+48)[0] > (y+48)[2]) goto gt; if ((x+48)[0] < (y+48)[2]) goto lt; if ((x+48)[1] > (y+48)[2]) goto gt; if ((x+48)[1] < (y+48)[2]) goto lt; if ((x+48)[2] > (y+48)[2]) goto gt; if ((x+48)[2] < (y+48)[2]) goto lt; if ((x+48)[3] > (y+48)[2]) goto gt; if ((x+48)[3] < (y+48)[2]) goto lt; if ((x+48)[0] > (y+48)[3]) goto gt; if ((x+48)[0] < (y+48)[3]) goto lt; if ((x+48)[1] > (y+48)[3]) goto gt; if ((x+48)[1] < (y+48)[3]) goto lt; if ((x+48)[2] > (y+48)[3]) goto gt; if ((x+48)[2] < (y+48)[3]) goto lt; if ((x+48)[3] > (y+48)[3]) goto gt; if ((x+48)[3] < (y+48)[3]) goto lt; if ((x+48 +4)[0] > (y+48)[0]) goto gt; if ((x+48 +4)[0] < (y+48)[0]) goto lt; if ((x+48 +4)[1] > (y+48)[0]) goto gt; if ((x+48 +4)[1] < (y+48)[0]) goto lt; if ((x+48 +4)[2] > (y+48)[0]) goto gt; if ((x+48 +4)[2] < (y+48)[0]) goto lt; if ((x+48 +4)[3] > (y+48)[0]) goto gt; if ((x+48 +4)[3] < (y+48)[0]) goto lt; if ((x+48 +4)[0] > (y+48)[1]) goto gt; if ((x+48 +4)[0] < (y+48)[1]) goto lt; if ((x+48 +4)[1] > (y+48)[1]) goto gt; if ((x+48 +4)[1] < (y+48)[1]) goto lt; if ((x+48 +4)[2] > (y+48)[1]) goto gt; if ((x+48 +4)[2] < (y+48)[1]) goto lt; if ((x+48 +4)[3] > (y+48)[1]) goto gt; if ((x+48 +4)[3] < (y+48)[1]) goto lt; if ((x+48 +4)[0] > (y+48)[2]) goto gt; if ((x+48 +4)[0] < (y+48)[2]) goto lt; if ((x+48 +4)[1] > (y+48)[2]) goto gt; if ((x+48 +4)[1] < (y+48)[2]) goto lt; if ((x+48 +4)[2] > (y+48)[2]) goto gt; if ((x+48 +4)[2] < (y+48)[2]) goto lt; if ((x+48 +4)[3] > (y+48)[2]) goto gt; if ((x+48 +4)[3] < (y+48)[2]) goto lt; if ((x+48 +4)[0] > (y+48)[3]) goto gt; if ((x+48 +4)[0] < (y+48)[3]) goto lt; if ((x+48 +4)[1] > (y+48)[3]) goto gt; if ((x+48 +4)[1] < (y+48)[3]) goto lt; if ((x+48 +4)[2] > (y+48)[3]) goto gt; if ((x+48 +4)[2] < (y+48)[3]) goto lt; if ((x+48 +4)[3] > (y+48)[3]) goto gt; if ((x+48 +4)[3] < (y+48)[3]) goto lt; if ((x+48 +8)[0] > (y+48)[0]) goto gt; if ((x+48 +8)[0] < (y+48)[0]) goto lt; if ((x+48 +8)[1] > (y+48)[0]) goto gt; if ((x+48 +8)[1] < (y+48)[0]) goto lt; if ((x+48 +8)[2] > (y+48)[0]) goto gt; if ((x+48 +8)[2] < (y+48)[0]) goto lt; if ((x+48 +8)[3] > (y+48)[0]) goto gt; if ((x+48 +8)[3] < (y+48)[0]) goto lt; if ((x+48 +8)[0] > (y+48)[1]) goto gt; if ((x+48 +8)[0] < (y+48)[1]) goto lt; if ((x+48 +8)[1] > (y+48)[1]) goto gt; if ((x+48 +8)[1] < (y+48)[1]) goto lt; if ((x+48 +8)[2] > (y+48)[1]) goto gt; if ((x+48 +8)[2] < (y+48)[1]) goto lt; if ((x+48 +8)[3] > (y+48)[1]) goto gt; if ((x+48 +8)[3] < (y+48)[1]) goto lt; if ((x+48 +8)[0] > (y+48)[2]) goto gt; if ((x+48 +8)[0] < (y+48)[2]) goto lt; if ((x+48 +8)[1] > (y+48)[2]) goto gt; if ((x+48 +8)[1] < (y+48)[2]) goto lt; if ((x+48 +8)[2] > (y+48)[2]) goto gt; if ((x+48 +8)[2] < (y+48)[2]) goto lt; if ((x+48 +8)[3] > (y+48)[2]) goto gt; if ((x+48 +8)[3] < (y+48)[2]) goto lt; if ((x+48 +8)[0] > (y+48)[3]) goto gt; if ((x+48 +8)[0] < (y+48)[3]) goto lt; if ((x+48 +8)[1] > (y+48)[3]) goto gt; if ((x+48 +8)[1] < (y+48)[3]) goto lt; if ((x+48 +8)[2] > (y+48)[3]) goto gt; if ((x+48 +8)[2] < (y+48)[3]) goto lt; if ((x+48 +8)[3] > (y+48)[3]) goto gt; if ((x+48 +8)[3] < (y+48)[3]) goto lt; if ((x+48 +12)[0] > (y+48)[0]) goto gt; if ((x+48 +12)[0] < (y+48)[0]) goto lt; if ((x+48 +12)[1] > (y+48)[0]) goto gt; if ((x+48 +12)[1] < (y+48)[0]) goto lt; if ((x+48 +12)[2] > (y+48)[0]) goto gt; if ((x+48 +12)[2] < (y+48)[0]) goto lt; if ((x+48 +12)[3] > (y+48)[0]) goto gt; if ((x+48 +12)[3] < (y+48)[0]) goto lt; if ((x+48 +12)[0] > (y+48)[1]) goto gt; if ((x+48 +12)[0] < (y+48)[1]) goto lt; if ((x+48 +12)[1] > (y+48)[1]) goto gt; if ((x+48 +12)[1] < (y+48)[1]) goto lt; if ((x+48 +12)[2] > (y+48)[1]) goto gt; if ((x+48 +12)[2] < (y+48)[1]) goto lt; if ((x+48 +12)[3] > (y+48)[1]) goto gt; if ((x+48 +12)[3] < (y+48)[1]) goto lt; if ((x+48 +12)[0] > (y+48)[2]) goto gt; if ((x+48 +12)[0] < (y+48)[2]) goto lt; if ((x+48 +12)[1] > (y+48)[2]) goto gt; if ((x+48 +12)[1] < (y+48)[2]) goto lt; if ((x+48 +12)[2] > (y+48)[2]) goto gt; if ((x+48 +12)[2] < (y+48)[2]) goto lt; if ((x+48 +12)[3] > (y+48)[2]) goto gt; if ((x+48 +12)[3] < (y+48)[2]) goto lt; if ((x+48 +12)[0] > (y+48)[3]) goto gt; if ((x+48 +12)[0] < (y+48)[3]) goto lt; if ((x+48 +12)[1] > (y+48)[3]) goto gt; if ((x+48 +12)[1] < (y+48)[3]) goto lt; if ((x+48 +12)[2] > (y+48)[3]) goto gt; if ((x+48 +12)[2] < (y+48)[3]) goto lt; if ((x+48 +12)[3] > (y+48)[3]) goto gt; if ((x+48 +12)[3] < (y+48)[3]) goto lt; if ((x+48)[0] > (y+48 +4)[0]) goto gt; if ((x+48)[0] < (y+48 +4)[0]) goto lt; if ((x+48)[1] > (y+48 +4)[0]) goto gt; if ((x+48)[1] < (y+48 +4)[0]) goto lt; if ((x+48)[2] > (y+48 +4)[0]) goto gt; if ((x+48)[2] < (y+48 +4)[0]) goto lt; if ((x+48)[3] > (y+48 +4)[0]) goto gt; if ((x+48)[3] < (y+48 +4)[0]) goto lt; if ((x+48)[0] > (y+48 +4)[1]) goto gt; if ((x+48)[0] < (y+48 +4)[1]) goto lt; if ((x+48)[1] > (y+48 +4)[1]) goto gt; if ((x+48)[1] < (y+48 +4)[1]) goto lt; if ((x+48)[2] > (y+48 +4)[1]) goto gt; if ((x+48)[2] < (y+48 +4)[1]) goto lt; if ((x+48)[3] > (y+48 +4)[1]) goto gt; if ((x+48)[3] < (y+48 +4)[1]) goto lt; if ((x+48)[0] > (y+48 +4)[2]) goto gt; if ((x+48)[0] < (y+48 +4)[2]) goto lt; if ((x+48)[1] > (y+48 +4)[2]) goto gt; if ((x+48)[1] < (y+48 +4)[2]) goto lt; if ((x+48)[2] > (y+48 +4)[2]) goto gt; if ((x+48)[2] < (y+48 +4)[2]) goto lt; if ((x+48)[3] > (y+48 +4)[2]) goto gt; if ((x+48)[3] < (y+48 +4)[2]) goto lt; if ((x+48)[0] > (y+48 +4)[3]) goto gt; if ((x+48)[0] < (y+48 +4)[3]) goto lt; if ((x+48)[1] > (y+48 +4)[3]) goto gt; if ((x+48)[1] < (y+48 +4)[3]) goto lt; if ((x+48)[2] > (y+48 +4)[3]) goto gt; if ((x+48)[2] < (y+48 +4)[3]) goto lt; if ((x+48)[3] > (y+48 +4)[3]) goto gt; if ((x+48)[3] < (y+48 +4)[3]) goto lt; if ((x+48 +4)[0] > (y+48 +4)[0]) goto gt; if ((x+48 +4)[0] < (y+48 +4)[0]) goto lt; if ((x+48 +4)[1] > (y+48 +4)[0]) goto gt; if ((x+48 +4)[1] < (y+48 +4)[0]) goto lt; if ((x+48 +4)[2] > (y+48 +4)[0]) goto gt; if ((x+48 +4)[2] < (y+48 +4)[0]) goto lt; if ((x+48 +4)[3] > (y+48 +4)[0]) goto gt; if ((x+48 +4)[3] < (y+48 +4)[0]) goto lt; if ((x+48 +4)[0] > (y+48 +4)[1]) goto gt; if ((x+48 +4)[0] < (y+48 +4)[1]) goto lt; if ((x+48 +4)[1] > (y+48 +4)[1]) goto gt; if ((x+48 +4)[1] < (y+48 +4)[1]) goto lt; if ((x+48 +4)[2] > (y+48 +4)[1]) goto gt; if ((x+48 +4)[2] < (y+48 +4)[1]) goto lt; if ((x+48 +4)[3] > (y+48 +4)[1]) goto gt; if ((x+48 +4)[3] < (y+48 +4)[1]) goto lt; if ((x+48 +4)[0] > (y+48 +4)[2]) goto gt; if ((x+48 +4)[0] < (y+48 +4)[2]) goto lt; if ((x+48 +4)[1] > (y+48 +4)[2]) goto gt; if ((x+48 +4)[1] < (y+48 +4)[2]) goto lt; if ((x+48 +4)[2] > (y+48 +4)[2]) goto gt; if ((x+48 +4)[2] < (y+48 +4)[2]) goto lt; if ((x+48 +4)[3] > (y+48 +4)[2]) goto gt; if ((x+48 +4)[3] < (y+48 +4)[2]) goto lt; if ((x+48 +4)[0] > (y+48 +4)[3]) goto gt; if ((x+48 +4)[0] < (y+48 +4)[3]) goto lt; if ((x+48 +4)[1] > (y+48 +4)[3]) goto gt; if ((x+48 +4)[1] < (y+48 +4)[3]) goto lt; if ((x+48 +4)[2] > (y+48 +4)[3]) goto gt; if ((x+48 +4)[2] < (y+48 +4)[3]) goto lt; if ((x+48 +4)[3] > (y+48 +4)[3]) goto gt; if ((x+48 +4)[3] < (y+48 +4)[3]) goto lt; if ((x+48 +8)[0] > (y+48 +4)[0]) goto gt; if ((x+48 +8)[0] < (y+48 +4)[0]) goto lt; if ((x+48 +8)[1] > (y+48 +4)[0]) goto gt; if ((x+48 +8)[1] < (y+48 +4)[0]) goto lt; if ((x+48 +8)[2] > (y+48 +4)[0]) goto gt; if ((x+48 +8)[2] < (y+48 +4)[0]) goto lt; if ((x+48 +8)[3] > (y+48 +4)[0]) goto gt; if ((x+48 +8)[3] < (y+48 +4)[0]) goto lt; if ((x+48 +8)[0] > (y+48 +4)[1]) goto gt; if ((x+48 +8)[0] < (y+48 +4)[1]) goto lt; if ((x+48 +8)[1] > (y+48 +4)[1]) goto gt; if ((x+48 +8)[1] < (y+48 +4)[1]) goto lt; if ((x+48 +8)[2] > (y+48 +4)[1]) goto gt; if ((x+48 +8)[2] < (y+48 +4)[1]) goto lt; if ((x+48 +8)[3] > (y+48 +4)[1]) goto gt; if ((x+48 +8)[3] < (y+48 +4)[1]) goto lt; if ((x+48 +8)[0] > (y+48 +4)[2]) goto gt; if ((x+48 +8)[0] < (y+48 +4)[2]) goto lt; if ((x+48 +8)[1] > (y+48 +4)[2]) goto gt; if ((x+48 +8)[1] < (y+48 +4)[2]) goto lt; if ((x+48 +8)[2] > (y+48 +4)[2]) goto gt; if ((x+48 +8)[2] < (y+48 +4)[2]) goto lt; if ((x+48 +8)[3] > (y+48 +4)[2]) goto gt; if ((x+48 +8)[3] < (y+48 +4)[2]) goto lt; if ((x+48 +8)[0] > (y+48 +4)[3]) goto gt; if ((x+48 +8)[0] < (y+48 +4)[3]) goto lt; if ((x+48 +8)[1] > (y+48 +4)[3]) goto gt; if ((x+48 +8)[1] < (y+48 +4)[3]) goto lt; if ((x+48 +8)[2] > (y+48 +4)[3]) goto gt; if ((x+48 +8)[2] < (y+48 +4)[3]) goto lt; if ((x+48 +8)[3] > (y+48 +4)[3]) goto gt; if ((x+48 +8)[3] < (y+48 +4)[3]) goto lt; if ((x+48 +12)[0] > (y+48 +4)[0]) goto gt; if ((x+48 +12)[0] < (y+48 +4)[0]) goto lt; if ((x+48 +12)[1] > (y+48 +4)[0]) goto gt; if ((x+48 +12)[1] < (y+48 +4)[0]) goto lt; if ((x+48 +12)[2] > (y+48 +4)[0]) goto gt; if ((x+48 +12)[2] < (y+48 +4)[0]) goto lt; if ((x+48 +12)[3] > (y+48 +4)[0]) goto gt; if ((x+48 +12)[3] < (y+48 +4)[0]) goto lt; if ((x+48 +12)[0] > (y+48 +4)[1]) goto gt; if ((x+48 +12)[0] < (y+48 +4)[1]) goto lt; if ((x+48 +12)[1] > (y+48 +4)[1]) goto gt; if ((x+48 +12)[1] < (y+48 +4)[1]) goto lt; if ((x+48 +12)[2] > (y+48 +4)[1]) goto gt; if ((x+48 +12)[2] < (y+48 +4)[1]) goto lt; if ((x+48 +12)[3] > (y+48 +4)[1]) goto gt; if ((x+48 +12)[3] < (y+48 +4)[1]) goto lt; if ((x+48 +12)[0] > (y+48 +4)[2]) goto gt; if ((x+48 +12)[0] < (y+48 +4)[2]) goto lt; if ((x+48 +12)[1] > (y+48 +4)[2]) goto gt; if ((x+48 +12)[1] < (y+48 +4)[2]) goto lt; if ((x+48 +12)[2] > (y+48 +4)[2]) goto gt; if ((x+48 +12)[2] < (y+48 +4)[2]) goto lt; if ((x+48 +12)[3] > (y+48 +4)[2]) goto gt; if ((x+48 +12)[3] < (y+48 +4)[2]) goto lt; if ((x+48 +12)[0] > (y+48 +4)[3]) goto gt; if ((x+48 +12)[0] < (y+48 +4)[3]) goto lt; if ((x+48 +12)[1] > (y+48 +4)[3]) goto gt; if ((x+48 +12)[1] < (y+48 +4)[3]) goto lt; if ((x+48 +12)[2] > (y+48 +4)[3]) goto gt; if ((x+48 +12)[2] < (y+48 +4)[3]) goto lt; if ((x+48 +12)[3] > (y+48 +4)[3]) goto gt; if ((x+48 +12)[3] < (y+48 +4)[3]) goto lt; if ((x+48)[0] > (y+48 +8)[0]) goto gt; if ((x+48)[0] < (y+48 +8)[0]) goto lt; if ((x+48)[1] > (y+48 +8)[0]) goto gt; if ((x+48)[1] < (y+48 +8)[0]) goto lt; if ((x+48)[2] > (y+48 +8)[0]) goto gt; if ((x+48)[2] < (y+48 +8)[0]) goto lt; if ((x+48)[3] > (y+48 +8)[0]) goto gt; if ((x+48)[3] < (y+48 +8)[0]) goto lt; if ((x+48)[0] > (y+48 +8)[1]) goto gt; if ((x+48)[0] < (y+48 +8)[1]) goto lt; if ((x+48)[1] > (y+48 +8)[1]) goto gt; if ((x+48)[1] < (y+48 +8)[1]) goto lt; if ((x+48)[2] > (y+48 +8)[1]) goto gt; if ((x+48)[2] < (y+48 +8)[1]) goto lt; if ((x+48)[3] > (y+48 +8)[1]) goto gt; if ((x+48)[3] < (y+48 +8)[1]) goto lt; if ((x+48)[0] > (y+48 +8)[2]) goto gt; if ((x+48)[0] < (y+48 +8)[2]) goto lt; if ((x+48)[1] > (y+48 +8)[2]) goto gt; if ((x+48)[1] < (y+48 +8)[2]) goto lt; if ((x+48)[2] > (y+48 +8)[2]) goto gt; if ((x+48)[2] < (y+48 +8)[2]) goto lt; if ((x+48)[3] > (y+48 +8)[2]) goto gt; if ((x+48)[3] < (y+48 +8)[2]) goto lt; if ((x+48)[0] > (y+48 +8)[3]) goto gt; if ((x+48)[0] < (y+48 +8)[3]) goto lt; if ((x+48)[1] > (y+48 +8)[3]) goto gt; if ((x+48)[1] < (y+48 +8)[3]) goto lt; if ((x+48)[2] > (y+48 +8)[3]) goto gt; if ((x+48)[2] < (y+48 +8)[3]) goto lt; if ((x+48)[3] > (y+48 +8)[3]) goto gt; if ((x+48)[3] < (y+48 +8)[3]) goto lt; if ((x+48 +4)[0] > (y+48 +8)[0]) goto gt; if ((x+48 +4)[0] < (y+48 +8)[0]) goto lt; if ((x+48 +4)[1] > (y+48 +8)[0]) goto gt; if ((x+48 +4)[1] < (y+48 +8)[0]) goto lt; if ((x+48 +4)[2] > (y+48 +8)[0]) goto gt; if ((x+48 +4)[2] < (y+48 +8)[0]) goto lt; if ((x+48 +4)[3] > (y+48 +8)[0]) goto gt; if ((x+48 +4)[3] < (y+48 +8)[0]) goto lt; if ((x+48 +4)[0] > (y+48 +8)[1]) goto gt; if ((x+48 +4)[0] < (y+48 +8)[1]) goto lt; if ((x+48 +4)[1] > (y+48 +8)[1]) goto gt; if ((x+48 +4)[1] < (y+48 +8)[1]) goto lt; if ((x+48 +4)[2] > (y+48 +8)[1]) goto gt; if ((x+48 +4)[2] < (y+48 +8)[1]) goto lt; if ((x+48 +4)[3] > (y+48 +8)[1]) goto gt; if ((x+48 +4)[3] < (y+48 +8)[1]) goto lt; if ((x+48 +4)[0] > (y+48 +8)[2]) goto gt; if ((x+48 +4)[0] < (y+48 +8)[2]) goto lt; if ((x+48 +4)[1] > (y+48 +8)[2]) goto gt; if ((x+48 +4)[1] < (y+48 +8)[2]) goto lt; if ((x+48 +4)[2] > (y+48 +8)[2]) goto gt; if ((x+48 +4)[2] < (y+48 +8)[2]) goto lt; if ((x+48 +4)[3] > (y+48 +8)[2]) goto gt; if ((x+48 +4)[3] < (y+48 +8)[2]) goto lt; if ((x+48 +4)[0] > (y+48 +8)[3]) goto gt; if ((x+48 +4)[0] < (y+48 +8)[3]) goto lt; if ((x+48 +4)[1] > (y+48 +8)[3]) goto gt; if ((x+48 +4)[1] < (y+48 +8)[3]) goto lt; if ((x+48 +4)[2] > (y+48 +8)[3]) goto gt; if ((x+48 +4)[2] < (y+48 +8)[3]) goto lt; if ((x+48 +4)[3] > (y+48 +8)[3]) goto gt; if ((x+48 +4)[3] < (y+48 +8)[3]) goto lt; if ((x+48 +8)[0] > (y+48 +8)[0]) goto gt; if ((x+48 +8)[0] < (y+48 +8)[0]) goto lt; if ((x+48 +8)[1] > (y+48 +8)[0]) goto gt; if ((x+48 +8)[1] < (y+48 +8)[0]) goto lt; if ((x+48 +8)[2] > (y+48 +8)[0]) goto gt; if ((x+48 +8)[2] < (y+48 +8)[0]) goto lt; if ((x+48 +8)[3] > (y+48 +8)[0]) goto gt; if ((x+48 +8)[3] < (y+48 +8)[0]) goto lt; if ((x+48 +8)[0] > (y+48 +8)[1]) goto gt; if ((x+48 +8)[0] < (y+48 +8)[1]) goto lt; if ((x+48 +8)[1] > (y+48 +8)[1]) goto gt; if ((x+48 +8)[1] < (y+48 +8)[1]) goto lt; if ((x+48 +8)[2] > (y+48 +8)[1]) goto gt; if ((x+48 +8)[2] < (y+48 +8)[1]) goto lt; if ((x+48 +8)[3] > (y+48 +8)[1]) goto gt; if ((x+48 +8)[3] < (y+48 +8)[1]) goto lt; if ((x+48 +8)[0] > (y+48 +8)[2]) goto gt; if ((x+48 +8)[0] < (y+48 +8)[2]) goto lt; if ((x+48 +8)[1] > (y+48 +8)[2]) goto gt; if ((x+48 +8)[1] < (y+48 +8)[2]) goto lt; if ((x+48 +8)[2] > (y+48 +8)[2]) goto gt; if ((x+48 +8)[2] < (y+48 +8)[2]) goto lt; if ((x+48 +8)[3] > (y+48 +8)[2]) goto gt; if ((x+48 +8)[3] < (y+48 +8)[2]) goto lt; if ((x+48 +8)[0] > (y+48 +8)[3]) goto gt; if ((x+48 +8)[0] < (y+48 +8)[3]) goto lt; if ((x+48 +8)[1] > (y+48 +8)[3]) goto gt; if ((x+48 +8)[1] < (y+48 +8)[3]) goto lt; if ((x+48 +8)[2] > (y+48 +8)[3]) goto gt; if ((x+48 +8)[2] < (y+48 +8)[3]) goto lt; if ((x+48 +8)[3] > (y+48 +8)[3]) goto gt; if ((x+48 +8)[3] < (y+48 +8)[3]) goto lt; if ((x+48 +12)[0] > (y+48 +8)[0]) goto gt; if ((x+48 +12)[0] < (y+48 +8)[0]) goto lt; if ((x+48 +12)[1] > (y+48 +8)[0]) goto gt; if ((x+48 +12)[1] < (y+48 +8)[0]) goto lt; if ((x+48 +12)[2] > (y+48 +8)[0]) goto gt; if ((x+48 +12)[2] < (y+48 +8)[0]) goto lt; if ((x+48 +12)[3] > (y+48 +8)[0]) goto gt; if ((x+48 +12)[3] < (y+48 +8)[0]) goto lt; if ((x+48 +12)[0] > (y+48 +8)[1]) goto gt; if ((x+48 +12)[0] < (y+48 +8)[1]) goto lt; if ((x+48 +12)[1] > (y+48 +8)[1]) goto gt; if ((x+48 +12)[1] < (y+48 +8)[1]) goto lt; if ((x+48 +12)[2] > (y+48 +8)[1]) goto gt; if ((x+48 +12)[2] < (y+48 +8)[1]) goto lt; if ((x+48 +12)[3] > (y+48 +8)[1]) goto gt; if ((x+48 +12)[3] < (y+48 +8)[1]) goto lt; if ((x+48 +12)[0] > (y+48 +8)[2]) goto gt; if ((x+48 +12)[0] < (y+48 +8)[2]) goto lt; if ((x+48 +12)[1] > (y+48 +8)[2]) goto gt; if ((x+48 +12)[1] < (y+48 +8)[2]) goto lt; if ((x+48 +12)[2] > (y+48 +8)[2]) goto gt; if ((x+48 +12)[2] < (y+48 +8)[2]) goto lt; if ((x+48 +12)[3] > (y+48 +8)[2]) goto gt; if ((x+48 +12)[3] < (y+48 +8)[2]) goto lt; if ((x+48 +12)[0] > (y+48 +8)[3]) goto gt; if ((x+48 +12)[0] < (y+48 +8)[3]) goto lt; if ((x+48 +12)[1] > (y+48 +8)[3]) goto gt; if ((x+48 +12)[1] < (y+48 +8)[3]) goto lt; if ((x+48 +12)[2] > (y+48 +8)[3]) goto gt; if ((x+48 +12)[2] < (y+48 +8)[3]) goto lt; if ((x+48 +12)[3] > (y+48 +8)[3]) goto gt; if ((x+48 +12)[3] < (y+48 +8)[3]) goto lt; if ((x+48)[0] > (y+48 +12)[0]) goto gt; if ((x+48)[0] < (y+48 +12)[0]) goto lt; if ((x+48)[1] > (y+48 +12)[0]) goto gt; if ((x+48)[1] < (y+48 +12)[0]) goto lt; if ((x+48)[2] > (y+48 +12)[0]) goto gt; if ((x+48)[2] < (y+48 +12)[0]) goto lt; if ((x+48)[3] > (y+48 +12)[0]) goto gt; if ((x+48)[3] < (y+48 +12)[0]) goto lt; if ((x+48)[0] > (y+48 +12)[1]) goto gt; if ((x+48)[0] < (y+48 +12)[1]) goto lt; if ((x+48)[1] > (y+48 +12)[1]) goto gt; if ((x+48)[1] < (y+48 +12)[1]) goto lt; if ((x+48)[2] > (y+48 +12)[1]) goto gt; if ((x+48)[2] < (y+48 +12)[1]) goto lt; if ((x+48)[3] > (y+48 +12)[1]) goto gt; if ((x+48)[3] < (y+48 +12)[1]) goto lt; if ((x+48)[0] > (y+48 +12)[2]) goto gt; if ((x+48)[0] < (y+48 +12)[2]) goto lt; if ((x+48)[1] > (y+48 +12)[2]) goto gt; if ((x+48)[1] < (y+48 +12)[2]) goto lt; if ((x+48)[2] > (y+48 +12)[2]) goto gt; if ((x+48)[2] < (y+48 +12)[2]) goto lt; if ((x+48)[3] > (y+48 +12)[2]) goto gt; if ((x+48)[3] < (y+48 +12)[2]) goto lt; if ((x+48)[0] > (y+48 +12)[3]) goto gt; if ((x+48)[0] < (y+48 +12)[3]) goto lt; if ((x+48)[1] > (y+48 +12)[3]) goto gt; if ((x+48)[1] < (y+48 +12)[3]) goto lt; if ((x+48)[2] > (y+48 +12)[3]) goto gt; if ((x+48)[2] < (y+48 +12)[3]) goto lt; if ((x+48)[3] > (y+48 +12)[3]) goto gt; if ((x+48)[3] < (y+48 +12)[3]) goto lt; if ((x+48 +4)[0] > (y+48 +12)[0]) goto gt; if ((x+48 +4)[0] < (y+48 +12)[0]) goto lt; if ((x+48 +4)[1] > (y+48 +12)[0]) goto gt; if ((x+48 +4)[1] < (y+48 +12)[0]) goto lt; if ((x+48 +4)[2] > (y+48 +12)[0]) goto gt; if ((x+48 +4)[2] < (y+48 +12)[0]) goto lt; if ((x+48 +4)[3] > (y+48 +12)[0]) goto gt; if ((x+48 +4)[3] < (y+48 +12)[0]) goto lt; if ((x+48 +4)[0] > (y+48 +12)[1]) goto gt; if ((x+48 +4)[0] < (y+48 +12)[1]) goto lt; if ((x+48 +4)[1] > (y+48 +12)[1]) goto gt; if ((x+48 +4)[1] < (y+48 +12)[1]) goto lt; if ((x+48 +4)[2] > (y+48 +12)[1]) goto gt; if ((x+48 +4)[2] < (y+48 +12)[1]) goto lt; if ((x+48 +4)[3] > (y+48 +12)[1]) goto gt; if ((x+48 +4)[3] < (y+48 +12)[1]) goto lt; if ((x+48 +4)[0] > (y+48 +12)[2]) goto gt; if ((x+48 +4)[0] < (y+48 +12)[2]) goto lt; if ((x+48 +4)[1] > (y+48 +12)[2]) goto gt; if ((x+48 +4)[1] < (y+48 +12)[2]) goto lt; if ((x+48 +4)[2] > (y+48 +12)[2]) goto gt; if ((x+48 +4)[2] < (y+48 +12)[2]) goto lt; if ((x+48 +4)[3] > (y+48 +12)[2]) goto gt; if ((x+48 +4)[3] < (y+48 +12)[2]) goto lt; if ((x+48 +4)[0] > (y+48 +12)[3]) goto gt; if ((x+48 +4)[0] < (y+48 +12)[3]) goto lt; if ((x+48 +4)[1] > (y+48 +12)[3]) goto gt; if ((x+48 +4)[1] < (y+48 +12)[3]) goto lt; if ((x+48 +4)[2] > (y+48 +12)[3]) goto gt; if ((x+48 +4)[2] < (y+48 +12)[3]) goto lt; if ((x+48 +4)[3] > (y+48 +12)[3]) goto gt; if ((x+48 +4)[3] < (y+48 +12)[3]) goto lt; if ((x+48 +8)[0] > (y+48 +12)[0]) goto gt; if ((x+48 +8)[0] < (y+48 +12)[0]) goto lt; if ((x+48 +8)[1] > (y+48 +12)[0]) goto gt; if ((x+48 +8)[1] < (y+48 +12)[0]) goto lt; if ((x+48 +8)[2] > (y+48 +12)[0]) goto gt; if ((x+48 +8)[2] < (y+48 +12)[0]) goto lt; if ((x+48 +8)[3] > (y+48 +12)[0]) goto gt; if ((x+48 +8)[3] < (y+48 +12)[0]) goto lt; if ((x+48 +8)[0] > (y+48 +12)[1]) goto gt; if ((x+48 +8)[0] < (y+48 +12)[1]) goto lt; if ((x+48 +8)[1] > (y+48 +12)[1]) goto gt; if ((x+48 +8)[1] < (y+48 +12)[1]) goto lt; if ((x+48 +8)[2] > (y+48 +12)[1]) goto gt; if ((x+48 +8)[2] < (y+48 +12)[1]) goto lt; if ((x+48 +8)[3] > (y+48 +12)[1]) goto gt; if ((x+48 +8)[3] < (y+48 +12)[1]) goto lt; if ((x+48 +8)[0] > (y+48 +12)[2]) goto gt; if ((x+48 +8)[0] < (y+48 +12)[2]) goto lt; if ((x+48 +8)[1] > (y+48 +12)[2]) goto gt; if ((x+48 +8)[1] < (y+48 +12)[2]) goto lt; if ((x+48 +8)[2] > (y+48 +12)[2]) goto gt; if ((x+48 +8)[2] < (y+48 +12)[2]) goto lt; if ((x+48 +8)[3] > (y+48 +12)[2]) goto gt; if ((x+48 +8)[3] < (y+48 +12)[2]) goto lt; if ((x+48 +8)[0] > (y+48 +12)[3]) goto gt; if ((x+48 +8)[0] < (y+48 +12)[3]) goto lt; if ((x+48 +8)[1] > (y+48 +12)[3]) goto gt; if ((x+48 +8)[1] < (y+48 +12)[3]) goto lt; if ((x+48 +8)[2] > (y+48 +12)[3]) goto gt; if ((x+48 +8)[2] < (y+48 +12)[3]) goto lt; if ((x+48 +8)[3] > (y+48 +12)[3]) goto gt; if ((x+48 +8)[3] < (y+48 +12)[3]) goto lt; if ((x+48 +12)[0] > (y+48 +12)[0]) goto gt; if ((x+48 +12)[0] < (y+48 +12)[0]) goto lt; if ((x+48 +12)[1] > (y+48 +12)[0]) goto gt; if ((x+48 +12)[1] < (y+48 +12)[0]) goto lt; if ((x+48 +12)[2] > (y+48 +12)[0]) goto gt; if ((x+48 +12)[2] < (y+48 +12)[0]) goto lt; if ((x+48 +12)[3] > (y+48 +12)[0]) goto gt; if ((x+48 +12)[3] < (y+48 +12)[0]) goto lt; if ((x+48 +12)[0] > (y+48 +12)[1]) goto gt; if ((x+48 +12)[0] < (y+48 +12)[1]) goto lt; if ((x+48 +12)[1] > (y+48 +12)[1]) goto gt; if ((x+48 +12)[1] < (y+48 +12)[1]) goto lt; if ((x+48 +12)[2] > (y+48 +12)[1]) goto gt; if ((x+48 +12)[2] < (y+48 +12)[1]) goto lt; if ((x+48 +12)[3] > (y+48 +12)[1]) goto gt; if ((x+48 +12)[3] < (y+48 +12)[1]) goto lt; if ((x+48 +12)[0] > (y+48 +12)[2]) goto gt; if ((x+48 +12)[0] < (y+48 +12)[2]) goto lt; if ((x+48 +12)[1] > (y+48 +12)[2]) goto gt; if ((x+48 +12)[1] < (y+48 +12)[2]) goto lt; if ((x+48 +12)[2] > (y+48 +12)[2]) goto gt; if ((x+48 +12)[2] < (y+48 +12)[2]) goto lt; if ((x+48 +12)[3] > (y+48 +12)[2]) goto gt; if ((x+48 +12)[3] < (y+48 +12)[2]) goto lt; if ((x+48 +12)[0] > (y+48 +12)[3]) goto gt; if ((x+48 +12)[0] < (y+48 +12)[3]) goto lt; if ((x+48 +12)[1] > (y+48 +12)[3]) goto gt; if ((x+48 +12)[1] < (y+48 +12)[3]) goto lt; if ((x+48 +12)[2] > (y+48 +12)[3]) goto gt; if ((x+48 +12)[2] < (y+48 +12)[3]) goto lt; if ((x+48 +12)[3] > (y+48 +12)[3]) goto gt; if ((x+48 +12)[3] < (y+48 +12)[3]) goto lt;;\n" +"\n" +" return 0x01234567;\n" +" gt:\n" +" return 0x12345678;\n" +" lt:\n" +" return 0xF0123456;\n" +"}\n" + +; diff --git a/services/comm.cpp b/services/comm.cpp new file mode 100644 index 0000000..2e5616d --- /dev/null +++ b/services/comm.cpp @@ -0,0 +1,1698 @@ +/* -*- mode: C++; c-file-style: "gnu"; fill-column: 78 -*- */ +/* + This file is part of Icecream. + + Copyright (c) 2004 Michael Matz <matz@suse.de> + 2004 Stephan Kulow <coolo@suse.de> + 2007 Dirk Mueller <dmueller@suse.de> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#include <config.h> + +#include <sys/types.h> +#include <netinet/in.h> +#include <sys/socket.h> +#include <arpa/inet.h> +#include <sys/select.h> +#include <netinet/in.h> +#include <netinet/tcp.h> +#if HAVE_NETINET_TCP_VAR_H +#include <sys/socketvar.h> +#include <netinet/tcp_var.h> +#endif +#include <errno.h> +#include <fcntl.h> +#include <netdb.h> +#include <unistd.h> +#include <errno.h> +#include <string> +#include <iostream> +#include <assert.h> +#include <minilzo.h> +#include <stdio.h> + +#include "logging.h" +#include "job.h" +#include "comm.h" + +using namespace std; + +/* + * A generic DoS protection. The biggest messages are of type FileChunk + * which shouldn't be larger than 100kb. so anything bigger than 10 times + * of that is definitly fishy, and we must reject it (we're running as root, + * so be cautious). + */ + +#define MAX_MSG_SIZE 1 * 1024 * 1024 + +/* TODO + * buffered in/output per MsgChannel + + move read* into MsgChannel, create buffer-fill function + + add timeouting select() there, handle it in the different + + read* functions. + + write* unbuffered / or per message buffer (flush in send_msg) + * think about error handling + + saving errno somewhere (in MsgChannel class) + * handle unknown messages (implement a UnknownMsg holding the content + of the whole data packet?) + */ + +/* Tries to fill the inbuf completely. */ +bool +MsgChannel::read_a_bit () +{ + chop_input (); + size_t count = inbuflen - inofs; + if (count < 128) + { + inbuflen = (inbuflen + 128 + 127) & ~(size_t)127; + inbuf = (char *) realloc (inbuf, inbuflen); + count = inbuflen - inofs; + } + char *buf = inbuf + inofs; + bool error = false; + while (count) + { + if (eof) + break; + ssize_t ret = read (fd, buf, count); + if (ret > 0) + { + count -= ret; + buf += ret; + } + else if (ret < 0 && errno == EINTR) + continue; + else if (ret < 0) + { + // EOF or some error + if (errno != EAGAIN) + error = true; + } + else if (ret == 0) + eof = true; + break; + } + inofs = buf - inbuf; + if (!update_state ()) + error = true; + return !error; +} + +bool +MsgChannel::update_state (void) +{ + switch (instate) + { + case NEED_PROTO: + while (inofs - intogo >= 4) + { + if (protocol == 0) + return false; + uint32_t remote_prot = 0; + unsigned char vers[4]; + //readuint32 (remote_prot); + memcpy(vers, inbuf + intogo, 4); + intogo += 4; + for (int i = 0; i < 4; ++i) + remote_prot |= vers[i] << (i*8); + if (protocol == -1) + { + /* The first time we read the remote protocol. */ + protocol = 0; + if (remote_prot < MIN_PROTOCOL_VERSION || remote_prot > (1<<20)) + { + remote_prot = 0; + return false; + } + + if (remote_prot > PROTOCOL_VERSION) + remote_prot = PROTOCOL_VERSION; // ours is smaller + + for (int i = 0; i < 4; ++i) + vers[i] = remote_prot >> (i * 8); + writefull (vers, 4); + if (!flush_writebuf (true)) + return false; + protocol = -1 - remote_prot; + } + else if (protocol < -1) + { + /* The second time we read the remote protocol. */ + protocol = - (protocol + 1); + if ((int)remote_prot != protocol) + { + protocol = 0; + return false; + } + instate = NEED_LEN; + /* Don't consume bytes from messages. */ + break; + } + else + trace() << "NEED_PROTO but protocol > 0" << endl; + } + /* FALLTHROUGH if the protocol setup was complete (instate was changed + to NEED_LEN then). */ + if (instate != NEED_LEN) + break; + case NEED_LEN: + if (text_based) + { + // Skip any leading whitespace + for (;inofs < intogo; ++inofs) + if (inbuf[inofs] >= ' ') break; + + // Skip until next newline + for(inmsglen = 0; inmsglen < inofs - intogo; ++inmsglen) + if (inbuf[intogo+inmsglen] < ' ') + { + instate = HAS_MSG; + break; + } + break; + } + else if (inofs - intogo >= 4) + { + (*this) >> inmsglen; + if (inmsglen > MAX_MSG_SIZE) + return false; + if (inbuflen - intogo < inmsglen) + { + inbuflen = (inmsglen + intogo + 127) & ~(size_t)127; + inbuf = (char *) realloc (inbuf, inbuflen); + } + instate = FILL_BUF; + /* FALLTHROUGH */ + } + else + break; + case FILL_BUF: + if (inofs - intogo >= inmsglen) + instate = HAS_MSG; + /* FALLTHROUGH */ + else + break; + case HAS_MSG: + /* handled elsewere */ + break; + } + return true; +} + +void +MsgChannel::chop_input () +{ + /* Make buffer smaller, if there's much already read in front + of it, or it is cheap to do. */ + if (intogo > 8192 + || inofs - intogo <= 16) + { + if (inofs - intogo != 0) + memmove (inbuf, inbuf + intogo, inofs - intogo); + inofs -= intogo; + intogo = 0; + } +} + +void +MsgChannel::chop_output () +{ + if (msgofs > 8192 || msgtogo <= 16) + { + if (msgtogo) + memmove (msgbuf, msgbuf + msgofs, msgtogo); + msgofs = 0; + } +} + +void +MsgChannel::writefull (const void *_buf, size_t count) +{ + if (msgtogo + count >= msgbuflen) + { + /* Realloc to a multiple of 128. */ + msgbuflen = (msgtogo + count + 127) & ~(size_t)127; + msgbuf = (char *) realloc (msgbuf, msgbuflen); + } + memcpy (msgbuf + msgtogo, _buf, count); + msgtogo += count; +} + +bool +MsgChannel::flush_writebuf (bool blocking) +{ + const char *buf = msgbuf + msgofs; + bool error = false; + while (msgtogo) + { +#ifdef MSG_NOSIGNAL + ssize_t ret = send (fd, buf, msgtogo, MSG_NOSIGNAL); +#else + void (*oldsigpipe)(int); + + oldsigpipe = signal (SIGPIPE, SIG_IGN); + ssize_t ret = send (fd, buf, msgtogo, 0); + signal (SIGPIPE, oldsigpipe); +#endif + if (ret < 0) + { + if (errno == EINTR) + continue; + /* If we want to write blocking, but couldn't write anything, + select on the fd. */ + if (blocking && errno == EAGAIN) + { + int ready; + for(;;) + { + fd_set write_set; + FD_ZERO (&write_set); + FD_SET (fd, &write_set); + struct timeval tv; + tv.tv_sec = 20; + tv.tv_usec = 0; + ready = select (fd + 1, NULL, &write_set, NULL, &tv); + if ( ready < 0 && errno == EINTR) + continue; + break; + } + /* socket ready now for writing ? */ + if (ready > 0) + continue; + /* Timeout or real error --> error. */ + } + error = true; + break; + } + else if (ret == 0) + { + // EOF while writing --> error + error = true; + break; + } + msgtogo -= ret; + buf += ret; + } + msgofs = buf - msgbuf; + chop_output (); + return !error; +} + +MsgChannel& +MsgChannel::operator>> (uint32_t &buf) +{ + if (inofs >= intogo + 4) + { + if ( ptrdiff_t(inbuf + intogo) % 4 ) { + uint32_t t_buf[1]; + memcpy(t_buf, inbuf + intogo, 4); + buf = t_buf[0]; + } else + buf = *(uint32_t *)(inbuf + intogo); + intogo += 4; + buf = ntohl (buf); + } + else + buf = 0; + return *this; +} + +MsgChannel& +MsgChannel::operator<< (uint32_t i) +{ + i = htonl (i); + writefull (&i, 4); + return *this; +} + +MsgChannel& +MsgChannel::operator>> (string &s) +{ + char *buf; + // len is including the (also saved) 0 Byte + uint32_t len; + *this >> len; + if (!len || len > inofs - intogo) + s = ""; + else + { + buf = inbuf + intogo; + intogo += len; + s = buf; + } + return *this; +} + +MsgChannel& +MsgChannel::operator<< (const std::string &s) +{ + uint32_t len = 1 + s.length(); + *this << len; + writefull (s.c_str(), len); + return *this; +} + +MsgChannel& +MsgChannel::operator>> (list<string> &l) +{ + uint32_t len; + l.clear(); + *this >> len; + while (len--) + { + string s; + *this >> s; + l.push_back (s); + if (inofs == intogo) + break; + } + return *this; +} + +MsgChannel& +MsgChannel::operator<< (const std::list<std::string> &l) +{ + *this << (uint32_t) l.size(); + for (list<string>::const_iterator it = l.begin(); + it != l.end(); ++it ) + *this << *it; + return *this; +} + +void +MsgChannel::write_environments( const Environments &envs ) +{ + *this << envs.size(); + for ( Environments::const_iterator it = envs.begin(); it != envs.end(); ++it ) + { + *this << it->first; + *this << it->second; + } +} + +void +MsgChannel::read_environments( Environments &envs ) +{ + envs.clear(); + uint32_t count; + *this >> count; + for ( unsigned int i = 0; i < count; i++ ) + { + string plat; + string vers; + *this >> plat; + *this >> vers; + envs.push_back( make_pair( plat, vers ) ); + } +} + +void +MsgChannel::readcompressed (unsigned char **uncompressed_buf, + size_t &_uclen, size_t &_clen) +{ + lzo_uint uncompressed_len; + lzo_uint compressed_len; + uint32_t tmp; + *this >> tmp; + uncompressed_len = tmp; + *this >> tmp; + compressed_len = tmp; + /* If there was some input, but nothing compressed, + or lengths are bigger than the whole chunk message + or we don't have everything to uncompress, there was an error. */ + if ( uncompressed_len > MAX_MSG_SIZE + || compressed_len > (inofs - intogo) + || (uncompressed_len && !compressed_len) + || inofs < intogo + compressed_len ) + { + log_error() << "failure in readcompressed() length checking" << endl; + *uncompressed_buf = 0; + uncompressed_len = 0; + _uclen = uncompressed_len; + _clen = compressed_len; + return; + } + + *uncompressed_buf = new unsigned char[uncompressed_len]; + if (uncompressed_len && compressed_len) + { + const lzo_byte *compressed_buf = (lzo_byte *) (inbuf + intogo); + lzo_voidp wrkmem = (lzo_voidp) malloc (LZO1X_MEM_COMPRESS); + int ret = lzo1x_decompress (compressed_buf, compressed_len, + *uncompressed_buf, &uncompressed_len, wrkmem); + free (wrkmem); + if (ret != LZO_E_OK) + { + /* This should NEVER happen. + Remove the buffer, and indicate there is nothing in it, + but don't reset the compressed_len, so our caller know, + that there actually was something read in. */ + log_error() << "internal error - decompression of data from " << dump().c_str() + << " failed: " << ret << endl; + delete [] *uncompressed_buf; + *uncompressed_buf = 0; + uncompressed_len = 0; + } + } + + /* Read over everything used, _also_ if there was some error. + If we couldn't decode it now, it won't get better in the future, + so just ignore this hunk. */ + intogo += compressed_len; + _uclen = uncompressed_len; + _clen = compressed_len; +} + +void +MsgChannel::writecompressed (const unsigned char *in_buf, + size_t _in_len, size_t &_out_len) +{ + lzo_uint in_len = _in_len; + lzo_uint out_len = _out_len; + out_len = in_len + in_len / 64 + 16 + 3; + *this << in_len; + size_t msgtogo_old = msgtogo; + *this << (uint32_t) 0; + if (msgtogo + out_len >= msgbuflen) + { + /* Realloc to a multiple of 128. */ + msgbuflen = (msgtogo + out_len + 127) & ~(size_t)127; + msgbuf = (char *) realloc (msgbuf, msgbuflen); + } + lzo_byte *out_buf = (lzo_byte *) (msgbuf + msgtogo); + lzo_voidp wrkmem = (lzo_voidp) malloc (LZO1X_MEM_COMPRESS); + int ret = lzo1x_1_compress (in_buf, in_len, out_buf, &out_len, wrkmem); + free (wrkmem); + if (ret != LZO_E_OK) + { + /* this should NEVER happen */ + log_error() << "internal error - compression failed: " << ret << endl; + out_len = 0; + } + uint32_t _olen = htonl (out_len); + memcpy (msgbuf + msgtogo_old, &_olen, 4); + msgtogo += out_len; + _out_len = out_len; +} + +void +MsgChannel::read_line (string &line) +{ + /* XXX handle DOS and MAC line endings and null bytes as string endings. */ + if (!text_based || inofs < intogo) + { + line = ""; + } + else + { + line = string(inbuf + intogo, inmsglen); + intogo += inmsglen; + while (intogo < inofs && inbuf[intogo] < ' ') + intogo++; + } +} + +void +MsgChannel::write_line (const string &line) +{ + size_t len = line.length(); + writefull (line.c_str(), len); + if (line[len-1] != '\n') + { + char c = '\n'; + writefull (&c, 1); + } +} + +static int +prepare_connect(const string &hostname, unsigned short p, + struct sockaddr_in& remote_addr) +{ + int remote_fd; + int i = 1; + + if ((remote_fd = socket (PF_INET, SOCK_STREAM, 0)) < 0) + { + log_perror("socket()"); + return -1; + } + struct hostent *host = gethostbyname (hostname.c_str()); + if (!host) + { + log_perror("Unknown host"); + close (remote_fd); + return -1; + } + if (host->h_length != 4) + { + log_error() << "Invalid address length" << endl; + close (remote_fd); + return -1; + } + + setsockopt (remote_fd, IPPROTO_TCP, TCP_NODELAY, (char*) &i, sizeof(i)); + + remote_addr.sin_family = AF_INET; + remote_addr.sin_port = htons (p); + memcpy (&remote_addr.sin_addr.s_addr, host->h_addr_list[0], host->h_length); + + return remote_fd; +} + +static bool +connect_async( int remote_fd, struct sockaddr *remote_addr, size_t remote_size, int timeout ) +{ + fcntl(remote_fd, F_SETFL, O_NONBLOCK); + + // code majorly derived from lynx's http connect (GPL) + int status = connect (remote_fd, remote_addr, remote_size ); + if ( ( status < 0 ) && ( errno == EINPROGRESS || errno == EAGAIN ) ) + { + struct timeval select_timeout; + fd_set writefds; + int ret; + + do + { + /* we select for a specific time and if that succeeds, we connect one + final time. Everything else we ignore */ + + select_timeout.tv_sec = timeout; + select_timeout.tv_usec = 0; + FD_ZERO(&writefds); + FD_SET(remote_fd, &writefds); + ret = select(remote_fd + 1, NULL, &writefds, NULL, &select_timeout); + if (ret < 0 && errno == EINTR) + continue; + break; + } while (1); + + if (ret > 0) + { + /* + ** Extra check here for connection success, if we try to + ** connect again, and get EISCONN, it means we have a + ** successful connection. But don't check with SOCKS. + */ + status = connect(remote_fd, remote_addr, remote_size ); + if ((status < 0) && (errno == EISCONN)) + { + status = 0; + } + } + } + + if (status < 0) + { + /* + ** The connect attempt failed or was interrupted, + ** so close up the socket. + */ + close(remote_fd); + return false; + } + else { + /* + ** Make the socket blocking again on good connect. + */ + fcntl(remote_fd, F_SETFL, 0); + } + return true; +} + +MsgChannel *Service::createChannel (const string &hostname, unsigned short p, int timeout) +{ + int remote_fd; + struct sockaddr_in remote_addr; + + if ((remote_fd = prepare_connect(hostname, p, remote_addr)) < 0) + return 0; + + if ( timeout ) + { + if ( !connect_async( remote_fd, (struct sockaddr *) &remote_addr, sizeof( remote_addr ), timeout ) ) + return 0; // remote_fd is already closed + } + else + { + int i = 2048; + setsockopt(remote_fd, SOL_SOCKET, SO_SNDBUF, &i, sizeof(i)); + if (connect (remote_fd, (struct sockaddr *) &remote_addr, sizeof (remote_addr)) < 0) + { + close( remote_fd ); + trace() << "connect failed\n"; + return 0; + } + } + return createChannel(remote_fd, (struct sockaddr *)&remote_addr, sizeof( remote_addr )); +} + +static std::string +shorten_filename(const std::string& str) +{ + std::string::size_type ofs = str.rfind('/'); + for (int i = 2; i--;) + if (ofs != string::npos) + ofs = str.rfind('/', ofs-1); + return str.substr(ofs+1); +} + +bool +MsgChannel::eq_ip (const MsgChannel &s) const +{ + struct sockaddr_in *s1, *s2; + s1 = (struct sockaddr_in *) addr; + s2 = (struct sockaddr_in *) s.addr; + return (len == s.len + && memcmp (&s1->sin_addr, &s2->sin_addr, sizeof (s1->sin_addr)) == 0); +} + +MsgChannel *Service::createChannel (int fd, struct sockaddr *_a, socklen_t _l) +{ + MsgChannel * c = new MsgChannel( fd, _a, _l, false ); + if (!c->wait_for_protocol ()) + { + delete c; + c = 0; + } + return c; +} + +MsgChannel::MsgChannel (int _fd, struct sockaddr *_a, socklen_t _l, bool text) + : fd(_fd) +{ + len = _l; + if (len && _a) + { + addr = (struct sockaddr *)malloc (len); + memcpy (addr, _a, len); + name = inet_ntoa (((struct sockaddr_in *) addr)->sin_addr); + } + else + { + addr = 0; + name = ""; + } + + // not using new/delete because of the need of realloc() + msgbuf = (char *) malloc (128); + msgbuflen = 128; + msgofs = 0; + msgtogo = 0; + inbuf = (char *) malloc (128); + inbuflen = 128; + inofs = 0; + intogo = 0; + eof = false; + text_based = text; + + int on = 1; + if (!setsockopt (_fd, SOL_SOCKET, SO_KEEPALIVE, (char*) &on, sizeof(on))) + { +#if defined( TCP_KEEPIDLE ) + int keepidle = TCP_KEEPIDLE; +#else + int keepidle = TCPCTL_KEEPIDLE; +#endif + + int sec; + sec = MAX_SCHEDULER_PING - 3 * MAX_SCHEDULER_PONG; + setsockopt (_fd, IPPROTO_TCP, keepidle, (char*) &sec, sizeof(sec)); + +#if defined( TCP_KEEPINTVL ) + int keepintvl = TCP_KEEPINTVL; +#else + int keepintvl = TCPCTL_KEEPINTVL; +#endif + + sec = MAX_SCHEDULER_PONG; + setsockopt (_fd, IPPROTO_TCP, keepintvl, (char*) &sec, sizeof(sec)); + +#ifdef TCP_KEEPCNT + sec = 3; + setsockopt (_fd, IPPROTO_TCP, TCP_KEEPCNT, (char*) &sec, sizeof(sec)); +#endif + } + + if (fcntl (fd, F_SETFL, O_NONBLOCK) < 0) + log_perror("MsgChannel fcntl()"); + + if (fcntl (fd, F_SETFD, FD_CLOEXEC) < 0) + log_perror("MsgChannel fcntl() 2"); + + if (text_based) + { + instate = NEED_LEN; + protocol = PROTOCOL_VERSION; + } + else + { + instate = NEED_PROTO; + protocol = -1; + unsigned char vers[4] = {PROTOCOL_VERSION, 0, 0, 0}; + //writeuint32 ((uint32_t) PROTOCOL_VERSION); + writefull (vers, 4); + if (!flush_writebuf (true)) + protocol = 0; // unusable + } + + last_talk = time (0); +} + +MsgChannel::~MsgChannel() +{ + if (fd >= 0) + close (fd); + fd = -1; + if (msgbuf) + free (msgbuf); + if (inbuf) + free (inbuf); + if (addr) + free (addr); +} + +string MsgChannel::dump() const +{ + return name + ": (" + char((int)instate+'A') + " eof: " + char(eof +'0') + ")"; +} + +/* Wait blocking until the protocol setup for this channel is complete. + Returns false if an error occured. */ +bool +MsgChannel::wait_for_protocol () +{ + /* protocol is 0 if we couldn't send our initial protocol version. */ + if (protocol == 0) + return false; + while (instate == NEED_PROTO) + { + fd_set set; + FD_ZERO (&set); + FD_SET (fd, &set); + struct timeval tv; + tv.tv_sec = 5; + tv.tv_usec = 0; + int ret = select (fd + 1, &set, NULL, NULL, &tv); + if (ret < 0 && errno == EINTR) + continue; + if (ret == 0) { + log_error() << "no response from local daemon within timeout." << endl; + return false; /* timeout. Consider it a fatal error. */ + } + if (ret < 0) + { + log_perror("select in wait_for_protocol()"); + return false; + } + if (!read_a_bit () || eof) + return false; + } + return true; +} + +void MsgChannel::setBulkTransfer() +{ + if (fd < 0) return; + + int i = 0; + setsockopt (fd, IPPROTO_TCP, TCP_NODELAY, (char*) &i, sizeof(i)); + + // would be nice but not portable accross non-linux +#ifdef __linux__ + i = 1; + setsockopt (fd, IPPROTO_TCP, TCP_CORK, (char*) &i, sizeof(i)); +#endif + i = 65536; + setsockopt (fd, SOL_SOCKET, SO_SNDBUF, &i, sizeof(i)); +} + +/* This waits indefinitely (well, TIMEOUT seconds) for a complete + message to arrive. Returns false if there was some error. */ +bool +MsgChannel::wait_for_msg (int timeout) +{ + if (has_msg ()) + return true; + if (!read_a_bit ()) + { + trace() << "!read_a_bit\n"; + return false; + } + if (timeout <= 0) + { + trace() << "timeout <= 0\n"; + return has_msg (); + } + while (!has_msg ()) + { + fd_set read_set; + FD_ZERO (&read_set); + FD_SET (fd, &read_set); + struct timeval tv; + tv.tv_sec = timeout; + tv.tv_usec = 0; + if (select (fd + 1, &read_set, NULL, NULL, &tv) <= 0) { + if ( errno == EINTR ) + continue; + /* Either timeout or real error. For this function also + a timeout is an error. */ + return false; + } + if (!read_a_bit ()) { + trace() << "!read_a_bit 2\n"; + return false; + } + } + return true; +} + +Msg * +MsgChannel::get_msg(int timeout) +{ + Msg *m = 0; + enum MsgType type; + uint32_t t; + if (!wait_for_msg (timeout) ) { + trace() << "!wait_for_msg()\n"; + return 0; + } + /* If we've seen the EOF, and we don't have a complete message, + then we won't see it anymore. Return that to the caller. + Don't use has_msg() here, as it returns true for eof. */ + if (eof && instate != HAS_MSG) { + trace() << "eof && !HAS_MSG\n"; + return 0; + } + if (!has_msg ()) { + trace() << "saw eof without msg! " << eof << " " << instate << endl; + return 0; + } + if (text_based) + type = M_TEXT; + else + { + *this >> t; + type = (enum MsgType) t; + } + switch (type) + { + case M_UNKNOWN: return 0; + case M_PING: m = new PingMsg; break; + case M_END: m = new EndMsg; break; + case M_GET_CS: m = new GetCSMsg; break; + case M_USE_CS: m = new UseCSMsg; break; + case M_COMPILE_FILE: m = new CompileFileMsg (new CompileJob, true); break; + case M_FILE_CHUNK: m = new FileChunkMsg; break; + case M_COMPILE_RESULT: m = new CompileResultMsg; break; + case M_JOB_BEGIN: m = new JobBeginMsg; break; + case M_JOB_DONE: m = new JobDoneMsg; break; + case M_LOGIN: m = new LoginMsg; break; + case M_STATS: m = new StatsMsg; break; + case M_GET_NATIVE_ENV: m = new GetNativeEnvMsg; break; + case M_NATIVE_ENV: m = new UseNativeEnvMsg; break; + case M_MON_LOGIN: m = new MonLoginMsg; break; + case M_MON_GET_CS: m = new MonGetCSMsg; break; + case M_MON_JOB_BEGIN: m = new MonJobBeginMsg; break; + case M_MON_JOB_DONE: m = new MonJobDoneMsg; break; + case M_MON_STATS: m = new MonStatsMsg; break; + case M_JOB_LOCAL_BEGIN: m = new JobLocalBeginMsg; break; + case M_JOB_LOCAL_DONE : m = new JobLocalDoneMsg; break; + case M_MON_LOCAL_JOB_BEGIN: m = new MonLocalJobBeginMsg; break; + case M_TRANFER_ENV: m = new EnvTransferMsg; break; + case M_TEXT: m = new TextMsg; break; + case M_GET_INTERNALS: m = new GetInternalStatus; break; + case M_STATUS_TEXT: m = new StatusTextMsg; break; + case M_CS_CONF: m = new ConfCSMsg; break; + case M_TIMEOUT: break; + } + if (!m) { + trace() << "no message type" << endl; + return 0; + } + m->fill_from_channel (this); + instate = NEED_LEN; + update_state (); + return m; +} + +bool +MsgChannel::send_msg (const Msg &m, int flags) +{ + if (instate == NEED_PROTO && !wait_for_protocol ()) + return false; + chop_output (); + size_t msgtogo_old = msgtogo; + if (text_based) + { + m.send_to_channel (this); + } + else + { + *this << (uint32_t) 0; + m.send_to_channel (this); + uint32_t len = htonl (msgtogo - msgtogo_old - 4); + memcpy (msgbuf + msgtogo_old, &len, 4); + } + if ((flags & SendBulkOnly) && msgtogo < 4096) + return true; + + return flush_writebuf ((flags & SendBlocking)); +} + +#include "getifaddrs.h" +#include <net/if.h> +#include <sys/ioctl.h> + +/* Returns a filedesc. or a negative value for errors. */ +static int +open_send_broadcast (void) +{ + int ask_fd; + struct sockaddr_in remote_addr; + if ((ask_fd = socket (PF_INET, SOCK_DGRAM, 0)) < 0) + { + log_perror("open_send_broadcast socket"); + return -1; + } + + if (fcntl (ask_fd, F_SETFD, FD_CLOEXEC) < 0) + { + log_perror("open_send_broadcast fcntl"); + close (ask_fd); + return -1; + } + int optval = 1; + if (setsockopt (ask_fd, SOL_SOCKET, SO_BROADCAST, &optval, sizeof(optval)) < 0) + { + log_perror("open_send_broadcast setsockopt"); + close (ask_fd); + return -1; + } + + struct kde_ifaddrs *addrs; + int ret = kde_getifaddrs(&addrs); + + if ( ret < 0 ) + return ret; + + char buf = PROTOCOL_VERSION; + for (struct kde_ifaddrs *addr = addrs; addr != NULL; addr = addr->ifa_next) + { + /* + * See if this interface address is IPv4... + */ + + if (addr->ifa_addr == NULL || addr->ifa_addr->sa_family != AF_INET || + addr->ifa_netmask == NULL || addr->ifa_name == NULL) + continue; + + if ( ntohl( ( ( struct sockaddr_in* ) addr->ifa_addr )->sin_addr.s_addr ) == 0x7f000001 ) + { + trace() << "ignoring localhost " << addr->ifa_name << endl; + continue; + } + + if ( ( addr->ifa_flags & IFF_POINTOPOINT ) || !( addr->ifa_flags & IFF_BROADCAST) ) + { + log_info() << "ignoring tunnels " << addr->ifa_name << endl; + continue; + } + + if ( addr->ifa_broadaddr ) + { + log_info() << "broadcast " + << addr->ifa_name << " " + << inet_ntoa( ( ( sockaddr_in* )addr->ifa_broadaddr )->sin_addr ) + << endl; + + remote_addr.sin_family = AF_INET; + remote_addr.sin_port = htons (8765); + remote_addr.sin_addr = ( ( sockaddr_in* )addr->ifa_broadaddr )->sin_addr; + + if (sendto (ask_fd, &buf, 1, 0, (struct sockaddr*)&remote_addr, + sizeof (remote_addr)) != 1) + { + log_perror("open_send_broadcast sendto"); + } + } + } + kde_freeifaddrs (addrs); + return ask_fd; +} + +#define BROAD_BUFLEN 16 + +static bool +get_broad_answer (int ask_fd, int timeout, char *buf2, + struct sockaddr_in *remote_addr, + socklen_t *remote_len) +{ + char buf = PROTOCOL_VERSION; + fd_set read_set; + FD_ZERO (&read_set); + FD_SET (ask_fd, &read_set); + struct timeval tv; + tv.tv_sec = timeout / 1000; + tv.tv_usec = 1000 * (timeout % 1000); + errno = 0; + if (select (ask_fd + 1, &read_set, NULL, NULL, &tv) <= 0) + { + /* Normally this is a timeout, i.e. no scheduler there. */ + if (errno) + log_perror("waiting for scheduler"); + return false; + } + *remote_len = sizeof (struct sockaddr_in); + if (recvfrom (ask_fd, buf2, BROAD_BUFLEN, 0, (struct sockaddr*) remote_addr, + remote_len) != BROAD_BUFLEN) + { + log_perror("get_broad_answer recvfrom()"); + return false; + } + if (buf + 1 != buf2[0]) + { + log_error() << "wrong answer" << endl; + return false; + } + buf2[BROAD_BUFLEN - 1] = 0; + return true; +} + +DiscoverSched::DiscoverSched (const std::string &_netname, + int _timeout, + const std::string &_schedname) + : netname(_netname), schedname(_schedname), timeout(_timeout), ask_fd(-1), + sport(8765) +{ + time0 = time (0); + if (schedname.empty()) + { + const char *get = getenv( "USE_SCHEDULER" ); + if (get) + schedname = get; + } + + if (netname.empty()) + netname = "ICECREAM"; + + if (!schedname.empty()) + { + netname = ""; // take whatever the machine is giving us + attempt_scheduler_connect(); + } + else + ask_fd = open_send_broadcast (); +} + +DiscoverSched::~DiscoverSched () +{ + if (ask_fd >= 0) + close (ask_fd); +} + +bool +DiscoverSched::timed_out () +{ + return (time (0) - time0 >= timeout); +} + +void +DiscoverSched::attempt_scheduler_connect() +{ + + time0 = time(0) + MAX_SCHEDULER_PONG; + log_info() << "scheduler is on " << schedname << ":" << sport << " (net " << netname << ")\n"; + if ((ask_fd = prepare_connect(schedname, sport, remote_addr)) >= 0) + fcntl(ask_fd, F_SETFL, O_NONBLOCK); +} + + +MsgChannel * +DiscoverSched::try_get_scheduler () +{ + if (schedname.empty()) + { + socklen_t remote_len; + bool found = false; + char buf2[BROAD_BUFLEN]; + + /* Read/test all packages arrived until now. */ + while (!found + && get_broad_answer (ask_fd, 0/*timeout*/, buf2, + (struct sockaddr_in*) &remote_addr, &remote_len)) + if (strcasecmp (netname.c_str(), buf2 + 1) == 0) + found = true; + if (!found) + return 0; + schedname = inet_ntoa (remote_addr.sin_addr); + sport = ntohs (remote_addr.sin_port); + netname = buf2 + 1; + close (ask_fd); + ask_fd = -1; + attempt_scheduler_connect(); + } + + if (ask_fd >= 0) + { + int status = connect (ask_fd, (struct sockaddr*) &remote_addr, sizeof(remote_addr) ); + if (status == 0 || (status < 0 && errno == EISCONN)) + { + int fd = ask_fd; + ask_fd = -1; + return Service::createChannel(fd, + (struct sockaddr*) &remote_addr, sizeof(remote_addr)); + } + } + return 0; +} + +list<string> +get_netnames (int timeout) +{ + list<string> l; + int ask_fd; + struct sockaddr_in remote_addr; + socklen_t remote_len; + time_t time0 = time (0); + + ask_fd = open_send_broadcast (); + + do + { + char buf2[BROAD_BUFLEN]; + bool first = true; + /* Read/test all arriving packages. */ + while (get_broad_answer (ask_fd, first ? timeout : 0, buf2, + &remote_addr, &remote_len)) + { + first = false; + l.push_back (buf2 + 1); + } + } + while (time (0) - time0 < (timeout / 1000)); + close (ask_fd); + return l; +} + +void +Msg::fill_from_channel (MsgChannel *) +{ +} + +void +Msg::send_to_channel (MsgChannel *c) const +{ + if (c->is_text_based()) + return; + *c << (uint32_t) type; +} + +void +GetCSMsg::fill_from_channel (MsgChannel *c) +{ + Msg::fill_from_channel (c); + c->read_environments( versions ); + *c >> filename; + uint32_t _lang; + *c >> _lang; + *c >> count; + *c >> target; + lang = static_cast<CompileJob::Language>( _lang ); + *c >> arg_flags; + *c >> client_id; + preferred_host = string(); + if (IS_PROTOCOL_22(c)) + *c >> preferred_host; +} + +void +GetCSMsg::send_to_channel (MsgChannel *c) const +{ + Msg::send_to_channel (c); + c->write_environments( versions ); + *c << shorten_filename(filename); + *c << (uint32_t) lang; + *c << count; + *c << target; + *c << arg_flags; + *c << client_id; + if (IS_PROTOCOL_22(c)) + *c << preferred_host; +} + +void +UseCSMsg::fill_from_channel (MsgChannel *c) +{ + Msg::fill_from_channel (c); + *c >> job_id; + *c >> port; + *c >> hostname; + *c >> host_platform; + *c >> got_env; + *c >> client_id; + if (IS_PROTOCOL_28(c)) + *c >> matched_job_id; + else + matched_job_id = 0; +} + +void +UseCSMsg::send_to_channel (MsgChannel *c) const +{ + Msg::send_to_channel (c); + *c << job_id; + *c << port; + *c << hostname; + *c << host_platform; + *c << got_env; + *c << client_id; + if (IS_PROTOCOL_28(c)) + *c << matched_job_id; +} + +void +CompileFileMsg::fill_from_channel (MsgChannel *c) +{ + Msg::fill_from_channel (c); + uint32_t id, lang; + list<string> _l1, _l2; + string version; + *c >> lang; + *c >> id; + *c >> _l1; + *c >> _l2; + *c >> version; + job->setLanguage ((CompileJob::Language) lang); + job->setJobID (id); + ArgumentsList l; + for (list<string>::const_iterator it = _l1.begin(); it != _l1.end(); ++it) + l.append( *it, Arg_Remote ); + for (list<string>::const_iterator it = _l2.begin(); it != _l2.end(); ++it) + l.append( *it, Arg_Rest ); + job->setFlags (l); + job->setEnvironmentVersion (version); + + string target; + *c >> target; + job->setTargetPlatform( target ); +} + +void +CompileFileMsg::send_to_channel (MsgChannel *c) const +{ + Msg::send_to_channel (c); + *c << (uint32_t) job->language(); + *c << job->jobID(); + *c << job->remoteFlags(); + *c << job->restFlags(); + *c << job->environmentVersion(); + *c << job->targetPlatform(); +} + +CompileJob * +CompileFileMsg::takeJob() +{ + assert (deleteit); + deleteit = false; + return job; +} + +void +FileChunkMsg::fill_from_channel (MsgChannel *c) +{ + if (del_buf) + delete [] buffer; + buffer = 0; + del_buf = true; + + Msg::fill_from_channel (c); + c->readcompressed (&buffer, len, compressed); +} + +void +FileChunkMsg::send_to_channel (MsgChannel *c) const +{ + Msg::send_to_channel (c); + c->writecompressed (buffer, len, compressed); +} + +FileChunkMsg::~FileChunkMsg() +{ + if (del_buf) + delete [] buffer; +} + +void +CompileResultMsg::fill_from_channel (MsgChannel *c) +{ + Msg::fill_from_channel (c); + uint32_t _status = 0; + *c >> err; + *c >> out; + *c >> _status; + status = _status; + uint32_t was = 0; + *c >> was; + was_out_of_memory = was; +} + +void +CompileResultMsg::send_to_channel (MsgChannel *c) const +{ + Msg::send_to_channel (c); + *c << err; + *c << out; + *c << status; + *c << (uint32_t) was_out_of_memory; +} + +void +JobBeginMsg::fill_from_channel (MsgChannel *c) +{ + Msg::fill_from_channel (c); + *c >> job_id; + *c >> stime; +} + +void +JobBeginMsg::send_to_channel (MsgChannel *c) const +{ + Msg::send_to_channel (c); + *c << job_id; + *c << stime; +} + +void JobLocalBeginMsg::fill_from_channel( MsgChannel *c ) +{ + Msg::fill_from_channel(c); + *c >> stime; + *c >> outfile; + *c >> id; +} + +void JobLocalBeginMsg::send_to_channel( MsgChannel *c ) const +{ + Msg::send_to_channel( c ); + *c << stime; + *c << outfile; + *c << id; +} + +void JobLocalDoneMsg::fill_from_channel( MsgChannel *c ) +{ + Msg::fill_from_channel(c); + *c >> job_id; +} + +void JobLocalDoneMsg::send_to_channel( MsgChannel *c ) const +{ + Msg::send_to_channel( c ); + *c << job_id; +} + +JobDoneMsg::JobDoneMsg (int id, int exit, unsigned int _flags) + : Msg(M_JOB_DONE), exitcode( exit ), flags (_flags), job_id( id ) +{ + real_msec = 0; + user_msec = 0; + sys_msec = 0; + pfaults = 0; + in_compressed = 0; + in_uncompressed = 0; + out_compressed = 0; + out_uncompressed = 0; +} + +void +JobDoneMsg::fill_from_channel (MsgChannel *c) +{ + Msg::fill_from_channel (c); + uint32_t _exitcode = 255; + *c >> job_id; + *c >> _exitcode; + *c >> real_msec; + *c >> user_msec; + *c >> sys_msec; + *c >> pfaults; + *c >> in_compressed; + *c >> in_uncompressed; + *c >> out_compressed; + *c >> out_uncompressed; + *c >> flags; + exitcode = (int) _exitcode; +} + +void +JobDoneMsg::send_to_channel (MsgChannel *c) const +{ + Msg::send_to_channel (c); + *c << job_id; + *c << (uint32_t) exitcode; + *c << real_msec; + *c << user_msec; + *c << sys_msec; + *c << pfaults; + *c << in_compressed; + *c << in_uncompressed; + *c << out_compressed; + *c << out_uncompressed; + *c << flags; +} + +LoginMsg::LoginMsg(unsigned int myport, const std::string &_nodename, const std::string _host_platform) + : Msg(M_LOGIN), port( myport ), noremote( false ), chroot_possible( false ), nodename( _nodename ), host_platform( _host_platform ) +{ + // check if we're root + chroot_possible = ( geteuid() == 0 ); +} + +void +LoginMsg::fill_from_channel (MsgChannel *c) +{ + Msg::fill_from_channel (c); + *c >> port; + *c >> max_kids; + c->read_environments( envs ); + *c >> nodename; + *c >> host_platform; + uint32_t net_chroot_possible = 0; + *c >> net_chroot_possible; + chroot_possible = net_chroot_possible != 0; + uint32_t net_noremote = 0; + if (IS_PROTOCOL_26( c )) *c >> net_noremote; + noremote = (net_noremote != 0); +} + +void +LoginMsg::send_to_channel (MsgChannel *c) const +{ + Msg::send_to_channel (c); + *c << port; + *c << max_kids; + c->write_environments( envs ); + *c << nodename; + *c << host_platform; + *c << chroot_possible; + if (IS_PROTOCOL_26( c )) *c << noremote; +} + +void +ConfCSMsg::fill_from_channel (MsgChannel *c) +{ + Msg::fill_from_channel (c); + *c >> max_scheduler_pong; + *c >> max_scheduler_ping; + *c >> bench_source; +} + +void +ConfCSMsg::send_to_channel (MsgChannel *c) const +{ + Msg::send_to_channel (c); + *c << max_scheduler_pong; + *c << max_scheduler_ping; + *c << bench_source; +} + +void +StatsMsg::fill_from_channel (MsgChannel *c) +{ + Msg::fill_from_channel (c); + *c >> load; + *c >> loadAvg1; + *c >> loadAvg5; + *c >> loadAvg10; + *c >> freeMem; +} + +void +StatsMsg::send_to_channel (MsgChannel *c) const +{ + Msg::send_to_channel (c); + *c << load; + *c << loadAvg1; + *c << loadAvg5; + *c << loadAvg10; + *c << freeMem; +} + +void +UseNativeEnvMsg::fill_from_channel (MsgChannel *c) +{ + Msg::fill_from_channel (c); + *c >> nativeVersion; +} + +void +UseNativeEnvMsg::send_to_channel (MsgChannel *c) const +{ + Msg::send_to_channel (c); + *c << nativeVersion; +} + +void +EnvTransferMsg::fill_from_channel (MsgChannel *c) +{ + Msg::fill_from_channel (c); + *c >> name; + *c >> target; +} + +void +EnvTransferMsg::send_to_channel (MsgChannel *c) const +{ + Msg::send_to_channel (c); + *c << name; + *c << target; +} + +void +MonGetCSMsg::fill_from_channel (MsgChannel *c) +{ + if (IS_PROTOCOL_29(c)) { + Msg::fill_from_channel(c); + *c >> filename; + uint32_t _lang; + *c >> _lang; + lang = static_cast<CompileJob::Language>(_lang); + } + else + GetCSMsg::fill_from_channel (c); + + *c >> job_id; + *c >> clientid; +} + +void +MonGetCSMsg::send_to_channel (MsgChannel *c) const +{ + if (IS_PROTOCOL_29(c)) { + Msg::send_to_channel (c); + *c << shorten_filename(filename); + *c << (uint32_t) lang; + } + else + GetCSMsg::send_to_channel (c); + + *c << job_id; + *c << clientid; +} + +void +MonJobBeginMsg::fill_from_channel (MsgChannel *c) +{ + Msg::fill_from_channel (c); + *c >> job_id; + *c >> stime; + *c >> hostid; +} + +void +MonJobBeginMsg::send_to_channel (MsgChannel *c) const +{ + Msg::send_to_channel (c); + *c << job_id; + *c << stime; + *c << hostid; +} + +void MonLocalJobBeginMsg::fill_from_channel (MsgChannel * c) +{ + Msg::fill_from_channel(c); + *c >> hostid; + *c >> job_id; + *c >> stime; + *c >> file; +} + +void MonLocalJobBeginMsg::send_to_channel (MsgChannel * c) const +{ + Msg::send_to_channel(c); + *c << hostid; + *c << job_id; + *c << stime; + *c << shorten_filename(file); +} + +void +MonStatsMsg::fill_from_channel (MsgChannel *c) +{ + Msg::fill_from_channel (c); + *c >> hostid; + *c >> statmsg; +} + +void +MonStatsMsg::send_to_channel (MsgChannel *c) const +{ + Msg::send_to_channel (c); + *c << hostid; + *c << statmsg; +} + +void +TextMsg::fill_from_channel (MsgChannel *c) +{ + c->read_line (text); +} + +void +TextMsg::send_to_channel (MsgChannel *c) const +{ + c->write_line (text); +} + +void +StatusTextMsg::fill_from_channel (MsgChannel *c) +{ + Msg::fill_from_channel( c ); + *c >> text; +} + +void +StatusTextMsg::send_to_channel (MsgChannel *c) const +{ + Msg::send_to_channel( c ); + *c << text; +} + +/* +vim:cinoptions={.5s,g0,p5,t0,(0,^-0.5s,n-0.5s:tw=78:cindent:sw=4: +*/ diff --git a/services/comm.h b/services/comm.h new file mode 100644 index 0000000..be5370f --- /dev/null +++ b/services/comm.h @@ -0,0 +1,601 @@ +/* -*- mode: C++; c-file-style: "gnu"; fill-column: 78 -*- */ +/* + This file is part of Icecream. + + Copyright (c) 2004 Michael Matz <matz@suse.de> + 2004 Stephan Kulow <coolo@suse.de> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + + +#ifndef _COMM_H +#define _COMM_H + +#ifdef __linux__ +# include <stdint.h> +#endif +#include <sys/types.h> +#include <sys/socket.h> +#include <netinet/in.h> +#include <netinet/tcp.h> + +#include "job.h" + +// if you increase the PROTOCOL_VERSION, add a macro below and use that +#define PROTOCOL_VERSION 29 +// if you increase the MIN_PROTOCOL_VERSION, comment out macros below and clean up the code +#define MIN_PROTOCOL_VERSION 21 + +#define MAX_SCHEDULER_PONG 3 +// MAX_SCHEDULER_PING must be multiple of MAX_SCHEDULER_PONG +#define MAX_SCHEDULER_PING 12 * MAX_SCHEDULER_PONG +// maximum amount of time in seconds a daemon can be busy installing +#define MAX_BUSY_INSTALLING 120 + +#define IS_PROTOCOL_22( c ) ( (c)->protocol >= 22 ) +#define IS_PROTOCOL_23( c ) ( (c)->protocol >= 23 ) +#define IS_PROTOCOL_24( c ) ( (c)->protocol >= 24 ) +#define IS_PROTOCOL_25( c ) ( (c)->protocol >= 25 ) +#define IS_PROTOCOL_26( c ) ( (c)->protocol >= 26 ) +#define IS_PROTOCOL_27( c ) ( (c)->protocol >= 27 ) +#define IS_PROTOCOL_28( c ) ( (c)->protocol >= 28 ) +#define IS_PROTOCOL_29( c ) ( (c)->protocol >= 29 ) + +enum MsgType { + // so far unknown + M_UNKNOWN = 'A', + + /* When the scheduler didn't get M_STATS from a CS + for a specified time (e.g. 10m), then he sends a + ping */ + M_PING, + + /* Either the end of file chunks or connection (A<->A) */ + M_END, + + M_TIMEOUT, // unused + + // C --> CS + M_GET_NATIVE_ENV, + // CS -> C + M_NATIVE_ENV, + + // C --> S + M_GET_CS, + // S --> C + M_USE_CS, // = 'G' + + // C --> CS + M_COMPILE_FILE, // = 'I' + // generic file transfer + M_FILE_CHUNK, + // CS --> C + M_COMPILE_RESULT, + + // CS --> S (after the C got the CS from the S, the CS tells the S when the C asks him) + M_JOB_BEGIN, + M_JOB_DONE, // = 'M' + + // C --> CS, CS --> S (forwarded from C), _and_ CS -> C as start ping + M_JOB_LOCAL_BEGIN, // = 'N' + M_JOB_LOCAL_DONE, + + // CS --> S, first message sent + M_LOGIN, + // CS --> S (periodic) + M_STATS, + + // messages between monitor and scheduler + M_MON_LOGIN, + M_MON_GET_CS, + M_MON_JOB_BEGIN, // = 'T' + M_MON_JOB_DONE, + M_MON_LOCAL_JOB_BEGIN, + M_MON_STATS, + + M_TRANFER_ENV, // = 'X' + + M_TEXT, + M_STATUS_TEXT, + M_GET_INTERNALS, + + // S --> CS, answered by M_LOGIN + M_CS_CONF +}; + +class MsgChannel; + +// a list of pairs of host platform, filename +typedef std::list<std::pair<std::string, std::string> > Environments; + +class Msg { +public: + enum MsgType type; + Msg (enum MsgType t) : type(t) {} + virtual ~Msg () {} + virtual void fill_from_channel (MsgChannel * c); + virtual void send_to_channel (MsgChannel * c) const; +}; + +class MsgChannel { + friend class Service; + // deep copied + struct sockaddr *addr; + socklen_t len; +public: + // our filedesc + int fd; + + enum SendFlags { + SendBlocking = 1<<0, + SendNonBlocking = 1<<1, + SendBulkOnly = 1<<2 + }; + + // the minimum protocol version between me and him + int protocol; + + std::string name; + time_t last_talk; + + void setBulkTransfer(); + + std::string dump() const; + // NULL <--> channel closed or timeout + Msg *get_msg(int timeout = 10); + // false <--> error (msg not send) + bool send_msg (const Msg &, int SendFlags = SendBlocking); + bool has_msg (void) const { return eof || instate == HAS_MSG; } + bool read_a_bit (void); + bool at_eof (void) const { return instate != HAS_MSG && eof; } + bool is_text_based(void) const { return text_based; } + + MsgChannel &operator>>(uint32_t&); + MsgChannel &operator>>(std::string&); + MsgChannel &operator>>(std::list<std::string>&); + + MsgChannel &operator<<(uint32_t); + MsgChannel &operator<<(const std::string&); + MsgChannel &operator<<(const std::list<std::string>&); + + void readcompressed (unsigned char **buf, size_t &_uclen, size_t &_clen); + void writecompressed (const unsigned char *in_buf, + size_t _in_len, size_t &_out_len); + void write_environments( const Environments &envs ); + void read_environments( Environments &envs ); + void read_line (std::string &line); + void write_line (const std::string &line); + + bool eq_ip (const MsgChannel &s) const; + + virtual ~MsgChannel (); + +protected: + MsgChannel (int _fd, struct sockaddr *, socklen_t, bool text = false); + bool wait_for_protocol (); + // returns false if there was an error sending something + bool flush_writebuf (bool blocking); + void writefull (const void *_buf, size_t count); + // returns false if there was an error in the protocol setup + bool update_state (void); + void chop_input (void); + void chop_output (void); + bool wait_for_msg (int timeout); + char *msgbuf; + size_t msgbuflen; + size_t msgofs; + size_t msgtogo; + char *inbuf; + size_t inbuflen; + size_t inofs; + size_t intogo; + enum {NEED_PROTO, NEED_LEN, FILL_BUF, HAS_MSG} instate; + uint32_t inmsglen; + bool eof; + bool text_based; +}; + +// just convenient functions to create MsgChannels +class Service { +public: + static MsgChannel *createChannel( const std::string &host, unsigned short p, int timeout); + static MsgChannel *createChannel( int remote_fd, struct sockaddr *, socklen_t ); +}; + +// -------------------------------------------------------------------------- +// this class is also used by icecream-monitor +class DiscoverSched +{ + struct sockaddr_in remote_addr; + std::string netname, schedname; + int timeout; + int ask_fd; + time_t time0; + unsigned int sport; + void attempt_scheduler_connect(); +public: + /* Connect to a scheduler waiting max. TIMEOUT milliseconds. + schedname can be the hostname of a box running a scheduler, to avoid + broadcasting. */ + DiscoverSched (const std::string &_netname = std::string(), + int _timeout = 2000, + const std::string &_schedname = std::string()); + ~DiscoverSched(); + bool timed_out(); + int listen_fd() const { return schedname.empty() ? ask_fd : -1; } + int connect_fd() const { return schedname.empty() ? -1 : ask_fd; } + + // compat for icecream monitor + int get_fd() const { return listen_fd(); } + + MsgChannel *try_get_scheduler(); + // Returns the hostname of the scheduler - set by constructor or by try_get_scheduler + std::string schedulerName() const { return schedname; } + // Returns the network name of the scheduler - set by constructor or by try_get_scheduler + std::string networkName() const { return netname; } +}; +// -------------------------------------------------------------------------- + +/* Return a list of all reachable netnames. We wait max. WAITTIME + milliseconds for answers. */ +std::list<std::string> get_netnames (int waittime = 2000); + +class PingMsg : public Msg { +public: + PingMsg () : Msg(M_PING) {} +}; + +class EndMsg : public Msg { +public: + EndMsg () : Msg(M_END) {} +}; + +class GetCSMsg : public Msg { +public: + Environments versions; + std::string filename; + CompileJob::Language lang; + uint32_t count; // the number of UseCS messages to answer with - usually 1 + std::string target; + uint32_t arg_flags; + uint32_t client_id; + std::string preferred_host; + GetCSMsg () : Msg(M_GET_CS), count( 1 ),arg_flags( 0 ), client_id( 0 ) {} + GetCSMsg (const Environments &envs, const std::string &f, + CompileJob::Language _lang, unsigned int _count, + std::string _target, unsigned int _arg_flags, + const std::string &host) + : Msg(M_GET_CS), versions( envs ), filename(f), lang(_lang), + count( _count ), target( _target ), arg_flags( _arg_flags ), + client_id( 0 ), preferred_host(host) + {} + virtual void fill_from_channel (MsgChannel * c); + virtual void send_to_channel (MsgChannel * c) const; +}; + +class UseCSMsg : public Msg { +public: + uint32_t job_id; + std::string hostname; + uint32_t port; + std::string host_platform; + uint32_t got_env; + uint32_t client_id; + uint32_t matched_job_id; + UseCSMsg () : Msg(M_USE_CS) {} + UseCSMsg (std::string platform, std::string host, unsigned int p, unsigned int id, bool gotit, + unsigned int _client_id, unsigned int matched_host_jobs) + : Msg(M_USE_CS), + job_id(id), + hostname (host), + port (p), + host_platform( platform ), + got_env( gotit ), + client_id( _client_id ), + matched_job_id (matched_host_jobs) + { } + virtual void fill_from_channel (MsgChannel * c); + virtual void send_to_channel (MsgChannel * c) const; +}; + +class GetNativeEnvMsg : public Msg { +public: + GetNativeEnvMsg () : Msg(M_GET_NATIVE_ENV) {} +}; + +class UseNativeEnvMsg : public Msg { +public: + std::string nativeVersion; + UseNativeEnvMsg () : Msg(M_NATIVE_ENV) {} + UseNativeEnvMsg (std::string _native) + : Msg(M_NATIVE_ENV), nativeVersion( _native ) {} + virtual void fill_from_channel (MsgChannel * c); + virtual void send_to_channel (MsgChannel * c) const; +}; + +class CompileFileMsg : public Msg { +public: + CompileFileMsg (CompileJob *j, bool delete_job = false) + : Msg(M_COMPILE_FILE), deleteit( delete_job ), job( j ) {} + ~CompileFileMsg() { if ( deleteit ) delete job; } + virtual void fill_from_channel (MsgChannel * c); + virtual void send_to_channel (MsgChannel * c) const; + CompileJob *takeJob(); + +private: + bool deleteit; + CompileJob *job; +}; + +class FileChunkMsg : public Msg { +public: + unsigned char* buffer; + size_t len; + mutable size_t compressed; + bool del_buf; + + FileChunkMsg (unsigned char *_buffer, size_t _len) + : Msg(M_FILE_CHUNK), buffer( _buffer ), len( _len ), del_buf(false) {} + FileChunkMsg() : Msg( M_FILE_CHUNK ), buffer( 0 ), len( 0 ), del_buf(true) {} + ~FileChunkMsg(); + virtual void fill_from_channel (MsgChannel * c); + virtual void send_to_channel (MsgChannel * c) const; +private: + FileChunkMsg(const FileChunkMsg&); + FileChunkMsg& operator=(const FileChunkMsg&); +}; + +class CompileResultMsg : public Msg { +public: + int status; + std::string out; + std::string err; + bool was_out_of_memory; + + CompileResultMsg () : Msg(M_COMPILE_RESULT), status( 0 ), was_out_of_memory( false ) {} + virtual void fill_from_channel (MsgChannel * c); + virtual void send_to_channel (MsgChannel * c) const; +}; + +class JobBeginMsg : public Msg { +public: + uint32_t job_id; + uint32_t stime; + JobBeginMsg () : Msg(M_JOB_BEGIN) {} + JobBeginMsg (unsigned int j) : Msg(M_JOB_BEGIN), job_id(j), stime(time(0)) {} + virtual void fill_from_channel (MsgChannel * c); + virtual void send_to_channel (MsgChannel * c) const; +}; + +enum SpecialExits { + CLIENT_WAS_WAITING_FOR_CS = 200 +}; + +class JobDoneMsg : public Msg { +public: + uint32_t real_msec; /* real time it used */ + uint32_t user_msec; /* user time used */ + uint32_t sys_msec; /* system time used */ + uint32_t pfaults; /* page faults */ + + int exitcode; /* exit code */ + /* FROM_SERVER: this message was generated by the daemon responsible + for remotely compiling the job (i.e. job->server). + FROM_SUBMITTER: this message was generated by the daemon connected + to the submitting client. */ + enum from_type {FROM_SERVER = 0, FROM_SUBMITTER = 1}; + uint32_t flags; + + uint32_t in_compressed; + uint32_t in_uncompressed; + uint32_t out_compressed; + uint32_t out_uncompressed; + + uint32_t job_id; + JobDoneMsg (int job_id = 0, int exitcode = -1, unsigned int flags = FROM_SERVER); + void set_from (from_type from) + { + flags |= (uint32_t)from; + } + bool is_from_server () { return (flags & FROM_SUBMITTER) == 0; } + virtual void fill_from_channel (MsgChannel * c); + virtual void send_to_channel (MsgChannel * c) const; +}; + +class JobLocalBeginMsg : public Msg { +public: + std::string outfile; + uint32_t stime; + uint32_t id; + JobLocalBeginMsg(int job_id = 0, const std::string &file = "") : Msg( M_JOB_LOCAL_BEGIN ), + outfile( file ), stime(time(0)), id( job_id ) {} + virtual void fill_from_channel (MsgChannel * c); + virtual void send_to_channel (MsgChannel * c) const; +}; + +class JobLocalDoneMsg : public Msg { +public: + uint32_t job_id; + JobLocalDoneMsg(unsigned int id = 0) : Msg( M_JOB_LOCAL_DONE ), job_id( id ) {} + virtual void fill_from_channel (MsgChannel * c); + virtual void send_to_channel (MsgChannel * c) const; +}; + +class LoginMsg : public Msg { +public: + uint32_t port; + Environments envs; + uint32_t max_kids; + bool noremote; + bool chroot_possible; + std::string nodename; + std::string host_platform; + LoginMsg (unsigned int myport, const std::string &_nodename, const std::string _host_platform); + LoginMsg () : Msg(M_LOGIN), port( 0 ) {} + + virtual void fill_from_channel (MsgChannel * c); + virtual void send_to_channel (MsgChannel * c) const; +}; + +class ConfCSMsg : public Msg { +public: + uint32_t max_scheduler_pong; + uint32_t max_scheduler_ping; + std::string bench_source; + + ConfCSMsg (const char* bench) + : Msg(M_CS_CONF), max_scheduler_pong(MAX_SCHEDULER_PONG), max_scheduler_ping(MAX_SCHEDULER_PING), bench_source(bench) {} + ConfCSMsg () + : Msg(M_CS_CONF), max_scheduler_pong(MAX_SCHEDULER_PONG), max_scheduler_ping(MAX_SCHEDULER_PING) {} + + + virtual void fill_from_channel (MsgChannel * c); + virtual void send_to_channel (MsgChannel * c) const; +}; + +class StatsMsg : public Msg { +public: + /** + * For now the only load measure we have is the + * load from 0-1000. + * This is defined to be a daemon defined value + * on how busy the machine is. The higher the load + * is, the slower a given job will compile (preferably + * linear scale). Load of 1000 means to not schedule + * another job under no circumstances. + */ + uint32_t load; + + uint32_t loadAvg1; + uint32_t loadAvg5; + uint32_t loadAvg10; + uint32_t freeMem; + + StatsMsg () : Msg(M_STATS) { load = 0; } + virtual void fill_from_channel (MsgChannel * c); + virtual void send_to_channel (MsgChannel * c) const; +}; + +class EnvTransferMsg : public Msg { +public: + std::string name; + std::string target; + EnvTransferMsg() : Msg( M_TRANFER_ENV ) { + } + EnvTransferMsg( const std::string &_target, const std::string &_name ) + : Msg( M_TRANFER_ENV ), name( _name ), target( _target ) {} + virtual void fill_from_channel (MsgChannel * c); + virtual void send_to_channel (MsgChannel * c) const; +}; + +class GetInternalStatus : public Msg { +public: + GetInternalStatus() : Msg(M_GET_INTERNALS) {} + GetInternalStatus(const GetInternalStatus&) : Msg(M_GET_INTERNALS) {} +}; + +class MonLoginMsg : public Msg { +public: + MonLoginMsg() : Msg(M_MON_LOGIN) {} +}; + +class MonGetCSMsg : public GetCSMsg { +public: + uint32_t job_id; + uint32_t clientid; + + MonGetCSMsg() : GetCSMsg() { // overwrite + type = M_MON_GET_CS; + clientid = job_id = 0; + } + MonGetCSMsg( int jobid, int hostid, GetCSMsg *m ) + : GetCSMsg( Environments(), m->filename, m->lang, 1, m->target, 0, std::string() ), job_id( jobid ), clientid( hostid ) + { + type = M_MON_GET_CS; + } + virtual void fill_from_channel (MsgChannel * c); + virtual void send_to_channel (MsgChannel * c) const; +}; + +class MonJobBeginMsg : public Msg { +public: + uint32_t job_id; + uint32_t stime; + uint32_t hostid; + MonJobBeginMsg() : Msg(M_MON_JOB_BEGIN), job_id( 0 ), stime( 0 ), hostid( 0 ) {} + MonJobBeginMsg( unsigned int id, unsigned int time, int _hostid) + : Msg( M_MON_JOB_BEGIN ), job_id( id ), stime( time ), hostid( _hostid ) {} + virtual void fill_from_channel (MsgChannel * c); + virtual void send_to_channel (MsgChannel * c) const; +}; + +class MonJobDoneMsg : public JobDoneMsg { +public: + MonJobDoneMsg() : JobDoneMsg() { + type = M_MON_JOB_DONE; + } + MonJobDoneMsg(const JobDoneMsg& o) + : JobDoneMsg(o) { type = M_MON_JOB_DONE; } +}; + +class MonLocalJobBeginMsg : public Msg { +public: + uint32_t job_id; + uint32_t stime; + uint32_t hostid; + std::string file; + MonLocalJobBeginMsg() : Msg(M_MON_LOCAL_JOB_BEGIN) {} + MonLocalJobBeginMsg( unsigned int id, const std::string &_file, unsigned int time, int _hostid ) + : Msg( M_MON_LOCAL_JOB_BEGIN ), job_id( id ), stime( time ), hostid( _hostid ), file( _file ) {} + virtual void fill_from_channel (MsgChannel * c); + virtual void send_to_channel (MsgChannel * c) const; +}; + +class MonStatsMsg : public Msg { +public: + uint32_t hostid; + std::string statmsg; + MonStatsMsg() : Msg( M_MON_STATS ) {} + MonStatsMsg( int id, const std::string &_statmsg ) + : Msg( M_MON_STATS ), hostid( id ), statmsg( _statmsg ) + { } + virtual void fill_from_channel (MsgChannel * c); + virtual void send_to_channel (MsgChannel * c) const; +}; + +class TextMsg : public Msg { +public: + std::string text; + TextMsg() : Msg( M_TEXT ) {} + TextMsg( const std::string &_text) + : Msg ( M_TEXT ), text(_text) {} + TextMsg (const TextMsg& m) + : Msg ( M_TEXT ), text(m.text) {} + virtual void fill_from_channel (MsgChannel *c); + virtual void send_to_channel (MsgChannel *c) const; +}; + +class StatusTextMsg : public Msg { +public: + std::string text; + StatusTextMsg() : Msg( M_STATUS_TEXT ) {} + StatusTextMsg( const std::string &_text) + : Msg ( M_STATUS_TEXT ), text(_text) {} + virtual void fill_from_channel (MsgChannel *c); + virtual void send_to_channel (MsgChannel *c) const; +}; + +#endif diff --git a/services/exitcode.h b/services/exitcode.h new file mode 100644 index 0000000..35866cf --- /dev/null +++ b/services/exitcode.h @@ -0,0 +1,61 @@ +/* -*- c-file-style: "java"; indent-tabs-mode: nil; fill-column: 78 -*- + * + * distcc -- A simple distributed compiler system + * + * Copyright (C) 2002, 2003 by Martin Pool <mbp@samba.org> + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + * USA + */ + +#ifndef _DISTCC_EXITCODE_H +#define _DISTCC_EXITCODE_H + +/** + * @file + * + * Common exit codes. + **/ + +/** + * Common exit codes for both client and server. + * + * These need to be in [1,255] so that they can be used as exit() + * codes. + **/ +enum dcc_exitcode { + EXIT_DISTCC_FAILED = 100, /**< General failure */ + EXIT_BAD_ARGUMENTS = 101, + EXIT_BIND_FAILED = 102, + EXIT_CONNECT_FAILED = 103, + EXIT_COMPILER_CRASHED = 104, + EXIT_OUT_OF_MEMORY = 105, + EXIT_BAD_HOSTSPEC = 106, + EXIT_IO_ERROR = 107, + EXIT_TRUNCATED = 108, + EXIT_PROTOCOL_ERROR = 109, + EXIT_COMPILER_MISSING = 110, /**< Compiler executable not found */ + EXIT_RECURSION = 111, /**< icecc called itself */ + EXIT_SETUID_FAILED = 112, /**< Failed to discard privileges */ + EXIT_ACCESS_DENIED = 113, /**< Network access denied */ + EXIT_BUSY = 114, /**< In use by another process. */ + EXIT_NO_SUCH_FILE = 115, + EXIT_NO_HOSTS = 116, + EXIT_GONE = 117, /**< No longer relevant */ + EXIT_CLIENT_KILLED = 118 +}; + + +#endif /* _DISTCC_EXITCODE_H */ diff --git a/services/getifaddrs.cpp b/services/getifaddrs.cpp new file mode 100644 index 0000000..b4edb68 --- /dev/null +++ b/services/getifaddrs.cpp @@ -0,0 +1,270 @@ +/* getifaddrs -- get names and addresses of all network interfaces + Copyright (C) 1999,2002 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +/** + * 02-12-26, tim@tjansen.de: put in kde_ namespace, C++ fixes, + * included ifreq.h + * removed glibc dependencies + */ + +#include "config.h" + +#ifndef HAVE_IFADDRS_H + +#include "getifaddrs.h" +#include <net/if.h> +#include <sys/socket.h> +#include <sys/ioctl.h> +#include <unistd.h> +#include <stdlib.h> +#include <string.h> +#include <errno.h> +#include <netinet/in.h> +#include <stdio.h> + +#ifndef IF_NAMESIZE +#define IF_NAMESIZE IFNAMSIZ +#endif + +#ifdef SIOCGIFCONF + +#define old_siocgifconf 0 + +static inline void +__ifreq (struct ifreq **ifreqs, int *num_ifs, int sockfd) +{ + int fd = sockfd; + struct ifconf ifc; + int rq_len; + int nifs; +# define RQ_IFS 4 + + if (fd < 0) + fd = socket (AF_INET, SOCK_DGRAM, 0); + if (fd < 0) + { + *num_ifs = 0; + *ifreqs = NULL; + return; + } + + ifc.ifc_buf = NULL; + + /* We may be able to get the needed buffer size directly, rather than + guessing. */ + if (! old_siocgifconf) + { + ifc.ifc_buf = NULL; + ifc.ifc_len = 0; + if (ioctl (fd, SIOCGIFCONF, &ifc) < 0 || ifc.ifc_len == 0) + { + rq_len = RQ_IFS * sizeof (struct ifreq); + } + else + rq_len = ifc.ifc_len; + } + else + rq_len = RQ_IFS * sizeof (struct ifreq); + + /* Read all the interfaces out of the kernel. */ + while (1) + { + ifc.ifc_len = rq_len; + ifc.ifc_buf = (char*) realloc (ifc.ifc_buf, ifc.ifc_len); + if (ifc.ifc_buf == NULL || ioctl (fd, SIOCGIFCONF, &ifc) < 0) + { + if (ifc.ifc_buf) + free (ifc.ifc_buf); + + if (fd != sockfd) + close (fd); + + *num_ifs = 0; + *ifreqs = NULL; + return; + } + + if (!old_siocgifconf || ifc.ifc_len < rq_len) + break; + + rq_len *= 2; + } + + nifs = ifc.ifc_len / sizeof (struct ifreq); + + if (fd != sockfd) + close (fd); + + *num_ifs = nifs; + *ifreqs = (ifreq*)realloc (ifc.ifc_buf, nifs * sizeof (struct ifreq)); +} + +static inline struct ifreq * +__if_nextreq (struct ifreq *ifr) +{ + return ifr + 1; +} + +static inline void +__if_freereq (struct ifreq *ifreqs, int num_ifs) +{ + free (ifreqs); +} + +/* Create a linked list of `struct kde_ifaddrs' structures, one for each + network interface on the host machine. If successful, store the + list in *IFAP and return 0. On errors, return -1 and set `errno'. */ +int +kde_getifaddrs (struct kde_ifaddrs **ifap) +{ + /* This implementation handles only IPv4 interfaces. + The various ioctls below will only work on an AF_INET socket. + Some different mechanism entirely must be used for IPv6. */ + int fd = socket (AF_INET, SOCK_DGRAM, 0); + struct ifreq *ifreqs; + int nifs; + + if (fd < 0) + return -1; + + __ifreq (&ifreqs, &nifs, fd); + if (ifreqs == NULL) /* XXX doesn't distinguish error vs none */ + { + close (fd); + return -1; + } + + /* Now we have the list of interfaces and each one's address. + Put it into the expected format and fill in the remaining details. */ + if (nifs == 0) + *ifap = NULL; + else + { + struct Storage + { + struct kde_ifaddrs ia; + struct sockaddr addr, netmask, broadaddr; + char name[IF_NAMESIZE]; + } *storage; + struct ifreq *ifr; + int i; + + storage = (Storage*) malloc (nifs * sizeof storage[0]); + if (storage == NULL) + { + close (fd); + __if_freereq (ifreqs, nifs); + return -1; + } + + i = 0; + ifr = ifreqs; + do + { + /* Fill in all pointers to the storage we've already allocated. */ + storage[i].ia.ifa_next = &storage[i + 1].ia; + storage[i].ia.ifa_addr = &storage[i].addr; + storage[i].ia.ifa_netmask = &storage[i].netmask; + storage[i].ia.ifa_broadaddr = &storage[i].broadaddr; /* & dstaddr */ + + /* Now copy the information we already have from SIOCGIFCONF. */ + storage[i].ia.ifa_name = strncpy (storage[i].name, ifr->ifr_name, + sizeof storage[i].name); + storage[i].addr = ifr->ifr_addr; + + /* The SIOCGIFCONF call filled in only the name and address. + Now we must also ask for the other information we need. */ + + if (ioctl (fd, SIOCGIFFLAGS, ifr) < 0) + break; + storage[i].ia.ifa_flags = ifr->ifr_flags; + + ifr->ifr_addr = storage[i].addr; + + if (ioctl (fd, SIOCGIFNETMASK, ifr) < 0) + break; + storage[i].netmask = ifr->ifr_netmask; + + if (ifr->ifr_flags & IFF_BROADCAST) + { + ifr->ifr_addr = storage[i].addr; + if (ioctl (fd, SIOCGIFBRDADDR, ifr) < 0) + break; + storage[i].broadaddr = ifr->ifr_broadaddr; + } + else if (ifr->ifr_flags & IFF_POINTOPOINT) + { + ifr->ifr_addr = storage[i].addr; +// Needed on Cygwin +#ifndef SIOCGIFDSTADDR + #define SIOCGIFDSTADDR 0x8917 +#endif + if (ioctl (fd, SIOCGIFDSTADDR, ifr) < 0) + break; +#if HAVE_IFR_DSTADDR + storage[i].broadaddr = ifr->ifr_dstaddr; +#else + // Fix for Cygwin + storage[i].broadaddr = ifr->ifr_broadaddr; +#endif + } + else + /* Just 'cause. */ + memset (&storage[i].broadaddr, 0, sizeof storage[i].broadaddr); + + storage[i].ia.ifa_data = NULL; /* Nothing here for now. */ + + ifr = __if_nextreq (ifr); + } while (++i < nifs); + if (i < nifs) /* Broke out early on error. */ + { + close (fd); + free (storage); + __if_freereq (ifreqs, nifs); + return -1; + } + + storage[i - 1].ia.ifa_next = NULL; + + *ifap = &storage[0].ia; + + close (fd); + __if_freereq (ifreqs, nifs); + } + + return 0; +} + +void +kde_freeifaddrs (struct kde_ifaddrs *ifa) +{ + free (ifa); +} + +#else +int kde_getifaddrs(struct kde_ifaddrs **) { + return 1; +} +void kde_freeifaddrs(struct kde_ifaddrs *) { +} +struct { } kde_ifaddrs; + +#endif + +#endif diff --git a/services/getifaddrs.h b/services/getifaddrs.h new file mode 100644 index 0000000..397c9ad --- /dev/null +++ b/services/getifaddrs.h @@ -0,0 +1,100 @@ +/* ifaddrs.h -- declarations for getting network interface addresses + Copyright (C) 2002 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +/** + * 02-12-26, tim@tjansen.de: added kde_ prefix, fallback-code, + * removed glibs dependencies + */ + +#include "config.h" + +#ifdef HAVE_SYS_TYPES_H +#include <sys/types.h> +#endif + +#include <sys/socket.h> +#include <net/if.h> + +#ifndef IFF_POINTOPOINT +# define IFF_POINTOPOINT 0x10 +#endif + +#ifdef HAVE_IFADDRS_H +#include <ifaddrs.h> + +#define kde_getifaddrs(a) getifaddrs(a) +#define kde_freeifaddrs(a) freeifaddrs(a) +#define kde_ifaddrs ifaddrs + +#else + +#ifndef _GETIFADDRS_H +#define _GETIFADDRS_H + + +#include <sys/socket.h> + +/* The `getifaddrs' function generates a linked list of these structures. + Each element of the list describes one network interface. */ +struct kde_ifaddrs +{ + struct kde_ifaddrs *ifa_next; /* Pointer to the next structure. */ + + char *ifa_name; /* Name of this network interface. */ + unsigned int ifa_flags; /* Flags as from SIOCGIFFLAGS ioctl. */ + + struct sockaddr *ifa_addr; /* Network address of this interface. */ + struct sockaddr *ifa_netmask; /* Netmask of this interface. */ + union + { + /* At most one of the following two is valid. If the IFF_BROADCAST + bit is set in `ifa_flags', then `ifa_broadaddr' is valid. If the + IFF_POINTOPOINT bit is set, then `ifa_dstaddr' is valid. + It is never the case that both these bits are set at once. */ + struct sockaddr *ifu_broadaddr; /* Broadcast address of this interface. */ + struct sockaddr *ifu_dstaddr; /* Point-to-point destination address. */ + } ifa_ifu; + /* These very same macros are defined by <net/if.h> for `struct ifaddr'. + So if they are defined already, the existing definitions will be fine. */ +# ifndef ifa_broadaddr +# define ifa_broadaddr ifa_ifu.ifu_broadaddr +# endif +# ifndef ifa_dstaddr +# define ifa_dstaddr ifa_ifu.ifu_dstaddr +# endif + + void *ifa_data; /* Address-specific data (may be unused). */ +}; + + +/* Create a linked list of `struct kde_ifaddrs' structures, one for each + network interface on the host machine. If successful, store the + list in *IFAP and return 0. On errors, return -1 and set `errno'. + + The storage returned in *IFAP is allocated dynamically and can + only be properly freed by passing it to `freeifaddrs'. */ +extern int kde_getifaddrs (struct kde_ifaddrs **__ifap); + +/* Reclaim the storage allocated by a previous `getifaddrs' call. */ +extern void kde_freeifaddrs (struct kde_ifaddrs *__ifa); + +#endif + +#endif + diff --git a/services/icecc.pc.in b/services/icecc.pc.in new file mode 100644 index 0000000..728d891 --- /dev/null +++ b/services/icecc.pc.in @@ -0,0 +1,14 @@ +# icecc pkg-config file + +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: icecc +Description: icecc is a library for connecting to icecc schedulers +Version: @VERSION@ +Requires: +Conflicts: +Libs: -L${libdir} -licecc +Cflags: -I${includedir} diff --git a/services/job.cpp b/services/job.cpp new file mode 100644 index 0000000..f5ea594 --- /dev/null +++ b/services/job.cpp @@ -0,0 +1,112 @@ +/* + This file is part of Icecream. + + Copyright (c) 2004 Stephan Kulow <coolo@suse.de> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#include "job.h" +#include "logging.h" +#include "exitcode.h" +#include "platform.h" +#include <stdio.h> + +using namespace std; + +list<string> CompileJob::flags( Argument_Type argumentType ) const +{ + list<string> args; + for ( ArgumentsList::const_iterator it = m_flags.begin(); + it != m_flags.end(); ++it ) + if ( it->second == argumentType ) + args.push_back( it->first ); + return args; +} + +list<string> CompileJob::localFlags() const +{ + return flags( Arg_Local ); +} + +list<string> CompileJob::remoteFlags() const +{ + return flags( Arg_Remote ); +} + +list<string> CompileJob::restFlags() const +{ + return flags( Arg_Rest ); +} + +list<string> CompileJob::allFlags() const +{ + list<string> args; + for ( ArgumentsList::const_iterator it = m_flags.begin(); + it != m_flags.end(); ++it ) + args.push_back( it->first ); + return args; +} + +void CompileJob::__setTargetPlatform() +{ + m_target_platform = determine_platform(); +} + +unsigned int CompileJob::argumentFlags() const +{ + unsigned int result = Flag_None; + + for ( ArgumentsList::const_iterator it = m_flags.begin(); + it != m_flags.end(); ++it ) + { + const string arg = it->first; + if ( arg.at( 0 ) == '-' ) + { + if (arg.length() == 1) + continue; + + if ( arg.at( 1 ) == 'g' ) + { + if ( arg.length() > 2 && arg.at( 2 ) == '3' ) + { + result &= ~Flag_g; + result |= Flag_g3; + } + else + { + result &= ~Flag_g3; + result |= Flag_g; + } + } + else if ( arg.at( 1 ) == 'O' ) + { + result &= ~( Flag_O | Flag_O2 | Flag_Ol2 ); + if ( arg.length() == 2) + result |= Flag_O; + else { + assert(arg.length() > 2); + if (arg.at( 2 ) == '2' ) + result |= Flag_O2; + else if ( arg.at( 2 ) == '1') + result |= Flag_O; + else if ( arg.at( 2 ) != '0') + result |= Flag_Ol2; + } + } + } + } + return result; +} diff --git a/services/job.h b/services/job.h new file mode 100644 index 0000000..efdf894 --- /dev/null +++ b/services/job.h @@ -0,0 +1,120 @@ +/* + This file is part of Icecream. + + Copyright (c) 2004 Stephan Kulow <coolo@suse.de> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#ifndef _COMPILE_JOB_H +#define _COMPILE_JOB_H + +#include <list> +#include <string> + +typedef enum { Arg_Unspecified, Arg_Local, Arg_Remote, Arg_Rest } Argument_Type; +class ArgumentsList : public std::list< std::pair<std::string, Argument_Type> > +{ +public: + void append( std::string s, Argument_Type t ) { + push_back( make_pair( s, t ) ); + } +}; + +class CompileJob { + +public: + typedef enum {Lang_C, Lang_CXX, Lang_OBJC, Lang_Custom} Language; + typedef enum { Flag_None = 0, Flag_g = 0x1, Flag_g3 = 0x2, Flag_O = 0x4, Flag_O2 = 0x8, Flag_Ol2 = 0x10 } Flag; + + CompileJob() : m_id( 0 ) { __setTargetPlatform(); } + + void setCompilerName(const std::string& name) { m_compiler_name = name; } + std::string compilerName() const { return m_compiler_name; } + + void setLanguage( Language lg ) { m_language = lg; } + Language language() const { return m_language; } + + void setEnvironmentVersion( const std::string& ver ) { + m_environment_version = ver; + } + + std::string environmentVersion() const { + return m_environment_version; + } + + unsigned int argumentFlags() const; + + void setFlags( const ArgumentsList &flags ) { + m_flags = flags; + } + std::list<std::string> localFlags() const; + std::list<std::string> remoteFlags() const; + std::list<std::string> restFlags() const; + std::list<std::string> allFlags() const; + + void setInputFile( const std::string &file ) { + m_input_file = file; + } + + std::string inputFile() const { + return m_input_file; + } + + void setOutputFile( const std::string &file ) { + m_output_file = file; + } + + std::string outputFile() const { + return m_output_file; + } + + void setJobID( unsigned int id ) { + m_id = id; + } + unsigned int jobID() const { + return m_id; + } + + void appendFlag( std::string arg, Argument_Type argumentType ) { + m_flags.append( arg, argumentType ); + } + + std::string targetPlatform() const { return m_target_platform; } + void setTargetPlatform( const std::string &_target ) { + m_target_platform = _target; + } + +private: + std::list<std::string> flags( Argument_Type argumentType ) const; + void __setTargetPlatform(); + + unsigned int m_id; + Language m_language; + std::string m_compiler_name; + std::string m_environment_version; + ArgumentsList m_flags; + std::string m_input_file, m_output_file; + std::string m_target_platform; +}; + +inline void appendList( std::list<std::string> &list, + const std::list<std::string> &toadd ) +{ + // Cannot splice since toadd is a reference-to-const + list.insert( list.end(), toadd.begin(), toadd.end() ); +} + +#endif diff --git a/services/logging.cpp b/services/logging.cpp new file mode 100644 index 0000000..5c35dae --- /dev/null +++ b/services/logging.cpp @@ -0,0 +1,153 @@ +/* + This file is part of Icecream. + + Copyright (c) 2004 Stephan Kulow <coolo@suse.de> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#include <config.h> +#include <iostream> +#include "logging.h" +#include <fstream> +#include <signal.h> +#ifdef __linux__ +#include <dlfcn.h> +#endif + +using namespace std; + +int debug_level = 0; +ostream *logfile_trace = 0; +ostream *logfile_info = 0; +ostream *logfile_warning = 0; +ostream *logfile_error = 0; +string logfile_prefix; + +static ofstream logfile_null( "/dev/null" ); +static ofstream logfile_file; +static string logfile_filename; + +void reset_debug( int ); + +void setup_debug(int level, const string &filename, const string& prefix) +{ + string fname = filename; + debug_level = level; + logfile_prefix = prefix; + logfile_filename = filename; + + if ( logfile_file.is_open() ) + logfile_file.close(); + ostream *output = 0; + if ( filename.length() ) { + logfile_file.clear(); + logfile_file.open( filename.c_str(), fstream::out | fstream::app ); +#ifdef __linux__ + if (fname[0] != '/') { + char buf[256]; + if (getcwd(buf, sizeof(buf))) { + fname.insert(0, "/"); + fname.insert(0, buf); + } + } + setenv("SEGFAULT_OUTPUT_NAME", fname.c_str(), false); +#endif + output = &logfile_file; + } else + output = &cerr; + +#ifdef __linux__ + (void) dlopen("libSegFault.so", RTLD_NOW | RTLD_LOCAL); +#endif + + if ( debug_level & Debug ) + logfile_trace = output; + else + logfile_trace = &logfile_null; + + if ( debug_level & Info ) + logfile_info = output; + else + logfile_info = &logfile_null; + + if ( debug_level & Warning ) + logfile_warning = output; + else + logfile_warning = &logfile_null; + + if ( debug_level & Error ) + logfile_error = output; + else + logfile_error = &logfile_null; + + signal( SIGHUP, reset_debug ); +} + +void reset_debug( int ) +{ + setup_debug(debug_level, logfile_filename); +} + +void close_debug() +{ + if (logfile_null.is_open()) + logfile_null.close(); + if (logfile_file.is_open()) + logfile_file.close(); + + logfile_trace = logfile_info = logfile_warning = logfile_error = 0; +} + +/* Flushes all ostreams used for debug messages. You need to call + this before forking. */ +void flush_debug() +{ + if (logfile_null.is_open()) + logfile_null.flush(); + if (logfile_file.is_open()) + logfile_file.flush(); +} + +#ifdef HAVE_BACKTRACE +#include <execinfo.h> +#endif + +string get_backtrace() { + string s; + +#ifdef HAVE_BACKTRACE + void* trace[256]; + int n = backtrace(trace, 256); + if (!n) + return s; + char** strings = backtrace_symbols (trace, n); + + s = "[\n"; + + for (int i = 0; i < n; ++i) { + s += ": "; + s += strings[i]; + s += "\n"; + } + s += "]\n"; + if (strings) + free (strings); +#endif + + return s; +} + +unsigned log_block::nesting; diff --git a/services/logging.h b/services/logging.h new file mode 100644 index 0000000..5dd04ad --- /dev/null +++ b/services/logging.h @@ -0,0 +1,134 @@ +/* + This file is part of Icecream. + + Copyright (c) 2004 Stephan Kulow <coolo@suse.de> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#ifndef _LOGGING_H +#define _LOGGING_H + +#include <sys/time.h> +#include <stdlib.h> +#include <unistd.h> +#include <errno.h> +#include <string> +#include <iostream> +#include <cassert> +#include <cstring> + +enum DebugLevels { Info = 1, Warning = 2, Error = 4, Debug = 8}; +extern std::ostream *logfile_info; +extern std::ostream *logfile_warning; +extern std::ostream *logfile_error; +extern std::ostream *logfile_trace; +extern std::string logfile_prefix; + +void setup_debug(int level, const std::string &logfile = "", const std::string& prefix=""); +void reset_debug(int); +void close_debug(); +void flush_debug(); + +static inline std::ostream & output_date( std::ostream &os ) +{ + time_t t = time( 0 ); + struct tm* tmp = localtime(&t); + char buf[64]; + strftime(buf, sizeof(buf), "%T: ", tmp); + if (logfile_prefix.size()) + os << logfile_prefix; + os << "[" << getpid() << "] "; + + os << buf; + return os; +} + +static inline std::ostream& log_info() { + if(!logfile_info) return std::cerr; + return output_date( *logfile_info); +} + +static inline std::ostream& log_warning() { + if(!logfile_warning) return std::cerr; + return output_date( *logfile_warning ); +} + + +static inline std::ostream& log_error() { + if(!logfile_error) return std::cerr; + return output_date( *logfile_error ); +} + +static inline std::ostream& trace() { + if(!logfile_trace) return std::cerr; + return output_date( *logfile_trace); +} + +std::string get_backtrace(); +static inline void log_perror(const char *prefix) { + int tmp_errno = errno; + log_error() << prefix << " " << strerror( tmp_errno ) << std::endl; +} + +class log_block +{ + static unsigned nesting; + timeval m_start; + char* m_label; +public: + log_block(const char* label =0) + { +#ifndef NDEBUG + for (unsigned i = 0; i < nesting; ++i) + log_info() << " "; + + log_info() << "<" << (label ? label : "") << ">\n"; + + m_label = strdup(label ? label : ""); + ++nesting; + gettimeofday( &m_start, 0); +#endif + } + + ~log_block() + { +#ifndef NDEBUG + timeval end; + gettimeofday (&end, 0); + + --nesting; + for (unsigned i = 0; i < nesting; ++i) + log_info() << " "; + log_info() << "</" << m_label << ": " + << (end.tv_sec - m_start.tv_sec ) * 1000 + ( end.tv_usec - m_start.tv_usec ) / 1000 << "ms>\n"; + + free(m_label); +#endif + } +}; + +#include <sstream> +#include <iostream> + +template<class T> +std::string toString(const T& val) +{ + std::ostringstream os; + os << val; + return os.str(); +} + +#endif diff --git a/services/platform.cpp b/services/platform.cpp new file mode 100644 index 0000000..03e9c95 --- /dev/null +++ b/services/platform.cpp @@ -0,0 +1,68 @@ +/* + This file is part of Icecream. + + Copyright (c) 2006 Mirko Boehm <mirko@kde.org> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +extern "C" { +#include <sys/utsname.h> +} + +#include "logging.h" +#include "platform.h" + +std::string determine_platform_once() +{ + using namespace std; + string platform; + + struct utsname uname_buf; + if ( uname( &uname_buf ) ) { + log_perror( "uname call failed" ); + throw( "determine_platform: cannot determine OS version and machine architecture" ); + // return platform; + } + + string os = uname_buf.sysname; + if ( os == "Darwin" ) { + const std::string release = uname_buf.release; + const string::size_type pos = release.find( '.' ); + if ( pos == string::npos ) + throw( std::string( "determine_platform: Cannot determine Darwin release from release string \"" ) + release + "\"" ); + os += release.substr( 0, pos ); + } + if ( os != "Linux" ) + platform = os + '_' + uname_buf.machine; + else // Linux + platform = uname_buf.machine; + + while (true) + { + string::size_type pos = platform.find(" "); + if (pos == string::npos) + break; + platform.erase(pos, 1); + } + + return platform; +} + +const std::string& determine_platform() +{ + const static std::string platform( determine_platform_once() ); + return platform; +} diff --git a/services/platform.h b/services/platform.h new file mode 100644 index 0000000..de426a6 --- /dev/null +++ b/services/platform.h @@ -0,0 +1,28 @@ +/* + This file is part of Icecream. + + Copyright (c) 2006 Mirko Boehm <mirko@kde.org> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#ifndef PLATFORM_H +#define PLATFORM_H + +#include <string> + +extern const std::string& determine_platform(); + +#endif diff --git a/services/scheduler.cpp b/services/scheduler.cpp new file mode 100644 index 0000000..f4bf792 --- /dev/null +++ b/services/scheduler.cpp @@ -0,0 +1,2149 @@ +/* -*- mode: C++; c-file-style: "gnu"; fill-column: 78 -*- */ +/* vim:cinoptions={.5s,g0,p5,t0,(0,^-0.5s,n-0.5s:tw=78:cindent:sw=4: */ +/* + This file is part of Icecream. + + Copyright (c) 2004 Michael Matz <matz@suse.de> + 2004 Stephan Kulow <coolo@suse.de> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#ifndef _GNU_SOURCE +// getopt_long +#define _GNU_SOURCE 1 +#endif + +#include <sys/types.h> +#include <sys/socket.h> +#include <netinet/in.h> +#include <arpa/inet.h> +#include <sys/select.h> +#include <sys/signal.h> +#include <unistd.h> +#include <errno.h> +#include <fcntl.h> +#include <time.h> +#include <getopt.h> +#include <string> +#include <list> +#include <map> +#include <queue> +#include <algorithm> +#include <cassert> +#include <fstream> +#include <string> +#include <stdio.h> +#include "comm.h" +#include "logging.h" +#include "job.h" +#include "config.h" +#include "bench.h" + +#define DEBUG_SCHEDULER 0 + +/* TODO: + * leak check + * are all filedescs closed when done? + * simplify livetime of the various structures (Jobs/Channels/CSs know + of each other and sometimes take over ownership) + */ + +/* TODO: + - iron out differences in code size between architectures + + ia64/i686: 1.63 + + x86_64/i686: 1.48 + + ppc/i686: 1.22 + + ppc64/i686: 1.59 + (missing data for others atm) +*/ + +/* The typical flow of messages for a remote job should be like this: + prereq: daemon is connected to scheduler + * client does GET_CS + * request gets queued + * request gets handled + * scheduler sends USE_CS + * client asks remote daemon + * daemon sends JOB_BEGIN + * client sends END + closes connection + * daemon sends JOB_DONE (this can be swapped with the above one) + This means, that iff the client somehow closes the connection we can and + must remove all traces of jobs resulting from that client in all lists. + */ + +using namespace std; + +static string pidFilePath; + +struct JobStat { + unsigned long osize; // output size (uncompressed) + unsigned long compile_time_real; // in milliseconds + unsigned long compile_time_user; + unsigned long compile_time_sys; + unsigned int job_id; + JobStat() : osize(0), compile_time_real(0), compile_time_user(0), + compile_time_sys(0), job_id(0) {} + JobStat& operator +=(const JobStat &st) + { + osize += st.osize; + compile_time_real += st.compile_time_real; + compile_time_user += st.compile_time_user; + compile_time_sys += st.compile_time_sys; + job_id = 0; + return *this; + } + JobStat& operator -=(const JobStat &st) + { + osize -= st.osize; + compile_time_real -= st.compile_time_real; + compile_time_user -= st.compile_time_user; + compile_time_sys -= st.compile_time_sys; + job_id = 0; + return *this; + } +private: + JobStat& operator /=(int d) + { + osize /= d; + compile_time_real /= d; + compile_time_user /= d; + compile_time_sys /= d; + job_id = 0; + return *this; + } +public: + JobStat operator /(int d) const + { + JobStat r = *this; + r /= d; + return r; + } + +}; + +class Job; + +/* One compile server (receiver, compile daemon) */ +class CS : public MsgChannel +{ +public: + /* The listener port, on which it takes compile requests. */ + unsigned int remote_port; + unsigned int hostid; + string nodename; + time_t busy_installing; + string host_platform; + + // unsigned int jobs_done; + // unsigned long long rcvd_kb, sent_kb; + // unsigned int ms_per_job; + // unsigned int bytes_per_ms; + // LOAD is load * 1000 + unsigned int load; + int max_jobs; + bool noremote; + list<Job*> joblist; + Environments compiler_versions; // Available compilers + CS (int fd, struct sockaddr *_addr, socklen_t _len, bool text_based) + : MsgChannel(fd, _addr, _len, text_based), + load(1000), max_jobs(0), noremote(false), + state(CONNECTED), type(UNKNOWN), chroot_possible(false) + { + hostid = 0; + busy_installing = 0; + } + void pick_new_id() + { + assert( !hostid ); + hostid = ++hostid_counter; + } + list<JobStat> last_compiled_jobs; + list<JobStat> last_requested_jobs; + JobStat cum_compiled; // cumulated + JobStat cum_requested; + enum {CONNECTED, LOGGEDIN} state; + enum {UNKNOWN, DAEMON, MONITOR, LINE} type; + bool chroot_possible; + static unsigned int hostid_counter; + map<int, int> client_map; // map client ID for daemon to our IDs + bool is_eligible( const Job *job ); + bool check_remote( const Job *job ) const; +}; + +unsigned int CS::hostid_counter = 0; + +static map<int, CS *> fd2cs; +static bool exit_main_loop = false; + +time_t starttime; + +class Job +{ +public: + unsigned int id; + unsigned int local_client_id; + enum {PENDING, WAITINGFORCS, COMPILING, WAITINGFORDONE} state; + CS *server; // on which server we build + CS *submitter; // who submitted us + Environments environments; + time_t starttime; // _local_ to the compiler server + time_t start_on_scheduler; // starttime local to scheduler + /** + * the end signal from client and daemon is a bit of a race and + * in 99.9% of all cases it's catched correctly. But for the remaining + * 0.1% we need a solution too - otherwise these jobs are eating up slots. + * So the solution is to track done jobs (client exited, daemon didn't signal) + * and after 10s no signal, kill the daemon (and let it rehup) **/ + time_t done_time; + + string target_platform; + string filename; + list<Job*> master_job_for; + unsigned int arg_flags; + string language; // for debugging + string preferred_host; // for debugging daemons + Job (unsigned int _id, CS *subm) + : id(_id), local_client_id( 0 ), state(PENDING), server(0), + submitter(subm), + starttime(0), start_on_scheduler(0), done_time( 0 ), arg_flags( 0 ) {} + ~Job() + { + // XXX is this really deleted on all other paths? +/* fd2chan.erase (channel->fd); + delete channel;*/ + } +}; + +// A subset of connected_hosts representing the compiler servers +static list<CS*> css, monitors, controls; +static list<string> block_css; +static unsigned int new_job_id; +static map<unsigned int, Job*> jobs; + +/* XXX Uah. Don't use a queue for the job requests. It's a hell + to delete anything out of them (for clean up). */ +struct UnansweredList +{ + list<Job*> l; + CS *server; + bool remove_job (Job *); +}; +static list<UnansweredList*> toanswer; + +static list<JobStat> all_job_stats; +static JobStat cum_job_stats; + +static float server_speed (CS *cs, Job *job = 0); + +/* Searches the queue for JOB and removes it. + Returns true if something was deleted. */ +bool +UnansweredList::remove_job (Job *job) +{ + list<Job*>::iterator it; + for (it = l.begin(); it != l.end(); ++it) + if (*it == job) + { + l.erase (it); + return true; + } + return false; +} + +static void +add_job_stats (Job *job, JobDoneMsg *msg) +{ + JobStat st; + /* We don't want to base our timings on failed or too small jobs. */ + if (msg->out_uncompressed < 4096 + || msg->exitcode != 0) + return; + + st.osize = msg->out_uncompressed; + st.compile_time_real = msg->real_msec; + st.compile_time_user = msg->user_msec; + st.compile_time_sys = msg->sys_msec; + st.job_id = job->id; + + if ( job->arg_flags & CompileJob::Flag_g ) + st.osize = st.osize * 10 / 36; // average over 1900 jobs: faktor 3.6 in osize + else if ( job->arg_flags & CompileJob::Flag_g3 ) + st.osize = st.osize * 10 / 45; // average over way less jobs: factor 1.25 over -g + + // the difference between the -O flags isn't as big as the one between -O0 and -O>=1 + // the numbers are actually for gcc 3.3 - but they are _very_ rough heurstics anyway) + if ( job->arg_flags & CompileJob::Flag_O || + job->arg_flags & CompileJob::Flag_O2 || + job->arg_flags & CompileJob::Flag_Ol2) + st.osize = st.osize * 58 / 35; + + if ( job->server->last_compiled_jobs.size() >= 7) + { + /* Smooth out spikes by not allowing one job to add more than + 20% of the current speed. */ + float this_speed = (float) st.osize / (float) st.compile_time_user; + /* The current speed of the server, but without adjusting to the current + job, hence no second argument. */ + float cur_speed = server_speed (job->server); + + if ((this_speed / 1.2) > cur_speed) + st.osize = (long unsigned) (cur_speed * 1.2 * st.compile_time_user); + else if ((this_speed * 1.2) < cur_speed) + st.osize = (long unsigned) (cur_speed / 1.2 * st.compile_time_user); + } + + job->server->last_compiled_jobs.push_back (st); + job->server->cum_compiled += st; + if (job->server->last_compiled_jobs.size() > 200) + { + job->server->cum_compiled -= *job->server->last_compiled_jobs.begin (); + job->server->last_compiled_jobs.pop_front (); + } + job->submitter->last_requested_jobs.push_back (st); + job->submitter->cum_requested += st; + if (job->submitter->last_requested_jobs.size() > 200) + { + job->submitter->cum_requested + -= *job->submitter->last_requested_jobs.begin (); + job->submitter->last_requested_jobs.pop_front (); + } + all_job_stats.push_back (st); + cum_job_stats += st; + if (all_job_stats.size () > 2000) + { + cum_job_stats -= *all_job_stats.begin (); + all_job_stats.pop_front (); + } + +#if DEBUG_SCHEDULER > 1 + if ( job->arg_flags < 7000 ) + trace() << "add_job_stats " << job->language << " " + << ( time( 0 ) - starttime ) << " " + << st.compile_time_user << " " + << ( job->arg_flags & CompileJob::Flag_g ? '1' : '0') + << ( job->arg_flags & CompileJob::Flag_g3 ? '1' : '0') + << ( job->arg_flags & CompileJob::Flag_O ? '1' : '0') + << ( job->arg_flags & CompileJob::Flag_O2 ? '1' : '0') + << ( job->arg_flags & CompileJob::Flag_Ol2 ? '1' : '0') + << " " << st.osize << " " << msg->out_uncompressed << " " + << job->server->nodename << " " + << float(msg->out_uncompressed) / st.compile_time_user << " " + << server_speed( job->server ) << endl ; +#endif + +} + +static bool handle_end (CS *c, Msg *); + +static void +notify_monitors (Msg* m) +{ + list<CS*>::iterator it, it_old; + for (it = monitors.begin(); it != monitors.end();) + { + it_old = it++; + /* If we can't send it, don't be clever, simply close this monitor. */ + if (!(*it_old)->send_msg (*m, MsgChannel::SendNonBlocking /*| MsgChannel::SendBulkOnly*/)) { + trace() << "monitor is blocking... removing" << endl; + handle_end (*it_old, 0); + } + } + delete m; +} + +static float +server_speed (CS *cs, Job *job) +{ + if (cs->last_compiled_jobs.size() == 0 + || cs->cum_compiled.compile_time_user == 0) + return 0; + else + { + float f = (float)cs->cum_compiled.osize + / (float) cs->cum_compiled.compile_time_user; + + // we only care for the load if we're about to add a job to it + if (job) { + /* The submitter of a job gets more speed. So if he is equally + fast to the rest of the farm it will be prefered to chose him + to compile the job. Then this can be done locally without + needing the preprocessor. */ + if (job->submitter == cs) + f *= 1.1; + else // ignoring load for submitter - assuming the load is our own + f *= float(1000 - cs->load) / 1000; + } + + // below we add a pessimism factor - assuming the first job a computer got is not representative + if ( cs->last_compiled_jobs.size() < 7 ) + f *= ( -0.5 * cs->last_compiled_jobs.size() + 4.5 ); + + return f; + } +} + +static void +handle_monitor_stats( CS *cs, StatsMsg *m = 0) +{ + if ( monitors.empty() ) + return; + + string msg; + char buffer[1000]; + sprintf( buffer, "Name:%s\n", cs->nodename.c_str() ); + msg += buffer; + sprintf( buffer, "IP:%s\n", cs->name.c_str() ); + msg += buffer; + sprintf( buffer, "MaxJobs:%d\n", cs->max_jobs ); + msg += buffer; + sprintf( buffer, "NoRemote:%s\n", cs->noremote ? "true" : "false" ); + msg += buffer; + sprintf( buffer, "Platform:%s\n", cs->host_platform.c_str() ); + msg += buffer; + sprintf( buffer, "Speed:%f\n", server_speed( cs ) ); + msg += buffer; + if ( m ) + { + sprintf( buffer, "Load:%d\n", m->load ); + msg += buffer; + sprintf( buffer, "LoadAvg1:%d\n", m->loadAvg1 ); + msg += buffer; + sprintf( buffer, "LoadAvg5:%d\n", m->loadAvg5 ); + msg += buffer; + sprintf( buffer, "LoadAvg10:%d\n", m->loadAvg10 ); + msg += buffer; + sprintf( buffer, "FreeMem:%d\n", m->freeMem ); + msg += buffer; + } + else + { + sprintf( buffer, "Load:%d\n", cs->load ); + msg += buffer; + } + notify_monitors( new MonStatsMsg( cs->hostid, msg ) ); +} + +static Job * +create_new_job (CS *submitter) +{ + ++new_job_id; + assert (jobs.find(new_job_id) == jobs.end()); + + Job *job = new Job (new_job_id, submitter); + jobs[new_job_id] = job; + return job; +} + +static void +enqueue_job_request (Job *job) +{ + if (!toanswer.empty() && toanswer.back()->server == job->submitter) + { + toanswer.back()->l.push_back (job); + } + else + { + UnansweredList *newone = new UnansweredList(); + newone->server = job->submitter; + newone->l.push_back (job); + toanswer.push_back (newone); + } +} + +static Job * +get_job_request (void) +{ + if (toanswer.empty()) + return 0; + + UnansweredList *first = toanswer.front(); + assert (!first->l.empty()); + return first->l.front(); +} + +/* Removes the first job request (the one returned by get_job_request()) */ +static void +remove_job_request (void) +{ + if (toanswer.empty()) + return; + UnansweredList *first = toanswer.front(); + toanswer.pop_front(); + first->l.pop_front(); + if (first->l.empty()) + { + delete first; + } + else + { + toanswer.push_back( first ); + } +} + +static string dump_job (Job *job); + +static bool +handle_cs_request (MsgChannel *c, Msg *_m) +{ + GetCSMsg *m = dynamic_cast<GetCSMsg *>(_m); + if (!m) + return false; + + CS *submitter = static_cast<CS*>( c ); + + Job *master_job = 0; + + for ( unsigned int i = 0; i < m->count; ++i ) + { + Job *job = create_new_job (submitter); + job->environments = m->versions; + job->target_platform = m->target; + job->arg_flags = m->arg_flags; + job->language = ( m->lang == CompileJob::Lang_C ? "C" : "C++" ); + job->filename = m->filename; + job->local_client_id = m->client_id; + job->preferred_host = m->preferred_host; + enqueue_job_request (job); + std::ostream& dbg = log_info(); + dbg << "NEW " << job->id << " client=" + << submitter->nodename << " versions=["; + for ( Environments::const_iterator it = job->environments.begin(); + it != job->environments.end();) + { + dbg << it->second << "(" << it->first << ")"; + if (++it != job->environments.end()) + dbg << ", "; + } + dbg << "] " << m->filename << " " << job->language << endl; + notify_monitors (new MonGetCSMsg (job->id, submitter->hostid, m)); + if ( !master_job ) + { + master_job = job; + } + else + { + master_job->master_job_for.push_back( job ); + } + } + return true; + +} + +static bool +handle_local_job (CS *c, Msg *_m) +{ + JobLocalBeginMsg *m = dynamic_cast<JobLocalBeginMsg *>(_m); + if (!m) + return false; + + ++new_job_id; + trace() << "handle_local_job " << m->outfile << " " << m->id << endl; + c->client_map[m->id] = new_job_id; + notify_monitors (new MonLocalJobBeginMsg( new_job_id, m->outfile, m->stime, c->hostid ) ); + return true; +} + +static bool +handle_local_job_done (CS *c, Msg *_m) +{ + JobLocalDoneMsg *m = dynamic_cast<JobLocalDoneMsg *>(_m); + if (!m) + return false; + + trace() << "handle_local_job_done " << m->job_id << endl; + notify_monitors (new JobLocalDoneMsg( c->client_map[m->job_id] ) ); + c->client_map.erase( m->job_id ); + return true; +} + +static bool +platforms_compatible( const string &target, const string &platform ) +{ + if ( target == platform ) + return true; + // the below doesn't work as the unmapped platform is transfered back to the + // client and that asks the daemon for a platform he can't install (see TODO) + + static multimap<string, string> platform_map; + + if (platform_map.empty()) + { + platform_map.insert( make_pair( string( "i386" ), string( "i486" ) ) ); + platform_map.insert( make_pair( string( "i386" ), string( "i586" ) ) ); + platform_map.insert( make_pair( string( "i386" ), string( "i686" ) ) ); + platform_map.insert( make_pair( string( "i386" ), string( "x86_64" ) ) ); + + platform_map.insert( make_pair( string( "i486" ), string( "i586" ) ) ); + platform_map.insert( make_pair( string( "i486" ), string( "i686" ) ) ); + platform_map.insert( make_pair( string( "i486" ), string( "x86_64" ) ) ); + + platform_map.insert( make_pair( string( "i586" ), string( "i686" ) ) ); + platform_map.insert( make_pair( string( "i586" ), string( "x86_64" ) ) ); + + platform_map.insert( make_pair( string( "i686" ), string( "x86_64" ) ) ); + + platform_map.insert( make_pair( string( "ppc" ), string( "ppc64" ) ) ); + platform_map.insert( make_pair( string( "s390" ), string( "s390x" ) ) ); + } + + multimap<string, string>::const_iterator end = platform_map.upper_bound( target ); + for ( multimap<string, string>::const_iterator it = platform_map.lower_bound( target ); + it != end; + ++it ) + { + if ( it->second == platform ) + return true; + } + + return false; +} + +/* Given a candidate CS and a JOB, check all installed environments + on the CS for a match. Return an empty string if none of the required + environments for this job is installed. Otherwise return the + host platform of the first found installed environment which is among + the requested. That can be send to the client, which then completely + specifies which environment to use (name, host platform and target + platform). */ +static string +envs_match( CS* cs, const Job *job ) +{ + if ( job->submitter == cs) + return cs->host_platform; // it will compile itself + + /* Check all installed envs on the candidate CS ... */ + for ( Environments::const_iterator it = cs->compiler_versions.begin(); it != cs->compiler_versions.end(); ++it ) + { + if ( it->first == job->target_platform ) + { + /* ... IT now is an installed environment which produces code for + the requested target platform. Now look at each env which + could be installed from the client (i.e. those coming with the + job) if it matches in name and additionally could be run + by the candidate CS. */ + for ( Environments::const_iterator it2 = job->environments.begin(); it2 != job->environments.end(); ++it2 ) + { + if ( it->second == it2->second && platforms_compatible( it2->first, cs->host_platform ) ) + return it2->first; + } + } + } + return string(); +} + +/* Given a candidate CS and a JOB, check if any of the requested + environments could be installed on the CS. This is the case if that + env can be run there, i.e. if the host platforms of the CS and of the + environment are compatible. Return an empty string if none can be + installed, otherwise return the platform of the first found + environments which can be installed. */ +static string +can_install( CS* cs, const Job *job ) +{ + // trace() << "can_install host: '" << cs->host_platform << "' target: '" << job->target_platform << "'" << endl; + if ( cs->busy_installing ) + { +#if DEBUG_SCHEDULER > 0 + trace() << cs->nodename << " is busy installing since " << time(0) - cs->busy_installing << " seconds." << endl; +#endif + return string(); + } + + for ( Environments::const_iterator it = job->environments.begin(); it != job->environments.end(); ++it ) + { + if ( platforms_compatible( it->first, cs->host_platform ) ) + return it->first; + } + return string(); +} + +bool CS::check_remote( const Job *job ) const +{ + bool local = (job->submitter == this); + return local || !noremote; +} + +bool CS::is_eligible( const Job *job ) +{ + bool jobs_okay = int( joblist.size() ) < max_jobs; + bool load_okay = load < 1000; + return jobs_okay + && chroot_possible + && load_okay + && can_install( this, job ).size() + && this->check_remote( job ); +} + +static CS * +pick_server(Job *job) +{ + list<CS*>::iterator it; + +#if DEBUG_SCHEDULER > 1 + trace() << "pick_server " << job->id << " " << job->target_platform << endl; +#endif + +#if DEBUG_SCHEDULER > 0 + /* consistency checking for now */ + for (list<CS*>::iterator it = css.begin(); it != css.end(); ++it) + { + CS* cs= *it; + for ( list<Job*>::const_iterator it2 = cs->joblist.begin(); it2 != cs->joblist.end(); ++it2 ) + { + Job *job = *it2; + assert( jobs.find( job->id ) != jobs.end() ); + } + } + for (map<unsigned int, Job*>::const_iterator it = jobs.begin(); + it != jobs.end(); ++it) + { + Job *j = it->second; + + CS *cs = j->server; + assert( j->state != j->COMPILING || + find( cs->joblist.begin(), + cs->joblist.end(), j ) != cs->joblist.end() ); + } +#endif + + /* if the user wants to test/prefer one specific daemon, we look for that one first */ + if (!job->preferred_host.empty()) + { + for (it = css.begin(); it != css.end(); ++it) + { + if ((*it)->nodename == job->preferred_host + && (*it)->is_eligible( job )) + return *it; + } + return 0; + } + + /* If we have no statistics simply use the first server which is usable. */ + if (!all_job_stats.size ()) + { + for (it = css.begin(); it != css.end(); ++it) + { + trace() << "no job stats - looking at " << ( *it )->nodename << " load: " << (*it )->load << " can install: " << can_install( *it, job ) << endl; + if ((*it)->is_eligible( job )) + { + trace() << "returning first " << ( *it )->nodename << endl; + return *it; + } + } + return 0; + } + + /* Now guess about the job. First see, if this submitter already + had other jobs. Use them as base. */ + JobStat guess; + if (job->submitter->last_requested_jobs.size() > 0) + { + guess = job->submitter->cum_requested + / job->submitter->last_requested_jobs.size(); + } + else + { + /* Otherwise simply average over all jobs. */ + guess = cum_job_stats / all_job_stats.size(); + } + CS *best = 0; + // best uninstalled + CS *bestui = 0; + // best preloadable host + CS *bestpre = 0; + + uint matches = 0; + + for (it = css.begin(); it != css.end(); ++it) + { + CS *cs = *it; + /* For now ignore overloaded servers. */ + /* Pre-loadable (cs->joblist.size()) == (cs->max_jobs) is checked later. */ + if (int( cs->joblist.size() ) > cs->max_jobs || cs->load >= 1000) + { +#if DEBUG_SCHEDULER > 1 + trace() << "overloaded " << cs->nodename << " " << cs->joblist.size() << "/" << cs->max_jobs << " jobs, load:" << cs->load << endl; +#endif + continue; + } + + // incompatible architecture or busy installing + if ( !can_install( cs, job ).size() ) + { +#if DEBUG_SCHEDULER > 2 + trace() << cs->nodename << " can't install " << job->id << endl; +#endif + continue; + } + + /* Don't use non-chroot-able daemons for remote jobs. XXX */ + if (!cs->chroot_possible) + { + trace() << cs->nodename << " can't use chroot\n"; + continue; + } + + // Check if remote & if remote allowed + if (!cs->check_remote( job )) + { + trace() << cs->nodename << " fails remote job check\n"; + continue; + } + + +#if DEBUG_SCHEDULER > 1 + trace() << cs->nodename << " compiled " << cs->last_compiled_jobs.size() << " got now: " << + cs->joblist.size() << " speed: " << server_speed (cs) << " compile time " << + cs->cum_compiled.compile_time_user << " produced code " << cs->cum_compiled.osize << endl; +#endif + + if ( cs->last_compiled_jobs.size() == 0 && cs->joblist.size() == 0 && cs->max_jobs) + { + /* Make all servers compile a job at least once, so we'll get an + idea about their speed. */ + if (!envs_match (cs, job).empty()) + { + best = cs; + matches++; + } + else + { + // if there is one server that already got the environment and one that + // hasn't compiled at all, pick the one with environment first + bestui = cs; + } + break; + } + + if (!envs_match (cs, job).empty()) + { + if ( !best ) + best = cs; + /* Search the server with the earliest projected time to compile + the job. (XXX currently this is equivalent to the fastest one) */ + else + if (best->last_compiled_jobs.size() != 0 + && server_speed (best, job) < server_speed (cs, job)) + { + if (int( cs->joblist.size() ) < cs->max_jobs) + best = cs; + else + bestpre = cs; + } + matches++; + } + else + { + if ( !bestui ) + bestui = cs; + /* Search the server with the earliest projected time to compile + the job. (XXX currently this is equivalent to the fastest one) */ + else + if (bestui->last_compiled_jobs.size() != 0 + && server_speed (bestui, job) < server_speed (cs, job)) + { + if (int( cs->joblist.size() ) < cs->max_jobs) + bestui = cs; + else + bestpre = cs; + } + } + } + + // to make sure we find the fast computers at least after some time, we overwrite + // the install rule for every 19th job - if the farm is only filled a bit + if ( bestui && ( matches < 11 && matches < css.size() / 3 ) && job->id % 19 != 0 ) + best = 0; + + if ( best ) + { +#if DEBUG_SCHEDULER > 1 + trace() << "taking best installed " << best->nodename << " " << server_speed (best) << endl; +#endif + return best; + } + + if ( bestui ) + { +#if DEBUG_SCHEDULER > 1 + trace() << "taking best uninstalled " << bestui->nodename << " " << server_speed (bestui) << endl; +#endif + return bestui; + } + + if ( bestpre ) + { +#if DEBUG_SCHEDULER > 1 + trace() << "taking best preload " << bestui->nodename << " " << server_speed (bestui) << endl; +#endif + } + + return bestpre; +} + +/* Prunes the list of connected servers by those which haven't + answered for a long time. Return the number of seconds when + we have to cleanup next time. */ +static time_t +prune_servers () +{ + list<CS*>::iterator it; + + time_t now = time( 0 ); + time_t min_time = MAX_SCHEDULER_PING; + + for (it = controls.begin(); it != controls.end();) + { + if (now - ( *it )->last_talk >= MAX_SCHEDULER_PING) + { + CS *old = *it; + ++it; + handle_end (old, 0); + continue; + } + min_time = min (min_time, MAX_SCHEDULER_PING - now + ( *it )->last_talk); + ++it; + } + + for (it = css.begin(); it != css.end(); ) + { + if ((*it)->busy_installing && (now - (*it)->busy_installing >= + MAX_BUSY_INSTALLING)) + { + trace() << "busy installing for a long time - removing " << ( *it )->nodename << endl; + CS *old = *it; + ++it; + handle_end (old, 0); + continue; + } + + /* protocol version 27 and newer use TCP keepalive */ + if (IS_PROTOCOL_27(*it)) { + ++it; + continue; + } + + if (now - ( *it )->last_talk >= MAX_SCHEDULER_PING) + { + if (( *it )->max_jobs >= 0) + { + trace() << "send ping " << ( *it )->nodename << endl; + ( *it )->max_jobs *= -1; // better not give it away + if(( *it )->send_msg( PingMsg() )) + { + // give it MAX_SCHEDULER_PONG to answer a ping + ( *it )->last_talk = time( 0 ) - MAX_SCHEDULER_PING + + 2 * MAX_SCHEDULER_PONG; + min_time = min (min_time, (time_t) 2 * MAX_SCHEDULER_PONG); + ++it; + continue; + } + } + // R.I.P. + trace() << "removing " << ( *it )->nodename << endl; + CS *old = *it; + ++it; + handle_end (old, 0); + continue; + } + else + min_time = min (min_time, MAX_SCHEDULER_PING - now + ( *it )->last_talk); +#if DEBUG_SCHEDULER > 1 + if ((random() % 400) < 0) + { // R.I.P. + trace() << "FORCED removing " << ( *it )->nodename << endl; + CS *old = *it; + ++it; + handle_end (old, 0); + continue; + } +#endif + + ++it; + } + + return min_time; +} + +static Job* +delay_current_job() +{ + assert (!toanswer.empty()); + if ( toanswer.size() == 1 ) + return 0; + + UnansweredList *first = toanswer.front(); + toanswer.pop_front(); + toanswer.push_back( first ); + return get_job_request(); +} + +static bool +empty_queue() +{ + Job *job = get_job_request (); + if (!job) + return false; + + assert(!css.empty()); + + Job *first_job = job; + CS *cs = 0; + + while ( true ) + { + cs = pick_server (job); + + if (cs) + break; + + /* Ignore the load on the submitter itself if no other host could + be found. We only obey to its max job number. */ + cs = job->submitter; + if (! (int( cs->joblist.size() ) < cs->max_jobs + && job->preferred_host.empty() + /* This should be trivially true. */ + && can_install (cs, job).size())) + { + job = delay_current_job(); + if ( job == first_job || !job ) // no job found in the whole toanswer list + return false; + } + else + { + break; + } + } + + remove_job_request (); + + job->state = Job::WAITINGFORCS; + job->server = cs; + + string host_platform = envs_match (cs, job); + bool gotit = true; + if (host_platform.empty ()) + { + gotit = false; + host_platform = can_install (cs, job); + } + + // mix and match between job ids + unsigned matched_job_id = 0; + unsigned count = 0; + for (list<JobStat>::const_iterator l = job->submitter->last_requested_jobs.begin(); + l != job->submitter->last_requested_jobs.end(); ++l) + { + unsigned rcount = 0; + for (list<JobStat>::const_iterator r = cs->last_compiled_jobs.begin(); + r != cs->last_compiled_jobs.end(); ++r) + { + if (l->job_id == r->job_id) + matched_job_id = l->job_id; + if (++rcount > 16) + break; + } + + if (matched_job_id || ++count > 16) + break; + } + + UseCSMsg m2(host_platform, cs->name, cs->remote_port, job->id, + gotit, job->local_client_id, matched_job_id ); + + if (!job->submitter->send_msg (m2)) + { + trace() << "failed to deliver job " << job->id << endl; + handle_end( job->submitter, 0 ); // will care for the rest + return true; + } + else + { +#if DEBUG_SCHEDULER >= 0 + if (!gotit) + trace() << "put " << job->id << " in joblist of " << cs->nodename << " (will install now)" << endl; + else + trace() << "put " << job->id << " in joblist of " << cs->nodename << endl; +#endif + cs->joblist.push_back( job ); + /* if it doesn't have the environment, it will get it. */ + if ( !gotit ) + cs->busy_installing = time(0); + + string env; + if ( !job->master_job_for.empty() ) + { + for ( Environments::const_iterator it = job->environments.begin(); it != job->environments.end(); ++it ) + { + if ( it->first == cs->host_platform ) + { + env = it->second; + break; + } + } + } + if ( !env.empty() ) + { + for ( list<Job*>::iterator it = job->master_job_for.begin(); it != job->master_job_for.end(); ++it ) + { // remove all other environments + ( *it )->environments.clear(); + ( *it )->environments.push_back( make_pair( cs->host_platform, env ) ); + } + } + } + return true; +} + +static bool +handle_login (CS *cs, Msg *_m) +{ + LoginMsg *m = dynamic_cast<LoginMsg *>(_m); + if (!m) + return false; + + std::ostream& dbg = trace(); + + cs->remote_port = m->port; + cs->compiler_versions = m->envs; + cs->max_jobs = m->chroot_possible ? m->max_kids : 0; + cs->noremote = m->noremote; + if ( m->nodename.length() ) + cs->nodename = m->nodename; + else + cs->nodename = cs->name; + cs->host_platform = m->host_platform; + cs->chroot_possible = m->chroot_possible; + cs->pick_new_id(); + + for (list<string>::const_iterator it = block_css.begin(); it != block_css.end(); ++it) + if (cs->name == *it) + return false; + + dbg << "login " << m->nodename << " protocol version: " << cs->protocol; + handle_monitor_stats( cs ); + + /* remove any other clients with the same IP, they must be stale */ + for (list<CS*>::iterator it = css.begin(); it != css.end(); ) + { + if (cs->eq_ip(*(*it))) + { + CS* old = *it; + ++it; + handle_end(old, 0); + continue; + } + ++it; + } + + css.push_back (cs); + +#if 1 + dbg << " ["; + for (Environments::const_iterator it = m->envs.begin(); + it != m->envs.end(); ++it) + dbg << it->second << "(" << it->first << "), "; + dbg << "]" << endl; +#endif + + /* Configure the daemon */ + if (IS_PROTOCOL_24( cs )) + cs->send_msg (ConfCSMsg(icecream_bench_code)); + + return true; +} + +static bool +handle_relogin (MsgChannel *c, Msg *_m) +{ + LoginMsg *m = dynamic_cast<LoginMsg *>(_m); + if (!m) + return false; + + CS *cs = static_cast<CS *>(c); + cs->compiler_versions = m->envs; + cs->busy_installing = 0; + + std::ostream &dbg = trace(); + dbg << "RELOGIN " << cs->nodename << "(" << cs->host_platform << "): ["; + for (Environments::const_iterator it = m->envs.begin(); + it != m->envs.end(); ++it) + dbg << it->second << "(" << it->first << "), "; + dbg << "]" << endl; + + /* Configure the daemon */ + if (IS_PROTOCOL_24( c )) + c->send_msg (ConfCSMsg(icecream_bench_code)); + + return false; +} + +static bool +handle_mon_login (CS *c, Msg *_m) +{ + MonLoginMsg *m = dynamic_cast<MonLoginMsg *>(_m); + if (!m) + return false; + monitors.push_back (c); + // monitors really want to be fed lazily + c->setBulkTransfer(); + + for (list<CS*>::const_iterator it = css.begin(); it != css.end(); ++it) + handle_monitor_stats( *it ); + + fd2cs.erase( c->fd ); // no expected data from them + return true; +} + +static bool +handle_job_begin (CS *c, Msg *_m) +{ + JobBeginMsg *m = dynamic_cast<JobBeginMsg *>(_m); + if ( !m ) + return false; + + if (jobs.find(m->job_id) == jobs.end()) { + trace() << "handle_job_begin: no valid job id " << m->job_id << endl; + return false; + } + Job *job = jobs[m->job_id]; + if (job->server != c) + { + trace() << "that job isn't handled by " << c->name << endl; + return false; + } + job->state = Job::COMPILING; + job->starttime = m->stime; + job->start_on_scheduler = time(0); + notify_monitors (new MonJobBeginMsg (m->job_id, m->stime, c->hostid)); +#if DEBUG_SCHEDULER >= 0 + trace() << "BEGIN: " << m->job_id << " client=" << job->submitter->nodename + << "(" << job->target_platform << ")" << " server=" + << job->server->nodename << "(" << job->server->host_platform + << ")" << endl; +#endif + + return true; +} + + +static bool +handle_job_done (CS *c, Msg *_m) +{ + JobDoneMsg *m = dynamic_cast<JobDoneMsg *>(_m); + if ( !m ) + return false; + + Job *j = 0; + + if (m->exitcode == CLIENT_WAS_WAITING_FOR_CS) + { + // the daemon saw a cancel of what he believes is waiting in the scheduler + map<unsigned int, Job*>::iterator mit; + for (mit = jobs.begin(); mit != jobs.end(); ++mit) + { + Job *job = mit->second; + trace() << "looking for waitcs " << job->server << " " << job->submitter << " " << c << " " + << job->state << " " << job->local_client_id << " " << m->job_id << endl; + if (job->server == 0 && job->submitter == c && job->state == Job::PENDING + && job->local_client_id == m->job_id ) + { + trace() << "STOP (WAITFORCS) FOR " << mit->first << endl; + j = job; + m->job_id = j->id; // that's faked + + /* Unfortunately the toanswer queues are also tagged based on the daemon, + so we need to clean them up also. */ + list<UnansweredList*>::iterator it; + for (it = toanswer.begin(); it != toanswer.end(); ++it) + if ((*it)->server == c) + { + UnansweredList *l = *it; + list<Job*>::iterator jit; + for (jit = l->l.begin(); jit != l->l.end(); ++jit) + { + if (*jit == j) + { + l->l.erase(jit); + break; + } + } + if (l->l.empty()) + { + it = toanswer.erase (it); + break; + } + } + } + } + } + else + if (jobs.find(m->job_id) != jobs.end()) + j = jobs[m->job_id]; + + if (!j) + { + trace() << "job ID not present " << m->job_id << endl; + return false; + } + + if (j->state == Job::PENDING) + { + trace() << "job ID still pending ?! scheduler recently restarted? " << m->job_id << endl; + return false; + } + + if (m->is_from_server() && j->server != c) + { + log_info() << "the server isn't the same for job " << m->job_id << endl; + log_info() << "server: " << j->server->nodename << endl; + log_info() << "msg came from: " << c->nodename << endl; + // the daemon is not following matz's rules: kick him + handle_end(c, 0); + return false; + } + if (!m->is_from_server() && j->submitter != c) + { + log_info() << "the submitter isn't the same for job " << m->job_id << endl; + log_info() << "submitter: " << j->submitter->nodename << endl; + log_info() << "msg came from: " << c->nodename << endl; + // the daemon is not following matz's rules: kick him + handle_end(c, 0); + return false; + } + + + + if ( m->exitcode == 0 ) + { + std::ostream &dbg = trace(); + dbg << "END " << m->job_id + << " status=" << m->exitcode; + + if ( m->in_uncompressed ) + dbg << " in=" << m->in_uncompressed + << "(" << int( m->in_compressed * 100 / m->in_uncompressed ) << "%)"; + else + dbg << " in=0(0%)"; + + if ( m->out_uncompressed ) + dbg << " out=" << m->out_uncompressed + << "(" << int( m->out_compressed * 100 / m->out_uncompressed ) << "%)"; + else + dbg << " out=0(0%)"; + + dbg << " real=" << m->real_msec + << " user=" << m->user_msec + << " sys=" << m->sys_msec + << " pfaults=" << m->pfaults + << " server=" << j->server->nodename + << endl; + } + else + trace() << "END " << m->job_id + << " status=" << m->exitcode << endl; + + if (j->server) + j->server->joblist.remove (j); + + add_job_stats (j, m); + notify_monitors (new MonJobDoneMsg (*m)); + jobs.erase (m->job_id); + delete j; + + return true; +} + +static bool +handle_ping (CS* c, Msg * /*_m*/) +{ + c->last_talk = time( 0 ); + if ( c->max_jobs < 0 ) + c->max_jobs *= -1; + return true; +} + +static bool +handle_stats (CS * c, Msg * _m) +{ + StatsMsg *m = dynamic_cast<StatsMsg *>(_m); + if (!m) + return false; + + /* Before protocol 25, ping and stat handling was + clutched together. */ + if (!IS_PROTOCOL_25(c)) + { + c->last_talk = time( 0 ); + if ( c && c->max_jobs < 0 ) + c->max_jobs *= -1; + } + + for (list<CS*>::iterator it = css.begin(); it != css.end(); ++it) + if ( *it == c ) + { + ( *it )->load = m->load; + handle_monitor_stats( *it, m ); + return true; + } + + return false; +} + +static string +dump_job (Job *job) +{ + char buffer[1000]; + string line; + snprintf (buffer, sizeof (buffer), "%d %s sub:%s on:%s ", + job->id, + job->state == Job::PENDING ? "PEND" + : job->state == Job::WAITINGFORCS ? "WAIT" + : job->state == Job::COMPILING ? "COMP" + : job->state == Job::WAITINGFORDONE ? "DONE" + : "Huh?", + job->submitter ? job->submitter->nodename.c_str() : "<>", + job->server ? job->server->nodename.c_str() : "<unknown>"); + buffer[sizeof (buffer) - 1] = 0; + line = buffer; + line = line + job->filename; + return line; +} + +/* Splits the string S between characters in SET and add them to list L. */ +static void +split_string (const string &s, const char *set, list<string> &l) +{ + string::size_type end = 0; + while (end != string::npos) + { + string::size_type start = s.find_first_not_of (set, end); + if (start == string::npos) + break; + end = s.find_first_of (set, start); + /* Do we really need to check end here or is the subtraction + defined on every platform correctly (with GCC it's ensured, + that (npos - start) is the rest of the string). */ + if (end != string::npos) + l.push_back (s.substr (start, end - start)); + else + l.push_back (s.substr (start)); + } +} + +static bool +handle_control_login(CS* c) +{ + c->type = CS::LINE; + c->last_talk = time (0); + c->setBulkTransfer(); + c->state = CS::LOGGEDIN; + assert(find(controls.begin(), controls.end(), c) == controls.end()); + controls.push_back(c); + + std::ostringstream o; + o << "200-ICECC " VERSION ": " + << time(0) - starttime << "s uptime, " + << css.size() << " hosts, " + << jobs.size() << " jobs in queue " + << "(" << new_job_id << " total)." << endl; + o << "200 Use 'help' for help and 'quit' to quit." << endl; + return c->send_msg(TextMsg(o.str())); +} + +static bool +handle_line (CS *c, Msg *_m) +{ + TextMsg *m = dynamic_cast<TextMsg *>(_m); + if (!m) + return false; + + char buffer[1000]; + string line; + list<string> l; + split_string (m->text, " \t\n", l); + string cmd; + + c->last_talk = time(0); + + if (l.empty()) + cmd = ""; + else + { + cmd = l.front(); + l.pop_front(); + transform(cmd.begin(), cmd.end(), cmd.begin(), ::tolower); + } + if (cmd == "listcs") + { + for (list<CS*>::iterator it = css.begin(); it != css.end(); ++it) + { + CS* cs= *it; + sprintf (buffer, " (%s:%d) ", cs->name.c_str(), cs->remote_port); + line = " " + cs->nodename + buffer; + line += "[" + cs->host_platform + "] speed="; + sprintf (buffer, "%.2f jobs=%d/%d load=%d", server_speed (cs), + (int)cs->joblist.size(), cs->max_jobs, cs->load); + line += buffer; + if (cs->busy_installing) + { + sprintf( buffer, " busy installing since %ld s", time(0) - cs->busy_installing ); + line += buffer; + } + if(!c->send_msg (TextMsg (line))) + return false; + for ( list<Job*>::const_iterator it2 = cs->joblist.begin(); it2 != cs->joblist.end(); ++it2 ) + if(!c->send_msg (TextMsg (" " + dump_job (*it2) ) )) + return false; + } + } + else if (cmd == "listblocks") + { + for (list<string>::const_iterator it = block_css.begin(); it != block_css.end(); ++it) + if(!c->send_msg (TextMsg (" " + (*it) ) )) + return false; + } + else if (cmd == "listjobs") + { + for (map<unsigned int, Job*>::const_iterator it = jobs.begin(); + it != jobs.end(); ++it) + if(!c->send_msg( TextMsg( " " + dump_job (it->second) ) )) + return false; + } + else if (cmd == "quit" || cmd == "exit" ) + { + handle_end(c, 0); + return false; + } + else if (cmd == "removecs" || cmd == "blockcs") + { + if (l.empty()) { + if(!c->send_msg (TextMsg (string ("401 Sure. But which hosts?")))) + return false; + } + else + for (list<string>::const_iterator si = l.begin(); si != l.end(); ++si) + for (list<CS*>::iterator it = css.begin(); it != css.end(); ++it) + if ((*it)->nodename == *si || (*it)->name == *si) + { + if (cmd == "blockcs") + block_css.push_back((*it)->name); + if (c->send_msg (TextMsg (string ("removing host ") + *si))) + handle_end ( *it, 0); + break; + } + } + else if (cmd == "crashme") + { + *(int *)0 = 42; // ;-) + } + else if (cmd == "internals" ) + { + for (list<CS*>::iterator it = css.begin(); it != css.end(); ++it) + { + Msg *msg = NULL; + + if (!l.empty()) + { + list<string>::const_iterator si; + for (si = l.begin(); si != l.end(); ++si) { + if ((*it)->nodename == *si || (*it)->name == *si) + break; + } + if(si == l.end()) + continue; + } + + if(( *it )->send_msg( GetInternalStatus() )) + msg = ( *it )->get_msg(); + if ( msg && msg->type == M_STATUS_TEXT ) { + if (!c->send_msg( TextMsg( dynamic_cast<StatusTextMsg*>( msg )->text ) )) + return false; + } + else { + if (!c->send_msg( TextMsg( ( *it )->nodename + " not reporting\n" ) )) + return false; + } + delete msg; + } + } + else if (cmd == "help") + { + if (!c->send_msg (TextMsg ( + "listcs\nlistblocks\nlistjobs\nremovecs\nblockcs\ninternals\nhelp\nquit"))) + return false; + } + else + { + string txt = "Invalid command '"; + txt += m->text; + txt += "'"; + if(!c->send_msg (TextMsg (txt))) + return false; + } + return c->send_msg (TextMsg (string ("200 done"))); +} + +// return false if some error occured, leaves C open. */ +static bool +try_login (CS *c, Msg *m) +{ + bool ret = true; + switch (m->type) + { + case M_LOGIN: + c->type = CS::DAEMON; + ret = handle_login (c, m); + break; + case M_MON_LOGIN: + c->type = CS::MONITOR; + ret = handle_mon_login (c, m); + break; + default: + log_info() << "Invalid first message " << (char)m->type << endl; + ret = false; + break; + } + if (ret) + c->state = CS::LOGGEDIN; + else + handle_end (c, m); + + delete m; + return ret; +} + +static bool +handle_end (CS *toremove, Msg *m) +{ +#if DEBUG_SCHEDULER > 1 + trace() << "Handle_end " << toremove << " " << m << endl; +#else + ( void )m; +#endif + + switch (toremove->type) { + case CS::MONITOR: + { + assert (find (monitors.begin(), monitors.end(), toremove) != monitors.end()); + monitors.remove (toremove); +#if DEBUG_SCHEDULER > 1 + trace() << "handle_end(moni) " << monitors.size() << endl; +#endif + } + break; + case CS::DAEMON: + { + log_info() << "remove daemon " << toremove->nodename << endl; + + notify_monitors(new MonStatsMsg( toremove->hostid, "State:Offline\n" ) ); + + /* A daemon disconnected. We must remove it from the css list, + and we have to delete all jobs scheduled on that daemon. + There might be still clients connected running on the machine on which + the daemon died. We expect that the daemon dying makes the client + disconnect soon too. */ + css.remove (toremove); + + /* Unfortunately the toanswer queues are also tagged based on the daemon, + so we need to clean them up also. */ + list<UnansweredList*>::iterator it; + for (it = toanswer.begin(); it != toanswer.end();) + if ((*it)->server == toremove) + { + UnansweredList *l = *it; + list<Job*>::iterator jit; + for (jit = l->l.begin(); jit != l->l.end(); ++jit) + { + trace() << "STOP (DAEMON) FOR " << (*jit)->id << endl; + notify_monitors (new MonJobDoneMsg ( JobDoneMsg (( *jit )->id, 255 ))); + if ((*jit)->server) + (*jit)->server->busy_installing = 0; + jobs.erase( (*jit)->id ); + delete (*jit); + } + delete l; + it = toanswer.erase (it); + } + else + ++it; + + map<unsigned int, Job*>::iterator mit; + for (mit = jobs.begin(); mit != jobs.end(); ) + { + Job *job = mit->second; + if (job->server == toremove || job->submitter == toremove) + { + trace() << "STOP (DAEMON2) FOR " << mit->first << endl; + notify_monitors (new MonJobDoneMsg ( JobDoneMsg( job->id, 255 ))); + /* If this job is removed because the submitter is removed + also remove the job from the servers joblist. */ + if (job->server && job->server != toremove) + job->server->joblist.remove (job); + if (job->server) + job->server->busy_installing = 0; + jobs.erase( mit++ ); + delete job; + } + else + { + ++mit; + } + } + } + break; + case CS::LINE: + { + if (!toremove->send_msg (TextMsg ("200 Good Bye!"))) { + } + controls.remove (toremove); + } + break; + default: + { + trace() << "remote end had UNKNOWN type?" << endl; + } + } + + fd2cs.erase (toremove->fd); + delete toremove; + return true; +} + +/* Returns TRUE if C was not closed. */ +static bool +handle_activity (CS *c) +{ + Msg *m; + bool ret = true; + m = c->get_msg (0); + if (!m) + { + handle_end (c, m); + return false; + } + /* First we need to login. */ + if (c->state == CS::CONNECTED) + return try_login (c, m); + + switch (m->type) + { + case M_JOB_BEGIN: ret = handle_job_begin (c, m); break; + case M_JOB_DONE: ret = handle_job_done (c, m); break; + case M_PING: ret = handle_ping (c, m); break; + case M_STATS: ret = handle_stats (c, m); break; + case M_END: handle_end (c, m); ret = false; break; + case M_JOB_LOCAL_BEGIN: ret = handle_local_job (c, m); break; + case M_JOB_LOCAL_DONE: ret = handle_local_job_done( c, m ); break; + case M_LOGIN: ret = handle_relogin (c, m); break; + case M_TEXT: ret = handle_line (c, m); break; + case M_GET_CS: ret = handle_cs_request (c, m); break; + default: + log_info() << "Invalid message type arrived " << ( char )m->type << endl; + handle_end (c, m); + ret = false; + break; + } + delete m; + return ret; +} + +static int +open_broad_listener () +{ + int listen_fd; + struct sockaddr_in myaddr; + if ((listen_fd = socket (PF_INET, SOCK_DGRAM, 0)) < 0) + { + log_perror ("socket()"); + return -1; + } + int optval = 1; + if (setsockopt (listen_fd, SOL_SOCKET, SO_BROADCAST, &optval, sizeof(optval)) < 0) + { + log_perror ("setsockopt()"); + return -1; + } + myaddr.sin_family = AF_INET; + myaddr.sin_port = htons (8765); + myaddr.sin_addr.s_addr = INADDR_ANY; + if (bind (listen_fd, (struct sockaddr *) &myaddr, sizeof (myaddr)) < 0) + { + log_perror ("bind()"); + return -1; + } + return listen_fd; +} + +static int +open_tcp_listener (short port) +{ + int fd; + struct sockaddr_in myaddr; + if ((fd = socket (PF_INET, SOCK_STREAM, 0)) < 0) + { + log_perror ("socket()"); + return -1; + } + int optval = 1; + if (setsockopt (fd, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval)) < 0) + { + log_perror ("setsockopt()"); + return -1; + } + /* Although we select() on fd we need O_NONBLOCK, due to + possible network errors making accept() block although select() said + there was some activity. */ + if (fcntl (fd, F_SETFL, O_NONBLOCK) < 0) + { + log_perror ("fcntl()"); + return -1; + } + myaddr.sin_family = AF_INET; + myaddr.sin_port = htons (port); + myaddr.sin_addr.s_addr = INADDR_ANY; + if (bind (fd, (struct sockaddr *) &myaddr, sizeof (myaddr)) < 0) + { + log_perror ("bind()"); + return -1; + } + if (listen (fd, 10) < 0) + { + log_perror ("listen()"); + return -1; + } + return fd; +} + +static void +usage(const char* reason = 0) +{ + if (reason) + cerr << reason << endl; + + cerr << "ICECREAM scheduler " VERSION "\n"; + cerr << "usage: scheduler [options] \n" + << "Options:\n" + << " -n, --netname <name>\n" + << " -p, --port <port>\n" + << " -h, --help\n" + << " -l, --log-file <file>\n" + << " -d, --daemonize\n" + << " -v[v[v]]]\n" + << endl; + + exit(1); +} + +static void +trigger_exit( int signum ) +{ + if (!exit_main_loop) + exit_main_loop = true; + else + { + // hmm, we got killed already. try better + cerr << "forced exit." << endl; + _exit(1); + } + // make BSD happy + signal(signum, trigger_exit); +} + +int +main (int argc, char * argv[]) +{ + int listen_fd, remote_fd, broad_fd, text_fd; + struct sockaddr_in remote_addr; + unsigned int port = 8765; + socklen_t remote_len; + char *netname = (char*)"ICECREAM"; + bool detach = false; + int debug_level = Error; + string logfile; + + while ( true ) { + int option_index = 0; + static const struct option long_options[] = { + { "netname", 1, NULL, 'n' }, + { "help", 0, NULL, 'h' }, + { "port", 0, NULL, 'p' }, + { "daemonize", 0, NULL, 'd'}, + { "log-file", 1, NULL, 'l'}, + { 0, 0, 0, 0 } + }; + + const int c = getopt_long( argc, argv, "n:p:hl:vdr", long_options, &option_index ); + if ( c == -1 ) break; // eoo + + switch ( c ) { + case 0: + { + ( void ) long_options[option_index].name; + } + break; + case 'd': + detach = true; + break; + case 'l': + if ( optarg && *optarg ) + logfile = optarg; + else + usage( "Error: -l requires argument" ); + break; + case 'v': + if ( debug_level & Warning ) + if ( debug_level & Info ) // for second call + debug_level |= Debug; + else + debug_level |= Info; + else + debug_level |= Warning; + break; + case 'n': + if ( optarg && *optarg ) + netname = optarg; + else + usage("Error: -n requires argument"); + break; + case 'p': + if ( optarg && *optarg ) + { + port = 0; port = atoi( optarg ); + if ( 0 == port ) + usage("Error: Invalid port specified"); + } + else + usage("Error: -p requires argument"); + break; + + default: + usage(); + } + } + + if ( !logfile.size() && detach ) + logfile = "/var/log/icecc_scheduler"; + + setup_debug( debug_level, logfile ); + if ( detach ) + daemon( 0, 0 ); + + listen_fd = open_tcp_listener (port); + if (listen_fd < 0) + return 1; + text_fd = open_tcp_listener (port + 1); + if (text_fd < 0) + return 1; + broad_fd = open_broad_listener (); + if (broad_fd < 0) + return 1; + + if (signal(SIGPIPE, SIG_IGN) == SIG_ERR) + { + log_warning() << "signal(SIGPIPE, ignore) failed: " << strerror(errno) << endl; + return 1; + } + + starttime = time( 0 ); + + ofstream pidFile; + string progName = argv[0]; + progName = progName.substr(progName.rfind('/')+1); + pidFilePath = string(RUNDIR)+string("/")+progName+string(".pid"); + pidFile.open(pidFilePath.c_str()); + pidFile << getpid() << endl; + pidFile.close(); + + signal(SIGTERM, trigger_exit); + signal(SIGINT, trigger_exit); + signal(SIGALRM, trigger_exit); + + time_t next_listen = 0; + + while (!exit_main_loop) + { + struct timeval tv; + tv.tv_usec = 0; + tv.tv_sec = prune_servers (); + + while (empty_queue()) + continue; + + fd_set read_set; + int max_fd = 0; + FD_ZERO (&read_set); + if (time(0) >= next_listen) + { + max_fd = listen_fd; + FD_SET (listen_fd, &read_set); + if (text_fd > max_fd) + max_fd = text_fd; + FD_SET (text_fd, &read_set); + } + if (broad_fd > max_fd) + max_fd = broad_fd; + FD_SET (broad_fd, &read_set); + for (map<int, CS*>::const_iterator it = fd2cs.begin(); it != fd2cs.end();) + { + int i = it->first; + CS *c = it->second; + bool ok = true; + ++it; + /* handle_activity() can delete c and make the iterator + invalid. */ + while (ok && c->has_msg ()) + if (!handle_activity (c)) + ok = false; + if (ok) + { + if (i > max_fd) + max_fd = i; + FD_SET (i, &read_set); + } + } + max_fd = select (max_fd + 1, &read_set, NULL, NULL, &tv); + if (max_fd < 0 && errno == EINTR) + continue; + if (max_fd < 0) + { + log_perror ("select()"); + return 1; + } + if (FD_ISSET (listen_fd, &read_set)) + { + max_fd--; + bool pending_connections = true; + while (pending_connections) + { + remote_len = sizeof (remote_addr); + remote_fd = accept (listen_fd, + (struct sockaddr *) &remote_addr, + &remote_len ); + if (remote_fd < 0) + pending_connections = false; + + if (remote_fd < 0 && errno != EAGAIN && errno != EINTR && errno + != EWOULDBLOCK) + { + log_perror ("accept()"); + /* don't quit because of ECONNABORTED, this can happen during + * floods */ + } + if (remote_fd >= 0) + { + CS *cs = new CS (remote_fd, (struct sockaddr*) &remote_addr, remote_len, false); + trace() << "accepted " << cs->name << endl; + cs->last_talk = time( 0 ); + + if ( !cs->protocol ) // protocol mismatch + { + delete cs; + continue; + } + fd2cs[cs->fd] = cs; + while (!cs->read_a_bit () || cs->has_msg ()) + if(! handle_activity (cs)) + break; + } + } + next_listen = time(0) + 1; + } + if (max_fd && FD_ISSET (text_fd, &read_set)) + { + max_fd--; + remote_len = sizeof (remote_addr); + remote_fd = accept (text_fd, + (struct sockaddr *) &remote_addr, + &remote_len ); + if (remote_fd < 0 && errno != EAGAIN && errno != EINTR) + { + log_perror ("accept()"); + /* Don't quit the scheduler just because a debugger couldn't + connect. */ + } + if (remote_fd >= 0) + { + CS *cs = new CS (remote_fd, (struct sockaddr*) &remote_addr, remote_len, true); + fd2cs[cs->fd] = cs; + if (!handle_control_login(cs)) + { + handle_end(cs, 0); + continue; + } + while (!cs->read_a_bit () || cs->has_msg ()) + if (!handle_activity (cs)) + break; + } + } + if (max_fd && FD_ISSET (broad_fd, &read_set)) + { + max_fd--; + char buf[16]; + struct sockaddr_in broad_addr; + socklen_t broad_len = sizeof (broad_addr); + if (recvfrom (broad_fd, buf, 1, 0, (struct sockaddr*) &broad_addr, + &broad_len) != 1) + { + int err = errno; + log_perror ("recvfrom()"); + /* Some linux 2.6 kernels can return from select with + data available, and then return from read() with EAGAIN + even on a blocking socket (breaking POSIX). Happens + when the arriving packet has a wrong checksum. So + we ignore EAGAIN here, but still abort for all other errors. */ + if (err != EAGAIN) + return -1; + } + /* Only answer if daemon would be able to talk to us. */ + else if (buf[0] >= MIN_PROTOCOL_VERSION) + { + log_info() << "broadcast from " << inet_ntoa (broad_addr.sin_addr) + << ":" << ntohs (broad_addr.sin_port) << "\n"; + buf[0]++; + memset (buf + 1, 0, sizeof (buf) - 1); + snprintf (buf + 1, sizeof (buf) - 1, "%s", netname); + buf[sizeof (buf) - 1] = 0; + if (sendto (broad_fd, buf, sizeof (buf), 0, + (struct sockaddr*)&broad_addr, broad_len) != sizeof (buf)) + { + log_perror ("sendto()"); + } + } + } + for (map<int, CS*>::const_iterator it = fd2cs.begin(); + max_fd && it != fd2cs.end();) + { + int i = it->first; + CS *c = it->second; + /* handle_activity can delete the channel from the fd2cs list, + hence advance the iterator right now, so it doesn't become + invalid. */ + ++it; + if (FD_ISSET (i, &read_set)) + { + while (!c->read_a_bit () || c->has_msg ()) + if(!handle_activity (c)) + break; + max_fd--; + } + } + } + shutdown (broad_fd, SHUT_RDWR); + close (broad_fd); + unlink(pidFilePath.c_str()); + return 0; +} + diff --git a/services/tempfile.c b/services/tempfile.c new file mode 100644 index 0000000..4cd5f14 --- /dev/null +++ b/services/tempfile.c @@ -0,0 +1,130 @@ +/* -*- c-file-style: "java"; indent-tabs-mode: nil -*- + * + * distcc -- A simple distributed compiler system + * + * Copyright (C) 2002, 2003 by Martin Pool <mbp@samba.org> + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + * USA + */ + + + /* "More computing sins are committed in the name of + * efficiency (without necessarily achieving it) than + * for any other single reason - including blind + * stupidity." -- W.A. Wulf + */ + + + +#include "config.h" + +#include <sys/stat.h> +#include <sys/types.h> +#include <sys/time.h> + +#include <time.h> +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> +#include <string.h> +#include <fcntl.h> +#include <errno.h> +#include <limits.h> + +#include "tempfile.h" +#include "exitcode.h" + +#ifndef _PATH_TMP +#define _PATH_TMP "/tmp" +#endif + + + +/** + * Create a file inside the temporary directory and register it for + * later cleanup, and return its name. + * + * The file will be reopened later, possibly in a child. But we know + * that it exists with appropriately tight permissions. + **/ +int dcc_make_tmpnam(const char *prefix, + const char *suffix, + char *name_ret, int relative) +{ + unsigned long random_bits; + unsigned long tries = 0; + int fd; + + random_bits = (unsigned long) getpid() << 16; + +# if HAVE_GETTIMEOFDAY + { + struct timeval tv; + gettimeofday(&tv, NULL); + random_bits ^= tv.tv_usec << 16; + random_bits ^= tv.tv_sec; + } +# else + random_bits ^= time(NULL); +# endif + +#if 0 + random_bits = 0; /* FOR TESTING */ +#endif + + do { + if (snprintf(name_ret, PATH_MAX, "%s/%s_%08lx%s", + _PATH_TMP + ( relative ? 1 : 0), + prefix, + random_bits & 0xffffffffUL, + suffix) == -1) + return EXIT_OUT_OF_MEMORY; + + /* Note that if the name already exists as a symlink, this + * open call will fail. + * + * The permissions are tight because nobody but this process + * and our children should do anything with it. */ + fd = open(name_ret, O_WRONLY | O_CREAT | O_EXCL, 0600); + if (fd == -1) { + /* Don't try getting a file too often. Safety net against + endless loops. Probably just paranoia. */ + if (++tries > 1000000) + return EXIT_IO_ERROR; + /* Some errors won't change by changing the filename, + e.g. ENOENT means that the directory where we try to create + the file was removed from under us. Don't endlessly loop + in that case. */ + switch (errno) { + case EACCES: case EEXIST: case EISDIR: case ELOOP: + /* try again */ + random_bits += 7777; /* fairly prime */ + continue; + } + return EXIT_IO_ERROR; + } + + if (close(fd) == -1) { /* huh? */ + return EXIT_IO_ERROR; + } + + break; + } while (1); + + return 0; +} + + diff --git a/services/tempfile.h b/services/tempfile.h new file mode 100644 index 0000000..4916818 --- /dev/null +++ b/services/tempfile.h @@ -0,0 +1,33 @@ +/* -*- c-file-style: "java"; indent-tabs-mode: nil -*- + * + * distcc -- A simple distributed compiler system + * + * Copyright (C) 2002, 2003 by Martin Pool <mbp@samba.org> + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + * USA + */ + +#ifdef __cplusplus +extern "C" { +#endif + +int dcc_make_tmpnam(const char *prefix, + const char *suffix, + char *name_ret, int relative); + +#ifdef __cplusplus +} +#endif |