summaryrefslogtreecommitdiff
path: root/services
diff options
context:
space:
mode:
Diffstat (limited to 'services')
-rw-r--r--services/Makefile.am20
-rw-r--r--services/Makefile.in718
-rw-r--r--services/bench.h17
-rw-r--r--services/comm.cpp1698
-rw-r--r--services/comm.h601
-rw-r--r--services/exitcode.h61
-rw-r--r--services/getifaddrs.cpp270
-rw-r--r--services/getifaddrs.h100
-rw-r--r--services/icecc.pc.in14
-rw-r--r--services/job.cpp112
-rw-r--r--services/job.h120
-rw-r--r--services/logging.cpp153
-rw-r--r--services/logging.h134
-rw-r--r--services/platform.cpp68
-rw-r--r--services/platform.h28
-rw-r--r--services/scheduler.cpp2149
-rw-r--r--services/tempfile.c130
-rw-r--r--services/tempfile.h33
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