#7046 Disable the compilation when branch offset is beyond short branch

Thu, 24 May 2018 19:24:53 +0800

author
aoqi
date
Thu, 24 May 2018 19:24:53 +0800
changeset 8861
2a33b32dd03c
parent 8860
43b19021a5a9
child 8862
fd13a567f179

#7046 Disable the compilation when branch offset is beyond short branch
Contributed-by: fujie, aoqi

src/cpu/mips/vm/mips_64.ad file | annotate | diff | comparison | revisions
src/share/vm/opto/output.cpp file | annotate | diff | comparison | revisions
src/share/vm/runtime/globals.hpp file | annotate | diff | comparison | revisions
test/mips64/7046/TestCompileHugeMethod.java file | annotate | diff | comparison | revisions
     1.1 --- a/src/cpu/mips/vm/mips_64.ad	Thu May 24 19:21:48 2018 +0800
     1.2 +++ b/src/cpu/mips/vm/mips_64.ad	Thu May 24 19:24:53 2018 +0800
     1.3 @@ -652,12 +652,9 @@
     1.4  }
     1.5  
     1.6  bool Matcher::is_short_branch_offset(int rule, int br_size, int offset) {
     1.7 -  if( Assembler::is_simm16(offset) )
     1.8 -    return true;
     1.9 -  else {
    1.10 -     assert(false, "Not implemented yet !" );
    1.11 -     Unimplemented();
    1.12 -  }
    1.13 +  int offs = offset - br_size + 4;
    1.14 +  // To be conservative on MIPS
    1.15 +  return Assembler::is_simm16((offs + 4) >> 2) && Assembler::is_simm16((offs - 4) >> 2);
    1.16  }
    1.17  
    1.18  
    1.19 @@ -6689,12 +6686,202 @@
    1.20    ins_pipe( pipe_jump );
    1.21  %}
    1.22  
    1.23 -instruct branchConP_zero(cmpOpU cmp, mRegP op1, immP0 zero, label labl) %{
    1.24 +// ============================================================================
    1.25 +// Branch Instructions --- long offset versions
    1.26 +
    1.27 +// Jump Direct
    1.28 +instruct jmpDir_long(label labl) %{
    1.29 +  match(Goto);
    1.30 +  effect(USE labl);
    1.31 +
    1.32 +  ins_cost(300);
    1.33 +  format %{ "JMP    $labl #@jmpDir_long" %}
    1.34 +
    1.35 +  ins_encode %{
    1.36 +    Label &L = *($labl$$label);
    1.37 +    if(&L)
    1.38 +       __ b(L);
    1.39 +    else
    1.40 +         __ b(int(0));
    1.41 +    __ nop();
    1.42 +    __ nop();
    1.43 +  %}
    1.44 +
    1.45 +    ins_pipe( pipe_jump );
    1.46 +    ins_pc_relative(1);
    1.47 +%}
    1.48 +
    1.49 +// Jump Direct Conditional - Label defines a relative address from Jcc+1
    1.50 +instruct  jmpLoopEnd_long(cmpOp cop, mRegI src1, mRegI src2, label labl) %{
    1.51 +  match(CountedLoopEnd cop (CmpI src1 src2));
    1.52 +  effect(USE labl);
    1.53 +
    1.54 +  ins_cost(300);
    1.55 +  format %{ "J$cop  $src1, $src2,  $labl\t# Loop end @ jmpLoopEnd_long" %}
    1.56 +  ins_encode %{
    1.57 +    Register op1 = $src1$$Register;
    1.58 +    Register op2 = $src2$$Register;
    1.59 +    Label     &L = *($labl$$label);
    1.60 +    int     flag = $cop$$cmpcode;
    1.61 +
    1.62 +    switch(flag) {
    1.63 +      case 0x01: //equal
    1.64 +        if (&L)
    1.65 +          __ beq(op1, op2, L);
    1.66 +        else
    1.67 +          __ beq(op1, op2, (int)0);
    1.68 +        break;
    1.69 +      case 0x02: //not_equal
    1.70 +        if (&L)
    1.71 +          __ bne(op1, op2, L);
    1.72 +        else
    1.73 +          __ bne(op1, op2, (int)0);
    1.74 +        break;
    1.75 +      case 0x03: //above
    1.76 +        __ slt(AT, op2, op1);
    1.77 +        if(&L)
    1.78 +          __ bne(AT, R0, L);
    1.79 +        else
    1.80 +          __ bne(AT, R0, (int)0);
    1.81 +        break;
    1.82 +      case 0x04: //above_equal
    1.83 +        __ slt(AT, op1, op2);
    1.84 +        if(&L)
    1.85 +          __ beq(AT, R0, L);
    1.86 +        else
    1.87 +          __ beq(AT, R0, (int)0);
    1.88 +        break;
    1.89 +      case 0x05: //below
    1.90 +        __ slt(AT, op1, op2);
    1.91 +        if(&L)
    1.92 +          __ bne(AT, R0, L);
    1.93 +        else
    1.94 +          __ bne(AT, R0, (int)0);
    1.95 +        break;
    1.96 +      case 0x06: //below_equal
    1.97 +        __ slt(AT, op2, op1);
    1.98 +        if(&L)
    1.99 +          __ beq(AT, R0, L);
   1.100 +        else
   1.101 +          __ beq(AT, R0, (int)0);
   1.102 +        break;
   1.103 +      default:
   1.104 +        Unimplemented();
   1.105 +    }
   1.106 +    __ nop();
   1.107 +    __ nop();
   1.108 +  %}
   1.109 +  ins_pipe( pipe_jump );
   1.110 +  ins_pc_relative(1);
   1.111 +%}
   1.112 +
   1.113 +instruct  jmpLoopEnd_reg_immI_long(cmpOp cop, mRegI src1, immI src2, label labl) %{
   1.114 +  match(CountedLoopEnd cop (CmpI src1 src2));
   1.115 +  effect(USE labl);
   1.116 +
   1.117 +  ins_cost(300);
   1.118 +  format %{ "J$cop  $src1, $src2,  $labl\t# Loop end @ jmpLoopEnd_reg_immI_long" %}
   1.119 +  ins_encode %{
   1.120 +    Register op1 = $src1$$Register;
   1.121 +    Register op2 = AT;
   1.122 +    Label     &L = *($labl$$label);
   1.123 +    int     flag = $cop$$cmpcode;
   1.124 +
   1.125 +    __ move(op2, $src2$$constant);
   1.126 +
   1.127 +    switch(flag) {
   1.128 +      case 0x01: //equal
   1.129 +        if (&L)
   1.130 +          __ beq(op1, op2, L);
   1.131 +        else
   1.132 +          __ beq(op1, op2, (int)0);
   1.133 +        break;
   1.134 +      case 0x02: //not_equal
   1.135 +        if (&L)
   1.136 +          __ bne(op1, op2, L);
   1.137 +        else
   1.138 +          __ bne(op1, op2, (int)0);
   1.139 +        break;
   1.140 +      case 0x03: //above
   1.141 +        __ slt(AT, op2, op1);
   1.142 +        if(&L)
   1.143 +          __ bne(AT, R0, L);
   1.144 +        else
   1.145 +          __ bne(AT, R0, (int)0);
   1.146 +        break;
   1.147 +      case 0x04: //above_equal
   1.148 +        __ slt(AT, op1, op2);
   1.149 +        if(&L)
   1.150 +          __ beq(AT, R0, L);
   1.151 +        else
   1.152 +          __ beq(AT, R0, (int)0);
   1.153 +        break;
   1.154 +      case 0x05: //below
   1.155 +        __ slt(AT, op1, op2);
   1.156 +        if(&L)
   1.157 +          __ bne(AT, R0, L);
   1.158 +        else
   1.159 +          __ bne(AT, R0, (int)0);
   1.160 +        break;
   1.161 +      case 0x06: //below_equal
   1.162 +        __ slt(AT, op2, op1);
   1.163 +        if(&L)
   1.164 +          __ beq(AT, R0, L);
   1.165 +        else
   1.166 +          __ beq(AT, R0, (int)0);
   1.167 +        break;
   1.168 +      default:
   1.169 +        Unimplemented();
   1.170 +    }
   1.171 +    __ nop();
   1.172 +    __ nop();
   1.173 +  %}
   1.174 +  ins_pipe( pipe_jump );
   1.175 +  ins_pc_relative(1);
   1.176 +%}
   1.177 +
   1.178 +
   1.179 +// This match pattern is created for StoreIConditional since I cannot match IfNode without a RegFlags! fujie 2012/07/17
   1.180 +instruct jmpCon_flags_long(cmpOp cop, FlagsReg cr, label labl) %{
   1.181 +  match(If cop cr);
   1.182 +  effect(USE labl);
   1.183 +
   1.184 +  ins_cost(300);
   1.185 +  format %{ "J$cop    $labl  #mips uses AT as eflag @jmpCon_flags_long" %}
   1.186 +
   1.187 +  ins_encode %{
   1.188 +    Label    &L =  *($labl$$label);
   1.189 +    switch($cop$$cmpcode) {
   1.190 +      case 0x01: //equal
   1.191 +        if (&L)
   1.192 +          __ bne(AT, R0, L);
   1.193 +        else
   1.194 +          __ bne(AT, R0, (int)0);
   1.195 +        break;
   1.196 +      case 0x02: //not equal
   1.197 +        if (&L)
   1.198 +          __ beq(AT, R0, L);
   1.199 +        else
   1.200 +          __ beq(AT, R0, (int)0);
   1.201 +        break;
   1.202 +      default:
   1.203 +        Unimplemented();
   1.204 +    }
   1.205 +    __ nop();
   1.206 +    __ nop();
   1.207 +  %}
   1.208 +
   1.209 +  ins_pipe( pipe_jump );
   1.210 +  ins_pc_relative(1);
   1.211 +%}
   1.212 +
   1.213 +// Conditional jumps
   1.214 +instruct branchConP_zero_long(cmpOpU cmp, mRegP op1, immP0 zero, label labl) %{
   1.215    match(If cmp (CmpP op1 zero));
   1.216    effect(USE labl);
   1.217  
   1.218    ins_cost(180);
   1.219 -  format %{ "b$cmp   $op1, R0, $labl #@branchConP_zero" %}
   1.220 +  format %{ "b$cmp   $op1, R0, $labl #@branchConP_zero_long" %}
   1.221  
   1.222    ins_encode %{
   1.223      Register op1 = $op1$$Register;
   1.224 @@ -6719,19 +6906,20 @@
   1.225          Unimplemented();
   1.226      }
   1.227      __ nop();
   1.228 +    __ nop();
   1.229    %}
   1.230  
   1.231    ins_pc_relative(1);
   1.232    ins_pipe( pipe_alu_branch );
   1.233  %}
   1.234  
   1.235 -instruct branchConN2P_zero(cmpOpU cmp, mRegN op1, immP0 zero, label labl) %{
   1.236 +instruct branchConN2P_zero_long(cmpOpU cmp, mRegN op1, immP0 zero, label labl) %{
   1.237    match(If cmp (CmpP (DecodeN op1) zero));
   1.238    predicate(Universe::narrow_oop_base() == NULL && Universe::narrow_oop_shift() == 0);
   1.239    effect(USE labl);
   1.240  
   1.241    ins_cost(180);
   1.242 -  format %{ "b$cmp   $op1, R0, $labl #@branchConN2P_zero" %}
   1.243 +  format %{ "b$cmp   $op1, R0, $labl #@branchConN2P_zero_long" %}
   1.244  
   1.245    ins_encode %{
   1.246      Register op1 = $op1$$Register;
   1.247 @@ -6757,6 +6945,7 @@
   1.248          Unimplemented();
   1.249      }
   1.250      __ nop();
   1.251 +    __ nop();
   1.252    %}
   1.253  
   1.254    ins_pc_relative(1);
   1.255 @@ -6764,13 +6953,13 @@
   1.256  %}
   1.257  
   1.258  
   1.259 -instruct branchConP(cmpOpU cmp, mRegP op1, mRegP op2, label labl) %{
   1.260 +instruct branchConP_long(cmpOpU cmp, mRegP op1, mRegP op2, label labl) %{
   1.261    match(If cmp (CmpP op1 op2));
   1.262  //  predicate(can_branch_register(_kids[0]->_leaf, _kids[1]->_leaf));
   1.263    effect(USE labl);
   1.264  
   1.265    ins_cost(200);
   1.266 -  format %{ "b$cmp   $op1, $op2, $labl #@branchConP" %}
   1.267 +  format %{ "b$cmp   $op1, $op2, $labl #@branchConP_long" %}
   1.268  
   1.269    ins_encode %{
   1.270      Register op1 = $op1$$Register;
   1.271 @@ -6823,19 +7012,20 @@
   1.272            Unimplemented();
   1.273      }
   1.274      __ nop();
   1.275 +    __ nop();
   1.276    %}
   1.277  
   1.278    ins_pc_relative(1);
   1.279    ins_pipe( pipe_alu_branch );
   1.280  %}
   1.281  
   1.282 -instruct cmpN_null_branch(cmpOp cmp, mRegN op1, immN0 null, label labl) %{
   1.283 +instruct cmpN_null_branch_long(cmpOp cmp, mRegN op1, immN0 null, label labl) %{
   1.284    match(If cmp (CmpN op1 null));
   1.285    effect(USE labl);
   1.286  
   1.287    ins_cost(180);
   1.288    format %{ "CMP    $op1,0\t! compressed ptr\n\t"
   1.289 -            "BP$cmp   $labl @ cmpN_null_branch" %}
   1.290 +            "BP$cmp   $labl @ cmpN_null_branch_long" %}
   1.291    ins_encode %{
   1.292      Register op1 = $op1$$Register;
   1.293      Register op2 = R0;
   1.294 @@ -6859,19 +7049,20 @@
   1.295            Unimplemented();
   1.296      }
   1.297      __ nop();
   1.298 +    __ nop();
   1.299    %}
   1.300  //TODO: pipe_branchP or create pipe_branchN LEE
   1.301    ins_pc_relative(1);
   1.302    ins_pipe( pipe_alu_branch );
   1.303  %}
   1.304  
   1.305 -instruct cmpN_reg_branch(cmpOp cmp, mRegN op1, mRegN op2, label labl) %{
   1.306 +instruct cmpN_reg_branch_long(cmpOp cmp, mRegN op1, mRegN op2, label labl) %{
   1.307    match(If cmp (CmpN op1 op2));
   1.308    effect(USE labl);
   1.309  
   1.310    ins_cost(180);
   1.311    format %{ "CMP    $op1,$op2\t! compressed ptr\n\t"
   1.312 -            "BP$cmp   $labl" %}
   1.313 +            "BP$cmp   $labl @ cmpN_reg_branch_long" %}
   1.314    ins_encode %{
   1.315      Register op1_reg = $op1$$Register;
   1.316      Register op2_reg = $op2$$Register;
   1.317 @@ -6923,15 +7114,16 @@
   1.318        Unimplemented();
   1.319      }
   1.320      __ nop();
   1.321 +    __ nop();
   1.322    %}
   1.323    ins_pc_relative(1);
   1.324    ins_pipe( pipe_alu_branch );
   1.325  %}
   1.326  
   1.327 -instruct branchConIU_reg_reg(cmpOpU cmp, mRegI src1, mRegI src2, label labl) %{
   1.328 +instruct branchConIU_reg_reg_long(cmpOpU cmp, mRegI src1, mRegI src2, label labl) %{
   1.329    match( If cmp (CmpU src1 src2) );
   1.330    effect(USE labl);
   1.331 -  format %{ "BR$cmp   $src1, $src2, $labl #@branchConIU_reg_reg" %}
   1.332 +  format %{ "BR$cmp   $src1, $src2, $labl #@branchConIU_reg_reg_long" %}
   1.333  
   1.334    ins_encode %{
   1.335      Register op1 = $src1$$Register;
   1.336 @@ -6984,6 +7176,7 @@
   1.337          Unimplemented();
   1.338      }
   1.339      __ nop();
   1.340 +    __ nop();
   1.341    %}
   1.342  
   1.343    ins_pc_relative(1);
   1.344 @@ -6991,10 +7184,10 @@
   1.345  %}
   1.346  
   1.347  
   1.348 -instruct branchConIU_reg_imm(cmpOpU cmp, mRegI src1, immI src2, label labl) %{
   1.349 +instruct branchConIU_reg_imm_long(cmpOpU cmp, mRegI src1, immI src2, label labl) %{
   1.350    match( If cmp (CmpU src1 src2) );
   1.351    effect(USE labl);
   1.352 -  format %{ "BR$cmp   $src1, $src2, $labl #@branchConIU_reg_imm" %}
   1.353 +  format %{ "BR$cmp   $src1, $src2, $labl #@branchConIU_reg_imm_long" %}
   1.354  
   1.355    ins_encode %{
   1.356      Register op1 = $src1$$Register;
   1.357 @@ -7048,16 +7241,17 @@
   1.358          Unimplemented();
   1.359      }
   1.360      __ nop();
   1.361 +    __ nop();
   1.362    %}
   1.363  
   1.364    ins_pc_relative(1);
   1.365    ins_pipe( pipe_alu_branch );
   1.366  %}
   1.367  
   1.368 -instruct branchConI_reg_reg(cmpOp cmp, mRegI src1, mRegI src2, label labl) %{
   1.369 +instruct branchConI_reg_reg_long(cmpOp cmp, mRegI src1, mRegI src2, label labl) %{
   1.370    match( If cmp (CmpI src1 src2) );
   1.371    effect(USE labl);
   1.372 -  format %{ "BR$cmp   $src1, $src2, $labl #@branchConI_reg_reg" %}
   1.373 +  format %{ "BR$cmp   $src1, $src2, $labl #@branchConI_reg_reg_long" %}
   1.374  
   1.375    ins_encode %{
   1.376      Register op1 = $src1$$Register;
   1.377 @@ -7110,17 +7304,18 @@
   1.378          Unimplemented();
   1.379      }
   1.380      __ nop();
   1.381 +    __ nop();
   1.382    %}
   1.383  
   1.384    ins_pc_relative(1);
   1.385    ins_pipe( pipe_alu_branch );
   1.386  %}
   1.387  
   1.388 -instruct branchConI_reg_imm0(cmpOp cmp, mRegI src1, immI0 src2, label labl) %{
   1.389 +instruct branchConI_reg_imm0_long(cmpOp cmp, mRegI src1, immI0 src2, label labl) %{
   1.390    match( If cmp (CmpI src1 src2) );
   1.391    effect(USE labl);
   1.392    ins_cost(170);
   1.393 -  format %{ "BR$cmp   $src1, $src2, $labl #@branchConI_reg_imm0" %}
   1.394 +  format %{ "BR$cmp   $src1, $src2, $labl #@branchConI_reg_imm0_long" %}
   1.395  
   1.396    ins_encode %{
   1.397      Register op1 = $src1$$Register;
   1.398 @@ -7168,6 +7363,7 @@
   1.399          Unimplemented();
   1.400      }
   1.401      __ nop();
   1.402 +    __ nop();
   1.403    %}
   1.404  
   1.405    ins_pc_relative(1);
   1.406 @@ -7175,11 +7371,11 @@
   1.407  %}
   1.408  
   1.409  
   1.410 -instruct branchConI_reg_imm(cmpOp cmp, mRegI src1, immI src2, label labl) %{
   1.411 +instruct branchConI_reg_imm_long(cmpOp cmp, mRegI src1, immI src2, label labl) %{
   1.412    match( If cmp (CmpI src1 src2) );
   1.413    effect(USE labl);
   1.414    ins_cost(200);
   1.415 -  format %{ "BR$cmp   $src1, $src2, $labl #@branchConI_reg_imm" %}
   1.416 +  format %{ "BR$cmp   $src1, $src2, $labl #@branchConI_reg_imm_long" %}
   1.417  
   1.418    ins_encode %{
   1.419      Register op1 = $src1$$Register;
   1.420 @@ -7233,16 +7429,17 @@
   1.421            Unimplemented();
   1.422      }
   1.423      __ nop();
   1.424 +    __ nop();
   1.425    %}
   1.426  
   1.427    ins_pc_relative(1);
   1.428    ins_pipe( pipe_alu_branch );
   1.429  %}
   1.430  
   1.431 -instruct branchConIU_reg_imm0(cmpOpU cmp, mRegI src1, immI0 zero, label labl) %{
   1.432 +instruct branchConIU_reg_imm0_long(cmpOpU cmp, mRegI src1, immI0 zero, label labl) %{
   1.433    match( If cmp (CmpU src1 zero) );
   1.434    effect(USE labl);
   1.435 -  format %{ "BR$cmp   $src1, zero, $labl #@branchConIU_reg_imm0" %}
   1.436 +  format %{ "BR$cmp   $src1, zero, $labl #@branchConIU_reg_imm0_long" %}
   1.437  
   1.438    ins_encode %{
   1.439      Register op1 = $src1$$Register;
   1.440 @@ -7287,6 +7484,7 @@
   1.441          Unimplemented();
   1.442      }
   1.443      __ nop();
   1.444 +    __ nop();
   1.445      %}
   1.446  
   1.447    ins_pc_relative(1);
   1.448 @@ -7294,11 +7492,11 @@
   1.449  %}
   1.450  
   1.451  
   1.452 -instruct branchConIU_reg_immI16(cmpOpU cmp, mRegI src1, immI16 src2, label labl) %{
   1.453 +instruct branchConIU_reg_immI16_long(cmpOpU cmp, mRegI src1, immI16 src2, label labl) %{
   1.454    match( If cmp (CmpU src1 src2) );
   1.455    effect(USE labl);
   1.456    ins_cost(180);
   1.457 -  format %{ "BR$cmp   $src1, $src2, $labl #@branchConIU_reg_immI16" %}
   1.458 +  format %{ "BR$cmp   $src1, $src2, $labl #@branchConIU_reg_immI16_long" %}
   1.459  
   1.460    ins_encode %{
   1.461      Register op1 = $src1$$Register;
   1.462 @@ -7355,6 +7553,7 @@
   1.463          Unimplemented();
   1.464      }
   1.465      __ nop();
   1.466 +    __ nop();
   1.467    %}
   1.468  
   1.469    ins_pc_relative(1);
   1.470 @@ -7362,10 +7561,10 @@
   1.471  %}
   1.472  
   1.473  
   1.474 -instruct branchConL_regL_regL(cmpOp cmp, mRegL src1, mRegL src2, label labl) %{
   1.475 +instruct branchConL_regL_regL_long(cmpOp cmp, mRegL src1, mRegL src2, label labl) %{
   1.476    match( If cmp (CmpL src1 src2) );
   1.477    effect(USE labl);
   1.478 -  format %{ "BR$cmp   $src1, $src2, $labl #@branchConL_regL_regL" %}
   1.479 +  format %{ "BR$cmp   $src1, $src2, $labl #@branchConL_regL_regL_long" %}
   1.480    ins_cost(250);
   1.481  
   1.482    ins_encode %{
   1.483 @@ -7435,6 +7634,7 @@
   1.484        default:
   1.485          Unimplemented();
   1.486      }
   1.487 +    __ nop();
   1.488    %}
   1.489  
   1.490  
   1.491 @@ -7443,10 +7643,10 @@
   1.492  %}
   1.493  
   1.494  
   1.495 -instruct branchConL_regL_immL0(cmpOp cmp, mRegL src1, immL0 zero, label labl) %{
   1.496 +instruct branchConL_regL_immL0_long(cmpOp cmp, mRegL src1, immL0 zero, label labl) %{
   1.497    match( If cmp (CmpL src1 zero) );
   1.498    effect(USE labl);
   1.499 -  format %{ "BR$cmp   $src1, zero, $labl #@branchConL_regL_immL0" %}
   1.500 +  format %{ "BR$cmp   $src1, zero, $labl #@branchConL_regL_immL0_long" %}
   1.501    ins_cost(150);
   1.502  
   1.503    ins_encode %{
   1.504 @@ -7502,6 +7702,7 @@
   1.505            Unimplemented();
   1.506      }
   1.507      __ delayed()->nop();
   1.508 +    __ nop();
   1.509    %}
   1.510  
   1.511  
   1.512 @@ -7509,10 +7710,10 @@
   1.513    ins_pipe( pipe_alu_branch );
   1.514  %}
   1.515  
   1.516 -instruct branchConL_regL_immL(cmpOp cmp, mRegL src1, immL src2, label labl) %{
   1.517 +instruct branchConL_regL_immL_long(cmpOp cmp, mRegL src1, immL src2, label labl) %{
   1.518    match( If cmp (CmpL src1 src2) );
   1.519    effect(USE labl);
   1.520 -  format %{ "BR$cmp   $src1, $src2, $labl #@branchConL_regL_immL" %}
   1.521 +  format %{ "BR$cmp   $src1, $src2, $labl #@branchConL_regL_immL_long" %}
   1.522    ins_cost(180);
   1.523  
   1.524    ins_encode %{
   1.525 @@ -7575,6 +7776,7 @@
   1.526          Unimplemented();
   1.527      }
   1.528      __ nop();
   1.529 +    __ nop();
   1.530    %}
   1.531  
   1.532  
   1.533 @@ -7584,10 +7786,10 @@
   1.534  
   1.535  
   1.536  //FIXME
   1.537 -instruct branchConF_reg_reg(cmpOp cmp, regF src1, regF src2, label labl) %{
   1.538 +instruct branchConF_reg_reg_long(cmpOp cmp, regF src1, regF src2, label labl) %{
   1.539    match( If cmp (CmpF src1 src2) );
   1.540    effect(USE labl);
   1.541 -  format %{ "BR$cmp   $src1, $src2, $labl #@branchConF_reg_reg" %}
   1.542 +  format %{ "BR$cmp   $src1, $src2, $labl #@branchConF_reg_reg_long" %}
   1.543  
   1.544    ins_encode %{
   1.545      FloatRegister reg_op1 = $src1$$FloatRegister;
   1.546 @@ -7642,16 +7844,17 @@
   1.547          Unimplemented();
   1.548      }
   1.549      __ nop();
   1.550 +    __ nop();
   1.551    %}
   1.552  
   1.553    ins_pc_relative(1);
   1.554    ins_pipe(pipe_slow);
   1.555  %}
   1.556  
   1.557 -instruct branchConD_reg_reg(cmpOp cmp, regD src1, regD src2, label labl) %{
   1.558 +instruct branchConD_reg_reg_long(cmpOp cmp, regD src1, regD src2, label labl) %{
   1.559    match( If cmp (CmpD src1 src2) );
   1.560    effect(USE labl);
   1.561 -  format %{ "BR$cmp   $src1, $src2, $labl #@branchConD_reg_reg" %}
   1.562 +  format %{ "BR$cmp   $src1, $src2, $labl #@branchConD_reg_reg_long" %}
   1.563  
   1.564    ins_encode %{
   1.565      FloatRegister reg_op1 = $src1$$FloatRegister;
   1.566 @@ -7707,6 +7910,7 @@
   1.567          Unimplemented();
   1.568      }
   1.569      __ nop();
   1.570 +    __ nop();
   1.571    %}
   1.572  
   1.573    ins_pc_relative(1);
   1.574 @@ -7714,6 +7918,1239 @@
   1.575  %}
   1.576  
   1.577  
   1.578 +// ============================================================================
   1.579 +// Branch Instructions -- short offset versions
   1.580 +
   1.581 +// Jump Direct
   1.582 +instruct jmpDir_short(label labl) %{
   1.583 +  match(Goto);
   1.584 +  effect(USE labl);
   1.585 +
   1.586 +  ins_cost(300);
   1.587 +  format %{ "JMP    $labl #@jmpDir_short" %}
   1.588 +
   1.589 +  ins_encode %{
   1.590 +    Label &L = *($labl$$label);
   1.591 +    if(&L)
   1.592 +       __ b(L);
   1.593 +    else
   1.594 +         __ b(int(0));
   1.595 +    __ nop();
   1.596 +  %}
   1.597 +
   1.598 +    ins_pipe( pipe_jump );
   1.599 +    ins_pc_relative(1);
   1.600 +    ins_short_branch(1);
   1.601 +%}
   1.602 +
   1.603 +// Jump Direct Conditional - Label defines a relative address from Jcc+1
   1.604 +instruct  jmpLoopEnd_short(cmpOp cop, mRegI src1, mRegI src2, label labl) %{
   1.605 +  match(CountedLoopEnd cop (CmpI src1 src2));
   1.606 +  effect(USE labl);
   1.607 +
   1.608 +  ins_cost(300);
   1.609 +  format %{ "J$cop  $src1, $src2,  $labl\t# Loop end @ jmpLoopEnd_short" %}
   1.610 +  ins_encode %{
   1.611 +    Register op1 = $src1$$Register;
   1.612 +    Register op2 = $src2$$Register;
   1.613 +    Label     &L = *($labl$$label);
   1.614 +    int     flag = $cop$$cmpcode;
   1.615 +
   1.616 +    switch(flag) {
   1.617 +      case 0x01: //equal
   1.618 +        if (&L)
   1.619 +          __ beq(op1, op2, L);
   1.620 +        else
   1.621 +          __ beq(op1, op2, (int)0);
   1.622 +        break;
   1.623 +      case 0x02: //not_equal
   1.624 +        if (&L)
   1.625 +          __ bne(op1, op2, L);
   1.626 +        else
   1.627 +          __ bne(op1, op2, (int)0);
   1.628 +        break;
   1.629 +      case 0x03: //above
   1.630 +        __ slt(AT, op2, op1);
   1.631 +        if(&L)
   1.632 +          __ bne(AT, R0, L);
   1.633 +        else
   1.634 +          __ bne(AT, R0, (int)0);
   1.635 +        break;
   1.636 +      case 0x04: //above_equal
   1.637 +        __ slt(AT, op1, op2);
   1.638 +        if(&L)
   1.639 +          __ beq(AT, R0, L);
   1.640 +        else
   1.641 +          __ beq(AT, R0, (int)0);
   1.642 +        break;
   1.643 +      case 0x05: //below
   1.644 +        __ slt(AT, op1, op2);
   1.645 +        if(&L)
   1.646 +          __ bne(AT, R0, L);
   1.647 +        else
   1.648 +          __ bne(AT, R0, (int)0);
   1.649 +        break;
   1.650 +      case 0x06: //below_equal
   1.651 +        __ slt(AT, op2, op1);
   1.652 +        if(&L)
   1.653 +          __ beq(AT, R0, L);
   1.654 +        else
   1.655 +          __ beq(AT, R0, (int)0);
   1.656 +        break;
   1.657 +      default:
   1.658 +        Unimplemented();
   1.659 +    }
   1.660 +    __ nop();
   1.661 +  %}
   1.662 +  ins_pipe( pipe_jump );
   1.663 +  ins_pc_relative(1);
   1.664 +  ins_short_branch(1);
   1.665 +%}
   1.666 +
   1.667 +instruct  jmpLoopEnd_reg_immI_short(cmpOp cop, mRegI src1, immI src2, label labl) %{
   1.668 +  match(CountedLoopEnd cop (CmpI src1 src2));
   1.669 +  effect(USE labl);
   1.670 +
   1.671 +  ins_cost(300);
   1.672 +  format %{ "J$cop  $src1, $src2,  $labl\t# Loop end @ jmpLoopEnd_reg_immI_short" %}
   1.673 +  ins_encode %{
   1.674 +    Register op1 = $src1$$Register;
   1.675 +    Register op2 = AT;
   1.676 +    Label     &L = *($labl$$label);
   1.677 +    int     flag = $cop$$cmpcode;
   1.678 +
   1.679 +    __ move(op2, $src2$$constant);
   1.680 +
   1.681 +    switch(flag) {
   1.682 +      case 0x01: //equal
   1.683 +        if (&L)
   1.684 +          __ beq(op1, op2, L);
   1.685 +        else
   1.686 +          __ beq(op1, op2, (int)0);
   1.687 +        break;
   1.688 +      case 0x02: //not_equal
   1.689 +        if (&L)
   1.690 +          __ bne(op1, op2, L);
   1.691 +        else
   1.692 +          __ bne(op1, op2, (int)0);
   1.693 +        break;
   1.694 +      case 0x03: //above
   1.695 +        __ slt(AT, op2, op1);
   1.696 +        if(&L)
   1.697 +          __ bne(AT, R0, L);
   1.698 +        else
   1.699 +          __ bne(AT, R0, (int)0);
   1.700 +        break;
   1.701 +      case 0x04: //above_equal
   1.702 +        __ slt(AT, op1, op2);
   1.703 +        if(&L)
   1.704 +          __ beq(AT, R0, L);
   1.705 +        else
   1.706 +          __ beq(AT, R0, (int)0);
   1.707 +        break;
   1.708 +      case 0x05: //below
   1.709 +        __ slt(AT, op1, op2);
   1.710 +        if(&L)
   1.711 +          __ bne(AT, R0, L);
   1.712 +        else
   1.713 +          __ bne(AT, R0, (int)0);
   1.714 +        break;
   1.715 +      case 0x06: //below_equal
   1.716 +        __ slt(AT, op2, op1);
   1.717 +        if(&L)
   1.718 +          __ beq(AT, R0, L);
   1.719 +        else
   1.720 +          __ beq(AT, R0, (int)0);
   1.721 +        break;
   1.722 +      default:
   1.723 +        Unimplemented();
   1.724 +    }
   1.725 +    __ nop();
   1.726 +  %}
   1.727 +  ins_pipe( pipe_jump );
   1.728 +  ins_pc_relative(1);
   1.729 +  ins_short_branch(1);
   1.730 +%}
   1.731 +
   1.732 +
   1.733 +// This match pattern is created for StoreIConditional since I cannot match IfNode without a RegFlags! fujie 2012/07/17
   1.734 +instruct jmpCon_flags_short(cmpOp cop, FlagsReg cr, label labl) %{
   1.735 +  match(If cop cr);
   1.736 +  effect(USE labl);
   1.737 +
   1.738 +  ins_cost(300);
   1.739 +  format %{ "J$cop    $labl  #mips uses AT as eflag @jmpCon_flags_short" %}
   1.740 +
   1.741 +  ins_encode %{
   1.742 +    Label    &L =  *($labl$$label);
   1.743 +    switch($cop$$cmpcode) {
   1.744 +      case 0x01: //equal
   1.745 +        if (&L)
   1.746 +          __ bne(AT, R0, L);
   1.747 +        else
   1.748 +          __ bne(AT, R0, (int)0);
   1.749 +        break;
   1.750 +      case 0x02: //not equal
   1.751 +        if (&L)
   1.752 +          __ beq(AT, R0, L);
   1.753 +        else
   1.754 +          __ beq(AT, R0, (int)0);
   1.755 +        break;
   1.756 +      default:
   1.757 +        Unimplemented();
   1.758 +    }
   1.759 +    __ nop();
   1.760 +  %}
   1.761 +
   1.762 +  ins_pipe( pipe_jump );
   1.763 +  ins_pc_relative(1);
   1.764 +  ins_short_branch(1);
   1.765 +%}
   1.766 +
   1.767 +// Conditional jumps
   1.768 +instruct branchConP_zero_short(cmpOpU cmp, mRegP op1, immP0 zero, label labl) %{
   1.769 +  match(If cmp (CmpP op1 zero));
   1.770 +  effect(USE labl);
   1.771 +
   1.772 +  ins_cost(180);
   1.773 +  format %{ "b$cmp   $op1, R0, $labl #@branchConP_zero_short" %}
   1.774 +
   1.775 +  ins_encode %{
   1.776 +    Register op1 = $op1$$Register;
   1.777 +    Register op2 = R0;
   1.778 +    Label    &L  = *($labl$$label);
   1.779 +    int     flag = $cmp$$cmpcode;
   1.780 +
   1.781 +    switch(flag) {
   1.782 +      case 0x01: //equal
   1.783 +        if (&L)
   1.784 +          __ beq(op1, op2, L);
   1.785 +        else
   1.786 +          __ beq(op1, op2, (int)0);
   1.787 +        break;
   1.788 +      case 0x02: //not_equal
   1.789 +        if (&L)
   1.790 +          __ bne(op1, op2, L);
   1.791 +        else
   1.792 +          __ bne(op1, op2, (int)0);
   1.793 +        break;
   1.794 +      default:
   1.795 +        Unimplemented();
   1.796 +    }
   1.797 +    __ nop();
   1.798 +  %}
   1.799 +
   1.800 +  ins_pc_relative(1);
   1.801 +  ins_pipe( pipe_alu_branch );
   1.802 +  ins_short_branch(1);
   1.803 +%}
   1.804 +
   1.805 +instruct branchConN2P_zero_short(cmpOpU cmp, mRegN op1, immP0 zero, label labl) %{
   1.806 +  match(If cmp (CmpP (DecodeN op1) zero));
   1.807 +  predicate(Universe::narrow_oop_base() == NULL && Universe::narrow_oop_shift() == 0);
   1.808 +  effect(USE labl);
   1.809 +
   1.810 +  ins_cost(180);
   1.811 +  format %{ "b$cmp   $op1, R0, $labl #@branchConN2P_zero_short" %}
   1.812 +
   1.813 +  ins_encode %{
   1.814 +    Register op1 = $op1$$Register;
   1.815 +    Register op2 = R0;
   1.816 +    Label    &L  = *($labl$$label);
   1.817 +    int     flag = $cmp$$cmpcode;
   1.818 +
   1.819 +    switch(flag)
   1.820 +    {
   1.821 +      case 0x01: //equal
   1.822 +        if (&L)
   1.823 +          __ beq(op1, op2, L);
   1.824 +        else
   1.825 +          __ beq(op1, op2, (int)0);
   1.826 +        break;
   1.827 +      case 0x02: //not_equal
   1.828 +        if (&L)
   1.829 +          __ bne(op1, op2, L);
   1.830 +        else
   1.831 +          __ bne(op1, op2, (int)0);
   1.832 +        break;
   1.833 +      default:
   1.834 +        Unimplemented();
   1.835 +    }
   1.836 +    __ nop();
   1.837 +  %}
   1.838 +
   1.839 +  ins_pc_relative(1);
   1.840 +  ins_pipe( pipe_alu_branch );
   1.841 +  ins_short_branch(1);
   1.842 +%}
   1.843 +
   1.844 +
   1.845 +instruct branchConP_short(cmpOpU cmp, mRegP op1, mRegP op2, label labl) %{
   1.846 +  match(If cmp (CmpP op1 op2));
   1.847 +//  predicate(can_branch_register(_kids[0]->_leaf, _kids[1]->_leaf));
   1.848 +  effect(USE labl);
   1.849 +
   1.850 +  ins_cost(200);
   1.851 +  format %{ "b$cmp   $op1, $op2, $labl #@branchConP_short" %}
   1.852 +
   1.853 +  ins_encode %{
   1.854 +    Register op1 = $op1$$Register;
   1.855 +    Register op2 = $op2$$Register;
   1.856 +    Label    &L  = *($labl$$label);
   1.857 +    int     flag = $cmp$$cmpcode;
   1.858 +
   1.859 +    switch(flag) {
   1.860 +      case 0x01: //equal
   1.861 +        if (&L)
   1.862 +          __ beq(op1, op2, L);
   1.863 +        else
   1.864 +          __ beq(op1, op2, (int)0);
   1.865 +        break;
   1.866 +      case 0x02: //not_equal
   1.867 +        if (&L)
   1.868 +          __ bne(op1, op2, L);
   1.869 +        else
   1.870 +          __ bne(op1, op2, (int)0);
   1.871 +        break;
   1.872 +      case 0x03: //above
   1.873 +        __ sltu(AT, op2, op1);
   1.874 +        if(&L)
   1.875 +          __ bne(R0, AT, L);
   1.876 +        else
   1.877 +                __ bne(R0, AT, (int)0);
   1.878 +        break;
   1.879 +      case 0x04: //above_equal
   1.880 +        __ sltu(AT, op1, op2);
   1.881 +        if(&L)
   1.882 +                 __ beq(AT, R0, L);
   1.883 +        else
   1.884 +                 __ beq(AT, R0, (int)0);
   1.885 +        break;
   1.886 +      case 0x05: //below
   1.887 +        __ sltu(AT, op1, op2);
   1.888 +        if(&L)
   1.889 +           __ bne(R0, AT, L);
   1.890 +        else
   1.891 +           __ bne(R0, AT, (int)0);
   1.892 +        break;
   1.893 +      case 0x06: //below_equal
   1.894 +        __ sltu(AT, op2, op1);
   1.895 +        if(&L)
   1.896 +          __ beq(AT, R0, L);
   1.897 +        else
   1.898 +          __ beq(AT, R0, (int)0);
   1.899 +       break;
   1.900 +      default:
   1.901 +          Unimplemented();
   1.902 +    }
   1.903 +    __ nop();
   1.904 +  %}
   1.905 +
   1.906 +  ins_pc_relative(1);
   1.907 +  ins_pipe( pipe_alu_branch );
   1.908 +  ins_short_branch(1);
   1.909 +%}
   1.910 +
   1.911 +instruct cmpN_null_branch_short(cmpOp cmp, mRegN op1, immN0 null, label labl) %{
   1.912 +  match(If cmp (CmpN op1 null));
   1.913 +  effect(USE labl);
   1.914 +
   1.915 +  ins_cost(180);
   1.916 +  format %{ "CMP    $op1,0\t! compressed ptr\n\t"
   1.917 +            "BP$cmp   $labl @ cmpN_null_branch_short" %}
   1.918 +  ins_encode %{
   1.919 +    Register op1 = $op1$$Register;
   1.920 +    Register op2 = R0;
   1.921 +    Label    &L  = *($labl$$label);
   1.922 +    int     flag = $cmp$$cmpcode;
   1.923 +
   1.924 +    switch(flag) {
   1.925 +    case 0x01: //equal
   1.926 +      if (&L)
   1.927 +        __ beq(op1, op2, L);
   1.928 +      else
   1.929 +        __ beq(op1, op2, (int)0);
   1.930 +      break;
   1.931 +    case 0x02: //not_equal
   1.932 +      if (&L)
   1.933 +        __ bne(op1, op2, L);
   1.934 +      else
   1.935 +        __ bne(op1, op2, (int)0);
   1.936 +      break;
   1.937 +    default:
   1.938 +          Unimplemented();
   1.939 +    }
   1.940 +    __ nop();
   1.941 +  %}
   1.942 +//TODO: pipe_branchP or create pipe_branchN LEE
   1.943 +  ins_pc_relative(1);
   1.944 +  ins_pipe( pipe_alu_branch );
   1.945 +  ins_short_branch(1);
   1.946 +%}
   1.947 +
   1.948 +instruct cmpN_reg_branch_short(cmpOp cmp, mRegN op1, mRegN op2, label labl) %{
   1.949 +  match(If cmp (CmpN op1 op2));
   1.950 +  effect(USE labl);
   1.951 +
   1.952 +  ins_cost(180);
   1.953 +  format %{ "CMP    $op1,$op2\t! compressed ptr\n\t"
   1.954 +            "BP$cmp   $labl @ cmpN_reg_branch_short" %}
   1.955 +  ins_encode %{
   1.956 +    Register op1_reg = $op1$$Register;
   1.957 +    Register op2_reg = $op2$$Register;
   1.958 +    Label    &L  = *($labl$$label);
   1.959 +    int     flag = $cmp$$cmpcode;
   1.960 +
   1.961 +    switch(flag) {
   1.962 +    case 0x01: //equal
   1.963 +      if (&L)
   1.964 +        __ beq(op1_reg, op2_reg, L);
   1.965 +      else
   1.966 +        __ beq(op1_reg, op2_reg, (int)0);
   1.967 +      break;
   1.968 +    case 0x02: //not_equal
   1.969 +      if (&L)
   1.970 +        __ bne(op1_reg, op2_reg, L);
   1.971 +      else
   1.972 +        __ bne(op1_reg, op2_reg, (int)0);
   1.973 +      break;
   1.974 +    case 0x03: //above
   1.975 +      __ sltu(AT, op2_reg, op1_reg);
   1.976 +      if(&L)
   1.977 +        __ bne(R0, AT, L);
   1.978 +      else
   1.979 +        __ bne(R0, AT, (int)0);
   1.980 +      break;
   1.981 +    case 0x04: //above_equal
   1.982 +      __ sltu(AT, op1_reg, op2_reg);
   1.983 +      if(&L)
   1.984 +        __ beq(AT, R0, L);
   1.985 +      else
   1.986 +        __ beq(AT, R0, (int)0);
   1.987 +      break;
   1.988 +    case 0x05: //below
   1.989 +      __ sltu(AT, op1_reg, op2_reg);
   1.990 +      if(&L)
   1.991 +        __ bne(R0, AT, L);
   1.992 +      else
   1.993 +        __ bne(R0, AT, (int)0);
   1.994 +      break;
   1.995 +    case 0x06: //below_equal
   1.996 +      __ sltu(AT, op2_reg, op1_reg);
   1.997 +      if(&L)
   1.998 +        __ beq(AT, R0, L);
   1.999 +      else
  1.1000 +        __ beq(AT, R0, (int)0);
  1.1001 +      break;
  1.1002 +    default:
  1.1003 +      Unimplemented();
  1.1004 +    }
  1.1005 +    __ nop();
  1.1006 +  %}
  1.1007 +  ins_pc_relative(1);
  1.1008 +  ins_pipe( pipe_alu_branch );
  1.1009 +  ins_short_branch(1);
  1.1010 +%}
  1.1011 +
  1.1012 +instruct branchConIU_reg_reg_short(cmpOpU cmp, mRegI src1, mRegI src2, label labl) %{
  1.1013 +  match( If cmp (CmpU src1 src2) );
  1.1014 +  effect(USE labl);
  1.1015 +  format %{ "BR$cmp   $src1, $src2, $labl #@branchConIU_reg_reg_short" %}
  1.1016 +
  1.1017 +  ins_encode %{
  1.1018 +    Register op1 = $src1$$Register;
  1.1019 +    Register op2 = $src2$$Register;
  1.1020 +    Label     &L = *($labl$$label);
  1.1021 +    int     flag = $cmp$$cmpcode;
  1.1022 +
  1.1023 +    switch(flag) {
  1.1024 +      case 0x01: //equal
  1.1025 +        if (&L)
  1.1026 +          __ beq(op1, op2, L);
  1.1027 +        else
  1.1028 +          __ beq(op1, op2, (int)0);
  1.1029 +        break;
  1.1030 +      case 0x02: //not_equal
  1.1031 +        if (&L)
  1.1032 +          __ bne(op1, op2, L);
  1.1033 +        else
  1.1034 +          __ bne(op1, op2, (int)0);
  1.1035 +        break;
  1.1036 +      case 0x03: //above
  1.1037 +        __ sltu(AT, op2, op1);
  1.1038 +        if(&L)
  1.1039 +          __ bne(AT, R0, L);
  1.1040 +        else
  1.1041 +                __ bne(AT, R0, (int)0);
  1.1042 +        break;
  1.1043 +      case 0x04: //above_equal
  1.1044 +        __ sltu(AT, op1, op2);
  1.1045 +        if(&L)
  1.1046 +          __ beq(AT, R0, L);
  1.1047 +        else
  1.1048 +                __ beq(AT, R0, (int)0);
  1.1049 +        break;
  1.1050 +      case 0x05: //below
  1.1051 +        __ sltu(AT, op1, op2);
  1.1052 +        if(&L)
  1.1053 +           __ bne(AT, R0, L);
  1.1054 +        else
  1.1055 +           __ bne(AT, R0, (int)0);
  1.1056 +        break;
  1.1057 +      case 0x06: //below_equal
  1.1058 +        __ sltu(AT, op2, op1);
  1.1059 +        if(&L)
  1.1060 +          __ beq(AT, R0, L);
  1.1061 +        else
  1.1062 +          __ beq(AT, R0, (int)0);
  1.1063 +        break;
  1.1064 +      default:
  1.1065 +        Unimplemented();
  1.1066 +    }
  1.1067 +    __ nop();
  1.1068 +  %}
  1.1069 +
  1.1070 +  ins_pc_relative(1);
  1.1071 +  ins_pipe( pipe_alu_branch );
  1.1072 +  ins_short_branch(1);
  1.1073 +%}
  1.1074 +
  1.1075 +
  1.1076 +instruct branchConIU_reg_imm_short(cmpOpU cmp, mRegI src1, immI src2, label labl) %{
  1.1077 +  match( If cmp (CmpU src1 src2) );
  1.1078 +  effect(USE labl);
  1.1079 +  format %{ "BR$cmp   $src1, $src2, $labl #@branchConIU_reg_imm_short" %}
  1.1080 +
  1.1081 +  ins_encode %{
  1.1082 +    Register op1 = $src1$$Register;
  1.1083 +    int      val = $src2$$constant;
  1.1084 +    Label     &L = *($labl$$label);
  1.1085 +    int     flag = $cmp$$cmpcode;
  1.1086 +
  1.1087 +    __ move(AT, val);
  1.1088 +    switch(flag) {
  1.1089 +      case 0x01: //equal
  1.1090 +        if (&L)
  1.1091 +          __ beq(op1, AT, L);
  1.1092 +        else
  1.1093 +          __ beq(op1, AT, (int)0);
  1.1094 +        break;
  1.1095 +      case 0x02: //not_equal
  1.1096 +        if (&L)
  1.1097 +          __ bne(op1, AT, L);
  1.1098 +        else
  1.1099 +          __ bne(op1, AT, (int)0);
  1.1100 +        break;
  1.1101 +      case 0x03: //above
  1.1102 +        __ sltu(AT, AT, op1);
  1.1103 +        if(&L)
  1.1104 +          __ bne(R0, AT, L);
  1.1105 +        else
  1.1106 +                __ bne(R0, AT, (int)0);
  1.1107 +        break;
  1.1108 +      case 0x04: //above_equal
  1.1109 +        __ sltu(AT, op1, AT);
  1.1110 +        if(&L)
  1.1111 +          __ beq(AT, R0, L);
  1.1112 +        else
  1.1113 +                __ beq(AT, R0, (int)0);
  1.1114 +        break;
  1.1115 +      case 0x05: //below
  1.1116 +        __ sltu(AT, op1, AT);
  1.1117 +        if(&L)
  1.1118 +           __ bne(R0, AT, L);
  1.1119 +        else
  1.1120 +           __ bne(R0, AT, (int)0);
  1.1121 +        break;
  1.1122 +      case 0x06: //below_equal
  1.1123 +        __ sltu(AT, AT, op1);
  1.1124 +        if(&L)
  1.1125 +          __ beq(AT, R0, L);
  1.1126 +        else
  1.1127 +          __ beq(AT, R0, (int)0);
  1.1128 +       break;
  1.1129 +      default:
  1.1130 +        Unimplemented();
  1.1131 +    }
  1.1132 +    __ nop();
  1.1133 +  %}
  1.1134 +
  1.1135 +  ins_pc_relative(1);
  1.1136 +  ins_pipe( pipe_alu_branch );
  1.1137 +  ins_short_branch(1);
  1.1138 +%}
  1.1139 +
  1.1140 +instruct branchConI_reg_reg_short(cmpOp cmp, mRegI src1, mRegI src2, label labl) %{
  1.1141 +  match( If cmp (CmpI src1 src2) );
  1.1142 +  effect(USE labl);
  1.1143 +  format %{ "BR$cmp   $src1, $src2, $labl #@branchConI_reg_reg_short" %}
  1.1144 +
  1.1145 +  ins_encode %{
  1.1146 +    Register op1 = $src1$$Register;
  1.1147 +    Register op2 = $src2$$Register;
  1.1148 +    Label     &L = *($labl$$label);
  1.1149 +    int     flag = $cmp$$cmpcode;
  1.1150 +
  1.1151 +    switch(flag) {
  1.1152 +      case 0x01: //equal
  1.1153 +        if (&L)
  1.1154 +          __ beq(op1, op2, L);
  1.1155 +        else
  1.1156 +          __ beq(op1, op2, (int)0);
  1.1157 +        break;
  1.1158 +      case 0x02: //not_equal
  1.1159 +        if (&L)
  1.1160 +          __ bne(op1, op2, L);
  1.1161 +        else
  1.1162 +          __ bne(op1, op2, (int)0);
  1.1163 +        break;
  1.1164 +      case 0x03: //above
  1.1165 +        __ slt(AT, op2, op1);
  1.1166 +        if(&L)
  1.1167 +          __ bne(R0, AT, L);
  1.1168 +        else
  1.1169 +                __ bne(R0, AT, (int)0);
  1.1170 +        break;
  1.1171 +      case 0x04: //above_equal
  1.1172 +        __ slt(AT, op1, op2);
  1.1173 +        if(&L)
  1.1174 +          __ beq(AT, R0, L);
  1.1175 +        else
  1.1176 +                __ beq(AT, R0, (int)0);
  1.1177 +        break;
  1.1178 +      case 0x05: //below
  1.1179 +        __ slt(AT, op1, op2);
  1.1180 +        if(&L)
  1.1181 +           __ bne(R0, AT, L);
  1.1182 +        else
  1.1183 +           __ bne(R0, AT, (int)0);
  1.1184 +        break;
  1.1185 +      case 0x06: //below_equal
  1.1186 +        __ slt(AT, op2, op1);
  1.1187 +        if(&L)
  1.1188 +          __ beq(AT, R0, L);
  1.1189 +        else
  1.1190 +          __ beq(AT, R0, (int)0);
  1.1191 +       break;
  1.1192 +      default:
  1.1193 +        Unimplemented();
  1.1194 +    }
  1.1195 +    __ nop();
  1.1196 +  %}
  1.1197 +
  1.1198 +  ins_pc_relative(1);
  1.1199 +  ins_pipe( pipe_alu_branch );
  1.1200 +  ins_short_branch(1);
  1.1201 +%}
  1.1202 +
  1.1203 +instruct branchConI_reg_imm0_short(cmpOp cmp, mRegI src1, immI0 src2, label labl) %{
  1.1204 +  match( If cmp (CmpI src1 src2) );
  1.1205 +  effect(USE labl);
  1.1206 +  ins_cost(170);
  1.1207 +  format %{ "BR$cmp   $src1, $src2, $labl #@branchConI_reg_imm0_short" %}
  1.1208 +
  1.1209 +  ins_encode %{
  1.1210 +    Register op1 = $src1$$Register;
  1.1211 +    Label     &L =  *($labl$$label);
  1.1212 +    int     flag = $cmp$$cmpcode;
  1.1213 +
  1.1214 +    switch(flag) {
  1.1215 +      case 0x01: //equal
  1.1216 +        if (&L)
  1.1217 +          __ beq(op1, R0, L);
  1.1218 +        else
  1.1219 +          __ beq(op1, R0, (int)0);
  1.1220 +        break;
  1.1221 +      case 0x02: //not_equal
  1.1222 +        if (&L)
  1.1223 +          __ bne(op1, R0, L);
  1.1224 +        else
  1.1225 +          __ bne(op1, R0, (int)0);
  1.1226 +        break;
  1.1227 +      case 0x03: //greater
  1.1228 +        if(&L)
  1.1229 +               __ bgtz(op1, L);
  1.1230 +        else
  1.1231 +               __ bgtz(op1, (int)0);
  1.1232 +        break;
  1.1233 +      case 0x04: //greater_equal
  1.1234 +        if(&L)
  1.1235 +               __ bgez(op1, L);
  1.1236 +        else
  1.1237 +               __ bgez(op1, (int)0);
  1.1238 +        break;
  1.1239 +      case 0x05: //less
  1.1240 +        if(&L)
  1.1241 +                __ bltz(op1, L);
  1.1242 +        else
  1.1243 +                __ bltz(op1, (int)0);
  1.1244 +        break;
  1.1245 +      case 0x06: //less_equal
  1.1246 +        if(&L)
  1.1247 +               __ blez(op1, L);
  1.1248 +        else
  1.1249 +               __ blez(op1, (int)0);
  1.1250 +       break;
  1.1251 +      default:
  1.1252 +        Unimplemented();
  1.1253 +    }
  1.1254 +    __ nop();
  1.1255 +  %}
  1.1256 +
  1.1257 +  ins_pc_relative(1);
  1.1258 +  ins_pipe( pipe_alu_branch );
  1.1259 +  ins_short_branch(1);
  1.1260 +%}
  1.1261 +
  1.1262 +
  1.1263 +instruct branchConI_reg_imm_short(cmpOp cmp, mRegI src1, immI src2, label labl) %{
  1.1264 +  match( If cmp (CmpI src1 src2) );
  1.1265 +  effect(USE labl);
  1.1266 +  ins_cost(200);
  1.1267 +  format %{ "BR$cmp   $src1, $src2, $labl #@branchConI_reg_imm_short" %}
  1.1268 +
  1.1269 +  ins_encode %{
  1.1270 +    Register op1 = $src1$$Register;
  1.1271 +    int      val = $src2$$constant;
  1.1272 +    Label     &L =  *($labl$$label);
  1.1273 +    int     flag = $cmp$$cmpcode;
  1.1274 +
  1.1275 +    __ move(AT, val);
  1.1276 +    switch(flag) {
  1.1277 +      case 0x01: //equal
  1.1278 +        if (&L)
  1.1279 +          __ beq(op1, AT, L);
  1.1280 +        else
  1.1281 +          __ beq(op1, AT, (int)0);
  1.1282 +        break;
  1.1283 +      case 0x02: //not_equal
  1.1284 +        if (&L)
  1.1285 +          __ bne(op1, AT, L);
  1.1286 +        else
  1.1287 +          __ bne(op1, AT, (int)0);
  1.1288 +        break;
  1.1289 +      case 0x03: //greater
  1.1290 +        __ slt(AT, AT, op1);
  1.1291 +        if(&L)
  1.1292 +          __ bne(R0, AT, L);
  1.1293 +        else
  1.1294 +                __ bne(R0, AT, (int)0);
  1.1295 +        break;
  1.1296 +      case 0x04: //greater_equal
  1.1297 +        __ slt(AT, op1, AT);
  1.1298 +        if(&L)
  1.1299 +          __ beq(AT, R0, L);
  1.1300 +        else
  1.1301 +                __ beq(AT, R0, (int)0);
  1.1302 +        break;
  1.1303 +      case 0x05: //less
  1.1304 +        __ slt(AT, op1, AT);
  1.1305 +        if(&L)
  1.1306 +           __ bne(R0, AT, L);
  1.1307 +        else
  1.1308 +           __ bne(R0, AT, (int)0);
  1.1309 +        break;
  1.1310 +      case 0x06: //less_equal
  1.1311 +        __ slt(AT, AT, op1);
  1.1312 +        if(&L)
  1.1313 +          __ beq(AT, R0, L);
  1.1314 +        else
  1.1315 +          __ beq(AT, R0, (int)0);
  1.1316 +       break;
  1.1317 +      default:
  1.1318 +          Unimplemented();
  1.1319 +    }
  1.1320 +    __ nop();
  1.1321 +  %}
  1.1322 +
  1.1323 +  ins_pc_relative(1);
  1.1324 +  ins_pipe( pipe_alu_branch );
  1.1325 +  ins_short_branch(1);
  1.1326 +%}
  1.1327 +
  1.1328 +instruct branchConIU_reg_imm0_short(cmpOpU cmp, mRegI src1, immI0 zero, label labl) %{
  1.1329 +  match( If cmp (CmpU src1 zero) );
  1.1330 +  effect(USE labl);
  1.1331 +  format %{ "BR$cmp   $src1, zero, $labl #@branchConIU_reg_imm0_short" %}
  1.1332 +
  1.1333 +  ins_encode %{
  1.1334 +    Register op1 = $src1$$Register;
  1.1335 +    Label     &L = *($labl$$label);
  1.1336 +    int     flag = $cmp$$cmpcode;
  1.1337 +
  1.1338 +    switch(flag) {
  1.1339 +      case 0x01: //equal
  1.1340 +        if (&L)
  1.1341 +          __ beq(op1, R0, L);
  1.1342 +        else
  1.1343 +          __ beq(op1, R0, (int)0);
  1.1344 +        break;
  1.1345 +      case 0x02: //not_equal
  1.1346 +        if (&L)
  1.1347 +          __ bne(op1, R0, L);
  1.1348 +        else
  1.1349 +          __ bne(op1, R0, (int)0);
  1.1350 +        break;
  1.1351 +      case 0x03: //above
  1.1352 +        if(&L)
  1.1353 +          __ bne(R0, op1, L);
  1.1354 +        else
  1.1355 +          __ bne(R0, op1, (int)0);
  1.1356 +        break;
  1.1357 +      case 0x04: //above_equal
  1.1358 +        if(&L)
  1.1359 +          __ beq(R0, R0, L);
  1.1360 +        else
  1.1361 +          __ beq(R0, R0, (int)0);
  1.1362 +        break;
  1.1363 +      case 0x05: //below
  1.1364 +        return;
  1.1365 +        break;
  1.1366 +      case 0x06: //below_equal
  1.1367 +        if(&L)
  1.1368 +          __ beq(op1, R0, L);
  1.1369 +        else
  1.1370 +          __ beq(op1, R0, (int)0);
  1.1371 +        break;
  1.1372 +      default:
  1.1373 +        Unimplemented();
  1.1374 +    }
  1.1375 +    __ nop();
  1.1376 +    %}
  1.1377 +
  1.1378 +  ins_pc_relative(1);
  1.1379 +  ins_pipe( pipe_alu_branch );
  1.1380 +  ins_short_branch(1);
  1.1381 +%}
  1.1382 +
  1.1383 +
  1.1384 +instruct branchConIU_reg_immI16_short(cmpOpU cmp, mRegI src1, immI16 src2, label labl) %{
  1.1385 +  match( If cmp (CmpU src1 src2) );
  1.1386 +  effect(USE labl);
  1.1387 +  ins_cost(180);
  1.1388 +  format %{ "BR$cmp   $src1, $src2, $labl #@branchConIU_reg_immI16_short" %}
  1.1389 +
  1.1390 +  ins_encode %{
  1.1391 +    Register op1 = $src1$$Register;
  1.1392 +    int      val = $src2$$constant;
  1.1393 +    Label     &L = *($labl$$label);
  1.1394 +    int     flag = $cmp$$cmpcode;
  1.1395 +
  1.1396 +    switch(flag) {
  1.1397 +      case 0x01: //equal
  1.1398 +        __ move(AT, val);
  1.1399 +        if (&L)
  1.1400 +          __ beq(op1, AT, L);
  1.1401 +        else
  1.1402 +          __ beq(op1, AT, (int)0);
  1.1403 +        break;
  1.1404 +      case 0x02: //not_equal
  1.1405 +        __ move(AT, val);
  1.1406 +        if (&L)
  1.1407 +          __ bne(op1, AT, L);
  1.1408 +        else
  1.1409 +          __ bne(op1, AT, (int)0);
  1.1410 +        break;
  1.1411 +      case 0x03: //above
  1.1412 +        __ move(AT, val);
  1.1413 +        __ sltu(AT, AT, op1);
  1.1414 +        if(&L)
  1.1415 +          __ bne(R0, AT, L);
  1.1416 +        else
  1.1417 +          __ bne(R0, AT, (int)0);
  1.1418 +        break;
  1.1419 +      case 0x04: //above_equal
  1.1420 +        __ sltiu(AT, op1, val);
  1.1421 +        if(&L)
  1.1422 +          __ beq(AT, R0, L);
  1.1423 +        else
  1.1424 +          __ beq(AT, R0, (int)0);
  1.1425 +        break;
  1.1426 +      case 0x05: //below
  1.1427 +        __ sltiu(AT, op1, val);
  1.1428 +        if(&L)
  1.1429 +          __ bne(R0, AT, L);
  1.1430 +        else
  1.1431 +          __ bne(R0, AT, (int)0);
  1.1432 +        break;
  1.1433 +      case 0x06: //below_equal
  1.1434 +        __ move(AT, val);
  1.1435 +        __ sltu(AT, AT, op1);
  1.1436 +        if(&L)
  1.1437 +          __ beq(AT, R0, L);
  1.1438 +        else
  1.1439 +          __ beq(AT, R0, (int)0);
  1.1440 +        break;
  1.1441 +      default:
  1.1442 +        Unimplemented();
  1.1443 +    }
  1.1444 +    __ nop();
  1.1445 +  %}
  1.1446 +
  1.1447 +  ins_pc_relative(1);
  1.1448 +  ins_pipe( pipe_alu_branch );
  1.1449 +  ins_short_branch(1);
  1.1450 +%}
  1.1451 +
  1.1452 +
  1.1453 +instruct branchConL_regL_regL_short(cmpOp cmp, mRegL src1, mRegL src2, label labl) %{
  1.1454 +  match( If cmp (CmpL src1 src2) );
  1.1455 +  effect(USE labl);
  1.1456 +  format %{ "BR$cmp   $src1, $src2, $labl #@branchConL_regL_regL_short" %}
  1.1457 +  ins_cost(250);
  1.1458 +
  1.1459 +  ins_encode %{
  1.1460 +    Register opr1_reg = as_Register($src1$$reg);
  1.1461 +    Register opr2_reg = as_Register($src2$$reg);
  1.1462 +
  1.1463 +    Label   &target = *($labl$$label);
  1.1464 +    int     flag = $cmp$$cmpcode;
  1.1465 +
  1.1466 +    switch(flag) {
  1.1467 +      case 0x01: //equal
  1.1468 +        if (&target)
  1.1469 +          __ beq(opr1_reg, opr2_reg, target);
  1.1470 +        else
  1.1471 +          __ beq(opr1_reg, opr2_reg, (int)0);
  1.1472 +        __ delayed()->nop();
  1.1473 +        break;
  1.1474 +
  1.1475 +      case 0x02: //not_equal
  1.1476 +        if(&target)
  1.1477 +          __ bne(opr1_reg, opr2_reg, target);
  1.1478 +        else
  1.1479 +          __ bne(opr1_reg, opr2_reg, (int)0);
  1.1480 +        __ delayed()->nop();
  1.1481 +        break;
  1.1482 +
  1.1483 +      case 0x03: //greater
  1.1484 +        __ slt(AT, opr2_reg, opr1_reg);
  1.1485 +        if(&target)
  1.1486 +          __ bne(AT, R0, target);
  1.1487 +        else
  1.1488 +          __ bne(AT, R0, (int)0);
  1.1489 +        __ delayed()->nop();
  1.1490 +        break;
  1.1491 +
  1.1492 +      case 0x04: //greater_equal
  1.1493 +        __ slt(AT, opr1_reg, opr2_reg);
  1.1494 +        if(&target)
  1.1495 +          __ beq(AT, R0, target);
  1.1496 +        else
  1.1497 +          __ beq(AT, R0, (int)0);
  1.1498 +        __ delayed()->nop();
  1.1499 +
  1.1500 +        break;
  1.1501 +
  1.1502 +      case 0x05: //less
  1.1503 +        __ slt(AT, opr1_reg, opr2_reg);
  1.1504 +        if(&target)
  1.1505 +          __ bne(AT, R0, target);
  1.1506 +        else
  1.1507 +          __ bne(AT, R0, (int)0);
  1.1508 +        __ delayed()->nop();
  1.1509 +
  1.1510 +        break;
  1.1511 +
  1.1512 +      case 0x06: //less_equal
  1.1513 +        __ slt(AT, opr2_reg, opr1_reg);
  1.1514 +
  1.1515 +        if(&target)
  1.1516 +          __ beq(AT, R0, target);
  1.1517 +        else
  1.1518 +          __ beq(AT, R0, (int)0);
  1.1519 +        __ delayed()->nop();
  1.1520 +
  1.1521 +        break;
  1.1522 +
  1.1523 +      default:
  1.1524 +        Unimplemented();
  1.1525 +    }
  1.1526 +  %}
  1.1527 +
  1.1528 +
  1.1529 +  ins_pc_relative(1);
  1.1530 +  ins_pipe( pipe_alu_branch );
  1.1531 +  ins_short_branch(1);
  1.1532 +%}
  1.1533 +
  1.1534 +
  1.1535 +instruct branchConL_regL_immL0_short(cmpOp cmp, mRegL src1, immL0 zero, label labl) %{
  1.1536 +  match( If cmp (CmpL src1 zero) );
  1.1537 +  effect(USE labl);
  1.1538 +  format %{ "BR$cmp   $src1, zero, $labl #@branchConL_regL_immL0_short" %}
  1.1539 +  ins_cost(150);
  1.1540 +
  1.1541 +  ins_encode %{
  1.1542 +    Register opr1_reg = as_Register($src1$$reg);
  1.1543 +    Label   &target = *($labl$$label);
  1.1544 +    int     flag = $cmp$$cmpcode;
  1.1545 +
  1.1546 +    switch(flag) {
  1.1547 +      case 0x01: //equal
  1.1548 +        if (&target)
  1.1549 +           __ beq(opr1_reg, R0, target);
  1.1550 +        else
  1.1551 +           __ beq(opr1_reg, R0, int(0));
  1.1552 +        break;
  1.1553 +
  1.1554 +      case 0x02: //not_equal
  1.1555 +        if(&target)
  1.1556 +           __ bne(opr1_reg, R0, target);
  1.1557 +        else
  1.1558 +           __ bne(opr1_reg, R0, (int)0);
  1.1559 +        break;
  1.1560 +
  1.1561 +      case 0x03: //greater
  1.1562 +        if(&target)
  1.1563 +           __ bgtz(opr1_reg, target);
  1.1564 +        else
  1.1565 +           __ bgtz(opr1_reg, (int)0);
  1.1566 +       break;
  1.1567 +
  1.1568 +      case 0x04: //greater_equal
  1.1569 +        if(&target)
  1.1570 +           __ bgez(opr1_reg, target);
  1.1571 +        else
  1.1572 +           __ bgez(opr1_reg, (int)0);
  1.1573 +        break;
  1.1574 +
  1.1575 +      case 0x05: //less
  1.1576 +        __ slt(AT, opr1_reg, R0);
  1.1577 +        if(&target)
  1.1578 +           __ bne(AT, R0, target);
  1.1579 +        else
  1.1580 +           __ bne(AT, R0, (int)0);
  1.1581 +        break;
  1.1582 +
  1.1583 +      case 0x06: //less_equal
  1.1584 +        if (&target)
  1.1585 +           __ blez(opr1_reg, target);
  1.1586 +        else
  1.1587 +           __ blez(opr1_reg, int(0));
  1.1588 +        break;
  1.1589 +
  1.1590 +      default:
  1.1591 +          Unimplemented();
  1.1592 +    }
  1.1593 +    __ delayed()->nop();
  1.1594 +  %}
  1.1595 +
  1.1596 +
  1.1597 +  ins_pc_relative(1);
  1.1598 +  ins_pipe( pipe_alu_branch );
  1.1599 +  ins_short_branch(1);
  1.1600 +%}
  1.1601 +
  1.1602 +instruct branchConL_regL_immL_short(cmpOp cmp, mRegL src1, immL src2, label labl) %{
  1.1603 +  match( If cmp (CmpL src1 src2) );
  1.1604 +  effect(USE labl);
  1.1605 +  format %{ "BR$cmp   $src1, $src2, $labl #@branchConL_regL_immL_short" %}
  1.1606 +  ins_cost(180);
  1.1607 +
  1.1608 +  ins_encode %{
  1.1609 +    Register opr1_reg = as_Register($src1$$reg);
  1.1610 +    Register opr2_reg = AT;
  1.1611 +
  1.1612 +    Label   &target = *($labl$$label);
  1.1613 +    int     flag = $cmp$$cmpcode;
  1.1614 +
  1.1615 +    __ set64(opr2_reg, $src2$$constant);
  1.1616 +
  1.1617 +    switch(flag) {
  1.1618 +      case 0x01: //equal
  1.1619 +        if (&target)
  1.1620 +          __ beq(opr1_reg, opr2_reg, target);
  1.1621 +        else
  1.1622 +          __ beq(opr1_reg, opr2_reg, (int)0);
  1.1623 +        break;
  1.1624 +
  1.1625 +      case 0x02: //not_equal
  1.1626 +        if(&target)
  1.1627 +          __ bne(opr1_reg, opr2_reg, target);
  1.1628 +        else
  1.1629 +          __ bne(opr1_reg, opr2_reg, (int)0);
  1.1630 +        break;
  1.1631 +
  1.1632 +      case 0x03: //greater
  1.1633 +        __ slt(AT, opr2_reg, opr1_reg);
  1.1634 +        if(&target)
  1.1635 +          __ bne(AT, R0, target);
  1.1636 +        else
  1.1637 +          __ bne(AT, R0, (int)0);
  1.1638 +        break;
  1.1639 +
  1.1640 +      case 0x04: //greater_equal
  1.1641 +        __ slt(AT, opr1_reg, opr2_reg);
  1.1642 +        if(&target)
  1.1643 +          __ beq(AT, R0, target);
  1.1644 +        else
  1.1645 +          __ beq(AT, R0, (int)0);
  1.1646 +        break;
  1.1647 +
  1.1648 +      case 0x05: //less
  1.1649 +        __ slt(AT, opr1_reg, opr2_reg);
  1.1650 +        if(&target)
  1.1651 +          __ bne(AT, R0, target);
  1.1652 +        else
  1.1653 +          __ bne(AT, R0, (int)0);
  1.1654 +        break;
  1.1655 +
  1.1656 +      case 0x06: //less_equal
  1.1657 +        __ slt(AT, opr2_reg, opr1_reg);
  1.1658 +        if(&target)
  1.1659 +          __ beq(AT, R0, target);
  1.1660 +        else
  1.1661 +          __ beq(AT, R0, (int)0);
  1.1662 +        break;
  1.1663 +
  1.1664 +      default:
  1.1665 +        Unimplemented();
  1.1666 +    }
  1.1667 +    __ nop();
  1.1668 +  %}
  1.1669 +
  1.1670 +
  1.1671 +  ins_pc_relative(1);
  1.1672 +  ins_pipe( pipe_alu_branch );
  1.1673 +  ins_short_branch(1);
  1.1674 +%}
  1.1675 +
  1.1676 +
  1.1677 +//FIXME
  1.1678 +instruct branchConF_reg_reg_short(cmpOp cmp, regF src1, regF src2, label labl) %{
  1.1679 +  match( If cmp (CmpF src1 src2) );
  1.1680 +  effect(USE labl);
  1.1681 +  format %{ "BR$cmp   $src1, $src2, $labl #@branchConF_reg_reg_short" %}
  1.1682 +
  1.1683 +  ins_encode %{
  1.1684 +    FloatRegister reg_op1 = $src1$$FloatRegister;
  1.1685 +    FloatRegister reg_op2 = $src2$$FloatRegister;
  1.1686 +    Label     &L =  *($labl$$label);
  1.1687 +    int     flag = $cmp$$cmpcode;
  1.1688 +
  1.1689 +    switch(flag) {
  1.1690 +      case 0x01: //equal
  1.1691 +        __ c_eq_s(reg_op1, reg_op2);
  1.1692 +        if (&L)
  1.1693 +          __ bc1t(L);
  1.1694 +        else
  1.1695 +          __ bc1t((int)0);
  1.1696 +        break;
  1.1697 +      case 0x02: //not_equal
  1.1698 +        __ c_eq_s(reg_op1, reg_op2);
  1.1699 +        if (&L)
  1.1700 +          __ bc1f(L);
  1.1701 +        else
  1.1702 +          __ bc1f((int)0);
  1.1703 +        break;
  1.1704 +      case 0x03: //greater
  1.1705 +        __ c_ule_s(reg_op1, reg_op2);
  1.1706 +        if(&L)
  1.1707 +          __ bc1f(L);
  1.1708 +        else
  1.1709 +          __ bc1f((int)0);
  1.1710 +        break;
  1.1711 +      case 0x04: //greater_equal
  1.1712 +        __ c_ult_s(reg_op1, reg_op2);
  1.1713 +        if(&L)
  1.1714 +          __ bc1f(L);
  1.1715 +        else
  1.1716 +          __ bc1f((int)0);
  1.1717 +        break;
  1.1718 +      case 0x05: //less
  1.1719 +        __ c_ult_s(reg_op1, reg_op2);
  1.1720 +        if(&L)
  1.1721 +          __ bc1t(L);
  1.1722 +        else
  1.1723 +          __ bc1t((int)0);
  1.1724 +        break;
  1.1725 +      case 0x06: //less_equal
  1.1726 +        __ c_ule_s(reg_op1, reg_op2);
  1.1727 +        if(&L)
  1.1728 +          __ bc1t(L);
  1.1729 +        else
  1.1730 +          __ bc1t((int)0);
  1.1731 +        break;
  1.1732 +      default:
  1.1733 +        Unimplemented();
  1.1734 +    }
  1.1735 +    __ nop();
  1.1736 +  %}
  1.1737 +
  1.1738 +  ins_pc_relative(1);
  1.1739 +  ins_pipe(pipe_slow);
  1.1740 +  ins_short_branch(1);
  1.1741 +%}
  1.1742 +
  1.1743 +instruct branchConD_reg_reg_short(cmpOp cmp, regD src1, regD src2, label labl) %{
  1.1744 +  match( If cmp (CmpD src1 src2) );
  1.1745 +  effect(USE labl);
  1.1746 +  format %{ "BR$cmp   $src1, $src2, $labl #@branchConD_reg_reg_short" %}
  1.1747 +
  1.1748 +  ins_encode %{
  1.1749 +    FloatRegister reg_op1 = $src1$$FloatRegister;
  1.1750 +    FloatRegister reg_op2 = $src2$$FloatRegister;
  1.1751 +    Label     &L =  *($labl$$label);
  1.1752 +    int     flag = $cmp$$cmpcode;
  1.1753 +
  1.1754 +    switch(flag) {
  1.1755 +      case 0x01: //equal
  1.1756 +        __ c_eq_d(reg_op1, reg_op2);
  1.1757 +        if (&L)
  1.1758 +          __ bc1t(L);
  1.1759 +        else
  1.1760 +          __ bc1t((int)0);
  1.1761 +        break;
  1.1762 +      case 0x02: //not_equal
  1.1763 +        //2016/4/19 aoqi: c_ueq_d cannot distinguish NaN from equal. Double.isNaN(Double) is implemented by 'f != f', so the use of c_ueq_d causes bugs.
  1.1764 +        __ c_eq_d(reg_op1, reg_op2);
  1.1765 +        if (&L)
  1.1766 +          __ bc1f(L);
  1.1767 +        else
  1.1768 +          __ bc1f((int)0);
  1.1769 +        break;
  1.1770 +      case 0x03: //greater
  1.1771 +        __ c_ule_d(reg_op1, reg_op2);
  1.1772 +        if(&L)
  1.1773 +          __ bc1f(L);
  1.1774 +        else
  1.1775 +          __ bc1f((int)0);
  1.1776 +        break;
  1.1777 +      case 0x04: //greater_equal
  1.1778 +        __ c_ult_d(reg_op1, reg_op2);
  1.1779 +        if(&L)
  1.1780 +          __ bc1f(L);
  1.1781 +        else
  1.1782 +          __ bc1f((int)0);
  1.1783 +        break;
  1.1784 +      case 0x05: //less
  1.1785 +        __ c_ult_d(reg_op1, reg_op2);
  1.1786 +        if(&L)
  1.1787 +          __ bc1t(L);
  1.1788 +        else
  1.1789 +          __ bc1t((int)0);
  1.1790 +        break;
  1.1791 +      case 0x06: //less_equal
  1.1792 +        __ c_ule_d(reg_op1, reg_op2);
  1.1793 +        if(&L)
  1.1794 +          __ bc1t(L);
  1.1795 +        else
  1.1796 +          __ bc1t((int)0);
  1.1797 +        break;
  1.1798 +      default:
  1.1799 +        Unimplemented();
  1.1800 +    }
  1.1801 +    __ nop();
  1.1802 +  %}
  1.1803 +
  1.1804 +  ins_pc_relative(1);
  1.1805 +  ins_pipe(pipe_slow);
  1.1806 +  ins_short_branch(1);
  1.1807 +%}
  1.1808 +
  1.1809 +// =================== End of branch instructions ==========================
  1.1810 +
  1.1811  // Call Runtime Instruction
  1.1812  instruct CallRuntimeDirect(method meth) %{
  1.1813    match(CallRuntime );
  1.1814 @@ -12073,28 +13510,6 @@
  1.1815  %}
  1.1816  */
  1.1817  
  1.1818 -// Jump Direct - Label defines a relative address from JMP
  1.1819 -instruct jmpDir(label labl) %{
  1.1820 -  match(Goto);
  1.1821 -  effect(USE labl);
  1.1822 -
  1.1823 -  ins_cost(300);
  1.1824 -  format %{ "JMP    $labl #@jmpDir" %}
  1.1825 -
  1.1826 -  ins_encode %{
  1.1827 -    Label &L = *($labl$$label);
  1.1828 -    if(&L)
  1.1829 -       __ b(L);
  1.1830 -    else
  1.1831 -         __ b(int(0));
  1.1832 -    __ nop();
  1.1833 -  %}
  1.1834 -
  1.1835 -    ins_pipe( pipe_jump );
  1.1836 -    ins_pc_relative(1);
  1.1837 -%}
  1.1838 -
  1.1839 -
  1.1840  
  1.1841  // Tail Jump; remove the return address; jump to target.
  1.1842  // TailCall above leaves the return address around.
  1.1843 @@ -12876,167 +14291,6 @@
  1.1844    ins_pipe( ialu_regI_imm16 );
  1.1845  %}
  1.1846  
  1.1847 -// Jump Direct Conditional - Label defines a relative address from Jcc+1
  1.1848 -instruct  jmpLoopEnd(cmpOp cop, mRegI src1, mRegI src2, label labl) %{
  1.1849 -  match(CountedLoopEnd cop (CmpI src1 src2));
  1.1850 -  effect(USE labl);
  1.1851 -
  1.1852 -  ins_cost(300);
  1.1853 -  format %{ "J$cop  $src1, $src2,  $labl\t# Loop end @ jmpLoopEnd" %}
  1.1854 -  ins_encode %{
  1.1855 -    Register op1 = $src1$$Register;
  1.1856 -    Register op2 = $src2$$Register;
  1.1857 -    Label     &L = *($labl$$label);
  1.1858 -    int     flag = $cop$$cmpcode;
  1.1859 -
  1.1860 -    switch(flag) {
  1.1861 -      case 0x01: //equal
  1.1862 -        if (&L)
  1.1863 -          __ beq(op1, op2, L);
  1.1864 -        else
  1.1865 -          __ beq(op1, op2, (int)0);
  1.1866 -        break;
  1.1867 -      case 0x02: //not_equal
  1.1868 -        if (&L)
  1.1869 -          __ bne(op1, op2, L);
  1.1870 -        else
  1.1871 -          __ bne(op1, op2, (int)0);
  1.1872 -        break;
  1.1873 -      case 0x03: //above
  1.1874 -        __ slt(AT, op2, op1);
  1.1875 -        if(&L)
  1.1876 -          __ bne(AT, R0, L);
  1.1877 -        else
  1.1878 -          __ bne(AT, R0, (int)0);
  1.1879 -        break;
  1.1880 -      case 0x04: //above_equal
  1.1881 -        __ slt(AT, op1, op2);
  1.1882 -        if(&L)
  1.1883 -          __ beq(AT, R0, L);
  1.1884 -        else
  1.1885 -          __ beq(AT, R0, (int)0);
  1.1886 -        break;
  1.1887 -      case 0x05: //below
  1.1888 -        __ slt(AT, op1, op2);
  1.1889 -        if(&L)
  1.1890 -          __ bne(AT, R0, L);
  1.1891 -        else
  1.1892 -          __ bne(AT, R0, (int)0);
  1.1893 -        break;
  1.1894 -      case 0x06: //below_equal
  1.1895 -        __ slt(AT, op2, op1);
  1.1896 -        if(&L)
  1.1897 -          __ beq(AT, R0, L);
  1.1898 -        else
  1.1899 -          __ beq(AT, R0, (int)0);
  1.1900 -        break;
  1.1901 -      default:
  1.1902 -        Unimplemented();
  1.1903 -    }
  1.1904 -    __ nop();
  1.1905 -  %}
  1.1906 -  ins_pipe( pipe_jump );
  1.1907 -  ins_pc_relative(1);
  1.1908 -%}
  1.1909 -
  1.1910 -instruct  jmpLoopEnd_reg_immI(cmpOp cop, mRegI src1, immI src2, label labl) %{
  1.1911 -  match(CountedLoopEnd cop (CmpI src1 src2));
  1.1912 -  effect(USE labl);
  1.1913 -
  1.1914 -  ins_cost(300);
  1.1915 -  format %{ "J$cop  $src1, $src2,  $labl\t# Loop end @ jmpLoopEnd_reg_immI" %}
  1.1916 -  ins_encode %{
  1.1917 -    Register op1 = $src1$$Register;
  1.1918 -    Register op2 = AT;
  1.1919 -    Label     &L = *($labl$$label);
  1.1920 -    int     flag = $cop$$cmpcode;
  1.1921 -
  1.1922 -    __ move(op2, $src2$$constant);
  1.1923 -
  1.1924 -    switch(flag) {
  1.1925 -      case 0x01: //equal
  1.1926 -        if (&L)
  1.1927 -          __ beq(op1, op2, L);
  1.1928 -        else
  1.1929 -          __ beq(op1, op2, (int)0);
  1.1930 -        break;
  1.1931 -      case 0x02: //not_equal
  1.1932 -        if (&L)
  1.1933 -          __ bne(op1, op2, L);
  1.1934 -        else
  1.1935 -          __ bne(op1, op2, (int)0);
  1.1936 -        break;
  1.1937 -      case 0x03: //above
  1.1938 -        __ slt(AT, op2, op1);
  1.1939 -        if(&L)
  1.1940 -          __ bne(AT, R0, L);
  1.1941 -        else
  1.1942 -          __ bne(AT, R0, (int)0);
  1.1943 -        break;
  1.1944 -      case 0x04: //above_equal
  1.1945 -        __ slt(AT, op1, op2);
  1.1946 -        if(&L)
  1.1947 -          __ beq(AT, R0, L);
  1.1948 -        else
  1.1949 -          __ beq(AT, R0, (int)0);
  1.1950 -        break;
  1.1951 -      case 0x05: //below
  1.1952 -        __ slt(AT, op1, op2);
  1.1953 -        if(&L)
  1.1954 -          __ bne(AT, R0, L);
  1.1955 -        else
  1.1956 -          __ bne(AT, R0, (int)0);
  1.1957 -        break;
  1.1958 -      case 0x06: //below_equal
  1.1959 -        __ slt(AT, op2, op1);
  1.1960 -        if(&L)
  1.1961 -          __ beq(AT, R0, L);
  1.1962 -        else
  1.1963 -          __ beq(AT, R0, (int)0);
  1.1964 -        break;
  1.1965 -      default:
  1.1966 -        Unimplemented();
  1.1967 -    }
  1.1968 -    __ nop();
  1.1969 -  %}
  1.1970 -  ins_pipe( pipe_jump );
  1.1971 -  ins_pc_relative(1);
  1.1972 -%}
  1.1973 -
  1.1974 -
  1.1975 -// This match pattern is created for StoreIConditional since I cannot match IfNode without a RegFlags! fujie 2012/07/17
  1.1976 -instruct jmpCon_flags(cmpOp cop, FlagsReg cr, label labl) %{
  1.1977 -  match(If cop cr);
  1.1978 -  effect(USE labl);
  1.1979 -
  1.1980 -  ins_cost(300);
  1.1981 -  format %{ "J$cop    $labl  #mips uses AT as eflag @jmpCon_flags" %}
  1.1982 -
  1.1983 -  ins_encode %{
  1.1984 -    Label    &L =  *($labl$$label);
  1.1985 -    switch($cop$$cmpcode) {
  1.1986 -      case 0x01: //equal
  1.1987 -        if (&L)
  1.1988 -          __ bne(AT, R0, L);
  1.1989 -        else
  1.1990 -          __ bne(AT, R0, (int)0);
  1.1991 -        break;
  1.1992 -      case 0x02: //not equal
  1.1993 -        if (&L)
  1.1994 -          __ beq(AT, R0, L);
  1.1995 -        else
  1.1996 -          __ beq(AT, R0, (int)0);
  1.1997 -        break;
  1.1998 -      default:
  1.1999 -        Unimplemented();
  1.2000 -    }
  1.2001 -    __ nop();
  1.2002 -  %}
  1.2003 -
  1.2004 -  ins_pipe( pipe_jump );
  1.2005 -  ins_pc_relative(1);
  1.2006 -%}
  1.2007 -
  1.2008  
  1.2009  // ============================================================================
  1.2010  // The 2nd slow-half of a subtype check.  Scan the subklass's 2ndary superklass
     2.1 --- a/src/share/vm/opto/output.cpp	Thu May 24 19:21:48 2018 +0800
     2.2 +++ b/src/share/vm/opto/output.cpp	Thu May 24 19:24:53 2018 +0800
     2.3 @@ -554,6 +554,10 @@
     2.4            DEBUG_ONLY( jmp_target[i] = bnum; );
     2.5            DEBUG_ONLY( jmp_rule[i] = mach->rule(); );
     2.6          } else {
     2.7 +#ifdef MIPS64
     2.8 +          env()->record_method_not_compilable("Branch out of range for MIPS");
     2.9 +          return;
    2.10 +#endif
    2.11            // The jump distance is not short, try again during next iteration.
    2.12            has_short_branch_candidate = true;
    2.13          }
    2.14 @@ -1165,6 +1169,9 @@
    2.15    // Pre-compute the length of blocks and replace
    2.16    // long branches with short if machine supports it.
    2.17    shorten_branches(blk_starts, code_req, locs_req, stub_req);
    2.18 +#ifdef MIPS64
    2.19 +  if (failing())  return NULL; // Branch out of range for MIPS
    2.20 +#endif
    2.21  
    2.22    // nmethod and CodeBuffer count stubs & constants as part of method's code.
    2.23    // class HandlerImpl is platform-specific and defined in the *.ad files.
     3.1 --- a/src/share/vm/runtime/globals.hpp	Thu May 24 19:21:48 2018 +0800
     3.2 +++ b/src/share/vm/runtime/globals.hpp	Thu May 24 19:24:53 2018 +0800
     3.3 @@ -3696,10 +3696,10 @@
     3.4            "The maximum number of interpreted frames to skip when searching "\
     3.5            "for recompilee")                                                 \
     3.6                                                                              \
     3.7 -  develop(intx, DesiredMethodLimit,  8000,                                  \
     3.8 +  product(intx, DesiredMethodLimit, 8000,                                   \
     3.9            "The desired maximum method size (in bytecodes) after inlining")  \
    3.10                                                                              \
    3.11 -  develop(intx, HugeMethodLimit,  8000,                                     \
    3.12 +  product(intx, HugeMethodLimit, 8000,                                      \
    3.13            "Don't compile methods larger than this if "                      \
    3.14            "+DontCompileHugeMethods")                                        \
    3.15                                                                              \
     4.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2 +++ b/test/mips64/7046/TestCompileHugeMethod.java	Thu May 24 19:24:53 2018 +0800
     4.3 @@ -0,0 +1,1492 @@
     4.4 +/*
     4.5 + * Copyright 2018 Loongson Technology.  All Rights Reserved.
     4.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4.7 + *
     4.8 + * This code is free software; you can redistribute it and/or modify it
     4.9 + * under the terms of the GNU General Public License version 2 only, as
    4.10 + * published by the Free Software Foundation.
    4.11 + *
    4.12 + * This code is distributed in the hope that it will be useful, but WITHOUT
    4.13 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    4.14 + * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
    4.15 + * version 2 for more details (a copy is included in the LICENSE file that
    4.16 + * accompanied this code).
    4.17 + *
    4.18 + * You should have received a copy of the GNU General Public License version
    4.19 + * 2 along with this work; if not, write to the Free Software Foundation,
    4.20 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
    4.21 + *
    4.22 + */
    4.23 +
    4.24 +/*
    4.25 + * @test
    4.26 + * bug-loongson 7046
    4.27 + * @run main/othervm TestCompileHugeMethod
    4.28 + */
    4.29 +
    4.30 +public class TestCompileHugeMethod {
    4.31 +  public static float f0 = 0.1f;
    4.32 +
    4.33 +  public static void main(String[] args) {
    4.34 +    for (int i = 0; i <= 50000; i++) {
    4.35 +      if (i % 3==0) {
    4.36 +        AHugeMethodIf(true);
    4.37 +        AHugeMethodFor(2);
    4.38 +        AHugeMethodWhile(2);
    4.39 +      } else {
    4.40 +        AHugeMethodIf(false);
    4.41 +        AHugeMethodFor(-1);
    4.42 +        AHugeMethodWhile(-1);
    4.43 +      }
    4.44 +    }
    4.45 +    System.out.println("Hello World");
    4.46 +  }
    4.47 +
    4.48 +  public static long AHugeMethodIf(boolean A){
    4.49 +    long r = (long) f0;
    4.50 +    if (A) {
    4.51 +      r =
    4.52 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
    4.53 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
    4.54 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
    4.55 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
    4.56 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
    4.57 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
    4.58 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
    4.59 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
    4.60 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
    4.61 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
    4.62 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
    4.63 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
    4.64 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
    4.65 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
    4.66 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
    4.67 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
    4.68 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
    4.69 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
    4.70 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
    4.71 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
    4.72 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
    4.73 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
    4.74 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
    4.75 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
    4.76 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
    4.77 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
    4.78 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
    4.79 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
    4.80 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
    4.81 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
    4.82 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
    4.83 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
    4.84 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
    4.85 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
    4.86 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
    4.87 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
    4.88 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
    4.89 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
    4.90 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
    4.91 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
    4.92 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
    4.93 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
    4.94 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
    4.95 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
    4.96 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
    4.97 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
    4.98 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
    4.99 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.100 +        foo(r);
   4.101 +      r =
   4.102 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.103 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.104 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.105 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.106 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.107 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.108 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.109 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.110 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.111 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.112 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.113 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.114 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.115 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.116 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.117 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.118 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.119 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.120 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.121 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.122 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.123 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.124 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.125 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.126 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.127 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.128 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.129 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.130 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.131 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.132 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.133 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.134 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.135 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.136 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.137 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.138 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.139 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.140 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.141 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.142 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.143 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.144 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.145 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.146 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.147 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.148 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.149 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.150 +        foo(r);
   4.151 +      r =
   4.152 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.153 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.154 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.155 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.156 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.157 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.158 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.159 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.160 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.161 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.162 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.163 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.164 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.165 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.166 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.167 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.168 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.169 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.170 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.171 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.172 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.173 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.174 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.175 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.176 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.177 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.178 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.179 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.180 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.181 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.182 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.183 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.184 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.185 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.186 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.187 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.188 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.189 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.190 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.191 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.192 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.193 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.194 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.195 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.196 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.197 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.198 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.199 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.200 +        foo(r);
   4.201 +      r =
   4.202 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.203 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.204 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.205 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.206 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.207 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.208 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.209 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.210 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.211 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.212 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.213 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.214 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.215 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.216 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.217 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.218 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.219 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.220 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.221 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.222 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.223 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.224 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.225 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.226 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.227 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.228 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.229 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.230 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.231 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.232 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.233 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.234 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.235 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.236 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.237 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.238 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.239 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.240 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.241 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.242 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.243 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.244 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.245 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.246 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.247 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.248 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.249 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.250 +        foo(r);
   4.251 +      r =
   4.252 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.253 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.254 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.255 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.256 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.257 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.258 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.259 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.260 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.261 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.262 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.263 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.264 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.265 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.266 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.267 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.268 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.269 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.270 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.271 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.272 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.273 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.274 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.275 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.276 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.277 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.278 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.279 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.280 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.281 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.282 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.283 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.284 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.285 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.286 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.287 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.288 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.289 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.290 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.291 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.292 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.293 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.294 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.295 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.296 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.297 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.298 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.299 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.300 +        foo(r);
   4.301 +      r =
   4.302 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.303 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.304 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.305 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.306 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.307 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.308 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.309 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.310 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.311 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.312 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.313 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.314 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.315 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.316 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.317 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.318 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.319 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.320 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.321 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.322 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.323 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.324 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.325 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.326 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.327 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.328 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.329 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.330 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.331 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.332 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.333 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.334 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.335 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.336 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.337 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.338 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.339 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.340 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.341 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.342 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.343 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.344 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.345 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.346 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.347 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.348 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.349 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.350 +        foo(r);
   4.351 +      r =
   4.352 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.353 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.354 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.355 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.356 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.357 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.358 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.359 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.360 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.361 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.362 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.363 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.364 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.365 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.366 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.367 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.368 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.369 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.370 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.371 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.372 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.373 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.374 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.375 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.376 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.377 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.378 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.379 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.380 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.381 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.382 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.383 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.384 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.385 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.386 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.387 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.388 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.389 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.390 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.391 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.392 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.393 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.394 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.395 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.396 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.397 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.398 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.399 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.400 +        foo(r);
   4.401 +      r =
   4.402 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.403 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.404 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.405 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.406 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.407 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.408 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.409 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.410 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.411 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.412 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.413 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.414 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.415 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.416 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.417 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.418 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.419 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.420 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.421 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.422 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.423 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.424 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.425 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.426 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.427 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.428 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.429 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.430 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.431 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.432 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.433 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.434 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.435 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.436 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.437 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.438 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.439 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.440 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.441 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.442 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.443 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.444 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.445 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.446 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.447 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.448 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.449 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.450 +        foo(r);
   4.451 +      r =
   4.452 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.453 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.454 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.455 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.456 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.457 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.458 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.459 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.460 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.461 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.462 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.463 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.464 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.465 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.466 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.467 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.468 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.469 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.470 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.471 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.472 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.473 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.474 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.475 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.476 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.477 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.478 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.479 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.480 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.481 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.482 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.483 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.484 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.485 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.486 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.487 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.488 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.489 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.490 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.491 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.492 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.493 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.494 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.495 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.496 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.497 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.498 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.499 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.500 +        foo(r);
   4.501 +    } else {
   4.502 +      r = (long) f0;
   4.503 +    }
   4.504 +    return r;
   4.505 +  }
   4.506 +
   4.507 +  public static long AHugeMethodFor(long A){
   4.508 +    long r = (long) f0;
   4.509 +    for  (int j = 0; j < A; j++) {
   4.510 +      r =
   4.511 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.512 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.513 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.514 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.515 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.516 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.517 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.518 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.519 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.520 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.521 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.522 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.523 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.524 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.525 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.526 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.527 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.528 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.529 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.530 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.531 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.532 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.533 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.534 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.535 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.536 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.537 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.538 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.539 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.540 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.541 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.542 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.543 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.544 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.545 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.546 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.547 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.548 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.549 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.550 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.551 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.552 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.553 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.554 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.555 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.556 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.557 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.558 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.559 +        foo(r);
   4.560 +      r =
   4.561 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.562 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.563 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.564 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.565 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.566 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.567 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.568 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.569 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.570 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.571 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.572 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.573 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.574 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.575 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.576 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.577 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.578 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.579 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.580 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.581 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.582 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.583 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.584 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.585 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.586 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.587 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.588 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.589 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.590 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.591 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.592 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.593 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.594 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.595 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.596 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.597 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.598 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.599 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.600 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.601 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.602 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.603 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.604 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.605 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.606 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.607 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.608 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.609 +        foo(r);
   4.610 +      r =
   4.611 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.612 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.613 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.614 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.615 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.616 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.617 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.618 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.619 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.620 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.621 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.622 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.623 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.624 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.625 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.626 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.627 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.628 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.629 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.630 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.631 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.632 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.633 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.634 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.635 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.636 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.637 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.638 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.639 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.640 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.641 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.642 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.643 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.644 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.645 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.646 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.647 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.648 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.649 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.650 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.651 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.652 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.653 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.654 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.655 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.656 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.657 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.658 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.659 +        foo(r);
   4.660 +      r =
   4.661 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.662 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.663 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.664 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.665 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.666 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.667 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.668 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.669 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.670 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.671 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.672 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.673 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.674 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.675 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.676 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.677 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.678 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.679 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.680 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.681 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.682 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.683 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.684 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.685 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.686 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.687 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.688 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.689 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.690 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.691 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.692 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.693 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.694 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.695 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.696 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.697 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.698 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.699 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.700 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.701 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.702 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.703 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.704 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.705 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.706 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.707 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.708 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.709 +        foo(r);
   4.710 +      r =
   4.711 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.712 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.713 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.714 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.715 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.716 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.717 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.718 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.719 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.720 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.721 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.722 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.723 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.724 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.725 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.726 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.727 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.728 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.729 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.730 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.731 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.732 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.733 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.734 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.735 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.736 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.737 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.738 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.739 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.740 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.741 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.742 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.743 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.744 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.745 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.746 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.747 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.748 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.749 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.750 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.751 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.752 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.753 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.754 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.755 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.756 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.757 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.758 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.759 +        foo(r);
   4.760 +      r =
   4.761 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.762 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.763 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.764 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.765 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.766 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.767 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.768 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.769 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.770 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.771 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.772 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.773 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.774 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.775 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.776 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.777 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.778 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.779 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.780 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.781 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.782 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.783 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.784 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.785 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.786 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.787 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.788 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.789 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.790 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.791 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.792 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.793 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.794 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.795 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.796 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.797 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.798 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.799 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.800 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.801 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.802 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.803 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.804 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.805 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.806 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.807 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.808 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.809 +        foo(r);
   4.810 +      r =
   4.811 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.812 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.813 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.814 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.815 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.816 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.817 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.818 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.819 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.820 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.821 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.822 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.823 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.824 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.825 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.826 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.827 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.828 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.829 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.830 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.831 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.832 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.833 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.834 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.835 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.836 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.837 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.838 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.839 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.840 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.841 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.842 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.843 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.844 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.845 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.846 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.847 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.848 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.849 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.850 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.851 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.852 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.853 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.854 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.855 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.856 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.857 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.858 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.859 +        foo(r);
   4.860 +      r =
   4.861 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.862 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.863 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.864 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.865 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.866 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.867 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.868 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.869 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.870 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.871 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.872 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.873 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.874 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.875 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.876 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.877 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.878 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.879 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.880 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.881 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.882 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.883 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.884 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.885 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.886 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.887 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.888 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.889 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.890 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.891 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.892 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.893 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.894 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.895 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.896 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.897 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.898 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.899 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.900 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.901 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.902 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.903 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.904 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.905 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.906 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.907 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.908 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.909 +        foo(r);
   4.910 +      r =
   4.911 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.912 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.913 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.914 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.915 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.916 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.917 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.918 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.919 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.920 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.921 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.922 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.923 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.924 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.925 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.926 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.927 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.928 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.929 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.930 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.931 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.932 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.933 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.934 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.935 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.936 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.937 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.938 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.939 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.940 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.941 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.942 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.943 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.944 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.945 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.946 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.947 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.948 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.949 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.950 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.951 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.952 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.953 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.954 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.955 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.956 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.957 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.958 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.959 +        foo(r);
   4.960 +    }
   4.961 +    return r;
   4.962 +  }
   4.963 +
   4.964 +  public static long AHugeMethodWhile(int A){
   4.965 +    long r = (long) f0;
   4.966 +    while (A > 0) {
   4.967 +      r =
   4.968 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.969 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.970 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.971 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.972 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.973 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.974 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.975 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.976 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.977 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.978 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.979 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.980 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.981 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.982 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.983 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.984 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.985 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.986 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.987 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.988 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.989 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.990 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.991 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.992 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.993 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.994 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.995 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.996 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.997 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.998 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
   4.999 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1000 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1001 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1002 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1003 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1004 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1005 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1006 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1007 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1008 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1009 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1010 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1011 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1012 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1013 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1014 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1015 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1016 +        foo(r);
  4.1017 +      r =
  4.1018 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1019 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1020 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1021 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1022 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1023 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1024 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1025 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1026 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1027 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1028 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1029 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1030 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1031 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1032 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1033 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1034 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1035 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1036 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1037 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1038 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1039 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1040 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1041 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1042 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1043 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1044 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1045 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1046 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1047 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1048 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1049 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1050 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1051 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1052 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1053 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1054 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1055 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1056 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1057 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1058 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1059 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1060 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1061 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1062 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1063 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1064 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1065 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1066 +        foo(r);
  4.1067 +      r =
  4.1068 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1069 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1070 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1071 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1072 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1073 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1074 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1075 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1076 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1077 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1078 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1079 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1080 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1081 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1082 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1083 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1084 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1085 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1086 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1087 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1088 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1089 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1090 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1091 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1092 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1093 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1094 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1095 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1096 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1097 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1098 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1099 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1100 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1101 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1102 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1103 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1104 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1105 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1106 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1107 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1108 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1109 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1110 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1111 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1112 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1113 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1114 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1115 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1116 +        foo(r);
  4.1117 +      r =
  4.1118 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1119 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1120 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1121 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1122 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1123 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1124 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1125 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1126 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1127 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1128 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1129 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1130 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1131 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1132 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1133 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1134 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1135 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1136 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1137 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1138 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1139 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1140 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1141 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1142 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1143 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1144 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1145 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1146 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1147 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1148 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1149 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1150 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1151 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1152 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1153 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1154 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1155 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1156 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1157 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1158 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1159 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1160 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1161 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1162 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1163 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1164 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1165 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1166 +        foo(r);
  4.1167 +      r =
  4.1168 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1169 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1170 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1171 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1172 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1173 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1174 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1175 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1176 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1177 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1178 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1179 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1180 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1181 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1182 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1183 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1184 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1185 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1186 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1187 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1188 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1189 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1190 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1191 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1192 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1193 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1194 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1195 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1196 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1197 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1198 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1199 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1200 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1201 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1202 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1203 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1204 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1205 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1206 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1207 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1208 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1209 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1210 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1211 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1212 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1213 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1214 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1215 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1216 +        foo(r);
  4.1217 +      r =
  4.1218 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1219 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1220 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1221 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1222 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1223 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1224 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1225 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1226 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1227 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1228 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1229 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1230 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1231 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1232 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1233 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1234 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1235 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1236 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1237 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1238 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1239 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1240 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1241 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1242 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1243 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1244 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1245 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1246 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1247 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1248 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1249 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1250 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1251 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1252 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1253 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1254 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1255 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1256 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1257 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1258 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1259 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1260 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1261 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1262 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1263 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1264 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1265 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1266 +        foo(r);
  4.1267 +      r =
  4.1268 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1269 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1270 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1271 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1272 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1273 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1274 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1275 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1276 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1277 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1278 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1279 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1280 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1281 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1282 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1283 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1284 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1285 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1286 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1287 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1288 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1289 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1290 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1291 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1292 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1293 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1294 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1295 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1296 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1297 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1298 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1299 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1300 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1301 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1302 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1303 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1304 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1305 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1306 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1307 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1308 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1309 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1310 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1311 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1312 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1313 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1314 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1315 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1316 +        foo(r);
  4.1317 +      r =
  4.1318 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1319 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1320 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1321 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1322 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1323 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1324 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1325 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1326 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1327 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1328 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1329 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1330 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1331 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1332 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1333 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1334 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1335 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1336 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1337 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1338 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1339 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1340 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1341 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1342 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1343 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1344 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1345 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1346 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1347 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1348 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1349 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1350 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1351 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1352 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1353 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1354 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1355 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1356 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1357 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1358 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1359 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1360 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1361 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1362 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1363 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1364 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1365 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1366 +        foo(r);
  4.1367 +      r =
  4.1368 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1369 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1370 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1371 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1372 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1373 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1374 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1375 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1376 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1377 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1378 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1379 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1380 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1381 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1382 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1383 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1384 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1385 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1386 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1387 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1388 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1389 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1390 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1391 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1392 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1393 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1394 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1395 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1396 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1397 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1398 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1399 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1400 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1401 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1402 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1403 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1404 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1405 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1406 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1407 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1408 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1409 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1410 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1411 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1412 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1413 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1414 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1415 +        (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1416 +        foo(r);
  4.1417 +      A --;
  4.1418 +    }
  4.1419 +    return r;
  4.1420 +  }
  4.1421 +
  4.1422 +  public static final long  foo(long A){
  4.1423 +    //return A;
  4.1424 +    return
  4.1425 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1426 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1427 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1428 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1429 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1430 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1431 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1432 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1433 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1434 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1435 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1436 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1437 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1438 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1439 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1440 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1441 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1442 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1443 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1444 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1445 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1446 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1447 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1448 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1449 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1450 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1451 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1452 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1453 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1454 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1455 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1456 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1457 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1458 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1459 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1460 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1461 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1462 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1463 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1464 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1465 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1466 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1467 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1468 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1469 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1470 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1471 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1472 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1473 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1474 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1475 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1476 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1477 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1478 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1479 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1480 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1481 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1482 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1483 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1484 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1485 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1486 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1487 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1488 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1489 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1490 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1491 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1492 +      (long) (float) (int) (double) (long) (float) (int) (double) (long) (float) (int) (double)
  4.1493 +      A;
  4.1494 +  }
  4.1495 +}

mercurial