cleanup a bit
diff --git a/Python/ceval.c b/Python/ceval.c
index ae9ab47..9be0bd6 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -3041,6 +3041,7 @@
 	register PyObject **fastlocals, **freevars;
 	PyThreadState *tstate = PyThreadState_GET();
 	PyObject *x, *u;
+	int total_args = co->co_argcount + co->co_kwonlyargcount;
 
 	if (globals == NULL) {
 		PyErr_SetString(PyExc_SystemError,
@@ -3057,9 +3058,7 @@
 	fastlocals = f->f_localsplus;
 	freevars = f->f_localsplus + co->co_nlocals;
 
-	if (co->co_argcount > 0 ||
-	    co->co_kwonlyargcount > 0 ||
-	    co->co_flags & (CO_VARARGS | CO_VARKEYWORDS)) {
+	if (total_args || co->co_flags & (CO_VARARGS | CO_VARKEYWORDS)) {
 		int i;
 		int n = argcount;
 		PyObject *kwdict = NULL;
@@ -3067,7 +3066,7 @@
 			kwdict = PyDict_New();
 			if (kwdict == NULL)
 				goto fail;
-			i = co->co_argcount + co->co_kwonlyargcount;
+			i = total_args;
 			if (co->co_flags & CO_VARARGS)
 				i++;
 			SETLOCAL(i, kwdict);
@@ -3095,7 +3094,7 @@
 			u = PyTuple_New(argcount - n);
 			if (u == NULL)
 				goto fail;
-			SETLOCAL(co->co_argcount + co->co_kwonlyargcount, u);
+			SETLOCAL(total_args, u);
 			for (i = n; i < argcount; i++) {
 				x = args[i];
 				Py_INCREF(x);
@@ -3116,17 +3115,13 @@
 			/* Speed hack: do raw pointer compares. As names are
 			   normally interned this should almost always hit. */
 			co_varnames = ((PyTupleObject *)(co->co_varnames))->ob_item;
-			for (j = 0;
-			     j < co->co_argcount + co->co_kwonlyargcount;
-			     j++) {
+			for (j = 0; j < total_args; j++) {
 				PyObject *nm = co_varnames[j];
 				if (nm == keyword)
 					goto kw_found;
 			}
 			/* Slow fallback, just in case */
-			for (j = 0;
-			     j < co->co_argcount + co->co_kwonlyargcount;
-			     j++) {
+			for (j = 0; j < total_args; j++) {
 				PyObject *nm = co_varnames[j];
 				int cmp = PyObject_RichCompareBool(
 					keyword, nm, Py_EQ);
@@ -3138,15 +3133,13 @@
 			/* Check errors from Compare */
 			if (PyErr_Occurred())
 				goto fail;
-			if (j >= co->co_argcount + co->co_kwonlyargcount) {
-				if (kwdict == NULL) {
-					PyErr_Format(PyExc_TypeError,
-					    "%U() got an unexpected "
-					    "keyword argument '%S'",
-					    co->co_name,
-					    keyword);
-					goto fail;
-				}
+			if (j >= total_args && kwdict == NULL) {
+				PyErr_Format(PyExc_TypeError,
+					     "%U() got an unexpected "
+					     "keyword argument '%S'",
+					     co->co_name,
+					     keyword);
+				goto fail;
 			}
 			PyDict_SetItem(kwdict, keyword, value);
 			continue;
@@ -3164,9 +3157,7 @@
 			SETLOCAL(j, value);
 		}
 		if (co->co_kwonlyargcount > 0) {
-			for (i = co->co_argcount;
-			     i < co->co_argcount + co->co_kwonlyargcount;
-			     i++) {
+			for (i = co->co_argcount; i < total_args; i++) {
 				PyObject *name, *def;
 				if (GETLOCAL(i) != NULL)
 					continue;
@@ -3232,7 +3223,7 @@
 		Py_UNICODE *cellname, *argname;
 		PyObject *c;
 
-		nargs = co->co_argcount + co->co_kwonlyargcount;
+		nargs = total_args;
 		if (co->co_flags & CO_VARARGS)
 			nargs++;
 		if (co->co_flags & CO_VARKEYWORDS)