Index: /trunk/Decompiler.class.php
===================================================================
--- /trunk/Decompiler.class.php	(revision 717)
+++ /trunk/Decompiler.class.php	(revision 720)
@@ -573,4 +573,5 @@
 		// func call
 		$EX['object'] = null;
+		$EX['called_scope'] = null;
 		$EX['fbc'] = null;
 		$EX['argstack'] = array();
@@ -783,6 +784,7 @@
 				switch ($opc) {
 				case XC_NEW: // {{{
-					array_push($EX['arg_types_stack'], array($EX['object'], $EX['fbc']));
+					array_push($EX['arg_types_stack'], array($EX['fbc'], $EX['object'], $EX['called_scope']));
 					$EX['object'] = (int) $res['var'];
+					$EX['called_scope'] = null;
 					$EX['fbc'] = 'new ' . $this->unquoteName($this->getOpVal($op1, $EX));
 					if (PHP_VERSION < 5) {
@@ -1053,4 +1055,5 @@
 					break;
 					// }}}
+				case XC_INIT_STATIC_METHOD_CALL:
 				case XC_INIT_METHOD_CALL:
 				case XC_INIT_FCALL_BY_FUNC:
@@ -1059,11 +1062,23 @@
 						break;
 					}
-					array_push($EX['arg_types_stack'], array($EX['object'], $EX['fbc']));
-					if ($opc == XC_INIT_METHOD_CALL || $op1['op_type'] != XC_IS_UNUSED) {
+					array_push($EX['arg_types_stack'], array($EX['fbc'], $EX['object'], $EX['called_scope']));
+					if ($opc == XC_INIT_STATIC_METHOD_CALL) {
+						$EX['object'] = null;
+						$EX['called_scope'] = $op1['var'];
+					}
+					else if ($opc == XC_INIT_METHOD_CALL || $op1['op_type'] != XC_IS_UNUSED) {
 						$obj = $this->getOpVal($op1, $EX);
 						if (!isset($obj)) {
 							$obj = '$this';
 						}
-						$EX['object'] = $obj;
+						// looks like PHP4 only
+						if (isset($op1['constant'])) {
+							$EX['object'] = null;
+							$EX['called_scope'] = $this->unquoteName($obj);
+						}
+						else {
+							$EX['object'] = $obj;
+							$EX['called_scope'] = null;
+						}
 						if ($res['op_type'] != XC_IS_UNUSED) {
 							$resvar = '$obj call$';
@@ -1072,4 +1087,5 @@
 					else {
 						$EX['object'] = null;
+						$EX['called_scope'] = null;
 					}
 
@@ -1106,4 +1122,5 @@
 					$resvar =
 						(isset($object) ? $object . '->' : '' )
+						. (isset($EX['called_scope']) ? $EX['called_scope'] . '::' : '' )
 						. $fname . "($args)";
 					unset($args);
@@ -1113,5 +1130,5 @@
 						$resvar = null;
 					}
-					list($EX['object'], $EX['fbc']) = array_pop($EX['arg_types_stack']);
+					list($EX['fbc'], $EX['object'], $EX['called_scope']) = array_pop($EX['arg_types_stack']);
 					break;
 					// }}}
@@ -1913,4 +1930,5 @@
 	'XC_ISSET_ISEMPTY_PROP_OBJ' => -1,
 	'XC_ISSET_ISEMPTY_VAR' => -1,
+	'XC_INIT_STATIC_METHOD_CALL' => -1,
 	'XC_INIT_METHOD_CALL' => -1,
 	'XC_VERIFY_ABSTRACT_CLASS' => -1,
