JSBool more, ok;
JSBool ok;
js_DecompileFunction(JSPrinter *jp, JSFunction *fun, JSBool newlines){    JSScope *scope, *oldscope;    JSScopeProperty *sprop, *snext;    JSBool more, ok;    JSAtom *atom;    uintN indent;    if (newlines) {	js_puts(jp, "\n");	js_printf(jp, "\t");    }    js_printf(jp, "function %s(", fun->atom ? ATOM_BYTES(fun->atom) : "");    if (fun->script && fun->object) {	scope = (JSScope *)fun->object->map;	for (sprop = scope->props; sprop; sprop = snext) {	    snext = sprop->next;	    if (sprop->getter != js_GetArgument)		continue;	    more = (snext && snext->getter == js_GetArgument);	    atom = sym_atom(sprop->symbols);	    js_printf(jp, "%s%s", ATOM_BYTES(atom), more ? ", " : "");	    if (!more)	    	break;	}    }    js_puts(jp, ") {\n");    indent = jp->indent;    jp->indent += 4;    if (fun->script) {	oldscope = jp->scope;	jp->scope = scope;	ok = js_DecompileScript(jp, fun->script);	jp->scope = oldscope;	if (!ok) {	    jp->indent = indent;	    return JS_FALSE;	}    } else {	js_printf(jp, "\t[native code]\n");    }    jp->indent -= 4;    js_printf(jp, "\t}");    if (newlines)	js_puts(jp, "\n");    return JS_TRUE;}