public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [lra] a patch to fix ppc bootstrap failure
@ 2012-12-05  5:36 Vladimir Makarov
  2012-12-05 20:25 ` Michael Meissner
  2012-12-05 22:51 ` Michael Meissner
  0 siblings, 2 replies; 7+ messages in thread
From: Vladimir Makarov @ 2012-12-05  5:36 UTC (permalink / raw)
  To: GCC Patches

[-- Attachment #1: Type: text/plain, Size: 1136 bytes --]

After so many changes in LRA ppc target was broken.  The following patch 
fixes PPC bootstrap.

The patch was successfully bootstrapped on x86/x86-64 and PPC.

Committed as rev. 194180.

2012-12-05  Vladimir Makarov  <vmakarov@redhat.com>

         * rtl.h (struct rtx_def): Add comment for field jump.
         (SUBREG_MATCH_RELOAD_P): New macro.
         * lra-constraints.c (curr_insn_set): New.
         (match_reload): Use SUBREG_MATCH_RELOAD_P.
         (check_and_process_move): Use curr_insn_set. Process only single
         set insns.  Don't initialize sec_mem_p and change_p.
         (simplify_operand_subreg): Check SUBREG_MATCH_RELOAD_P.
         (process_alt_operands): Use #if HAVE_ATTR_enabled instead of
         #ifdef.  Add code to remove cycling.
         (process_address): Process even if non-null disp. Reload inner
         instead of disp when base and index are null.
         (curr_insn_transform): Initialize sec_mem_p and change_p.  Set up
         curr_insn_set.  Call check_and_process_move only for single set
         insns.
         * rs6000/rs6000.c (legitimate_lo_sum_address_p): Allow TFmode too.


[-- Attachment #2: ppc-bootstrap2.patch --]
[-- Type: text/plain, Size: 9866 bytes --]

Index: rtl.h
===================================================================
--- rtl.h	(revision 194149)
+++ rtl.h	(working copy)
@@ -267,7 +267,8 @@ struct GTY((chain_next ("RTX_NEXT (&%h)"
      1 in a SET that is for a return.
      In a CODE_LABEL, part of the two-bit alternate entry field.
      1 in a CONCAT is VAL_EXPR_IS_COPIED in var-tracking.c.
-     1 in a VALUE is SP_BASED_VALUE_P in cselib.c.  */
+     1 in a VALUE is SP_BASED_VALUE_P in cselib.c.
+     1 in a SUBREG generated by LRA for matching reload.  */
   unsigned int jump : 1;
   /* In a CODE_LABEL, part of the two-bit alternate entry field.
      1 in a MEM if it cannot trap.
@@ -1415,6 +1416,11 @@ do {									\
   ((RTL_FLAG_CHECK1("SUBREG_PROMOTED_UNSIGNED_P", (RTX), SUBREG)->volatil) \
    ? -1 : (int) (RTX)->unchanging)
 
+/* True if the subreg was generated by LRA for matching reload.  Such
+   subregs are valid only during LRA.  */
+#define SUBREG_MATCH_RELOAD_P(RTX)	\
+  (RTL_FLAG_CHECK1("SUBREG_MATCH_RELOAD_P", (RTX), SUBREG)->jump)
+
 /* Access various components of an ASM_OPERANDS rtx.  */
 
 #define ASM_OPERANDS_TEMPLATE(RTX) XCSTR (RTX, 0, ASM_OPERANDS)
Index: lra-constraints.c
===================================================================
--- lra-constraints.c	(revision 194149)
+++ lra-constraints.c	(working copy)
@@ -136,10 +136,11 @@
    reload insns.  */
 static int bb_reload_num;
 
-/* The current insn being processed and corresponding its data (basic
-   block, the insn data, the insn static data, and the mode of each
-   operand).  */
+/* The current insn being processed and corresponding its single set
+   (NULL otherwise), its data (basic block, the insn data, the insn
+   static data, and the mode of each operand).  */
 static rtx curr_insn;
+static rtx curr_insn_set;
 static basic_block curr_bb;
 static lra_insn_recog_data_t curr_id;
 static struct lra_static_insn_data *curr_static_id;
@@ -684,6 +685,7 @@ match_reload (signed char out, signed ch
 	    new_out_reg = gen_lowpart_SUBREG (outmode, reg);
 	  else
 	    new_out_reg = gen_rtx_SUBREG (outmode, reg, 0);
+	  SUBREG_MATCH_RELOAD_P (new_out_reg) = 1;
 	  /* If the input reg is dying here, we can use the same hard
 	     register for REG and IN_RTX.  We do it only for original
 	     pseudos as reload pseudos can die although original
@@ -707,6 +709,7 @@ match_reload (signed char out, signed ch
 	     it at the end of LRA work.  */
 	  clobber = emit_clobber (new_out_reg);
 	  LRA_TEMP_CLOBBER_P (PATTERN (clobber)) = 1;
+	  SUBREG_MATCH_RELOAD_P (new_in_reg) = 1;
 	  if (GET_CODE (in_rtx) == SUBREG)
 	    {
 	      rtx subreg_reg = SUBREG_REG (in_rtx);
@@ -848,23 +851,22 @@ emit_spill_move (bool to_p, rtx mem_pseu
 }
 
 /* Process a special case insn (register move), return true if we
-   don't need to process it anymore.  Return that RTL was changed
-   through CHANGE_P and macro SECONDARY_MEMORY_NEEDED says to use
-   secondary memory through SEC_MEM_P.	*/
+   don't need to process it anymore.  INSN should be a single set
+   insn.  Set up that RTL was changed through CHANGE_P and macro
+   SECONDARY_MEMORY_NEEDED says to use secondary memory through
+   SEC_MEM_P.  */
 static bool
 check_and_process_move (bool *change_p, bool *sec_mem_p)
 {
   int sregno, dregno;
-  rtx set, dest, src, dreg, sreg, old_sreg, new_reg, before, scratch_reg;
+  rtx dest, src, dreg, sreg, old_sreg, new_reg, before, scratch_reg;
   enum reg_class dclass, sclass, secondary_class;
   enum machine_mode sreg_mode;
   secondary_reload_info sri;
 
-  *sec_mem_p = *change_p = false;
-  if ((set = single_set (curr_insn)) == NULL)
-    return false;
-  dreg = dest = SET_DEST (set);
-  sreg = src = SET_SRC (set);
+  lra_assert (curr_insn_set != NULL_RTX);
+  dreg = dest = SET_DEST (curr_insn_set);
+  sreg = src = SET_SRC (curr_insn_set);
   /* Quick check on the right move insn which does not need
      reloads.  */
   if ((dclass = get_op_class (dest)) != NO_REGS
@@ -991,7 +993,7 @@ check_and_process_move (bool *change_p,
       if (GET_CODE (src) == SUBREG)
 	SUBREG_REG (src) = new_reg;
       else
-	SET_SRC (set) = new_reg;
+	SET_SRC (curr_insn_set) = new_reg;
     }
   else
     {
@@ -1188,7 +1190,10 @@ simplify_operand_subreg (int nop, enum m
        && (hard_regno_nregs[hard_regno][GET_MODE (reg)]
 	   >= hard_regno_nregs[hard_regno][mode])
        && simplify_subreg_regno (hard_regno, GET_MODE (reg),
-				 SUBREG_BYTE (operand), mode) < 0)
+				 SUBREG_BYTE (operand), mode) < 0
+       /* Don't reload subreg for matching reload.  It is actually
+	  valid subreg in LRA.  */
+       && ! SUBREG_MATCH_RELOAD_P (operand))
       || CONSTANT_P (reg) || GET_CODE (reg) == PLUS || MEM_P (reg))
     {
       enum op_type type = curr_static_id->operand[nop].type;
@@ -1372,7 +1377,7 @@ process_alt_operands (int only_alternati
   for (nalt = 0; nalt < n_alternatives; nalt++)
     {
       /* Loop over operands for one constraint alternative.  */
-#ifdef HAVE_ATTR_enabled
+#if HAVE_ATTR_enabled
       if (curr_id->alternative_enabled_p != NULL
 	  && ! curr_id->alternative_enabled_p[nalt])
 	continue;
@@ -1988,6 +1993,22 @@ process_alt_operands (int only_alternati
 	  if (early_clobber_p && operand_reg[nop] != NULL_RTX)
 	    early_clobbered_nops[early_clobbered_regs_num++] = nop;
 	}
+      if (curr_insn_set != NULL_RTX && n_operands == 2
+	  && ((! curr_alt_win[0] && curr_alt_win[1]
+	       && REG_P (no_subreg_reg_operand[1])
+	       && in_class_p (no_subreg_reg_operand[1], curr_alt[0], NULL))
+	      || (curr_alt_win[0] && ! curr_alt_win[1]
+		  && REG_P (no_subreg_reg_operand[0])
+		  && in_class_p (no_subreg_reg_operand[0], curr_alt[1], NULL)
+		  && (! CONST_POOL_OK_P (curr_operand_mode[1],
+					 no_subreg_reg_operand[1])
+		      || (targetm.preferred_reload_class
+			  (no_subreg_reg_operand[1],
+			   (enum reg_class) curr_alt[1]) != NO_REGS)))))
+	/* We have a move insn and a new reload insn will be similar
+	   to the current insn.  We should avoid such situation as it
+	   results in LRA cycling.  */
+	overall += LRA_MAX_REJECT;
       ok_p = true;
       curr_alt_dont_inherit_ops_num = 0;
       for (nop = 0; nop < early_clobbered_regs_num; nop++)
@@ -2334,24 +2355,23 @@ process_address (int nop, rtx *before, r
   /* There are three cases where the shape of *AD.INNER may now be invalid:
 
      1) the original address was valid, but either elimination or
-	equiv_address_substitution applied a displacement that made
-	it invalid.
+	equiv_address_substitution was applied and that made
+	the address invalid.
 
      2) the address is an invalid symbolic address created by
 	force_const_to_mem.
 
      3) the address is a frame address with an invalid offset.
 
-     All these cases involve a displacement and a non-autoinc address,
-     so there is no point revalidating other types.  */
-  if (ad.disp == NULL || ad.autoinc_p || valid_address_p (&ad))
+     All these cases involve a non-autoinc address, so there is no
+     point revalidating other types.  */
+  if (ad.autoinc_p || valid_address_p (&ad))
     return change_p;
 
   /* Any index existed before LRA started, so we can assume that the
      presence and shape of the index is valid.  */
   push_to_sequence (*before);
-  gcc_assert (ad.segment == NULL);
-  gcc_assert (ad.disp == ad.disp_term);
+  lra_assert (ad.disp == ad.disp_term);
   if (ad.base == NULL)
     {
       if (ad.index == NULL)
@@ -2359,25 +2379,25 @@ process_address (int nop, rtx *before, r
 	  int code = -1;
 	  enum reg_class cl = base_reg_class (ad.mode, ad.as,
 					      SCRATCH, SCRATCH);
-	  rtx disp = *ad.disp;
+	  rtx addr = *ad.inner;
 
-	  new_reg = lra_create_new_reg (Pmode, NULL_RTX, cl, "disp");
+	  new_reg = lra_create_new_reg (Pmode, NULL_RTX, cl, "addr");
 #ifdef HAVE_lo_sum
 	  {
 	    rtx insn;
 	    rtx last = get_last_insn ();
 
-	    /* disp => lo_sum (new_base, disp), case (2) above.  */
+	    /* addr => lo_sum (new_base, addr), case (2) above.  */
 	    insn = emit_insn (gen_rtx_SET
 			      (VOIDmode, new_reg,
-			       gen_rtx_HIGH (Pmode, copy_rtx (disp))));
+			       gen_rtx_HIGH (Pmode, copy_rtx (addr))));
 	    code = recog_memoized (insn);
 	    if (code >= 0)
 	      {
-		*ad.disp = gen_rtx_LO_SUM (Pmode, new_reg, disp);
+		*ad.inner = gen_rtx_LO_SUM (Pmode, new_reg, addr);
 		if (! valid_address_p (ad.mode, *ad.outer, ad.as))
 		  {
-		    *ad.disp = disp;
+		    *ad.inner = addr;
 		    code = -1;
 		  }
 	      }
@@ -2387,9 +2407,9 @@ process_address (int nop, rtx *before, r
 #endif
 	  if (code < 0)
 	    {
-	      /* disp => new_base, case (2) above.  */
-	      lra_emit_move (new_reg, disp);
-	      *ad.disp = new_reg;
+	      /* addr => new_base, case (2) above.  */
+	      lra_emit_move (new_reg, addr);
+	      *ad.inner = new_reg;
 	    }
 	}
       else
@@ -2601,7 +2621,10 @@ curr_insn_transform (void)
   no_input_reloads_p = no_output_reloads_p = false;
   goal_alt_number = -1;
 
-  if (check_and_process_move (&change_p, &sec_mem_p))
+  change_p = sec_mem_p = false;
+  curr_insn_set = single_set (curr_insn);
+  if (curr_insn_set != NULL_RTX
+      && check_and_process_move (&change_p, &sec_mem_p))
     return change_p;
 
   /* JUMP_INSNs and CALL_INSNs are not allowed to have any output
Index: config/rs6000/rs6000.c
===================================================================
--- config/rs6000/rs6000.c	(revision 194149)
+++ config/rs6000/rs6000.c	(working copy)
@@ -5523,7 +5523,7 @@ legitimate_lo_sum_address_p (enum machin
       if (GET_MODE_SIZE (mode) > UNITS_PER_WORD
 	  && !(/* ??? Assume floating point reg based on mode?  */
 	       TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_DOUBLE_FLOAT
-	       && (mode == DFmode || mode == DDmode)))
+	       && (mode == DFmode || mode == DDmode || mode == TFmode)))
 	return false;
 
       return CONSTANT_P (x) || toc_ok_p;

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [lra] a patch to fix ppc bootstrap failure
  2012-12-05  5:36 [lra] a patch to fix ppc bootstrap failure Vladimir Makarov
@ 2012-12-05 20:25 ` Michael Meissner
  2012-12-05 22:51 ` Michael Meissner
  1 sibling, 0 replies; 7+ messages in thread
From: Michael Meissner @ 2012-12-05 20:25 UTC (permalink / raw)
  To: Vladimir Makarov; +Cc: GCC Patches

[-- Attachment #1: Type: text/plain, Size: 3012 bytes --]

On Wed, Dec 05, 2012 at 12:35:56AM -0500, Vladimir Makarov wrote:
> After so many changes in LRA ppc target was broken.  The following
> patch fixes PPC bootstrap.
> 
> The patch was successfully bootstrapped on x86/x86-64 and PPC.
> 
> Committed as rev. 194180.
> 
> 2012-12-05  Vladimir Makarov  <vmakarov@redhat.com>
> 
>         * rtl.h (struct rtx_def): Add comment for field jump.
>         (SUBREG_MATCH_RELOAD_P): New macro.
>         * lra-constraints.c (curr_insn_set): New.
>         (match_reload): Use SUBREG_MATCH_RELOAD_P.
>         (check_and_process_move): Use curr_insn_set. Process only single
>         set insns.  Don't initialize sec_mem_p and change_p.
>         (simplify_operand_subreg): Check SUBREG_MATCH_RELOAD_P.
>         (process_alt_operands): Use #if HAVE_ATTR_enabled instead of
>         #ifdef.  Add code to remove cycling.
>         (process_address): Process even if non-null disp. Reload inner
>         instead of disp when base and index are null.
>         (curr_insn_transform): Initialize sec_mem_p and change_p.  Set up
>         curr_insn_set.  Call check_and_process_move only for single set
>         insns.
>         * rs6000/rs6000.c (legitimate_lo_sum_address_p): Allow TFmode too.

Well I get further, using the LRA branch, but there are two problems.

The first problem is I build the compiler with decimal floating point enabled,
and it fails in the bootstrap.  As a workaround, I built the compiler using the
--disable-decimal-float option, and it got further.  I will dig out the files
in a separate message.

The second problem occurs in the build when I'm building libgfortran, using
BOOT_CFLAGS='-O2 -mcpu=power7 -g -flra' or using -O3 instead of -O2.

If you compile the attached file with the -std=gnu99 -mcpu=power7 -O3
-funroll-loops -g options, line 2010 of lra.c raises an assertion failure for
one insn.  If I don't do vectorization and loop unrolling, the file compiles
fine.  I went into the debugger and printed up the insn that is causing the
failure:

(insn 4489 4488 4490 320 (set (reg:CC 65 lr [1369])
        (reg:CC 65 lr [1369])) 360 {*movcc_internal1}
     (expr_list:REG_DEAD (reg:CC 65 lr [1369])
        (nil)))

I walked into the previoius and next insns, and they too were generating nop
moves of a register to itself.  However in this case, the rs6000 port is
inconsistant, in that it says the LR register can hold CC/CCUNS/CCFP values,
but the movcc insn doesn't allow the LR/CTR.

I suspect this is a holdover from the original register allocator, and I'm
going to play with restricting the types that can go in LR/CTR.  I know in the
4.4 time frame, I initially tried to disallow floating point values in those
registers, and found one spec benchmark was trying to spill from a FP register
to the LR register (which is not a good idea), and I had to go back to allow
such bogus uses.

-- 
Michael Meissner, IBM
5 Technology Place Drive, M/S 2757, Westford, MA 01886-3141, USA
meissner@linux.vnet.ibm.com	fax +1 (978) 399-6899

[-- Attachment #2: matmul_i2.i --]
[-- Type: text/plain, Size: 167819 bytes --]

# 1 "/home/meissner/fsf-src/lra/libgfortran/generated/matmul_i2.c"
# 1 "/home/meissner/fsf-build-ppc64/lra/powerpc64-unknown-linux-gnu/libgfortran//"
# 1 "<command-line>"
# 1 "/home/meissner/fsf-src/lra/libgfortran/generated/matmul_i2.c"
# 26 "/home/meissner/fsf-src/lra/libgfortran/generated/matmul_i2.c"
# 1 "/home/meissner/fsf-src/lra/libgfortran/libgfortran.h" 1
# 42 "/home/meissner/fsf-src/lra/libgfortran/libgfortran.h"
# 1 "./config.h" 1
# 43 "/home/meissner/fsf-src/lra/libgfortran/libgfortran.h" 2

# 1 "/usr/include/stdio.h" 1 3 4
# 28 "/usr/include/stdio.h" 3 4
# 1 "/usr/include/features.h" 1 3 4
# 347 "/usr/include/features.h" 3 4
# 1 "/usr/include/sys/cdefs.h" 1 3 4
# 353 "/usr/include/sys/cdefs.h" 3 4
# 1 "/usr/include/bits/wordsize.h" 1 3 4
# 354 "/usr/include/sys/cdefs.h" 2 3 4
# 348 "/usr/include/features.h" 2 3 4
# 371 "/usr/include/features.h" 3 4
# 1 "/usr/include/gnu/stubs.h" 1 3 4



# 1 "/usr/include/bits/wordsize.h" 1 3 4
# 5 "/usr/include/gnu/stubs.h" 2 3 4


# 1 "/usr/include/gnu/stubs-32.h" 1 3 4
# 8 "/usr/include/gnu/stubs.h" 2 3 4
# 372 "/usr/include/features.h" 2 3 4
# 29 "/usr/include/stdio.h" 2 3 4





# 1 "/home/meissner/fsf-build-ppc64/lra/gcc/include/stddef.h" 1 3 4
# 213 "/home/meissner/fsf-build-ppc64/lra/gcc/include/stddef.h" 3 4
typedef unsigned int size_t;
# 35 "/usr/include/stdio.h" 2 3 4

# 1 "/usr/include/bits/types.h" 1 3 4
# 28 "/usr/include/bits/types.h" 3 4
# 1 "/usr/include/bits/wordsize.h" 1 3 4
# 29 "/usr/include/bits/types.h" 2 3 4


typedef unsigned char __u_char;
typedef unsigned short int __u_short;
typedef unsigned int __u_int;
typedef unsigned long int __u_long;


typedef signed char __int8_t;
typedef unsigned char __uint8_t;
typedef signed short int __int16_t;
typedef unsigned short int __uint16_t;
typedef signed int __int32_t;
typedef unsigned int __uint32_t;




__extension__ typedef signed long long int __int64_t;
__extension__ typedef unsigned long long int __uint64_t;







__extension__ typedef long long int __quad_t;
__extension__ typedef unsigned long long int __u_quad_t;
# 131 "/usr/include/bits/types.h" 3 4
# 1 "/usr/include/bits/typesizes.h" 1 3 4
# 132 "/usr/include/bits/types.h" 2 3 4


__extension__ typedef __u_quad_t __dev_t;
__extension__ typedef unsigned int __uid_t;
__extension__ typedef unsigned int __gid_t;
__extension__ typedef unsigned long int __ino_t;
__extension__ typedef __u_quad_t __ino64_t;
__extension__ typedef unsigned int __mode_t;
__extension__ typedef unsigned int __nlink_t;
__extension__ typedef long int __off_t;
__extension__ typedef __quad_t __off64_t;
__extension__ typedef int __pid_t;
__extension__ typedef struct { int __val[2]; } __fsid_t;
__extension__ typedef long int __clock_t;
__extension__ typedef unsigned long int __rlim_t;
__extension__ typedef __u_quad_t __rlim64_t;
__extension__ typedef unsigned int __id_t;
__extension__ typedef long int __time_t;
__extension__ typedef unsigned int __useconds_t;
__extension__ typedef long int __suseconds_t;

__extension__ typedef int __daddr_t;
__extension__ typedef long int __swblk_t;
__extension__ typedef int __key_t;


__extension__ typedef int __clockid_t;


__extension__ typedef void * __timer_t;


__extension__ typedef long int __blksize_t;




__extension__ typedef long int __blkcnt_t;
__extension__ typedef __quad_t __blkcnt64_t;


__extension__ typedef unsigned long int __fsblkcnt_t;
__extension__ typedef __u_quad_t __fsblkcnt64_t;


__extension__ typedef unsigned long int __fsfilcnt_t;
__extension__ typedef __u_quad_t __fsfilcnt64_t;

__extension__ typedef int __ssize_t;



typedef __off64_t __loff_t;
typedef __quad_t *__qaddr_t;
typedef char *__caddr_t;


__extension__ typedef int __intptr_t;


__extension__ typedef unsigned int __socklen_t;
# 37 "/usr/include/stdio.h" 2 3 4
# 45 "/usr/include/stdio.h" 3 4
struct _IO_FILE;



typedef struct _IO_FILE FILE;





# 65 "/usr/include/stdio.h" 3 4
typedef struct _IO_FILE __FILE;
# 75 "/usr/include/stdio.h" 3 4
# 1 "/usr/include/libio.h" 1 3 4
# 32 "/usr/include/libio.h" 3 4
# 1 "/usr/include/_G_config.h" 1 3 4
# 15 "/usr/include/_G_config.h" 3 4
# 1 "/home/meissner/fsf-build-ppc64/lra/gcc/include/stddef.h" 1 3 4
# 16 "/usr/include/_G_config.h" 2 3 4




# 1 "/usr/include/wchar.h" 1 3 4
# 83 "/usr/include/wchar.h" 3 4
typedef struct
{
  int __count;
  union
  {

    unsigned int __wch;



    char __wchb[4];
  } __value;
} __mbstate_t;
# 21 "/usr/include/_G_config.h" 2 3 4

typedef struct
{
  __off_t __pos;
  __mbstate_t __state;
} _G_fpos_t;
typedef struct
{
  __off64_t __pos;
  __mbstate_t __state;
} _G_fpos64_t;
# 53 "/usr/include/_G_config.h" 3 4
typedef int _G_int16_t __attribute__ ((__mode__ (__HI__)));
typedef int _G_int32_t __attribute__ ((__mode__ (__SI__)));
typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__)));
typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__)));
# 33 "/usr/include/libio.h" 2 3 4
# 53 "/usr/include/libio.h" 3 4
# 1 "/home/meissner/fsf-build-ppc64/lra/gcc/include/stdarg.h" 1 3 4
# 41 "/home/meissner/fsf-build-ppc64/lra/gcc/include/stdarg.h" 3 4
typedef __builtin_va_list __gnuc_va_list;
# 54 "/usr/include/libio.h" 2 3 4
# 170 "/usr/include/libio.h" 3 4
struct _IO_jump_t; struct _IO_FILE;
# 180 "/usr/include/libio.h" 3 4
typedef void _IO_lock_t;





struct _IO_marker {
  struct _IO_marker *_next;
  struct _IO_FILE *_sbuf;



  int _pos;
# 203 "/usr/include/libio.h" 3 4
};


enum __codecvt_result
{
  __codecvt_ok,
  __codecvt_partial,
  __codecvt_error,
  __codecvt_noconv
};
# 271 "/usr/include/libio.h" 3 4
struct _IO_FILE {
  int _flags;




  char* _IO_read_ptr;
  char* _IO_read_end;
  char* _IO_read_base;
  char* _IO_write_base;
  char* _IO_write_ptr;
  char* _IO_write_end;
  char* _IO_buf_base;
  char* _IO_buf_end;

  char *_IO_save_base;
  char *_IO_backup_base;
  char *_IO_save_end;

  struct _IO_marker *_markers;

  struct _IO_FILE *_chain;

  int _fileno;



  int _flags2;

  __off_t _old_offset;



  unsigned short _cur_column;
  signed char _vtable_offset;
  char _shortbuf[1];



  _IO_lock_t *_lock;
# 319 "/usr/include/libio.h" 3 4
  __off64_t _offset;
# 328 "/usr/include/libio.h" 3 4
  void *__pad1;
  void *__pad2;
  void *__pad3;
  void *__pad4;
  size_t __pad5;

  int _mode;

  char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)];

};


typedef struct _IO_FILE _IO_FILE;


struct _IO_FILE_plus;

extern struct _IO_FILE_plus _IO_2_1_stdin_;
extern struct _IO_FILE_plus _IO_2_1_stdout_;
extern struct _IO_FILE_plus _IO_2_1_stderr_;
# 364 "/usr/include/libio.h" 3 4
typedef __ssize_t __io_read_fn (void *__cookie, char *__buf, size_t __nbytes);







typedef __ssize_t __io_write_fn (void *__cookie, __const char *__buf,
     size_t __n);







typedef int __io_seek_fn (void *__cookie, __off64_t *__pos, int __w);


typedef int __io_close_fn (void *__cookie);




typedef __io_read_fn cookie_read_function_t;
typedef __io_write_fn cookie_write_function_t;
typedef __io_seek_fn cookie_seek_function_t;
typedef __io_close_fn cookie_close_function_t;


typedef struct
{
  __io_read_fn *read;
  __io_write_fn *write;
  __io_seek_fn *seek;
  __io_close_fn *close;
} _IO_cookie_io_functions_t;
typedef _IO_cookie_io_functions_t cookie_io_functions_t;

struct _IO_cookie_file;


extern void _IO_cookie_init (struct _IO_cookie_file *__cfile, int __read_write,
        void *__cookie, _IO_cookie_io_functions_t __fns);







extern int __underflow (_IO_FILE *);
extern int __uflow (_IO_FILE *);
extern int __overflow (_IO_FILE *, int);
# 460 "/usr/include/libio.h" 3 4
extern int _IO_getc (_IO_FILE *__fp);
extern int _IO_putc (int __c, _IO_FILE *__fp);
extern int _IO_feof (_IO_FILE *__fp) __attribute__ ((__nothrow__));
extern int _IO_ferror (_IO_FILE *__fp) __attribute__ ((__nothrow__));

extern int _IO_peekc_locked (_IO_FILE *__fp);





extern void _IO_flockfile (_IO_FILE *) __attribute__ ((__nothrow__));
extern void _IO_funlockfile (_IO_FILE *) __attribute__ ((__nothrow__));
extern int _IO_ftrylockfile (_IO_FILE *) __attribute__ ((__nothrow__));
# 490 "/usr/include/libio.h" 3 4
extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict,
   __gnuc_va_list, int *__restrict);
extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict,
    __gnuc_va_list);
extern __ssize_t _IO_padn (_IO_FILE *, int, __ssize_t);
extern size_t _IO_sgetn (_IO_FILE *, void *, size_t);

extern __off64_t _IO_seekoff (_IO_FILE *, __off64_t, int, int);
extern __off64_t _IO_seekpos (_IO_FILE *, __off64_t, int);

extern void _IO_free_backup_area (_IO_FILE *) __attribute__ ((__nothrow__));
# 76 "/usr/include/stdio.h" 2 3 4




typedef __gnuc_va_list va_list;
# 89 "/usr/include/stdio.h" 3 4




typedef _G_fpos64_t fpos_t;



typedef _G_fpos64_t fpos64_t;
# 141 "/usr/include/stdio.h" 3 4
# 1 "/usr/include/bits/stdio_lim.h" 1 3 4
# 142 "/usr/include/stdio.h" 2 3 4



extern struct _IO_FILE *stdin;
extern struct _IO_FILE *stdout;
extern struct _IO_FILE *stderr;









extern int remove (__const char *__filename) __attribute__ ((__nothrow__));

extern int rename (__const char *__old, __const char *__new) __attribute__ ((__nothrow__));




extern int renameat (int __oldfd, __const char *__old, int __newfd,
       __const char *__new) __attribute__ ((__nothrow__));



# 177 "/usr/include/stdio.h" 3 4
extern FILE *tmpfile (void) __asm__ ("" "tmpfile64") ;






extern FILE *tmpfile64 (void) ;



extern char *tmpnam (char *__s) __attribute__ ((__nothrow__)) ;





extern char *tmpnam_r (char *__s) __attribute__ ((__nothrow__)) ;
# 206 "/usr/include/stdio.h" 3 4
extern char *tempnam (__const char *__dir, __const char *__pfx)
     __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;








extern int fclose (FILE *__stream);




extern int fflush (FILE *__stream);

# 231 "/usr/include/stdio.h" 3 4
extern int fflush_unlocked (FILE *__stream);
# 241 "/usr/include/stdio.h" 3 4
extern int fcloseall (void);




# 262 "/usr/include/stdio.h" 3 4
extern FILE *fopen (__const char *__restrict __filename, __const char *__restrict __modes) __asm__ ("" "fopen64")

  ;
extern FILE *freopen (__const char *__restrict __filename, __const char *__restrict __modes, FILE *__restrict __stream) __asm__ ("" "freopen64")


  ;







extern FILE *fopen64 (__const char *__restrict __filename,
        __const char *__restrict __modes) ;
extern FILE *freopen64 (__const char *__restrict __filename,
   __const char *__restrict __modes,
   FILE *__restrict __stream) ;




extern FILE *fdopen (int __fd, __const char *__modes) __attribute__ ((__nothrow__)) ;





extern FILE *fopencookie (void *__restrict __magic_cookie,
     __const char *__restrict __modes,
     _IO_cookie_io_functions_t __io_funcs) __attribute__ ((__nothrow__)) ;




extern FILE *fmemopen (void *__s, size_t __len, __const char *__modes)
  __attribute__ ((__nothrow__)) ;




extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) __attribute__ ((__nothrow__)) ;






extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) __attribute__ ((__nothrow__));



extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf,
      int __modes, size_t __n) __attribute__ ((__nothrow__));





extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf,
         size_t __size) __attribute__ ((__nothrow__));


extern void setlinebuf (FILE *__stream) __attribute__ ((__nothrow__));








extern int fprintf (FILE *__restrict __stream,
      __const char *__restrict __format, ...);




extern int printf (__const char *__restrict __format, ...);

extern int sprintf (char *__restrict __s,
      __const char *__restrict __format, ...) __attribute__ ((__nothrow__));





extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format,
       __gnuc_va_list __arg);




extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg);

extern int vsprintf (char *__restrict __s, __const char *__restrict __format,
       __gnuc_va_list __arg) __attribute__ ((__nothrow__));





extern int snprintf (char *__restrict __s, size_t __maxlen,
       __const char *__restrict __format, ...)
     __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 4)));

extern int vsnprintf (char *__restrict __s, size_t __maxlen,
        __const char *__restrict __format, __gnuc_va_list __arg)
     __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 0)));






extern int vasprintf (char **__restrict __ptr, __const char *__restrict __f,
        __gnuc_va_list __arg)
     __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 0))) ;
extern int __asprintf (char **__restrict __ptr,
         __const char *__restrict __fmt, ...)
     __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3))) ;
extern int asprintf (char **__restrict __ptr,
       __const char *__restrict __fmt, ...)
     __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3))) ;
# 396 "/usr/include/stdio.h" 3 4
extern int vdprintf (int __fd, __const char *__restrict __fmt,
       __gnuc_va_list __arg)
     __attribute__ ((__format__ (__printf__, 2, 0)));
extern int dprintf (int __fd, __const char *__restrict __fmt, ...)
     __attribute__ ((__format__ (__printf__, 2, 3)));








extern int fscanf (FILE *__restrict __stream,
     __const char *__restrict __format, ...) ;




extern int scanf (__const char *__restrict __format, ...) ;

extern int sscanf (__const char *__restrict __s,
     __const char *__restrict __format, ...) __attribute__ ((__nothrow__));
# 447 "/usr/include/stdio.h" 3 4








extern int vfscanf (FILE *__restrict __s, __const char *__restrict __format,
      __gnuc_va_list __arg)
     __attribute__ ((__format__ (__scanf__, 2, 0))) ;





extern int vscanf (__const char *__restrict __format, __gnuc_va_list __arg)
     __attribute__ ((__format__ (__scanf__, 1, 0))) ;


extern int vsscanf (__const char *__restrict __s,
      __const char *__restrict __format, __gnuc_va_list __arg)
     __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__scanf__, 2, 0)));
# 506 "/usr/include/stdio.h" 3 4









extern int fgetc (FILE *__stream);
extern int getc (FILE *__stream);





extern int getchar (void);

# 534 "/usr/include/stdio.h" 3 4
extern int getc_unlocked (FILE *__stream);
extern int getchar_unlocked (void);
# 545 "/usr/include/stdio.h" 3 4
extern int fgetc_unlocked (FILE *__stream);











extern int fputc (int __c, FILE *__stream);
extern int putc (int __c, FILE *__stream);





extern int putchar (int __c);

# 578 "/usr/include/stdio.h" 3 4
extern int fputc_unlocked (int __c, FILE *__stream);







extern int putc_unlocked (int __c, FILE *__stream);
extern int putchar_unlocked (int __c);






extern int getw (FILE *__stream);


extern int putw (int __w, FILE *__stream);








extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
     ;






extern char *gets (char *__s) ;

# 624 "/usr/include/stdio.h" 3 4
extern char *fgets_unlocked (char *__restrict __s, int __n,
        FILE *__restrict __stream) ;
# 640 "/usr/include/stdio.h" 3 4
extern __ssize_t __getdelim (char **__restrict __lineptr,
          size_t *__restrict __n, int __delimiter,
          FILE *__restrict __stream) ;
extern __ssize_t getdelim (char **__restrict __lineptr,
        size_t *__restrict __n, int __delimiter,
        FILE *__restrict __stream) ;







extern __ssize_t getline (char **__restrict __lineptr,
       size_t *__restrict __n,
       FILE *__restrict __stream) ;








extern int fputs (__const char *__restrict __s, FILE *__restrict __stream);





extern int puts (__const char *__s);






extern int ungetc (int __c, FILE *__stream);






extern size_t fread (void *__restrict __ptr, size_t __size,
       size_t __n, FILE *__restrict __stream) ;




extern size_t fwrite (__const void *__restrict __ptr, size_t __size,
        size_t __n, FILE *__restrict __s) ;

# 701 "/usr/include/stdio.h" 3 4
extern int fputs_unlocked (__const char *__restrict __s,
      FILE *__restrict __stream);
# 712 "/usr/include/stdio.h" 3 4
extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
         size_t __n, FILE *__restrict __stream) ;
extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size,
          size_t __n, FILE *__restrict __stream) ;








extern int fseek (FILE *__stream, long int __off, int __whence);




extern long int ftell (FILE *__stream) ;




extern void rewind (FILE *__stream);

# 756 "/usr/include/stdio.h" 3 4
extern int fseeko (FILE *__stream, __off64_t __off, int __whence) __asm__ ("" "fseeko64")

                  ;
extern __off64_t ftello (FILE *__stream) __asm__ ("" "ftello64");








# 781 "/usr/include/stdio.h" 3 4
extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos) __asm__ ("" "fgetpos64")
                                          ;
extern int fsetpos (FILE *__stream, __const fpos_t *__pos) __asm__ ("" "fsetpos64")
                                                            ;








extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence);
extern __off64_t ftello64 (FILE *__stream) ;
extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos);
extern int fsetpos64 (FILE *__stream, __const fpos64_t *__pos);




extern void clearerr (FILE *__stream) __attribute__ ((__nothrow__));

extern int feof (FILE *__stream) __attribute__ ((__nothrow__)) ;

extern int ferror (FILE *__stream) __attribute__ ((__nothrow__)) ;




extern void clearerr_unlocked (FILE *__stream) __attribute__ ((__nothrow__));
extern int feof_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ;
extern int ferror_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ;








extern void perror (__const char *__s);






# 1 "/usr/include/bits/sys_errlist.h" 1 3 4
# 27 "/usr/include/bits/sys_errlist.h" 3 4
extern int sys_nerr;
extern __const char *__const sys_errlist[];


extern int _sys_nerr;
extern __const char *__const _sys_errlist[];
# 829 "/usr/include/stdio.h" 2 3 4




extern int fileno (FILE *__stream) __attribute__ ((__nothrow__)) ;




extern int fileno_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ;
# 848 "/usr/include/stdio.h" 3 4
extern FILE *popen (__const char *__command, __const char *__modes) ;





extern int pclose (FILE *__stream);





extern char *ctermid (char *__s) __attribute__ ((__nothrow__));





extern char *cuserid (char *__s);




struct obstack;


extern int obstack_printf (struct obstack *__restrict __obstack,
      __const char *__restrict __format, ...)
     __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3)));
extern int obstack_vprintf (struct obstack *__restrict __obstack,
       __const char *__restrict __format,
       __gnuc_va_list __args)
     __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 0)));







extern void flockfile (FILE *__stream) __attribute__ ((__nothrow__));



extern int ftrylockfile (FILE *__stream) __attribute__ ((__nothrow__)) ;


extern void funlockfile (FILE *__stream) __attribute__ ((__nothrow__));
# 909 "/usr/include/stdio.h" 3 4
# 1 "/usr/include/bits/stdio.h" 1 3 4
# 36 "/usr/include/bits/stdio.h" 3 4
extern __inline __attribute__ ((__gnu_inline__)) int
vprintf (__const char *__restrict __fmt, __gnuc_va_list __arg)
{
  return vfprintf (stdout, __fmt, __arg);
}



extern __inline __attribute__ ((__gnu_inline__)) int
getchar (void)
{
  return _IO_getc (stdin);
}




extern __inline __attribute__ ((__gnu_inline__)) int
fgetc_unlocked (FILE *__fp)
{
  return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++);
}





extern __inline __attribute__ ((__gnu_inline__)) int
getc_unlocked (FILE *__fp)
{
  return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++);
}


extern __inline __attribute__ ((__gnu_inline__)) int
getchar_unlocked (void)
{
  return (__builtin_expect (((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end), 0) ? __uflow (stdin) : *(unsigned char *) (stdin)->_IO_read_ptr++);
}




extern __inline __attribute__ ((__gnu_inline__)) int
putchar (int __c)
{
  return _IO_putc (__c, stdout);
}




extern __inline __attribute__ ((__gnu_inline__)) int
fputc_unlocked (int __c, FILE *__stream)
{
  return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
}





extern __inline __attribute__ ((__gnu_inline__)) int
putc_unlocked (int __c, FILE *__stream)
{
  return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
}


extern __inline __attribute__ ((__gnu_inline__)) int
putchar_unlocked (int __c)
{
  return (__builtin_expect (((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end), 0) ? __overflow (stdout, (unsigned char) (__c)) : (unsigned char) (*(stdout)->_IO_write_ptr++ = (__c)));
}





extern __inline __attribute__ ((__gnu_inline__)) __ssize_t
getline (char **__lineptr, size_t *__n, FILE *__stream)
{
  return __getdelim (__lineptr, __n, '\n', __stream);
}





extern __inline __attribute__ ((__gnu_inline__)) int
__attribute__ ((__nothrow__)) feof_unlocked (FILE *__stream)
{
  return (((__stream)->_flags & 0x10) != 0);
}


extern __inline __attribute__ ((__gnu_inline__)) int
__attribute__ ((__nothrow__)) ferror_unlocked (FILE *__stream)
{
  return (((__stream)->_flags & 0x20) != 0);
}
# 910 "/usr/include/stdio.h" 2 3 4
# 918 "/usr/include/stdio.h" 3 4

# 45 "/home/meissner/fsf-src/lra/libgfortran/libgfortran.h" 2
# 1 "/home/meissner/fsf-build-ppc64/lra/gcc/include/stddef.h" 1 3 4
# 148 "/home/meissner/fsf-build-ppc64/lra/gcc/include/stddef.h" 3 4
typedef int ptrdiff_t;
# 325 "/home/meissner/fsf-build-ppc64/lra/gcc/include/stddef.h" 3 4
typedef long int wchar_t;
# 46 "/home/meissner/fsf-src/lra/libgfortran/libgfortran.h" 2
# 1 "/home/meissner/fsf-build-ppc64/lra/gcc/include/float.h" 1 3 4
# 47 "/home/meissner/fsf-src/lra/libgfortran/libgfortran.h" 2
# 1 "/home/meissner/fsf-build-ppc64/lra/gcc/include/stdarg.h" 1 3 4
# 48 "/home/meissner/fsf-src/lra/libgfortran/libgfortran.h" 2



# 1 "/usr/include/complex.h" 1 3 4
# 29 "/usr/include/complex.h" 3 4
# 1 "/home/meissner/fsf-build-ppc64/lra/gcc/include-fixed/bits/mathdef.h" 1 3 4
# 30 "/usr/include/complex.h" 2 3 4


# 67 "/usr/include/complex.h" 3 4
# 1 "/usr/include/bits/cmathcalls.h" 1 3 4
# 54 "/usr/include/bits/cmathcalls.h" 3 4
extern double _Complex cacos (double _Complex __z) __attribute__ ((__nothrow__)); extern double _Complex __cacos (double _Complex __z) __attribute__ ((__nothrow__));

extern double _Complex casin (double _Complex __z) __attribute__ ((__nothrow__)); extern double _Complex __casin (double _Complex __z) __attribute__ ((__nothrow__));

extern double _Complex catan (double _Complex __z) __attribute__ ((__nothrow__)); extern double _Complex __catan (double _Complex __z) __attribute__ ((__nothrow__));


extern double _Complex ccos (double _Complex __z) __attribute__ ((__nothrow__)); extern double _Complex __ccos (double _Complex __z) __attribute__ ((__nothrow__));

extern double _Complex csin (double _Complex __z) __attribute__ ((__nothrow__)); extern double _Complex __csin (double _Complex __z) __attribute__ ((__nothrow__));

extern double _Complex ctan (double _Complex __z) __attribute__ ((__nothrow__)); extern double _Complex __ctan (double _Complex __z) __attribute__ ((__nothrow__));





extern double _Complex cacosh (double _Complex __z) __attribute__ ((__nothrow__)); extern double _Complex __cacosh (double _Complex __z) __attribute__ ((__nothrow__));

extern double _Complex casinh (double _Complex __z) __attribute__ ((__nothrow__)); extern double _Complex __casinh (double _Complex __z) __attribute__ ((__nothrow__));

extern double _Complex catanh (double _Complex __z) __attribute__ ((__nothrow__)); extern double _Complex __catanh (double _Complex __z) __attribute__ ((__nothrow__));


extern double _Complex ccosh (double _Complex __z) __attribute__ ((__nothrow__)); extern double _Complex __ccosh (double _Complex __z) __attribute__ ((__nothrow__));

extern double _Complex csinh (double _Complex __z) __attribute__ ((__nothrow__)); extern double _Complex __csinh (double _Complex __z) __attribute__ ((__nothrow__));

extern double _Complex ctanh (double _Complex __z) __attribute__ ((__nothrow__)); extern double _Complex __ctanh (double _Complex __z) __attribute__ ((__nothrow__));





extern double _Complex cexp (double _Complex __z) __attribute__ ((__nothrow__)); extern double _Complex __cexp (double _Complex __z) __attribute__ ((__nothrow__));


extern double _Complex clog (double _Complex __z) __attribute__ ((__nothrow__)); extern double _Complex __clog (double _Complex __z) __attribute__ ((__nothrow__));




extern double _Complex clog10 (double _Complex __z) __attribute__ ((__nothrow__)); extern double _Complex __clog10 (double _Complex __z) __attribute__ ((__nothrow__));





extern double _Complex cpow (double _Complex __x, double _Complex __y) __attribute__ ((__nothrow__)); extern double _Complex __cpow (double _Complex __x, double _Complex __y) __attribute__ ((__nothrow__));


extern double _Complex csqrt (double _Complex __z) __attribute__ ((__nothrow__)); extern double _Complex __csqrt (double _Complex __z) __attribute__ ((__nothrow__));





extern double cabs (double _Complex __z) __attribute__ ((__nothrow__)); extern double __cabs (double _Complex __z) __attribute__ ((__nothrow__));


extern double carg (double _Complex __z) __attribute__ ((__nothrow__)); extern double __carg (double _Complex __z) __attribute__ ((__nothrow__));


extern double _Complex conj (double _Complex __z) __attribute__ ((__nothrow__)); extern double _Complex __conj (double _Complex __z) __attribute__ ((__nothrow__));


extern double _Complex cproj (double _Complex __z) __attribute__ ((__nothrow__)); extern double _Complex __cproj (double _Complex __z) __attribute__ ((__nothrow__));





extern double cimag (double _Complex __z) __attribute__ ((__nothrow__)); extern double __cimag (double _Complex __z) __attribute__ ((__nothrow__));


extern double creal (double _Complex __z) __attribute__ ((__nothrow__)); extern double __creal (double _Complex __z) __attribute__ ((__nothrow__));
# 68 "/usr/include/complex.h" 2 3 4
# 81 "/usr/include/complex.h" 3 4
# 1 "/usr/include/bits/cmathcalls.h" 1 3 4
# 54 "/usr/include/bits/cmathcalls.h" 3 4
extern float _Complex cacosf (float _Complex __z) __attribute__ ((__nothrow__)); extern float _Complex __cacosf (float _Complex __z) __attribute__ ((__nothrow__));

extern float _Complex casinf (float _Complex __z) __attribute__ ((__nothrow__)); extern float _Complex __casinf (float _Complex __z) __attribute__ ((__nothrow__));

extern float _Complex catanf (float _Complex __z) __attribute__ ((__nothrow__)); extern float _Complex __catanf (float _Complex __z) __attribute__ ((__nothrow__));


extern float _Complex ccosf (float _Complex __z) __attribute__ ((__nothrow__)); extern float _Complex __ccosf (float _Complex __z) __attribute__ ((__nothrow__));

extern float _Complex csinf (float _Complex __z) __attribute__ ((__nothrow__)); extern float _Complex __csinf (float _Complex __z) __attribute__ ((__nothrow__));

extern float _Complex ctanf (float _Complex __z) __attribute__ ((__nothrow__)); extern float _Complex __ctanf (float _Complex __z) __attribute__ ((__nothrow__));





extern float _Complex cacoshf (float _Complex __z) __attribute__ ((__nothrow__)); extern float _Complex __cacoshf (float _Complex __z) __attribute__ ((__nothrow__));

extern float _Complex casinhf (float _Complex __z) __attribute__ ((__nothrow__)); extern float _Complex __casinhf (float _Complex __z) __attribute__ ((__nothrow__));

extern float _Complex catanhf (float _Complex __z) __attribute__ ((__nothrow__)); extern float _Complex __catanhf (float _Complex __z) __attribute__ ((__nothrow__));


extern float _Complex ccoshf (float _Complex __z) __attribute__ ((__nothrow__)); extern float _Complex __ccoshf (float _Complex __z) __attribute__ ((__nothrow__));

extern float _Complex csinhf (float _Complex __z) __attribute__ ((__nothrow__)); extern float _Complex __csinhf (float _Complex __z) __attribute__ ((__nothrow__));

extern float _Complex ctanhf (float _Complex __z) __attribute__ ((__nothrow__)); extern float _Complex __ctanhf (float _Complex __z) __attribute__ ((__nothrow__));





extern float _Complex cexpf (float _Complex __z) __attribute__ ((__nothrow__)); extern float _Complex __cexpf (float _Complex __z) __attribute__ ((__nothrow__));


extern float _Complex clogf (float _Complex __z) __attribute__ ((__nothrow__)); extern float _Complex __clogf (float _Complex __z) __attribute__ ((__nothrow__));




extern float _Complex clog10f (float _Complex __z) __attribute__ ((__nothrow__)); extern float _Complex __clog10f (float _Complex __z) __attribute__ ((__nothrow__));





extern float _Complex cpowf (float _Complex __x, float _Complex __y) __attribute__ ((__nothrow__)); extern float _Complex __cpowf (float _Complex __x, float _Complex __y) __attribute__ ((__nothrow__));


extern float _Complex csqrtf (float _Complex __z) __attribute__ ((__nothrow__)); extern float _Complex __csqrtf (float _Complex __z) __attribute__ ((__nothrow__));





extern float cabsf (float _Complex __z) __attribute__ ((__nothrow__)); extern float __cabsf (float _Complex __z) __attribute__ ((__nothrow__));


extern float cargf (float _Complex __z) __attribute__ ((__nothrow__)); extern float __cargf (float _Complex __z) __attribute__ ((__nothrow__));


extern float _Complex conjf (float _Complex __z) __attribute__ ((__nothrow__)); extern float _Complex __conjf (float _Complex __z) __attribute__ ((__nothrow__));


extern float _Complex cprojf (float _Complex __z) __attribute__ ((__nothrow__)); extern float _Complex __cprojf (float _Complex __z) __attribute__ ((__nothrow__));





extern float cimagf (float _Complex __z) __attribute__ ((__nothrow__)); extern float __cimagf (float _Complex __z) __attribute__ ((__nothrow__));


extern float crealf (float _Complex __z) __attribute__ ((__nothrow__)); extern float __crealf (float _Complex __z) __attribute__ ((__nothrow__));
# 82 "/usr/include/complex.h" 2 3 4
# 104 "/usr/include/complex.h" 3 4
# 1 "/usr/include/bits/cmathcalls.h" 1 3 4
# 54 "/usr/include/bits/cmathcalls.h" 3 4
extern long double _Complex cacosl (long double _Complex __z) __attribute__ ((__nothrow__)); extern long double _Complex __cacosl (long double _Complex __z) __attribute__ ((__nothrow__));

extern long double _Complex casinl (long double _Complex __z) __attribute__ ((__nothrow__)); extern long double _Complex __casinl (long double _Complex __z) __attribute__ ((__nothrow__));

extern long double _Complex catanl (long double _Complex __z) __attribute__ ((__nothrow__)); extern long double _Complex __catanl (long double _Complex __z) __attribute__ ((__nothrow__));


extern long double _Complex ccosl (long double _Complex __z) __attribute__ ((__nothrow__)); extern long double _Complex __ccosl (long double _Complex __z) __attribute__ ((__nothrow__));

extern long double _Complex csinl (long double _Complex __z) __attribute__ ((__nothrow__)); extern long double _Complex __csinl (long double _Complex __z) __attribute__ ((__nothrow__));

extern long double _Complex ctanl (long double _Complex __z) __attribute__ ((__nothrow__)); extern long double _Complex __ctanl (long double _Complex __z) __attribute__ ((__nothrow__));





extern long double _Complex cacoshl (long double _Complex __z) __attribute__ ((__nothrow__)); extern long double _Complex __cacoshl (long double _Complex __z) __attribute__ ((__nothrow__));

extern long double _Complex casinhl (long double _Complex __z) __attribute__ ((__nothrow__)); extern long double _Complex __casinhl (long double _Complex __z) __attribute__ ((__nothrow__));

extern long double _Complex catanhl (long double _Complex __z) __attribute__ ((__nothrow__)); extern long double _Complex __catanhl (long double _Complex __z) __attribute__ ((__nothrow__));


extern long double _Complex ccoshl (long double _Complex __z) __attribute__ ((__nothrow__)); extern long double _Complex __ccoshl (long double _Complex __z) __attribute__ ((__nothrow__));

extern long double _Complex csinhl (long double _Complex __z) __attribute__ ((__nothrow__)); extern long double _Complex __csinhl (long double _Complex __z) __attribute__ ((__nothrow__));

extern long double _Complex ctanhl (long double _Complex __z) __attribute__ ((__nothrow__)); extern long double _Complex __ctanhl (long double _Complex __z) __attribute__ ((__nothrow__));





extern long double _Complex cexpl (long double _Complex __z) __attribute__ ((__nothrow__)); extern long double _Complex __cexpl (long double _Complex __z) __attribute__ ((__nothrow__));


extern long double _Complex clogl (long double _Complex __z) __attribute__ ((__nothrow__)); extern long double _Complex __clogl (long double _Complex __z) __attribute__ ((__nothrow__));




extern long double _Complex clog10l (long double _Complex __z) __attribute__ ((__nothrow__)); extern long double _Complex __clog10l (long double _Complex __z) __attribute__ ((__nothrow__));





extern long double _Complex cpowl (long double _Complex __x, long double _Complex __y) __attribute__ ((__nothrow__)); extern long double _Complex __cpowl (long double _Complex __x, long double _Complex __y) __attribute__ ((__nothrow__));


extern long double _Complex csqrtl (long double _Complex __z) __attribute__ ((__nothrow__)); extern long double _Complex __csqrtl (long double _Complex __z) __attribute__ ((__nothrow__));





extern long double cabsl (long double _Complex __z) __attribute__ ((__nothrow__)); extern long double __cabsl (long double _Complex __z) __attribute__ ((__nothrow__));


extern long double cargl (long double _Complex __z) __attribute__ ((__nothrow__)); extern long double __cargl (long double _Complex __z) __attribute__ ((__nothrow__));


extern long double _Complex conjl (long double _Complex __z) __attribute__ ((__nothrow__)); extern long double _Complex __conjl (long double _Complex __z) __attribute__ ((__nothrow__));


extern long double _Complex cprojl (long double _Complex __z) __attribute__ ((__nothrow__)); extern long double _Complex __cprojl (long double _Complex __z) __attribute__ ((__nothrow__));





extern long double cimagl (long double _Complex __z) __attribute__ ((__nothrow__)); extern long double __cimagl (long double _Complex __z) __attribute__ ((__nothrow__));


extern long double creall (long double _Complex __z) __attribute__ ((__nothrow__)); extern long double __creall (long double _Complex __z) __attribute__ ((__nothrow__));
# 105 "/usr/include/complex.h" 2 3 4








# 52 "/home/meissner/fsf-src/lra/libgfortran/libgfortran.h" 2




# 1 "/usr/include/math.h" 1 3 4
# 30 "/usr/include/math.h" 3 4




# 1 "/usr/include/bits/huge_val.h" 1 3 4
# 35 "/usr/include/math.h" 2 3 4

# 1 "/usr/include/bits/huge_valf.h" 1 3 4
# 37 "/usr/include/math.h" 2 3 4
# 1 "/usr/include/bits/huge_vall.h" 1 3 4
# 38 "/usr/include/math.h" 2 3 4


# 1 "/usr/include/bits/inf.h" 1 3 4
# 41 "/usr/include/math.h" 2 3 4


# 1 "/usr/include/bits/nan.h" 1 3 4
# 44 "/usr/include/math.h" 2 3 4



# 1 "/home/meissner/fsf-build-ppc64/lra/gcc/include-fixed/bits/mathdef.h" 1 3 4
# 55 "/home/meissner/fsf-build-ppc64/lra/gcc/include-fixed/bits/mathdef.h" 3 4
typedef double float_t;

typedef double double_t;
# 48 "/usr/include/math.h" 2 3 4
# 71 "/usr/include/math.h" 3 4
# 1 "/usr/include/bits/mathcalls.h" 1 3 4
# 53 "/usr/include/bits/mathcalls.h" 3 4


extern double acos (double __x) __attribute__ ((__nothrow__)); extern double __acos (double __x) __attribute__ ((__nothrow__));

extern double asin (double __x) __attribute__ ((__nothrow__)); extern double __asin (double __x) __attribute__ ((__nothrow__));

extern double atan (double __x) __attribute__ ((__nothrow__)); extern double __atan (double __x) __attribute__ ((__nothrow__));

extern double atan2 (double __y, double __x) __attribute__ ((__nothrow__)); extern double __atan2 (double __y, double __x) __attribute__ ((__nothrow__));


extern double cos (double __x) __attribute__ ((__nothrow__)); extern double __cos (double __x) __attribute__ ((__nothrow__));

extern double sin (double __x) __attribute__ ((__nothrow__)); extern double __sin (double __x) __attribute__ ((__nothrow__));

extern double tan (double __x) __attribute__ ((__nothrow__)); extern double __tan (double __x) __attribute__ ((__nothrow__));




extern double cosh (double __x) __attribute__ ((__nothrow__)); extern double __cosh (double __x) __attribute__ ((__nothrow__));

extern double sinh (double __x) __attribute__ ((__nothrow__)); extern double __sinh (double __x) __attribute__ ((__nothrow__));

extern double tanh (double __x) __attribute__ ((__nothrow__)); extern double __tanh (double __x) __attribute__ ((__nothrow__));




extern void sincos (double __x, double *__sinx, double *__cosx) __attribute__ ((__nothrow__)); extern void __sincos (double __x, double *__sinx, double *__cosx) __attribute__ ((__nothrow__))
                                                           ;





extern double acosh (double __x) __attribute__ ((__nothrow__)); extern double __acosh (double __x) __attribute__ ((__nothrow__));

extern double asinh (double __x) __attribute__ ((__nothrow__)); extern double __asinh (double __x) __attribute__ ((__nothrow__));

extern double atanh (double __x) __attribute__ ((__nothrow__)); extern double __atanh (double __x) __attribute__ ((__nothrow__));







extern double exp (double __x) __attribute__ ((__nothrow__)); extern double __exp (double __x) __attribute__ ((__nothrow__));


extern double frexp (double __x, int *__exponent) __attribute__ ((__nothrow__)); extern double __frexp (double __x, int *__exponent) __attribute__ ((__nothrow__));


extern double ldexp (double __x, int __exponent) __attribute__ ((__nothrow__)); extern double __ldexp (double __x, int __exponent) __attribute__ ((__nothrow__));


extern double log (double __x) __attribute__ ((__nothrow__)); extern double __log (double __x) __attribute__ ((__nothrow__));


extern double log10 (double __x) __attribute__ ((__nothrow__)); extern double __log10 (double __x) __attribute__ ((__nothrow__));


extern double modf (double __x, double *__iptr) __attribute__ ((__nothrow__)); extern double __modf (double __x, double *__iptr) __attribute__ ((__nothrow__));




extern double exp10 (double __x) __attribute__ ((__nothrow__)); extern double __exp10 (double __x) __attribute__ ((__nothrow__));

extern double pow10 (double __x) __attribute__ ((__nothrow__)); extern double __pow10 (double __x) __attribute__ ((__nothrow__));





extern double expm1 (double __x) __attribute__ ((__nothrow__)); extern double __expm1 (double __x) __attribute__ ((__nothrow__));


extern double log1p (double __x) __attribute__ ((__nothrow__)); extern double __log1p (double __x) __attribute__ ((__nothrow__));


extern double logb (double __x) __attribute__ ((__nothrow__)); extern double __logb (double __x) __attribute__ ((__nothrow__));






extern double exp2 (double __x) __attribute__ ((__nothrow__)); extern double __exp2 (double __x) __attribute__ ((__nothrow__));


extern double log2 (double __x) __attribute__ ((__nothrow__)); extern double __log2 (double __x) __attribute__ ((__nothrow__));








extern double pow (double __x, double __y) __attribute__ ((__nothrow__)); extern double __pow (double __x, double __y) __attribute__ ((__nothrow__));


extern double sqrt (double __x) __attribute__ ((__nothrow__)); extern double __sqrt (double __x) __attribute__ ((__nothrow__));





extern double hypot (double __x, double __y) __attribute__ ((__nothrow__)); extern double __hypot (double __x, double __y) __attribute__ ((__nothrow__));






extern double cbrt (double __x) __attribute__ ((__nothrow__)); extern double __cbrt (double __x) __attribute__ ((__nothrow__));








extern double ceil (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __ceil (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));


extern double fabs (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __fabs (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));


extern double floor (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __floor (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));


extern double fmod (double __x, double __y) __attribute__ ((__nothrow__)); extern double __fmod (double __x, double __y) __attribute__ ((__nothrow__));




extern int __isinf (double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));


extern int __finite (double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));





extern int isinf (double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));


extern int finite (double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));


extern double drem (double __x, double __y) __attribute__ ((__nothrow__)); extern double __drem (double __x, double __y) __attribute__ ((__nothrow__));



extern double significand (double __x) __attribute__ ((__nothrow__)); extern double __significand (double __x) __attribute__ ((__nothrow__));





extern double copysign (double __x, double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __copysign (double __x, double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));






extern double nan (__const char *__tagb) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __nan (__const char *__tagb) __attribute__ ((__nothrow__)) __attribute__ ((__const__));





extern int __isnan (double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));



extern int isnan (double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));


extern double j0 (double) __attribute__ ((__nothrow__)); extern double __j0 (double) __attribute__ ((__nothrow__));
extern double j1 (double) __attribute__ ((__nothrow__)); extern double __j1 (double) __attribute__ ((__nothrow__));
extern double jn (int, double) __attribute__ ((__nothrow__)); extern double __jn (int, double) __attribute__ ((__nothrow__));
extern double y0 (double) __attribute__ ((__nothrow__)); extern double __y0 (double) __attribute__ ((__nothrow__));
extern double y1 (double) __attribute__ ((__nothrow__)); extern double __y1 (double) __attribute__ ((__nothrow__));
extern double yn (int, double) __attribute__ ((__nothrow__)); extern double __yn (int, double) __attribute__ ((__nothrow__));






extern double erf (double) __attribute__ ((__nothrow__)); extern double __erf (double) __attribute__ ((__nothrow__));
extern double erfc (double) __attribute__ ((__nothrow__)); extern double __erfc (double) __attribute__ ((__nothrow__));
extern double lgamma (double) __attribute__ ((__nothrow__)); extern double __lgamma (double) __attribute__ ((__nothrow__));






extern double tgamma (double) __attribute__ ((__nothrow__)); extern double __tgamma (double) __attribute__ ((__nothrow__));





extern double gamma (double) __attribute__ ((__nothrow__)); extern double __gamma (double) __attribute__ ((__nothrow__));






extern double lgamma_r (double, int *__signgamp) __attribute__ ((__nothrow__)); extern double __lgamma_r (double, int *__signgamp) __attribute__ ((__nothrow__));







extern double rint (double __x) __attribute__ ((__nothrow__)); extern double __rint (double __x) __attribute__ ((__nothrow__));


extern double nextafter (double __x, double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __nextafter (double __x, double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));

extern double nexttoward (double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __nexttoward (double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));



extern double remainder (double __x, double __y) __attribute__ ((__nothrow__)); extern double __remainder (double __x, double __y) __attribute__ ((__nothrow__));



extern double scalbn (double __x, int __n) __attribute__ ((__nothrow__)); extern double __scalbn (double __x, int __n) __attribute__ ((__nothrow__));



extern int ilogb (double __x) __attribute__ ((__nothrow__)); extern int __ilogb (double __x) __attribute__ ((__nothrow__));




extern double scalbln (double __x, long int __n) __attribute__ ((__nothrow__)); extern double __scalbln (double __x, long int __n) __attribute__ ((__nothrow__));



extern double nearbyint (double __x) __attribute__ ((__nothrow__)); extern double __nearbyint (double __x) __attribute__ ((__nothrow__));



extern double round (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __round (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));



extern double trunc (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __trunc (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));




extern double remquo (double __x, double __y, int *__quo) __attribute__ ((__nothrow__)); extern double __remquo (double __x, double __y, int *__quo) __attribute__ ((__nothrow__));






extern long int lrint (double __x) __attribute__ ((__nothrow__)); extern long int __lrint (double __x) __attribute__ ((__nothrow__));
extern long long int llrint (double __x) __attribute__ ((__nothrow__)); extern long long int __llrint (double __x) __attribute__ ((__nothrow__));



extern long int lround (double __x) __attribute__ ((__nothrow__)); extern long int __lround (double __x) __attribute__ ((__nothrow__));
extern long long int llround (double __x) __attribute__ ((__nothrow__)); extern long long int __llround (double __x) __attribute__ ((__nothrow__));



extern double fdim (double __x, double __y) __attribute__ ((__nothrow__)); extern double __fdim (double __x, double __y) __attribute__ ((__nothrow__));


extern double fmax (double __x, double __y) __attribute__ ((__nothrow__)); extern double __fmax (double __x, double __y) __attribute__ ((__nothrow__));


extern double fmin (double __x, double __y) __attribute__ ((__nothrow__)); extern double __fmin (double __x, double __y) __attribute__ ((__nothrow__));



extern int __fpclassify (double __value) __attribute__ ((__nothrow__))
     __attribute__ ((__const__));


extern int __signbit (double __value) __attribute__ ((__nothrow__))
     __attribute__ ((__const__));



extern double fma (double __x, double __y, double __z) __attribute__ ((__nothrow__)); extern double __fma (double __x, double __y, double __z) __attribute__ ((__nothrow__));








extern double scalb (double __x, double __n) __attribute__ ((__nothrow__)); extern double __scalb (double __x, double __n) __attribute__ ((__nothrow__));
# 72 "/usr/include/math.h" 2 3 4
# 94 "/usr/include/math.h" 3 4
# 1 "/usr/include/bits/mathcalls.h" 1 3 4
# 53 "/usr/include/bits/mathcalls.h" 3 4


extern float acosf (float __x) __attribute__ ((__nothrow__)); extern float __acosf (float __x) __attribute__ ((__nothrow__));

extern float asinf (float __x) __attribute__ ((__nothrow__)); extern float __asinf (float __x) __attribute__ ((__nothrow__));

extern float atanf (float __x) __attribute__ ((__nothrow__)); extern float __atanf (float __x) __attribute__ ((__nothrow__));

extern float atan2f (float __y, float __x) __attribute__ ((__nothrow__)); extern float __atan2f (float __y, float __x) __attribute__ ((__nothrow__));


extern float cosf (float __x) __attribute__ ((__nothrow__)); extern float __cosf (float __x) __attribute__ ((__nothrow__));

extern float sinf (float __x) __attribute__ ((__nothrow__)); extern float __sinf (float __x) __attribute__ ((__nothrow__));

extern float tanf (float __x) __attribute__ ((__nothrow__)); extern float __tanf (float __x) __attribute__ ((__nothrow__));




extern float coshf (float __x) __attribute__ ((__nothrow__)); extern float __coshf (float __x) __attribute__ ((__nothrow__));

extern float sinhf (float __x) __attribute__ ((__nothrow__)); extern float __sinhf (float __x) __attribute__ ((__nothrow__));

extern float tanhf (float __x) __attribute__ ((__nothrow__)); extern float __tanhf (float __x) __attribute__ ((__nothrow__));




extern void sincosf (float __x, float *__sinx, float *__cosx) __attribute__ ((__nothrow__)); extern void __sincosf (float __x, float *__sinx, float *__cosx) __attribute__ ((__nothrow__))
                                                           ;





extern float acoshf (float __x) __attribute__ ((__nothrow__)); extern float __acoshf (float __x) __attribute__ ((__nothrow__));

extern float asinhf (float __x) __attribute__ ((__nothrow__)); extern float __asinhf (float __x) __attribute__ ((__nothrow__));

extern float atanhf (float __x) __attribute__ ((__nothrow__)); extern float __atanhf (float __x) __attribute__ ((__nothrow__));







extern float expf (float __x) __attribute__ ((__nothrow__)); extern float __expf (float __x) __attribute__ ((__nothrow__));


extern float frexpf (float __x, int *__exponent) __attribute__ ((__nothrow__)); extern float __frexpf (float __x, int *__exponent) __attribute__ ((__nothrow__));


extern float ldexpf (float __x, int __exponent) __attribute__ ((__nothrow__)); extern float __ldexpf (float __x, int __exponent) __attribute__ ((__nothrow__));


extern float logf (float __x) __attribute__ ((__nothrow__)); extern float __logf (float __x) __attribute__ ((__nothrow__));


extern float log10f (float __x) __attribute__ ((__nothrow__)); extern float __log10f (float __x) __attribute__ ((__nothrow__));


extern float modff (float __x, float *__iptr) __attribute__ ((__nothrow__)); extern float __modff (float __x, float *__iptr) __attribute__ ((__nothrow__));




extern float exp10f (float __x) __attribute__ ((__nothrow__)); extern float __exp10f (float __x) __attribute__ ((__nothrow__));

extern float pow10f (float __x) __attribute__ ((__nothrow__)); extern float __pow10f (float __x) __attribute__ ((__nothrow__));





extern float expm1f (float __x) __attribute__ ((__nothrow__)); extern float __expm1f (float __x) __attribute__ ((__nothrow__));


extern float log1pf (float __x) __attribute__ ((__nothrow__)); extern float __log1pf (float __x) __attribute__ ((__nothrow__));


extern float logbf (float __x) __attribute__ ((__nothrow__)); extern float __logbf (float __x) __attribute__ ((__nothrow__));






extern float exp2f (float __x) __attribute__ ((__nothrow__)); extern float __exp2f (float __x) __attribute__ ((__nothrow__));


extern float log2f (float __x) __attribute__ ((__nothrow__)); extern float __log2f (float __x) __attribute__ ((__nothrow__));








extern float powf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __powf (float __x, float __y) __attribute__ ((__nothrow__));


extern float sqrtf (float __x) __attribute__ ((__nothrow__)); extern float __sqrtf (float __x) __attribute__ ((__nothrow__));





extern float hypotf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __hypotf (float __x, float __y) __attribute__ ((__nothrow__));






extern float cbrtf (float __x) __attribute__ ((__nothrow__)); extern float __cbrtf (float __x) __attribute__ ((__nothrow__));








extern float ceilf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __ceilf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));


extern float fabsf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __fabsf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));


extern float floorf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __floorf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));


extern float fmodf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __fmodf (float __x, float __y) __attribute__ ((__nothrow__));




extern int __isinff (float __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));


extern int __finitef (float __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));





extern int isinff (float __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));


extern int finitef (float __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));


extern float dremf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __dremf (float __x, float __y) __attribute__ ((__nothrow__));



extern float significandf (float __x) __attribute__ ((__nothrow__)); extern float __significandf (float __x) __attribute__ ((__nothrow__));





extern float copysignf (float __x, float __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __copysignf (float __x, float __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));






extern float nanf (__const char *__tagb) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __nanf (__const char *__tagb) __attribute__ ((__nothrow__)) __attribute__ ((__const__));





extern int __isnanf (float __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));



extern int isnanf (float __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));


extern float j0f (float) __attribute__ ((__nothrow__)); extern float __j0f (float) __attribute__ ((__nothrow__));
extern float j1f (float) __attribute__ ((__nothrow__)); extern float __j1f (float) __attribute__ ((__nothrow__));
extern float jnf (int, float) __attribute__ ((__nothrow__)); extern float __jnf (int, float) __attribute__ ((__nothrow__));
extern float y0f (float) __attribute__ ((__nothrow__)); extern float __y0f (float) __attribute__ ((__nothrow__));
extern float y1f (float) __attribute__ ((__nothrow__)); extern float __y1f (float) __attribute__ ((__nothrow__));
extern float ynf (int, float) __attribute__ ((__nothrow__)); extern float __ynf (int, float) __attribute__ ((__nothrow__));






extern float erff (float) __attribute__ ((__nothrow__)); extern float __erff (float) __attribute__ ((__nothrow__));
extern float erfcf (float) __attribute__ ((__nothrow__)); extern float __erfcf (float) __attribute__ ((__nothrow__));
extern float lgammaf (float) __attribute__ ((__nothrow__)); extern float __lgammaf (float) __attribute__ ((__nothrow__));






extern float tgammaf (float) __attribute__ ((__nothrow__)); extern float __tgammaf (float) __attribute__ ((__nothrow__));





extern float gammaf (float) __attribute__ ((__nothrow__)); extern float __gammaf (float) __attribute__ ((__nothrow__));






extern float lgammaf_r (float, int *__signgamp) __attribute__ ((__nothrow__)); extern float __lgammaf_r (float, int *__signgamp) __attribute__ ((__nothrow__));







extern float rintf (float __x) __attribute__ ((__nothrow__)); extern float __rintf (float __x) __attribute__ ((__nothrow__));


extern float nextafterf (float __x, float __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __nextafterf (float __x, float __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));

extern float nexttowardf (float __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __nexttowardf (float __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));



extern float remainderf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __remainderf (float __x, float __y) __attribute__ ((__nothrow__));



extern float scalbnf (float __x, int __n) __attribute__ ((__nothrow__)); extern float __scalbnf (float __x, int __n) __attribute__ ((__nothrow__));



extern int ilogbf (float __x) __attribute__ ((__nothrow__)); extern int __ilogbf (float __x) __attribute__ ((__nothrow__));




extern float scalblnf (float __x, long int __n) __attribute__ ((__nothrow__)); extern float __scalblnf (float __x, long int __n) __attribute__ ((__nothrow__));



extern float nearbyintf (float __x) __attribute__ ((__nothrow__)); extern float __nearbyintf (float __x) __attribute__ ((__nothrow__));



extern float roundf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __roundf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));



extern float truncf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __truncf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));




extern float remquof (float __x, float __y, int *__quo) __attribute__ ((__nothrow__)); extern float __remquof (float __x, float __y, int *__quo) __attribute__ ((__nothrow__));






extern long int lrintf (float __x) __attribute__ ((__nothrow__)); extern long int __lrintf (float __x) __attribute__ ((__nothrow__));
extern long long int llrintf (float __x) __attribute__ ((__nothrow__)); extern long long int __llrintf (float __x) __attribute__ ((__nothrow__));



extern long int lroundf (float __x) __attribute__ ((__nothrow__)); extern long int __lroundf (float __x) __attribute__ ((__nothrow__));
extern long long int llroundf (float __x) __attribute__ ((__nothrow__)); extern long long int __llroundf (float __x) __attribute__ ((__nothrow__));



extern float fdimf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __fdimf (float __x, float __y) __attribute__ ((__nothrow__));


extern float fmaxf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __fmaxf (float __x, float __y) __attribute__ ((__nothrow__));


extern float fminf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __fminf (float __x, float __y) __attribute__ ((__nothrow__));



extern int __fpclassifyf (float __value) __attribute__ ((__nothrow__))
     __attribute__ ((__const__));


extern int __signbitf (float __value) __attribute__ ((__nothrow__))
     __attribute__ ((__const__));



extern float fmaf (float __x, float __y, float __z) __attribute__ ((__nothrow__)); extern float __fmaf (float __x, float __y, float __z) __attribute__ ((__nothrow__));








extern float scalbf (float __x, float __n) __attribute__ ((__nothrow__)); extern float __scalbf (float __x, float __n) __attribute__ ((__nothrow__));
# 95 "/usr/include/math.h" 2 3 4
# 141 "/usr/include/math.h" 3 4
# 1 "/usr/include/bits/mathcalls.h" 1 3 4
# 53 "/usr/include/bits/mathcalls.h" 3 4


extern long double acosl (long double __x) __attribute__ ((__nothrow__)); extern long double __acosl (long double __x) __attribute__ ((__nothrow__));

extern long double asinl (long double __x) __attribute__ ((__nothrow__)); extern long double __asinl (long double __x) __attribute__ ((__nothrow__));

extern long double atanl (long double __x) __attribute__ ((__nothrow__)); extern long double __atanl (long double __x) __attribute__ ((__nothrow__));

extern long double atan2l (long double __y, long double __x) __attribute__ ((__nothrow__)); extern long double __atan2l (long double __y, long double __x) __attribute__ ((__nothrow__));


extern long double cosl (long double __x) __attribute__ ((__nothrow__)); extern long double __cosl (long double __x) __attribute__ ((__nothrow__));

extern long double sinl (long double __x) __attribute__ ((__nothrow__)); extern long double __sinl (long double __x) __attribute__ ((__nothrow__));

extern long double tanl (long double __x) __attribute__ ((__nothrow__)); extern long double __tanl (long double __x) __attribute__ ((__nothrow__));




extern long double coshl (long double __x) __attribute__ ((__nothrow__)); extern long double __coshl (long double __x) __attribute__ ((__nothrow__));

extern long double sinhl (long double __x) __attribute__ ((__nothrow__)); extern long double __sinhl (long double __x) __attribute__ ((__nothrow__));

extern long double tanhl (long double __x) __attribute__ ((__nothrow__)); extern long double __tanhl (long double __x) __attribute__ ((__nothrow__));




extern void sincosl (long double __x, long double *__sinx, long double *__cosx) __attribute__ ((__nothrow__)); extern void __sincosl (long double __x, long double *__sinx, long double *__cosx) __attribute__ ((__nothrow__))
                                                           ;





extern long double acoshl (long double __x) __attribute__ ((__nothrow__)); extern long double __acoshl (long double __x) __attribute__ ((__nothrow__));

extern long double asinhl (long double __x) __attribute__ ((__nothrow__)); extern long double __asinhl (long double __x) __attribute__ ((__nothrow__));

extern long double atanhl (long double __x) __attribute__ ((__nothrow__)); extern long double __atanhl (long double __x) __attribute__ ((__nothrow__));







extern long double expl (long double __x) __attribute__ ((__nothrow__)); extern long double __expl (long double __x) __attribute__ ((__nothrow__));


extern long double frexpl (long double __x, int *__exponent) __attribute__ ((__nothrow__)); extern long double __frexpl (long double __x, int *__exponent) __attribute__ ((__nothrow__));


extern long double ldexpl (long double __x, int __exponent) __attribute__ ((__nothrow__)); extern long double __ldexpl (long double __x, int __exponent) __attribute__ ((__nothrow__));


extern long double logl (long double __x) __attribute__ ((__nothrow__)); extern long double __logl (long double __x) __attribute__ ((__nothrow__));


extern long double log10l (long double __x) __attribute__ ((__nothrow__)); extern long double __log10l (long double __x) __attribute__ ((__nothrow__));


extern long double modfl (long double __x, long double *__iptr) __attribute__ ((__nothrow__)); extern long double __modfl (long double __x, long double *__iptr) __attribute__ ((__nothrow__));




extern long double exp10l (long double __x) __attribute__ ((__nothrow__)); extern long double __exp10l (long double __x) __attribute__ ((__nothrow__));

extern long double pow10l (long double __x) __attribute__ ((__nothrow__)); extern long double __pow10l (long double __x) __attribute__ ((__nothrow__));





extern long double expm1l (long double __x) __attribute__ ((__nothrow__)); extern long double __expm1l (long double __x) __attribute__ ((__nothrow__));


extern long double log1pl (long double __x) __attribute__ ((__nothrow__)); extern long double __log1pl (long double __x) __attribute__ ((__nothrow__));


extern long double logbl (long double __x) __attribute__ ((__nothrow__)); extern long double __logbl (long double __x) __attribute__ ((__nothrow__));






extern long double exp2l (long double __x) __attribute__ ((__nothrow__)); extern long double __exp2l (long double __x) __attribute__ ((__nothrow__));


extern long double log2l (long double __x) __attribute__ ((__nothrow__)); extern long double __log2l (long double __x) __attribute__ ((__nothrow__));








extern long double powl (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __powl (long double __x, long double __y) __attribute__ ((__nothrow__));


extern long double sqrtl (long double __x) __attribute__ ((__nothrow__)); extern long double __sqrtl (long double __x) __attribute__ ((__nothrow__));





extern long double hypotl (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __hypotl (long double __x, long double __y) __attribute__ ((__nothrow__));






extern long double cbrtl (long double __x) __attribute__ ((__nothrow__)); extern long double __cbrtl (long double __x) __attribute__ ((__nothrow__));








extern long double ceill (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __ceill (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));


extern long double fabsl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __fabsl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));


extern long double floorl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __floorl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));


extern long double fmodl (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __fmodl (long double __x, long double __y) __attribute__ ((__nothrow__));




extern int __isinfl (long double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));


extern int __finitel (long double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));





extern int isinfl (long double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));


extern int finitel (long double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));


extern long double dreml (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __dreml (long double __x, long double __y) __attribute__ ((__nothrow__));



extern long double significandl (long double __x) __attribute__ ((__nothrow__)); extern long double __significandl (long double __x) __attribute__ ((__nothrow__));





extern long double copysignl (long double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __copysignl (long double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));






extern long double nanl (__const char *__tagb) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __nanl (__const char *__tagb) __attribute__ ((__nothrow__)) __attribute__ ((__const__));





extern int __isnanl (long double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));



extern int isnanl (long double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));


extern long double j0l (long double) __attribute__ ((__nothrow__)); extern long double __j0l (long double) __attribute__ ((__nothrow__));
extern long double j1l (long double) __attribute__ ((__nothrow__)); extern long double __j1l (long double) __attribute__ ((__nothrow__));
extern long double jnl (int, long double) __attribute__ ((__nothrow__)); extern long double __jnl (int, long double) __attribute__ ((__nothrow__));
extern long double y0l (long double) __attribute__ ((__nothrow__)); extern long double __y0l (long double) __attribute__ ((__nothrow__));
extern long double y1l (long double) __attribute__ ((__nothrow__)); extern long double __y1l (long double) __attribute__ ((__nothrow__));
extern long double ynl (int, long double) __attribute__ ((__nothrow__)); extern long double __ynl (int, long double) __attribute__ ((__nothrow__));






extern long double erfl (long double) __attribute__ ((__nothrow__)); extern long double __erfl (long double) __attribute__ ((__nothrow__));
extern long double erfcl (long double) __attribute__ ((__nothrow__)); extern long double __erfcl (long double) __attribute__ ((__nothrow__));
extern long double lgammal (long double) __attribute__ ((__nothrow__)); extern long double __lgammal (long double) __attribute__ ((__nothrow__));






extern long double tgammal (long double) __attribute__ ((__nothrow__)); extern long double __tgammal (long double) __attribute__ ((__nothrow__));





extern long double gammal (long double) __attribute__ ((__nothrow__)); extern long double __gammal (long double) __attribute__ ((__nothrow__));






extern long double lgammal_r (long double, int *__signgamp) __attribute__ ((__nothrow__)); extern long double __lgammal_r (long double, int *__signgamp) __attribute__ ((__nothrow__));







extern long double rintl (long double __x) __attribute__ ((__nothrow__)); extern long double __rintl (long double __x) __attribute__ ((__nothrow__));


extern long double nextafterl (long double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __nextafterl (long double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));

extern long double nexttowardl (long double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __nexttowardl (long double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));



extern long double remainderl (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __remainderl (long double __x, long double __y) __attribute__ ((__nothrow__));



extern long double scalbnl (long double __x, int __n) __attribute__ ((__nothrow__)); extern long double __scalbnl (long double __x, int __n) __attribute__ ((__nothrow__));



extern int ilogbl (long double __x) __attribute__ ((__nothrow__)); extern int __ilogbl (long double __x) __attribute__ ((__nothrow__));




extern long double scalblnl (long double __x, long int __n) __attribute__ ((__nothrow__)); extern long double __scalblnl (long double __x, long int __n) __attribute__ ((__nothrow__));



extern long double nearbyintl (long double __x) __attribute__ ((__nothrow__)); extern long double __nearbyintl (long double __x) __attribute__ ((__nothrow__));



extern long double roundl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __roundl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));



extern long double truncl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __truncl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));




extern long double remquol (long double __x, long double __y, int *__quo) __attribute__ ((__nothrow__)); extern long double __remquol (long double __x, long double __y, int *__quo) __attribute__ ((__nothrow__));






extern long int lrintl (long double __x) __attribute__ ((__nothrow__)); extern long int __lrintl (long double __x) __attribute__ ((__nothrow__));
extern long long int llrintl (long double __x) __attribute__ ((__nothrow__)); extern long long int __llrintl (long double __x) __attribute__ ((__nothrow__));



extern long int lroundl (long double __x) __attribute__ ((__nothrow__)); extern long int __lroundl (long double __x) __attribute__ ((__nothrow__));
extern long long int llroundl (long double __x) __attribute__ ((__nothrow__)); extern long long int __llroundl (long double __x) __attribute__ ((__nothrow__));



extern long double fdiml (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __fdiml (long double __x, long double __y) __attribute__ ((__nothrow__));


extern long double fmaxl (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __fmaxl (long double __x, long double __y) __attribute__ ((__nothrow__));


extern long double fminl (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __fminl (long double __x, long double __y) __attribute__ ((__nothrow__));



extern int __fpclassifyl (long double __value) __attribute__ ((__nothrow__))
     __attribute__ ((__const__));


extern int __signbitl (long double __value) __attribute__ ((__nothrow__))
     __attribute__ ((__const__));



extern long double fmal (long double __x, long double __y, long double __z) __attribute__ ((__nothrow__)); extern long double __fmal (long double __x, long double __y, long double __z) __attribute__ ((__nothrow__));








extern long double scalbl (long double __x, long double __n) __attribute__ ((__nothrow__)); extern long double __scalbl (long double __x, long double __n) __attribute__ ((__nothrow__));
# 142 "/usr/include/math.h" 2 3 4
# 157 "/usr/include/math.h" 3 4
extern int signgam;
# 198 "/usr/include/math.h" 3 4
enum
  {
    FP_NAN,

    FP_INFINITE,

    FP_ZERO,

    FP_SUBNORMAL,

    FP_NORMAL

  };
# 291 "/usr/include/math.h" 3 4
typedef enum
{
  _IEEE_ = -1,
  _SVID_,
  _XOPEN_,
  _POSIX_,
  _ISOC_
} _LIB_VERSION_TYPE;




extern _LIB_VERSION_TYPE _LIB_VERSION;
# 316 "/usr/include/math.h" 3 4
struct exception

  {
    int type;
    char *name;
    double arg1;
    double arg2;
    double retval;
  };




extern int matherr (struct exception *__exc);
# 416 "/usr/include/math.h" 3 4
# 1 "/usr/include/bits/mathinline.h" 1 3 4
# 63 "/usr/include/bits/mathinline.h" 3 4
extern __inline __attribute__ ((__gnu_inline__)) int
__attribute__ ((__nothrow__)) __signbitf (float __x)
{
  __extension__ union { float __f; int __i; } __u = { __f: __x };
  return __u.__i < 0;
}
extern __inline __attribute__ ((__gnu_inline__)) int
__attribute__ ((__nothrow__)) __signbit (double __x)
{
  __extension__ union { double __d; int __i[2]; } __u = { __d: __x };
  return __u.__i[0] < 0;
}

extern __inline __attribute__ ((__gnu_inline__)) int
__attribute__ ((__nothrow__)) __signbitl (long double __x)
{
  __extension__ union { long double __d; int __i[4]; } __u = { __d: __x };
  return __u.__i[0] < 0;
}
# 91 "/usr/include/bits/mathinline.h" 3 4
extern __inline __attribute__ ((__gnu_inline__)) long int lrint (double __x) __attribute__ ((__nothrow__));
extern __inline __attribute__ ((__gnu_inline__)) long int
__attribute__ ((__nothrow__)) lrint (double __x)
{
  union {
    double __d;
    int __ll[2];
  } __u;
  __asm__ ("fctiw %0,%1" : "=f"(__u.__d) : "f"(__x));
  return __u.__ll[1];
}

extern __inline __attribute__ ((__gnu_inline__)) long int lrintf (float __x) __attribute__ ((__nothrow__));
extern __inline __attribute__ ((__gnu_inline__)) long int
__attribute__ ((__nothrow__)) lrintf (float __x)
{
  union {
    double __d;
    int __ll[2];
  } __u;
  __asm__ ("fctiw %0,%1" : "=f"(__u.__d) : "f"(__x));
  return __u.__ll[1];
}


extern __inline __attribute__ ((__gnu_inline__)) double fdim (double __x, double __y) __attribute__ ((__nothrow__));
extern __inline __attribute__ ((__gnu_inline__)) double
__attribute__ ((__nothrow__)) fdim (double __x, double __y)
{
  return __x <= __y ? 0 : __x - __y;
}

extern __inline __attribute__ ((__gnu_inline__)) float fdimf (float __x, float __y) __attribute__ ((__nothrow__));
extern __inline __attribute__ ((__gnu_inline__)) float
__attribute__ ((__nothrow__)) fdimf (float __x, float __y)
{
  return __x <= __y ? 0 : __x - __y;
}
# 417 "/usr/include/math.h" 2 3 4
# 472 "/usr/include/math.h" 3 4

# 57 "/home/meissner/fsf-src/lra/libgfortran/libgfortran.h" 2
# 77 "/home/meissner/fsf-src/lra/libgfortran/libgfortran.h"
# 1 "/home/meissner/fsf-src/lra/libgfortran/../gcc/fortran/libgfortran.h" 1
# 61 "/home/meissner/fsf-src/lra/libgfortran/../gcc/fortran/libgfortran.h"
typedef enum
{
  GFC_CONVERT_NONE = -1,
  GFC_CONVERT_NATIVE = 0,
  GFC_CONVERT_SWAP,
  GFC_CONVERT_BIG,
  GFC_CONVERT_LITTLE
}
unit_convert;



typedef enum
{
  LIBERROR_FIRST = -3,
  LIBERROR_EOR = -2,
  LIBERROR_END = -1,
  LIBERROR_OK = 0,
  LIBERROR_OS = 5000,
  LIBERROR_OPTION_CONFLICT,
  LIBERROR_BAD_OPTION,
  LIBERROR_MISSING_OPTION,
  LIBERROR_ALREADY_OPEN,
  LIBERROR_BAD_UNIT,
  LIBERROR_FORMAT,
  LIBERROR_BAD_ACTION,
  LIBERROR_ENDFILE,
  LIBERROR_BAD_US,
  LIBERROR_READ_VALUE,
  LIBERROR_READ_OVERFLOW,
  LIBERROR_INTERNAL,
  LIBERROR_INTERNAL_UNIT,
  LIBERROR_ALLOCATION,
  LIBERROR_DIRECT_EOR,
  LIBERROR_SHORT_RECORD,
  LIBERROR_CORRUPT_FILE,
  LIBERROR_INQUIRE_INTERNAL_UNIT,
  LIBERROR_LAST
}
libgfortran_error_codes;


typedef enum
{
  GFC_STAT_UNLOCKED = 0,
  GFC_STAT_LOCKED,
  GFC_STAT_LOCKED_OTHER_IMAGE,
  GFC_STAT_STOPPED_IMAGE = 6000
}
libgfortran_stat_codes;
# 130 "/home/meissner/fsf-src/lra/libgfortran/../gcc/fortran/libgfortran.h"
typedef enum
{ BT_UNKNOWN = 0, BT_INTEGER, BT_LOGICAL, BT_REAL, BT_COMPLEX,
  BT_DERIVED, BT_CHARACTER, BT_CLASS, BT_PROCEDURE, BT_HOLLERITH, BT_VOID,
  BT_ASSUMED
}
bt;
# 78 "/home/meissner/fsf-src/lra/libgfortran/libgfortran.h" 2

# 1 "/home/meissner/fsf-src/lra/libgfortran/c99_protos.h" 1
# 80 "/home/meissner/fsf-src/lra/libgfortran/libgfortran.h" 2





# 1 "./gstdint.h" 1





# 1 "/usr/include/sys/types.h" 1 3 4
# 29 "/usr/include/sys/types.h" 3 4






typedef __u_char u_char;
typedef __u_short u_short;
typedef __u_int u_int;
typedef __u_long u_long;
typedef __quad_t quad_t;
typedef __u_quad_t u_quad_t;
typedef __fsid_t fsid_t;




typedef __loff_t loff_t;





typedef __ino64_t ino_t;




typedef __ino64_t ino64_t;




typedef __dev_t dev_t;




typedef __gid_t gid_t;




typedef __mode_t mode_t;




typedef __nlink_t nlink_t;




typedef __uid_t uid_t;







typedef __off64_t off_t;




typedef __off64_t off64_t;




typedef __pid_t pid_t;




typedef __id_t id_t;




typedef __ssize_t ssize_t;





typedef __daddr_t daddr_t;
typedef __caddr_t caddr_t;





typedef __key_t key_t;
# 133 "/usr/include/sys/types.h" 3 4
# 1 "/usr/include/time.h" 1 3 4
# 58 "/usr/include/time.h" 3 4


typedef __clock_t clock_t;



# 74 "/usr/include/time.h" 3 4


typedef __time_t time_t;



# 92 "/usr/include/time.h" 3 4
typedef __clockid_t clockid_t;
# 104 "/usr/include/time.h" 3 4
typedef __timer_t timer_t;
# 134 "/usr/include/sys/types.h" 2 3 4



typedef __useconds_t useconds_t;



typedef __suseconds_t suseconds_t;





# 1 "/home/meissner/fsf-build-ppc64/lra/gcc/include/stddef.h" 1 3 4
# 148 "/usr/include/sys/types.h" 2 3 4



typedef unsigned long int ulong;
typedef unsigned short int ushort;
typedef unsigned int uint;
# 195 "/usr/include/sys/types.h" 3 4
typedef int int8_t __attribute__ ((__mode__ (__QI__)));
typedef int int16_t __attribute__ ((__mode__ (__HI__)));
typedef int int32_t __attribute__ ((__mode__ (__SI__)));
typedef int int64_t __attribute__ ((__mode__ (__DI__)));


typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__)));
typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__)));
typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__)));
typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__)));

typedef int register_t __attribute__ ((__mode__ (__word__)));
# 217 "/usr/include/sys/types.h" 3 4
# 1 "/usr/include/endian.h" 1 3 4
# 37 "/usr/include/endian.h" 3 4
# 1 "/usr/include/bits/endian.h" 1 3 4
# 38 "/usr/include/endian.h" 2 3 4
# 61 "/usr/include/endian.h" 3 4
# 1 "/usr/include/bits/byteswap.h" 1 3 4
# 62 "/usr/include/endian.h" 2 3 4
# 218 "/usr/include/sys/types.h" 2 3 4


# 1 "/usr/include/sys/select.h" 1 3 4
# 31 "/usr/include/sys/select.h" 3 4
# 1 "/usr/include/bits/select.h" 1 3 4
# 32 "/usr/include/sys/select.h" 2 3 4


# 1 "/usr/include/bits/sigset.h" 1 3 4
# 24 "/usr/include/bits/sigset.h" 3 4
typedef int __sig_atomic_t;




typedef struct
  {
    unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))];
  } __sigset_t;
# 35 "/usr/include/sys/select.h" 2 3 4



typedef __sigset_t sigset_t;





# 1 "/usr/include/time.h" 1 3 4
# 120 "/usr/include/time.h" 3 4
struct timespec
  {
    __time_t tv_sec;
    long int tv_nsec;
  };
# 45 "/usr/include/sys/select.h" 2 3 4

# 1 "/usr/include/bits/time.h" 1 3 4
# 69 "/usr/include/bits/time.h" 3 4
struct timeval
  {
    __time_t tv_sec;
    __suseconds_t tv_usec;
  };
# 47 "/usr/include/sys/select.h" 2 3 4
# 55 "/usr/include/sys/select.h" 3 4
typedef long int __fd_mask;
# 67 "/usr/include/sys/select.h" 3 4
typedef struct
  {



    __fd_mask fds_bits[1024 / (8 * (int) sizeof (__fd_mask))];





  } fd_set;






typedef __fd_mask fd_mask;
# 99 "/usr/include/sys/select.h" 3 4

# 109 "/usr/include/sys/select.h" 3 4
extern int select (int __nfds, fd_set *__restrict __readfds,
     fd_set *__restrict __writefds,
     fd_set *__restrict __exceptfds,
     struct timeval *__restrict __timeout);
# 121 "/usr/include/sys/select.h" 3 4
extern int pselect (int __nfds, fd_set *__restrict __readfds,
      fd_set *__restrict __writefds,
      fd_set *__restrict __exceptfds,
      const struct timespec *__restrict __timeout,
      const __sigset_t *__restrict __sigmask);



# 221 "/usr/include/sys/types.h" 2 3 4


# 1 "/usr/include/sys/sysmacros.h" 1 3 4
# 30 "/usr/include/sys/sysmacros.h" 3 4
__extension__
extern unsigned int gnu_dev_major (unsigned long long int __dev)
     __attribute__ ((__nothrow__));
__extension__
extern unsigned int gnu_dev_minor (unsigned long long int __dev)
     __attribute__ ((__nothrow__));
__extension__
extern unsigned long long int gnu_dev_makedev (unsigned int __major,
            unsigned int __minor)
     __attribute__ ((__nothrow__));


__extension__ extern __inline __attribute__ ((__gnu_inline__)) unsigned int
__attribute__ ((__nothrow__)) gnu_dev_major (unsigned long long int __dev)
{
  return ((__dev >> 8) & 0xfff) | ((unsigned int) (__dev >> 32) & ~0xfff);
}

__extension__ extern __inline __attribute__ ((__gnu_inline__)) unsigned int
__attribute__ ((__nothrow__)) gnu_dev_minor (unsigned long long int __dev)
{
  return (__dev & 0xff) | ((unsigned int) (__dev >> 12) & ~0xff);
}

__extension__ extern __inline __attribute__ ((__gnu_inline__)) unsigned long long int
__attribute__ ((__nothrow__)) gnu_dev_makedev (unsigned int __major, unsigned int __minor)
{
  return ((__minor & 0xff) | ((__major & 0xfff) << 8)
   | (((unsigned long long int) (__minor & ~0xff)) << 12)
   | (((unsigned long long int) (__major & ~0xfff)) << 32));
}
# 224 "/usr/include/sys/types.h" 2 3 4




typedef __blksize_t blksize_t;
# 248 "/usr/include/sys/types.h" 3 4
typedef __blkcnt64_t blkcnt_t;



typedef __fsblkcnt64_t fsblkcnt_t;



typedef __fsfilcnt64_t fsfilcnt_t;





typedef __blkcnt64_t blkcnt64_t;
typedef __fsblkcnt64_t fsblkcnt64_t;
typedef __fsfilcnt64_t fsfilcnt64_t;





# 1 "/usr/include/bits/pthreadtypes.h" 1 3 4
# 24 "/usr/include/bits/pthreadtypes.h" 3 4
# 1 "/usr/include/bits/wordsize.h" 1 3 4
# 25 "/usr/include/bits/pthreadtypes.h" 2 3 4
# 51 "/usr/include/bits/pthreadtypes.h" 3 4
typedef unsigned long int pthread_t;


typedef union
{
  char __size[36];
  long int __align;
} pthread_attr_t;
# 68 "/usr/include/bits/pthreadtypes.h" 3 4
typedef struct __pthread_internal_slist
{
  struct __pthread_internal_slist *__next;
} __pthread_slist_t;





typedef union
{
  struct __pthread_mutex_s
  {
    int __lock;
    unsigned int __count;
    int __owner;





    int __kind;





    unsigned int __nusers;
    __extension__ union
    {
      int __spins;
      __pthread_slist_t __list;
    };

  } __data;
  char __size[24];
  long int __align;
} pthread_mutex_t;

typedef union
{
  char __size[4];
  int __align;
} pthread_mutexattr_t;




typedef union
{
  struct
  {
    int __lock;
    unsigned int __futex;
    __extension__ unsigned long long int __total_seq;
    __extension__ unsigned long long int __wakeup_seq;
    __extension__ unsigned long long int __woken_seq;
    void *__mutex;
    unsigned int __nwaiters;
    unsigned int __broadcast_seq;
  } __data;
  char __size[48];
  __extension__ long long int __align;
} pthread_cond_t;

typedef union
{
  char __size[4];
  int __align;
} pthread_condattr_t;



typedef unsigned int pthread_key_t;



typedef int pthread_once_t;





typedef union
{
# 171 "/usr/include/bits/pthreadtypes.h" 3 4
  struct
  {
    int __lock;
    unsigned int __nr_readers;
    unsigned int __readers_wakeup;
    unsigned int __writer_wakeup;
    unsigned int __nr_readers_queued;
    unsigned int __nr_writers_queued;
    unsigned char __pad1;
    unsigned char __pad2;
    unsigned char __shared;


    unsigned char __flags;
    int __writer;
  } __data;

  char __size[32];
  long int __align;
} pthread_rwlock_t;

typedef union
{
  char __size[8];
  long int __align;
} pthread_rwlockattr_t;





typedef volatile int pthread_spinlock_t;




typedef union
{
  char __size[20];
  long int __align;
} pthread_barrier_t;

typedef union
{
  char __size[4];
  int __align;
} pthread_barrierattr_t;
# 271 "/usr/include/sys/types.h" 2 3 4



# 7 "./gstdint.h" 2
# 1 "/home/meissner/fsf-build-ppc64/lra/gcc/include/stdint.h" 1 3 4
# 9 "/home/meissner/fsf-build-ppc64/lra/gcc/include/stdint.h" 3 4
# 1 "/usr/include/stdint.h" 1 3 4
# 27 "/usr/include/stdint.h" 3 4
# 1 "/usr/include/bits/wchar.h" 1 3 4
# 28 "/usr/include/stdint.h" 2 3 4
# 1 "/usr/include/bits/wordsize.h" 1 3 4
# 29 "/usr/include/stdint.h" 2 3 4
# 49 "/usr/include/stdint.h" 3 4
typedef unsigned char uint8_t;
typedef unsigned short int uint16_t;

typedef unsigned int uint32_t;





__extension__
typedef unsigned long long int uint64_t;






typedef signed char int_least8_t;
typedef short int int_least16_t;
typedef int int_least32_t;



__extension__
typedef long long int int_least64_t;



typedef unsigned char uint_least8_t;
typedef unsigned short int uint_least16_t;
typedef unsigned int uint_least32_t;



__extension__
typedef unsigned long long int uint_least64_t;






typedef signed char int_fast8_t;





typedef int int_fast16_t;
typedef int int_fast32_t;
__extension__
typedef long long int int_fast64_t;



typedef unsigned char uint_fast8_t;





typedef unsigned int uint_fast16_t;
typedef unsigned int uint_fast32_t;
__extension__
typedef unsigned long long int uint_fast64_t;
# 126 "/usr/include/stdint.h" 3 4
typedef int intptr_t;


typedef unsigned int uintptr_t;
# 138 "/usr/include/stdint.h" 3 4
__extension__
typedef long long int intmax_t;
__extension__
typedef unsigned long long int uintmax_t;
# 10 "/home/meissner/fsf-build-ppc64/lra/gcc/include/stdint.h" 2 3 4
# 8 "./gstdint.h" 2
# 86 "/home/meissner/fsf-src/lra/libgfortran/libgfortran.h" 2
# 94 "/home/meissner/fsf-src/lra/libgfortran/libgfortran.h"
typedef off_t gfc_offset;
# 234 "/home/meissner/fsf-src/lra/libgfortran/libgfortran.h"
# 1 "./kinds.h" 1
typedef int8_t GFC_INTEGER_1;
typedef uint8_t GFC_UINTEGER_1;
typedef GFC_INTEGER_1 GFC_LOGICAL_1;



typedef int16_t GFC_INTEGER_2;
typedef uint16_t GFC_UINTEGER_2;
typedef GFC_INTEGER_2 GFC_LOGICAL_2;



typedef int32_t GFC_INTEGER_4;
typedef uint32_t GFC_UINTEGER_4;
typedef GFC_INTEGER_4 GFC_LOGICAL_4;



typedef int64_t GFC_INTEGER_8;
typedef uint64_t GFC_UINTEGER_8;
typedef GFC_INTEGER_8 GFC_LOGICAL_8;







typedef float GFC_REAL_4;
typedef _Complex float GFC_COMPLEX_4;
# 39 "./kinds.h"
typedef double GFC_REAL_8;
typedef _Complex double GFC_COMPLEX_8;
# 49 "./kinds.h"
typedef long double GFC_REAL_16;
typedef _Complex long double GFC_COMPLEX_16;
# 59 "./kinds.h"
# 1 "/home/meissner/fsf-src/lra/libgfortran/kinds-override.h" 1
# 59 "./kinds.h" 2
# 235 "/home/meissner/fsf-src/lra/libgfortran/libgfortran.h" 2




typedef GFC_INTEGER_8 GFC_IO_INT;
# 251 "/home/meissner/fsf-src/lra/libgfortran/libgfortran.h"
typedef ptrdiff_t index_type;


typedef GFC_INTEGER_4 gfc_charlen_type;




typedef GFC_UINTEGER_4 gfc_char4_t;






extern int big_endian;
extern __typeof(big_endian) big_endian __asm__("" "_gfortrani_big_endian") __attribute__((__visibility__("hidden")));
# 324 "/home/meissner/fsf-src/lra/libgfortran/libgfortran.h"
typedef struct descriptor_dimension
{
  index_type _stride;
  index_type lower_bound;
  index_type _ubound;
}

descriptor_dimension;
# 342 "/home/meissner/fsf-src/lra/libgfortran/libgfortran.h"
typedef struct { void *base_addr; size_t offset; index_type dtype; descriptor_dimension dim[7];} gfc_array_void;
typedef struct { char *base_addr; size_t offset; index_type dtype; descriptor_dimension dim[7];} gfc_array_char;
typedef struct { GFC_INTEGER_1 *base_addr; size_t offset; index_type dtype; descriptor_dimension dim[7];} gfc_array_i1;
typedef struct { GFC_INTEGER_2 *base_addr; size_t offset; index_type dtype; descriptor_dimension dim[7];} gfc_array_i2;
typedef struct { GFC_INTEGER_4 *base_addr; size_t offset; index_type dtype; descriptor_dimension dim[7];} gfc_array_i4;
typedef struct { GFC_INTEGER_8 *base_addr; size_t offset; index_type dtype; descriptor_dimension dim[7];} gfc_array_i8;



typedef struct { GFC_REAL_4 *base_addr; size_t offset; index_type dtype; descriptor_dimension dim[7];} gfc_array_r4;
typedef struct { GFC_REAL_8 *base_addr; size_t offset; index_type dtype; descriptor_dimension dim[7];} gfc_array_r8;




typedef struct { GFC_REAL_16 *base_addr; size_t offset; index_type dtype; descriptor_dimension dim[7];} gfc_array_r16;

typedef struct { GFC_COMPLEX_4 *base_addr; size_t offset; index_type dtype; descriptor_dimension dim[7];} gfc_array_c4;
typedef struct { GFC_COMPLEX_8 *base_addr; size_t offset; index_type dtype; descriptor_dimension dim[7];} gfc_array_c8;




typedef struct { GFC_COMPLEX_16 *base_addr; size_t offset; index_type dtype; descriptor_dimension dim[7];} gfc_array_c16;

typedef struct { GFC_LOGICAL_1 *base_addr; size_t offset; index_type dtype; descriptor_dimension dim[7];} gfc_array_l1;
typedef struct { GFC_LOGICAL_2 *base_addr; size_t offset; index_type dtype; descriptor_dimension dim[7];} gfc_array_l2;
typedef struct { GFC_LOGICAL_4 *base_addr; size_t offset; index_type dtype; descriptor_dimension dim[7];} gfc_array_l4;
typedef struct { GFC_LOGICAL_8 *base_addr; size_t offset; index_type dtype; descriptor_dimension dim[7];} gfc_array_l8;
# 505 "/home/meissner/fsf-src/lra/libgfortran/libgfortran.h"
typedef struct
{
  int stdin_unit, stdout_unit, stderr_unit, optional_plus;
  int locus;

  int separator_len;
  const char *separator;

  int all_unbuffered, unbuffered_preconnected, default_recl;
  int fpe, backtrace;
}
options_t;

extern options_t options;
extern __typeof(options) options __asm__("" "_gfortrani_options") __attribute__((__visibility__("hidden")));

extern void backtrace_handler (int);
extern __typeof(backtrace_handler) backtrace_handler __asm__("" "_gfortrani_backtrace_handler") __attribute__((__visibility__("hidden")));




typedef struct
{
  int warn_std;
  int allow_std;
  int pedantic;
  int convert;
  int backtrace;
  int sign_zero;
  size_t record_marker;
  int max_subrecord_length;
  int bounds_check;
}
compile_options_t;

extern compile_options_t compile_options;
extern __typeof(compile_options) compile_options __asm__("" "_gfortrani_compile_options") __attribute__((__visibility__("hidden")));

extern void init_compile_options (void);
extern __typeof(init_compile_options) init_compile_options __asm__("" "_gfortrani_init_compile_options") __attribute__((__visibility__("hidden")));





typedef struct
{
  const char *name;
  int value;
}
st_option;





typedef enum
{ NOTIFICATION_SILENT, NOTIFICATION_WARNING, NOTIFICATION_ERROR }
notification;


typedef enum
{ SUCCESS = 1, FAILURE }
try;





extern unsigned line;
extern __typeof(line) line __asm__("" "_gfortran_line");

extern char *filename;
extern __typeof(filename) filename __asm__("" "_gfortran_filename");
# 596 "/home/meissner/fsf-src/lra/libgfortran/libgfortran.h"
typedef struct st_parameter_common
{
  GFC_INTEGER_4 flags;
  GFC_INTEGER_4 unit;
  const char *filename;
  GFC_INTEGER_4 line;
  gfc_charlen_type iomsg_len; char * iomsg;
  GFC_INTEGER_4 *iostat;
}
st_parameter_common;
# 643 "/home/meissner/fsf-src/lra/libgfortran/libgfortran.h"
extern void library_start (st_parameter_common *);
extern __typeof(library_start) library_start __asm__("" "_gfortrani_library_start") __attribute__((__visibility__("hidden")));





extern void stupid_function_name_for_static_linking (void);
extern __typeof(stupid_function_name_for_static_linking) stupid_function_name_for_static_linking __asm__("" "_gfortrani_stupid_function_name_for_static_linking") __attribute__((__visibility__("hidden")));

extern void set_args (int, char **);
extern __typeof(set_args) set_args __asm__("" "_gfortrani_set_args") __attribute__((__visibility__("hidden")));

extern void get_args (int *, char ***);
extern __typeof(get_args) get_args __asm__("" "_gfortrani_get_args") __attribute__((__visibility__("hidden")));

extern void store_exe_path (const char *);
extern __typeof(store_exe_path) store_exe_path __asm__("" "_gfortran_store_exe_path");

extern char * full_exe_path (void);
extern __typeof(full_exe_path) full_exe_path __asm__("" "_gfortrani_full_exe_path") __attribute__((__visibility__("hidden")));

extern void find_addr2line (void);
extern __typeof(find_addr2line) find_addr2line __asm__("" "_gfortrani_find_addr2line") __attribute__((__visibility__("hidden")));



extern void show_backtrace (void);
extern __typeof(show_backtrace) show_backtrace __asm__("" "_gfortrani_show_backtrace") __attribute__((__visibility__("hidden")));
# 690 "/home/meissner/fsf-src/lra/libgfortran/libgfortran.h"
extern void sys_abort (void) __attribute__ ((noreturn));
extern __typeof(sys_abort) sys_abort __asm__("" "_gfortrani_sys_abort") __attribute__((__visibility__("hidden")));

extern ssize_t estr_write (const char *);
extern __typeof(estr_write) estr_write __asm__("" "_gfortrani_estr_write") __attribute__((__visibility__("hidden")));

extern int st_vprintf (const char *, va_list);
extern __typeof(st_vprintf) st_vprintf __asm__("" "_gfortrani_st_vprintf") __attribute__((__visibility__("hidden")));

extern int st_printf (const char *, ...)
  __attribute__((format (__printf__, 1, 2)));
extern __typeof(st_printf) st_printf __asm__("" "_gfortrani_st_printf") __attribute__((__visibility__("hidden")));

extern const char *gfc_xtoa (GFC_UINTEGER_8, char *, size_t);
extern __typeof(gfc_xtoa) gfc_xtoa __asm__("" "_gfortrani_gfc_xtoa") __attribute__((__visibility__("hidden")));

extern void os_error (const char *) __attribute__ ((noreturn));
extern __typeof(os_error) os_error __asm__("" "_gfortrani_os_error") __attribute__((__visibility__("hidden")));

extern void show_locus (st_parameter_common *);
extern __typeof(show_locus) show_locus __asm__("" "_gfortrani_show_locus") __attribute__((__visibility__("hidden")));

extern void runtime_error (const char *, ...)
     __attribute__ ((noreturn, format (__printf__, 1, 2)));
extern __typeof(runtime_error) runtime_error __asm__("" "_gfortrani_runtime_error") __attribute__((__visibility__("hidden")));

extern void runtime_error_at (const char *, const char *, ...)
     __attribute__ ((noreturn, format (__printf__, 2, 3)));
extern __typeof(runtime_error_at) runtime_error_at __asm__("" "_gfortrani_runtime_error_at") __attribute__((__visibility__("hidden")));

extern void runtime_warning_at (const char *, const char *, ...)
     __attribute__ ((format (__printf__, 2, 3)));
extern __typeof(runtime_warning_at) runtime_warning_at __asm__("" "_gfortrani_runtime_warning_at") __attribute__((__visibility__("hidden")));

extern void internal_error (st_parameter_common *, const char *)
  __attribute__ ((noreturn));
extern __typeof(internal_error) internal_error __asm__("" "_gfortrani_internal_error") __attribute__((__visibility__("hidden")));

extern const char *translate_error (int);
extern __typeof(translate_error) translate_error __asm__("" "_gfortrani_translate_error") __attribute__((__visibility__("hidden")));

extern void generate_error (st_parameter_common *, int, const char *);
extern __typeof(generate_error) generate_error __asm__("" "_gfortrani_generate_error") __attribute__((__visibility__("hidden")));

extern void generate_warning (st_parameter_common *, const char *);
extern __typeof(generate_warning) generate_warning __asm__("" "_gfortrani_generate_warning") __attribute__((__visibility__("hidden")));

extern try notify_std (st_parameter_common *, int, const char *);
extern __typeof(notify_std) notify_std __asm__("" "_gfortrani_notify_std") __attribute__((__visibility__("hidden")));

extern notification notification_std(int);
extern __typeof(notification_std) notification_std __asm__("" "_gfortrani_notification_std") __attribute__((__visibility__("hidden")));

extern char *gf_strerror (int, char *, size_t);
extern __typeof(gf_strerror) gf_strerror __asm__("" "_gfortrani_gf_strerror") __attribute__((__visibility__("hidden")));



extern void set_fpu (void);
extern __typeof(set_fpu) set_fpu __asm__("" "_gfortrani_set_fpu") __attribute__((__visibility__("hidden")));



extern void *xmalloc (size_t) __attribute__ ((malloc));
extern __typeof(xmalloc) xmalloc __asm__("" "_gfortrani_xmalloc") __attribute__((__visibility__("hidden")));

extern void *xcalloc (size_t, size_t) __attribute__ ((malloc));
extern __typeof(xcalloc) xcalloc __asm__("" "_gfortrani_xcalloc") __attribute__((__visibility__("hidden")));




extern int check_buffered (int);
extern __typeof(check_buffered) check_buffered __asm__("" "_gfortrani_check_buffered") __attribute__((__visibility__("hidden")));

extern void init_variables (void);
extern __typeof(init_variables) init_variables __asm__("" "_gfortrani_init_variables") __attribute__((__visibility__("hidden")));

extern void show_variables (void);
extern __typeof(show_variables) show_variables __asm__("" "_gfortrani_show_variables") __attribute__((__visibility__("hidden")));

unit_convert get_unformatted_convert (int);
extern __typeof(get_unformatted_convert) get_unformatted_convert __asm__("" "_gfortrani_get_unformatted_convert") __attribute__((__visibility__("hidden")));
# 790 "/home/meissner/fsf-src/lra/libgfortran/libgfortran.h"
extern int find_option (st_parameter_common *, const char *, gfc_charlen_type,
   const st_option *, const char *);
extern __typeof(find_option) find_option __asm__("" "_gfortrani_find_option") __attribute__((__visibility__("hidden")));

extern gfc_charlen_type fstrlen (const char *, gfc_charlen_type);
extern __typeof(fstrlen) fstrlen __asm__("" "_gfortrani_fstrlen") __attribute__((__visibility__("hidden")));

extern gfc_charlen_type fstrcpy (char *, gfc_charlen_type, const char *, gfc_charlen_type);
extern __typeof(fstrcpy) fstrcpy __asm__("" "_gfortrani_fstrcpy") __attribute__((__visibility__("hidden")));

extern gfc_charlen_type cf_strcpy (char *, gfc_charlen_type, const char *);
extern __typeof(cf_strcpy) cf_strcpy __asm__("" "_gfortrani_cf_strcpy") __attribute__((__visibility__("hidden")));

extern gfc_charlen_type string_len_trim (gfc_charlen_type, const char *);
extern __typeof(string_len_trim) string_len_trim __asm__("" "_gfortran_string_len_trim");

extern gfc_charlen_type string_len_trim_char4 (gfc_charlen_type,
            const gfc_char4_t *);
extern __typeof(string_len_trim_char4) string_len_trim_char4 __asm__("" "_gfortran_string_len_trim_char4");



extern void flush_all_units (void);
extern __typeof(flush_all_units) flush_all_units __asm__("" "_gfortrani_flush_all_units") __attribute__((__visibility__("hidden")));



extern void init_units (void);
extern __typeof(init_units) init_units __asm__("" "_gfortrani_init_units") __attribute__((__visibility__("hidden")));

extern void close_units (void);
extern __typeof(close_units) close_units __asm__("" "_gfortrani_close_units") __attribute__((__visibility__("hidden")));

extern int unit_to_fd (int);
extern __typeof(unit_to_fd) unit_to_fd __asm__("" "_gfortrani_unit_to_fd") __attribute__((__visibility__("hidden")));

extern char * filename_from_unit (int);
extern __typeof(filename_from_unit) filename_from_unit __asm__("" "_gfortrani_filename_from_unit") __attribute__((__visibility__("hidden")));



extern void stop_string (const char *, GFC_INTEGER_4)
  __attribute__ ((noreturn));
extern __typeof(stop_string) stop_string __asm__("" "_gfortran_stop_string");



extern void reshape_packed (char *, index_type, const char *, index_type,
       const char *, index_type);
extern __typeof(reshape_packed) reshape_packed __asm__("" "_gfortrani_reshape_packed") __attribute__((__visibility__("hidden")));




GFC_INTEGER_1 *internal_pack_1 (gfc_array_i1 *);
extern __typeof(internal_pack_1) internal_pack_1 __asm__("" "_gfortrani_internal_pack_1") __attribute__((__visibility__("hidden")));

GFC_INTEGER_2 *internal_pack_2 (gfc_array_i2 *);
extern __typeof(internal_pack_2) internal_pack_2 __asm__("" "_gfortrani_internal_pack_2") __attribute__((__visibility__("hidden")));

GFC_INTEGER_4 *internal_pack_4 (gfc_array_i4 *);
extern __typeof(internal_pack_4) internal_pack_4 __asm__("" "_gfortrani_internal_pack_4") __attribute__((__visibility__("hidden")));

GFC_INTEGER_8 *internal_pack_8 (gfc_array_i8 *);
extern __typeof(internal_pack_8) internal_pack_8 __asm__("" "_gfortrani_internal_pack_8") __attribute__((__visibility__("hidden")));






GFC_REAL_4 *internal_pack_r4 (gfc_array_r4 *);
extern __typeof(internal_pack_r4) internal_pack_r4 __asm__("" "_gfortrani_internal_pack_r4") __attribute__((__visibility__("hidden")));

GFC_REAL_8 *internal_pack_r8 (gfc_array_r8 *);
extern __typeof(internal_pack_r8) internal_pack_r8 __asm__("" "_gfortrani_internal_pack_r8") __attribute__((__visibility__("hidden")));







GFC_REAL_16 *internal_pack_r16 (gfc_array_r16 *);
extern __typeof(internal_pack_r16) internal_pack_r16 __asm__("" "_gfortrani_internal_pack_r16") __attribute__((__visibility__("hidden")));


GFC_COMPLEX_4 *internal_pack_c4 (gfc_array_c4 *);
extern __typeof(internal_pack_c4) internal_pack_c4 __asm__("" "_gfortrani_internal_pack_c4") __attribute__((__visibility__("hidden")));

GFC_COMPLEX_8 *internal_pack_c8 (gfc_array_c8 *);
extern __typeof(internal_pack_c8) internal_pack_c8 __asm__("" "_gfortrani_internal_pack_c8") __attribute__((__visibility__("hidden")));







GFC_COMPLEX_16 *internal_pack_c16 (gfc_array_c16 *);
extern __typeof(internal_pack_c16) internal_pack_c16 __asm__("" "_gfortrani_internal_pack_c16") __attribute__((__visibility__("hidden")));


extern void internal_unpack_1 (gfc_array_i1 *, const GFC_INTEGER_1 *);
extern __typeof(internal_unpack_1) internal_unpack_1 __asm__("" "_gfortrani_internal_unpack_1") __attribute__((__visibility__("hidden")));

extern void internal_unpack_2 (gfc_array_i2 *, const GFC_INTEGER_2 *);
extern __typeof(internal_unpack_2) internal_unpack_2 __asm__("" "_gfortrani_internal_unpack_2") __attribute__((__visibility__("hidden")));

extern void internal_unpack_4 (gfc_array_i4 *, const GFC_INTEGER_4 *);
extern __typeof(internal_unpack_4) internal_unpack_4 __asm__("" "_gfortrani_internal_unpack_4") __attribute__((__visibility__("hidden")));

extern void internal_unpack_8 (gfc_array_i8 *, const GFC_INTEGER_8 *);
extern __typeof(internal_unpack_8) internal_unpack_8 __asm__("" "_gfortrani_internal_unpack_8") __attribute__((__visibility__("hidden")));






extern void internal_unpack_r4 (gfc_array_r4 *, const GFC_REAL_4 *);
extern __typeof(internal_unpack_r4) internal_unpack_r4 __asm__("" "_gfortrani_internal_unpack_r4") __attribute__((__visibility__("hidden")));

extern void internal_unpack_r8 (gfc_array_r8 *, const GFC_REAL_8 *);
extern __typeof(internal_unpack_r8) internal_unpack_r8 __asm__("" "_gfortrani_internal_unpack_r8") __attribute__((__visibility__("hidden")));







extern void internal_unpack_r16 (gfc_array_r16 *, const GFC_REAL_16 *);
extern __typeof(internal_unpack_r16) internal_unpack_r16 __asm__("" "_gfortrani_internal_unpack_r16") __attribute__((__visibility__("hidden")));


extern void internal_unpack_c4 (gfc_array_c4 *, const GFC_COMPLEX_4 *);
extern __typeof(internal_unpack_c4) internal_unpack_c4 __asm__("" "_gfortrani_internal_unpack_c4") __attribute__((__visibility__("hidden")));

extern void internal_unpack_c8 (gfc_array_c8 *, const GFC_COMPLEX_8 *);
extern __typeof(internal_unpack_c8) internal_unpack_c8 __asm__("" "_gfortrani_internal_unpack_c8") __attribute__((__visibility__("hidden")));







extern void internal_unpack_c16 (gfc_array_c16 *, const GFC_COMPLEX_16 *);
extern __typeof(internal_unpack_c16) internal_unpack_c16 __asm__("" "_gfortrani_internal_unpack_c16") __attribute__((__visibility__("hidden")));




extern void pack_i1 (gfc_array_i1 *, const gfc_array_i1 *,
       const gfc_array_l1 *, const gfc_array_i1 *);
extern __typeof(pack_i1) pack_i1 __asm__("" "_gfortrani_pack_i1") __attribute__((__visibility__("hidden")));

extern void pack_i2 (gfc_array_i2 *, const gfc_array_i2 *,
       const gfc_array_l1 *, const gfc_array_i2 *);
extern __typeof(pack_i2) pack_i2 __asm__("" "_gfortrani_pack_i2") __attribute__((__visibility__("hidden")));

extern void pack_i4 (gfc_array_i4 *, const gfc_array_i4 *,
       const gfc_array_l1 *, const gfc_array_i4 *);
extern __typeof(pack_i4) pack_i4 __asm__("" "_gfortrani_pack_i4") __attribute__((__visibility__("hidden")));

extern void pack_i8 (gfc_array_i8 *, const gfc_array_i8 *,
       const gfc_array_l1 *, const gfc_array_i8 *);
extern __typeof(pack_i8) pack_i8 __asm__("" "_gfortrani_pack_i8") __attribute__((__visibility__("hidden")));







extern void pack_r4 (gfc_array_r4 *, const gfc_array_r4 *,
       const gfc_array_l1 *, const gfc_array_r4 *);
extern __typeof(pack_r4) pack_r4 __asm__("" "_gfortrani_pack_r4") __attribute__((__visibility__("hidden")));

extern void pack_r8 (gfc_array_r8 *, const gfc_array_r8 *,
       const gfc_array_l1 *, const gfc_array_r8 *);
extern __typeof(pack_r8) pack_r8 __asm__("" "_gfortrani_pack_r8") __attribute__((__visibility__("hidden")));
# 981 "/home/meissner/fsf-src/lra/libgfortran/libgfortran.h"
extern void pack_r16 (gfc_array_r16 *, const gfc_array_r16 *,
       const gfc_array_l1 *, const gfc_array_r16 *);
extern __typeof(pack_r16) pack_r16 __asm__("" "_gfortrani_pack_r16") __attribute__((__visibility__("hidden")));


extern void pack_c4 (gfc_array_c4 *, const gfc_array_c4 *,
       const gfc_array_l1 *, const gfc_array_c4 *);
extern __typeof(pack_c4) pack_c4 __asm__("" "_gfortrani_pack_c4") __attribute__((__visibility__("hidden")));

extern void pack_c8 (gfc_array_c8 *, const gfc_array_c8 *,
       const gfc_array_l1 *, const gfc_array_c8 *);
extern __typeof(pack_c8) pack_c8 __asm__("" "_gfortrani_pack_c8") __attribute__((__visibility__("hidden")));
# 1001 "/home/meissner/fsf-src/lra/libgfortran/libgfortran.h"
extern void pack_c16 (gfc_array_c16 *, const gfc_array_c16 *,
       const gfc_array_l1 *, const gfc_array_c16 *);
extern __typeof(pack_c16) pack_c16 __asm__("" "_gfortrani_pack_c16") __attribute__((__visibility__("hidden")));




extern void unpack0_i1 (gfc_array_i1 *, const gfc_array_i1 *,
   const gfc_array_l1 *, const GFC_INTEGER_1 *);
extern __typeof(unpack0_i1) unpack0_i1 __asm__("" "_gfortrani_unpack0_i1") __attribute__((__visibility__("hidden")));

extern void unpack0_i2 (gfc_array_i2 *, const gfc_array_i2 *,
   const gfc_array_l1 *, const GFC_INTEGER_2 *);
extern __typeof(unpack0_i2) unpack0_i2 __asm__("" "_gfortrani_unpack0_i2") __attribute__((__visibility__("hidden")));

extern void unpack0_i4 (gfc_array_i4 *, const gfc_array_i4 *,
   const gfc_array_l1 *, const GFC_INTEGER_4 *);
extern __typeof(unpack0_i4) unpack0_i4 __asm__("" "_gfortrani_unpack0_i4") __attribute__((__visibility__("hidden")));

extern void unpack0_i8 (gfc_array_i8 *, const gfc_array_i8 *,
   const gfc_array_l1 *, const GFC_INTEGER_8 *);
extern __typeof(unpack0_i8) unpack0_i8 __asm__("" "_gfortrani_unpack0_i8") __attribute__((__visibility__("hidden")));
# 1032 "/home/meissner/fsf-src/lra/libgfortran/libgfortran.h"
extern void unpack0_r4 (gfc_array_r4 *, const gfc_array_r4 *,
   const gfc_array_l1 *, const GFC_REAL_4 *);
extern __typeof(unpack0_r4) unpack0_r4 __asm__("" "_gfortrani_unpack0_r4") __attribute__((__visibility__("hidden")));

extern void unpack0_r8 (gfc_array_r8 *, const gfc_array_r8 *,
   const gfc_array_l1 *, const GFC_REAL_8 *);
extern __typeof(unpack0_r8) unpack0_r8 __asm__("" "_gfortrani_unpack0_r8") __attribute__((__visibility__("hidden")));
# 1050 "/home/meissner/fsf-src/lra/libgfortran/libgfortran.h"
extern void unpack0_r16 (gfc_array_r16 *, const gfc_array_r16 *,
    const gfc_array_l1 *, const GFC_REAL_16 *);
extern __typeof(unpack0_r16) unpack0_r16 __asm__("" "_gfortrani_unpack0_r16") __attribute__((__visibility__("hidden")));



extern void unpack0_c4 (gfc_array_c4 *, const gfc_array_c4 *,
   const gfc_array_l1 *, const GFC_COMPLEX_4 *);
extern __typeof(unpack0_c4) unpack0_c4 __asm__("" "_gfortrani_unpack0_c4") __attribute__((__visibility__("hidden")));

extern void unpack0_c8 (gfc_array_c8 *, const gfc_array_c8 *,
   const gfc_array_l1 *, const GFC_COMPLEX_8 *);
extern __typeof(unpack0_c8) unpack0_c8 __asm__("" "_gfortrani_unpack0_c8") __attribute__((__visibility__("hidden")));
# 1074 "/home/meissner/fsf-src/lra/libgfortran/libgfortran.h"
extern void unpack0_c16 (gfc_array_c16 *, const gfc_array_c16 *,
    const gfc_array_l1 *, const GFC_COMPLEX_16 *);
extern __typeof(unpack0_c16) unpack0_c16 __asm__("" "_gfortrani_unpack0_c16") __attribute__((__visibility__("hidden")));



extern void unpack1_i1 (gfc_array_i1 *, const gfc_array_i1 *,
   const gfc_array_l1 *, const gfc_array_i1 *);
extern __typeof(unpack1_i1) unpack1_i1 __asm__("" "_gfortrani_unpack1_i1") __attribute__((__visibility__("hidden")));

extern void unpack1_i2 (gfc_array_i2 *, const gfc_array_i2 *,
   const gfc_array_l1 *, const gfc_array_i2 *);
extern __typeof(unpack1_i2) unpack1_i2 __asm__("" "_gfortrani_unpack1_i2") __attribute__((__visibility__("hidden")));

extern void unpack1_i4 (gfc_array_i4 *, const gfc_array_i4 *,
   const gfc_array_l1 *, const gfc_array_i4 *);
extern __typeof(unpack1_i4) unpack1_i4 __asm__("" "_gfortrani_unpack1_i4") __attribute__((__visibility__("hidden")));

extern void unpack1_i8 (gfc_array_i8 *, const gfc_array_i8 *,
   const gfc_array_l1 *, const gfc_array_i8 *);
extern __typeof(unpack1_i8) unpack1_i8 __asm__("" "_gfortrani_unpack1_i8") __attribute__((__visibility__("hidden")));







extern void unpack1_r4 (gfc_array_r4 *, const gfc_array_r4 *,
   const gfc_array_l1 *, const gfc_array_r4 *);
extern __typeof(unpack1_r4) unpack1_r4 __asm__("" "_gfortrani_unpack1_r4") __attribute__((__visibility__("hidden")));

extern void unpack1_r8 (gfc_array_r8 *, const gfc_array_r8 *,
   const gfc_array_l1 *, const gfc_array_r8 *);
extern __typeof(unpack1_r8) unpack1_r8 __asm__("" "_gfortrani_unpack1_r8") __attribute__((__visibility__("hidden")));
# 1117 "/home/meissner/fsf-src/lra/libgfortran/libgfortran.h"
extern void unpack1_r16 (gfc_array_r16 *, const gfc_array_r16 *,
    const gfc_array_l1 *, const gfc_array_r16 *);
extern __typeof(unpack1_r16) unpack1_r16 __asm__("" "_gfortrani_unpack1_r16") __attribute__((__visibility__("hidden")));


extern void unpack1_c4 (gfc_array_c4 *, const gfc_array_c4 *,
   const gfc_array_l1 *, const gfc_array_c4 *);
extern __typeof(unpack1_c4) unpack1_c4 __asm__("" "_gfortrani_unpack1_c4") __attribute__((__visibility__("hidden")));

extern void unpack1_c8 (gfc_array_c8 *, const gfc_array_c8 *,
   const gfc_array_l1 *, const gfc_array_c8 *);
extern __typeof(unpack1_c8) unpack1_c8 __asm__("" "_gfortrani_unpack1_c8") __attribute__((__visibility__("hidden")));
# 1137 "/home/meissner/fsf-src/lra/libgfortran/libgfortran.h"
extern void unpack1_c16 (gfc_array_c16 *, const gfc_array_c16 *,
    const gfc_array_l1 *, const gfc_array_c16 *);
extern __typeof(unpack1_c16) unpack1_c16 __asm__("" "_gfortrani_unpack1_c16") __attribute__((__visibility__("hidden")));




extern void spread_i1 (gfc_array_i1 *, const gfc_array_i1 *,
         const index_type, const index_type);
extern __typeof(spread_i1) spread_i1 __asm__("" "_gfortrani_spread_i1") __attribute__((__visibility__("hidden")));

extern void spread_i2 (gfc_array_i2 *, const gfc_array_i2 *,
         const index_type, const index_type);
extern __typeof(spread_i2) spread_i2 __asm__("" "_gfortrani_spread_i2") __attribute__((__visibility__("hidden")));

extern void spread_i4 (gfc_array_i4 *, const gfc_array_i4 *,
         const index_type, const index_type);
extern __typeof(spread_i4) spread_i4 __asm__("" "_gfortrani_spread_i4") __attribute__((__visibility__("hidden")));

extern void spread_i8 (gfc_array_i8 *, const gfc_array_i8 *,
         const index_type, const index_type);
extern __typeof(spread_i8) spread_i8 __asm__("" "_gfortrani_spread_i8") __attribute__((__visibility__("hidden")));
# 1167 "/home/meissner/fsf-src/lra/libgfortran/libgfortran.h"
extern void spread_r4 (gfc_array_r4 *, const gfc_array_r4 *,
         const index_type, const index_type);
extern __typeof(spread_r4) spread_r4 __asm__("" "_gfortrani_spread_r4") __attribute__((__visibility__("hidden")));

extern void spread_r8 (gfc_array_r8 *, const gfc_array_r8 *,
         const index_type, const index_type);
extern __typeof(spread_r8) spread_r8 __asm__("" "_gfortrani_spread_r8") __attribute__((__visibility__("hidden")));
# 1183 "/home/meissner/fsf-src/lra/libgfortran/libgfortran.h"
extern void spread_r16 (gfc_array_r16 *, const gfc_array_r16 *,
         const index_type, const index_type);
extern __typeof(spread_r16) spread_r16 __asm__("" "_gfortrani_spread_r16") __attribute__((__visibility__("hidden")));



extern void spread_c4 (gfc_array_c4 *, const gfc_array_c4 *,
         const index_type, const index_type);
extern __typeof(spread_c4) spread_c4 __asm__("" "_gfortrani_spread_c4") __attribute__((__visibility__("hidden")));

extern void spread_c8 (gfc_array_c8 *, const gfc_array_c8 *,
         const index_type, const index_type);
extern __typeof(spread_c8) spread_c8 __asm__("" "_gfortrani_spread_c8") __attribute__((__visibility__("hidden")));
# 1205 "/home/meissner/fsf-src/lra/libgfortran/libgfortran.h"
extern void spread_c16 (gfc_array_c16 *, const gfc_array_c16 *,
         const index_type, const index_type);
extern __typeof(spread_c16) spread_c16 __asm__("" "_gfortrani_spread_c16") __attribute__((__visibility__("hidden")));



extern void spread_scalar_i1 (gfc_array_i1 *, const GFC_INTEGER_1 *,
         const index_type, const index_type);
extern __typeof(spread_scalar_i1) spread_scalar_i1 __asm__("" "_gfortrani_spread_scalar_i1") __attribute__((__visibility__("hidden")));

extern void spread_scalar_i2 (gfc_array_i2 *, const GFC_INTEGER_2 *,
         const index_type, const index_type);
extern __typeof(spread_scalar_i2) spread_scalar_i2 __asm__("" "_gfortrani_spread_scalar_i2") __attribute__((__visibility__("hidden")));

extern void spread_scalar_i4 (gfc_array_i4 *, const GFC_INTEGER_4 *,
         const index_type, const index_type);
extern __typeof(spread_scalar_i4) spread_scalar_i4 __asm__("" "_gfortrani_spread_scalar_i4") __attribute__((__visibility__("hidden")));

extern void spread_scalar_i8 (gfc_array_i8 *, const GFC_INTEGER_8 *,
         const index_type, const index_type);
extern __typeof(spread_scalar_i8) spread_scalar_i8 __asm__("" "_gfortrani_spread_scalar_i8") __attribute__((__visibility__("hidden")));
# 1234 "/home/meissner/fsf-src/lra/libgfortran/libgfortran.h"
extern void spread_scalar_r4 (gfc_array_r4 *, const GFC_REAL_4 *,
         const index_type, const index_type);
extern __typeof(spread_scalar_r4) spread_scalar_r4 __asm__("" "_gfortrani_spread_scalar_r4") __attribute__((__visibility__("hidden")));

extern void spread_scalar_r8 (gfc_array_r8 *, const GFC_REAL_8 *,
         const index_type, const index_type);
extern __typeof(spread_scalar_r8) spread_scalar_r8 __asm__("" "_gfortrani_spread_scalar_r8") __attribute__((__visibility__("hidden")));
# 1250 "/home/meissner/fsf-src/lra/libgfortran/libgfortran.h"
extern void spread_scalar_r16 (gfc_array_r16 *, const GFC_REAL_16 *,
          const index_type, const index_type);
extern __typeof(spread_scalar_r16) spread_scalar_r16 __asm__("" "_gfortrani_spread_scalar_r16") __attribute__((__visibility__("hidden")));



extern void spread_scalar_c4 (gfc_array_c4 *, const GFC_COMPLEX_4 *,
         const index_type, const index_type);
extern __typeof(spread_scalar_c4) spread_scalar_c4 __asm__("" "_gfortrani_spread_scalar_c4") __attribute__((__visibility__("hidden")));

extern void spread_scalar_c8 (gfc_array_c8 *, const GFC_COMPLEX_8 *,
         const index_type, const index_type);
extern __typeof(spread_scalar_c8) spread_scalar_c8 __asm__("" "_gfortrani_spread_scalar_c8") __attribute__((__visibility__("hidden")));
# 1272 "/home/meissner/fsf-src/lra/libgfortran/libgfortran.h"
extern void spread_scalar_c16 (gfc_array_c16 *, const GFC_COMPLEX_16 *,
          const index_type, const index_type);
extern __typeof(spread_scalar_c16) spread_scalar_c16 __asm__("" "_gfortrani_spread_scalar_c16") __attribute__((__visibility__("hidden")));





extern int compare_string (gfc_charlen_type, const char *,
      gfc_charlen_type, const char *);
extern __typeof(compare_string) compare_string __asm__("" "_gfortrani_compare_string") __attribute__((__visibility__("hidden")));

extern int compare_string_char4 (gfc_charlen_type, const gfc_char4_t *,
     gfc_charlen_type, const gfc_char4_t *);
extern __typeof(compare_string_char4) compare_string_char4 __asm__("" "_gfortrani_compare_string_char4") __attribute__((__visibility__("hidden")));

extern int memcmp_char4 (const void *, const void *, size_t);
extern __typeof(memcmp_char4) memcmp_char4 __asm__("" "_gfortrani_memcmp_char4") __attribute__((__visibility__("hidden")));




extern void random_seed_i4 (GFC_INTEGER_4 * size, gfc_array_i4 * put,
       gfc_array_i4 * get);
extern __typeof(random_seed_i4) random_seed_i4 __asm__("" "_gfortrani_random_seed_i4") __attribute__((__visibility__("hidden")));
extern void random_seed_i8 (GFC_INTEGER_8 * size, gfc_array_i8 * put,
       gfc_array_i8 * get);
extern __typeof(random_seed_i8) random_seed_i8 __asm__("" "_gfortrani_random_seed_i8") __attribute__((__visibility__("hidden")));



typedef struct { void *base_addr; size_t offset; index_type dtype; descriptor_dimension dim[7];} array_t;

extern index_type size0 (const array_t * array);
extern __typeof(size0) size0 __asm__("" "_gfortrani_size0") __attribute__((__visibility__("hidden")));



extern void bounds_equal_extents (array_t *, array_t *, const char *,
      const char *);
extern __typeof(bounds_equal_extents) bounds_equal_extents __asm__("" "_gfortrani_bounds_equal_extents") __attribute__((__visibility__("hidden")));

extern void bounds_reduced_extents (array_t *, array_t *, int, const char *,
        const char *intrinsic);
extern __typeof(bounds_reduced_extents) bounds_reduced_extents __asm__("" "_gfortrani_bounds_reduced_extents") __attribute__((__visibility__("hidden")));

extern void bounds_iforeach_return (array_t *, array_t *, const char *);
extern __typeof(bounds_iforeach_return) bounds_iforeach_return __asm__("" "_gfortrani_bounds_iforeach_return") __attribute__((__visibility__("hidden")));

extern void bounds_ifunction_return (array_t *, const index_type *,
         const char *, const char *);
extern __typeof(bounds_ifunction_return) bounds_ifunction_return __asm__("" "_gfortrani_bounds_ifunction_return") __attribute__((__visibility__("hidden")));

extern index_type count_0 (const gfc_array_l1 *);

extern __typeof(count_0) count_0 __asm__("" "_gfortrani_count_0") __attribute__((__visibility__("hidden")));



void cshift0_i1 (gfc_array_i1 *, const gfc_array_i1 *, ptrdiff_t, int);
extern __typeof(cshift0_i1) cshift0_i1 __asm__("" "_gfortrani_cshift0_i1") __attribute__((__visibility__("hidden")));

void cshift0_i2 (gfc_array_i2 *, const gfc_array_i2 *, ptrdiff_t, int);
extern __typeof(cshift0_i2) cshift0_i2 __asm__("" "_gfortrani_cshift0_i2") __attribute__((__visibility__("hidden")));

void cshift0_i4 (gfc_array_i4 *, const gfc_array_i4 *, ptrdiff_t, int);
extern __typeof(cshift0_i4) cshift0_i4 __asm__("" "_gfortrani_cshift0_i4") __attribute__((__visibility__("hidden")));

void cshift0_i8 (gfc_array_i8 *, const gfc_array_i8 *, ptrdiff_t, int);
extern __typeof(cshift0_i8) cshift0_i8 __asm__("" "_gfortrani_cshift0_i8") __attribute__((__visibility__("hidden")));






void cshift0_r4 (gfc_array_r4 *, const gfc_array_r4 *, ptrdiff_t, int);
extern __typeof(cshift0_r4) cshift0_r4 __asm__("" "_gfortrani_cshift0_r4") __attribute__((__visibility__("hidden")));

void cshift0_r8 (gfc_array_r8 *, const gfc_array_r8 *, ptrdiff_t, int);
extern __typeof(cshift0_r8) cshift0_r8 __asm__("" "_gfortrani_cshift0_r8") __attribute__((__visibility__("hidden")));







void cshift0_r16 (gfc_array_r16 *, const gfc_array_r16 *, ptrdiff_t, int);
extern __typeof(cshift0_r16) cshift0_r16 __asm__("" "_gfortrani_cshift0_r16") __attribute__((__visibility__("hidden")));


void cshift0_c4 (gfc_array_c4 *, const gfc_array_c4 *, ptrdiff_t, int);
extern __typeof(cshift0_c4) cshift0_c4 __asm__("" "_gfortrani_cshift0_c4") __attribute__((__visibility__("hidden")));

void cshift0_c8 (gfc_array_c8 *, const gfc_array_c8 *, ptrdiff_t, int);
extern __typeof(cshift0_c8) cshift0_c8 __asm__("" "_gfortrani_cshift0_c8") __attribute__((__visibility__("hidden")));







void cshift0_c16 (gfc_array_c16 *, const gfc_array_c16 *, ptrdiff_t, int);
extern __typeof(cshift0_c16) cshift0_c16 __asm__("" "_gfortrani_cshift0_c16") __attribute__((__visibility__("hidden")));
# 27 "/home/meissner/fsf-src/lra/libgfortran/generated/matmul_i2.c" 2
# 1 "/usr/include/stdlib.h" 1 3 4
# 33 "/usr/include/stdlib.h" 3 4
# 1 "/home/meissner/fsf-build-ppc64/lra/gcc/include/stddef.h" 1 3 4
# 34 "/usr/include/stdlib.h" 2 3 4








# 1 "/usr/include/bits/waitflags.h" 1 3 4
# 43 "/usr/include/stdlib.h" 2 3 4
# 1 "/usr/include/bits/waitstatus.h" 1 3 4
# 67 "/usr/include/bits/waitstatus.h" 3 4
union wait
  {
    int w_status;
    struct
      {







 unsigned int:16;
 unsigned int __w_retcode:8;
 unsigned int __w_coredump:1;
 unsigned int __w_termsig:7;

      } __wait_terminated;
    struct
      {






 unsigned int:16;
 unsigned int __w_stopsig:8;
 unsigned int __w_stopval:8;

      } __wait_stopped;
  };
# 44 "/usr/include/stdlib.h" 2 3 4
# 68 "/usr/include/stdlib.h" 3 4
typedef union
  {
    union wait *__uptr;
    int *__iptr;
  } __WAIT_STATUS __attribute__ ((__transparent_union__));
# 96 "/usr/include/stdlib.h" 3 4


typedef struct
  {
    int quot;
    int rem;
  } div_t;



typedef struct
  {
    long int quot;
    long int rem;
  } ldiv_t;







__extension__ typedef struct
  {
    long long int quot;
    long long int rem;
  } lldiv_t;


# 140 "/usr/include/stdlib.h" 3 4
extern size_t __ctype_get_mb_cur_max (void) __attribute__ ((__nothrow__)) ;




extern double atof (__const char *__nptr)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;

extern int atoi (__const char *__nptr)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;

extern long int atol (__const char *__nptr)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;





__extension__ extern long long int atoll (__const char *__nptr)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;





extern double strtod (__const char *__restrict __nptr,
        char **__restrict __endptr)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;





extern float strtof (__const char *__restrict __nptr,
       char **__restrict __endptr) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;

extern long double strtold (__const char *__restrict __nptr,
       char **__restrict __endptr)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;





extern long int strtol (__const char *__restrict __nptr,
   char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;

extern unsigned long int strtoul (__const char *__restrict __nptr,
      char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;




__extension__
extern long long int strtoq (__const char *__restrict __nptr,
        char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;

__extension__
extern unsigned long long int strtouq (__const char *__restrict __nptr,
           char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;





__extension__
extern long long int strtoll (__const char *__restrict __nptr,
         char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;

__extension__
extern unsigned long long int strtoull (__const char *__restrict __nptr,
     char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;

# 236 "/usr/include/stdlib.h" 3 4
# 1 "/usr/include/xlocale.h" 1 3 4
# 28 "/usr/include/xlocale.h" 3 4
typedef struct __locale_struct
{

  struct locale_data *__locales[13];


  const unsigned short int *__ctype_b;
  const int *__ctype_tolower;
  const int *__ctype_toupper;


  const char *__names[13];
} *__locale_t;


typedef __locale_t locale_t;
# 237 "/usr/include/stdlib.h" 2 3 4



extern long int strtol_l (__const char *__restrict __nptr,
     char **__restrict __endptr, int __base,
     __locale_t __loc) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) ;

extern unsigned long int strtoul_l (__const char *__restrict __nptr,
        char **__restrict __endptr,
        int __base, __locale_t __loc)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) ;

__extension__
extern long long int strtoll_l (__const char *__restrict __nptr,
    char **__restrict __endptr, int __base,
    __locale_t __loc)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) ;

__extension__
extern unsigned long long int strtoull_l (__const char *__restrict __nptr,
       char **__restrict __endptr,
       int __base, __locale_t __loc)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) ;

extern double strtod_l (__const char *__restrict __nptr,
   char **__restrict __endptr, __locale_t __loc)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))) ;

extern float strtof_l (__const char *__restrict __nptr,
         char **__restrict __endptr, __locale_t __loc)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))) ;

extern long double strtold_l (__const char *__restrict __nptr,
         char **__restrict __endptr,
         __locale_t __loc)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))) ;





extern __inline __attribute__ ((__gnu_inline__)) double
__attribute__ ((__nothrow__)) atof (__const char *__nptr)
{
  return strtod (__nptr, (char **) ((void *)0));
}
extern __inline __attribute__ ((__gnu_inline__)) int
__attribute__ ((__nothrow__)) atoi (__const char *__nptr)
{
  return (int) strtol (__nptr, (char **) ((void *)0), 10);
}
extern __inline __attribute__ ((__gnu_inline__)) long int
__attribute__ ((__nothrow__)) atol (__const char *__nptr)
{
  return strtol (__nptr, (char **) ((void *)0), 10);
}




__extension__ extern __inline __attribute__ ((__gnu_inline__)) long long int
__attribute__ ((__nothrow__)) atoll (__const char *__nptr)
{
  return strtoll (__nptr, (char **) ((void *)0), 10);
}

# 311 "/usr/include/stdlib.h" 3 4
extern char *l64a (long int __n) __attribute__ ((__nothrow__)) ;


extern long int a64l (__const char *__s)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
# 327 "/usr/include/stdlib.h" 3 4
extern long int random (void) __attribute__ ((__nothrow__));


extern void srandom (unsigned int __seed) __attribute__ ((__nothrow__));





extern char *initstate (unsigned int __seed, char *__statebuf,
   size_t __statelen) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));



extern char *setstate (char *__statebuf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));







struct random_data
  {
    int32_t *fptr;
    int32_t *rptr;
    int32_t *state;
    int rand_type;
    int rand_deg;
    int rand_sep;
    int32_t *end_ptr;
  };

extern int random_r (struct random_data *__restrict __buf,
       int32_t *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));

extern int srandom_r (unsigned int __seed, struct random_data *__buf)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));

extern int initstate_r (unsigned int __seed, char *__restrict __statebuf,
   size_t __statelen,
   struct random_data *__restrict __buf)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4)));

extern int setstate_r (char *__restrict __statebuf,
         struct random_data *__restrict __buf)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));






extern int rand (void) __attribute__ ((__nothrow__));

extern void srand (unsigned int __seed) __attribute__ ((__nothrow__));




extern int rand_r (unsigned int *__seed) __attribute__ ((__nothrow__));







extern double drand48 (void) __attribute__ ((__nothrow__));
extern double erand48 (unsigned short int __xsubi[3]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern long int lrand48 (void) __attribute__ ((__nothrow__));
extern long int nrand48 (unsigned short int __xsubi[3])
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern long int mrand48 (void) __attribute__ ((__nothrow__));
extern long int jrand48 (unsigned short int __xsubi[3])
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern void srand48 (long int __seedval) __attribute__ ((__nothrow__));
extern unsigned short int *seed48 (unsigned short int __seed16v[3])
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern void lcong48 (unsigned short int __param[7]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));





struct drand48_data
  {
    unsigned short int __x[3];
    unsigned short int __old_x[3];
    unsigned short int __c;
    unsigned short int __init;
    unsigned long long int __a;
  };


extern int drand48_r (struct drand48_data *__restrict __buffer,
        double *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern int erand48_r (unsigned short int __xsubi[3],
        struct drand48_data *__restrict __buffer,
        double *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));


extern int lrand48_r (struct drand48_data *__restrict __buffer,
        long int *__restrict __result)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern int nrand48_r (unsigned short int __xsubi[3],
        struct drand48_data *__restrict __buffer,
        long int *__restrict __result)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));


extern int mrand48_r (struct drand48_data *__restrict __buffer,
        long int *__restrict __result)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern int jrand48_r (unsigned short int __xsubi[3],
        struct drand48_data *__restrict __buffer,
        long int *__restrict __result)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));


extern int srand48_r (long int __seedval, struct drand48_data *__buffer)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));

extern int seed48_r (unsigned short int __seed16v[3],
       struct drand48_data *__buffer) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));

extern int lcong48_r (unsigned short int __param[7],
        struct drand48_data *__buffer)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));









extern void *malloc (size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;

extern void *calloc (size_t __nmemb, size_t __size)
     __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;










extern void *realloc (void *__ptr, size_t __size)
     __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));

extern void free (void *__ptr) __attribute__ ((__nothrow__));




extern void cfree (void *__ptr) __attribute__ ((__nothrow__));



# 1 "/usr/include/alloca.h" 1 3 4
# 25 "/usr/include/alloca.h" 3 4
# 1 "/home/meissner/fsf-build-ppc64/lra/gcc/include/stddef.h" 1 3 4
# 26 "/usr/include/alloca.h" 2 3 4







extern void *alloca (size_t __size) __attribute__ ((__nothrow__));






# 498 "/usr/include/stdlib.h" 2 3 4




extern void *valloc (size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;




extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;




extern void abort (void) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));



extern int atexit (void (*__func) (void)) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
# 527 "/usr/include/stdlib.h" 3 4
extern int at_quick_exit (void (*__func) (void)) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));







extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));






extern void exit (int __status) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));







extern void quick_exit (int __status) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));







extern void _Exit (int __status) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));






extern char *getenv (__const char *__name) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;




extern char *__secure_getenv (__const char *__name)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;





extern int putenv (char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));





extern int setenv (__const char *__name, __const char *__value, int __replace)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));


extern int unsetenv (__const char *__name) __attribute__ ((__nothrow__));






extern int clearenv (void) __attribute__ ((__nothrow__));
# 604 "/usr/include/stdlib.h" 3 4
extern char *mktemp (char *__template) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
# 618 "/usr/include/stdlib.h" 3 4
extern int mkstemp (char *__template) __asm__ ("" "mkstemp64")
     __attribute__ ((__nonnull__ (1))) ;





extern int mkstemp64 (char *__template) __attribute__ ((__nonnull__ (1))) ;
# 640 "/usr/include/stdlib.h" 3 4
extern int mkstemps (char *__template, int __suffixlen) __asm__ ("" "mkstemps64")
                     __attribute__ ((__nonnull__ (1))) ;





extern int mkstemps64 (char *__template, int __suffixlen)
     __attribute__ ((__nonnull__ (1))) ;
# 658 "/usr/include/stdlib.h" 3 4
extern char *mkdtemp (char *__template) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
# 672 "/usr/include/stdlib.h" 3 4
extern int mkostemp (char *__template, int __flags) __asm__ ("" "mkostemp64")
     __attribute__ ((__nonnull__ (1))) ;





extern int mkostemp64 (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) ;
# 693 "/usr/include/stdlib.h" 3 4
extern int mkostemps (char *__template, int __suffixlen, int __flags) __asm__ ("" "mkostemps64")

     __attribute__ ((__nonnull__ (1))) ;





extern int mkostemps64 (char *__template, int __suffixlen, int __flags)
     __attribute__ ((__nonnull__ (1))) ;









extern int system (__const char *__command) ;






extern char *canonicalize_file_name (__const char *__name)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
# 729 "/usr/include/stdlib.h" 3 4
extern char *realpath (__const char *__restrict __name,
         char *__restrict __resolved) __attribute__ ((__nothrow__)) ;






typedef int (*__compar_fn_t) (__const void *, __const void *);


typedef __compar_fn_t comparison_fn_t;



typedef int (*__compar_d_fn_t) (__const void *, __const void *, void *);





extern void *bsearch (__const void *__key, __const void *__base,
        size_t __nmemb, size_t __size, __compar_fn_t __compar)
     __attribute__ ((__nonnull__ (1, 2, 5))) ;



extern void qsort (void *__base, size_t __nmemb, size_t __size,
     __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4)));

extern void qsort_r (void *__base, size_t __nmemb, size_t __size,
       __compar_d_fn_t __compar, void *__arg)
  __attribute__ ((__nonnull__ (1, 4)));




extern int abs (int __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
extern long int labs (long int __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;



__extension__ extern long long int llabs (long long int __x)
     __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;







extern div_t div (int __numer, int __denom)
     __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
extern ldiv_t ldiv (long int __numer, long int __denom)
     __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;




__extension__ extern lldiv_t lldiv (long long int __numer,
        long long int __denom)
     __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;

# 802 "/usr/include/stdlib.h" 3 4
extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt,
     int *__restrict __sign) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;




extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt,
     int *__restrict __sign) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;




extern char *gcvt (double __value, int __ndigit, char *__buf)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))) ;




extern char *qecvt (long double __value, int __ndigit,
      int *__restrict __decpt, int *__restrict __sign)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
extern char *qfcvt (long double __value, int __ndigit,
      int *__restrict __decpt, int *__restrict __sign)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
extern char *qgcvt (long double __value, int __ndigit, char *__buf)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))) ;




extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt,
     int *__restrict __sign, char *__restrict __buf,
     size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt,
     int *__restrict __sign, char *__restrict __buf,
     size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));

extern int qecvt_r (long double __value, int __ndigit,
      int *__restrict __decpt, int *__restrict __sign,
      char *__restrict __buf, size_t __len)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
extern int qfcvt_r (long double __value, int __ndigit,
      int *__restrict __decpt, int *__restrict __sign,
      char *__restrict __buf, size_t __len)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));







extern int mblen (__const char *__s, size_t __n) __attribute__ ((__nothrow__)) ;


extern int mbtowc (wchar_t *__restrict __pwc,
     __const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__)) ;


extern int wctomb (char *__s, wchar_t __wchar) __attribute__ ((__nothrow__)) ;



extern size_t mbstowcs (wchar_t *__restrict __pwcs,
   __const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__));

extern size_t wcstombs (char *__restrict __s,
   __const wchar_t *__restrict __pwcs, size_t __n)
     __attribute__ ((__nothrow__));








extern int rpmatch (__const char *__response) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
# 890 "/usr/include/stdlib.h" 3 4
extern int getsubopt (char **__restrict __optionp,
        char *__const *__restrict __tokens,
        char **__restrict __valuep)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2, 3))) ;





extern void setkey (__const char *__key) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));







extern int posix_openpt (int __oflag) ;







extern int grantpt (int __fd) __attribute__ ((__nothrow__));



extern int unlockpt (int __fd) __attribute__ ((__nothrow__));




extern char *ptsname (int __fd) __attribute__ ((__nothrow__)) ;






extern int ptsname_r (int __fd, char *__buf, size_t __buflen)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));


extern int getpt (void);






extern int getloadavg (double __loadavg[], int __nelem)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
# 958 "/usr/include/stdlib.h" 3 4

# 28 "/home/meissner/fsf-src/lra/libgfortran/generated/matmul_i2.c" 2
# 1 "/usr/include/string.h" 1 3 4
# 28 "/usr/include/string.h" 3 4





# 1 "/home/meissner/fsf-build-ppc64/lra/gcc/include/stddef.h" 1 3 4
# 34 "/usr/include/string.h" 2 3 4









extern void *memcpy (void *__restrict __dest,
       __const void *__restrict __src, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));


extern void *memmove (void *__dest, __const void *__src, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));






extern void *memccpy (void *__restrict __dest, __const void *__restrict __src,
        int __c, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));





extern void *memset (void *__s, int __c, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int memcmp (__const void *__s1, __const void *__s2, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
# 94 "/usr/include/string.h" 3 4
extern void *memchr (__const void *__s, int __c, size_t __n)
      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));


# 108 "/usr/include/string.h" 3 4
extern void *rawmemchr (__const void *__s, int __c)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
# 119 "/usr/include/string.h" 3 4
extern void *memrchr (__const void *__s, int __c, size_t __n)
      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));






extern char *strcpy (char *__restrict __dest, __const char *__restrict __src)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));

extern char *strncpy (char *__restrict __dest,
        __const char *__restrict __src, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));


extern char *strcat (char *__restrict __dest, __const char *__restrict __src)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));

extern char *strncat (char *__restrict __dest, __const char *__restrict __src,
        size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));


extern int strcmp (__const char *__s1, __const char *__s2)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));

extern int strncmp (__const char *__s1, __const char *__s2, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));


extern int strcoll (__const char *__s1, __const char *__s2)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));

extern size_t strxfrm (char *__restrict __dest,
         __const char *__restrict __src, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));

# 164 "/usr/include/string.h" 3 4
extern int strcoll_l (__const char *__s1, __const char *__s2, __locale_t __l)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3)));

extern size_t strxfrm_l (char *__dest, __const char *__src, size_t __n,
    __locale_t __l) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4)));




extern char *strdup (__const char *__s)
     __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));






extern char *strndup (__const char *__string, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));
# 208 "/usr/include/string.h" 3 4

# 233 "/usr/include/string.h" 3 4
extern char *strchr (__const char *__s, int __c)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
# 260 "/usr/include/string.h" 3 4
extern char *strrchr (__const char *__s, int __c)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));


# 274 "/usr/include/string.h" 3 4
extern char *strchrnul (__const char *__s, int __c)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));






extern size_t strcspn (__const char *__s, __const char *__reject)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));


extern size_t strspn (__const char *__s, __const char *__accept)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
# 312 "/usr/include/string.h" 3 4
extern char *strpbrk (__const char *__s, __const char *__accept)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
# 340 "/usr/include/string.h" 3 4
extern char *strstr (__const char *__haystack, __const char *__needle)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));




extern char *strtok (char *__restrict __s, __const char *__restrict __delim)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));




extern char *__strtok_r (char *__restrict __s,
    __const char *__restrict __delim,
    char **__restrict __save_ptr)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));

extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim,
         char **__restrict __save_ptr)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));
# 371 "/usr/include/string.h" 3 4
extern char *strcasestr (__const char *__haystack, __const char *__needle)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));







extern void *memmem (__const void *__haystack, size_t __haystacklen,
       __const void *__needle, size_t __needlelen)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 3)));



extern void *__mempcpy (void *__restrict __dest,
   __const void *__restrict __src, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern void *mempcpy (void *__restrict __dest,
        __const void *__restrict __src, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));





extern size_t strlen (__const char *__s)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));





extern size_t strnlen (__const char *__string, size_t __maxlen)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));





extern char *strerror (int __errnum) __attribute__ ((__nothrow__));

# 436 "/usr/include/string.h" 3 4
extern char *strerror_r (int __errnum, char *__buf, size_t __buflen)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));





extern char *strerror_l (int __errnum, __locale_t __l) __attribute__ ((__nothrow__));





extern void __bzero (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));



extern void bcopy (__const void *__src, void *__dest, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));


extern void bzero (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int bcmp (__const void *__s1, __const void *__s2, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
# 487 "/usr/include/string.h" 3 4
extern char *index (__const char *__s, int __c)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
# 515 "/usr/include/string.h" 3 4
extern char *rindex (__const char *__s, int __c)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));




extern int ffs (int __i) __attribute__ ((__nothrow__)) __attribute__ ((__const__));




extern int ffsl (long int __l) __attribute__ ((__nothrow__)) __attribute__ ((__const__));

__extension__ extern int ffsll (long long int __ll)
     __attribute__ ((__nothrow__)) __attribute__ ((__const__));




extern int strcasecmp (__const char *__s1, __const char *__s2)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));


extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));





extern int strcasecmp_l (__const char *__s1, __const char *__s2,
    __locale_t __loc)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3)));

extern int strncasecmp_l (__const char *__s1, __const char *__s2,
     size_t __n, __locale_t __loc)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 4)));





extern char *strsep (char **__restrict __stringp,
       __const char *__restrict __delim)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));




extern char *strsignal (int __sig) __attribute__ ((__nothrow__));


extern char *__stpcpy (char *__restrict __dest, __const char *__restrict __src)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern char *stpcpy (char *__restrict __dest, __const char *__restrict __src)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));



extern char *__stpncpy (char *__restrict __dest,
   __const char *__restrict __src, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern char *stpncpy (char *__restrict __dest,
        __const char *__restrict __src, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));




extern int strverscmp (__const char *__s1, __const char *__s2)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));


extern char *strfry (char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern void *memfrob (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
# 604 "/usr/include/string.h" 3 4
extern char *basename (__const char *__filename) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
# 632 "/usr/include/string.h" 3 4
# 1 "/usr/include/bits/string.h" 1 3 4
# 633 "/usr/include/string.h" 2 3 4


# 1 "/usr/include/bits/string2.h" 1 3 4
# 80 "/usr/include/bits/string2.h" 3 4
typedef struct { unsigned char __arr[2]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR2;
typedef struct { unsigned char __arr[3]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR3;
typedef struct { unsigned char __arr[4]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR4;
typedef struct { unsigned char __arr[5]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR5;
typedef struct { unsigned char __arr[6]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR6;
typedef struct { unsigned char __arr[7]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR7;
typedef struct { unsigned char __arr[8]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR8;
# 394 "/usr/include/bits/string2.h" 3 4
extern void *__rawmemchr (const void *__s, int __c);
# 969 "/usr/include/bits/string2.h" 3 4
extern __inline __attribute__ ((__gnu_inline__)) size_t __strcspn_c1 (__const char *__s, int __reject);
extern __inline __attribute__ ((__gnu_inline__)) size_t
__strcspn_c1 (__const char *__s, int __reject)
{
  register size_t __result = 0;
  while (__s[__result] != '\0' && __s[__result] != __reject)
    ++__result;
  return __result;
}

extern __inline __attribute__ ((__gnu_inline__)) size_t __strcspn_c2 (__const char *__s, int __reject1,
         int __reject2);
extern __inline __attribute__ ((__gnu_inline__)) size_t
__strcspn_c2 (__const char *__s, int __reject1, int __reject2)
{
  register size_t __result = 0;
  while (__s[__result] != '\0' && __s[__result] != __reject1
  && __s[__result] != __reject2)
    ++__result;
  return __result;
}

extern __inline __attribute__ ((__gnu_inline__)) size_t __strcspn_c3 (__const char *__s, int __reject1,
         int __reject2, int __reject3);
extern __inline __attribute__ ((__gnu_inline__)) size_t
__strcspn_c3 (__const char *__s, int __reject1, int __reject2,
       int __reject3)
{
  register size_t __result = 0;
  while (__s[__result] != '\0' && __s[__result] != __reject1
  && __s[__result] != __reject2 && __s[__result] != __reject3)
    ++__result;
  return __result;
}
# 1045 "/usr/include/bits/string2.h" 3 4
extern __inline __attribute__ ((__gnu_inline__)) size_t __strspn_c1 (__const char *__s, int __accept);
extern __inline __attribute__ ((__gnu_inline__)) size_t
__strspn_c1 (__const char *__s, int __accept)
{
  register size_t __result = 0;

  while (__s[__result] == __accept)
    ++__result;
  return __result;
}

extern __inline __attribute__ ((__gnu_inline__)) size_t __strspn_c2 (__const char *__s, int __accept1,
        int __accept2);
extern __inline __attribute__ ((__gnu_inline__)) size_t
__strspn_c2 (__const char *__s, int __accept1, int __accept2)
{
  register size_t __result = 0;

  while (__s[__result] == __accept1 || __s[__result] == __accept2)
    ++__result;
  return __result;
}

extern __inline __attribute__ ((__gnu_inline__)) size_t __strspn_c3 (__const char *__s, int __accept1,
        int __accept2, int __accept3);
extern __inline __attribute__ ((__gnu_inline__)) size_t
__strspn_c3 (__const char *__s, int __accept1, int __accept2, int __accept3)
{
  register size_t __result = 0;

  while (__s[__result] == __accept1 || __s[__result] == __accept2
  || __s[__result] == __accept3)
    ++__result;
  return __result;
}
# 1121 "/usr/include/bits/string2.h" 3 4
extern __inline __attribute__ ((__gnu_inline__)) char *__strpbrk_c2 (__const char *__s, int __accept1,
         int __accept2);
extern __inline __attribute__ ((__gnu_inline__)) char *
__strpbrk_c2 (__const char *__s, int __accept1, int __accept2)
{

  while (*__s != '\0' && *__s != __accept1 && *__s != __accept2)
    ++__s;
  return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
}

extern __inline __attribute__ ((__gnu_inline__)) char *__strpbrk_c3 (__const char *__s, int __accept1,
         int __accept2, int __accept3);
extern __inline __attribute__ ((__gnu_inline__)) char *
__strpbrk_c3 (__const char *__s, int __accept1, int __accept2,
       int __accept3)
{

  while (*__s != '\0' && *__s != __accept1 && *__s != __accept2
  && *__s != __accept3)
    ++__s;
  return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
}
# 1172 "/usr/include/bits/string2.h" 3 4
extern __inline __attribute__ ((__gnu_inline__)) char *__strtok_r_1c (char *__s, char __sep, char **__nextp);
extern __inline __attribute__ ((__gnu_inline__)) char *
__strtok_r_1c (char *__s, char __sep, char **__nextp)
{
  char *__result;
  if (__s == ((void *)0))
    __s = *__nextp;
  while (*__s == __sep)
    ++__s;
  __result = ((void *)0);
  if (*__s != '\0')
    {
      __result = __s++;
      while (*__s != '\0')
 if (*__s++ == __sep)
   {
     __s[-1] = '\0';
     break;
   }
    }
  *__nextp = __s;
  return __result;
}
# 1204 "/usr/include/bits/string2.h" 3 4
extern char *__strsep_g (char **__stringp, __const char *__delim);
# 1222 "/usr/include/bits/string2.h" 3 4
extern __inline __attribute__ ((__gnu_inline__)) char *__strsep_1c (char **__s, char __reject);
extern __inline __attribute__ ((__gnu_inline__)) char *
__strsep_1c (char **__s, char __reject)
{
  register char *__retval = *__s;
  if (__retval != ((void *)0) && (*__s = (__extension__ (__builtin_constant_p (__reject) && !__builtin_constant_p (__retval) && (__reject) == '\0' ? (char *) __rawmemchr (__retval, __reject) : __builtin_strchr (__retval, __reject)))) != ((void *)0))
    *(*__s)++ = '\0';
  return __retval;
}

extern __inline __attribute__ ((__gnu_inline__)) char *__strsep_2c (char **__s, char __reject1, char __reject2);
extern __inline __attribute__ ((__gnu_inline__)) char *
__strsep_2c (char **__s, char __reject1, char __reject2)
{
  register char *__retval = *__s;
  if (__retval != ((void *)0))
    {
      register char *__cp = __retval;
      while (1)
 {
   if (*__cp == '\0')
     {
       __cp = ((void *)0);
   break;
     }
   if (*__cp == __reject1 || *__cp == __reject2)
     {
       *__cp++ = '\0';
       break;
     }
   ++__cp;
 }
      *__s = __cp;
    }
  return __retval;
}

extern __inline __attribute__ ((__gnu_inline__)) char *__strsep_3c (char **__s, char __reject1, char __reject2,
       char __reject3);
extern __inline __attribute__ ((__gnu_inline__)) char *
__strsep_3c (char **__s, char __reject1, char __reject2, char __reject3)
{
  register char *__retval = *__s;
  if (__retval != ((void *)0))
    {
      register char *__cp = __retval;
      while (1)
 {
   if (*__cp == '\0')
     {
       __cp = ((void *)0);
   break;
     }
   if (*__cp == __reject1 || *__cp == __reject2 || *__cp == __reject3)
     {
       *__cp++ = '\0';
       break;
     }
   ++__cp;
 }
      *__s = __cp;
    }
  return __retval;
}
# 1303 "/usr/include/bits/string2.h" 3 4
extern char *__strdup (__const char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__));
# 1322 "/usr/include/bits/string2.h" 3 4
extern char *__strndup (__const char *__string, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__malloc__));
# 636 "/usr/include/string.h" 2 3 4
# 644 "/usr/include/string.h" 3 4

# 29 "/home/meissner/fsf-src/lra/libgfortran/generated/matmul_i2.c" 2
# 1 "/usr/include/assert.h" 1 3 4
# 66 "/usr/include/assert.h" 3 4



extern void __assert_fail (__const char *__assertion, __const char *__file,
      unsigned int __line, __const char *__function)
     __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));


extern void __assert_perror_fail (int __errnum, __const char *__file,
      unsigned int __line,
      __const char *__function)
     __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));




extern void __assert (const char *__assertion, const char *__file, int __line)
     __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));



# 30 "/home/meissner/fsf-src/lra/libgfortran/generated/matmul_i2.c" 2
# 38 "/home/meissner/fsf-src/lra/libgfortran/generated/matmul_i2.c"
typedef void (*blas_call)(const char *, const char *, const int *, const int *,
                          const int *, const GFC_INTEGER_2 *, const GFC_INTEGER_2 *,
                          const int *, const GFC_INTEGER_2 *, const int *,
                          const GFC_INTEGER_2 *, GFC_INTEGER_2 *, const int *,
                          int, int);
# 73 "/home/meissner/fsf-src/lra/libgfortran/generated/matmul_i2.c"
extern void matmul_i2 (gfc_array_i2 * const restrict retarray,
 gfc_array_i2 * const restrict a, gfc_array_i2 * const restrict b, int try_blas,
 int blas_limit, blas_call gemm);
extern __typeof(matmul_i2) matmul_i2 __asm__("" "_gfortran_matmul_i2");

void
matmul_i2 (gfc_array_i2 * const restrict retarray,
 gfc_array_i2 * const restrict a, gfc_array_i2 * const restrict b, int try_blas,
 int blas_limit, blas_call gemm)
{
  const GFC_INTEGER_2 * restrict abase;
  const GFC_INTEGER_2 * restrict bbase;
  GFC_INTEGER_2 * restrict dest;

  index_type rxstride, rystride, axstride, aystride, bxstride, bystride;
  index_type x, y, n, count, xcount, ycount;

  ((((a)->dtype & 0x07) == 2 || ((b)->dtype & 0x07) == 2) ? (void) (0) : __assert_fail ("((a)->dtype & 0x07) == 2 || ((b)->dtype & 0x07) == 2",
 "/home/meissner/fsf-src/lra/libgfortran/generated/matmul_i2.c"
# 90 "/home/meissner/fsf-src/lra/libgfortran/generated/matmul_i2.c" 3 4
  ,
 91
# 90 "/home/meissner/fsf-src/lra/libgfortran/generated/matmul_i2.c" 3 4
  , __PRETTY_FUNCTION__))
                                          ;
# 104 "/home/meissner/fsf-src/lra/libgfortran/generated/matmul_i2.c"
  if (retarray->base_addr == ((void *)0))
    {
      if (((a)->dtype & 0x07) == 1)
        {
   do { (retarray->dim[0]).lower_bound = 0; (retarray->dim[0])._ubound = ((b)->dim[1]._ubound + 1 - (b)->dim[1].lower_bound) - 1; (retarray->dim[0])._stride = 1; } while (0)
                                                       ;
        }
      else if (((b)->dtype & 0x07) == 1)
        {
   do { (retarray->dim[0]).lower_bound = 0; (retarray->dim[0])._ubound = ((a)->dim[0]._ubound + 1 - (a)->dim[0].lower_bound) - 1; (retarray->dim[0])._stride = 1; } while (0)
                                                       ;
        }
      else
        {
   do { (retarray->dim[0]).lower_bound = 0; (retarray->dim[0])._ubound = ((a)->dim[0]._ubound + 1 - (a)->dim[0].lower_bound) - 1; (retarray->dim[0])._stride = 1; } while (0)
                                                       ;

          do { (retarray->dim[1]).lower_bound = 0; (retarray->dim[1])._ubound = ((b)->dim[1]._ubound + 1 - (b)->dim[1].lower_bound) - 1; (retarray->dim[1])._stride = ((retarray)->dim[0]._ubound + 1 - (retarray)->dim[0].lower_bound); } while (0)

                                         ;
        }

      retarray->base_addr
 = xmalloc (sizeof (GFC_INTEGER_2) * size0 ((array_t *) retarray));
      retarray->offset = 0;
    }
    else if (__builtin_expect(!!(compile_options.bounds_check), 0))
      {
 index_type ret_extent, arg_extent;

 if (((a)->dtype & 0x07) == 1)
   {
     arg_extent = ((b)->dim[1]._ubound + 1 - (b)->dim[1].lower_bound);
     ret_extent = ((retarray)->dim[0]._ubound + 1 - (retarray)->dim[0].lower_bound);
     if (arg_extent != ret_extent)
       runtime_error ("Incorrect extent in return array in"
        " MATMUL intrinsic: is %ld, should be %ld",
        (long int) ret_extent, (long int) arg_extent);
   }
 else if (((b)->dtype & 0x07) == 1)
   {
     arg_extent = ((a)->dim[0]._ubound + 1 - (a)->dim[0].lower_bound);
     ret_extent = ((retarray)->dim[0]._ubound + 1 - (retarray)->dim[0].lower_bound);
     if (arg_extent != ret_extent)
       runtime_error ("Incorrect extent in return array in"
        " MATMUL intrinsic: is %ld, should be %ld",
        (long int) ret_extent, (long int) arg_extent);
   }
 else
   {
     arg_extent = ((a)->dim[0]._ubound + 1 - (a)->dim[0].lower_bound);
     ret_extent = ((retarray)->dim[0]._ubound + 1 - (retarray)->dim[0].lower_bound);
     if (arg_extent != ret_extent)
       runtime_error ("Incorrect extent in return array in"
        " MATMUL intrinsic for dimension 1:"
        " is %ld, should be %ld",
        (long int) ret_extent, (long int) arg_extent);

     arg_extent = ((b)->dim[1]._ubound + 1 - (b)->dim[1].lower_bound);
     ret_extent = ((retarray)->dim[1]._ubound + 1 - (retarray)->dim[1].lower_bound);
     if (arg_extent != ret_extent)
       runtime_error ("Incorrect extent in return array in"
        " MATMUL intrinsic for dimension 2:"
        " is %ld, should be %ld",
        (long int) ret_extent, (long int) arg_extent);
   }
      }


  if (((retarray)->dtype & 0x07) == 1)
    {



      rxstride = rystride = ((retarray)->dim[0]._stride);
    }
  else
    {
      rxstride = ((retarray)->dim[0]._stride);
      rystride = ((retarray)->dim[1]._stride);
    }


  if (((a)->dtype & 0x07) == 1)
    {

      axstride = ((a)->dim[0]._stride);
      aystride = 1;

      xcount = 1;
      count = ((a)->dim[0]._ubound + 1 - (a)->dim[0].lower_bound);
    }
  else
    {
      axstride = ((a)->dim[0]._stride);
      aystride = ((a)->dim[1]._stride);

      count = ((a)->dim[1]._ubound + 1 - (a)->dim[1].lower_bound);
      xcount = ((a)->dim[0]._ubound + 1 - (a)->dim[0].lower_bound);
    }

  if (count != ((b)->dim[0]._ubound + 1 - (b)->dim[0].lower_bound))
    {
      if (count > 0 || ((b)->dim[0]._ubound + 1 - (b)->dim[0].lower_bound) > 0)
 runtime_error ("dimension of array B incorrect in MATMUL intrinsic");
    }

  if (((b)->dtype & 0x07) == 1)
    {

      bxstride = ((b)->dim[0]._stride);




      bystride = 0xDEADBEEF;
      ycount = 1;
    }
  else
    {
      bxstride = ((b)->dim[0]._stride);
      bystride = ((b)->dim[1]._stride);
      ycount = ((b)->dim[1]._ubound + 1 - (b)->dim[1].lower_bound);
    }

  abase = a->base_addr;
  bbase = b->base_addr;
  dest = retarray->base_addr;







  if (try_blas && rxstride == 1 && (axstride == 1 || aystride == 1)
      && (bxstride == 1 || bystride == 1)
      && (((float) xcount) * ((float) ycount) * ((float) count)
          > (((float) (blas_limit)) * ((float) (blas_limit)) * ((float) (blas_limit)))))
  {
    const int m = xcount, n = ycount, k = count, ldc = rystride;
    const GFC_INTEGER_2 one = 1, zero = 0;
    const int lda = (axstride == 1) ? aystride : axstride,
              ldb = (bxstride == 1) ? bystride : bxstride;

    if (lda > 0 && ldb > 0 && ldc > 0 && m > 1 && n > 1 && k > 1)
      {
        ((gemm != ((void *)0)) ? (void) (0) : __assert_fail ("gemm != ((void *)0)", "/home/meissner/fsf-src/lra/libgfortran/generated/matmul_i2.c", 251, __PRETTY_FUNCTION__));
        gemm (axstride == 1 ? "N" : "T", bxstride == 1 ? "N" : "T", &m, &n, &k,
              &one, abase, &lda, bbase, &ldb, &zero, dest, &ldc, 1, 1);
        return;
      }
  }

  if (rxstride == 1 && axstride == 1 && bxstride == 1)
    {
      const GFC_INTEGER_2 * restrict bbase_y;
      GFC_INTEGER_2 * restrict dest_y;
      const GFC_INTEGER_2 * restrict abase_n;
      GFC_INTEGER_2 bbase_yn;

      if (rystride == xcount)
 memset (dest, 0, (sizeof (GFC_INTEGER_2) * xcount * ycount));
      else
 {
   for (y = 0; y < ycount; y++)
     for (x = 0; x < xcount; x++)
       dest[x + y*rystride] = (GFC_INTEGER_2)0;
 }

      for (y = 0; y < ycount; y++)
 {
   bbase_y = bbase + y*bystride;
   dest_y = dest + y*rystride;
   for (n = 0; n < count; n++)
     {
       abase_n = abase + n*aystride;
       bbase_yn = bbase_y[n];
       for (x = 0; x < xcount; x++)
  {
    dest_y[x] += abase_n[x] * bbase_yn;
  }
     }
 }
    }
  else if (rxstride == 1 && aystride == 1 && bxstride == 1)
    {
      if (((a)->dtype & 0x07) != 1)
 {
   const GFC_INTEGER_2 *restrict abase_x;
   const GFC_INTEGER_2 *restrict bbase_y;
   GFC_INTEGER_2 *restrict dest_y;
   GFC_INTEGER_2 s;

   for (y = 0; y < ycount; y++)
     {
       bbase_y = &bbase[y*bystride];
       dest_y = &dest[y*rystride];
       for (x = 0; x < xcount; x++)
  {
    abase_x = &abase[x*axstride];
    s = (GFC_INTEGER_2) 0;
    for (n = 0; n < count; n++)
      s += abase_x[n] * bbase_y[n];
    dest_y[x] = s;
  }
     }
 }
      else
 {
   const GFC_INTEGER_2 *restrict bbase_y;
   GFC_INTEGER_2 s;

   for (y = 0; y < ycount; y++)
     {
       bbase_y = &bbase[y*bystride];
       s = (GFC_INTEGER_2) 0;
       for (n = 0; n < count; n++)
  s += abase[n*axstride] * bbase_y[n];
       dest[y*rystride] = s;
     }
 }
    }
  else if (axstride < aystride)
    {
      for (y = 0; y < ycount; y++)
 for (x = 0; x < xcount; x++)
   dest[x*rxstride + y*rystride] = (GFC_INTEGER_2)0;

      for (y = 0; y < ycount; y++)
 for (n = 0; n < count; n++)
   for (x = 0; x < xcount; x++)

     dest[x*rxstride + y*rystride] += abase[x*axstride + n*aystride] * bbase[n*bxstride + y*bystride];
    }
  else if (((a)->dtype & 0x07) == 1)
    {
      const GFC_INTEGER_2 *restrict bbase_y;
      GFC_INTEGER_2 s;

      for (y = 0; y < ycount; y++)
 {
   bbase_y = &bbase[y*bystride];
   s = (GFC_INTEGER_2) 0;
   for (n = 0; n < count; n++)
     s += abase[n*axstride] * bbase_y[n*bxstride];
   dest[y*rxstride] = s;
 }
    }
  else
    {
      const GFC_INTEGER_2 *restrict abase_x;
      const GFC_INTEGER_2 *restrict bbase_y;
      GFC_INTEGER_2 *restrict dest_y;
      GFC_INTEGER_2 s;

      for (y = 0; y < ycount; y++)
 {
   bbase_y = &bbase[y*bystride];
   dest_y = &dest[y*rystride];
   for (x = 0; x < xcount; x++)
     {
       abase_x = &abase[x*axstride];
       s = (GFC_INTEGER_2) 0;
       for (n = 0; n < count; n++)
  s += abase_x[n*aystride] * bbase_y[n*bxstride];
       dest_y[x*rxstride] = s;
     }
 }
    }
}

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [lra] a patch to fix ppc bootstrap failure
  2012-12-05  5:36 [lra] a patch to fix ppc bootstrap failure Vladimir Makarov
  2012-12-05 20:25 ` Michael Meissner
@ 2012-12-05 22:51 ` Michael Meissner
  2012-12-06  3:31   ` Vladimir Makarov
  1 sibling, 1 reply; 7+ messages in thread
From: Michael Meissner @ 2012-12-05 22:51 UTC (permalink / raw)
  To: Vladimir Makarov; +Cc: GCC Patches

This is the file that causes the boostrap to fail if --enable-decimal-float is
used as a configuration option on the LRA branch.  You need to compile this in
32-bit mode with either -mcpu=power7, -mcpu=power6, or -mhard-dfp to enable the
decimal instructions.  I used -m32 -O2 -O3 -mcpu=power6.

The error message is:

/home/meissner/fsf-src/lra/libgcc/dfp-bit.c:248:1: error: unrecognizable insn:
 }
 ^
(insn 291 25 289 2 (set (reg:DD 199)
        (subreg:DD (reg:SD 33 1 [ arg_a ]) 0)) /home/meissner/fsf-src/lra/libgcc/dfp-bit.c:104 -1
     (expr_list:REG_DEAD (reg:DI 33 1)
        (nil)))
/home/meissner/fsf-src/lra/libgcc/dfp-bit.c:248:1: internal compiler error: in extract_insn, at recog.c:2152
0x107b198b _fatal_insn(char const*, rtx_def const*, char const*, int, char const*)
        /home/meissner/fsf-src/lra/gcc/rtl-error.c:110
0x107b19f7 _fatal_insn_not_found(rtx_def const*, char const*, int, char const*)
        /home/meissner/fsf-src/lra/gcc/rtl-error.c:118
0x1074d09b extract_insn(rtx_def*)
        /home/meissner/fsf-src/lra/gcc/recog.c:2152
0x10664a03 check_rtl
        /home/meissner/fsf-src/lra/gcc/lra.c:2009
0x106674bf lra(_IO_FILE*)
        /home/meissner/fsf-src/lra/gcc/lra.c:2371
0x105ebd03 do_reload
        /home/meissner/fsf-src/lra/gcc/ira.c:4624
0x105ebfef rest_of_handle_reload
        /home/meissner/fsf-src/lra/gcc/ira.c:4737


-- 
Michael Meissner, IBM
5 Technology Place Drive, M/S 2757, Westford, MA 01886-3141, USA
meissner@linux.vnet.ibm.com	fax +1 (978) 399-6899

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [lra] a patch to fix ppc bootstrap failure
  2012-12-05 22:51 ` Michael Meissner
@ 2012-12-06  3:31   ` Vladimir Makarov
  2012-12-06 21:28     ` Vladimir Makarov
  0 siblings, 1 reply; 7+ messages in thread
From: Vladimir Makarov @ 2012-12-06  3:31 UTC (permalink / raw)
  To: Michael Meissner, GCC Patches

On 12-12-05 5:51 PM, Michael Meissner wrote:
> This is the file that causes the boostrap to fail if --enable-decimal-float is
> used as a configuration option on the LRA branch.  You need to compile this in
> 32-bit mode with either -mcpu=power7, -mcpu=power6, or -mhard-dfp to enable the
> decimal instructions.  I used -m32 -O2 -O3 -mcpu=power6.
I managed to reproduce it.  I'll look at this tomorrow.
Thanks, Mike.
> The error message is:
>
> /home/meissner/fsf-src/lra/libgcc/dfp-bit.c:248:1: error: unrecognizable insn:
>   }
>   ^
> (insn 291 25 289 2 (set (reg:DD 199)
>          (subreg:DD (reg:SD 33 1 [ arg_a ]) 0)) /home/meissner/fsf-src/lra/libgcc/dfp-bit.c:104 -1
>       (expr_list:REG_DEAD (reg:DI 33 1)
>          (nil)))
>

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [lra] a patch to fix ppc bootstrap failure
  2012-12-06  3:31   ` Vladimir Makarov
@ 2012-12-06 21:28     ` Vladimir Makarov
  2012-12-07 23:04       ` Michael Meissner
  2012-12-11  0:28       ` Michael Meissner
  0 siblings, 2 replies; 7+ messages in thread
From: Vladimir Makarov @ 2012-12-06 21:28 UTC (permalink / raw)
  To: Michael Meissner, GCC Patches

[-- Attachment #1: Type: text/plain, Size: 1411 bytes --]

On 12/05/2012 10:31 PM, Vladimir Makarov wrote:
> On 12-12-05 5:51 PM, Michael Meissner wrote:
>> This is the file that causes the boostrap to fail if 
>> --enable-decimal-float is
>> used as a configuration option on the LRA branch.  You need to 
>> compile this in
>> 32-bit mode with either -mcpu=power7, -mcpu=power6, or -mhard-dfp to 
>> enable the
>> decimal instructions.  I used -m32 -O2 -O3 -mcpu=power6.
> I managed to reproduce it.  I'll look at this tomorrow.
> Thanks, Mike.
>> The error message is:
>>
>> /home/meissner/fsf-src/lra/libgcc/dfp-bit.c:248:1: error: 
>> unrecognizable insn:
>>   }
>>   ^
>> (insn 291 25 289 2 (set (reg:DD 199)
>>          (subreg:DD (reg:SD 33 1 [ arg_a ]) 0)) 
>> /home/meissner/fsf-src/lra/libgcc/dfp-bit.c:104 -1
>>       (expr_list:REG_DEAD (reg:DI 33 1)
>>          (nil)))
>>
>

LRA should have change spilled pseudo 199 to memory.  LRA did not do 
that because the insn is in list of insns used by pseudo 199.  This 
might happen only when the insn is not recognized.

The following patch fixes the bug.

Committed as rev. 194270.

2012-12-06  Vladimir Makarov  <vmakarov@redhat.com>

         * rtl.h (SUBREG_MATCH_RELOAD_P): Rename to LRA_SUBREG_P.
         * recog.c (register_operand): Check LRA_SUBREG_P.
         * lra-constraints.c (match_reload, simplify_operand_subreg): Use
         LRA_SUBREG_P.
         (emit_spill_move): Set up LRA_SUBREG_P.



[-- Attachment #2: ppc-bootstrap3.patch --]
[-- Type: text/x-patch, Size: 3837 bytes --]

Index: lra-constraints.c
===================================================================
--- lra-constraints.c	(revision 194263)
+++ lra-constraints.c	(working copy)
@@ -685,7 +685,7 @@ match_reload (signed char out, signed ch
 	    new_out_reg = gen_lowpart_SUBREG (outmode, reg);
 	  else
 	    new_out_reg = gen_rtx_SUBREG (outmode, reg, 0);
-	  SUBREG_MATCH_RELOAD_P (new_out_reg) = 1;
+	  LRA_SUBREG_P (new_out_reg) = 1;
 	  /* If the input reg is dying here, we can use the same hard
 	     register for REG and IN_RTX.  We do it only for original
 	     pseudos as reload pseudos can die although original
@@ -709,7 +709,7 @@ match_reload (signed char out, signed ch
 	     it at the end of LRA work.  */
 	  clobber = emit_clobber (new_out_reg);
 	  LRA_TEMP_CLOBBER_P (PATTERN (clobber)) = 1;
-	  SUBREG_MATCH_RELOAD_P (new_in_reg) = 1;
+	  LRA_SUBREG_P (new_in_reg) = 1;
 	  if (GET_CODE (in_rtx) == SUBREG)
 	    {
 	      rtx subreg_reg = SUBREG_REG (in_rtx);
@@ -842,12 +842,15 @@ static rtx
 emit_spill_move (bool to_p, rtx mem_pseudo, rtx val)
 {
   if (GET_MODE (mem_pseudo) != GET_MODE (val))
-    val = gen_rtx_SUBREG (GET_MODE (mem_pseudo),
-			  GET_CODE (val) == SUBREG ? SUBREG_REG (val) : val,
-			  0);
+    {
+      val = gen_rtx_SUBREG (GET_MODE (mem_pseudo),
+			    GET_CODE (val) == SUBREG ? SUBREG_REG (val) : val,
+			    0);
+      LRA_SUBREG_P (val) = 1;
+    }
   return (to_p
-	  ? gen_move_insn (mem_pseudo, val)
-	  : gen_move_insn (val, mem_pseudo));
+          ? gen_move_insn (mem_pseudo, val)
+          : gen_move_insn (val, mem_pseudo));
 }
 
 /* Process a special case insn (register move), return true if we
@@ -1193,7 +1196,7 @@ simplify_operand_subreg (int nop, enum m
 				 SUBREG_BYTE (operand), mode) < 0
        /* Don't reload subreg for matching reload.  It is actually
 	  valid subreg in LRA.  */
-       && ! SUBREG_MATCH_RELOAD_P (operand))
+       && ! LRA_SUBREG_P (operand))
       || CONSTANT_P (reg) || GET_CODE (reg) == PLUS || MEM_P (reg))
     {
       enum op_type type = curr_static_id->operand[nop].type;
Index: recog.c
===================================================================
--- recog.c	(revision 194263)
+++ recog.c	(working copy)
@@ -1067,7 +1067,8 @@ register_operand (rtx op, enum machine_m
 	  && REGNO (sub) < FIRST_PSEUDO_REGISTER
 	  && REG_CANNOT_CHANGE_MODE_P (REGNO (sub), GET_MODE (sub), mode)
 	  && GET_MODE_CLASS (GET_MODE (sub)) != MODE_COMPLEX_INT
-	  && GET_MODE_CLASS (GET_MODE (sub)) != MODE_COMPLEX_FLOAT)
+	  && GET_MODE_CLASS (GET_MODE (sub)) != MODE_COMPLEX_FLOAT
+	  && ! LRA_SUBREG_P (op))
 	return 0;
 #endif
 
Index: rtl.h
===================================================================
--- rtl.h	(revision 194263)
+++ rtl.h	(working copy)
@@ -268,7 +268,7 @@ struct GTY((chain_next ("RTX_NEXT (&%h)"
      In a CODE_LABEL, part of the two-bit alternate entry field.
      1 in a CONCAT is VAL_EXPR_IS_COPIED in var-tracking.c.
      1 in a VALUE is SP_BASED_VALUE_P in cselib.c.
-     1 in a SUBREG generated by LRA for matching reload.  */
+     1 in a SUBREG generated by LRA for reload insns.  */
   unsigned int jump : 1;
   /* In a CODE_LABEL, part of the two-bit alternate entry field.
      1 in a MEM if it cannot trap.
@@ -1416,10 +1416,10 @@ do {									\
   ((RTL_FLAG_CHECK1("SUBREG_PROMOTED_UNSIGNED_P", (RTX), SUBREG)->volatil) \
    ? -1 : (int) (RTX)->unchanging)
 
-/* True if the subreg was generated by LRA for matching reload.  Such
+/* True if the subreg was generated by LRA for reload insns.  Such
    subregs are valid only during LRA.  */
-#define SUBREG_MATCH_RELOAD_P(RTX)	\
-  (RTL_FLAG_CHECK1("SUBREG_MATCH_RELOAD_P", (RTX), SUBREG)->jump)
+#define LRA_SUBREG_P(RTX)	\
+  (RTL_FLAG_CHECK1("LRA_SUBREG_P", (RTX), SUBREG)->jump)
 
 /* Access various components of an ASM_OPERANDS rtx.  */
 

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [lra] a patch to fix ppc bootstrap failure
  2012-12-06 21:28     ` Vladimir Makarov
@ 2012-12-07 23:04       ` Michael Meissner
  2012-12-11  0:28       ` Michael Meissner
  1 sibling, 0 replies; 7+ messages in thread
From: Michael Meissner @ 2012-12-07 23:04 UTC (permalink / raw)
  To: Vladimir Makarov; +Cc: Michael Meissner, GCC Patches

On Thu, Dec 06, 2012 at 04:20:46PM -0500, Vladimir Makarov wrote:
> LRA should have change spilled pseudo 199 to memory.  LRA did not do
> that because the insn is in list of insns used by pseudo 199.  This
> might happen only when the insn is not recognized.
> 
> The following patch fixes the bug.
> 
> Committed as rev. 194270.
> 
> 2012-12-06  Vladimir Makarov  <vmakarov@redhat.com>
> 
>         * rtl.h (SUBREG_MATCH_RELOAD_P): Rename to LRA_SUBREG_P.
>         * recog.c (register_operand): Check LRA_SUBREG_P.
>         * lra-constraints.c (match_reload, simplify_operand_subreg): Use
>         LRA_SUBREG_P.
>         (emit_spill_move): Set up LRA_SUBREG_P.

Yes this fixes the bug and allows a bootstrap.  Thanks.  Note, the fortran
compiler in your branch is buggy, and I get a lot of failures when doing a make
check.  I don't get similar failures on today's branch (not using LRA).

-- 
Michael Meissner, IBM
5 Technology Place Drive, M/S 2757, Westford, MA 01886-3141, USA
meissner@linux.vnet.ibm.com	fax +1 (978) 399-6899

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [lra] a patch to fix ppc bootstrap failure
  2012-12-06 21:28     ` Vladimir Makarov
  2012-12-07 23:04       ` Michael Meissner
@ 2012-12-11  0:28       ` Michael Meissner
  1 sibling, 0 replies; 7+ messages in thread
From: Michael Meissner @ 2012-12-11  0:28 UTC (permalink / raw)
  To: Vladimir Makarov; +Cc: Michael Meissner, GCC Patches

[-- Attachment #1: Type: text/plain, Size: 5739 bytes --]

On Thu, Dec 06, 2012 at 04:20:46PM -0500, Vladimir Makarov wrote:
> The following patch fixes the bug.

I decided to try and build all of Spec 2006 with LRA.  All 30 benchmarks build
with the LRA branch compiler if I use -fno-lra.  If I use -flra, 8 benchmarks
no longer build at -O3 -mcpu=power7.  There are 3 classes of failure.

The first failure dies in gen_add2_insn:
  1) gobmk
  2) h264ref
  3) xalancbmk

The second failure is 'Max. number of generated reload insns per insn is achieved (90):'
  1) astar
  2) povray

The third failure is 'internal compiler error: in check_rtl, at lra.c:2010'
  1) gamess
  2) dealII
  3) wrf

I looked at gobmk, and I'll include the .i file in the message.  It is dying
on a movti insn, where the address is a TOC relocation that has been split and
uses an unspec for the relocation.  The standard add insn doesn't support this,
but there are add recognizers for this case.  I can imagine we can add a PPC
specific constraint for this and use it in add{di,si}3 if we need to.

(gdb) r -O2 -quiet -mcpu=power7 -ftree-vectorize -g -da play_ascii.i
The program being debugged has been started already.
Start it from the beginning? (y or n) y
Starting program: /data/meissner/fsf-build-x86_64/lra-powerpc64-linux/gcc/cc1 -O2 -quiet -mcpu=power7 -ftree-vectorize -g -da play_ascii.i

Breakpoint 1, fancy_abort (file=0xda8850 "/home/meissner/fsf-src/lra/gcc/optabs.c", line=4692, function=0xda928a "gen_add2_insn") at /home/meissner/fsf-src/lra/gcc/diagnostic.c:1146
(gdb) where
#0  fancy_abort (file=0xda8850 "/home/meissner/fsf-src/lra/gcc/optabs.c", line=4692, function=0xda928a "gen_add2_insn") at /home/meissner/fsf-src/lra/gcc/diagnostic.c:1146
#1  0x00000000007fd200 in gen_add2_insn (x=0x7ffff141f600, y=0x7ffff1448528) at /home/meissner/fsf-src/lra/gcc/optabs.c:4692
#2  0x00000000007bad2d in lra_emit_add (x=0x7ffff141f600, y=0x7ffff1448528, z=0x7ffff1922dd0) at /home/meissner/fsf-src/lra/gcc/lra.c:314
#3  0x00000000007c7fc9 in process_address (nop=<value optimized out>, before=0x7fffffffc900, after=0x7fffffffc8f8) at /home/meissner/fsf-src/lra/gcc/lra-constraints.c:2414
#4  0x00000000007ca2ce in curr_insn_transform () at /home/meissner/fsf-src/lra/gcc/lra-constraints.c:2715
#5  0x00000000007cca75 in lra_constraints (first_p=<value optimized out>) at /home/meissner/fsf-src/lra/gcc/lra-constraints.c:3502
#6  0x00000000007bc37d in lra (f=<value optimized out>) at /home/meissner/fsf-src/lra/gcc/lra.c:2280
#7  0x0000000000787309 in do_reload () at /home/meissner/fsf-src/lra/gcc/ira.c:4624
#8  rest_of_handle_reload () at /home/meissner/fsf-src/lra/gcc/ira.c:4737
#9  0x000000000081409a in execute_one_pass (pass=0x13edaa0) at /home/meissner/fsf-src/lra/gcc/passes.c:2328
#10 0x0000000000814515 in execute_pass_list (pass=0x13edaa0) at /home/meissner/fsf-src/lra/gcc/passes.c:2386
#11 0x0000000000814527 in execute_pass_list (pass=0x13ee2e0) at /home/meissner/fsf-src/lra/gcc/passes.c:2387
#12 0x00000000005dc952 in expand_function (node=0x7ffff1729818) at /home/meissner/fsf-src/lra/gcc/cgraphunit.c:1641
#13 0x00000000005de4c1 in expand_all_functions () at /home/meissner/fsf-src/lra/gcc/cgraphunit.c:1745
#14 compile () at /home/meissner/fsf-src/lra/gcc/cgraphunit.c:2043
#15 0x00000000005deb7a in finalize_compilation_unit () at /home/meissner/fsf-src/lra/gcc/cgraphunit.c:2120
#16 0x00000000004c6643 in c_write_global_declarations () at /home/meissner/fsf-src/lra/gcc/c/c-decl.c:10120
#17 0x00000000008b739d in compile_file () at /home/meissner/fsf-src/lra/gcc/toplev.c:559
#18 0x00000000008b8568 in do_compile (argc=8, argv=0x7fffffffcd38) at /home/meissner/fsf-src/lra/gcc/toplev.c:1884
#19 toplev_main (argc=8, argv=0x7fffffffcd38) at /home/meissner/fsf-src/lra/gcc/toplev.c:1960
#20 0x0000003fdd21ecdd in __libc_start_main () from /lib64/libc.so.6
#21 0x00000000004a4d19 in _start ()
(gdb) up
#1  0x00000000007fd200 in gen_add2_insn (x=0x7ffff141f600, y=0x7ffff1448528) at /home/meissner/fsf-src/lra/gcc/optabs.c:4692
(gdb) print y
$1 = (rtx_def *) 0x7ffff1448528
(gdb) pr
(unspec:DI [
        (symbol_ref:DI ("*.LANCHOR0") [flags 0x182])
        (reg:DI 2 2)
    ] UNSPEC_TOCREL)
(gdb) up
#2  0x00000000007bad2d in lra_emit_add (x=0x7ffff141f600, y=0x7ffff1448528, z=0x7ffff1922dd0) at /home/meissner/fsf-src/lra/gcc/lra.c:314
(gdb) up
#3  0x00000000007c7fc9 in process_address (nop=<value optimized out>, before=0x7fffffffc900, after=0x7fffffffc8f8) at /home/meissner/fsf-src/lra/gcc/lra-constraints.c:2414
(gdb) print addr
$6 = (rtx_def *) 0x7ffff1448510
(gdb) pr
(plus:DI (unspec:DI [
            (symbol_ref:DI ("*.LANCHOR0") [flags 0x182])
            (reg:DI 2 2)
        ] UNSPEC_TOCREL)
    (const_int 400 [0x190]))
(gdb) up
#4  0x00000000007ca2ce in curr_insn_transform () at /home/meissner/fsf-src/lra/gcc/lra-constraints.c:2715
(gdb) up
#5  0x00000000007cca75 in lra_constraints (first_p=<value optimized out>) at /home/meissner/fsf-src/lra/gcc/lra-constraints.c:3502
(gdb) print curr_insn
$9 = (rtx) 0x7ffff16d25e8
(gdb) pr
(insn 78 77 80 2 (set (mem/c:TI (plus:DI (unspec:DI [
                        (symbol_ref:DI ("*.LANCHOR0") [flags 0x182])
                        (reg:DI 2 2)
                    ] UNSPEC_TOCREL)
                (const_int 400 [0x190])) [5 sgftree+0 S16 A64])
        (reg:TI 430 [ *tree_28(D) ])) interface/play_ascii.c:561 381 {*movti_ppc64}
     (expr_list:REG_DEAD (reg:TI 430 [ *tree_28(D) ])
        (nil)))
(gdb) 

I am planning on trying to revamp movti's shortly.  One of the things I put on
my do someday list back in the initial power7 days was allowing movti's in the
VSX registers.

-- 
Michael Meissner, IBM
5 Technology Place Drive, M/S 2757, Westford, MA 01886-3141, USA
meissner@linux.vnet.ibm.com	fax +1 (978) 399-6899

[-- Attachment #2: play_ascii.i --]
[-- Type: text/plain, Size: 259703 bytes --]

# 1 "interface/play_ascii.c"
# 1 "/home/meissner/spec-build/spec-2006-base-dev48-power7-vsx-o3-flra-shared-at6.0-64bit/benchspec/CPU2006/445.gobmk/build/build_base_dev48-power7-vsx-64bit.0000//"
# 1 "<command-line>"
# 1 "interface/play_ascii.c"
# 23 "interface/play_ascii.c"
# 1 "./include/gnugo.h" 1
# 33 "./include/gnugo.h"
# 1 "/usr/include/stdio.h" 1 3 4
# 28 "/usr/include/stdio.h" 3 4
# 1 "/usr/include/features.h" 1 3 4
# 347 "/usr/include/features.h" 3 4
# 1 "/usr/include/sys/cdefs.h" 1 3 4
# 353 "/usr/include/sys/cdefs.h" 3 4
# 1 "/usr/include/bits/wordsize.h" 1 3 4
# 354 "/usr/include/sys/cdefs.h" 2 3 4
# 348 "/usr/include/features.h" 2 3 4
# 371 "/usr/include/features.h" 3 4
# 1 "/usr/include/gnu/stubs.h" 1 3 4



# 1 "/usr/include/bits/wordsize.h" 1 3 4
# 5 "/usr/include/gnu/stubs.h" 2 3 4




# 1 "/usr/include/gnu/stubs-64.h" 1 3 4
# 10 "/usr/include/gnu/stubs.h" 2 3 4
# 372 "/usr/include/features.h" 2 3 4
# 29 "/usr/include/stdio.h" 2 3 4





# 1 "/home/meissner/fsf-install-ppc64/lra/lib/gcc/powerpc64-unknown-linux-gnu/4.8.0/include/stddef.h" 1 3 4
# 213 "/home/meissner/fsf-install-ppc64/lra/lib/gcc/powerpc64-unknown-linux-gnu/4.8.0/include/stddef.h" 3 4
typedef long unsigned int size_t;
# 35 "/usr/include/stdio.h" 2 3 4

# 1 "/usr/include/bits/types.h" 1 3 4
# 28 "/usr/include/bits/types.h" 3 4
# 1 "/usr/include/bits/wordsize.h" 1 3 4
# 29 "/usr/include/bits/types.h" 2 3 4


typedef unsigned char __u_char;
typedef unsigned short int __u_short;
typedef unsigned int __u_int;
typedef unsigned long int __u_long;


typedef signed char __int8_t;
typedef unsigned char __uint8_t;
typedef signed short int __int16_t;
typedef unsigned short int __uint16_t;
typedef signed int __int32_t;
typedef unsigned int __uint32_t;

typedef signed long int __int64_t;
typedef unsigned long int __uint64_t;







typedef long int __quad_t;
typedef unsigned long int __u_quad_t;
# 131 "/usr/include/bits/types.h" 3 4
# 1 "/usr/include/bits/typesizes.h" 1 3 4
# 132 "/usr/include/bits/types.h" 2 3 4


typedef unsigned long int __dev_t;
typedef unsigned int __uid_t;
typedef unsigned int __gid_t;
typedef unsigned long int __ino_t;
typedef unsigned long int __ino64_t;
typedef unsigned int __mode_t;
typedef unsigned long int __nlink_t;
typedef long int __off_t;
typedef long int __off64_t;
typedef int __pid_t;
typedef struct { int __val[2]; } __fsid_t;
typedef long int __clock_t;
typedef unsigned long int __rlim_t;
typedef unsigned long int __rlim64_t;
typedef unsigned int __id_t;
typedef long int __time_t;
typedef unsigned int __useconds_t;
typedef long int __suseconds_t;

typedef int __daddr_t;
typedef long int __swblk_t;
typedef int __key_t;


typedef int __clockid_t;


typedef void * __timer_t;


typedef long int __blksize_t;




typedef long int __blkcnt_t;
typedef long int __blkcnt64_t;


typedef unsigned long int __fsblkcnt_t;
typedef unsigned long int __fsblkcnt64_t;


typedef unsigned long int __fsfilcnt_t;
typedef unsigned long int __fsfilcnt64_t;

typedef long int __ssize_t;



typedef __off64_t __loff_t;
typedef __quad_t *__qaddr_t;
typedef char *__caddr_t;


typedef long int __intptr_t;


typedef unsigned int __socklen_t;
# 37 "/usr/include/stdio.h" 2 3 4
# 45 "/usr/include/stdio.h" 3 4
struct _IO_FILE;



typedef struct _IO_FILE FILE;





# 65 "/usr/include/stdio.h" 3 4
typedef struct _IO_FILE __FILE;
# 75 "/usr/include/stdio.h" 3 4
# 1 "/usr/include/libio.h" 1 3 4
# 32 "/usr/include/libio.h" 3 4
# 1 "/usr/include/_G_config.h" 1 3 4
# 15 "/usr/include/_G_config.h" 3 4
# 1 "/home/meissner/fsf-install-ppc64/lra/lib/gcc/powerpc64-unknown-linux-gnu/4.8.0/include/stddef.h" 1 3 4
# 16 "/usr/include/_G_config.h" 2 3 4




# 1 "/usr/include/wchar.h" 1 3 4
# 83 "/usr/include/wchar.h" 3 4
typedef struct
{
  int __count;
  union
  {

    unsigned int __wch;



    char __wchb[4];
  } __value;
} __mbstate_t;
# 21 "/usr/include/_G_config.h" 2 3 4

typedef struct
{
  __off_t __pos;
  __mbstate_t __state;
} _G_fpos_t;
typedef struct
{
  __off64_t __pos;
  __mbstate_t __state;
} _G_fpos64_t;
# 53 "/usr/include/_G_config.h" 3 4
typedef int _G_int16_t __attribute__ ((__mode__ (__HI__)));
typedef int _G_int32_t __attribute__ ((__mode__ (__SI__)));
typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__)));
typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__)));
# 33 "/usr/include/libio.h" 2 3 4
# 53 "/usr/include/libio.h" 3 4
# 1 "/home/meissner/fsf-install-ppc64/lra/lib/gcc/powerpc64-unknown-linux-gnu/4.8.0/include/stdarg.h" 1 3 4
# 41 "/home/meissner/fsf-install-ppc64/lra/lib/gcc/powerpc64-unknown-linux-gnu/4.8.0/include/stdarg.h" 3 4
typedef __builtin_va_list __gnuc_va_list;
# 54 "/usr/include/libio.h" 2 3 4
# 170 "/usr/include/libio.h" 3 4
struct _IO_jump_t; struct _IO_FILE;
# 180 "/usr/include/libio.h" 3 4
typedef void _IO_lock_t;





struct _IO_marker {
  struct _IO_marker *_next;
  struct _IO_FILE *_sbuf;



  int _pos;
# 203 "/usr/include/libio.h" 3 4
};


enum __codecvt_result
{
  __codecvt_ok,
  __codecvt_partial,
  __codecvt_error,
  __codecvt_noconv
};
# 271 "/usr/include/libio.h" 3 4
struct _IO_FILE {
  int _flags;




  char* _IO_read_ptr;
  char* _IO_read_end;
  char* _IO_read_base;
  char* _IO_write_base;
  char* _IO_write_ptr;
  char* _IO_write_end;
  char* _IO_buf_base;
  char* _IO_buf_end;

  char *_IO_save_base;
  char *_IO_backup_base;
  char *_IO_save_end;

  struct _IO_marker *_markers;

  struct _IO_FILE *_chain;

  int _fileno;



  int _flags2;

  __off_t _old_offset;



  unsigned short _cur_column;
  signed char _vtable_offset;
  char _shortbuf[1];



  _IO_lock_t *_lock;
# 319 "/usr/include/libio.h" 3 4
  __off64_t _offset;
# 328 "/usr/include/libio.h" 3 4
  void *__pad1;
  void *__pad2;
  void *__pad3;
  void *__pad4;
  size_t __pad5;

  int _mode;

  char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)];

};


typedef struct _IO_FILE _IO_FILE;


struct _IO_FILE_plus;

extern struct _IO_FILE_plus _IO_2_1_stdin_;
extern struct _IO_FILE_plus _IO_2_1_stdout_;
extern struct _IO_FILE_plus _IO_2_1_stderr_;
# 364 "/usr/include/libio.h" 3 4
typedef __ssize_t __io_read_fn (void *__cookie, char *__buf, size_t __nbytes);







typedef __ssize_t __io_write_fn (void *__cookie, __const char *__buf,
     size_t __n);







typedef int __io_seek_fn (void *__cookie, __off64_t *__pos, int __w);


typedef int __io_close_fn (void *__cookie);
# 416 "/usr/include/libio.h" 3 4
extern int __underflow (_IO_FILE *);
extern int __uflow (_IO_FILE *);
extern int __overflow (_IO_FILE *, int);
# 460 "/usr/include/libio.h" 3 4
extern int _IO_getc (_IO_FILE *__fp);
extern int _IO_putc (int __c, _IO_FILE *__fp);
extern int _IO_feof (_IO_FILE *__fp) __attribute__ ((__nothrow__));
extern int _IO_ferror (_IO_FILE *__fp) __attribute__ ((__nothrow__));

extern int _IO_peekc_locked (_IO_FILE *__fp);





extern void _IO_flockfile (_IO_FILE *) __attribute__ ((__nothrow__));
extern void _IO_funlockfile (_IO_FILE *) __attribute__ ((__nothrow__));
extern int _IO_ftrylockfile (_IO_FILE *) __attribute__ ((__nothrow__));
# 490 "/usr/include/libio.h" 3 4
extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict,
   __gnuc_va_list, int *__restrict);
extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict,
    __gnuc_va_list);
extern __ssize_t _IO_padn (_IO_FILE *, int, __ssize_t);
extern size_t _IO_sgetn (_IO_FILE *, void *, size_t);

extern __off64_t _IO_seekoff (_IO_FILE *, __off64_t, int, int);
extern __off64_t _IO_seekpos (_IO_FILE *, __off64_t, int);

extern void _IO_free_backup_area (_IO_FILE *) __attribute__ ((__nothrow__));
# 76 "/usr/include/stdio.h" 2 3 4
# 89 "/usr/include/stdio.h" 3 4


typedef _G_fpos_t fpos_t;




# 141 "/usr/include/stdio.h" 3 4
# 1 "/usr/include/bits/stdio_lim.h" 1 3 4
# 142 "/usr/include/stdio.h" 2 3 4



extern struct _IO_FILE *stdin;
extern struct _IO_FILE *stdout;
extern struct _IO_FILE *stderr;









extern int remove (__const char *__filename) __attribute__ ((__nothrow__));

extern int rename (__const char *__old, __const char *__new) __attribute__ ((__nothrow__));




extern int renameat (int __oldfd, __const char *__old, int __newfd,
       __const char *__new) __attribute__ ((__nothrow__));








extern FILE *tmpfile (void) ;
# 188 "/usr/include/stdio.h" 3 4
extern char *tmpnam (char *__s) __attribute__ ((__nothrow__)) ;





extern char *tmpnam_r (char *__s) __attribute__ ((__nothrow__)) ;
# 206 "/usr/include/stdio.h" 3 4
extern char *tempnam (__const char *__dir, __const char *__pfx)
     __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;








extern int fclose (FILE *__stream);




extern int fflush (FILE *__stream);

# 231 "/usr/include/stdio.h" 3 4
extern int fflush_unlocked (FILE *__stream);
# 245 "/usr/include/stdio.h" 3 4






extern FILE *fopen (__const char *__restrict __filename,
      __const char *__restrict __modes) ;




extern FILE *freopen (__const char *__restrict __filename,
        __const char *__restrict __modes,
        FILE *__restrict __stream) ;
# 274 "/usr/include/stdio.h" 3 4

# 285 "/usr/include/stdio.h" 3 4
extern FILE *fdopen (int __fd, __const char *__modes) __attribute__ ((__nothrow__)) ;
# 298 "/usr/include/stdio.h" 3 4
extern FILE *fmemopen (void *__s, size_t __len, __const char *__modes)
  __attribute__ ((__nothrow__)) ;




extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) __attribute__ ((__nothrow__)) ;






extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) __attribute__ ((__nothrow__));



extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf,
      int __modes, size_t __n) __attribute__ ((__nothrow__));





extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf,
         size_t __size) __attribute__ ((__nothrow__));


extern void setlinebuf (FILE *__stream) __attribute__ ((__nothrow__));








extern int fprintf (FILE *__restrict __stream,
      __const char *__restrict __format, ...);




extern int printf (__const char *__restrict __format, ...);

extern int sprintf (char *__restrict __s,
      __const char *__restrict __format, ...) __attribute__ ((__nothrow__));





extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format,
       __gnuc_va_list __arg);




extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg);

extern int vsprintf (char *__restrict __s, __const char *__restrict __format,
       __gnuc_va_list __arg) __attribute__ ((__nothrow__));





extern int snprintf (char *__restrict __s, size_t __maxlen,
       __const char *__restrict __format, ...)
     __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 4)));

extern int vsnprintf (char *__restrict __s, size_t __maxlen,
        __const char *__restrict __format, __gnuc_va_list __arg)
     __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 0)));

# 396 "/usr/include/stdio.h" 3 4
extern int vdprintf (int __fd, __const char *__restrict __fmt,
       __gnuc_va_list __arg)
     __attribute__ ((__format__ (__printf__, 2, 0)));
extern int dprintf (int __fd, __const char *__restrict __fmt, ...)
     __attribute__ ((__format__ (__printf__, 2, 3)));








extern int fscanf (FILE *__restrict __stream,
     __const char *__restrict __format, ...) ;




extern int scanf (__const char *__restrict __format, ...) ;

extern int sscanf (__const char *__restrict __s,
     __const char *__restrict __format, ...) __attribute__ ((__nothrow__));
# 427 "/usr/include/stdio.h" 3 4
extern int fscanf (FILE *__restrict __stream, __const char *__restrict __format, ...) __asm__ ("" "__isoc99_fscanf")

                               ;
extern int scanf (__const char *__restrict __format, ...) __asm__ ("" "__isoc99_scanf")
                              ;
extern int sscanf (__const char *__restrict __s, __const char *__restrict __format, ...) __asm__ ("" "__isoc99_sscanf") __attribute__ ((__nothrow__))

                      ;
# 447 "/usr/include/stdio.h" 3 4








extern int vfscanf (FILE *__restrict __s, __const char *__restrict __format,
      __gnuc_va_list __arg)
     __attribute__ ((__format__ (__scanf__, 2, 0))) ;





extern int vscanf (__const char *__restrict __format, __gnuc_va_list __arg)
     __attribute__ ((__format__ (__scanf__, 1, 0))) ;


extern int vsscanf (__const char *__restrict __s,
      __const char *__restrict __format, __gnuc_va_list __arg)
     __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__scanf__, 2, 0)));
# 478 "/usr/include/stdio.h" 3 4
extern int vfscanf (FILE *__restrict __s, __const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vfscanf")



     __attribute__ ((__format__ (__scanf__, 2, 0))) ;
extern int vscanf (__const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vscanf")

     __attribute__ ((__format__ (__scanf__, 1, 0))) ;
extern int vsscanf (__const char *__restrict __s, __const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vsscanf") __attribute__ ((__nothrow__))



     __attribute__ ((__format__ (__scanf__, 2, 0)));
# 506 "/usr/include/stdio.h" 3 4









extern int fgetc (FILE *__stream);
extern int getc (FILE *__stream);





extern int getchar (void);

# 534 "/usr/include/stdio.h" 3 4
extern int getc_unlocked (FILE *__stream);
extern int getchar_unlocked (void);
# 545 "/usr/include/stdio.h" 3 4
extern int fgetc_unlocked (FILE *__stream);











extern int fputc (int __c, FILE *__stream);
extern int putc (int __c, FILE *__stream);





extern int putchar (int __c);

# 578 "/usr/include/stdio.h" 3 4
extern int fputc_unlocked (int __c, FILE *__stream);







extern int putc_unlocked (int __c, FILE *__stream);
extern int putchar_unlocked (int __c);






extern int getw (FILE *__stream);


extern int putw (int __w, FILE *__stream);








extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
     ;






extern char *gets (char *__s) ;

# 640 "/usr/include/stdio.h" 3 4
extern __ssize_t __getdelim (char **__restrict __lineptr,
          size_t *__restrict __n, int __delimiter,
          FILE *__restrict __stream) ;
extern __ssize_t getdelim (char **__restrict __lineptr,
        size_t *__restrict __n, int __delimiter,
        FILE *__restrict __stream) ;







extern __ssize_t getline (char **__restrict __lineptr,
       size_t *__restrict __n,
       FILE *__restrict __stream) ;








extern int fputs (__const char *__restrict __s, FILE *__restrict __stream);





extern int puts (__const char *__s);






extern int ungetc (int __c, FILE *__stream);






extern size_t fread (void *__restrict __ptr, size_t __size,
       size_t __n, FILE *__restrict __stream) ;




extern size_t fwrite (__const void *__restrict __ptr, size_t __size,
        size_t __n, FILE *__restrict __s) ;

# 712 "/usr/include/stdio.h" 3 4
extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
         size_t __n, FILE *__restrict __stream) ;
extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size,
          size_t __n, FILE *__restrict __stream) ;








extern int fseek (FILE *__stream, long int __off, int __whence);




extern long int ftell (FILE *__stream) ;




extern void rewind (FILE *__stream);

# 748 "/usr/include/stdio.h" 3 4
extern int fseeko (FILE *__stream, __off_t __off, int __whence);




extern __off_t ftello (FILE *__stream) ;
# 767 "/usr/include/stdio.h" 3 4






extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos);




extern int fsetpos (FILE *__stream, __const fpos_t *__pos);
# 790 "/usr/include/stdio.h" 3 4

# 799 "/usr/include/stdio.h" 3 4


extern void clearerr (FILE *__stream) __attribute__ ((__nothrow__));

extern int feof (FILE *__stream) __attribute__ ((__nothrow__)) ;

extern int ferror (FILE *__stream) __attribute__ ((__nothrow__)) ;




extern void clearerr_unlocked (FILE *__stream) __attribute__ ((__nothrow__));
extern int feof_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ;
extern int ferror_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ;








extern void perror (__const char *__s);






# 1 "/usr/include/bits/sys_errlist.h" 1 3 4
# 27 "/usr/include/bits/sys_errlist.h" 3 4
extern int sys_nerr;
extern __const char *__const sys_errlist[];
# 829 "/usr/include/stdio.h" 2 3 4




extern int fileno (FILE *__stream) __attribute__ ((__nothrow__)) ;




extern int fileno_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ;
# 848 "/usr/include/stdio.h" 3 4
extern FILE *popen (__const char *__command, __const char *__modes) ;





extern int pclose (FILE *__stream);





extern char *ctermid (char *__s) __attribute__ ((__nothrow__));
# 888 "/usr/include/stdio.h" 3 4
extern void flockfile (FILE *__stream) __attribute__ ((__nothrow__));



extern int ftrylockfile (FILE *__stream) __attribute__ ((__nothrow__)) ;


extern void funlockfile (FILE *__stream) __attribute__ ((__nothrow__));
# 909 "/usr/include/stdio.h" 3 4
# 1 "/usr/include/bits/stdio.h" 1 3 4
# 36 "/usr/include/bits/stdio.h" 3 4
extern __inline int
vprintf (__const char *__restrict __fmt, __gnuc_va_list __arg)
{
  return vfprintf (stdout, __fmt, __arg);
}



extern __inline int
getchar (void)
{
  return _IO_getc (stdin);
}




extern __inline int
fgetc_unlocked (FILE *__fp)
{
  return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++);
}





extern __inline int
getc_unlocked (FILE *__fp)
{
  return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++);
}


extern __inline int
getchar_unlocked (void)
{
  return (__builtin_expect (((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end), 0) ? __uflow (stdin) : *(unsigned char *) (stdin)->_IO_read_ptr++);
}




extern __inline int
putchar (int __c)
{
  return _IO_putc (__c, stdout);
}




extern __inline int
fputc_unlocked (int __c, FILE *__stream)
{
  return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
}





extern __inline int
putc_unlocked (int __c, FILE *__stream)
{
  return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
}


extern __inline int
putchar_unlocked (int __c)
{
  return (__builtin_expect (((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end), 0) ? __overflow (stdout, (unsigned char) (__c)) : (unsigned char) (*(stdout)->_IO_write_ptr++ = (__c)));
}
# 125 "/usr/include/bits/stdio.h" 3 4
extern __inline int
__attribute__ ((__nothrow__)) feof_unlocked (FILE *__stream)
{
  return (((__stream)->_flags & 0x10) != 0);
}


extern __inline int
__attribute__ ((__nothrow__)) ferror_unlocked (FILE *__stream)
{
  return (((__stream)->_flags & 0x20) != 0);
}
# 910 "/usr/include/stdio.h" 2 3 4
# 918 "/usr/include/stdio.h" 3 4

# 34 "./include/gnugo.h" 2


# 1 "./include/config.h" 1
# 37 "./include/gnugo.h" 2



# 1 "./include/sgftree.h" 1
# 28 "./include/sgftree.h"
# 1 "./include/sgf_properties.h" 1
# 29 "./include/sgftree.h" 2
# 47 "./include/sgftree.h"
void *xalloc(unsigned int);






typedef struct SGFProperty_t {
  struct SGFProperty_t *next;
  short name;
  char *value;
} SGFProperty;


typedef struct SGFNode_t {
  SGFProperty *props;
  struct SGFNode_t *parent;
  struct SGFNode_t *child;
  struct SGFNode_t *next;
} SGFNode;



SGFNode *sgfPrev(SGFNode *node);
SGFNode *sgfRoot(SGFNode *node);
SGFNode *sgfNewNode(void);
void sgfFreeNode(SGFNode *node);

int sgfGetIntProperty(SGFNode *node, const char *name, int *value);
int sgfGetFloatProperty(SGFNode *node, const char *name, float *value);
int sgfGetCharProperty(SGFNode *node, const char *name, char **value);
void sgfAddProperty(SGFNode *node, const char *name, const char *value);
void sgfAddPropertyInt(SGFNode *node, const char *name, long val);
void sgfAddPropertyFloat(SGFNode *node, const char *name, float val);
void sgfOverwriteProperty(SGFNode *node, const char *name, const char *text);
void sgfOverwritePropertyFloat(SGFNode *node, const char *name, float val);
void sgfOverwritePropertyInt(SGFNode *node, const char *name, int val);
void *xrealloc(void *pt, unsigned int size);
SGFProperty *sgfMkProperty(const char *name, const char *value,
      SGFNode *node, SGFProperty *last);
void sgfFreeProperty(SGFProperty *prop);

SGFNode *sgfAddStone(SGFNode *node, int color, int movex, int movey);
SGFNode *sgfAddPlay(SGFNode *node, int who, int movex, int movey);
SGFNode *sgfAddPlayLast(SGFNode *node, int who, int movex, int movey);

void sgfWriteResult(SGFNode *node, float score, int overwrite);
void sgf_write_header(SGFNode *root, int overwrite, int seed, float komi,
        int level, int rules);

SGFNode *sgfLabel(SGFNode *node, const char *label, int i, int j);
SGFNode *sgfLabelInt(SGFNode *node, int num, int i, int j);
SGFNode *sgfCircle(SGFNode *node, int i, int j);
SGFNode *sgfSquare(SGFNode *node, int i, int j);
SGFNode *sgfTriangle(SGFNode *node, int i, int j);
SGFNode *sgfMark(SGFNode *node, int i, int j);
SGFNode *sgfAddComment(SGFNode *node, const char *comment);
SGFNode *sgfBoardText(SGFNode *node, int i, int j, const char *text);
SGFNode *sgfBoardChar(SGFNode *node, int i, int j, char c);
SGFNode *sgfBoardNumber(SGFNode *node, int i, int j, int number);
SGFNode *sgfStartVariant(SGFNode *node);
SGFNode *sgfStartVariantFirst(SGFNode *node);
SGFNode *sgfAddChild(SGFNode *node);

SGFNode *sgfCreateHeaderNode(int boardsize, float komi);


SGFNode *readsgffile(const char *filename);

SGFNode *readsgffilefuseki(const char *filename, int moves_per_game);


int writesgf(SGFNode *root, const char *filename);







typedef struct SGFTree_t {
  SGFNode *root;
  SGFNode *lastnode;
} SGFTree;


void sgftree_clear(SGFTree *tree);
int sgftree_readfile(SGFTree *tree, const char *infilename);

int sgftreeBack(SGFTree *tree);
int sgftreeForward(SGFTree *tree);

void sgftreeAddPlay(SGFTree *tree, int color, int movex, int movey);
void sgftreeAddPlayLast(SGFTree *tree, int color, int movex, int movey);
void sgftreeAddStone(SGFTree *tree, int color, int movex, int movey);
void sgftreeWriteResult(SGFTree *tree, float score, int overwrite);
SGFNode *sgftreeNodeCheck(SGFTree *tree);

void sgftreeCircle(SGFTree *tree, int i, int j);
void sgftreeSquare(SGFTree *tree, int i, int j);
void sgftreeTriangle(SGFTree *tree, int i, int j);
void sgftreeMark(SGFTree *tree, int i, int j);
void sgftreeAddComment(SGFTree *tree, const char *comment);
void sgftreeBoardText(SGFTree *tree, int i, int j, const char *text);
void sgftreeBoardChar(SGFTree *tree, int i, int j, char c);
void sgftreeBoardNumber(SGFTree *tree, int i, int j, int number);
void sgftreeStartVariant(SGFTree *tree);
void sgftreeStartVariantFirst(SGFTree *tree);
void sgftreeCreateHeaderNode(SGFTree *tree, int boardsize, float komi);
void sgftreeSetLastNode(SGFTree *tree, SGFNode *lastnode);







int get_moveX(SGFProperty *property, int boardsize);
int get_moveY(SGFProperty *property, int boardsize);
int get_moveXY(SGFProperty *property, int *i, int *j, int boardsize);

int show_sgf_properties(SGFNode *node);
int show_sgf_tree(SGFNode *node);
int is_markup_node(SGFNode *node);
int is_move_node(SGFNode *node);
int is_pass_node(SGFNode *node, int boardsize);
int find_move(SGFNode *node);
# 41 "./include/gnugo.h" 2
# 1 "./include/clock.h" 1
# 43 "./include/clock.h"
# 1 "./include/config.h" 1
# 44 "./include/clock.h" 2

# 1 "./include/gnugo.h" 1
# 46 "./include/clock.h" 2

# 1 "/home/meissner/fsf-install-ppc64/lra/lib/gcc/powerpc64-unknown-linux-gnu/4.8.0/include/stddef.h" 1 3 4
# 148 "/home/meissner/fsf-install-ppc64/lra/lib/gcc/powerpc64-unknown-linux-gnu/4.8.0/include/stddef.h" 3 4
typedef long int ptrdiff_t;
# 325 "/home/meissner/fsf-install-ppc64/lra/lib/gcc/powerpc64-unknown-linux-gnu/4.8.0/include/stddef.h" 3 4
typedef int wchar_t;
# 48 "./include/clock.h" 2
# 58 "./include/clock.h"
void clock_init(int time, int byo_time, int byo_stones);
void clock_enable(void);

void clock_init_autolevel(int min_level, int max_level);
void clock_enable_autolevel(void);


void clock_push_button(int color);
void clock_unpush_button(int color);


int clock_is_byoyomi(int color);
int clock_is_time_over(int color);
double clock_get_timer(int color);
double clock_get_btimer(int color);
double clock_get_time_left(int color);
double clock_get_btime_left(int color, int *stones);


void clock_adapt_level(int *p_level, int color);


void clock_print(int color);
void clock_report_autolevel(FILE *f, int color);
# 42 "./include/gnugo.h" 2



void init_gnugo(void);
# 134 "./include/gnugo.h"
typedef unsigned char Intersection;


void gnugo_clear_board(int boardsize);
void gnugo_set_komi(float new_komi);
void gnugo_add_stone(int i, int j, int color);
void gnugo_remove_stone(int i, int j);
int gnugo_is_pass(int i, int j);
void gnugo_play_move(int i, int j, int color);
int gnugo_undo_move(int n);
int gnugo_play_sgfnode(SGFNode *node, int to_move);
int gnugo_play_sgftree(SGFNode *root, int *until, SGFNode **curnode);
int gnugo_is_legal(int i, int j, int color);
int gnugo_is_suicide(int i, int j, int color);

int gnugo_placehand(int handicap);
int gnugo_sethand(int handicap, SGFNode *root);
void gnugo_recordboard(SGFNode *node);

int gnugo_genmove(int *i, int *j, int color);

int gnugo_attack(int m, int n, int *i, int *j);
int gnugo_find_defense(int m, int n, int *i, int *j);

void gnugo_who_wins(int color, FILE *outfile);
float gnugo_estimate_score(float *upper, float *lower);
void gnugo_examine_position(int color, int how_much);

float gnugo_get_komi(void);
void gnugo_get_board(int b[19][19]);
int gnugo_get_boardsize(void);
int gnugo_get_move_number(void);






typedef struct {
  int handicap;

  int to_move;
  SGFTree game_record;

  int computer_player;
} Gameinfo;

void gameinfo_clear(Gameinfo *ginfo, int boardsize, float komi);
void gameinfo_print(Gameinfo *ginfo);
void gameinfo_load_sgfheader(Gameinfo *gameinfo, SGFNode *head);
void gameinfo_play_move(Gameinfo *ginfo, int i, int j, int color);
int gameinfo_play_sgftree_rot(Gameinfo *gameinfo, SGFTree *tree,
          const char *untilstr, int orientation);
int gameinfo_play_sgftree(Gameinfo *gameinfo, SGFTree *tree,
      const char *untilstr);







extern int random_seed;


extern int quiet;
extern int verbose;
extern int allpats;
extern int printworms;
extern int printmoyo;
extern int printdragons;
extern int printboard;
extern int showstatistics;
extern int profile_patterns;
extern char outfilename[128];
extern int output_flags;
# 264 "./include/gnugo.h"
extern int debug;
extern int hashflags;
extern int fusekidb;
extern int disable_fuseki;
extern int josekidb;
extern int level;
extern int semeai_variations;
extern int urgent;
extern int showtime;
extern int showscore;
extern float score;
extern float lower_bound;
extern float upper_bound;
extern int chinese_rules;
extern int experimental_owl_ext;
extern int experimental_semeai;
extern int experimental_connections;
extern int alternate_connections;
extern int owl_threats;
extern int experimental_influence;
extern int allow_suicide;
extern int capture_all_dead;
extern int play_out_aftermath;
extern int play_mirror_go;
extern int mirror_stones_limit;
extern int gtp_version;



extern int mandated_depth;
extern int mandated_backfill_depth;
extern int mandated_backfill2_depth;
extern int mandated_superstring_depth;
extern int mandated_fourlib_depth;
extern int mandated_ko_depth;
extern int mandated_branch_depth;
extern int mandated_aa_depth;
extern int mandated_owl_distrust_depth;
extern int mandated_owl_branch_depth;
extern int mandated_owl_reading_depth;
extern int mandated_owl_node_limit;


extern float potential_moves[19][19];
# 324 "./include/gnugo.h"
void start_draw_board(void);
void draw_color_char(int m, int n, int c, int color);
void draw_char(int m, int n, int c);
void end_draw_board(void);
void showboard(int xo);
void simple_showboard(FILE *outfile);


int gprintf(const char *fmt, ...);
void mprintf(const char *fmt, ...);
void gfprintf(FILE *outfile, const char *fmt, ...);
const char *color_to_string(int color);
const char *location_to_string(int pos);
void location_to_buffer(int pos, char *buf);
const char *status_to_string(int status);
const char *safety_to_string(int status);
const char *result_to_string(int result);
const char *routine_to_string(int routine);
int string_to_location(int boardsize, char *str, int *m, int *n);
double gg_gettimeofday(void);



void debug_influence_move(int i, int j);
# 416 "./include/gnugo.h"
void reset_engine(void);
void examine_position(int color, int how_much);
void silent_examine_position(int color, int how_much);
# 427 "./include/gnugo.h"
void reset_owl_node_counter(void);
int get_owl_node_counter(void);
void reset_reading_node_counter(void);
int get_reading_node_counter(void);
void reset_trymove_counter(void);
int get_trymove_counter(void);
void reset_connection_node_counter(void);
int get_connection_node_counter(void);
# 444 "./include/gnugo.h"
void clear_board(void);
int test_gray_border(void);
void setup_board(Intersection new_board[19][19], int ko_pos,
   int *last, float new_komi, int w_captured, int b_captured);



void add_stone(int pos, int color);
void remove_stone(int pos);
void play_move(int pos, int color);
int undo_move(int n);
int get_last_move(void);
int get_last_player(void);
int get_last_opponent_move(int color);
int is_pass(int pos);
int is_legal(int pos, int color);
int is_suicide(int pos, int color);
int is_illegal_ko_capture(int pos, int color);
int trymove(int pos, int color, const char *message, int str,
     int komaster, int kom_pos);
int semeai_trymove(int pos, int color, const char *message,
     int str1, int str2, int owl_phase, int value);
int tryko(int pos, int color, const char *message,
   int komaster, int kom_pos);
void popgo(void);


void change_dragon_status(int dr, int status);
void who_wins(int color, FILE *outfile);


int genmove(int *i, int *j, int color);
int genmove_conservative(int *i, int *j, int color);


float aftermath_compute_score(int color, float komi, SGFTree *tree);
int aftermath_final_status(int color, int pos);



void make_worms(void);
void compute_worm_influence(void);


void make_dragons(int color, int stop_before_owl, int save_verbose);
void initialize_dragon_data(void);
void show_dragons(void);
int crude_status(int pos);
int dragon_status(int pos);
int same_dragon(int dr1, int dr2);


void print_moyo(void);


void sgffile_add_debuginfo(SGFNode *node, int value);
void sgffile_output(SGFTree *tree);

void sgffile_printsgf(int color_to_play, const char *filename);
void sgffile_printboard(SGFTree *tree);
void sgffile_recordboard(SGFNode *node);


void decide_string(int pos);
void decide_connection(int apos, int bpos);
void decide_owl(int pos);
void decide_dragon_data(int pos);
void decide_semeai(int apos, int bpos);
void decide_tactical_semeai(int apos, int bpos);
void decide_position(int color);
void decide_eye(int pos);
void decide_combination(int color);
void decide_surrounded(int pos);
# 24 "interface/play_ascii.c" 2


# 1 "/usr/include/stdlib.h" 1 3 4
# 33 "/usr/include/stdlib.h" 3 4
# 1 "/home/meissner/fsf-install-ppc64/lra/lib/gcc/powerpc64-unknown-linux-gnu/4.8.0/include/stddef.h" 1 3 4
# 34 "/usr/include/stdlib.h" 2 3 4


# 96 "/usr/include/stdlib.h" 3 4


typedef struct
  {
    int quot;
    int rem;
  } div_t;



typedef struct
  {
    long int quot;
    long int rem;
  } ldiv_t;







__extension__ typedef struct
  {
    long long int quot;
    long long int rem;
  } lldiv_t;


# 140 "/usr/include/stdlib.h" 3 4
extern size_t __ctype_get_mb_cur_max (void) __attribute__ ((__nothrow__)) ;




extern double atof (__const char *__nptr)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;

extern int atoi (__const char *__nptr)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;

extern long int atol (__const char *__nptr)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;





__extension__ extern long long int atoll (__const char *__nptr)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;





extern double strtod (__const char *__restrict __nptr,
        char **__restrict __endptr)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;





extern float strtof (__const char *__restrict __nptr,
       char **__restrict __endptr) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;

extern long double strtold (__const char *__restrict __nptr,
       char **__restrict __endptr)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;





extern long int strtol (__const char *__restrict __nptr,
   char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;

extern unsigned long int strtoul (__const char *__restrict __nptr,
      char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;




__extension__
extern long long int strtoq (__const char *__restrict __nptr,
        char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;

__extension__
extern unsigned long long int strtouq (__const char *__restrict __nptr,
           char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;





__extension__
extern long long int strtoll (__const char *__restrict __nptr,
         char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;

__extension__
extern unsigned long long int strtoull (__const char *__restrict __nptr,
     char **__restrict __endptr, int __base)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;

# 277 "/usr/include/stdlib.h" 3 4

extern __inline double
__attribute__ ((__nothrow__)) atof (__const char *__nptr)
{
  return strtod (__nptr, (char **) ((void *)0));
}
extern __inline int
__attribute__ ((__nothrow__)) atoi (__const char *__nptr)
{
  return (int) strtol (__nptr, (char **) ((void *)0), 10);
}
extern __inline long int
__attribute__ ((__nothrow__)) atol (__const char *__nptr)
{
  return strtol (__nptr, (char **) ((void *)0), 10);
}




__extension__ extern __inline long long int
__attribute__ ((__nothrow__)) atoll (__const char *__nptr)
{
  return strtoll (__nptr, (char **) ((void *)0), 10);
}

# 311 "/usr/include/stdlib.h" 3 4
extern char *l64a (long int __n) __attribute__ ((__nothrow__)) ;


extern long int a64l (__const char *__s)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;




# 1 "/usr/include/sys/types.h" 1 3 4
# 29 "/usr/include/sys/types.h" 3 4






typedef __u_char u_char;
typedef __u_short u_short;
typedef __u_int u_int;
typedef __u_long u_long;
typedef __quad_t quad_t;
typedef __u_quad_t u_quad_t;
typedef __fsid_t fsid_t;




typedef __loff_t loff_t;



typedef __ino_t ino_t;
# 62 "/usr/include/sys/types.h" 3 4
typedef __dev_t dev_t;




typedef __gid_t gid_t;




typedef __mode_t mode_t;




typedef __nlink_t nlink_t;




typedef __uid_t uid_t;





typedef __off_t off_t;
# 100 "/usr/include/sys/types.h" 3 4
typedef __pid_t pid_t;




typedef __id_t id_t;




typedef __ssize_t ssize_t;





typedef __daddr_t daddr_t;
typedef __caddr_t caddr_t;





typedef __key_t key_t;
# 133 "/usr/include/sys/types.h" 3 4
# 1 "/usr/include/time.h" 1 3 4
# 74 "/usr/include/time.h" 3 4


typedef __time_t time_t;



# 92 "/usr/include/time.h" 3 4
typedef __clockid_t clockid_t;
# 104 "/usr/include/time.h" 3 4
typedef __timer_t timer_t;
# 134 "/usr/include/sys/types.h" 2 3 4
# 147 "/usr/include/sys/types.h" 3 4
# 1 "/home/meissner/fsf-install-ppc64/lra/lib/gcc/powerpc64-unknown-linux-gnu/4.8.0/include/stddef.h" 1 3 4
# 148 "/usr/include/sys/types.h" 2 3 4



typedef unsigned long int ulong;
typedef unsigned short int ushort;
typedef unsigned int uint;
# 195 "/usr/include/sys/types.h" 3 4
typedef int int8_t __attribute__ ((__mode__ (__QI__)));
typedef int int16_t __attribute__ ((__mode__ (__HI__)));
typedef int int32_t __attribute__ ((__mode__ (__SI__)));
typedef int int64_t __attribute__ ((__mode__ (__DI__)));


typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__)));
typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__)));
typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__)));
typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__)));

typedef int register_t __attribute__ ((__mode__ (__word__)));
# 217 "/usr/include/sys/types.h" 3 4
# 1 "/usr/include/endian.h" 1 3 4
# 37 "/usr/include/endian.h" 3 4
# 1 "/usr/include/bits/endian.h" 1 3 4
# 38 "/usr/include/endian.h" 2 3 4
# 61 "/usr/include/endian.h" 3 4
# 1 "/usr/include/bits/byteswap.h" 1 3 4
# 62 "/usr/include/endian.h" 2 3 4
# 218 "/usr/include/sys/types.h" 2 3 4


# 1 "/usr/include/sys/select.h" 1 3 4
# 31 "/usr/include/sys/select.h" 3 4
# 1 "/usr/include/bits/select.h" 1 3 4
# 32 "/usr/include/sys/select.h" 2 3 4


# 1 "/usr/include/bits/sigset.h" 1 3 4
# 24 "/usr/include/bits/sigset.h" 3 4
typedef int __sig_atomic_t;




typedef struct
  {
    unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))];
  } __sigset_t;
# 35 "/usr/include/sys/select.h" 2 3 4



typedef __sigset_t sigset_t;





# 1 "/usr/include/time.h" 1 3 4
# 120 "/usr/include/time.h" 3 4
struct timespec
  {
    __time_t tv_sec;
    long int tv_nsec;
  };
# 45 "/usr/include/sys/select.h" 2 3 4

# 1 "/usr/include/bits/time.h" 1 3 4
# 69 "/usr/include/bits/time.h" 3 4
struct timeval
  {
    __time_t tv_sec;
    __suseconds_t tv_usec;
  };
# 47 "/usr/include/sys/select.h" 2 3 4


typedef __suseconds_t suseconds_t;





typedef long int __fd_mask;
# 67 "/usr/include/sys/select.h" 3 4
typedef struct
  {






    __fd_mask __fds_bits[1024 / (8 * (int) sizeof (__fd_mask))];


  } fd_set;






typedef __fd_mask fd_mask;
# 99 "/usr/include/sys/select.h" 3 4

# 109 "/usr/include/sys/select.h" 3 4
extern int select (int __nfds, fd_set *__restrict __readfds,
     fd_set *__restrict __writefds,
     fd_set *__restrict __exceptfds,
     struct timeval *__restrict __timeout);
# 121 "/usr/include/sys/select.h" 3 4
extern int pselect (int __nfds, fd_set *__restrict __readfds,
      fd_set *__restrict __writefds,
      fd_set *__restrict __exceptfds,
      const struct timespec *__restrict __timeout,
      const __sigset_t *__restrict __sigmask);



# 221 "/usr/include/sys/types.h" 2 3 4


# 1 "/usr/include/sys/sysmacros.h" 1 3 4
# 30 "/usr/include/sys/sysmacros.h" 3 4
__extension__
extern unsigned int gnu_dev_major (unsigned long long int __dev)
     __attribute__ ((__nothrow__));
__extension__
extern unsigned int gnu_dev_minor (unsigned long long int __dev)
     __attribute__ ((__nothrow__));
__extension__
extern unsigned long long int gnu_dev_makedev (unsigned int __major,
            unsigned int __minor)
     __attribute__ ((__nothrow__));


__extension__ extern __inline unsigned int
__attribute__ ((__nothrow__)) gnu_dev_major (unsigned long long int __dev)
{
  return ((__dev >> 8) & 0xfff) | ((unsigned int) (__dev >> 32) & ~0xfff);
}

__extension__ extern __inline unsigned int
__attribute__ ((__nothrow__)) gnu_dev_minor (unsigned long long int __dev)
{
  return (__dev & 0xff) | ((unsigned int) (__dev >> 12) & ~0xff);
}

__extension__ extern __inline unsigned long long int
__attribute__ ((__nothrow__)) gnu_dev_makedev (unsigned int __major, unsigned int __minor)
{
  return ((__minor & 0xff) | ((__major & 0xfff) << 8)
   | (((unsigned long long int) (__minor & ~0xff)) << 12)
   | (((unsigned long long int) (__major & ~0xfff)) << 32));
}
# 224 "/usr/include/sys/types.h" 2 3 4
# 235 "/usr/include/sys/types.h" 3 4
typedef __blkcnt_t blkcnt_t;



typedef __fsblkcnt_t fsblkcnt_t;



typedef __fsfilcnt_t fsfilcnt_t;
# 270 "/usr/include/sys/types.h" 3 4
# 1 "/usr/include/bits/pthreadtypes.h" 1 3 4
# 24 "/usr/include/bits/pthreadtypes.h" 3 4
# 1 "/usr/include/bits/wordsize.h" 1 3 4
# 25 "/usr/include/bits/pthreadtypes.h" 2 3 4
# 51 "/usr/include/bits/pthreadtypes.h" 3 4
typedef unsigned long int pthread_t;


typedef union
{
  char __size[56];
  long int __align;
} pthread_attr_t;



typedef struct __pthread_internal_list
{
  struct __pthread_internal_list *__prev;
  struct __pthread_internal_list *__next;
} __pthread_list_t;
# 77 "/usr/include/bits/pthreadtypes.h" 3 4
typedef union
{
  struct __pthread_mutex_s
  {
    int __lock;
    unsigned int __count;
    int __owner;

    unsigned int __nusers;



    int __kind;

    int __spins;
    __pthread_list_t __list;
# 102 "/usr/include/bits/pthreadtypes.h" 3 4
  } __data;
  char __size[40];
  long int __align;
} pthread_mutex_t;

typedef union
{
  char __size[4];
  int __align;
} pthread_mutexattr_t;




typedef union
{
  struct
  {
    int __lock;
    unsigned int __futex;
    __extension__ unsigned long long int __total_seq;
    __extension__ unsigned long long int __wakeup_seq;
    __extension__ unsigned long long int __woken_seq;
    void *__mutex;
    unsigned int __nwaiters;
    unsigned int __broadcast_seq;
  } __data;
  char __size[48];
  __extension__ long long int __align;
} pthread_cond_t;

typedef union
{
  char __size[4];
  int __align;
} pthread_condattr_t;



typedef unsigned int pthread_key_t;



typedef int pthread_once_t;





typedef union
{

  struct
  {
    int __lock;
    unsigned int __nr_readers;
    unsigned int __readers_wakeup;
    unsigned int __writer_wakeup;
    unsigned int __nr_readers_queued;
    unsigned int __nr_writers_queued;
    int __writer;
    int __shared;
    unsigned long int __pad1;
    unsigned long int __pad2;


    unsigned int __flags;
  } __data;
# 188 "/usr/include/bits/pthreadtypes.h" 3 4
  char __size[56];
  long int __align;
} pthread_rwlock_t;

typedef union
{
  char __size[8];
  long int __align;
} pthread_rwlockattr_t;





typedef volatile int pthread_spinlock_t;




typedef union
{
  char __size[32];
  long int __align;
} pthread_barrier_t;

typedef union
{
  char __size[4];
  int __align;
} pthread_barrierattr_t;
# 271 "/usr/include/sys/types.h" 2 3 4



# 321 "/usr/include/stdlib.h" 2 3 4






extern long int random (void) __attribute__ ((__nothrow__));


extern void srandom (unsigned int __seed) __attribute__ ((__nothrow__));





extern char *initstate (unsigned int __seed, char *__statebuf,
   size_t __statelen) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));



extern char *setstate (char *__statebuf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));







struct random_data
  {
    int32_t *fptr;
    int32_t *rptr;
    int32_t *state;
    int rand_type;
    int rand_deg;
    int rand_sep;
    int32_t *end_ptr;
  };

extern int random_r (struct random_data *__restrict __buf,
       int32_t *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));

extern int srandom_r (unsigned int __seed, struct random_data *__buf)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));

extern int initstate_r (unsigned int __seed, char *__restrict __statebuf,
   size_t __statelen,
   struct random_data *__restrict __buf)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4)));

extern int setstate_r (char *__restrict __statebuf,
         struct random_data *__restrict __buf)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));






extern int rand (void) __attribute__ ((__nothrow__));

extern void srand (unsigned int __seed) __attribute__ ((__nothrow__));




extern int rand_r (unsigned int *__seed) __attribute__ ((__nothrow__));







extern double drand48 (void) __attribute__ ((__nothrow__));
extern double erand48 (unsigned short int __xsubi[3]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern long int lrand48 (void) __attribute__ ((__nothrow__));
extern long int nrand48 (unsigned short int __xsubi[3])
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern long int mrand48 (void) __attribute__ ((__nothrow__));
extern long int jrand48 (unsigned short int __xsubi[3])
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern void srand48 (long int __seedval) __attribute__ ((__nothrow__));
extern unsigned short int *seed48 (unsigned short int __seed16v[3])
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern void lcong48 (unsigned short int __param[7]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));





struct drand48_data
  {
    unsigned short int __x[3];
    unsigned short int __old_x[3];
    unsigned short int __c;
    unsigned short int __init;
    unsigned long long int __a;
  };


extern int drand48_r (struct drand48_data *__restrict __buffer,
        double *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern int erand48_r (unsigned short int __xsubi[3],
        struct drand48_data *__restrict __buffer,
        double *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));


extern int lrand48_r (struct drand48_data *__restrict __buffer,
        long int *__restrict __result)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern int nrand48_r (unsigned short int __xsubi[3],
        struct drand48_data *__restrict __buffer,
        long int *__restrict __result)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));


extern int mrand48_r (struct drand48_data *__restrict __buffer,
        long int *__restrict __result)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern int jrand48_r (unsigned short int __xsubi[3],
        struct drand48_data *__restrict __buffer,
        long int *__restrict __result)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));


extern int srand48_r (long int __seedval, struct drand48_data *__buffer)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));

extern int seed48_r (unsigned short int __seed16v[3],
       struct drand48_data *__buffer) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));

extern int lcong48_r (unsigned short int __param[7],
        struct drand48_data *__buffer)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));









extern void *malloc (size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;

extern void *calloc (size_t __nmemb, size_t __size)
     __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;










extern void *realloc (void *__ptr, size_t __size)
     __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));

extern void free (void *__ptr) __attribute__ ((__nothrow__));




extern void cfree (void *__ptr) __attribute__ ((__nothrow__));



# 1 "/usr/include/alloca.h" 1 3 4
# 25 "/usr/include/alloca.h" 3 4
# 1 "/home/meissner/fsf-install-ppc64/lra/lib/gcc/powerpc64-unknown-linux-gnu/4.8.0/include/stddef.h" 1 3 4
# 26 "/usr/include/alloca.h" 2 3 4







extern void *alloca (size_t __size) __attribute__ ((__nothrow__));






# 498 "/usr/include/stdlib.h" 2 3 4




extern void *valloc (size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;




extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;




extern void abort (void) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));



extern int atexit (void (*__func) (void)) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
# 530 "/usr/include/stdlib.h" 3 4





extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));






extern void exit (int __status) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
# 553 "/usr/include/stdlib.h" 3 4






extern void _Exit (int __status) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));






extern char *getenv (__const char *__name) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;




extern char *__secure_getenv (__const char *__name)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;





extern int putenv (char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));





extern int setenv (__const char *__name, __const char *__value, int __replace)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));


extern int unsetenv (__const char *__name) __attribute__ ((__nothrow__));






extern int clearenv (void) __attribute__ ((__nothrow__));
# 604 "/usr/include/stdlib.h" 3 4
extern char *mktemp (char *__template) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
# 615 "/usr/include/stdlib.h" 3 4
extern int mkstemp (char *__template) __attribute__ ((__nonnull__ (1))) ;
# 637 "/usr/include/stdlib.h" 3 4
extern int mkstemps (char *__template, int __suffixlen) __attribute__ ((__nonnull__ (1))) ;
# 658 "/usr/include/stdlib.h" 3 4
extern char *mkdtemp (char *__template) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
# 707 "/usr/include/stdlib.h" 3 4





extern int system (__const char *__command) ;

# 729 "/usr/include/stdlib.h" 3 4
extern char *realpath (__const char *__restrict __name,
         char *__restrict __resolved) __attribute__ ((__nothrow__)) ;






typedef int (*__compar_fn_t) (__const void *, __const void *);
# 747 "/usr/include/stdlib.h" 3 4



extern void *bsearch (__const void *__key, __const void *__base,
        size_t __nmemb, size_t __size, __compar_fn_t __compar)
     __attribute__ ((__nonnull__ (1, 2, 5))) ;



extern void qsort (void *__base, size_t __nmemb, size_t __size,
     __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4)));
# 766 "/usr/include/stdlib.h" 3 4
extern int abs (int __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
extern long int labs (long int __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;



__extension__ extern long long int llabs (long long int __x)
     __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;







extern div_t div (int __numer, int __denom)
     __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
extern ldiv_t ldiv (long int __numer, long int __denom)
     __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;




__extension__ extern lldiv_t lldiv (long long int __numer,
        long long int __denom)
     __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;

# 802 "/usr/include/stdlib.h" 3 4
extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt,
     int *__restrict __sign) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;




extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt,
     int *__restrict __sign) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;




extern char *gcvt (double __value, int __ndigit, char *__buf)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))) ;




extern char *qecvt (long double __value, int __ndigit,
      int *__restrict __decpt, int *__restrict __sign)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
extern char *qfcvt (long double __value, int __ndigit,
      int *__restrict __decpt, int *__restrict __sign)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
extern char *qgcvt (long double __value, int __ndigit, char *__buf)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))) ;




extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt,
     int *__restrict __sign, char *__restrict __buf,
     size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt,
     int *__restrict __sign, char *__restrict __buf,
     size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));

extern int qecvt_r (long double __value, int __ndigit,
      int *__restrict __decpt, int *__restrict __sign,
      char *__restrict __buf, size_t __len)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
extern int qfcvt_r (long double __value, int __ndigit,
      int *__restrict __decpt, int *__restrict __sign,
      char *__restrict __buf, size_t __len)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));







extern int mblen (__const char *__s, size_t __n) __attribute__ ((__nothrow__)) ;


extern int mbtowc (wchar_t *__restrict __pwc,
     __const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__)) ;


extern int wctomb (char *__s, wchar_t __wchar) __attribute__ ((__nothrow__)) ;



extern size_t mbstowcs (wchar_t *__restrict __pwcs,
   __const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__));

extern size_t wcstombs (char *__restrict __s,
   __const wchar_t *__restrict __pwcs, size_t __n)
     __attribute__ ((__nothrow__));








extern int rpmatch (__const char *__response) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
# 907 "/usr/include/stdlib.h" 3 4
extern int posix_openpt (int __oflag) ;
# 942 "/usr/include/stdlib.h" 3 4
extern int getloadavg (double __loadavg[], int __nelem)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
# 958 "/usr/include/stdlib.h" 3 4

# 27 "interface/play_ascii.c" 2
# 1 "/usr/include/string.h" 1 3 4
# 28 "/usr/include/string.h" 3 4





# 1 "/home/meissner/fsf-install-ppc64/lra/lib/gcc/powerpc64-unknown-linux-gnu/4.8.0/include/stddef.h" 1 3 4
# 34 "/usr/include/string.h" 2 3 4









extern void *memcpy (void *__restrict __dest,
       __const void *__restrict __src, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));


extern void *memmove (void *__dest, __const void *__src, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));






extern void *memccpy (void *__restrict __dest, __const void *__restrict __src,
        int __c, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));





extern void *memset (void *__s, int __c, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int memcmp (__const void *__s1, __const void *__s2, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
# 94 "/usr/include/string.h" 3 4
extern void *memchr (__const void *__s, int __c, size_t __n)
      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));


# 125 "/usr/include/string.h" 3 4


extern char *strcpy (char *__restrict __dest, __const char *__restrict __src)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));

extern char *strncpy (char *__restrict __dest,
        __const char *__restrict __src, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));


extern char *strcat (char *__restrict __dest, __const char *__restrict __src)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));

extern char *strncat (char *__restrict __dest, __const char *__restrict __src,
        size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));


extern int strcmp (__const char *__s1, __const char *__s2)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));

extern int strncmp (__const char *__s1, __const char *__s2, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));


extern int strcoll (__const char *__s1, __const char *__s2)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));

extern size_t strxfrm (char *__restrict __dest,
         __const char *__restrict __src, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));






# 1 "/usr/include/xlocale.h" 1 3 4
# 28 "/usr/include/xlocale.h" 3 4
typedef struct __locale_struct
{

  struct locale_data *__locales[13];


  const unsigned short int *__ctype_b;
  const int *__ctype_tolower;
  const int *__ctype_toupper;


  const char *__names[13];
} *__locale_t;


typedef __locale_t locale_t;
# 162 "/usr/include/string.h" 2 3 4


extern int strcoll_l (__const char *__s1, __const char *__s2, __locale_t __l)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3)));

extern size_t strxfrm_l (char *__dest, __const char *__src, size_t __n,
    __locale_t __l) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4)));




extern char *strdup (__const char *__s)
     __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));






extern char *strndup (__const char *__string, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));
# 208 "/usr/include/string.h" 3 4

# 233 "/usr/include/string.h" 3 4
extern char *strchr (__const char *__s, int __c)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
# 260 "/usr/include/string.h" 3 4
extern char *strrchr (__const char *__s, int __c)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));


# 279 "/usr/include/string.h" 3 4



extern size_t strcspn (__const char *__s, __const char *__reject)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));


extern size_t strspn (__const char *__s, __const char *__accept)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
# 312 "/usr/include/string.h" 3 4
extern char *strpbrk (__const char *__s, __const char *__accept)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
# 340 "/usr/include/string.h" 3 4
extern char *strstr (__const char *__haystack, __const char *__needle)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));




extern char *strtok (char *__restrict __s, __const char *__restrict __delim)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));




extern char *__strtok_r (char *__restrict __s,
    __const char *__restrict __delim,
    char **__restrict __save_ptr)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));

extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim,
         char **__restrict __save_ptr)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));
# 395 "/usr/include/string.h" 3 4


extern size_t strlen (__const char *__s)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));





extern size_t strnlen (__const char *__string, size_t __maxlen)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));





extern char *strerror (int __errnum) __attribute__ ((__nothrow__));

# 425 "/usr/include/string.h" 3 4
extern int strerror_r (int __errnum, char *__buf, size_t __buflen) __asm__ ("" "__xpg_strerror_r") __attribute__ ((__nothrow__))

                        __attribute__ ((__nonnull__ (2)));
# 443 "/usr/include/string.h" 3 4
extern char *strerror_l (int __errnum, __locale_t __l) __attribute__ ((__nothrow__));





extern void __bzero (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));



extern void bcopy (__const void *__src, void *__dest, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));


extern void bzero (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));


extern int bcmp (__const void *__s1, __const void *__s2, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
# 487 "/usr/include/string.h" 3 4
extern char *index (__const char *__s, int __c)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
# 515 "/usr/include/string.h" 3 4
extern char *rindex (__const char *__s, int __c)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));




extern int ffs (int __i) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
# 534 "/usr/include/string.h" 3 4
extern int strcasecmp (__const char *__s1, __const char *__s2)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));


extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
# 557 "/usr/include/string.h" 3 4
extern char *strsep (char **__restrict __stringp,
       __const char *__restrict __delim)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));




extern char *strsignal (int __sig) __attribute__ ((__nothrow__));


extern char *__stpcpy (char *__restrict __dest, __const char *__restrict __src)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern char *stpcpy (char *__restrict __dest, __const char *__restrict __src)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));



extern char *__stpncpy (char *__restrict __dest,
   __const char *__restrict __src, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern char *stpncpy (char *__restrict __dest,
        __const char *__restrict __src, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
# 632 "/usr/include/string.h" 3 4
# 1 "/usr/include/bits/string.h" 1 3 4
# 633 "/usr/include/string.h" 2 3 4


# 1 "/usr/include/bits/string2.h" 1 3 4
# 80 "/usr/include/bits/string2.h" 3 4
typedef struct { unsigned char __arr[2]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR2;
typedef struct { unsigned char __arr[3]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR3;
typedef struct { unsigned char __arr[4]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR4;
typedef struct { unsigned char __arr[5]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR5;
typedef struct { unsigned char __arr[6]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR6;
typedef struct { unsigned char __arr[7]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR7;
typedef struct { unsigned char __arr[8]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR8;
# 394 "/usr/include/bits/string2.h" 3 4
extern void *__rawmemchr (const void *__s, int __c);
# 969 "/usr/include/bits/string2.h" 3 4
extern __inline size_t __strcspn_c1 (__const char *__s, int __reject);
extern __inline size_t
__strcspn_c1 (__const char *__s, int __reject)
{
  register size_t __result = 0;
  while (__s[__result] != '\0' && __s[__result] != __reject)
    ++__result;
  return __result;
}

extern __inline size_t __strcspn_c2 (__const char *__s, int __reject1,
         int __reject2);
extern __inline size_t
__strcspn_c2 (__const char *__s, int __reject1, int __reject2)
{
  register size_t __result = 0;
  while (__s[__result] != '\0' && __s[__result] != __reject1
  && __s[__result] != __reject2)
    ++__result;
  return __result;
}

extern __inline size_t __strcspn_c3 (__const char *__s, int __reject1,
         int __reject2, int __reject3);
extern __inline size_t
__strcspn_c3 (__const char *__s, int __reject1, int __reject2,
       int __reject3)
{
  register size_t __result = 0;
  while (__s[__result] != '\0' && __s[__result] != __reject1
  && __s[__result] != __reject2 && __s[__result] != __reject3)
    ++__result;
  return __result;
}
# 1045 "/usr/include/bits/string2.h" 3 4
extern __inline size_t __strspn_c1 (__const char *__s, int __accept);
extern __inline size_t
__strspn_c1 (__const char *__s, int __accept)
{
  register size_t __result = 0;

  while (__s[__result] == __accept)
    ++__result;
  return __result;
}

extern __inline size_t __strspn_c2 (__const char *__s, int __accept1,
        int __accept2);
extern __inline size_t
__strspn_c2 (__const char *__s, int __accept1, int __accept2)
{
  register size_t __result = 0;

  while (__s[__result] == __accept1 || __s[__result] == __accept2)
    ++__result;
  return __result;
}

extern __inline size_t __strspn_c3 (__const char *__s, int __accept1,
        int __accept2, int __accept3);
extern __inline size_t
__strspn_c3 (__const char *__s, int __accept1, int __accept2, int __accept3)
{
  register size_t __result = 0;

  while (__s[__result] == __accept1 || __s[__result] == __accept2
  || __s[__result] == __accept3)
    ++__result;
  return __result;
}
# 1121 "/usr/include/bits/string2.h" 3 4
extern __inline char *__strpbrk_c2 (__const char *__s, int __accept1,
         int __accept2);
extern __inline char *
__strpbrk_c2 (__const char *__s, int __accept1, int __accept2)
{

  while (*__s != '\0' && *__s != __accept1 && *__s != __accept2)
    ++__s;
  return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
}

extern __inline char *__strpbrk_c3 (__const char *__s, int __accept1,
         int __accept2, int __accept3);
extern __inline char *
__strpbrk_c3 (__const char *__s, int __accept1, int __accept2,
       int __accept3)
{

  while (*__s != '\0' && *__s != __accept1 && *__s != __accept2
  && *__s != __accept3)
    ++__s;
  return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
}
# 1172 "/usr/include/bits/string2.h" 3 4
extern __inline char *__strtok_r_1c (char *__s, char __sep, char **__nextp);
extern __inline char *
__strtok_r_1c (char *__s, char __sep, char **__nextp)
{
  char *__result;
  if (__s == ((void *)0))
    __s = *__nextp;
  while (*__s == __sep)
    ++__s;
  __result = ((void *)0);
  if (*__s != '\0')
    {
      __result = __s++;
      while (*__s != '\0')
 if (*__s++ == __sep)
   {
     __s[-1] = '\0';
     break;
   }
    }
  *__nextp = __s;
  return __result;
}
# 1204 "/usr/include/bits/string2.h" 3 4
extern char *__strsep_g (char **__stringp, __const char *__delim);
# 1222 "/usr/include/bits/string2.h" 3 4
extern __inline char *__strsep_1c (char **__s, char __reject);
extern __inline char *
__strsep_1c (char **__s, char __reject)
{
  register char *__retval = *__s;
  if (__retval != ((void *)0) && (*__s = (__extension__ (__builtin_constant_p (__reject) && !__builtin_constant_p (__retval) && (__reject) == '\0' ? (char *) __rawmemchr (__retval, __reject) : __builtin_strchr (__retval, __reject)))) != ((void *)0))
    *(*__s)++ = '\0';
  return __retval;
}

extern __inline char *__strsep_2c (char **__s, char __reject1, char __reject2);
extern __inline char *
__strsep_2c (char **__s, char __reject1, char __reject2)
{
  register char *__retval = *__s;
  if (__retval != ((void *)0))
    {
      register char *__cp = __retval;
      while (1)
 {
   if (*__cp == '\0')
     {
       __cp = ((void *)0);
   break;
     }
   if (*__cp == __reject1 || *__cp == __reject2)
     {
       *__cp++ = '\0';
       break;
     }
   ++__cp;
 }
      *__s = __cp;
    }
  return __retval;
}

extern __inline char *__strsep_3c (char **__s, char __reject1, char __reject2,
       char __reject3);
extern __inline char *
__strsep_3c (char **__s, char __reject1, char __reject2, char __reject3)
{
  register char *__retval = *__s;
  if (__retval != ((void *)0))
    {
      register char *__cp = __retval;
      while (1)
 {
   if (*__cp == '\0')
     {
       __cp = ((void *)0);
   break;
     }
   if (*__cp == __reject1 || *__cp == __reject2 || *__cp == __reject3)
     {
       *__cp++ = '\0';
       break;
     }
   ++__cp;
 }
      *__s = __cp;
    }
  return __retval;
}
# 1303 "/usr/include/bits/string2.h" 3 4
extern char *__strdup (__const char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__));
# 1322 "/usr/include/bits/string2.h" 3 4
extern char *__strndup (__const char *__string, size_t __n)
     __attribute__ ((__nothrow__)) __attribute__ ((__malloc__));
# 636 "/usr/include/string.h" 2 3 4
# 644 "/usr/include/string.h" 3 4

# 28 "interface/play_ascii.c" 2
# 1 "/usr/include/ctype.h" 1 3 4
# 30 "/usr/include/ctype.h" 3 4

# 48 "/usr/include/ctype.h" 3 4
enum
{
  _ISupper = (1 << (0)),
  _ISlower = (1 << (1)),
  _ISalpha = (1 << (2)),
  _ISdigit = (1 << (3)),
  _ISxdigit = (1 << (4)),
  _ISspace = (1 << (5)),
  _ISprint = (1 << (6)),
  _ISgraph = (1 << (7)),
  _ISblank = (1 << (8)),
  _IScntrl = (1 << (9)),
  _ISpunct = (1 << (10)),
  _ISalnum = (1 << (11))
};
# 81 "/usr/include/ctype.h" 3 4
extern __const unsigned short int **__ctype_b_loc (void)
     __attribute__ ((__nothrow__)) __attribute__ ((__const));
extern __const __int32_t **__ctype_tolower_loc (void)
     __attribute__ ((__nothrow__)) __attribute__ ((__const));
extern __const __int32_t **__ctype_toupper_loc (void)
     __attribute__ ((__nothrow__)) __attribute__ ((__const));
# 96 "/usr/include/ctype.h" 3 4






extern int isalnum (int) __attribute__ ((__nothrow__));
extern int isalpha (int) __attribute__ ((__nothrow__));
extern int iscntrl (int) __attribute__ ((__nothrow__));
extern int isdigit (int) __attribute__ ((__nothrow__));
extern int islower (int) __attribute__ ((__nothrow__));
extern int isgraph (int) __attribute__ ((__nothrow__));
extern int isprint (int) __attribute__ ((__nothrow__));
extern int ispunct (int) __attribute__ ((__nothrow__));
extern int isspace (int) __attribute__ ((__nothrow__));
extern int isupper (int) __attribute__ ((__nothrow__));
extern int isxdigit (int) __attribute__ ((__nothrow__));



extern int tolower (int __c) __attribute__ ((__nothrow__));


extern int toupper (int __c) __attribute__ ((__nothrow__));








extern int isblank (int) __attribute__ ((__nothrow__));


# 142 "/usr/include/ctype.h" 3 4
extern int isascii (int __c) __attribute__ ((__nothrow__));



extern int toascii (int __c) __attribute__ ((__nothrow__));



extern int _toupper (int) __attribute__ ((__nothrow__));
extern int _tolower (int) __attribute__ ((__nothrow__));
# 190 "/usr/include/ctype.h" 3 4
extern __inline int
__attribute__ ((__nothrow__)) tolower (int __c)
{
  return __c >= -128 && __c < 256 ? (*__ctype_tolower_loc ())[__c] : __c;
}

extern __inline int
__attribute__ ((__nothrow__)) toupper (int __c)
{
  return __c >= -128 && __c < 256 ? (*__ctype_toupper_loc ())[__c] : __c;
}
# 247 "/usr/include/ctype.h" 3 4
extern int isalnum_l (int, __locale_t) __attribute__ ((__nothrow__));
extern int isalpha_l (int, __locale_t) __attribute__ ((__nothrow__));
extern int iscntrl_l (int, __locale_t) __attribute__ ((__nothrow__));
extern int isdigit_l (int, __locale_t) __attribute__ ((__nothrow__));
extern int islower_l (int, __locale_t) __attribute__ ((__nothrow__));
extern int isgraph_l (int, __locale_t) __attribute__ ((__nothrow__));
extern int isprint_l (int, __locale_t) __attribute__ ((__nothrow__));
extern int ispunct_l (int, __locale_t) __attribute__ ((__nothrow__));
extern int isspace_l (int, __locale_t) __attribute__ ((__nothrow__));
extern int isupper_l (int, __locale_t) __attribute__ ((__nothrow__));
extern int isxdigit_l (int, __locale_t) __attribute__ ((__nothrow__));

extern int isblank_l (int, __locale_t) __attribute__ ((__nothrow__));



extern int __tolower_l (int __c, __locale_t __l) __attribute__ ((__nothrow__));
extern int tolower_l (int __c, __locale_t __l) __attribute__ ((__nothrow__));


extern int __toupper_l (int __c, __locale_t __l) __attribute__ ((__nothrow__));
extern int toupper_l (int __c, __locale_t __l) __attribute__ ((__nothrow__));
# 323 "/usr/include/ctype.h" 3 4

# 29 "interface/play_ascii.c" 2

# 1 "./include/liberty.h" 1
# 44 "./include/liberty.h"
# 1 "./include/hash.h" 1
# 54 "./include/hash.h"
typedef unsigned long Hashvalue;
typedef unsigned long Compacttype;
# 74 "./include/hash.h"
typedef struct {
  Hashvalue hashval[(64 / ( 8 * sizeof(long)))];
} Hash_data;


void hash_init(void);

void hashdata_recalc(Hash_data *hd, Intersection *board, int ko_pos);
int hashdata_compare(Hash_data *hd1, Hash_data *hd2);
void hashdata_invert_ko(Hash_data *hd, int pos);
void hashdata_invert_stone(Hash_data *hd, int pos, int color);
void hashdata_set_tomove(Hash_data *hd, int to_move);

int hashdata_diff_dump(Hash_data *key1, Hash_data *key2);
# 45 "./include/liberty.h" 2


extern Hash_data hashdata;
# 135 "./include/liberty.h"
struct board_state {
  int board_size;

  Intersection board[((19 + 2) * (19 + 1) + 1)];
  int board_ko_pos;
  int black_captured;
  int white_captured;

  Intersection initial_board[((19 + 2) * (19 + 1) + 1)];
  int initial_board_ko_pos;
  int initial_white_captured;
  int initial_black_captured;
  int move_history_color[500];
  int move_history_pos[500];
  int move_history_pointer;

  float komi;
  int move_number;
};



int find_origin(int str);
int chainlinks(int str, int adj[160]);
int chainlinks2(int str, int adj[160], int lib);
int chainlinks3(int str, int adj[160], int lib);
int extended_chainlinks(int str, int adj[160], int both_colors);





extern int position_number;



int is_edge_vertex(int pos);



int countlib(int str);
int findlib(int str, int maxlib, int *libs);
int fastlib(int pos, int color, int ignore_capture);
int approxlib(int pos, int color, int maxlib, int *libs);
int accuratelib(int pos, int color, int maxlib, int *libs);
int count_common_libs(int str1, int str2);
int find_common_libs(int str1, int str2, int maxlib, int *libs);
int have_common_lib(int str1, int str2, int *lib);


void start_timer(int n);
double time_report(int n, const char *occupation, int move, double mintime);

void update_random_seed(void);



int is_self_atari(int pos, int color);


int countstones(int str);
int findstones(int str, int maxstones, int *stones);


void incremental_order_moves(int move, int color, int string,
        int *number_edges, int *number_same_string,
        int *number_own, int *number_opponent,
        int *captured_stones, int *threatened_stones,
        int *saved_stones, int *number_open);


void transformation_init(void);


void dump_stack(void);
void report_worm(int m, int n);
void ascii_report_worm(char *string);
void report_dragon(FILE *outfile, int pos);
void ascii_report_dragon(char *string);
struct dragon_data2 * dragon2_func(int pos);



void rotate2(int i, int j, int *ri, int *rj, int rot);
void inv_rotate2(int i, int j, int *ri, int *rj, int rot);
int rotate1(int pos, int rot);
int inv_rotate1(int pos, int rot);
# 250 "./include/liberty.h"
extern int deltai[8];
extern int deltaj[8];
extern int delta[8];

void store_board(struct board_state *state);
void restore_board(struct board_state *state);


struct pattern;
struct pattern_db;
struct fullboard_pattern;
struct corner_pattern;
struct corner_db;
struct half_eye_data;
struct movelist;
struct tree_node_list;
struct match_node;





typedef void (*matchpat_callback_fn_ptr)(int anchor, int color,
                                         struct pattern *, int rotation,
                                         void *data);
typedef void (*fullboard_matchpat_callback_fn_ptr)(int move,
                                                   struct fullboard_pattern *,
                                                   int rotation);
typedef void (*corner_matchpat_callback_fn_ptr)(int move, int color,
      struct corner_pattern *pattern,
      int rotation);
void matchpat(matchpat_callback_fn_ptr callback, int color,
       struct pattern_db *pdb, void *callback_data,
       char goal[(19 + 1) * (19 + 1)]);
void matchpat_goal_anchor(matchpat_callback_fn_ptr callback, int color,
       struct pattern_db *pdb, void *callback_data,
       char goal[(19 + 1) * (19 + 1)], int anchor_in_goal);
void fullboard_matchpat(fullboard_matchpat_callback_fn_ptr callback,
   int color, struct fullboard_pattern *pattern);
void corner_matchpat(corner_matchpat_callback_fn_ptr callback, int color,
       struct corner_db *database);
void dfa_match_init(void);
void tree_match_init(void);
void tree_initialize_pointers(struct tree_node_list *tnl,
                              struct match_node *matches,
                              int tnl_size,
                              int matches_size);

void reading_cache_init(void);
void reading_cache_clear(void);


int attack(int str, int *move);
int find_defense(int str, int *move);
int attack_and_defend(int str,
        int *attack_code, int *attack_point,
        int *defend_code, int *defense_point);
int attack_either(int astr, int bstr);
int defend_both(int astr, int bstr);
int break_through(int apos, int bpos, int cpos);
int attack_threats(int pos, int max_points, int moves[], int codes[]);

int restricted_defend1(int str, int *move, int komaster, int kom_pos,
         int num_forbidden_moves, int *forbidden_moves);
int restricted_attack2(int str, int *move, int komaster, int kom_pos,
         int num_forbidden_moves, int *forbidden_moves);

int simple_ladder(int str, int *move);

void tune_move_ordering(int params[67]);
void draw_reading_shadow(void);


void purge_persistent_reading_cache(void);
void clear_persistent_reading_cache(void);
int search_persistent_reading_cache(int routine, int str, int *result,
        int *move);
void store_persistent_reading_cache(int routine, int str, int result,
        int move, int nodes);
void delete_persistent_reading_cache_entry(int routine, int str);
void reading_hotspots(float values[(19 + 1) * (19 + 1)]);
void purge_persistent_owl_cache(void);
void clear_persistent_owl_cache(void);
int search_persistent_owl_cache(int routine, int apos, int bpos, int cpos,
    int *result, int *move, int *move2,
    int *certain);
void store_persistent_owl_cache(int routine, int apos, int bpos, int cpos,
    int result, int move, int move2, int certain,
    int tactical_nodes, char goal[(19 + 1) * (19 + 1)],
    int goal_color);
void owl_hotspots(float values[(19 + 1) * (19 + 1)]);


int string_connect(int str1, int str2, int *move);
int disconnect(int str1, int str2, int *move);
int non_transitivity(int str1, int str2, int str3, int *move);


int liberty_of_string(int pos, int str);
int second_order_liberty_of_string(int pos, int str);
int neighbor_of_string(int pos, int str);
int has_neighbor(int pos, int color);
int same_string(int str1, int str2);
int adjacent_strings(int str1, int str2);
int is_ko(int pos, int color, int *ko_pos);
int is_ko_point(int pos);
int komaster_trymove(int pos, int color,
       const char *message, int str,
       int komaster, int kom_pos,
       int *new_komaster, int *new_kom_pos,
       int *is_conditional_ko, int consider_conditional_ko);
int does_capture_something(int pos, int color);
void mark_string(int str, char mx[(19 + 1) * (19 + 1)], char mark);
int move_in_stack(int pos, int cutoff);
void get_move_from_stack(int k, int *move, int *color);
int stones_on_board(int color);

int obvious_false_eye(int pos, int color);
int owl_topological_eye(int pos, int color);
int vital_chain(int pos);
int confirm_safety(int move, int color, int *defense_point,
     char safe_stones[(19 + 1) * (19 + 1)]);
float blunder_size(int move, int color, int *defense_point,
     char safe_stones[(19 + 1) * (19 + 1)]);
void set_depth_values(int level);
void modify_depth_values(int n);
void increase_depth_values(void);
void decrease_depth_values(void);
void set_temporary_depth_values(int d, int b, int f, int k,
    int br, int b2, int ss);
void restore_depth_values(void);

int safe_move(int move, int color);

void join_dragons(int d1, int d2);
int dragon_escape(char goal[(19 + 1) * (19 + 1)], int color, char escape_value[(19 + 1) * (19 + 1)]);
void compute_refined_dragon_weaknesses(void);
struct eyevalue;
float crude_dragon_weakness(int safety, struct eyevalue *genus, int has_lunch,
       float moyo_value, float escape_route);
int is_same_dragon(int d1, int d2);
int are_neighbor_dragons(int d1, int d2);
int first_worm_in_dragon(int w);
int next_worm_in_dragon(int w);
int lively_dragon_exists(int color);
void compute_dragon_influence(void);
void set_strength_data(int color, char safe_stones[(19 + 1) * (19 + 1)],
         float strength[(19 + 1) * (19 + 1)]);

void get_lively_stones(int color, char safe_stones[(19 + 1) * (19 + 1)]);
int is_same_worm(int w1, int w2);
int is_worm_origin(int w, int pos);
void propagate_worm(int pos);
void transform2(int i, int j, int *ti, int *tj, int trans);
void find_cuts(void);
void find_connections(void);
void modify_eye_spaces(void);


int movelist_move_known(int move, int max_points, int points[], int codes[]);
void movelist_change_point(int move, int code, int max_points,
      int points[], int codes[]);


int compute_surroundings(int pos, int apos, int showboard,
    int *surround_size);
int is_surrounded(int pos);
int does_surround(int move, int dragon);
void reset_surround_data(void);
int surround_map(int dr, int pos);


void clear_move_reasons(void);
void add_lunch(int eater, int food);
void remove_lunch(int eater, int food);
void add_attack_move(int pos, int ww, int code);
void add_defense_move(int pos, int ww, int code);
void add_attack_threat_move(int pos, int ww, int code);
void remove_attack_threat_move(int pos, int ww);
void add_defense_threat_move(int pos, int ww, int code);
void add_connection_move(int pos, int dr1, int dr2);
void add_cut_move(int pos, int dr1, int dr2);
void add_antisuji_move(int pos);
void add_semeai_move(int pos, int dr);
void add_semeai_threat(int pos, int dr);

void add_owl_attack_move(int pos, int dr, int code);
void add_owl_defense_move(int pos, int dr, int code);
void add_owl_attack_threat_move(int pos, int dr, int code);
void add_owl_defense_threat_move(int pos, int dr, int code);
void add_owl_prevent_threat_move(int pos, int dr);
void add_owl_uncertain_defense_move(int pos, int dr);
void add_owl_uncertain_attack_move(int pos, int dr);

void add_my_atari_atari_move(int pos, int size);
void add_your_atari_atari_move(int pos, int size);
void add_vital_eye_move(int pos, int eyespace, int color);
void add_invasion_move(int pos);
void add_expand_territory_move(int pos);
void add_expand_moyo_move(int pos);
void add_strategical_attack_move(int pos, int dr);
void add_strategical_defense_move(int pos, int dr);
void add_worthwhile_threat_move(int pos);
void add_replacement_move(int from, int to);
int set_minimum_move_value(int pos, float value);
void set_maximum_move_value(int pos, float value);
void set_minimum_territorial_value(int pos, float value);
void set_maximum_territorial_value(int pos, float value);
void add_shape_value(int pos, float value);
void add_followup_value(int pos, float value);
void add_reverse_followup_value(int pos, float value);
void record_top_move(int move, float val);
void remove_top_move(int move);
void scale_randomness(int pos, float scaling);




void add_either_move(int pos, int reason1, int target1,
       int reason2, int target2);
void add_all_move(int pos, int reason1, int target1,
    int reason2, int target2);

void add_gain_move(int pos, int target1, int target2);
void add_loss_move(int pos, int target1, int target2);


int get_attack_threats(int pos, int max_strings, int strings[]);
int get_defense_threats(int pos, int max_strings, int strings[]);
void get_saved_worms(int pos, char saved[(19 + 1) * (19 + 1)]);
void get_saved_dragons(int pos, char saved[(19 + 1) * (19 + 1)]);
void mark_safe_stones(int color, int move_pos,
        const char saved_dragons[(19 + 1) * (19 + 1)],
        const char saved_worms[(19 + 1) * (19 + 1)],
        char safe_stones[(19 + 1) * (19 + 1)]);


int owl_lively(int pos);
int owl_escape_value(int pos);
int owl_goal_dragon(int pos);
int owl_eyespace(int pos);
int owl_big_eyespace(int pos);
int owl_proper_eye(int pos);
int owl_eye_size(int pos);
int owl_strong_dragon(int pos);
void owl_reasons(int color);

void unconditional_life(int unconditional_territory[(19 + 1) * (19 + 1)], int color);
void find_superstring(int str, int *num_stones, int *stones);
void find_superstring_conservative(int str, int *num_stones, int *stones);
void find_superstring_liberties(int str, int *liberties, int *libs,
                                int liberty_cap);
void find_proper_superstring_liberties(int str, int *liberties, int *libs,
                                       int liberty_cap);
void find_superstring_stones_and_liberties(int str, int *num_stones,
        int *stones, int *liberties,
        int *libs, int liberty_cap);
void superstring_chainlinks(int str, int *num_adj, int adj[160],
                            int liberty_cap);
void proper_superstring_chainlinks(int str, int *num_adj,
                                   int adj[160], int liberty_cap);

int place_fixed_handicap(int handicap);
int place_free_handicap(int handicap);
int free_handicap_remaining_stones(void);
int free_handicap_total_stones(void);



void fuseki(int color);
void semeai(int color);
void new_semeai(int color);
void small_semeai(int save_verbose);
void shapes(int color);
void endgame_shapes(int color);

void combinations(int color);
int atari_atari(int color, int *attack_move, char defense_moves[(19 + 1) * (19 + 1)],
  int save_verbose);
int atari_atari_confirm_safety(int color, int tpos, int *move, int minsize,
          const char saved_dragons[(19 + 1) * (19 + 1)],
          const char saved_worms[(19 + 1) * (19 + 1)]);

int atari_atari_blunder_size(int color, int tpos, int *move,
        const char safe_stones[(19 + 1) * (19 + 1)]);

int review_move_reasons(int *move, float *val, int color,
   float pure_threat_value, float lower_bound,
   int allowed_moves[(19 + 1) * (19 + 1)]);
int fill_liberty(int *move, int color);
int aftermath_genmove(int *aftermath_move, int color,
        int under_control[(19 + 1) * (19 + 1)],
        int do_capture_dead_stones);

int owl_attack(int target, int *attack_point, int *certain, int *kworm);
int owl_defend(int target, int *defense_point, int *certain, int *kworm);
int owl_threaten_attack(int target, int *attack1, int *attack2);
int owl_threaten_defense(int target, int *defend1, int *defend2);
int owl_does_defend(int move, int target, int *kworm);
int owl_confirm_safety(int move, int target, int *defense_point, int *kworm);
int owl_does_attack(int move, int target, int *kworm);
int owl_connection_defends(int move, int target1, int target2);
int owl_substantial(int str);
void owl_analyze_semeai(int apos, int bpos,
   int *resulta, int *resultb, int *move,
   int owl);

int genmove_restricted(int *i, int *j, int color, int allowed_moves[(19 + 1) * (19 + 1)]);

void change_attack(int str, int move, int acode);
void change_defense(int str, int move, int dcode);
void change_attack_threat(int str, int move, int acode);
void change_defense_threat(int str, int move, int dcode);
int attack_move_known(int move, int str);
int defense_move_known(int move, int str);
int attack_threat_move_known(int move, int str);
int defense_threat_move_known(int move, int str);
void worm_reasons(int color);

int does_attack(int move, int str);
int does_defend(int move, int str);
int double_atari(int move, int color, float *value,
   char safe_stones[(19 + 1) * (19 + 1)]);
int play_attack_defend_n(int color, int do_attack, int num_moves, ...);
int play_attack_defend2_n(int color, int do_attack, int num_moves, ...);
int play_break_through_n(int color, int num_moves, ...);
int play_connect_n(int color, int do_connect, int num_moves, ...);
int cut_possible(int pos, int color);
int defend_against(int move, int color, int apos);
int somewhere(int color, int check_alive, int num_moves, ...);
int visible_along_edge(int color, int apos, int bpos);
# 611 "./include/liberty.h"
struct moyo_data
{
  int number;
  int segmentation[(19 + 1) * (19 + 1)];
  int size[19*19];
  int owner[19*19];
  float territorial_value[19*19];
};





struct influence_data;
extern struct influence_data initial_black_influence;
extern struct influence_data initial_white_influence;
extern struct influence_data move_influence;
extern struct influence_data followup_influence;
# 638 "./include/liberty.h"
void compute_influence(int color, const char safe_stones[(19 + 1) * (19 + 1)],
         const float strength[(19 + 1) * (19 + 1)],
         struct influence_data *q,
         int move, const char *trace_message);
void compute_followup_influence(const struct influence_data *base,
           struct influence_data *q,
                  int move, const char *trace_message);
void compute_escape_influence(int color, const char safe_stones[(19 + 1) * (19 + 1)],
         const float strength[(19 + 1) * (19 + 1)],
                              char escape_value[(19 + 1) * (19 + 1)]);

float influence_delta_territory(const struct influence_data *base,
                         const struct influence_data *q, int color,
    int move);
int retrieve_delta_territory_cache(int pos, int color, float *move_value,
              float *followup_value);
void store_delta_territory_cache(int pos, int color, float move_value,
     float followup_value);

int whose_territory(const struct influence_data *q, int pos);
int whose_moyo(const struct influence_data *q, int pos);
int whose_area(const struct influence_data *q, int pos);
float influence_territory(const struct influence_data *q, int pos, int color);
void influence_get_moyo_segmentation(const struct influence_data *q,
                struct moyo_data *moyo);
void influence_get_moyo_data(const struct influence_data *q,
        int moyo_color[(19 + 1) * (19 + 1)],
        float territory_value[(19 + 1) * (19 + 1)]);
void get_influence(const struct influence_data *q,
     float white_influence[(19 + 1) * (19 + 1)],
     float black_influence[(19 + 1) * (19 + 1)],
     int regions[(19 + 1) * (19 + 1)]);
float influence_score(const struct influence_data *q);
void resegment_initial_influence(void);
void influence_mark_non_territory(int pos, int color);

float estimate_score(float *upper, float *lower);


int is_eye_space(int pos);
int is_proper_eye_space(int pos);
int is_marginal_eye_space(int pos);
int max_eye_value(int pos);
void test_eyeshape(int eyesize, int *eye_vertices);



void goaldump(char goal[(19 + 1) * (19 + 1)]);
void move_considered(int move, float value);



void sgffile_begindump(struct SGFTree_t *tree);
void sgffile_enddump(const char *filename);
# 700 "./include/liberty.h"
extern int board_size;
extern Intersection board[((19 + 2) * (19 + 1) + 1)];
extern int board_ko_pos;
extern int black_captured;
extern int white_captured;

extern Intersection initial_board[((19 + 2) * (19 + 1) + 1)];
extern int initial_board_ko_pos;
extern int initial_white_captured;
extern int initial_black_captured;
extern int move_history_color[500];
extern int move_history_pos[500];
extern int move_history_pointer;

extern float komi;
extern int movenum;

extern Intersection shadow[(19 + 1) * (19 + 1)];


extern int disable_threat_computation;
extern int disable_endgame_patterns;
extern int doing_scoring;


extern int transformation[(2*19 - 1) * (2*19 - 1)][8];
extern const int transformation2[8][2][2];


extern int depth;
extern int backfill_depth;
extern int backfill2_depth;
extern int superstring_depth;
extern int branch_depth;
extern int fourlib_depth;
extern int ko_depth;
extern int aa_depth;
extern int owl_distrust_depth;
extern int owl_branch_depth;
extern int owl_reading_depth;
extern int owl_node_limit;
extern int level;
extern int semeai_variations;
extern float best_move_values[10];
extern int best_moves[10];

extern int chinese_rules;
extern int experimental_owl_ext;
extern int experimental_semeai;
extern int experimental_connections;
extern int alternate_connections;
extern int owl_threats;
extern int experimental_influence;

extern int thrashing_dragon;


extern char *rgoal;
extern int goallib;

extern int stackp;
extern int count_variations;
extern SGFTree *sgf_dumptree;
# 776 "./include/liberty.h"
extern int close_worms[(19 + 1) * (19 + 1)][4];
extern int number_close_worms[(19 + 1) * (19 + 1)];
extern int close_black_worms[(19 + 1) * (19 + 1)][4];
extern int number_close_black_worms[(19 + 1) * (19 + 1)];
extern int close_white_worms[(19 + 1) * (19 + 1)][4];
extern int number_close_white_worms[(19 + 1) * (19 + 1)];

extern int false_eye_territory[(19 + 1) * (19 + 1)];

struct stats_data {
  int nodes;
  int position_entered;
  int position_hits;
  int read_result_entered;
  int read_result_hits;
  int hash_collisions;
};

extern struct stats_data stats;


struct eyevalue {




  unsigned char a;
  unsigned char b;
  unsigned char c;
  unsigned char d;

};


struct half_eye_data {
  float value;
  char type;
  int num_attacks;
  int attack_point[4];
  int num_defends;
  int defense_point[4];
};


extern struct half_eye_data half_eye[(19 + 1) * (19 + 1)];







struct worm_data {
  int color;
  int size;
  float effective_size;
  int origin;

  int liberties;
  int liberties2;
  int liberties3;
  int liberties4;
  int lunch;

  int cutstone;
  int cutstone2;
  int genus;
  int inessential;
  int invincible;
  int unconditional_status;
# 854 "./include/liberty.h"
  int attack_points[10];
  int attack_codes[10];
  int defense_points[10];
  int defense_codes[10];
  int attack_threat_points[10];
  int attack_threat_codes[10];
  int defense_threat_points[10];
  int defense_threat_codes[10];
};

extern struct worm_data worm[(19 + 1) * (19 + 1)];





struct surround_data {
  int dragon_number;
  char surround_map[(19 + 1) * (19 + 1)];
};

extern struct surround_data surroundings[10];
extern int surround_pointer;





struct dragon_data {
  int color;
  int id;
  int origin;

  int size;
  float effective_size;
  int crude_status;
  int owl_threat_status;
  int owl_status;
  int owl_attack_point;
  int owl_attack_code;




  int owl_attack_certain;
  int owl_second_attack_point;
  int owl_defense_point;
  int owl_defense_code;
  int owl_defense_certain;
  int owl_second_defense_point;
  int status;
  int owl_attack_kworm;
  int owl_defense_kworm;
};

extern struct dragon_data dragon[(19 + 1) * (19 + 1)];







struct dragon_data2 {
  int origin;
  int adjacent[10];
  int neighbors;
  int hostile_neighbors;
  int moyo_size;
  float moyo_territorial_value;
  int safety;
  float weakness;
  float weakness_pre_owl;
  int escape_route;
  struct eyevalue genus;
  int heye;
  int lunch;

  int semeai;
  int semeai_margin_of_safety;
  int surround_status;
  int surround_size;
};


extern int number_of_dragons;
extern struct dragon_data2 *dragon2;
# 954 "./include/liberty.h"
struct aftermath_data {
  int white_captured;
  int black_captured;
  int white_prisoners;
  int black_prisoners;
  int white_territory;
  int black_territory;
  int white_area;
  int black_area;
  int white_control[(19 + 1) * (19 + 1)];
  int black_control[(19 + 1) * (19 + 1)];
  int final_status[(19 + 1) * (19 + 1)];
};

struct eye_data {
  int color;
  int esize;
  int msize;
  int origin;
  struct eyevalue value;
  int attack_point;
  int defense_point;





  char marginal;
  char type;
  char neighbors;
  char marginal_neighbors;
  char cut;
};

extern struct eye_data white_eye[(19 + 1) * (19 + 1)];
extern struct eye_data black_eye[(19 + 1) * (19 + 1)];





void compute_eyes(int pos, struct eyevalue *value,
                  int *attack_point, int *defense_point,
                  struct eye_data eye[(19 + 1) * (19 + 1)],
                  struct half_eye_data heye[(19 + 1) * (19 + 1)],
                  int add_moves, int color);
void compute_eyes_pessimistic(int pos, struct eyevalue *value,
                              char *pessimistic_min,
                              int *attack_point, int *defense_point,
                              struct eye_data eye[(19 + 1) * (19 + 1)],
                              struct half_eye_data heye[(19 + 1) * (19 + 1)]);
void propagate_eye(int pos, struct eye_data eye[(19 + 1) * (19 + 1)]);
int find_eye_dragons(int origin, struct eye_data eye[(19 + 1) * (19 + 1)], int eye_color,
       int dragons[], int max_dragons);
float topological_eye(int pos, int color,
        struct eye_data my_eye[(19 + 1) * (19 + 1)],
        struct half_eye_data heye[(19 + 1) * (19 + 1)]);
void add_false_eye(int pos, struct eye_data eye[(19 + 1) * (19 + 1)],
     struct half_eye_data heye[(19 + 1) * (19 + 1)]);
void make_domains(struct eye_data b_eye[(19 + 1) * (19 + 1)],
                  struct eye_data w_eye[(19 + 1) * (19 + 1)],
    int owl_call);
void find_half_and_false_eyes(int color, struct eye_data eye[(19 + 1) * (19 + 1)],
         struct half_eye_data heye[(19 + 1) * (19 + 1)],
         char find_mask[(19 + 1) * (19 + 1)]);

void set_eyevalue(struct eyevalue *e, int a, int b, int c, int d);
int min_eye_threat(struct eyevalue *e);
int min_eyes(struct eyevalue *e);
int max_eyes(struct eyevalue *e);
int max_eye_threat(struct eyevalue *e);
void add_eyevalues(struct eyevalue *e1, struct eyevalue *e2,
     struct eyevalue *sum);
int eye_move_urgency(struct eyevalue *e);
char *eyevalue_to_string(struct eyevalue *e);

int is_halfeye(struct half_eye_data heye[(19 + 1) * (19 + 1)], int pos);
int is_false_eye(struct half_eye_data heye[(19 + 1) * (19 + 1)], int pos);



void abortgo(const char *file, int line, const char *msg, int i, int j);
# 31 "interface/play_ascii.c" 2
# 1 "interface/interface.h" 1
# 32 "interface/interface.h"
# 1 "./include/sgftree.h" 1
# 33 "interface/interface.h" 2

void play_ascii(SGFTree *tree, Gameinfo *gameinfo,
  char *filename, char *until);
void play_ascii_emacs(SGFTree *tree, Gameinfo *gameinfo,
        char *filename, char *until);
void play_gtp(FILE *gtp_input, int gtp_initial_orientation);
void play_gmp(Gameinfo *gameinfo);
void play_solo(Gameinfo *gameinfo, int benchmark);
void play_replay(Gameinfo *gameinfo, int color_to_test);

void load_and_analyze_sgf_file(Gameinfo *gameinfo);
void load_and_score_sgf_file(SGFTree *tree, Gameinfo *gameinfo,
        const char *scoringmode);
# 32 "interface/play_ascii.c" 2
# 46 "interface/play_ascii.c"
static int opt_showboard = 1;
static int showdead = 0;
static int emacs = 0;
static SGFTree sgftree;
static int last_move_i;
static int last_move_j;




static int current_score_estimate = 4711;

static void endgame(Gameinfo *gameinfo);
static void showcapture(char *line);
static void showdefense(char *line);
static void ascii_goto(Gameinfo *gameinfo, char *line);
static void ascii_free_handicap(Gameinfo *gameinfo, char *handicap);


static int sgf_initialized;





static void
make_letterbar(int boardsize, char *letterbar)
{
  int i, letteroffset;
  char spaces[64];
  char letter[64];

  if (boardsize <= 25)
    strcpy(spaces, " ");
  strcpy(letterbar, "   ");

  for (i = 0; i < boardsize; i++) {
    letteroffset = 'A';
    if (i+letteroffset >= 'I')
      letteroffset++;
    strcat(letterbar, spaces);
    sprintf(letter, "%c", i+letteroffset);
    strcat(letterbar, letter);
  }
}







static int hspot_size;
static char hspots[19][19];






static void
set_handicap_spots(int boardsize)
{
  if (hspot_size == boardsize)
    return;

  hspot_size = boardsize;

  memset(hspots, '.', sizeof(hspots));

  if (boardsize == 5) {

    hspots[1][1] = '+';
    hspots[boardsize-2][1] = '+';
    hspots[1][boardsize-2] = '+';
    hspots[boardsize-2][boardsize-2] = '+';

    hspots[boardsize/2][boardsize/2] = '+';
    return;
  }

  if (!(boardsize%2)) {

    if (boardsize > 2 && boardsize < 12) {

      hspots[2][2] = '+';
      hspots[boardsize-3][2] = '+';
      hspots[2][boardsize-3] = '+';
      hspots[boardsize-3][boardsize-3] = '+';
    }
    else {

      hspots[3][3] = '+';
      hspots[boardsize-4][3] = '+';
      hspots[3][boardsize-4] = '+';
      hspots[boardsize-4][boardsize-4] = '+';
    }
  }
  else {

    if (boardsize > 2 && boardsize < 12) {

      hspots[2][2] = '+';
      hspots[boardsize-3][2] = '+';
      hspots[2][boardsize-3] = '+';
      hspots[boardsize-3][boardsize-3] = '+';


      hspots[boardsize/2][boardsize/2] = '+';
    }
    else {

      hspots[3][3] = '+';
      hspots[boardsize-4][3] = '+';
      hspots[3][boardsize-4] = '+';
      hspots[boardsize-4][boardsize-4] = '+';


      hspots[3][boardsize/2] = '+';
      hspots[boardsize/2][3] = '+';
      hspots[boardsize/2][boardsize-4] = '+';
      hspots[boardsize-4][boardsize/2] = '+';


      hspots[boardsize/2][boardsize/2] = '+';
    }
  }

  return;
}






static void
ascii_showboard(void)
{
  int i, j;
  char letterbar[64];
  int last_pos_was_move;
  int pos_is_move;
  int dead;

  make_letterbar(board_size, letterbar);
  set_handicap_spots(board_size);

  printf("\n");
  printf("    White has captured %d pieces\n", black_captured);
  printf("    Black has captured %d pieces\n", white_captured);
  if (showscore) {
    if (current_score_estimate == 4711)
      printf("    No score estimate is available yet.\n");
    else if (current_score_estimate < 0)
      printf("    Estimated score: Black is ahead by %d\n",
      -current_score_estimate);
    else if (current_score_estimate > 0)
      printf("    Estimated score: White is ahead by %d\n",
      current_score_estimate);
    else
      printf("    Estimated score: Even!\n");
  }

  printf("\n");

  fflush(stdout);
  printf("%s%s\n", (emacs ? "EMACS1\n" : ""), letterbar);
  fflush(stdout);

  for (i = 0; i < board_size; i++) {
    printf(" %2d", board_size - i);
    last_pos_was_move = 0;
    for (j = 0; j < board_size; j++) {
      if (last_move_i == i && last_move_j == j)
 pos_is_move = 128;
      else
 pos_is_move = 0;
      dead = (dragon_status(((19 + 2) + (i) * (19 + 1) + (j)))==0) && showdead;
      switch (board[((19 + 2) + (i) * (19 + 1) + (j))] + pos_is_move + last_pos_was_move) {
 case 0 +128:
 case 0:
   printf(" %c", hspots[i][j]);
   last_pos_was_move = 0;
   break;
 case 2:
   printf(" %c", dead ? 'x' : 'X');
   last_pos_was_move = 0;
   break;
 case 1:
   printf(" %c", dead ? 'o' : 'O');
   last_pos_was_move = 0;
   break;
 case 2 +128:
   printf("(%c)", 'X');
   last_pos_was_move = 256;
   break;
 case 1 +128:
   printf("(%c)", 'O');
   last_pos_was_move = 256;
   break;
 case 0 +256:
   printf("%c", hspots[i][j]);
   last_pos_was_move = 0;
   break;
 case 2 +256:
   printf("%c", dead ? 'x' : 'X');
   last_pos_was_move = 0;
   break;
 case 1 +256:
   printf("%c", dead ? 'o' : 'O');
   last_pos_was_move = 0;
   break;
 default:
   fprintf(stderr, "Illegal board value %d\n", (int) board[((19 + 2) + (i) * (19 + 1) + (j))]);
   exit(1);
   break;
      }
    }

    if (last_pos_was_move == 0) {
      if (board_size > 10)
 printf(" %2d", board_size - i);
      else
 printf(" %1d", board_size - i);
    }
    else {
      if (board_size > 10)
 printf("%2d", board_size - i);
      else
 printf("%1d", board_size - i);
    }
    printf("\n");
  }

  fflush(stdout);
  printf("%s\n\n", letterbar);
  fflush(stdout);

}





static void
show_commands(void)
{
  printf("\nCommands:\n");
  printf(" back                Take back your last move\n");
  printf(" boardsize           Set boardsize (on move 1 only)\n");
  printf(" comment             Write a comment to outputfile\n");
  printf(" depth <num>         Set depth for reading\n");
  printf(" display             Display game board\n");
  printf(" exit                Exit GNU Go\n");
  printf(" force <move>        Force a move for current color\n");
  printf(" forward             Go to next node in game tree\n");
  printf(" goto <movenum>      Go to movenum in game tree\n");
  printf(" level <amount>      Playing level (default = 10)\n");
  printf(" handicap <num>      Set fixed handicap (on move 1 only)\n");
  printf(" freehandicap <num>  Place free handicap (on move 1 only)\n");
  printf("                     Omit <num> to place handicap yourself\n");
  printf(" help                Display this help menu\n");
  printf(" helpdebug           Display debug help menu\n");
  printf(" info                Display program settings\n");
  printf(" komi                Set komi (on move 1 only)\n");
  printf(" last                Goto last node in game tree\n");
  printf(" pass                Pass on your move\n");
  printf(" play <num>          Play <num> moves\n");
  printf(" playblack           Play as Black (switch if White)\n");
  printf(" playwhite           Play as White (switch if Black)\n");
  printf(" quit                Exit GNU Go\n");
  printf(" resign              Resign the current game\n");
  printf(" save <file>         Save the current game\n");
  printf(" load <file>         Load a game from file\n");
  printf(" score               Toggle display of score On/Off\n");
  printf(" showboard           Toggle display of board On/Off\n");
  printf(" switch              Switch the color you are playing\n");
  printf(" undo                Take the last move back (same as back)\n");
  printf(" <move>              A move of the format <letter><number>");
  printf("\n");
}

enum commands {INVALID=-1, END, EXIT, QUIT, RESIGN,
        PASS, MOVE, FORCE, SWITCH,
        PLAY, PLAYBLACK, PLAYWHITE,
        SETHANDICAP, SETBOARDSIZE, SETKOMI,
        SETDEPTH,
               INFO, DISPLAY, SHOWBOARD, HELP, UNDO, COMMENT, SCORE,
               CMD_DEAD, CMD_BACK, CMD_FORWARD, CMD_LAST,
               CMD_CAPTURE, CMD_DEFEND,
               CMD_HELPDEBUG, CMD_SHOWAREA, CMD_SHOWMOYO, CMD_SHOWTERRI,
               CMD_GOTO, CMD_SAVE, CMD_LOAD, CMD_SHOWDRAGONS, CMD_LISTDRAGONS,
        SETHURRY, SETLEVEL, NEW, COUNT, FREEHANDICAP
};






static int
get_command(char *command)
{
  char c;
  int d;


  if (!((sscanf(command, "%c%d", &c, &d) != 2)
 || ((c = (__extension__ ({ int __res; if (sizeof ((int) c) > 1) { if (__builtin_constant_p ((int) c)) { int __c = ((int) c); __res = __c < -128 || __c > 255 ? __c : (*__ctype_toupper_loc ())[__c]; } else __res = toupper ((int) c); } else __res = (*__ctype_toupper_loc ())[(int) ((int) c)]; __res; }))) < 'A')
 || ((c = (__extension__ ({ int __res; if (sizeof ((int) c) > 1) { if (__builtin_constant_p ((int) c)) { int __c = ((int) c); __res = __c < -128 || __c > 255 ? __c : (*__ctype_toupper_loc ())[__c]; } else __res = toupper ((int) c); } else __res = (*__ctype_toupper_loc ())[(int) ((int) c)]; __res; }))) > 'Z')
 || (c == 'I')))
    return MOVE;


  if (command[0] == '?')
    return HELP;


  while (command[0] == ' ')
    command++;

  if (!(__extension__ (__builtin_constant_p (9) && ((__builtin_constant_p (command) && strlen (command) < ((size_t) (9))) || (__builtin_constant_p ("playblack") && strlen ("playblack") < ((size_t) (9)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (command) && __builtin_constant_p ("playblack") && (__s1_len = strlen (command), __s2_len = strlen ("playblack"), (!((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("playblack") + 1) - (size_t)(const void *)("playblack") == 1) || __s2_len >= 4)) ? __builtin_strcmp (command, "playblack") : (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) && (__s1_len = strlen (command), __s1_len < 4) ? (__builtin_constant_p ("playblack") && ((size_t)(const void *)(("playblack") + 1) - (size_t)(const void *)("playblack") == 1) ? __builtin_strcmp (command, "playblack") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("playblack"); register int __result = (((__const unsigned char *) (__const char *) (command))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (command))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("playblack") && ((size_t)(const void *)(("playblack") + 1) - (size_t)(const void *)("playblack") == 1) && (__s2_len = strlen ("playblack"), __s2_len < 4) ? (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) ? __builtin_strcmp (command, "playblack") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (command); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("playblack"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("playblack"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("playblack"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("playblack"))[3]); } } __result; }))) : __builtin_strcmp (command, "playblack")))); }) : strncmp (command, "playblack", 9)))) return PLAYBLACK;
  if (!(__extension__ (__builtin_constant_p (9) && ((__builtin_constant_p (command) && strlen (command) < ((size_t) (9))) || (__builtin_constant_p ("playwhite") && strlen ("playwhite") < ((size_t) (9)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (command) && __builtin_constant_p ("playwhite") && (__s1_len = strlen (command), __s2_len = strlen ("playwhite"), (!((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("playwhite") + 1) - (size_t)(const void *)("playwhite") == 1) || __s2_len >= 4)) ? __builtin_strcmp (command, "playwhite") : (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) && (__s1_len = strlen (command), __s1_len < 4) ? (__builtin_constant_p ("playwhite") && ((size_t)(const void *)(("playwhite") + 1) - (size_t)(const void *)("playwhite") == 1) ? __builtin_strcmp (command, "playwhite") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("playwhite"); register int __result = (((__const unsigned char *) (__const char *) (command))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (command))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("playwhite") && ((size_t)(const void *)(("playwhite") + 1) - (size_t)(const void *)("playwhite") == 1) && (__s2_len = strlen ("playwhite"), __s2_len < 4) ? (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) ? __builtin_strcmp (command, "playwhite") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (command); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("playwhite"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("playwhite"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("playwhite"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("playwhite"))[3]); } } __result; }))) : __builtin_strcmp (command, "playwhite")))); }) : strncmp (command, "playwhite", 9)))) return PLAYWHITE;
  if (!(__extension__ (__builtin_constant_p (9) && ((__builtin_constant_p (command) && strlen (command) < ((size_t) (9))) || (__builtin_constant_p ("showboard") && strlen ("showboard") < ((size_t) (9)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (command) && __builtin_constant_p ("showboard") && (__s1_len = strlen (command), __s2_len = strlen ("showboard"), (!((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("showboard") + 1) - (size_t)(const void *)("showboard") == 1) || __s2_len >= 4)) ? __builtin_strcmp (command, "showboard") : (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) && (__s1_len = strlen (command), __s1_len < 4) ? (__builtin_constant_p ("showboard") && ((size_t)(const void *)(("showboard") + 1) - (size_t)(const void *)("showboard") == 1) ? __builtin_strcmp (command, "showboard") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("showboard"); register int __result = (((__const unsigned char *) (__const char *) (command))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (command))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("showboard") && ((size_t)(const void *)(("showboard") + 1) - (size_t)(const void *)("showboard") == 1) && (__s2_len = strlen ("showboard"), __s2_len < 4) ? (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) ? __builtin_strcmp (command, "showboard") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (command); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("showboard"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("showboard"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("showboard"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("showboard"))[3]); } } __result; }))) : __builtin_strcmp (command, "showboard")))); }) : strncmp (command, "showboard", 9)))) return SHOWBOARD;
  if (!(__extension__ (__builtin_constant_p (9) && ((__builtin_constant_p (command) && strlen (command) < ((size_t) (9))) || (__builtin_constant_p ("showdragons") && strlen ("showdragons") < ((size_t) (9)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (command) && __builtin_constant_p ("showdragons") && (__s1_len = strlen (command), __s2_len = strlen ("showdragons"), (!((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("showdragons") + 1) - (size_t)(const void *)("showdragons") == 1) || __s2_len >= 4)) ? __builtin_strcmp (command, "showdragons") : (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) && (__s1_len = strlen (command), __s1_len < 4) ? (__builtin_constant_p ("showdragons") && ((size_t)(const void *)(("showdragons") + 1) - (size_t)(const void *)("showdragons") == 1) ? __builtin_strcmp (command, "showdragons") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("showdragons"); register int __result = (((__const unsigned char *) (__const char *) (command))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (command))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("showdragons") && ((size_t)(const void *)(("showdragons") + 1) - (size_t)(const void *)("showdragons") == 1) && (__s2_len = strlen ("showdragons"), __s2_len < 4) ? (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) ? __builtin_strcmp (command, "showdragons") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (command); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("showdragons"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("showdragons"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("showdragons"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("showdragons"))[3]); } } __result; }))) : __builtin_strcmp (command, "showdragons")))); }) : strncmp (command, "showdragons", 9)))) return CMD_SHOWDRAGONS;
  if (!(__extension__ (__builtin_constant_p (9) && ((__builtin_constant_p (command) && strlen (command) < ((size_t) (9))) || (__builtin_constant_p ("listdragons") && strlen ("listdragons") < ((size_t) (9)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (command) && __builtin_constant_p ("listdragons") && (__s1_len = strlen (command), __s2_len = strlen ("listdragons"), (!((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("listdragons") + 1) - (size_t)(const void *)("listdragons") == 1) || __s2_len >= 4)) ? __builtin_strcmp (command, "listdragons") : (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) && (__s1_len = strlen (command), __s1_len < 4) ? (__builtin_constant_p ("listdragons") && ((size_t)(const void *)(("listdragons") + 1) - (size_t)(const void *)("listdragons") == 1) ? __builtin_strcmp (command, "listdragons") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("listdragons"); register int __result = (((__const unsigned char *) (__const char *) (command))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (command))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("listdragons") && ((size_t)(const void *)(("listdragons") + 1) - (size_t)(const void *)("listdragons") == 1) && (__s2_len = strlen ("listdragons"), __s2_len < 4) ? (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) ? __builtin_strcmp (command, "listdragons") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (command); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("listdragons"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("listdragons"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("listdragons"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("listdragons"))[3]); } } __result; }))) : __builtin_strcmp (command, "listdragons")))); }) : strncmp (command, "listdragons", 9)))) return CMD_LISTDRAGONS;
  if (!(__extension__ (__builtin_constant_p (9) && ((__builtin_constant_p (command) && strlen (command) < ((size_t) (9))) || (__builtin_constant_p ("boardsize") && strlen ("boardsize") < ((size_t) (9)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (command) && __builtin_constant_p ("boardsize") && (__s1_len = strlen (command), __s2_len = strlen ("boardsize"), (!((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("boardsize") + 1) - (size_t)(const void *)("boardsize") == 1) || __s2_len >= 4)) ? __builtin_strcmp (command, "boardsize") : (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) && (__s1_len = strlen (command), __s1_len < 4) ? (__builtin_constant_p ("boardsize") && ((size_t)(const void *)(("boardsize") + 1) - (size_t)(const void *)("boardsize") == 1) ? __builtin_strcmp (command, "boardsize") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("boardsize"); register int __result = (((__const unsigned char *) (__const char *) (command))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (command))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("boardsize") && ((size_t)(const void *)(("boardsize") + 1) - (size_t)(const void *)("boardsize") == 1) && (__s2_len = strlen ("boardsize"), __s2_len < 4) ? (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) ? __builtin_strcmp (command, "boardsize") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (command); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("boardsize"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("boardsize"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("boardsize"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("boardsize"))[3]); } } __result; }))) : __builtin_strcmp (command, "boardsize")))); }) : strncmp (command, "boardsize", 9)))) return SETBOARDSIZE;
  if (!(__extension__ (__builtin_constant_p (9) && ((__builtin_constant_p (command) && strlen (command) < ((size_t) (9))) || (__builtin_constant_p ("freehandicap") && strlen ("freehandicap") < ((size_t) (9)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (command) && __builtin_constant_p ("freehandicap") && (__s1_len = strlen (command), __s2_len = strlen ("freehandicap"), (!((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("freehandicap") + 1) - (size_t)(const void *)("freehandicap") == 1) || __s2_len >= 4)) ? __builtin_strcmp (command, "freehandicap") : (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) && (__s1_len = strlen (command), __s1_len < 4) ? (__builtin_constant_p ("freehandicap") && ((size_t)(const void *)(("freehandicap") + 1) - (size_t)(const void *)("freehandicap") == 1) ? __builtin_strcmp (command, "freehandicap") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("freehandicap"); register int __result = (((__const unsigned char *) (__const char *) (command))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (command))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("freehandicap") && ((size_t)(const void *)(("freehandicap") + 1) - (size_t)(const void *)("freehandicap") == 1) && (__s2_len = strlen ("freehandicap"), __s2_len < 4) ? (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) ? __builtin_strcmp (command, "freehandicap") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (command); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("freehandicap"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("freehandicap"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("freehandicap"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("freehandicap"))[3]); } } __result; }))) : __builtin_strcmp (command, "freehandicap")))); }) : strncmp (command, "freehandicap", 9)))) return FREEHANDICAP;
  if (!(__extension__ (__builtin_constant_p (5) && ((__builtin_constant_p (command) && strlen (command) < ((size_t) (5))) || (__builtin_constant_p ("handicap") && strlen ("handicap") < ((size_t) (5)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (command) && __builtin_constant_p ("handicap") && (__s1_len = strlen (command), __s2_len = strlen ("handicap"), (!((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("handicap") + 1) - (size_t)(const void *)("handicap") == 1) || __s2_len >= 4)) ? __builtin_strcmp (command, "handicap") : (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) && (__s1_len = strlen (command), __s1_len < 4) ? (__builtin_constant_p ("handicap") && ((size_t)(const void *)(("handicap") + 1) - (size_t)(const void *)("handicap") == 1) ? __builtin_strcmp (command, "handicap") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("handicap"); register int __result = (((__const unsigned char *) (__const char *) (command))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (command))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("handicap") && ((size_t)(const void *)(("handicap") + 1) - (size_t)(const void *)("handicap") == 1) && (__s2_len = strlen ("handicap"), __s2_len < 4) ? (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) ? __builtin_strcmp (command, "handicap") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (command); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("handicap"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("handicap"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("handicap"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("handicap"))[3]); } } __result; }))) : __builtin_strcmp (command, "handicap")))); }) : strncmp (command, "handicap", 5)))) return SETHANDICAP;
  if (!(__extension__ (__builtin_constant_p (7) && ((__builtin_constant_p (command) && strlen (command) < ((size_t) (7))) || (__builtin_constant_p ("display") && strlen ("display") < ((size_t) (7)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (command) && __builtin_constant_p ("display") && (__s1_len = strlen (command), __s2_len = strlen ("display"), (!((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("display") + 1) - (size_t)(const void *)("display") == 1) || __s2_len >= 4)) ? __builtin_strcmp (command, "display") : (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) && (__s1_len = strlen (command), __s1_len < 4) ? (__builtin_constant_p ("display") && ((size_t)(const void *)(("display") + 1) - (size_t)(const void *)("display") == 1) ? __builtin_strcmp (command, "display") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("display"); register int __result = (((__const unsigned char *) (__const char *) (command))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (command))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("display") && ((size_t)(const void *)(("display") + 1) - (size_t)(const void *)("display") == 1) && (__s2_len = strlen ("display"), __s2_len < 4) ? (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) ? __builtin_strcmp (command, "display") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (command); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("display"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("display"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("display"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("display"))[3]); } } __result; }))) : __builtin_strcmp (command, "display")))); }) : strncmp (command, "display", 7)))) return DISPLAY;
  if (!(__extension__ (__builtin_constant_p (7) && ((__builtin_constant_p (command) && strlen (command) < ((size_t) (7))) || (__builtin_constant_p ("helpdebug") && strlen ("helpdebug") < ((size_t) (7)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (command) && __builtin_constant_p ("helpdebug") && (__s1_len = strlen (command), __s2_len = strlen ("helpdebug"), (!((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("helpdebug") + 1) - (size_t)(const void *)("helpdebug") == 1) || __s2_len >= 4)) ? __builtin_strcmp (command, "helpdebug") : (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) && (__s1_len = strlen (command), __s1_len < 4) ? (__builtin_constant_p ("helpdebug") && ((size_t)(const void *)(("helpdebug") + 1) - (size_t)(const void *)("helpdebug") == 1) ? __builtin_strcmp (command, "helpdebug") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("helpdebug"); register int __result = (((__const unsigned char *) (__const char *) (command))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (command))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("helpdebug") && ((size_t)(const void *)(("helpdebug") + 1) - (size_t)(const void *)("helpdebug") == 1) && (__s2_len = strlen ("helpdebug"), __s2_len < 4) ? (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) ? __builtin_strcmp (command, "helpdebug") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (command); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("helpdebug"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("helpdebug"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("helpdebug"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("helpdebug"))[3]); } } __result; }))) : __builtin_strcmp (command, "helpdebug")))); }) : strncmp (command, "helpdebug", 7)))) return CMD_HELPDEBUG;
  if (!(__extension__ (__builtin_constant_p (6) && ((__builtin_constant_p (command) && strlen (command) < ((size_t) (6))) || (__builtin_constant_p ("resign") && strlen ("resign") < ((size_t) (6)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (command) && __builtin_constant_p ("resign") && (__s1_len = strlen (command), __s2_len = strlen ("resign"), (!((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("resign") + 1) - (size_t)(const void *)("resign") == 1) || __s2_len >= 4)) ? __builtin_strcmp (command, "resign") : (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) && (__s1_len = strlen (command), __s1_len < 4) ? (__builtin_constant_p ("resign") && ((size_t)(const void *)(("resign") + 1) - (size_t)(const void *)("resign") == 1) ? __builtin_strcmp (command, "resign") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("resign"); register int __result = (((__const unsigned char *) (__const char *) (command))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (command))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("resign") && ((size_t)(const void *)(("resign") + 1) - (size_t)(const void *)("resign") == 1) && (__s2_len = strlen ("resign"), __s2_len < 4) ? (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) ? __builtin_strcmp (command, "resign") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (command); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("resign"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("resign"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("resign"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("resign"))[3]); } } __result; }))) : __builtin_strcmp (command, "resign")))); }) : strncmp (command, "resign", 6)))) return RESIGN;
  if (!(__extension__ (__builtin_constant_p (6) && ((__builtin_constant_p (command) && strlen (command) < ((size_t) (6))) || (__builtin_constant_p ("showmoyo") && strlen ("showmoyo") < ((size_t) (6)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (command) && __builtin_constant_p ("showmoyo") && (__s1_len = strlen (command), __s2_len = strlen ("showmoyo"), (!((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("showmoyo") + 1) - (size_t)(const void *)("showmoyo") == 1) || __s2_len >= 4)) ? __builtin_strcmp (command, "showmoyo") : (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) && (__s1_len = strlen (command), __s1_len < 4) ? (__builtin_constant_p ("showmoyo") && ((size_t)(const void *)(("showmoyo") + 1) - (size_t)(const void *)("showmoyo") == 1) ? __builtin_strcmp (command, "showmoyo") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("showmoyo"); register int __result = (((__const unsigned char *) (__const char *) (command))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (command))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("showmoyo") && ((size_t)(const void *)(("showmoyo") + 1) - (size_t)(const void *)("showmoyo") == 1) && (__s2_len = strlen ("showmoyo"), __s2_len < 4) ? (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) ? __builtin_strcmp (command, "showmoyo") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (command); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("showmoyo"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("showmoyo"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("showmoyo"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("showmoyo"))[3]); } } __result; }))) : __builtin_strcmp (command, "showmoyo")))); }) : strncmp (command, "showmoyo", 6)))) return CMD_SHOWMOYO;
  if (!(__extension__ (__builtin_constant_p (6) && ((__builtin_constant_p (command) && strlen (command) < ((size_t) (6))) || (__builtin_constant_p ("showterri") && strlen ("showterri") < ((size_t) (6)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (command) && __builtin_constant_p ("showterri") && (__s1_len = strlen (command), __s2_len = strlen ("showterri"), (!((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("showterri") + 1) - (size_t)(const void *)("showterri") == 1) || __s2_len >= 4)) ? __builtin_strcmp (command, "showterri") : (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) && (__s1_len = strlen (command), __s1_len < 4) ? (__builtin_constant_p ("showterri") && ((size_t)(const void *)(("showterri") + 1) - (size_t)(const void *)("showterri") == 1) ? __builtin_strcmp (command, "showterri") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("showterri"); register int __result = (((__const unsigned char *) (__const char *) (command))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (command))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("showterri") && ((size_t)(const void *)(("showterri") + 1) - (size_t)(const void *)("showterri") == 1) && (__s2_len = strlen ("showterri"), __s2_len < 4) ? (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) ? __builtin_strcmp (command, "showterri") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (command); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("showterri"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("showterri"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("showterri"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("showterri"))[3]); } } __result; }))) : __builtin_strcmp (command, "showterri")))); }) : strncmp (command, "showterri", 6)))) return CMD_SHOWTERRI;
  if (!(__extension__ (__builtin_constant_p (6) && ((__builtin_constant_p (command) && strlen (command) < ((size_t) (6))) || (__builtin_constant_p ("showarea") && strlen ("showarea") < ((size_t) (6)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (command) && __builtin_constant_p ("showarea") && (__s1_len = strlen (command), __s2_len = strlen ("showarea"), (!((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("showarea") + 1) - (size_t)(const void *)("showarea") == 1) || __s2_len >= 4)) ? __builtin_strcmp (command, "showarea") : (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) && (__s1_len = strlen (command), __s1_len < 4) ? (__builtin_constant_p ("showarea") && ((size_t)(const void *)(("showarea") + 1) - (size_t)(const void *)("showarea") == 1) ? __builtin_strcmp (command, "showarea") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("showarea"); register int __result = (((__const unsigned char *) (__const char *) (command))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (command))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("showarea") && ((size_t)(const void *)(("showarea") + 1) - (size_t)(const void *)("showarea") == 1) && (__s2_len = strlen ("showarea"), __s2_len < 4) ? (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) ? __builtin_strcmp (command, "showarea") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (command); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("showarea"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("showarea"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("showarea"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("showarea"))[3]); } } __result; }))) : __builtin_strcmp (command, "showarea")))); }) : strncmp (command, "showarea", 6)))) return CMD_SHOWAREA;
  if (!(__extension__ (__builtin_constant_p (5) && ((__builtin_constant_p (command) && strlen (command) < ((size_t) (5))) || (__builtin_constant_p ("depth") && strlen ("depth") < ((size_t) (5)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (command) && __builtin_constant_p ("depth") && (__s1_len = strlen (command), __s2_len = strlen ("depth"), (!((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("depth") + 1) - (size_t)(const void *)("depth") == 1) || __s2_len >= 4)) ? __builtin_strcmp (command, "depth") : (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) && (__s1_len = strlen (command), __s1_len < 4) ? (__builtin_constant_p ("depth") && ((size_t)(const void *)(("depth") + 1) - (size_t)(const void *)("depth") == 1) ? __builtin_strcmp (command, "depth") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("depth"); register int __result = (((__const unsigned char *) (__const char *) (command))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (command))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("depth") && ((size_t)(const void *)(("depth") + 1) - (size_t)(const void *)("depth") == 1) && (__s2_len = strlen ("depth"), __s2_len < 4) ? (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) ? __builtin_strcmp (command, "depth") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (command); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("depth"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("depth"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("depth"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("depth"))[3]); } } __result; }))) : __builtin_strcmp (command, "depth")))); }) : strncmp (command, "depth", 5)))) return SETDEPTH;
  if (!(__extension__ (__builtin_constant_p (5) && ((__builtin_constant_p (command) && strlen (command) < ((size_t) (5))) || (__builtin_constant_p ("switch") && strlen ("switch") < ((size_t) (5)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (command) && __builtin_constant_p ("switch") && (__s1_len = strlen (command), __s2_len = strlen ("switch"), (!((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("switch") + 1) - (size_t)(const void *)("switch") == 1) || __s2_len >= 4)) ? __builtin_strcmp (command, "switch") : (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) && (__s1_len = strlen (command), __s1_len < 4) ? (__builtin_constant_p ("switch") && ((size_t)(const void *)(("switch") + 1) - (size_t)(const void *)("switch") == 1) ? __builtin_strcmp (command, "switch") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("switch"); register int __result = (((__const unsigned char *) (__const char *) (command))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (command))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("switch") && ((size_t)(const void *)(("switch") + 1) - (size_t)(const void *)("switch") == 1) && (__s2_len = strlen ("switch"), __s2_len < 4) ? (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) ? __builtin_strcmp (command, "switch") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (command); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("switch"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("switch"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("switch"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("switch"))[3]); } } __result; }))) : __builtin_strcmp (command, "switch")))); }) : strncmp (command, "switch", 5)))) return SWITCH;
  if (!(__extension__ (__builtin_constant_p (4) && ((__builtin_constant_p (command) && strlen (command) < ((size_t) (4))) || (__builtin_constant_p ("komi") && strlen ("komi") < ((size_t) (4)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (command) && __builtin_constant_p ("komi") && (__s1_len = strlen (command), __s2_len = strlen ("komi"), (!((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("komi") + 1) - (size_t)(const void *)("komi") == 1) || __s2_len >= 4)) ? __builtin_strcmp (command, "komi") : (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) && (__s1_len = strlen (command), __s1_len < 4) ? (__builtin_constant_p ("komi") && ((size_t)(const void *)(("komi") + 1) - (size_t)(const void *)("komi") == 1) ? __builtin_strcmp (command, "komi") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("komi"); register int __result = (((__const unsigned char *) (__const char *) (command))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (command))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("komi") && ((size_t)(const void *)(("komi") + 1) - (size_t)(const void *)("komi") == 1) && (__s2_len = strlen ("komi"), __s2_len < 4) ? (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) ? __builtin_strcmp (command, "komi") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (command); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("komi"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("komi"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("komi"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("komi"))[3]); } } __result; }))) : __builtin_strcmp (command, "komi")))); }) : strncmp (command, "komi", 4)))) return SETKOMI;
  if (!(__extension__ (__builtin_constant_p (4) && ((__builtin_constant_p (command) && strlen (command) < ((size_t) (4))) || (__builtin_constant_p ("play") && strlen ("play") < ((size_t) (4)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (command) && __builtin_constant_p ("play") && (__s1_len = strlen (command), __s2_len = strlen ("play"), (!((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("play") + 1) - (size_t)(const void *)("play") == 1) || __s2_len >= 4)) ? __builtin_strcmp (command, "play") : (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) && (__s1_len = strlen (command), __s1_len < 4) ? (__builtin_constant_p ("play") && ((size_t)(const void *)(("play") + 1) - (size_t)(const void *)("play") == 1) ? __builtin_strcmp (command, "play") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("play"); register int __result = (((__const unsigned char *) (__const char *) (command))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (command))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("play") && ((size_t)(const void *)(("play") + 1) - (size_t)(const void *)("play") == 1) && (__s2_len = strlen ("play"), __s2_len < 4) ? (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) ? __builtin_strcmp (command, "play") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (command); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("play"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("play"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("play"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("play"))[3]); } } __result; }))) : __builtin_strcmp (command, "play")))); }) : strncmp (command, "play", 4)))) return PLAY;
  if (!(__extension__ (__builtin_constant_p (4) && ((__builtin_constant_p (command) && strlen (command) < ((size_t) (4))) || (__builtin_constant_p ("info") && strlen ("info") < ((size_t) (4)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (command) && __builtin_constant_p ("info") && (__s1_len = strlen (command), __s2_len = strlen ("info"), (!((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("info") + 1) - (size_t)(const void *)("info") == 1) || __s2_len >= 4)) ? __builtin_strcmp (command, "info") : (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) && (__s1_len = strlen (command), __s1_len < 4) ? (__builtin_constant_p ("info") && ((size_t)(const void *)(("info") + 1) - (size_t)(const void *)("info") == 1) ? __builtin_strcmp (command, "info") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("info"); register int __result = (((__const unsigned char *) (__const char *) (command))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (command))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("info") && ((size_t)(const void *)(("info") + 1) - (size_t)(const void *)("info") == 1) && (__s2_len = strlen ("info"), __s2_len < 4) ? (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) ? __builtin_strcmp (command, "info") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (command); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("info"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("info"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("info"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("info"))[3]); } } __result; }))) : __builtin_strcmp (command, "info")))); }) : strncmp (command, "info", 4)))) return INFO;
  if (!(__extension__ (__builtin_constant_p (4) && ((__builtin_constant_p (command) && strlen (command) < ((size_t) (4))) || (__builtin_constant_p ("force") && strlen ("force") < ((size_t) (4)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (command) && __builtin_constant_p ("force") && (__s1_len = strlen (command), __s2_len = strlen ("force"), (!((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("force") + 1) - (size_t)(const void *)("force") == 1) || __s2_len >= 4)) ? __builtin_strcmp (command, "force") : (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) && (__s1_len = strlen (command), __s1_len < 4) ? (__builtin_constant_p ("force") && ((size_t)(const void *)(("force") + 1) - (size_t)(const void *)("force") == 1) ? __builtin_strcmp (command, "force") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("force"); register int __result = (((__const unsigned char *) (__const char *) (command))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (command))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("force") && ((size_t)(const void *)(("force") + 1) - (size_t)(const void *)("force") == 1) && (__s2_len = strlen ("force"), __s2_len < 4) ? (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) ? __builtin_strcmp (command, "force") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (command); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("force"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("force"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("force"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("force"))[3]); } } __result; }))) : __builtin_strcmp (command, "force")))); }) : strncmp (command, "force", 4)))) return FORCE;
  if (!(__extension__ (__builtin_constant_p (5) && ((__builtin_constant_p (command) && strlen (command) < ((size_t) (5))) || (__builtin_constant_p ("hurry") && strlen ("hurry") < ((size_t) (5)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (command) && __builtin_constant_p ("hurry") && (__s1_len = strlen (command), __s2_len = strlen ("hurry"), (!((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("hurry") + 1) - (size_t)(const void *)("hurry") == 1) || __s2_len >= 4)) ? __builtin_strcmp (command, "hurry") : (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) && (__s1_len = strlen (command), __s1_len < 4) ? (__builtin_constant_p ("hurry") && ((size_t)(const void *)(("hurry") + 1) - (size_t)(const void *)("hurry") == 1) ? __builtin_strcmp (command, "hurry") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("hurry"); register int __result = (((__const unsigned char *) (__const char *) (command))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (command))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("hurry") && ((size_t)(const void *)(("hurry") + 1) - (size_t)(const void *)("hurry") == 1) && (__s2_len = strlen ("hurry"), __s2_len < 4) ? (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) ? __builtin_strcmp (command, "hurry") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (command); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("hurry"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("hurry"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("hurry"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("hurry"))[3]); } } __result; }))) : __builtin_strcmp (command, "hurry")))); }) : strncmp (command, "hurry", 5)))) return SETHURRY;
  if (!(__extension__ (__builtin_constant_p (5) && ((__builtin_constant_p (command) && strlen (command) < ((size_t) (5))) || (__builtin_constant_p ("level") && strlen ("level") < ((size_t) (5)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (command) && __builtin_constant_p ("level") && (__s1_len = strlen (command), __s2_len = strlen ("level"), (!((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("level") + 1) - (size_t)(const void *)("level") == 1) || __s2_len >= 4)) ? __builtin_strcmp (command, "level") : (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) && (__s1_len = strlen (command), __s1_len < 4) ? (__builtin_constant_p ("level") && ((size_t)(const void *)(("level") + 1) - (size_t)(const void *)("level") == 1) ? __builtin_strcmp (command, "level") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("level"); register int __result = (((__const unsigned char *) (__const char *) (command))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (command))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("level") && ((size_t)(const void *)(("level") + 1) - (size_t)(const void *)("level") == 1) && (__s2_len = strlen ("level"), __s2_len < 4) ? (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) ? __builtin_strcmp (command, "level") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (command); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("level"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("level"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("level"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("level"))[3]); } } __result; }))) : __builtin_strcmp (command, "level")))); }) : strncmp (command, "level", 5)))) return SETLEVEL;
  if (!(__extension__ (__builtin_constant_p (4) && ((__builtin_constant_p (command) && strlen (command) < ((size_t) (4))) || (__builtin_constant_p ("pass") && strlen ("pass") < ((size_t) (4)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (command) && __builtin_constant_p ("pass") && (__s1_len = strlen (command), __s2_len = strlen ("pass"), (!((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("pass") + 1) - (size_t)(const void *)("pass") == 1) || __s2_len >= 4)) ? __builtin_strcmp (command, "pass") : (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) && (__s1_len = strlen (command), __s1_len < 4) ? (__builtin_constant_p ("pass") && ((size_t)(const void *)(("pass") + 1) - (size_t)(const void *)("pass") == 1) ? __builtin_strcmp (command, "pass") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("pass"); register int __result = (((__const unsigned char *) (__const char *) (command))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (command))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("pass") && ((size_t)(const void *)(("pass") + 1) - (size_t)(const void *)("pass") == 1) && (__s2_len = strlen ("pass"), __s2_len < 4) ? (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) ? __builtin_strcmp (command, "pass") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (command); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("pass"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("pass"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("pass"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("pass"))[3]); } } __result; }))) : __builtin_strcmp (command, "pass")))); }) : strncmp (command, "pass", 4)))) return PASS;
  if (!(__extension__ (__builtin_constant_p (3) && ((__builtin_constant_p (command) && strlen (command) < ((size_t) (3))) || (__builtin_constant_p ("save") && strlen ("save") < ((size_t) (3)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (command) && __builtin_constant_p ("save") && (__s1_len = strlen (command), __s2_len = strlen ("save"), (!((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("save") + 1) - (size_t)(const void *)("save") == 1) || __s2_len >= 4)) ? __builtin_strcmp (command, "save") : (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) && (__s1_len = strlen (command), __s1_len < 4) ? (__builtin_constant_p ("save") && ((size_t)(const void *)(("save") + 1) - (size_t)(const void *)("save") == 1) ? __builtin_strcmp (command, "save") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("save"); register int __result = (((__const unsigned char *) (__const char *) (command))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (command))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("save") && ((size_t)(const void *)(("save") + 1) - (size_t)(const void *)("save") == 1) && (__s2_len = strlen ("save"), __s2_len < 4) ? (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) ? __builtin_strcmp (command, "save") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (command); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("save"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("save"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("save"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("save"))[3]); } } __result; }))) : __builtin_strcmp (command, "save")))); }) : strncmp (command, "save", 3)))) return CMD_SAVE;
  if (!(__extension__ (__builtin_constant_p (3) && ((__builtin_constant_p (command) && strlen (command) < ((size_t) (3))) || (__builtin_constant_p ("load") && strlen ("load") < ((size_t) (3)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (command) && __builtin_constant_p ("load") && (__s1_len = strlen (command), __s2_len = strlen ("load"), (!((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("load") + 1) - (size_t)(const void *)("load") == 1) || __s2_len >= 4)) ? __builtin_strcmp (command, "load") : (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) && (__s1_len = strlen (command), __s1_len < 4) ? (__builtin_constant_p ("load") && ((size_t)(const void *)(("load") + 1) - (size_t)(const void *)("load") == 1) ? __builtin_strcmp (command, "load") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("load"); register int __result = (((__const unsigned char *) (__const char *) (command))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (command))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("load") && ((size_t)(const void *)(("load") + 1) - (size_t)(const void *)("load") == 1) && (__s2_len = strlen ("load"), __s2_len < 4) ? (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) ? __builtin_strcmp (command, "load") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (command); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("load"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("load"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("load"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("load"))[3]); } } __result; }))) : __builtin_strcmp (command, "load")))); }) : strncmp (command, "load", 3)))) return CMD_LOAD;
  if (!(__extension__ (__builtin_constant_p (3) && ((__builtin_constant_p (command) && strlen (command) < ((size_t) (3))) || (__builtin_constant_p ("end") && strlen ("end") < ((size_t) (3)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (command) && __builtin_constant_p ("end") && (__s1_len = strlen (command), __s2_len = strlen ("end"), (!((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("end") + 1) - (size_t)(const void *)("end") == 1) || __s2_len >= 4)) ? __builtin_strcmp (command, "end") : (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) && (__s1_len = strlen (command), __s1_len < 4) ? (__builtin_constant_p ("end") && ((size_t)(const void *)(("end") + 1) - (size_t)(const void *)("end") == 1) ? __builtin_strcmp (command, "end") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("end"); register int __result = (((__const unsigned char *) (__const char *) (command))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (command))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("end") && ((size_t)(const void *)(("end") + 1) - (size_t)(const void *)("end") == 1) && (__s2_len = strlen ("end"), __s2_len < 4) ? (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) ? __builtin_strcmp (command, "end") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (command); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("end"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("end"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("end"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("end"))[3]); } } __result; }))) : __builtin_strcmp (command, "end")))); }) : strncmp (command, "end", 3)))) return END;
  if (!(__extension__ (__builtin_constant_p (3) && ((__builtin_constant_p (command) && strlen (command) < ((size_t) (3))) || (__builtin_constant_p ("move") && strlen ("move") < ((size_t) (3)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (command) && __builtin_constant_p ("move") && (__s1_len = strlen (command), __s2_len = strlen ("move"), (!((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("move") + 1) - (size_t)(const void *)("move") == 1) || __s2_len >= 4)) ? __builtin_strcmp (command, "move") : (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) && (__s1_len = strlen (command), __s1_len < 4) ? (__builtin_constant_p ("move") && ((size_t)(const void *)(("move") + 1) - (size_t)(const void *)("move") == 1) ? __builtin_strcmp (command, "move") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("move"); register int __result = (((__const unsigned char *) (__const char *) (command))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (command))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("move") && ((size_t)(const void *)(("move") + 1) - (size_t)(const void *)("move") == 1) && (__s2_len = strlen ("move"), __s2_len < 4) ? (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) ? __builtin_strcmp (command, "move") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (command); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("move"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("move"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("move"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("move"))[3]); } } __result; }))) : __builtin_strcmp (command, "move")))); }) : strncmp (command, "move", 3)))) return MOVE;
  if (!(__extension__ (__builtin_constant_p (3) && ((__builtin_constant_p (command) && strlen (command) < ((size_t) (3))) || (__builtin_constant_p ("undo") && strlen ("undo") < ((size_t) (3)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (command) && __builtin_constant_p ("undo") && (__s1_len = strlen (command), __s2_len = strlen ("undo"), (!((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("undo") + 1) - (size_t)(const void *)("undo") == 1) || __s2_len >= 4)) ? __builtin_strcmp (command, "undo") : (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) && (__s1_len = strlen (command), __s1_len < 4) ? (__builtin_constant_p ("undo") && ((size_t)(const void *)(("undo") + 1) - (size_t)(const void *)("undo") == 1) ? __builtin_strcmp (command, "undo") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("undo"); register int __result = (((__const unsigned char *) (__const char *) (command))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (command))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("undo") && ((size_t)(const void *)(("undo") + 1) - (size_t)(const void *)("undo") == 1) && (__s2_len = strlen ("undo"), __s2_len < 4) ? (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) ? __builtin_strcmp (command, "undo") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (command); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("undo"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("undo"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("undo"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("undo"))[3]); } } __result; }))) : __builtin_strcmp (command, "undo")))); }) : strncmp (command, "undo", 3)))) return UNDO;
  if (!(__extension__ (__builtin_constant_p (3) && ((__builtin_constant_p (command) && strlen (command) < ((size_t) (3))) || (__builtin_constant_p ("comment") && strlen ("comment") < ((size_t) (3)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (command) && __builtin_constant_p ("comment") && (__s1_len = strlen (command), __s2_len = strlen ("comment"), (!((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("comment") + 1) - (size_t)(const void *)("comment") == 1) || __s2_len >= 4)) ? __builtin_strcmp (command, "comment") : (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) && (__s1_len = strlen (command), __s1_len < 4) ? (__builtin_constant_p ("comment") && ((size_t)(const void *)(("comment") + 1) - (size_t)(const void *)("comment") == 1) ? __builtin_strcmp (command, "comment") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("comment"); register int __result = (((__const unsigned char *) (__const char *) (command))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (command))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("comment") && ((size_t)(const void *)(("comment") + 1) - (size_t)(const void *)("comment") == 1) && (__s2_len = strlen ("comment"), __s2_len < 4) ? (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) ? __builtin_strcmp (command, "comment") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (command); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("comment"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("comment"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("comment"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("comment"))[3]); } } __result; }))) : __builtin_strcmp (command, "comment")))); }) : strncmp (command, "comment", 3)))) return COMMENT;
  if (!(__extension__ (__builtin_constant_p (3) && ((__builtin_constant_p (command) && strlen (command) < ((size_t) (3))) || (__builtin_constant_p ("score") && strlen ("score") < ((size_t) (3)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (command) && __builtin_constant_p ("score") && (__s1_len = strlen (command), __s2_len = strlen ("score"), (!((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("score") + 1) - (size_t)(const void *)("score") == 1) || __s2_len >= 4)) ? __builtin_strcmp (command, "score") : (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) && (__s1_len = strlen (command), __s1_len < 4) ? (__builtin_constant_p ("score") && ((size_t)(const void *)(("score") + 1) - (size_t)(const void *)("score") == 1) ? __builtin_strcmp (command, "score") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("score"); register int __result = (((__const unsigned char *) (__const char *) (command))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (command))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("score") && ((size_t)(const void *)(("score") + 1) - (size_t)(const void *)("score") == 1) && (__s2_len = strlen ("score"), __s2_len < 4) ? (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) ? __builtin_strcmp (command, "score") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (command); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("score"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("score"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("score"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("score"))[3]); } } __result; }))) : __builtin_strcmp (command, "score")))); }) : strncmp (command, "score", 3)))) return SCORE;
  if (!(__extension__ (__builtin_constant_p (3) && ((__builtin_constant_p (command) && strlen (command) < ((size_t) (3))) || (__builtin_constant_p ("dead") && strlen ("dead") < ((size_t) (3)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (command) && __builtin_constant_p ("dead") && (__s1_len = strlen (command), __s2_len = strlen ("dead"), (!((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("dead") + 1) - (size_t)(const void *)("dead") == 1) || __s2_len >= 4)) ? __builtin_strcmp (command, "dead") : (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) && (__s1_len = strlen (command), __s1_len < 4) ? (__builtin_constant_p ("dead") && ((size_t)(const void *)(("dead") + 1) - (size_t)(const void *)("dead") == 1) ? __builtin_strcmp (command, "dead") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("dead"); register int __result = (((__const unsigned char *) (__const char *) (command))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (command))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("dead") && ((size_t)(const void *)(("dead") + 1) - (size_t)(const void *)("dead") == 1) && (__s2_len = strlen ("dead"), __s2_len < 4) ? (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) ? __builtin_strcmp (command, "dead") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (command); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("dead"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("dead"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("dead"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("dead"))[3]); } } __result; }))) : __builtin_strcmp (command, "dead")))); }) : strncmp (command, "dead", 3)))) return CMD_DEAD;
  if (!(__extension__ (__builtin_constant_p (3) && ((__builtin_constant_p (command) && strlen (command) < ((size_t) (3))) || (__builtin_constant_p ("capture") && strlen ("capture") < ((size_t) (3)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (command) && __builtin_constant_p ("capture") && (__s1_len = strlen (command), __s2_len = strlen ("capture"), (!((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("capture") + 1) - (size_t)(const void *)("capture") == 1) || __s2_len >= 4)) ? __builtin_strcmp (command, "capture") : (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) && (__s1_len = strlen (command), __s1_len < 4) ? (__builtin_constant_p ("capture") && ((size_t)(const void *)(("capture") + 1) - (size_t)(const void *)("capture") == 1) ? __builtin_strcmp (command, "capture") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("capture"); register int __result = (((__const unsigned char *) (__const char *) (command))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (command))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("capture") && ((size_t)(const void *)(("capture") + 1) - (size_t)(const void *)("capture") == 1) && (__s2_len = strlen ("capture"), __s2_len < 4) ? (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) ? __builtin_strcmp (command, "capture") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (command); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("capture"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("capture"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("capture"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("capture"))[3]); } } __result; }))) : __builtin_strcmp (command, "capture")))); }) : strncmp (command, "capture", 3)))) return CMD_CAPTURE;
  if (!(__extension__ (__builtin_constant_p (3) && ((__builtin_constant_p (command) && strlen (command) < ((size_t) (3))) || (__builtin_constant_p ("defend") && strlen ("defend") < ((size_t) (3)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (command) && __builtin_constant_p ("defend") && (__s1_len = strlen (command), __s2_len = strlen ("defend"), (!((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("defend") + 1) - (size_t)(const void *)("defend") == 1) || __s2_len >= 4)) ? __builtin_strcmp (command, "defend") : (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) && (__s1_len = strlen (command), __s1_len < 4) ? (__builtin_constant_p ("defend") && ((size_t)(const void *)(("defend") + 1) - (size_t)(const void *)("defend") == 1) ? __builtin_strcmp (command, "defend") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("defend"); register int __result = (((__const unsigned char *) (__const char *) (command))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (command))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("defend") && ((size_t)(const void *)(("defend") + 1) - (size_t)(const void *)("defend") == 1) && (__s2_len = strlen ("defend"), __s2_len < 4) ? (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) ? __builtin_strcmp (command, "defend") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (command); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("defend"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("defend"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("defend"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("defend"))[3]); } } __result; }))) : __builtin_strcmp (command, "defend")))); }) : strncmp (command, "defend", 3)))) return CMD_DEFEND;
  if (!(__extension__ (__builtin_constant_p (4) && ((__builtin_constant_p (command) && strlen (command) < ((size_t) (4))) || (__builtin_constant_p ("exit") && strlen ("exit") < ((size_t) (4)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (command) && __builtin_constant_p ("exit") && (__s1_len = strlen (command), __s2_len = strlen ("exit"), (!((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("exit") + 1) - (size_t)(const void *)("exit") == 1) || __s2_len >= 4)) ? __builtin_strcmp (command, "exit") : (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) && (__s1_len = strlen (command), __s1_len < 4) ? (__builtin_constant_p ("exit") && ((size_t)(const void *)(("exit") + 1) - (size_t)(const void *)("exit") == 1) ? __builtin_strcmp (command, "exit") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("exit"); register int __result = (((__const unsigned char *) (__const char *) (command))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (command))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("exit") && ((size_t)(const void *)(("exit") + 1) - (size_t)(const void *)("exit") == 1) && (__s2_len = strlen ("exit"), __s2_len < 4) ? (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) ? __builtin_strcmp (command, "exit") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (command); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("exit"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("exit"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("exit"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("exit"))[3]); } } __result; }))) : __builtin_strcmp (command, "exit")))); }) : strncmp (command, "exit", 4)))) return EXIT;
  if (!(__extension__ (__builtin_constant_p (4) && ((__builtin_constant_p (command) && strlen (command) < ((size_t) (4))) || (__builtin_constant_p ("quit") && strlen ("quit") < ((size_t) (4)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (command) && __builtin_constant_p ("quit") && (__s1_len = strlen (command), __s2_len = strlen ("quit"), (!((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("quit") + 1) - (size_t)(const void *)("quit") == 1) || __s2_len >= 4)) ? __builtin_strcmp (command, "quit") : (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) && (__s1_len = strlen (command), __s1_len < 4) ? (__builtin_constant_p ("quit") && ((size_t)(const void *)(("quit") + 1) - (size_t)(const void *)("quit") == 1) ? __builtin_strcmp (command, "quit") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("quit"); register int __result = (((__const unsigned char *) (__const char *) (command))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (command))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("quit") && ((size_t)(const void *)(("quit") + 1) - (size_t)(const void *)("quit") == 1) && (__s2_len = strlen ("quit"), __s2_len < 4) ? (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) ? __builtin_strcmp (command, "quit") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (command); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("quit"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("quit"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("quit"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("quit"))[3]); } } __result; }))) : __builtin_strcmp (command, "quit")))); }) : strncmp (command, "quit", 4)))) return QUIT;
  if (!(__extension__ (__builtin_constant_p (1) && ((__builtin_constant_p (command) && strlen (command) < ((size_t) (1))) || (__builtin_constant_p ("help") && strlen ("help") < ((size_t) (1)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (command) && __builtin_constant_p ("help") && (__s1_len = strlen (command), __s2_len = strlen ("help"), (!((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("help") + 1) - (size_t)(const void *)("help") == 1) || __s2_len >= 4)) ? __builtin_strcmp (command, "help") : (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) && (__s1_len = strlen (command), __s1_len < 4) ? (__builtin_constant_p ("help") && ((size_t)(const void *)(("help") + 1) - (size_t)(const void *)("help") == 1) ? __builtin_strcmp (command, "help") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("help"); register int __result = (((__const unsigned char *) (__const char *) (command))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (command))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("help") && ((size_t)(const void *)(("help") + 1) - (size_t)(const void *)("help") == 1) && (__s2_len = strlen ("help"), __s2_len < 4) ? (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) ? __builtin_strcmp (command, "help") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (command); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("help"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("help"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("help"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("help"))[3]); } } __result; }))) : __builtin_strcmp (command, "help")))); }) : strncmp (command, "help", 1)))) return HELP;
  if (!(__extension__ (__builtin_constant_p (2) && ((__builtin_constant_p (command) && strlen (command) < ((size_t) (2))) || (__builtin_constant_p ("back") && strlen ("back") < ((size_t) (2)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (command) && __builtin_constant_p ("back") && (__s1_len = strlen (command), __s2_len = strlen ("back"), (!((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("back") + 1) - (size_t)(const void *)("back") == 1) || __s2_len >= 4)) ? __builtin_strcmp (command, "back") : (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) && (__s1_len = strlen (command), __s1_len < 4) ? (__builtin_constant_p ("back") && ((size_t)(const void *)(("back") + 1) - (size_t)(const void *)("back") == 1) ? __builtin_strcmp (command, "back") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("back"); register int __result = (((__const unsigned char *) (__const char *) (command))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (command))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("back") && ((size_t)(const void *)(("back") + 1) - (size_t)(const void *)("back") == 1) && (__s2_len = strlen ("back"), __s2_len < 4) ? (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) ? __builtin_strcmp (command, "back") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (command); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("back"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("back"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("back"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("back"))[3]); } } __result; }))) : __builtin_strcmp (command, "back")))); }) : strncmp (command, "back", 2)))) return CMD_BACK;
  if (!(__extension__ (__builtin_constant_p (2) && ((__builtin_constant_p (command) && strlen (command) < ((size_t) (2))) || (__builtin_constant_p ("forward") && strlen ("forward") < ((size_t) (2)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (command) && __builtin_constant_p ("forward") && (__s1_len = strlen (command), __s2_len = strlen ("forward"), (!((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("forward") + 1) - (size_t)(const void *)("forward") == 1) || __s2_len >= 4)) ? __builtin_strcmp (command, "forward") : (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) && (__s1_len = strlen (command), __s1_len < 4) ? (__builtin_constant_p ("forward") && ((size_t)(const void *)(("forward") + 1) - (size_t)(const void *)("forward") == 1) ? __builtin_strcmp (command, "forward") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("forward"); register int __result = (((__const unsigned char *) (__const char *) (command))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (command))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("forward") && ((size_t)(const void *)(("forward") + 1) - (size_t)(const void *)("forward") == 1) && (__s2_len = strlen ("forward"), __s2_len < 4) ? (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) ? __builtin_strcmp (command, "forward") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (command); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("forward"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("forward"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("forward"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("forward"))[3]); } } __result; }))) : __builtin_strcmp (command, "forward")))); }) : strncmp (command, "forward", 2)))) return CMD_FORWARD;
  if (!(__extension__ (__builtin_constant_p (2) && ((__builtin_constant_p (command) && strlen (command) < ((size_t) (2))) || (__builtin_constant_p ("last") && strlen ("last") < ((size_t) (2)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (command) && __builtin_constant_p ("last") && (__s1_len = strlen (command), __s2_len = strlen ("last"), (!((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("last") + 1) - (size_t)(const void *)("last") == 1) || __s2_len >= 4)) ? __builtin_strcmp (command, "last") : (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) && (__s1_len = strlen (command), __s1_len < 4) ? (__builtin_constant_p ("last") && ((size_t)(const void *)(("last") + 1) - (size_t)(const void *)("last") == 1) ? __builtin_strcmp (command, "last") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("last"); register int __result = (((__const unsigned char *) (__const char *) (command))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (command))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("last") && ((size_t)(const void *)(("last") + 1) - (size_t)(const void *)("last") == 1) && (__s2_len = strlen ("last"), __s2_len < 4) ? (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) ? __builtin_strcmp (command, "last") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (command); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("last"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("last"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("last"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("last"))[3]); } } __result; }))) : __builtin_strcmp (command, "last")))); }) : strncmp (command, "last", 2)))) return CMD_LAST;
  if (!(__extension__ (__builtin_constant_p (2) && ((__builtin_constant_p (command) && strlen (command) < ((size_t) (2))) || (__builtin_constant_p ("goto") && strlen ("goto") < ((size_t) (2)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (command) && __builtin_constant_p ("goto") && (__s1_len = strlen (command), __s2_len = strlen ("goto"), (!((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("goto") + 1) - (size_t)(const void *)("goto") == 1) || __s2_len >= 4)) ? __builtin_strcmp (command, "goto") : (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) && (__s1_len = strlen (command), __s1_len < 4) ? (__builtin_constant_p ("goto") && ((size_t)(const void *)(("goto") + 1) - (size_t)(const void *)("goto") == 1) ? __builtin_strcmp (command, "goto") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("goto"); register int __result = (((__const unsigned char *) (__const char *) (command))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (command))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("goto") && ((size_t)(const void *)(("goto") + 1) - (size_t)(const void *)("goto") == 1) && (__s2_len = strlen ("goto"), __s2_len < 4) ? (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) ? __builtin_strcmp (command, "goto") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (command); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("goto"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("goto"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("goto"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("goto"))[3]); } } __result; }))) : __builtin_strcmp (command, "goto")))); }) : strncmp (command, "goto", 2)))) return CMD_GOTO;
  if (!(__extension__ (__builtin_constant_p (2) && ((__builtin_constant_p (command) && strlen (command) < ((size_t) (2))) || (__builtin_constant_p ("game") && strlen ("game") < ((size_t) (2)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (command) && __builtin_constant_p ("game") && (__s1_len = strlen (command), __s2_len = strlen ("game"), (!((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("game") + 1) - (size_t)(const void *)("game") == 1) || __s2_len >= 4)) ? __builtin_strcmp (command, "game") : (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) && (__s1_len = strlen (command), __s1_len < 4) ? (__builtin_constant_p ("game") && ((size_t)(const void *)(("game") + 1) - (size_t)(const void *)("game") == 1) ? __builtin_strcmp (command, "game") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("game"); register int __result = (((__const unsigned char *) (__const char *) (command))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (command))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("game") && ((size_t)(const void *)(("game") + 1) - (size_t)(const void *)("game") == 1) && (__s2_len = strlen ("game"), __s2_len < 4) ? (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) ? __builtin_strcmp (command, "game") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (command); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("game"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("game"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("game"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("game"))[3]); } } __result; }))) : __builtin_strcmp (command, "game")))); }) : strncmp (command, "game", 2)))) return NEW;
  if (!(__extension__ (__builtin_constant_p (2) && ((__builtin_constant_p (command) && strlen (command) < ((size_t) (2))) || (__builtin_constant_p ("count") && strlen ("count") < ((size_t) (2)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (command) && __builtin_constant_p ("count") && (__s1_len = strlen (command), __s2_len = strlen ("count"), (!((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("count") + 1) - (size_t)(const void *)("count") == 1) || __s2_len >= 4)) ? __builtin_strcmp (command, "count") : (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) && (__s1_len = strlen (command), __s1_len < 4) ? (__builtin_constant_p ("count") && ((size_t)(const void *)(("count") + 1) - (size_t)(const void *)("count") == 1) ? __builtin_strcmp (command, "count") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("count"); register int __result = (((__const unsigned char *) (__const char *) (command))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (command))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (command))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("count") && ((size_t)(const void *)(("count") + 1) - (size_t)(const void *)("count") == 1) && (__s2_len = strlen ("count"), __s2_len < 4) ? (__builtin_constant_p (command) && ((size_t)(const void *)((command) + 1) - (size_t)(const void *)(command) == 1) ? __builtin_strcmp (command, "count") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (command); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("count"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("count"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("count"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("count"))[3]); } } __result; }))) : __builtin_strcmp (command, "count")))); }) : strncmp (command, "count", 2)))) return COUNT;


  return INVALID;
}






static void
init_sgf(Gameinfo *ginfo)
{
  if (sgf_initialized)
    return;
  sgf_initialized = 1;

  sgf_write_header(sgftree.root, 1, random_seed, komi, level, chinese_rules);
  sgfOverwritePropertyInt(sgftree.root, "HA", ginfo->handicap);
  if (ginfo->handicap > 0)
    gnugo_recordboard(sgftree.root);
}






static void
computer_move(Gameinfo *gameinfo, int *passes)
{
  int i, j;
  int move_val;

  init_sgf(gameinfo);


  move_val = gnugo_genmove(&i, &j, gameinfo->to_move);
  if (showscore) {
    gnugo_estimate_score(&lower_bound, &upper_bound);
    current_score_estimate = (int) ((lower_bound + upper_bound) / 2.0);
  }

  last_move_i = i;
  last_move_j = j;

  mprintf("%s(%d): %m\n", color_to_string(gameinfo->to_move),
   movenum+1, i, j);
  if (is_pass(((19 + 2) + (i) * (19 + 1) + (j))))
    (*passes)++;
  else
    *passes = 0;

  gnugo_play_move(i, j, gameinfo->to_move);
  sgffile_add_debuginfo(sgftree.lastnode, move_val);
  sgftreeAddPlay(&sgftree, gameinfo->to_move, i, j);
  sgffile_output(&sgftree);

  gameinfo->to_move = (1 +2 -(gameinfo->to_move));
}






static void
do_move(Gameinfo *gameinfo, char *command, int *passes, int force)
{
  int i, j;

  if (!string_to_location(board_size, command, &i, &j)) {
    printf("\nInvalid move: %s\n", command);
    return;
  }

  if (!gnugo_is_legal(i, j, gameinfo->to_move)) {
    printf("\nIllegal move: %s", command);
    return;
  }

  *passes = 0;
  (!(verbose)) ? (void)0 : (void)gprintf("\nyour move: %m\n\n", i, j);
  init_sgf(gameinfo);
  gnugo_play_move(i, j, gameinfo->to_move);
  sgffile_add_debuginfo(sgftree.lastnode, 0);
  sgftreeAddPlay(&sgftree, gameinfo->to_move, i, j);
  sgffile_output(&sgftree);

  last_move_i = i;
  last_move_j = j;

  if (opt_showboard && !emacs) {
    ascii_showboard();
    printf("GNU Go is thinking...\n");
  }
  if (force) {
    gameinfo->computer_player = (1 +2 -(gameinfo->computer_player));
    gameinfo->to_move = (1 +2 -(gameinfo->to_move));
    sgftreeAddComment(&sgftree, "forced");
    return;
  }
  gameinfo->to_move = (1 +2 -(gameinfo->to_move));
  computer_move(gameinfo, passes);
}






static void
do_pass(Gameinfo *gameinfo, int *passes, int force)
{
  (*passes)++;
  init_sgf(gameinfo);
  gnugo_play_move(-1, -1, gameinfo->to_move);
  sgffile_add_debuginfo(sgftree.lastnode, 0);
  sgftreeAddPlay(&sgftree, gameinfo->to_move, -1, -1);
  sgffile_output(&sgftree);

  gameinfo->to_move = (1 +2 -(gameinfo->to_move));
  if (force) {
    gameinfo->computer_player = (1 +2 -(gameinfo->computer_player));
    sgftreeAddComment(&sgftree, "forced");
    return;
  }
  computer_move(gameinfo, passes);
}






void
play_ascii(SGFTree *tree, Gameinfo *gameinfo, char *filename, char *until)
{
  int m, num;
  int sz;
  float fnum;
  int passes = 0;
  int tmp;
  char line[80];
  char *line_ptr = line;
  char *command;
  char *tmpstring;
  int state = 1;

  setbuf(stdout, ((void *)0));

  sgftree = *tree;

  if (filename) {
    gameinfo_load_sgfheader(gameinfo, sgftree.root);
    gameinfo->to_move = gameinfo_play_sgftree(gameinfo, &sgftree, until);
    sgf_initialized = 1;
  }
  else {
    if (sgfGetIntProperty(sgftree.root, "SZ", &sz))
      gnugo_clear_board(sz);
    if (gameinfo->handicap == 0)
      gameinfo->to_move = 2;
    else {
      gameinfo->handicap = gnugo_placehand(gameinfo->handicap);
      gameinfo->to_move = 1;
    }
    sgf_initialized = 0;
  }

  while (state == 1) {

    current_score_estimate = 4711;

    printf("\nBeginning ASCII mode game.\n\n");
    gameinfo_print(gameinfo);


    if (gameinfo->computer_player == gameinfo->to_move)
      computer_move(gameinfo, &passes);


    while (passes < 2) {

      if (opt_showboard)
 ascii_showboard();


      mprintf("%s(%d): ", color_to_string(gameinfo->to_move), movenum + 1);


      line_ptr = line;
      if (!fgets(line, 80, stdin)) {
 printf("\nThanks! for playing GNU Go.\n\n");
 return ;
      }
      while (command = strtok(line_ptr, ";"), line_ptr = 0, command) {


 switch (get_command(command)) {
 case RESIGN:
   printf("\nGNU Go wins by resignation.");
   sgftreeWriteResult(&sgftree,
        gameinfo->to_move == 1 ? -1000.0 : 1000.0,
        1);
          sgffile_output(&sgftree);
 case END:
 case EXIT:
 case QUIT:
   printf("\nThanks! for playing GNU Go.\n\n");
   return ;
   break;
 case HELP:
   show_commands();
   break;
 case CMD_HELPDEBUG:
   printf("capture <pos>    try to capture indicated group\ndead             Toggle display of dead stones\ndefend <pos>     try to defend indicated group\nlistdragons      print dragon info \nshowarea         display area\nshowdragons      display dragons\nshowmoyo         display moyo\nshowterri        display territory\n");
   break;
 case SHOWBOARD:
   opt_showboard = !opt_showboard;
   break;
 case INFO:
   printf("\n");
   gameinfo_print(gameinfo);
   break;
 case SETBOARDSIZE:
   if (sgf_initialized) {
     printf("Boardsize cannot be changed after record is started!\n");
     break;
   }
   command += 10;
   if (sscanf(command, "%d", &num) != 1) {
     printf("\nInvalid command syntax!\n");
     break;
   }
   if (num < 5 || num > 19) {
     printf("\nInvalid board size: %d\n", num);
     break;
   }
   sz = num;

   gnugo_clear_board(sz);

   gameinfo->handicap = gnugo_placehand(gameinfo->handicap);
   sgfOverwritePropertyInt(sgftree.root, "SZ", sz);
   sgfOverwritePropertyInt(sgftree.root, "HA", gameinfo->handicap);
   break;
 case SETHANDICAP:
   if (sgf_initialized) {
     printf("Handicap cannot be changed after game is started!\n");
     break;
   }
   command += 9;
   if (sscanf(command, "%d", &num) != 1) {
     printf("\nInvalid command syntax!\n");
     break;
   }
   if (num < 0 || num > 9) {
     printf("\nInvalid handicap: %d\n", num);
     break;
   }

   gnugo_clear_board(board_size);


   gameinfo->handicap = gnugo_placehand(num);
   printf("\nSet handicap to %d\n", gameinfo->handicap);
          gameinfo->to_move = (gameinfo->handicap ? 1 : 2);
   break;
 case FREEHANDICAP:
   if (sgf_initialized) {
     printf("Handicap cannot be changed after game is started!\n");
     break;
   }
   while (*command && *command != ' ')
     command++;
   ascii_free_handicap(gameinfo, command);
   break;
 case SETKOMI:
   if (sgf_initialized) {
     printf("Komi cannot be modified after game record is started!\n");
     break;
   }
   command += 5;
   if (sscanf(command, "%f", &fnum) != 1) {
     printf("\nInvalid command syntax!\n");
     break;
   }
   komi = fnum;
   printf("\nSet Komi to %.1f\n", komi);
   break;
 case SETDEPTH:
   {
     command += 6;
     if (sscanf(command, "%d", &num) != 1) {
       printf("\nInvalid command syntax!\n");
       break;
     }
     mandated_depth = num;
     printf("\nSet depth to %d\n", mandated_depth);
     break;
   }
 case SETLEVEL:
   {
     command += 6;
     if (sscanf(command, "%d", &num) != 1) {
       printf("\nInvalid command syntax!\n");
       break;
     }
     level = num;
     printf("\nSet level to %d\n", level);
     break;
   }



 case SETHURRY:
   {
     command += 6;
     if (sscanf(command, "%d", &num) != 1) {
       printf("\nInvalid command syntax!\n");
       break;
     }
     level = 10 - num;
     printf("\nSet hurry to %d\n", 10 - level);
     break;
   }
 case DISPLAY:
   if (!opt_showboard)
     ascii_showboard();
   break;
 case FORCE:
   command += 6;
   switch (get_command(command)) {
   case MOVE:
     do_move(gameinfo, command, &passes, 1);
     break;
   case PASS:
     do_pass(gameinfo, &passes, 1);
     break;
   default:
     printf("Illegal forced move: %s %d\n", command,
     get_command(command));
     break;
   }
   break;
 case MOVE:
   do_move(gameinfo, command, &passes, 0);
   break;
 case PASS:
   do_pass(gameinfo, &passes, 0);
   break;
 case PLAY:
   command += 5;
   if (sscanf(command, "%d", &num) != 1) {
     printf("\nInvalid command syntax!\n");
     break;
   }
   if (num >= 0)
     for (m = 0; m < num; m++) {
       gameinfo->computer_player
  = (1 +2 -(gameinfo->computer_player));
       computer_move(gameinfo, &passes);
       if (passes >= 2)
  break;
     }
   else {
     printf("\nInvalid number of moves specified: %d\n", num);
     break;
   }
   break;
 case PLAYBLACK:
   if (gameinfo->computer_player == 1)
     gameinfo->computer_player = 2;
   if (gameinfo->computer_player == gameinfo->to_move)
     computer_move(gameinfo, &passes);
   break;
 case PLAYWHITE:
   if (gameinfo->computer_player == 2)
     gameinfo->computer_player = 1;
   if (gameinfo->computer_player == gameinfo->to_move)
     computer_move(gameinfo, &passes);
   break;
 case SWITCH:
   gameinfo->computer_player = (1 +2 -(gameinfo->computer_player));
   computer_move(gameinfo, &passes);
   break;
 case UNDO:
 case CMD_BACK:
   if (gnugo_undo_move(1)) {
            sgftreeAddComment(&sgftree, "undone");
     sgftreeBack(&sgftree);
     gameinfo->to_move = (1 +2 -(gameinfo->to_move));
   }
   else
     printf("\nCan't undo.\n");
   break;
 case CMD_FORWARD:
         if (sgftreeForward(&sgftree))
           gameinfo->to_move = gnugo_play_sgfnode(sgftree.lastnode,
        gameinfo->to_move);
   else
     printf("\nEnd of game tree.\n");
   break;
 case CMD_LAST:
         while (sgftreeForward(&sgftree))
           gameinfo->to_move = gnugo_play_sgfnode(sgftree.lastnode,
        gameinfo->to_move);
   break;
 case COMMENT:
   printf("\nEnter comment. Press ENTER when ready.\n");
   fgets(line, 80, stdin);
   sgftreeAddComment(&sgftree, line);
   break;
 case SCORE:
   showscore = !showscore;
   if (!showscore)
     current_score_estimate = 4711;
   break;
 case CMD_DEAD:
   showdead = !showdead;
   break;
 case CMD_CAPTURE:
   strtok(command, " ");
   showcapture(strtok(((void *)0), " "));
   break;
 case CMD_DEFEND:
   strtok(command, " ");
   showdefense(strtok(((void *)0), " "));
   break;
 case CMD_SHOWMOYO:
   tmp = printmoyo;
   printmoyo = 0x02;
   examine_position(gameinfo->to_move, 4);
   print_moyo();
   printmoyo = tmp;
   break;
 case CMD_SHOWTERRI:
   tmp = printmoyo;
   printmoyo = 0x01;
   examine_position(gameinfo->to_move, 4);
   print_moyo();
   printmoyo = tmp;
   break;
 case CMD_SHOWAREA:
   tmp = printmoyo;
   printmoyo = 0x04;
   examine_position(gameinfo->to_move, 4);
   print_moyo();
   printmoyo = tmp;
   break;
 case CMD_SHOWDRAGONS:
   examine_position(gameinfo->to_move, 4);
   showboard(1);
   break;
 case CMD_GOTO:
   strtok(command, " ");
   ascii_goto(gameinfo, strtok(((void *)0), " "));
   break;
 case CMD_SAVE:
   strtok(command, " ");
   tmpstring = strtok(((void *)0), " ");
   if (tmpstring) {

     tmpstring[strlen(tmpstring)-1] = 0;

     init_sgf(gameinfo);
     writesgf(sgftree.root, tmpstring);
     printf("You may resume the game");
     printf(" with -l %s --mode ascii\n", tmpstring);
     printf("or load %s\n", tmpstring);
   }
   else
     printf("Please specify filename\n");
   break;
 case CMD_LOAD:
   strtok(command, " ");
   tmpstring = strtok(((void *)0), " ");
   if (tmpstring) {

     tmpstring[strlen(tmpstring)-1] = 0;
     if (!sgftree_readfile(&sgftree, tmpstring)) {
       fprintf(stderr, "Cannot open or parse '%s'\n", tmpstring);
       break;
     }

            sgf_initialized = 1;
            gameinfo_load_sgfheader(gameinfo, sgftree.root);
            gameinfo_play_sgftree(gameinfo, &sgftree, ((void *)0));
     sgfOverwritePropertyInt(sgftree.root, "HA", gameinfo->handicap);
   }
   else
     printf("Please specify a filename\n");
   break;

 case CMD_LISTDRAGONS:
   examine_position(gameinfo->to_move, 4);
   show_dragons();
   break;
 case COUNT:
 case NEW:
 case INVALID:
 default:
   printf("\nInvalid command: %s", command);
   break;
 }
      }
    }



    if (passes >= 2)
      gnugo_who_wins(gameinfo->computer_player, stdout);
    printf("\nIf you disagree, we may count the game together.\n");
    printf("You may optionally save the game as an SGF file.\n");

    sgftreeWriteResult(&sgftree, estimate_score(((void *)0), ((void *)0)), 1);

    state = 0;
    while (state == 0) {
      printf("\n");
      printf("Type \"save <filename>\" to save,\n");
      printf("     \"count\" to recount,\n");
      printf("     \"quit\" to quit\n");
      printf(" or  \"game\" to play again\n");
      line_ptr = line;
      if (!fgets(line, 80, stdin))
 break;
      command = strtok(line_ptr, "");
      switch (get_command(command)) {
      case CMD_SAVE:
 strtok(command, " ");
 tmpstring = strtok(((void *)0), " ");
 if (tmpstring) {

   tmpstring[strlen(tmpstring)-1] = 0;
          init_sgf(gameinfo);
   writesgf(sgftree.root, tmpstring);
 }
 else
   printf("Please specify filename\n");
 break;

      case NEW:
 state = 1;
 break;

      case COUNT:
 endgame(gameinfo);
 break;

      case QUIT:
 state = 2;
 break;

      default:
 state = 0;
      }
    }
    sgffile_output(&sgftree);
    passes = 0;


    update_random_seed();


    sgfFreeNode(sgftree.root);
    sgftree_clear(&sgftree);
    sgftreeCreateHeaderNode(&sgftree, board_size, komi);
    sgf_initialized = 0;

    gameinfo_clear(gameinfo, board_size, komi);
  }
  printf("\nThanks for playing GNU Go.\n\n");
}

void
play_ascii_emacs(SGFTree *tree, Gameinfo *gameinfo,
   char *filename, char *until)
{
  emacs = 1;
  play_ascii(tree, gameinfo, filename, until);
}






static void
endgame(Gameinfo *gameinfo)
{
  char line[12];
  int done = 0;
  int i, j;
  int xyzzy = 1;

  printf("\nGame over. Let's count!.\n");
  showdead = 1;
  ascii_showboard();
  while (!done) {
    printf("Dead stones are marked with small letters (x,o).\n");
    printf("\nIf you don't agree, enter the location of a group\n");
    printf("to toggle its state or \"done\".\n");

    if (!fgets(line, 12, stdin))
      return;

    for (i = 0; i < 12; i++)
      line[i] = (((*__ctype_b_loc ())[(int) (((int) line[i]))] & (unsigned short int) _ISupper) ? (__extension__ ({ int __res; if (sizeof ((int) line[i]) > 1) { if (__builtin_constant_p ((int) line[i])) { int __c = ((int) line[i]); __res = __c < -128 || __c > 255 ? __c : (*__ctype_tolower_loc ())[__c]; } else __res = tolower ((int) line[i]); } else __res = (*__ctype_tolower_loc ())[(int) ((int) line[i])]; __res; })) : line[i]);
    if (!(__extension__ (__builtin_constant_p (4) && ((__builtin_constant_p (line) && strlen (line) < ((size_t) (4))) || (__builtin_constant_p ("done") && strlen ("done") < ((size_t) (4)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (line) && __builtin_constant_p ("done") && (__s1_len = strlen (line), __s2_len = strlen ("done"), (!((size_t)(const void *)((line) + 1) - (size_t)(const void *)(line) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("done") + 1) - (size_t)(const void *)("done") == 1) || __s2_len >= 4)) ? __builtin_strcmp (line, "done") : (__builtin_constant_p (line) && ((size_t)(const void *)((line) + 1) - (size_t)(const void *)(line) == 1) && (__s1_len = strlen (line), __s1_len < 4) ? (__builtin_constant_p ("done") && ((size_t)(const void *)(("done") + 1) - (size_t)(const void *)("done") == 1) ? __builtin_strcmp (line, "done") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("done"); register int __result = (((__const unsigned char *) (__const char *) (line))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (line))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (line))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (line))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("done") && ((size_t)(const void *)(("done") + 1) - (size_t)(const void *)("done") == 1) && (__s2_len = strlen ("done"), __s2_len < 4) ? (__builtin_constant_p (line) && ((size_t)(const void *)((line) + 1) - (size_t)(const void *)(line) == 1) ? __builtin_strcmp (line, "done") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (line); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("done"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("done"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("done"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("done"))[3]); } } __result; }))) : __builtin_strcmp (line, "done")))); }) : strncmp (line, "done", 4))))
      done = 1;
    else if (!(__extension__ (__builtin_constant_p (4) && ((__builtin_constant_p (line) && strlen (line) < ((size_t) (4))) || (__builtin_constant_p ("quit") && strlen ("quit") < ((size_t) (4)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (line) && __builtin_constant_p ("quit") && (__s1_len = strlen (line), __s2_len = strlen ("quit"), (!((size_t)(const void *)((line) + 1) - (size_t)(const void *)(line) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("quit") + 1) - (size_t)(const void *)("quit") == 1) || __s2_len >= 4)) ? __builtin_strcmp (line, "quit") : (__builtin_constant_p (line) && ((size_t)(const void *)((line) + 1) - (size_t)(const void *)(line) == 1) && (__s1_len = strlen (line), __s1_len < 4) ? (__builtin_constant_p ("quit") && ((size_t)(const void *)(("quit") + 1) - (size_t)(const void *)("quit") == 1) ? __builtin_strcmp (line, "quit") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("quit"); register int __result = (((__const unsigned char *) (__const char *) (line))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (line))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (line))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (line))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("quit") && ((size_t)(const void *)(("quit") + 1) - (size_t)(const void *)("quit") == 1) && (__s2_len = strlen ("quit"), __s2_len < 4) ? (__builtin_constant_p (line) && ((size_t)(const void *)((line) + 1) - (size_t)(const void *)(line) == 1) ? __builtin_strcmp (line, "quit") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (line); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("quit"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("quit"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("quit"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("quit"))[3]); } } __result; }))) : __builtin_strcmp (line, "quit")))); }) : strncmp (line, "quit", 4))))
      return;
    else if (!(__extension__ (__builtin_constant_p (5) && ((__builtin_constant_p (line) && strlen (line) < ((size_t) (5))) || (__builtin_constant_p ("xyzzy") && strlen ("xyzzy") < ((size_t) (5)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (line) && __builtin_constant_p ("xyzzy") && (__s1_len = strlen (line), __s2_len = strlen ("xyzzy"), (!((size_t)(const void *)((line) + 1) - (size_t)(const void *)(line) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("xyzzy") + 1) - (size_t)(const void *)("xyzzy") == 1) || __s2_len >= 4)) ? __builtin_strcmp (line, "xyzzy") : (__builtin_constant_p (line) && ((size_t)(const void *)((line) + 1) - (size_t)(const void *)(line) == 1) && (__s1_len = strlen (line), __s1_len < 4) ? (__builtin_constant_p ("xyzzy") && ((size_t)(const void *)(("xyzzy") + 1) - (size_t)(const void *)("xyzzy") == 1) ? __builtin_strcmp (line, "xyzzy") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("xyzzy"); register int __result = (((__const unsigned char *) (__const char *) (line))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (line))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (line))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (line))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("xyzzy") && ((size_t)(const void *)(("xyzzy") + 1) - (size_t)(const void *)("xyzzy") == 1) && (__s2_len = strlen ("xyzzy"), __s2_len < 4) ? (__builtin_constant_p (line) && ((size_t)(const void *)((line) + 1) - (size_t)(const void *)(line) == 1) ? __builtin_strcmp (line, "xyzzy") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (line); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("xyzzy"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("xyzzy"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("xyzzy"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("xyzzy"))[3]); } } __result; }))) : __builtin_strcmp (line, "xyzzy")))); }) : strncmp (line, "xyzzy", 5)))) {
      if (xyzzy) {
 printf("\nYou are in a debris room filled with stuff washed in from the\n");
 printf("surface.  A low wide passage with cobbles becomes plugged\n");
 printf("with mud and debris here, but an awkward canyon leads\n");
 printf("upward and west.  A note on the wall says:\n");
 printf("   Magic Word \"XYZZY\"\n\n");
 xyzzy = 0;
      }
      else {
 printf("You are inside a building, a well house for a large spring.\n\n");
 xyzzy = 1;
      }
    }
    else if (!(__extension__ (__builtin_constant_p (4) && ((__builtin_constant_p (line) && strlen (line) < ((size_t) (4))) || (__builtin_constant_p ("help") && strlen ("help") < ((size_t) (4)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (line) && __builtin_constant_p ("help") && (__s1_len = strlen (line), __s2_len = strlen ("help"), (!((size_t)(const void *)((line) + 1) - (size_t)(const void *)(line) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("help") + 1) - (size_t)(const void *)("help") == 1) || __s2_len >= 4)) ? __builtin_strcmp (line, "help") : (__builtin_constant_p (line) && ((size_t)(const void *)((line) + 1) - (size_t)(const void *)(line) == 1) && (__s1_len = strlen (line), __s1_len < 4) ? (__builtin_constant_p ("help") && ((size_t)(const void *)(("help") + 1) - (size_t)(const void *)("help") == 1) ? __builtin_strcmp (line, "help") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("help"); register int __result = (((__const unsigned char *) (__const char *) (line))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (line))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (line))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (line))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("help") && ((size_t)(const void *)(("help") + 1) - (size_t)(const void *)("help") == 1) && (__s2_len = strlen ("help"), __s2_len < 4) ? (__builtin_constant_p (line) && ((size_t)(const void *)((line) + 1) - (size_t)(const void *)(line) == 1) ? __builtin_strcmp (line, "help") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (line); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("help"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("help"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("help"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("help"))[3]); } } __result; }))) : __builtin_strcmp (line, "help")))); }) : strncmp (line, "help", 4)))) {
      printf("\nIf there are dead stones on the board I will remove them.\n");
      printf("You must tell me where they are. Type the coordinates of a\n");
      printf("dead group, or type \"done\"\n");
    }
    else if (!(__extension__ (__builtin_constant_p (4) && ((__builtin_constant_p (line) && strlen (line) < ((size_t) (4))) || (__builtin_constant_p ("undo") && strlen ("undo") < ((size_t) (4)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (line) && __builtin_constant_p ("undo") && (__s1_len = strlen (line), __s2_len = strlen ("undo"), (!((size_t)(const void *)((line) + 1) - (size_t)(const void *)(line) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("undo") + 1) - (size_t)(const void *)("undo") == 1) || __s2_len >= 4)) ? __builtin_strcmp (line, "undo") : (__builtin_constant_p (line) && ((size_t)(const void *)((line) + 1) - (size_t)(const void *)(line) == 1) && (__s1_len = strlen (line), __s1_len < 4) ? (__builtin_constant_p ("undo") && ((size_t)(const void *)(("undo") + 1) - (size_t)(const void *)("undo") == 1) ? __builtin_strcmp (line, "undo") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("undo"); register int __result = (((__const unsigned char *) (__const char *) (line))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (line))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (line))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (line))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("undo") && ((size_t)(const void *)(("undo") + 1) - (size_t)(const void *)("undo") == 1) && (__s2_len = strlen ("undo"), __s2_len < 4) ? (__builtin_constant_p (line) && ((size_t)(const void *)((line) + 1) - (size_t)(const void *)(line) == 1) ? __builtin_strcmp (line, "undo") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (line); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("undo"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("undo"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("undo"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("undo"))[3]); } } __result; }))) : __builtin_strcmp (line, "undo")))); }) : strncmp (line, "undo", 4)))) {
      printf("UNDO not allowed anymore. The status of the stones now\n");
      printf("toggles after entering the location of it.\n");
      ascii_showboard();
    }
    else {
      if (!string_to_location(board_size, line, &i, &j)
   || board[((19 + 2) + (i) * (19 + 1) + (j))] == 0)
 printf("\ninvalid!\n");
      else {
 int status = dragon_status(((19 + 2) + (i) * (19 + 1) + (j)));
 status = (status == 0) ? 1 : 0;
 change_dragon_status(((19 + 2) + (i) * (19 + 1) + (j)), status);
 ascii_showboard();
      }
    }
  }
  gnugo_who_wins(gameinfo->computer_player, stdout);
}


static void
showcapture(char *line)
{
  int i, j, x, y;
  if (line)
    if (!string_to_location(board_size, line, &i, &j)
 || board[((19 + 2) + (i) * (19 + 1) + (j))] == 0) {
      printf("\ninvalid point!\n");
      return;
    }

  if (gnugo_attack(i, j, &x, &y))
    mprintf("\nSuccessfull attack of %m at %m\n", i, j, x, y);
  else
    mprintf("\n%m cannot be attacked\n", i, j);
}


static void
showdefense(char *line)
{
  int i, j, x, y;
  if (line)
    if (!string_to_location(board_size, line, &i, &j)
 || board[((19 + 2) + (i) * (19 + 1) + (j))] == 0) {
      printf("\ninvalid point!\n");
      return;
    }

    if (gnugo_attack(i, j, &x, &y)) {
      if (gnugo_find_defense(i, j, &x, &y))
        mprintf("\nSuccessfull defense of %m at %m\n", i, j, x, y);
      else
        mprintf("\n%m cannot be defended\n", i, j);
    }
    else
      mprintf("\nThere is no need to defend %m\n", i, j);
}


static void
ascii_goto(Gameinfo *gameinfo, char *line)
{
  const char *movenumber = line;

  if (!line)
    return;

  if (!(__extension__ (__builtin_constant_p (4) && ((__builtin_constant_p (line) && strlen (line) < ((size_t) (4))) || (__builtin_constant_p ("last") && strlen ("last") < ((size_t) (4)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (line) && __builtin_constant_p ("last") && (__s1_len = strlen (line), __s2_len = strlen ("last"), (!((size_t)(const void *)((line) + 1) - (size_t)(const void *)(line) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("last") + 1) - (size_t)(const void *)("last") == 1) || __s2_len >= 4)) ? __builtin_strcmp (line, "last") : (__builtin_constant_p (line) && ((size_t)(const void *)((line) + 1) - (size_t)(const void *)(line) == 1) && (__s1_len = strlen (line), __s1_len < 4) ? (__builtin_constant_p ("last") && ((size_t)(const void *)(("last") + 1) - (size_t)(const void *)("last") == 1) ? __builtin_strcmp (line, "last") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("last"); register int __result = (((__const unsigned char *) (__const char *) (line))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (line))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (line))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (line))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("last") && ((size_t)(const void *)(("last") + 1) - (size_t)(const void *)("last") == 1) && (__s2_len = strlen ("last"), __s2_len < 4) ? (__builtin_constant_p (line) && ((size_t)(const void *)((line) + 1) - (size_t)(const void *)(line) == 1) ? __builtin_strcmp (line, "last") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (line); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("last"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("last"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("last"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("last"))[3]); } } __result; }))) : __builtin_strcmp (line, "last")))); }) : strncmp (line, "last", 4))))
    movenumber = "9999";
  else if (!(__extension__ (__builtin_constant_p (4) && ((__builtin_constant_p (line) && strlen (line) < ((size_t) (4))) || (__builtin_constant_p ("first") && strlen ("first") < ((size_t) (4)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (line) && __builtin_constant_p ("first") && (__s1_len = strlen (line), __s2_len = strlen ("first"), (!((size_t)(const void *)((line) + 1) - (size_t)(const void *)(line) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("first") + 1) - (size_t)(const void *)("first") == 1) || __s2_len >= 4)) ? __builtin_strcmp (line, "first") : (__builtin_constant_p (line) && ((size_t)(const void *)((line) + 1) - (size_t)(const void *)(line) == 1) && (__s1_len = strlen (line), __s1_len < 4) ? (__builtin_constant_p ("first") && ((size_t)(const void *)(("first") + 1) - (size_t)(const void *)("first") == 1) ? __builtin_strcmp (line, "first") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("first"); register int __result = (((__const unsigned char *) (__const char *) (line))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (line))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (line))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (line))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("first") && ((size_t)(const void *)(("first") + 1) - (size_t)(const void *)("first") == 1) && (__s2_len = strlen ("first"), __s2_len < 4) ? (__builtin_constant_p (line) && ((size_t)(const void *)((line) + 1) - (size_t)(const void *)(line) == 1) ? __builtin_strcmp (line, "first") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (line); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("first"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("first"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("first"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("first"))[3]); } } __result; }))) : __builtin_strcmp (line, "first")))); }) : strncmp (line, "first", 4))))
    movenumber = "1";

  printf("goto %s\n", movenumber);
  gameinfo_play_sgftree(gameinfo, &sgftree, movenumber);
}


static void
ascii_free_handicap(Gameinfo *gameinfo, char *handicap)
{
  int handi;
  int i;
  char line[80];
  int stones[19*19];
  int x, y, pos;

  if (sscanf(handicap, "%d", &handi) == 1) {

    if (handi < 0 || handi == 1) {
      printf("\nInvalid command syntax!\n");
      return;
    }

    gnugo_clear_board(board_size);
    handi = place_free_handicap(handi);
    printf("\nPlaced %d stones of free handicap.\n", handi);
  }
  else {
    gnugo_clear_board(board_size);
    handi = 0;

    while (1) {
      ascii_showboard();
      printf("\nType in coordinates of next handicap stone, or one of the following commands:\n");
      printf("  undo        take back the last stone placed\n");
      printf("  clear       remove all the stones placed so far\n");
      printf("  done        finish placing handicap\n\n");
      printf("You have placed %d handicap stone(s) so far.\n\n", handi);

      if (!fgets(line, 80, stdin))
        return;
      for (i = 0; i < 80; i++)
        line[i] = (((*__ctype_b_loc ())[(int) (((int) line[i]))] & (unsigned short int) _ISupper) ? (__extension__ ({ int __res; if (sizeof ((int) line[i]) > 1) { if (__builtin_constant_p ((int) line[i])) { int __c = ((int) line[i]); __res = __c < -128 || __c > 255 ? __c : (*__ctype_tolower_loc ())[__c]; } else __res = tolower ((int) line[i]); } else __res = (*__ctype_tolower_loc ())[(int) ((int) line[i])]; __res; })) : line[i]);

      if (!(__extension__ (__builtin_constant_p (4) && ((__builtin_constant_p (line) && strlen (line) < ((size_t) (4))) || (__builtin_constant_p ("undo") && strlen ("undo") < ((size_t) (4)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (line) && __builtin_constant_p ("undo") && (__s1_len = strlen (line), __s2_len = strlen ("undo"), (!((size_t)(const void *)((line) + 1) - (size_t)(const void *)(line) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("undo") + 1) - (size_t)(const void *)("undo") == 1) || __s2_len >= 4)) ? __builtin_strcmp (line, "undo") : (__builtin_constant_p (line) && ((size_t)(const void *)((line) + 1) - (size_t)(const void *)(line) == 1) && (__s1_len = strlen (line), __s1_len < 4) ? (__builtin_constant_p ("undo") && ((size_t)(const void *)(("undo") + 1) - (size_t)(const void *)("undo") == 1) ? __builtin_strcmp (line, "undo") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("undo"); register int __result = (((__const unsigned char *) (__const char *) (line))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (line))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (line))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (line))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("undo") && ((size_t)(const void *)(("undo") + 1) - (size_t)(const void *)("undo") == 1) && (__s2_len = strlen ("undo"), __s2_len < 4) ? (__builtin_constant_p (line) && ((size_t)(const void *)((line) + 1) - (size_t)(const void *)(line) == 1) ? __builtin_strcmp (line, "undo") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (line); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("undo"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("undo"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("undo"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("undo"))[3]); } } __result; }))) : __builtin_strcmp (line, "undo")))); }) : strncmp (line, "undo", 4)))) {
        if (!handi)
   printf("\nNothing to undo.\n");
 else {
   remove_stone(stones[--handi]);
   gprintf("\nRemoved the stone at %m.\n", ((stones[handi]) / (19 + 1) - 1),
    ((stones[handi]) % (19 + 1) - 1));
 }
      }
      else if (!(__extension__ (__builtin_constant_p (5) && ((__builtin_constant_p (line) && strlen (line) < ((size_t) (5))) || (__builtin_constant_p ("clear") && strlen ("clear") < ((size_t) (5)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (line) && __builtin_constant_p ("clear") && (__s1_len = strlen (line), __s2_len = strlen ("clear"), (!((size_t)(const void *)((line) + 1) - (size_t)(const void *)(line) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("clear") + 1) - (size_t)(const void *)("clear") == 1) || __s2_len >= 4)) ? __builtin_strcmp (line, "clear") : (__builtin_constant_p (line) && ((size_t)(const void *)((line) + 1) - (size_t)(const void *)(line) == 1) && (__s1_len = strlen (line), __s1_len < 4) ? (__builtin_constant_p ("clear") && ((size_t)(const void *)(("clear") + 1) - (size_t)(const void *)("clear") == 1) ? __builtin_strcmp (line, "clear") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("clear"); register int __result = (((__const unsigned char *) (__const char *) (line))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (line))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (line))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (line))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("clear") && ((size_t)(const void *)(("clear") + 1) - (size_t)(const void *)("clear") == 1) && (__s2_len = strlen ("clear"), __s2_len < 4) ? (__builtin_constant_p (line) && ((size_t)(const void *)((line) + 1) - (size_t)(const void *)(line) == 1) ? __builtin_strcmp (line, "clear") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (line); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("clear"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("clear"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("clear"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("clear"))[3]); } } __result; }))) : __builtin_strcmp (line, "clear")))); }) : strncmp (line, "clear", 5)))) {
        gnugo_clear_board(board_size);
        handi = 0;
      }
      else if (!(__extension__ (__builtin_constant_p (4) && ((__builtin_constant_p (line) && strlen (line) < ((size_t) (4))) || (__builtin_constant_p ("done") && strlen ("done") < ((size_t) (4)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (line) && __builtin_constant_p ("done") && (__s1_len = strlen (line), __s2_len = strlen ("done"), (!((size_t)(const void *)((line) + 1) - (size_t)(const void *)(line) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("done") + 1) - (size_t)(const void *)("done") == 1) || __s2_len >= 4)) ? __builtin_strcmp (line, "done") : (__builtin_constant_p (line) && ((size_t)(const void *)((line) + 1) - (size_t)(const void *)(line) == 1) && (__s1_len = strlen (line), __s1_len < 4) ? (__builtin_constant_p ("done") && ((size_t)(const void *)(("done") + 1) - (size_t)(const void *)("done") == 1) ? __builtin_strcmp (line, "done") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("done"); register int __result = (((__const unsigned char *) (__const char *) (line))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (line))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (line))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (line))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("done") && ((size_t)(const void *)(("done") + 1) - (size_t)(const void *)("done") == 1) && (__s2_len = strlen ("done"), __s2_len < 4) ? (__builtin_constant_p (line) && ((size_t)(const void *)((line) + 1) - (size_t)(const void *)(line) == 1) ? __builtin_strcmp (line, "done") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (line); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("done"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("done"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("done"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("done"))[3]); } } __result; }))) : __builtin_strcmp (line, "done")))); }) : strncmp (line, "done", 4)))) {
 if (handi == 1)
   printf ("\nHandicap cannot be one stone. Either add "
    "some more, or delete the only stone.\n");
 else
   break;
      }
      else if (string_to_location(board_size, line, &x, &y)) {
 pos = ((19 + 2) + (x) * (19 + 1) + (y));
 if (board[pos] != 0)
   printf("\nThere's already a stone there.\n");
 else {
   add_stone(pos, 2);
   stones[handi++] = pos;
 }
      }
      else
 printf("\nInvalid command: %s", line);
    }
  }
  gameinfo->handicap = handi;
  gameinfo->to_move = (handi ? 1 : 2);
}

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2012-12-11  0:28 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-12-05  5:36 [lra] a patch to fix ppc bootstrap failure Vladimir Makarov
2012-12-05 20:25 ` Michael Meissner
2012-12-05 22:51 ` Michael Meissner
2012-12-06  3:31   ` Vladimir Makarov
2012-12-06 21:28     ` Vladimir Makarov
2012-12-07 23:04       ` Michael Meissner
2012-12-11  0:28       ` Michael Meissner

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).