Index: /trunk/decompilesample.php
===================================================================
--- /trunk/decompilesample.php	(revision 805)
+++ /trunk/decompilesample.php	(revision 807)
@@ -302,5 +302,7 @@
 } while (false);
 
-for ($i = 1; $i < 10; ++$i) {
+$i = 1;
+
+for (; $i < 10; ++$i) {
 	echo $i;
 	break;
@@ -427,5 +429,7 @@
 goto a;
 
-for ($i = 1; $i <= 2; ++$i) {
+$i = 1;
+
+for (; $i <= 2; ++$i) {
 	goto a;
 }
Index: /trunk/Decompiler.class.php
===================================================================
--- /trunk/Decompiler.class.php	(revision 806)
+++ /trunk/Decompiler.class.php	(revision 807)
@@ -782,4 +782,43 @@
 		// }}}
 		// {{{ try/catch
+		if (!empty($firstOp['jmpins']) && $opcodes[$firstOp['jmpins'][0]]['opcode'] == XC_JMP
+		 && $lastOp['opcode'] == XC_JMP && !empty($lastOp['jmpouts']) && $lastOp['jmpouts'][0] <= $firstOp['jmpins'][0]
+		 && !empty($opcodes[$range[1] + 1]['jmpins']) && $opcodes[$opcodes[$range[1] + 1]['jmpins'][0]]['opcode'] == XC_JMPZNZ
+		) {
+			$nextRange = array($lastOp['jmpouts'][0], $firstOp['jmpins'][0]);
+			$conditionRange = array($range[0], $nextRange[0] - 1);
+			$this->removeJmpInfo($EX, $conditionRange[1]);
+			$bodyRange = array($nextRange[1], $range[1]);
+			$this->removeJmpInfo($EX, $bodyRange[1]);
+
+			$initial = '';
+			$this->dasmBasicBlock($EX, $conditionRange, $indent . INDENT);
+			$conditionCodes = array();
+			for ($i = $conditionRange[0]; $i <= $conditionRange[1]; ++$i) {
+				if (isset($opcodes[$i]['php'])) {
+					$conditionCodes[] = str($opcodes[$i]['php'], $EX);
+				}
+			}
+			$conditionCodes[] = str($this->getOpVal($opcodes[$conditionRange[1]]['op1'], $EX), $EX);
+			if (implode(',', $conditionCodes) == 'true') {
+				$conditionCodes = array();
+			}
+
+			$this->dasmBasicBlock($EX, $nextRange, $indent . INDENT);
+			$nextCodes = array();
+			for ($i = $nextRange[0]; $i <= $nextRange[1]; ++$i) {
+				if (isset($opcodes[$i]['php'])) {
+					$nextCodes[] = str($opcodes[$i]['php'], $EX);
+				}
+			}
+			$this->beginComplexBlock($EX);
+			echo $indent, 'for (', str($initial, $EX), '; ', implode(', ', $conditionCodes), '; ', implode(', ', $nextCodes), ') ', '{', PHP_EOL;
+			$this->recognizeAndDecompileClosedBlocks($EX, $bodyRange, $indent . INDENT);
+			echo $indent, '}', PHP_EOL;
+			$this->endComplexBlock($EX);
+			return;
+		}
+		// }}}
+		// {{{ try/catch
 		if (!empty($firstOp['jmpins']) && !empty($opcodes[$firstOp['jmpins'][0]]['isCatchBegin'])) {
 			$catchBlocks = array();
