[pypy-svn] r69010 - in pypy/branch/msvc-asmgcroot/pypy/translator/c/gcc: . test/msvc

afa at codespeak.net afa at codespeak.net
Thu Nov 5 23:13:50 CET 2009


Author: afa
Date: Thu Nov  5 23:13:47 2009
New Revision: 69010

Modified:
   pypy/branch/msvc-asmgcroot/pypy/translator/c/gcc/instruction.py   (contents, props changed)
   pypy/branch/msvc-asmgcroot/pypy/translator/c/gcc/test/msvc/track0.s   (contents, props changed)
   pypy/branch/msvc-asmgcroot/pypy/translator/c/gcc/test/msvc/track1.s   (contents, props changed)
   pypy/branch/msvc-asmgcroot/pypy/translator/c/gcc/test/msvc/track2.s   (contents, props changed)
   pypy/branch/msvc-asmgcroot/pypy/translator/c/gcc/test/msvc/track8.s   (contents, props changed)
   pypy/branch/msvc-asmgcroot/pypy/translator/c/gcc/test/msvc/track_switch0.s   (contents, props changed)
Log:
fixeol

Modified: pypy/branch/msvc-asmgcroot/pypy/translator/c/gcc/instruction.py
==============================================================================
--- pypy/branch/msvc-asmgcroot/pypy/translator/c/gcc/instruction.py	(original)
+++ pypy/branch/msvc-asmgcroot/pypy/translator/c/gcc/instruction.py	Thu Nov  5 23:13:47 2009
@@ -1,223 +1,223 @@
-LOC_NOWHERE   = 0
-LOC_REG       = 1
-LOC_EBP_BASED = 2
-LOC_ESP_BASED = 3
-LOC_MASK      = 0x03
-
-def frameloc(base, offset):
-    assert base in (LOC_EBP_BASED, LOC_ESP_BASED)
-    assert offset % 4 == 0
-    return base | offset
-
-
-class SomeNewValue(object):
-    pass
-somenewvalue = SomeNewValue()
-
-class LocalVar(object):
-    # A local variable location at position 'ofs_from_frame_end',
-    # which is counted from the end of the stack frame (so it is always
-    # negative, unless it refers to arguments of the current function).
-    def __init__(self, ofs_from_frame_end, hint=None):
-        self.ofs_from_frame_end = ofs_from_frame_end
-        self.hint = hint
-
-    def __repr__(self):
-        return '<%+d;%s>' % (self.ofs_from_frame_end, self.hint or 'e*p')
-
-    def __hash__(self):
-        return hash(self.ofs_from_frame_end)
-
-    def __cmp__(self, other):
-        if isinstance(other, LocalVar):
-            return cmp(self.ofs_from_frame_end, other.ofs_from_frame_end)
-        else:
-            return 1
-
-    def getlocation(self, framesize, uses_frame_pointer):
-        if (self.hint == 'esp' or not uses_frame_pointer
-            or self.ofs_from_frame_end % 2 != 0):
-            # try to use esp-relative addressing
-            ofs_from_esp = framesize + self.ofs_from_frame_end
-            if ofs_from_esp % 2 == 0:
-                return frameloc(LOC_ESP_BASED, ofs_from_esp)
-            # we can get an odd value if the framesize is marked as bogus
-            # by visit_andl()
-        assert uses_frame_pointer
-        ofs_from_ebp = self.ofs_from_frame_end + 4
-        return frameloc(LOC_EBP_BASED, ofs_from_ebp)
-
-
-class Insn(object):
-    _args_ = []
-    _locals_ = []
-
-    def __repr__(self):
-        return '%s(%s)' % (self.__class__.__name__,
-                           ', '.join([str(getattr(self, name))
-                                      for name in self._args_]))
-    def requestgcroots(self, tracker):
-        return {}
-
-    def source_of(self, localvar, tag):
-        return localvar
-
-    def all_sources_of(self, localvar):
-        return [localvar]
-
-class Label(Insn):
-    _args_ = ['label', 'lineno']
-    def __init__(self, label, lineno):
-        self.label = label
-        self.lineno = lineno
-        self.previous_insns = []   # all insns that jump (or fallthrough) here
-
-class InsnFunctionStart(Insn):
-    framesize = 0
-    previous_insns = ()
-    def __init__(self, registers):
-        self.arguments = {}
-        for reg in registers:
-            self.arguments[reg] = somenewvalue
-
-    def source_of(self, localvar, tag):
-        if localvar not in self.arguments:
-            if localvar in ('%eax', '%edx', '%ecx'):
-                # xxx this might show a bug in trackgcroot.py failing to
-                # figure out which instruction stored a value in these
-                # registers.  However, this case also occurs when the
-                # the function's calling convention was optimized by gcc:
-                # the 3 registers above are then used to pass arguments
-                pass
-            else:
-                assert (isinstance(localvar, LocalVar) and
-                        localvar.ofs_from_frame_end > 0), (
-                    "must come from an argument to the function, got %r" %
-                    (localvar,))
-            self.arguments[localvar] = somenewvalue
-        return self.arguments[localvar]
-
-    def all_sources_of(self, localvar):
-        return []
-
-class InsnSetLocal(Insn):
-    _args_ = ['target', 'sources']
-    _locals_ = ['target', 'sources']
-
-    def __init__(self, target, sources=()):
-        self.target = target
-        self.sources = sources
-
-    def source_of(self, localvar, tag):
-        if localvar == self.target:
-            return somenewvalue
-        return localvar
-
-    def all_sources_of(self, localvar):
-        if localvar == self.target:
-            return self.sources
-        return [localvar]
-
-class InsnCopyLocal(Insn):
-    _args_ = ['source', 'target']
-    _locals_ = ['source', 'target']
-
-    def __init__(self, source, target):
-        self.source = source
-        self.target = target
-
-    def source_of(self, localvar, tag):
-        if localvar == self.target:
-            return self.source
-        return localvar
-
-    def all_sources_of(self, localvar):
-        if localvar == self.target:
-            return [self.source]
-        return [localvar]
-
-class InsnStackAdjust(Insn):
-    _args_ = ['delta']
-    def __init__(self, delta):
-        assert delta % 2 == 0     # should be "% 4", but there is the special
-        self.delta = delta        # case of 'pushw' to handle
-
-class InsnCannotFollowEsp(InsnStackAdjust):
-    def __init__(self):
-        self.delta = -7     # use an odd value as marker
-
-class InsnStop(Insn):
-    pass
-
-class InsnRet(InsnStop):
-    framesize = 0
-    def __init__(self, registers):
-        self.registers = registers
-
-    def requestgcroots(self, tracker):
-        # no need to track the value of these registers in the caller
-        # function if we are the main(), or if we are flagged as a
-        # "bottom" function (a callback from C code)
-        if tracker.is_stack_bottom:
-            return {}
-        else:
-            return dict(zip(self.registers, self.registers))
-
-class InsnCall(Insn):
-    _args_ = ['lineno', 'gcroots']
-    def __init__(self, lineno):
-        # 'gcroots' is a dict built by side-effect during the call to
-        # FunctionGcRootTracker.trackgcroots().  Its meaning is as
-        # follows: the keys are the locations that contain gc roots
-        # (register names or LocalVar instances).  The value
-        # corresponding to a key is the "tag", which is None for a
-        # normal gc root, or else the name of a callee-saved register.
-        # In the latter case it means that this is only a gc root if the
-        # corresponding register in the caller was really containing a
-        # gc pointer.  A typical example:
-        #
-        #   InsnCall({LocalVar(-8)': None,
-        #             '%esi': '%esi',
-        #             LocalVar(-12)': '%ebx'})
-        #
-        # means that the value at -8 from the frame end is a gc root
-        # across this call; that %esi is a gc root if it was in the
-        # caller (typically because %esi is not modified at all in the
-        # current function); and that the value at -12 from the frame
-        # end is a gc root if %ebx was a gc root in the caller
-        # (typically because the current function saves and restores
-        # %ebx from there in the prologue and epilogue).
-        self.gcroots = {}
-        self.lineno = lineno
-
-    def source_of(self, localvar, tag):
-        tag1 = self.gcroots.setdefault(localvar, tag)
-        assert tag1 == tag, (
-            "conflicting entries for InsnCall.gcroots[%s]:\n%r and %r" % (
-            localvar, tag1, tag))
-        return localvar
-
-    def all_sources_of(self, localvar):
-        return [localvar]
-
-class InsnGCROOT(Insn):
-    _args_ = ['loc']
-    _locals_ = ['loc']
-    def __init__(self, loc):
-        self.loc = loc
-    def requestgcroots(self, tracker):
-        return {self.loc: None}
-
-class InsnPrologue(Insn):
-    def __setattr__(self, attr, value):
-        if attr == 'framesize':
-            assert value == 4, ("unrecognized function prologue - "
-                                "only supports push %ebp; movl %esp, %ebp")
-        Insn.__setattr__(self, attr, value)
-
-class InsnEpilogue(Insn):
-    def __init__(self, framesize=None):
-        if framesize is not None:
-            self.framesize = framesize
-
-
+LOC_NOWHERE   = 0
+LOC_REG       = 1
+LOC_EBP_BASED = 2
+LOC_ESP_BASED = 3
+LOC_MASK      = 0x03
+
+def frameloc(base, offset):
+    assert base in (LOC_EBP_BASED, LOC_ESP_BASED)
+    assert offset % 4 == 0
+    return base | offset
+
+
+class SomeNewValue(object):
+    pass
+somenewvalue = SomeNewValue()
+
+class LocalVar(object):
+    # A local variable location at position 'ofs_from_frame_end',
+    # which is counted from the end of the stack frame (so it is always
+    # negative, unless it refers to arguments of the current function).
+    def __init__(self, ofs_from_frame_end, hint=None):
+        self.ofs_from_frame_end = ofs_from_frame_end
+        self.hint = hint
+
+    def __repr__(self):
+        return '<%+d;%s>' % (self.ofs_from_frame_end, self.hint or 'e*p')
+
+    def __hash__(self):
+        return hash(self.ofs_from_frame_end)
+
+    def __cmp__(self, other):
+        if isinstance(other, LocalVar):
+            return cmp(self.ofs_from_frame_end, other.ofs_from_frame_end)
+        else:
+            return 1
+
+    def getlocation(self, framesize, uses_frame_pointer):
+        if (self.hint == 'esp' or not uses_frame_pointer
+            or self.ofs_from_frame_end % 2 != 0):
+            # try to use esp-relative addressing
+            ofs_from_esp = framesize + self.ofs_from_frame_end
+            if ofs_from_esp % 2 == 0:
+                return frameloc(LOC_ESP_BASED, ofs_from_esp)
+            # we can get an odd value if the framesize is marked as bogus
+            # by visit_andl()
+        assert uses_frame_pointer
+        ofs_from_ebp = self.ofs_from_frame_end + 4
+        return frameloc(LOC_EBP_BASED, ofs_from_ebp)
+
+
+class Insn(object):
+    _args_ = []
+    _locals_ = []
+
+    def __repr__(self):
+        return '%s(%s)' % (self.__class__.__name__,
+                           ', '.join([str(getattr(self, name))
+                                      for name in self._args_]))
+    def requestgcroots(self, tracker):
+        return {}
+
+    def source_of(self, localvar, tag):
+        return localvar
+
+    def all_sources_of(self, localvar):
+        return [localvar]
+
+class Label(Insn):
+    _args_ = ['label', 'lineno']
+    def __init__(self, label, lineno):
+        self.label = label
+        self.lineno = lineno
+        self.previous_insns = []   # all insns that jump (or fallthrough) here
+
+class InsnFunctionStart(Insn):
+    framesize = 0
+    previous_insns = ()
+    def __init__(self, registers):
+        self.arguments = {}
+        for reg in registers:
+            self.arguments[reg] = somenewvalue
+
+    def source_of(self, localvar, tag):
+        if localvar not in self.arguments:
+            if localvar in ('%eax', '%edx', '%ecx'):
+                # xxx this might show a bug in trackgcroot.py failing to
+                # figure out which instruction stored a value in these
+                # registers.  However, this case also occurs when the
+                # the function's calling convention was optimized by gcc:
+                # the 3 registers above are then used to pass arguments
+                pass
+            else:
+                assert (isinstance(localvar, LocalVar) and
+                        localvar.ofs_from_frame_end > 0), (
+                    "must come from an argument to the function, got %r" %
+                    (localvar,))
+            self.arguments[localvar] = somenewvalue
+        return self.arguments[localvar]
+
+    def all_sources_of(self, localvar):
+        return []
+
+class InsnSetLocal(Insn):
+    _args_ = ['target', 'sources']
+    _locals_ = ['target', 'sources']
+
+    def __init__(self, target, sources=()):
+        self.target = target
+        self.sources = sources
+
+    def source_of(self, localvar, tag):
+        if localvar == self.target:
+            return somenewvalue
+        return localvar
+
+    def all_sources_of(self, localvar):
+        if localvar == self.target:
+            return self.sources
+        return [localvar]
+
+class InsnCopyLocal(Insn):
+    _args_ = ['source', 'target']
+    _locals_ = ['source', 'target']
+
+    def __init__(self, source, target):
+        self.source = source
+        self.target = target
+
+    def source_of(self, localvar, tag):
+        if localvar == self.target:
+            return self.source
+        return localvar
+
+    def all_sources_of(self, localvar):
+        if localvar == self.target:
+            return [self.source]
+        return [localvar]
+
+class InsnStackAdjust(Insn):
+    _args_ = ['delta']
+    def __init__(self, delta):
+        assert delta % 2 == 0     # should be "% 4", but there is the special
+        self.delta = delta        # case of 'pushw' to handle
+
+class InsnCannotFollowEsp(InsnStackAdjust):
+    def __init__(self):
+        self.delta = -7     # use an odd value as marker
+
+class InsnStop(Insn):
+    pass
+
+class InsnRet(InsnStop):
+    framesize = 0
+    def __init__(self, registers):
+        self.registers = registers
+
+    def requestgcroots(self, tracker):
+        # no need to track the value of these registers in the caller
+        # function if we are the main(), or if we are flagged as a
+        # "bottom" function (a callback from C code)
+        if tracker.is_stack_bottom:
+            return {}
+        else:
+            return dict(zip(self.registers, self.registers))
+
+class InsnCall(Insn):
+    _args_ = ['lineno', 'gcroots']
+    def __init__(self, lineno):
+        # 'gcroots' is a dict built by side-effect during the call to
+        # FunctionGcRootTracker.trackgcroots().  Its meaning is as
+        # follows: the keys are the locations that contain gc roots
+        # (register names or LocalVar instances).  The value
+        # corresponding to a key is the "tag", which is None for a
+        # normal gc root, or else the name of a callee-saved register.
+        # In the latter case it means that this is only a gc root if the
+        # corresponding register in the caller was really containing a
+        # gc pointer.  A typical example:
+        #
+        #   InsnCall({LocalVar(-8)': None,
+        #             '%esi': '%esi',
+        #             LocalVar(-12)': '%ebx'})
+        #
+        # means that the value at -8 from the frame end is a gc root
+        # across this call; that %esi is a gc root if it was in the
+        # caller (typically because %esi is not modified at all in the
+        # current function); and that the value at -12 from the frame
+        # end is a gc root if %ebx was a gc root in the caller
+        # (typically because the current function saves and restores
+        # %ebx from there in the prologue and epilogue).
+        self.gcroots = {}
+        self.lineno = lineno
+
+    def source_of(self, localvar, tag):
+        tag1 = self.gcroots.setdefault(localvar, tag)
+        assert tag1 == tag, (
+            "conflicting entries for InsnCall.gcroots[%s]:\n%r and %r" % (
+            localvar, tag1, tag))
+        return localvar
+
+    def all_sources_of(self, localvar):
+        return [localvar]
+
+class InsnGCROOT(Insn):
+    _args_ = ['loc']
+    _locals_ = ['loc']
+    def __init__(self, loc):
+        self.loc = loc
+    def requestgcroots(self, tracker):
+        return {self.loc: None}
+
+class InsnPrologue(Insn):
+    def __setattr__(self, attr, value):
+        if attr == 'framesize':
+            assert value == 4, ("unrecognized function prologue - "
+                                "only supports push %ebp; movl %esp, %ebp")
+        Insn.__setattr__(self, attr, value)
+
+class InsnEpilogue(Insn):
+    def __init__(self, framesize=None):
+        if framesize is not None:
+            self.framesize = framesize
+
+

Modified: pypy/branch/msvc-asmgcroot/pypy/translator/c/gcc/test/msvc/track0.s
==============================================================================
--- pypy/branch/msvc-asmgcroot/pypy/translator/c/gcc/test/msvc/track0.s	(original)
+++ pypy/branch/msvc-asmgcroot/pypy/translator/c/gcc/test/msvc/track0.s	Thu Nov  5 23:13:47 2009
@@ -1,282 +1,282 @@
-; Function compile flags: /Ogtpy
-;	COMDAT _pypy_g_ll_join_strs__Signed_arrayPtr
-_TEXT	SEGMENT
-_l_result_2$ = -8					; size = 4
-_l_v405$ = -4						; size = 4
-_l_num_items_0$ = 8					; size = 4
-_l_items_2$ = 12					; size = 4
-_pypy_g_ll_join_strs__Signed_arrayPtr PROC		; COMDAT
-
-; 1457 : struct pypy_rpy_string0 *pypy_g_ll_join_strs__Signed_arrayPtr(long l_num_items_0, struct pypy_array0 *l_items_2) {
-
-	sub	esp, 8
-	push	ebx
-	push	ebp
-	push	esi
-
-; 1458 : 	long l_i_22; long l_i_23; long l_res_index_0;
-; 1459 : 	struct pypy_rpy_string0 *l_result_2; bool_t l_v403; bool_t l_v404;
-; 1460 : 	bool_t l_v409; bool_t l_v410; bool_t l_v411; long l_v402;
-; 1461 : 	long l_v414; long l_v417; long l_v418; long l_v421; long l_v422;
-; 1462 : 	long l_v423; struct pypy_object_vtable0 *l_v408;
-; 1463 : 	struct pypy_rpy_string0 *l_v412; struct pypy_rpy_string0 *l_v413;
-; 1464 : 	struct pypy_rpy_string0 *l_v415; struct pypy_rpy_string0 *l_v419;
-; 1465 : 	struct pypy_rpy_string0 *l_v420; struct pypy_rpy_string0 *l_v424;
-; 1466 : 	void* l_v405; void* l_v406;
-; 1467 : 
-; 1468 :     block0:
-; 1469 : 	l_i_23 = 0L;
-
-	xor	esi, esi
-	push	edi
-
-; 1470 : 	l_v402 = 0L;
-
-	xor	edi, edi
-
-; 1471 : 	goto block1;
-; 1472 : 
-; 1473 :     block1:
-; 1474 : 	OP_INT_LT(l_i_23, l_num_items_0, l_v403);
-
-	cmp	DWORD PTR _l_num_items_0$[esp+20], esi
-$block0$40039:
-$block1$40040:
-
-; 1475 : 	l_v404 = l_v403;
-; 1476 : 	while (l_v404) {
-
-	jle	SHORT $block2$40046
-	mov	ebp, DWORD PTR _l_items_2$[esp+20]
-	add	ebp, 8
-$LL5 at pypy_g_ll_@139:
-$block6$40044:
-
-; 1525 : 	goto block3_back;
-; 1526 : 
-; 1527 :     block6:
-; 1528 : 	l_v419 = RPyItem(l_items_2, l_i_23);
-
-	test	esi, esi
-	jl	SHORT $LN14 at pypy_g_ll_@139
-	mov	eax, DWORD PTR _l_items_2$[esp+20]
-	cmp	esi, DWORD PTR [eax+4]
-	jl	SHORT $LN15 at pypy_g_ll_@139
-$LN14 at pypy_g_ll_@139:
-	call	_RPyAbort
-    ;; expected {24(%esp) | 12(%esp), 4(%esp), (%esp), 8(%esp) | 32(%esp)}
-$LN15 at pypy_g_ll_@139:
-
-; 1529 : 	l_v420 = l_v419;
-
-	mov	ebx, DWORD PTR [ebp]
-
-; 1530 : 	l_v421 = RPyField(l_v420, rs_chars).length;
-
-	test	ebx, ebx
-	jne	SHORT $LN16 at pypy_g_ll_@139
-	call	_RPyAbort
-    ;; expected {24(%esp) | 12(%esp), 4(%esp), (%esp), 8(%esp) | 32(%esp)}
-$LN16 at pypy_g_ll_@139:
-
-; 1531 : 	OP_INT_ADD(l_v402, l_v421, l_v422);
-; 1532 : 	OP_INT_ADD(l_i_23, 1L, l_v423);
-; 1533 : 	l_i_23 = l_v423;
-
-	inc	esi
-	add	ebp, 4
-
-; 1534 : 	l_v402 = l_v422;
-
-	add	edi, DWORD PTR [ebx+8]
-	cmp	esi, DWORD PTR _l_num_items_0$[esp+20]
-$block1_back$40045:
-	jl	SHORT $LL5 at pypy_g_ll_@139
-$block2$40046:
-
-; 1477 : 		goto block6;
-; 1478 : 		  block1_back: ;
-; 1479 : 		OP_INT_LT(l_i_23, l_num_items_0, l_v403);
-; 1480 : 		l_v404 = l_v403;
-; 1481 : 	}
-; 1482 : 	goto block2;
-; 1483 : 
-; 1484 :     block2:
-; 1485 : 	l_result_2 = pypy_g_mallocstr__Signed(l_v402);
-
-	push	edi
-	call	_pypy_g_mallocstr__Signed
-    ;; expected {28(%esp) | 16(%esp), 8(%esp), 4(%esp), 12(%esp) | 36(%esp)}
-
-; 1486 : 	l_v405 = (void*)l_items_2;
-
-	mov	ecx, DWORD PTR _l_items_2$[esp+24]
-	add	esp, 4
-	mov	DWORD PTR _l_result_2$[esp+24], eax
-	mov	DWORD PTR _l_v405$[esp+24], ecx
-
-; 1487 : 	l_v406 = pypy_asm_gcroot(l_v405);
-
-	mov	eax, DWORD PTR ?_constant_always_one_@?1??pypy_asm_gcroot@@9 at 9
-	imul	eax, DWORD PTR _l_v405$[esp+24]
-
-; 1488 : 	l_items_2 = l_v406; /* for moving GCs */
-; 1489 : 	l_v408 = RPyField((&pypy_g_ExcData), ed_exc_type);
-; 1490 : 	l_v409 = (l_v408 == NULL);
-
-	cmp	DWORD PTR _pypy_g_ExcData, 0
-
-; 1491 : 	if (!l_v409) {
-
-	je	SHORT $LN3 at pypy_g_ll_@139
-	pop	edi
-	pop	esi
-	pop	ebp
-
-; 1492 : 		l_v424 = ((struct pypy_rpy_string0 *) NULL);
-
-	xor	eax, eax
-	pop	ebx
-
-; 1535 : 	goto block1_back;
-; 1536 : }
-
-	add	esp, 8
-	ret	0
-$LN3 at pypy_g_ll_@139:
-
-; 1493 : 		goto block4;
-; 1494 : 	}
-; 1495 : 	l_i_22 = 0L;
-
-	xor	esi, esi
-
-; 1496 : 	l_res_index_0 = 0L;
-
-	xor	ebp, ebp
-
-; 1497 : 	goto block3;
-; 1498 : 
-; 1499 :     block3:
-; 1500 : 	OP_INT_LT(l_i_22, l_num_items_0, l_v410);
-
-	cmp	DWORD PTR _l_num_items_0$[esp+20], ebp
-$block3$40053:
-
-; 1501 : 	l_v411 = l_v410;
-; 1502 : 	while (l_v411) {
-
-	jle	SHORT $LN1 at pypy_g_ll_@139
-	mov	ebx, ecx
-	add	ebx, 8
-$LL2 at pypy_g_ll_@139:
-$block5$40057:
-
-; 1514 : 
-; 1515 :     block5:
-; 1516 : 	l_v412 = RPyItem(l_items_2, l_i_22);
-
-	test	esi, esi
-	jl	SHORT $LN9 at pypy_g_ll_@139
-	mov	edx, DWORD PTR _l_items_2$[esp+20]
-	cmp	esi, DWORD PTR [edx+4]
-	jl	SHORT $LN10 at pypy_g_ll_@139
-$LN9 at pypy_g_ll_@139:
-	call	_RPyAbort
-    ;; expected {24(%esp) | 12(%esp), 4(%esp), (%esp), 8(%esp) | }
-$LN10 at pypy_g_ll_@139:
-
-; 1517 : 	l_v413 = l_v412;
-
-	mov	edi, DWORD PTR [ebx]
-
-; 1518 : 	l_v414 = RPyField(l_v413, rs_chars).length;
-
-	test	edi, edi
-	jne	SHORT $LN11 at pypy_g_ll_@139
-	call	_RPyAbort
-    ;; expected {24(%esp) | 12(%esp), 4(%esp), (%esp), 8(%esp) | }
-$LN11 at pypy_g_ll_@139:
-	mov	edi, DWORD PTR [edi+8]
-
-; 1519 : 	l_v415 = RPyItem(l_items_2, l_i_22);
-
-	test	esi, esi
-	jl	SHORT $LN12 at pypy_g_ll_@139
-	mov	eax, DWORD PTR _l_items_2$[esp+20]
-	cmp	esi, DWORD PTR [eax+4]
-	jl	SHORT $LN13 at pypy_g_ll_@139
-$LN12 at pypy_g_ll_@139:
-	call	_RPyAbort
-    ;; expected {24(%esp) | 12(%esp), 4(%esp), (%esp), 8(%esp) | }
-$LN13 at pypy_g_ll_@139:
-
-; 1520 : 	pypy_g_copy_string_contents__rpy_stringPtr_rpy_stringPt(l_v415, l_result_2, 0L, l_res_index_0, l_v414);
-
-	mov	ecx, DWORD PTR [ebx]
-	mov	edx, DWORD PTR _l_result_2$[esp+24]
-	push	edi
-	add	ecx, 12					; 0000000cH
-	push	ecx
-	lea	eax, DWORD PTR [edx+ebp+12]
-	push	eax
-$block0$80664:
-$block0$80634:
-$block0$80639:
-$block1$80640:
-$block0$80644:
-$block1$80645:
-$block1$80635:
-$block0$80659:
-$block0$80667:
-$block1$80668:
-$block0$80673:
-$block1$80674:
-$block1$80661:
-$block0$80678:
-$block1$80679:
-	call	_memcpy
-    ;; expected {36(%esp) | 24(%esp), 16(%esp), 12(%esp), 20(%esp) | }
-	add	esp, 12					; 0000000cH
-
-; 1521 : 	OP_INT_ADD(l_res_index_0, l_v414, l_v417);
-; 1522 : 	OP_INT_ADD(l_i_22, 1L, l_v418);
-; 1523 : 	l_i_22 = l_v418;
-
-	inc	esi
-	add	ebx, 4
-
-; 1524 : 	l_res_index_0 = l_v417;
-
-	add	ebp, edi
-	cmp	esi, DWORD PTR _l_num_items_0$[esp+20]
-$block1$80671:
-$block3_back$40058:
-	jl	SHORT $LL2 at pypy_g_ll_@139
-$LN1 at pypy_g_ll_@139:
-
-; 1503 : 		goto block5;
-; 1504 : 		  block3_back: ;
-; 1505 : 		OP_INT_LT(l_i_22, l_num_items_0, l_v410);
-; 1506 : 		l_v411 = l_v410;
-; 1507 : 	}
-; 1508 : 	l_v424 = l_result_2;
-; 1509 : 	goto block4;
-; 1510 : 
-; 1511 :     block4:
-; 1512 : 	RPY_DEBUG_RETURN();
-; 1513 : 	return l_v424;
-
-	mov	eax, DWORD PTR _l_result_2$[esp+24]
-	pop	edi
-	pop	esi
-	pop	ebp
-$block4$40052:
-	pop	ebx
-
-; 1535 : 	goto block1_back;
-; 1536 : }
-
-	add	esp, 8
-	ret	0
-_pypy_g_ll_join_strs__Signed_arrayPtr ENDP
+; Function compile flags: /Ogtpy
+;	COMDAT _pypy_g_ll_join_strs__Signed_arrayPtr
+_TEXT	SEGMENT
+_l_result_2$ = -8					; size = 4
+_l_v405$ = -4						; size = 4
+_l_num_items_0$ = 8					; size = 4
+_l_items_2$ = 12					; size = 4
+_pypy_g_ll_join_strs__Signed_arrayPtr PROC		; COMDAT
+
+; 1457 : struct pypy_rpy_string0 *pypy_g_ll_join_strs__Signed_arrayPtr(long l_num_items_0, struct pypy_array0 *l_items_2) {
+
+	sub	esp, 8
+	push	ebx
+	push	ebp
+	push	esi
+
+; 1458 : 	long l_i_22; long l_i_23; long l_res_index_0;
+; 1459 : 	struct pypy_rpy_string0 *l_result_2; bool_t l_v403; bool_t l_v404;
+; 1460 : 	bool_t l_v409; bool_t l_v410; bool_t l_v411; long l_v402;
+; 1461 : 	long l_v414; long l_v417; long l_v418; long l_v421; long l_v422;
+; 1462 : 	long l_v423; struct pypy_object_vtable0 *l_v408;
+; 1463 : 	struct pypy_rpy_string0 *l_v412; struct pypy_rpy_string0 *l_v413;
+; 1464 : 	struct pypy_rpy_string0 *l_v415; struct pypy_rpy_string0 *l_v419;
+; 1465 : 	struct pypy_rpy_string0 *l_v420; struct pypy_rpy_string0 *l_v424;
+; 1466 : 	void* l_v405; void* l_v406;
+; 1467 : 
+; 1468 :     block0:
+; 1469 : 	l_i_23 = 0L;
+
+	xor	esi, esi
+	push	edi
+
+; 1470 : 	l_v402 = 0L;
+
+	xor	edi, edi
+
+; 1471 : 	goto block1;
+; 1472 : 
+; 1473 :     block1:
+; 1474 : 	OP_INT_LT(l_i_23, l_num_items_0, l_v403);
+
+	cmp	DWORD PTR _l_num_items_0$[esp+20], esi
+$block0$40039:
+$block1$40040:
+
+; 1475 : 	l_v404 = l_v403;
+; 1476 : 	while (l_v404) {
+
+	jle	SHORT $block2$40046
+	mov	ebp, DWORD PTR _l_items_2$[esp+20]
+	add	ebp, 8
+$LL5 at pypy_g_ll_@139:
+$block6$40044:
+
+; 1525 : 	goto block3_back;
+; 1526 : 
+; 1527 :     block6:
+; 1528 : 	l_v419 = RPyItem(l_items_2, l_i_23);
+
+	test	esi, esi
+	jl	SHORT $LN14 at pypy_g_ll_@139
+	mov	eax, DWORD PTR _l_items_2$[esp+20]
+	cmp	esi, DWORD PTR [eax+4]
+	jl	SHORT $LN15 at pypy_g_ll_@139
+$LN14 at pypy_g_ll_@139:
+	call	_RPyAbort
+    ;; expected {24(%esp) | 12(%esp), 4(%esp), (%esp), 8(%esp) | 32(%esp)}
+$LN15 at pypy_g_ll_@139:
+
+; 1529 : 	l_v420 = l_v419;
+
+	mov	ebx, DWORD PTR [ebp]
+
+; 1530 : 	l_v421 = RPyField(l_v420, rs_chars).length;
+
+	test	ebx, ebx
+	jne	SHORT $LN16 at pypy_g_ll_@139
+	call	_RPyAbort
+    ;; expected {24(%esp) | 12(%esp), 4(%esp), (%esp), 8(%esp) | 32(%esp)}
+$LN16 at pypy_g_ll_@139:
+
+; 1531 : 	OP_INT_ADD(l_v402, l_v421, l_v422);
+; 1532 : 	OP_INT_ADD(l_i_23, 1L, l_v423);
+; 1533 : 	l_i_23 = l_v423;
+
+	inc	esi
+	add	ebp, 4
+
+; 1534 : 	l_v402 = l_v422;
+
+	add	edi, DWORD PTR [ebx+8]
+	cmp	esi, DWORD PTR _l_num_items_0$[esp+20]
+$block1_back$40045:
+	jl	SHORT $LL5 at pypy_g_ll_@139
+$block2$40046:
+
+; 1477 : 		goto block6;
+; 1478 : 		  block1_back: ;
+; 1479 : 		OP_INT_LT(l_i_23, l_num_items_0, l_v403);
+; 1480 : 		l_v404 = l_v403;
+; 1481 : 	}
+; 1482 : 	goto block2;
+; 1483 : 
+; 1484 :     block2:
+; 1485 : 	l_result_2 = pypy_g_mallocstr__Signed(l_v402);
+
+	push	edi
+	call	_pypy_g_mallocstr__Signed
+    ;; expected {28(%esp) | 16(%esp), 8(%esp), 4(%esp), 12(%esp) | 36(%esp)}
+
+; 1486 : 	l_v405 = (void*)l_items_2;
+
+	mov	ecx, DWORD PTR _l_items_2$[esp+24]
+	add	esp, 4
+	mov	DWORD PTR _l_result_2$[esp+24], eax
+	mov	DWORD PTR _l_v405$[esp+24], ecx
+
+; 1487 : 	l_v406 = pypy_asm_gcroot(l_v405);
+
+	mov	eax, DWORD PTR ?_constant_always_one_@?1??pypy_asm_gcroot@@9 at 9
+	imul	eax, DWORD PTR _l_v405$[esp+24]
+
+; 1488 : 	l_items_2 = l_v406; /* for moving GCs */
+; 1489 : 	l_v408 = RPyField((&pypy_g_ExcData), ed_exc_type);
+; 1490 : 	l_v409 = (l_v408 == NULL);
+
+	cmp	DWORD PTR _pypy_g_ExcData, 0
+
+; 1491 : 	if (!l_v409) {
+
+	je	SHORT $LN3 at pypy_g_ll_@139
+	pop	edi
+	pop	esi
+	pop	ebp
+
+; 1492 : 		l_v424 = ((struct pypy_rpy_string0 *) NULL);
+
+	xor	eax, eax
+	pop	ebx
+
+; 1535 : 	goto block1_back;
+; 1536 : }
+
+	add	esp, 8
+	ret	0
+$LN3 at pypy_g_ll_@139:
+
+; 1493 : 		goto block4;
+; 1494 : 	}
+; 1495 : 	l_i_22 = 0L;
+
+	xor	esi, esi
+
+; 1496 : 	l_res_index_0 = 0L;
+
+	xor	ebp, ebp
+
+; 1497 : 	goto block3;
+; 1498 : 
+; 1499 :     block3:
+; 1500 : 	OP_INT_LT(l_i_22, l_num_items_0, l_v410);
+
+	cmp	DWORD PTR _l_num_items_0$[esp+20], ebp
+$block3$40053:
+
+; 1501 : 	l_v411 = l_v410;
+; 1502 : 	while (l_v411) {
+
+	jle	SHORT $LN1 at pypy_g_ll_@139
+	mov	ebx, ecx
+	add	ebx, 8
+$LL2 at pypy_g_ll_@139:
+$block5$40057:
+
+; 1514 : 
+; 1515 :     block5:
+; 1516 : 	l_v412 = RPyItem(l_items_2, l_i_22);
+
+	test	esi, esi
+	jl	SHORT $LN9 at pypy_g_ll_@139
+	mov	edx, DWORD PTR _l_items_2$[esp+20]
+	cmp	esi, DWORD PTR [edx+4]
+	jl	SHORT $LN10 at pypy_g_ll_@139
+$LN9 at pypy_g_ll_@139:
+	call	_RPyAbort
+    ;; expected {24(%esp) | 12(%esp), 4(%esp), (%esp), 8(%esp) | }
+$LN10 at pypy_g_ll_@139:
+
+; 1517 : 	l_v413 = l_v412;
+
+	mov	edi, DWORD PTR [ebx]
+
+; 1518 : 	l_v414 = RPyField(l_v413, rs_chars).length;
+
+	test	edi, edi
+	jne	SHORT $LN11 at pypy_g_ll_@139
+	call	_RPyAbort
+    ;; expected {24(%esp) | 12(%esp), 4(%esp), (%esp), 8(%esp) | }
+$LN11 at pypy_g_ll_@139:
+	mov	edi, DWORD PTR [edi+8]
+
+; 1519 : 	l_v415 = RPyItem(l_items_2, l_i_22);
+
+	test	esi, esi
+	jl	SHORT $LN12 at pypy_g_ll_@139
+	mov	eax, DWORD PTR _l_items_2$[esp+20]
+	cmp	esi, DWORD PTR [eax+4]
+	jl	SHORT $LN13 at pypy_g_ll_@139
+$LN12 at pypy_g_ll_@139:
+	call	_RPyAbort
+    ;; expected {24(%esp) | 12(%esp), 4(%esp), (%esp), 8(%esp) | }
+$LN13 at pypy_g_ll_@139:
+
+; 1520 : 	pypy_g_copy_string_contents__rpy_stringPtr_rpy_stringPt(l_v415, l_result_2, 0L, l_res_index_0, l_v414);
+
+	mov	ecx, DWORD PTR [ebx]
+	mov	edx, DWORD PTR _l_result_2$[esp+24]
+	push	edi
+	add	ecx, 12					; 0000000cH
+	push	ecx
+	lea	eax, DWORD PTR [edx+ebp+12]
+	push	eax
+$block0$80664:
+$block0$80634:
+$block0$80639:
+$block1$80640:
+$block0$80644:
+$block1$80645:
+$block1$80635:
+$block0$80659:
+$block0$80667:
+$block1$80668:
+$block0$80673:
+$block1$80674:
+$block1$80661:
+$block0$80678:
+$block1$80679:
+	call	_memcpy
+    ;; expected {36(%esp) | 24(%esp), 16(%esp), 12(%esp), 20(%esp) | }
+	add	esp, 12					; 0000000cH
+
+; 1521 : 	OP_INT_ADD(l_res_index_0, l_v414, l_v417);
+; 1522 : 	OP_INT_ADD(l_i_22, 1L, l_v418);
+; 1523 : 	l_i_22 = l_v418;
+
+	inc	esi
+	add	ebx, 4
+
+; 1524 : 	l_res_index_0 = l_v417;
+
+	add	ebp, edi
+	cmp	esi, DWORD PTR _l_num_items_0$[esp+20]
+$block1$80671:
+$block3_back$40058:
+	jl	SHORT $LL2 at pypy_g_ll_@139
+$LN1 at pypy_g_ll_@139:
+
+; 1503 : 		goto block5;
+; 1504 : 		  block3_back: ;
+; 1505 : 		OP_INT_LT(l_i_22, l_num_items_0, l_v410);
+; 1506 : 		l_v411 = l_v410;
+; 1507 : 	}
+; 1508 : 	l_v424 = l_result_2;
+; 1509 : 	goto block4;
+; 1510 : 
+; 1511 :     block4:
+; 1512 : 	RPY_DEBUG_RETURN();
+; 1513 : 	return l_v424;
+
+	mov	eax, DWORD PTR _l_result_2$[esp+24]
+	pop	edi
+	pop	esi
+	pop	ebp
+$block4$40052:
+	pop	ebx
+
+; 1535 : 	goto block1_back;
+; 1536 : }
+
+	add	esp, 8
+	ret	0
+_pypy_g_ll_join_strs__Signed_arrayPtr ENDP

Modified: pypy/branch/msvc-asmgcroot/pypy/translator/c/gcc/test/msvc/track1.s
==============================================================================
--- pypy/branch/msvc-asmgcroot/pypy/translator/c/gcc/test/msvc/track1.s	(original)
+++ pypy/branch/msvc-asmgcroot/pypy/translator/c/gcc/test/msvc/track1.s	Thu Nov  5 23:13:47 2009
@@ -1,31 +1,31 @@
-; Function compile flags: /Odtp
-_TEXT	SEGMENT
-_pypy_g_frameworkgc_setup PROC
-
-; 46   : void pypy_g_frameworkgc_setup(void) {
-
-	push	ebp
-	mov	ebp, esp
-$block0$37400:
-
-; 47   : 
-; 48   :     block0:
-; 49   : 	pypy_g_SemiSpaceGC_setup((&pypy_g_pypy_rpython_memory_gc_semispace_SemiSpaceGC));
-
-	push	OFFSET _pypy_g_pypy_rpython_memory_gc_semispace_SemiSpaceGC
-	call	_pypy_g_SemiSpaceGC_setup
-      ;; expected {4(%ebp) | %ebx, %esi, %edi, (%ebp) | }
-	add	esp, 4
-$block1$37401:
-
-; 50   : 	goto block1;
-; 51   : 
-; 52   :     block1:
-; 53   : 	RPY_DEBUG_RETURN();
-; 54   : 	return /* nothing */;
-; 55   : }
-
-	pop	ebp
-	ret	0
-_pypy_g_frameworkgc_setup ENDP
-_TEXT	ENDS
+; Function compile flags: /Odtp
+_TEXT	SEGMENT
+_pypy_g_frameworkgc_setup PROC
+
+; 46   : void pypy_g_frameworkgc_setup(void) {
+
+	push	ebp
+	mov	ebp, esp
+$block0$37400:
+
+; 47   : 
+; 48   :     block0:
+; 49   : 	pypy_g_SemiSpaceGC_setup((&pypy_g_pypy_rpython_memory_gc_semispace_SemiSpaceGC));
+
+	push	OFFSET _pypy_g_pypy_rpython_memory_gc_semispace_SemiSpaceGC
+	call	_pypy_g_SemiSpaceGC_setup
+      ;; expected {4(%ebp) | %ebx, %esi, %edi, (%ebp) | }
+	add	esp, 4
+$block1$37401:
+
+; 50   : 	goto block1;
+; 51   : 
+; 52   :     block1:
+; 53   : 	RPY_DEBUG_RETURN();
+; 54   : 	return /* nothing */;
+; 55   : }
+
+	pop	ebp
+	ret	0
+_pypy_g_frameworkgc_setup ENDP
+_TEXT	ENDS

Modified: pypy/branch/msvc-asmgcroot/pypy/translator/c/gcc/test/msvc/track2.s
==============================================================================
--- pypy/branch/msvc-asmgcroot/pypy/translator/c/gcc/test/msvc/track2.s	(original)
+++ pypy/branch/msvc-asmgcroot/pypy/translator/c/gcc/test/msvc/track2.s	Thu Nov  5 23:13:47 2009
@@ -1,747 +1,747 @@
-; Function compile flags: /Odtpy
-;	COMDAT _pypy_g__inplace_divrem1
-_TEXT	SEGMENT
-tv158 = -292						; size = 4
-tv152 = -288						; size = 4
-tv72 = -284						; size = 4
-tv65 = -280						; size = 4
-_l_v30733$ = -273					; size = 1
-_l_v30737$ = -272					; size = 8
-_l_v30740$ = -257					; size = 1
-_l_v30744$ = -256					; size = 4
-_l_v30753$ = -252					; size = 4
-_l_v30748$ = -248					; size = 8
-_l_v30709$ = -233					; size = 1
-_l_v30710$ = -232					; size = 1
-_l_v30714$ = -231					; size = 1
-_l_v30718$ = -230					; size = 1
-_l_v30729$ = -229					; size = 1
-_l_v30725$ = -228					; size = 4
-_l_v30705$ = -224					; size = 8
-_l_evalue_70$ = -216					; size = 4
-_l_index_219$ = -212					; size = 4
-_l_v30738$ = -205					; size = 1
-_l_v30730$ = -204					; size = 4
-_l_v30734$ = -200					; size = 4
-_l_length_82$ = -196					; size = 4
-_l_v30745$ = -189					; size = 1
-_l_v30752$ = -188					; size = 4
-_l_v30749$ = -184					; size = 8
-_l_l_100$ = -172					; size = 4
-_l_l_101$ = -168					; size = 4
-_l_length_83$ = -164					; size = 4
-_l_v30704$ = -160					; size = 4
-_l_v30722$ = -156					; size = 4
-_l_v30715$ = -152					; size = 8
-_l_v30726$ = -144					; size = 8
-_l_v30711$ = -132					; size = 4
-_l_x_97$ = -128						; size = 4
-_l_v30739$ = -121					; size = 1
-_l_v30731$ = -120					; size = 8
-_l_v30735$ = -112					; size = 8
-_l_v30742$ = -97					; size = 1
-_l_v30751$ = -96					; size = 4
-_l_v30707$ = -90					; size = 1
-_l_v30723$ = -89					; size = 1
-_l_v30712$ = -88					; size = 4
-_l_v30716$ = -84					; size = 4
-_l_v30703$ = -80					; size = 8
-_l_v30727$ = -72					; size = 8
-_l_v30732$ = -64					; size = 8
-_l_v30736$ = -56					; size = 8
-_l_index_218$ = -44					; size = 4
-_l_v30750$ = -40					; size = 4
-_l_v30754$ = -36					; size = 4
-_l_v30717$ = -30					; size = 1
-_l_v30720$ = -29					; size = 1
-_l_v30713$ = -28					; size = 4
-_l_v30702$ = -24					; size = 8
-_l_v30706$ = -16					; size = 8
-_l_v30728$ = -8						; size = 8
-_l_self_3688$ = 8					; size = 4
-_l_pin_1$ = 12						; size = 4
-_l_n_38$ = 16						; size = 8
-_l_size_53$ = 24					; size = 4
-_pypy_g__inplace_divrem1 PROC				; COMDAT
-
-; 16550: long pypy_g__inplace_divrem1(struct pypy_pypy_rlib_rbigint_rbigint0 *l_self_3688, struct pypy_pypy_rlib_rbigint_rbigint0 *l_pin_1, long long l_n_38, long l_size_53) {
-
-	push	ebp
-	mov	ebp, esp
-	sub	esp, 292				; 00000124H
-$block0$210880:
-
-; 16551: 	struct pypy_object0 *l_evalue_70; long l_index_218; long l_index_219;
-; 16552: 	struct pypy_array5 *l_l_100; struct pypy_array5 *l_l_101;
-; 16553: 	long l_length_82; long l_length_83; bool_t l_v30707; bool_t l_v30709;
-; 16554: 	bool_t l_v30710; bool_t l_v30714; bool_t l_v30717; bool_t l_v30718;
-; 16555: 	bool_t l_v30720; bool_t l_v30723; bool_t l_v30729; bool_t l_v30733;
-; 16556: 	bool_t l_v30738; bool_t l_v30739; bool_t l_v30740; bool_t l_v30742;
-; 16557: 	bool_t l_v30745; long l_v30704; long l_v30712; long l_v30713;
-; 16558: 	long l_v30716; long l_v30722; long l_v30725; long l_v30730;
-; 16559: 	long l_v30734; long l_v30744; long l_v30750; long l_v30751;
-; 16560: 	long l_v30752; long l_v30753; long l_v30754; long long l_v30702;
-; 16561: 	long long l_v30703; long long l_v30705; long long l_v30706;
-; 16562: 	long long l_v30715; long long l_v30726; long long l_v30727;
-; 16563: 	long long l_v30728; long long l_v30731; long long l_v30732;
-; 16564: 	long long l_v30735; long long l_v30736; long long l_v30737;
-; 16565: 	long long l_v30748; long long l_v30749; struct pypy_array5 *l_v30711;
-; 16566: 	long l_x_97;
-; 16567: 
-; 16568:     block0:
-; 16569: 	OP_LLONG_GT(l_n_38, 0LL, l_v30707);
-
-	cmp	DWORD PTR _l_n_38$[ebp+4], 0
-	jl	SHORT $LN11 at pypy_g__in
-	jg	SHORT $LN19 at pypy_g__in
-	cmp	DWORD PTR _l_n_38$[ebp], 0
-	jbe	SHORT $LN11 at pypy_g__in
-$LN19 at pypy_g__in:
-	mov	DWORD PTR tv65[ebp], 1
-	jmp	SHORT $LN12 at pypy_g__in
-$LN11 at pypy_g__in:
-	mov	DWORD PTR tv65[ebp], 0
-$LN12 at pypy_g__in:
-	mov	al, BYTE PTR tv65[ebp]
-	mov	BYTE PTR _l_v30707$[ebp], al
-
-; 16570: 	if (l_v30707) {
-
-	movzx	ecx, BYTE PTR _l_v30707$[ebp]
-	test	ecx, ecx
-	je	SHORT $LN8 at pypy_g__in
-
-; 16571: 		goto block3;
-
-	jmp	SHORT $block3$210882
-$LN8 at pypy_g__in:
-
-; 16572: 	}
-; 16573: 	l_evalue_70 = (&pypy_g_exceptions_AssertionError.ae_super.se_super.e_super);
-
-	mov	DWORD PTR _l_evalue_70$[ebp], OFFSET _pypy_g_exceptions_AssertionError
-$block1$210883:
-
-; 16574: 	goto block1;
-; 16575: 
-; 16576:     block1:
-; 16577: 	pypy_g_RPyRaiseException((&pypy_g_exceptions_AssertionError_vtable.ae_super.se_super.e_super), l_evalue_70);
-
-	mov	edx, DWORD PTR _l_evalue_70$[ebp]
-	push	edx
-	push	OFFSET _pypy_g_exceptions_AssertionError_vtable
-	call	_pypy_g_RPyRaiseException
-    ;; expected {4(%ebp) | %ebx, %esi, %edi, (%ebp) | }
-	add	esp, 8
-
-; 16578: 	l_v30753 = -1L;
-
-	mov	DWORD PTR _l_v30753$[ebp], -1
-$block2$210884:
-
-; 16579: 	goto block2;
-; 16580: 
-; 16581:     block2:
-; 16582: 	RPY_DEBUG_RETURN();
-; 16583: 	return l_v30753;
-
-	mov	eax, DWORD PTR _l_v30753$[ebp]
-	jmp	$LN9 at pypy_g__in
-$block3$210882:
-
-; 16584: 
-; 16585:     block3:
-; 16586: 	OP_LLONG_LE(l_n_38, 2147483647LL, l_v30709);
-
-	cmp	DWORD PTR _l_n_38$[ebp+4], 0
-	jg	SHORT $LN13 at pypy_g__in
-	jl	SHORT $LN20 at pypy_g__in
-	cmp	DWORD PTR _l_n_38$[ebp], 2147483647	; 7fffffffH
-	ja	SHORT $LN13 at pypy_g__in
-$LN20 at pypy_g__in:
-	mov	DWORD PTR tv72[ebp], 1
-	jmp	SHORT $LN14 at pypy_g__in
-$LN13 at pypy_g__in:
-	mov	DWORD PTR tv72[ebp], 0
-$LN14 at pypy_g__in:
-	mov	al, BYTE PTR tv72[ebp]
-	mov	BYTE PTR _l_v30709$[ebp], al
-
-; 16587: 	if (l_v30709) {
-
-	movzx	ecx, BYTE PTR _l_v30709$[ebp]
-	test	ecx, ecx
-	je	SHORT $LN7 at pypy_g__in
-
-; 16588: 		goto block4;
-
-	jmp	SHORT $block4$210886
-$LN7 at pypy_g__in:
-
-; 16589: 	}
-; 16590: 	l_evalue_70 = (&pypy_g_exceptions_AssertionError.ae_super.se_super.e_super);
-
-	mov	DWORD PTR _l_evalue_70$[ebp], OFFSET _pypy_g_exceptions_AssertionError
-
-; 16591: 	goto block1;
-
-	jmp	SHORT $block1$210883
-$block4$210886:
-
-; 16592: 
-; 16593:     block4:
-; 16594: 	OP_INT_IS_TRUE(l_size_53, l_v30710);
-
-	xor	edx, edx
-	cmp	DWORD PTR _l_size_53$[ebp], 0
-	setne	dl
-	mov	BYTE PTR _l_v30710$[ebp], dl
-
-; 16595: 	if (l_v30710) {
-
-	movzx	eax, BYTE PTR _l_v30710$[ebp]
-	test	eax, eax
-	je	SHORT $block5$210889
-
-; 16596: 		l_v30754 = l_size_53;
-
-	mov	ecx, DWORD PTR _l_size_53$[ebp]
-	mov	DWORD PTR _l_v30754$[ebp], ecx
-
-; 16597: 		goto block6;
-
-	jmp	SHORT $block6$210888
-$block5$210889:
-
-; 16598: 	}
-; 16599: 	goto block5;
-; 16600: 
-; 16601:     block5:
-; 16602: 	l_v30711 = RPyField(l_pin_1, prrr_inst_digits);
-
-	mov	edx, DWORD PTR _l_pin_1$[ebp]
-	mov	eax, DWORD PTR [edx+8]
-	mov	DWORD PTR _l_v30711$[ebp], eax
-
-; 16603: 	l_v30712 = l_v30711->length;
-
-	mov	ecx, DWORD PTR _l_v30711$[ebp]
-	mov	edx, DWORD PTR [ecx+4]
-	mov	DWORD PTR _l_v30712$[ebp], edx
-
-; 16604: 	l_v30754 = l_v30712;
-
-	mov	eax, DWORD PTR _l_v30712$[ebp]
-	mov	DWORD PTR _l_v30754$[ebp], eax
-$block6$210888:
-
-; 16605: 	goto block6;
-; 16606: 
-; 16607:     block6:
-; 16608: 	OP_INT_SUB(l_v30754, 1L, l_v30713);
-
-	mov	ecx, DWORD PTR _l_v30754$[ebp]
-	sub	ecx, 1
-	mov	DWORD PTR _l_v30713$[ebp], ecx
-
-; 16609: 	l_v30702 = 0LL;
-
-	mov	DWORD PTR _l_v30702$[ebp], 0
-	mov	DWORD PTR _l_v30702$[ebp+4], 0
-
-; 16610: 	l_x_97 = l_v30713;
-
-	mov	edx, DWORD PTR _l_v30713$[ebp]
-	mov	DWORD PTR _l_x_97$[ebp], edx
-$block7$210890:
-
-; 16611: 	goto block7;
-; 16612: 
-; 16613:     block7:
-; 16614: 	OP_INT_GE(l_x_97, 0L, l_v30714);
-
-	xor	eax, eax
-	cmp	DWORD PTR _l_x_97$[ebp], 0
-	setge	al
-	mov	BYTE PTR _l_v30714$[ebp], al
-$LN5 at pypy_g__in:
-
-; 16615: 	while (l_v30714) {
-
-	movzx	ecx, BYTE PTR _l_v30714$[ebp]
-	test	ecx, ecx
-	je	SHORT $block8$210896
-
-; 16616: 		goto block9;
-
-	jmp	SHORT $block9$210894
-$block7_back$210895:
-
-; 16617: 		  block7_back: ;
-; 16618: 		OP_INT_GE(l_x_97, 0L, l_v30714);
-
-	xor	edx, edx
-	cmp	DWORD PTR _l_x_97$[ebp], 0
-	setge	dl
-	mov	BYTE PTR _l_v30714$[ebp], dl
-
-; 16619: 	}
-
-	jmp	SHORT $LN5 at pypy_g__in
-$block8$210896:
-
-; 16620: 	goto block8;
-; 16621: 
-; 16622:     block8:
-; 16623: 	OP_LLONG_AND(l_v30702, 2147483647LL, l_v30715);
-
-	mov	eax, DWORD PTR _l_v30702$[ebp]
-	and	eax, 2147483647				; 7fffffffH
-	mov	ecx, DWORD PTR _l_v30702$[ebp+4]
-	and	ecx, 0
-	mov	DWORD PTR _l_v30715$[ebp], eax
-	mov	DWORD PTR _l_v30715$[ebp+4], ecx
-
-; 16624: 	OP_TRUNCATE_LONGLONG_TO_INT(l_v30715, l_v30716);
-
-	mov	edx, DWORD PTR _l_v30715$[ebp]
-	mov	DWORD PTR _l_v30716$[ebp], edx
-
-; 16625: 	l_v30753 = l_v30716;
-
-	mov	eax, DWORD PTR _l_v30716$[ebp]
-	mov	DWORD PTR _l_v30753$[ebp], eax
-
-; 16626: 	goto block2;
-
-	jmp	$block2$210884
-$block9$210894:
-
-; 16627: 
-; 16628:     block9:
-; 16629: 	OP_LLONG_LSHIFT(l_v30702, 31LL, l_v30703);
-
-	mov	eax, DWORD PTR _l_v30702$[ebp]
-	mov	edx, DWORD PTR _l_v30702$[ebp+4]
-	mov	cl, 31					; 0000001fH
-	call	__allshl
-    ;; expected {4(%ebp) | %ebx, %esi, %edi, (%ebp) | }
-	mov	DWORD PTR _l_v30703$[ebp], eax
-	mov	DWORD PTR _l_v30703$[ebp+4], edx
-
-; 16630: 	l_l_100 = RPyField(l_pin_1, prrr_inst_digits);
-
-	mov	ecx, DWORD PTR _l_pin_1$[ebp]
-	mov	edx, DWORD PTR [ecx+8]
-	mov	DWORD PTR _l_l_100$[ebp], edx
-
-; 16631: 	l_length_83 = l_l_100->length;
-
-	mov	eax, DWORD PTR _l_l_100$[ebp]
-	mov	ecx, DWORD PTR [eax+4]
-	mov	DWORD PTR _l_length_83$[ebp], ecx
-
-; 16632: 	OP_INT_LT(l_x_97, 0L, l_v30717);
-
-	xor	edx, edx
-	cmp	DWORD PTR _l_x_97$[ebp], 0
-	setl	dl
-	mov	BYTE PTR _l_v30717$[ebp], dl
-
-; 16633: 	if (l_v30717) {
-
-	movzx	eax, BYTE PTR _l_v30717$[ebp]
-	test	eax, eax
-	je	SHORT $LN3 at pypy_g__in
-
-; 16634: 		goto block14;
-
-	jmp	$block14$210899
-$LN3 at pypy_g__in:
-
-; 16635: 	}
-; 16636: 	l_index_218 = l_x_97;
-
-	mov	ecx, DWORD PTR _l_x_97$[ebp]
-	mov	DWORD PTR _l_index_218$[ebp], ecx
-$block10$210900:
-
-; 16637: 	goto block10;
-; 16638: 
-; 16639:     block10:
-; 16640: 	OP_INT_GE(l_index_218, 0L, l_v30718);
-
-	xor	edx, edx
-	cmp	DWORD PTR _l_index_218$[ebp], 0
-	setge	dl
-	mov	BYTE PTR _l_v30718$[ebp], dl
-
-; 16641: 	RPyAssert(l_v30718, "negative list getitem index out of bound");
-; 16642: 	OP_INT_LT(l_index_218, l_length_83, l_v30720);
-
-	mov	eax, DWORD PTR _l_index_218$[ebp]
-	xor	ecx, ecx
-	cmp	eax, DWORD PTR _l_length_83$[ebp]
-	setl	cl
-	mov	BYTE PTR _l_v30720$[ebp], cl
-
-; 16643: 	RPyAssert(l_v30720, "list getitem index out of bound");
-; 16644: 	l_v30722 = l_l_100->length;
-
-	mov	edx, DWORD PTR _l_l_100$[ebp]
-	mov	eax, DWORD PTR [edx+4]
-	mov	DWORD PTR _l_v30722$[ebp], eax
-
-; 16645: 	OP_INT_LT(l_index_218, l_v30722, l_v30723);
-
-	mov	ecx, DWORD PTR _l_index_218$[ebp]
-	xor	edx, edx
-	cmp	ecx, DWORD PTR _l_v30722$[ebp]
-	setl	dl
-	mov	BYTE PTR _l_v30723$[ebp], dl
-
-; 16646: 	RPyAssert(l_v30723, "fixed getitem out of bounds");
-; 16647: 	l_v30725 = RPyItem(l_l_100, l_index_218);
-
-	mov	eax, DWORD PTR _l_index_218$[ebp]
-	mov	ecx, DWORD PTR _l_l_100$[ebp]
-	mov	edx, DWORD PTR [ecx+eax*4+8]
-	mov	DWORD PTR _l_v30725$[ebp], edx
-
-; 16648: 	OP_CAST_INT_TO_LONGLONG(l_v30725, l_v30726);
-
-	mov	eax, DWORD PTR _l_v30725$[ebp]
-	cdq
-	mov	DWORD PTR _l_v30726$[ebp], eax
-	mov	DWORD PTR _l_v30726$[ebp+4], edx
-
-; 16649: 	OP_LLONG_ADD(l_v30703, l_v30726, l_v30706);
-
-	mov	eax, DWORD PTR _l_v30703$[ebp]
-	add	eax, DWORD PTR _l_v30726$[ebp]
-	mov	ecx, DWORD PTR _l_v30703$[ebp+4]
-	adc	ecx, DWORD PTR _l_v30726$[ebp+4]
-	mov	DWORD PTR _l_v30706$[ebp], eax
-	mov	DWORD PTR _l_v30706$[ebp+4], ecx
-
-; 16650: 	OP_LLONG_FLOORDIV(l_v30706, l_n_38, l_v30727);
-
-	mov	edx, DWORD PTR _l_n_38$[ebp+4]
-	push	edx
-	mov	eax, DWORD PTR _l_n_38$[ebp]
-	push	eax
-	mov	ecx, DWORD PTR _l_v30706$[ebp+4]
-	push	ecx
-	mov	edx, DWORD PTR _l_v30706$[ebp]
-	push	edx
-	call	__alldiv
-    ;; expected {4(%ebp) | %ebx, %esi, %edi, (%ebp) | }
-	mov	DWORD PTR _l_v30727$[ebp], eax
-	mov	DWORD PTR _l_v30727$[ebp+4], edx
-
-; 16651: 	OP_LLONG_XOR(l_v30706, l_n_38, l_v30728);
-
-	mov	eax, DWORD PTR _l_v30706$[ebp]
-	xor	eax, DWORD PTR _l_n_38$[ebp]
-	mov	ecx, DWORD PTR _l_v30706$[ebp+4]
-	xor	ecx, DWORD PTR _l_n_38$[ebp+4]
-	mov	DWORD PTR _l_v30728$[ebp], eax
-	mov	DWORD PTR _l_v30728$[ebp+4], ecx
-
-; 16652: 	OP_LLONG_LE(l_v30728, 0LL, l_v30729);
-
-	jg	SHORT $LN15 at pypy_g__in
-	jl	SHORT $LN21 at pypy_g__in
-	cmp	DWORD PTR _l_v30728$[ebp], 0
-	ja	SHORT $LN15 at pypy_g__in
-$LN21 at pypy_g__in:
-	mov	DWORD PTR tv152[ebp], 1
-	jmp	SHORT $LN16 at pypy_g__in
-$LN15 at pypy_g__in:
-	mov	DWORD PTR tv152[ebp], 0
-$LN16 at pypy_g__in:
-	mov	dl, BYTE PTR tv152[ebp]
-	mov	BYTE PTR _l_v30729$[ebp], dl
-
-; 16653: 	OP_CAST_BOOL_TO_INT(l_v30729, l_v30730);
-
-	movzx	eax, BYTE PTR _l_v30729$[ebp]
-	mov	DWORD PTR _l_v30730$[ebp], eax
-
-; 16654: 	OP_CAST_INT_TO_LONGLONG(l_v30730, l_v30731);
-
-	mov	eax, DWORD PTR _l_v30730$[ebp]
-	cdq
-	mov	DWORD PTR _l_v30731$[ebp], eax
-	mov	DWORD PTR _l_v30731$[ebp+4], edx
-
-; 16655: 	OP_LLONG_MOD(l_v30706, l_n_38, l_v30732);
-
-	mov	ecx, DWORD PTR _l_n_38$[ebp+4]
-	push	ecx
-	mov	edx, DWORD PTR _l_n_38$[ebp]
-	push	edx
-	mov	eax, DWORD PTR _l_v30706$[ebp+4]
-	push	eax
-	mov	ecx, DWORD PTR _l_v30706$[ebp]
-	push	ecx
-	call	__allrem
-    ;; expected {4(%ebp) | %ebx, %esi, %edi, (%ebp) | }
-	mov	DWORD PTR _l_v30732$[ebp], eax
-	mov	DWORD PTR _l_v30732$[ebp+4], edx
-
-; 16656: 	OP_LLONG_NE(l_v30732, 0LL, l_v30733);
-
-	mov	edx, DWORD PTR _l_v30732$[ebp]
-	or	edx, DWORD PTR _l_v30732$[ebp+4]
-	je	SHORT $LN17 at pypy_g__in
-	mov	DWORD PTR tv158[ebp], 1
-	jmp	SHORT $LN18 at pypy_g__in
-$LN17 at pypy_g__in:
-	mov	DWORD PTR tv158[ebp], 0
-$LN18 at pypy_g__in:
-	mov	al, BYTE PTR tv158[ebp]
-	mov	BYTE PTR _l_v30733$[ebp], al
-
-; 16657: 	OP_CAST_BOOL_TO_INT(l_v30733, l_v30734);
-
-	movzx	ecx, BYTE PTR _l_v30733$[ebp]
-	mov	DWORD PTR _l_v30734$[ebp], ecx
-
-; 16658: 	OP_CAST_INT_TO_LONGLONG(l_v30734, l_v30735);
-
-	mov	eax, DWORD PTR _l_v30734$[ebp]
-	cdq
-	mov	DWORD PTR _l_v30735$[ebp], eax
-	mov	DWORD PTR _l_v30735$[ebp+4], edx
-
-; 16659: 	OP_LLONG_AND(l_v30731, l_v30735, l_v30736);
-
-	mov	edx, DWORD PTR _l_v30731$[ebp]
-	and	edx, DWORD PTR _l_v30735$[ebp]
-	mov	eax, DWORD PTR _l_v30731$[ebp+4]
-	and	eax, DWORD PTR _l_v30735$[ebp+4]
-	mov	DWORD PTR _l_v30736$[ebp], edx
-	mov	DWORD PTR _l_v30736$[ebp+4], eax
-
-; 16660: 	OP_LLONG_SUB(l_v30727, l_v30736, l_v30705);
-
-	mov	ecx, DWORD PTR _l_v30727$[ebp]
-	sub	ecx, DWORD PTR _l_v30736$[ebp]
-	mov	edx, DWORD PTR _l_v30727$[ebp+4]
-	sbb	edx, DWORD PTR _l_v30736$[ebp+4]
-	mov	DWORD PTR _l_v30705$[ebp], ecx
-	mov	DWORD PTR _l_v30705$[ebp+4], edx
-
-; 16661: 	OP_LLONG_AND(l_v30705, 2147483647LL, l_v30737);
-
-	mov	eax, DWORD PTR _l_v30705$[ebp]
-	and	eax, 2147483647				; 7fffffffH
-	mov	ecx, DWORD PTR _l_v30705$[ebp+4]
-	and	ecx, 0
-	mov	DWORD PTR _l_v30737$[ebp], eax
-	mov	DWORD PTR _l_v30737$[ebp+4], ecx
-
-; 16662: 	OP_TRUNCATE_LONGLONG_TO_INT(l_v30737, l_v30704);
-
-	mov	edx, DWORD PTR _l_v30737$[ebp]
-	mov	DWORD PTR _l_v30704$[ebp], edx
-
-; 16663: 	OP_INT_GE(l_v30704, 0L, l_v30738);
-
-	xor	eax, eax
-	cmp	DWORD PTR _l_v30704$[ebp], 0
-	setge	al
-	mov	BYTE PTR _l_v30738$[ebp], al
-
-; 16664: 	if (l_v30738) {
-
-	movzx	ecx, BYTE PTR _l_v30738$[ebp]
-	test	ecx, ecx
-	je	SHORT $LN2 at pypy_g__in
-
-; 16665: 		goto block11;
-
-	jmp	SHORT $block11$210908
-$LN2 at pypy_g__in:
-
-; 16666: 	}
-; 16667: 	l_evalue_70 = (&pypy_g_exceptions_AssertionError.ae_super.se_super.e_super);
-
-	mov	DWORD PTR _l_evalue_70$[ebp], OFFSET _pypy_g_exceptions_AssertionError
-
-; 16668: 	goto block1;
-
-	jmp	$block1$210883
-$block11$210908:
-
-; 16669: 
-; 16670:     block11:
-; 16671: 	l_l_101 = RPyField(l_self_3688, prrr_inst_digits);
-
-	mov	edx, DWORD PTR _l_self_3688$[ebp]
-	mov	eax, DWORD PTR [edx+8]
-	mov	DWORD PTR _l_l_101$[ebp], eax
-
-; 16672: 	l_length_82 = l_l_101->length;
-
-	mov	ecx, DWORD PTR _l_l_101$[ebp]
-	mov	edx, DWORD PTR [ecx+4]
-	mov	DWORD PTR _l_length_82$[ebp], edx
-
-; 16673: 	OP_INT_LT(l_x_97, 0L, l_v30739);
-
-	xor	eax, eax
-	cmp	DWORD PTR _l_x_97$[ebp], 0
-	setl	al
-	mov	BYTE PTR _l_v30739$[ebp], al
-
-; 16674: 	if (l_v30739) {
-
-	movzx	ecx, BYTE PTR _l_v30739$[ebp]
-	test	ecx, ecx
-	je	SHORT $LN1 at pypy_g__in
-
-; 16675: 		goto block13;
-
-	jmp	$block13$210910
-$LN1 at pypy_g__in:
-
-; 16676: 	}
-; 16677: 	l_index_219 = l_x_97;
-
-	mov	edx, DWORD PTR _l_x_97$[ebp]
-	mov	DWORD PTR _l_index_219$[ebp], edx
-$block12$210911:
-
-; 16678: 	goto block12;
-; 16679: 
-; 16680:     block12:
-; 16681: 	OP_INT_GE(l_index_219, 0L, l_v30740);
-
-	xor	eax, eax
-	cmp	DWORD PTR _l_index_219$[ebp], 0
-	setge	al
-	mov	BYTE PTR _l_v30740$[ebp], al
-
-; 16682: 	RPyAssert(l_v30740, "negative list setitem index out of bound");
-; 16683: 	OP_INT_LT(l_index_219, l_length_82, l_v30742);
-
-	mov	ecx, DWORD PTR _l_index_219$[ebp]
-	xor	edx, edx
-	cmp	ecx, DWORD PTR _l_length_82$[ebp]
-	setl	dl
-	mov	BYTE PTR _l_v30742$[ebp], dl
-
-; 16684: 	RPyAssert(l_v30742, "list setitem index out of bound");
-; 16685: 	l_v30744 = l_l_101->length;
-
-	mov	eax, DWORD PTR _l_l_101$[ebp]
-	mov	ecx, DWORD PTR [eax+4]
-	mov	DWORD PTR _l_v30744$[ebp], ecx
-
-; 16686: 	OP_INT_LT(l_index_219, l_v30744, l_v30745);
-
-	mov	edx, DWORD PTR _l_index_219$[ebp]
-	xor	eax, eax
-	cmp	edx, DWORD PTR _l_v30744$[ebp]
-	setl	al
-	mov	BYTE PTR _l_v30745$[ebp], al
-
-; 16687: 	RPyAssert(l_v30745, "fixed setitem out of bounds");
-; 16688: 	RPyItem(l_l_101, l_index_219) = l_v30704;
-
-	mov	ecx, DWORD PTR _l_index_219$[ebp]
-	mov	edx, DWORD PTR _l_l_101$[ebp]
-	mov	eax, DWORD PTR _l_v30704$[ebp]
-	mov	DWORD PTR [edx+ecx*4+8], eax
-
-; 16689: 	OP_LLONG_MUL(l_v30705, l_n_38, l_v30748);
-
-	mov	ecx, DWORD PTR _l_n_38$[ebp+4]
-	push	ecx
-	mov	edx, DWORD PTR _l_n_38$[ebp]
-	push	edx
-	mov	eax, DWORD PTR _l_v30705$[ebp+4]
-	push	eax
-	mov	ecx, DWORD PTR _l_v30705$[ebp]
-	push	ecx
-	call	__allmul
-    ;; expected {4(%ebp) | %ebx, %esi, %edi, (%ebp) | }
-	mov	DWORD PTR _l_v30748$[ebp], eax
-	mov	DWORD PTR _l_v30748$[ebp+4], edx
-
-; 16690: 	OP_LLONG_SUB(l_v30706, l_v30748, l_v30749);
-
-	mov	edx, DWORD PTR _l_v30706$[ebp]
-	sub	edx, DWORD PTR _l_v30748$[ebp]
-	mov	eax, DWORD PTR _l_v30706$[ebp+4]
-	sbb	eax, DWORD PTR _l_v30748$[ebp+4]
-	mov	DWORD PTR _l_v30749$[ebp], edx
-	mov	DWORD PTR _l_v30749$[ebp+4], eax
-
-; 16691: 	OP_INT_SUB(l_x_97, 1L, l_v30750);
-
-	mov	ecx, DWORD PTR _l_x_97$[ebp]
-	sub	ecx, 1
-	mov	DWORD PTR _l_v30750$[ebp], ecx
-
-; 16692: 	l_v30702 = l_v30749;
-
-	mov	edx, DWORD PTR _l_v30749$[ebp]
-	mov	DWORD PTR _l_v30702$[ebp], edx
-	mov	eax, DWORD PTR _l_v30749$[ebp+4]
-	mov	DWORD PTR _l_v30702$[ebp+4], eax
-
-; 16693: 	l_x_97 = l_v30750;
-
-	mov	ecx, DWORD PTR _l_v30750$[ebp]
-	mov	DWORD PTR _l_x_97$[ebp], ecx
-
-; 16694: 	goto block7_back;
-
-	jmp	$block7_back$210895
-$block13$210910:
-
-; 16695: 
-; 16696:     block13:
-; 16697: 	OP_INT_ADD(l_x_97, l_length_82, l_v30751);
-
-	mov	edx, DWORD PTR _l_x_97$[ebp]
-	add	edx, DWORD PTR _l_length_82$[ebp]
-	mov	DWORD PTR _l_v30751$[ebp], edx
-
-; 16698: 	l_index_219 = l_v30751;
-
-	mov	eax, DWORD PTR _l_v30751$[ebp]
-	mov	DWORD PTR _l_index_219$[ebp], eax
-
-; 16699: 	goto block12;
-
-	jmp	$block12$210911
-$block14$210899:
-
-; 16700: 
-; 16701:     block14:
-; 16702: 	OP_INT_ADD(l_x_97, l_length_83, l_v30752);
-
-	mov	ecx, DWORD PTR _l_x_97$[ebp]
-	add	ecx, DWORD PTR _l_length_83$[ebp]
-	mov	DWORD PTR _l_v30752$[ebp], ecx
-
-; 16703: 	l_index_218 = l_v30752;
-
-	mov	edx, DWORD PTR _l_v30752$[ebp]
-	mov	DWORD PTR _l_index_218$[ebp], edx
-
-; 16704: 	goto block10;
-
-	jmp	$block10$210900
-$LN9 at pypy_g__in:
-
-; 16705: }
-
-	mov	esp, ebp
-	pop	ebp
-	ret	0
-_pypy_g__inplace_divrem1 ENDP
+; Function compile flags: /Odtpy
+;	COMDAT _pypy_g__inplace_divrem1
+_TEXT	SEGMENT
+tv158 = -292						; size = 4
+tv152 = -288						; size = 4
+tv72 = -284						; size = 4
+tv65 = -280						; size = 4
+_l_v30733$ = -273					; size = 1
+_l_v30737$ = -272					; size = 8
+_l_v30740$ = -257					; size = 1
+_l_v30744$ = -256					; size = 4
+_l_v30753$ = -252					; size = 4
+_l_v30748$ = -248					; size = 8
+_l_v30709$ = -233					; size = 1
+_l_v30710$ = -232					; size = 1
+_l_v30714$ = -231					; size = 1
+_l_v30718$ = -230					; size = 1
+_l_v30729$ = -229					; size = 1
+_l_v30725$ = -228					; size = 4
+_l_v30705$ = -224					; size = 8
+_l_evalue_70$ = -216					; size = 4
+_l_index_219$ = -212					; size = 4
+_l_v30738$ = -205					; size = 1
+_l_v30730$ = -204					; size = 4
+_l_v30734$ = -200					; size = 4
+_l_length_82$ = -196					; size = 4
+_l_v30745$ = -189					; size = 1
+_l_v30752$ = -188					; size = 4
+_l_v30749$ = -184					; size = 8
+_l_l_100$ = -172					; size = 4
+_l_l_101$ = -168					; size = 4
+_l_length_83$ = -164					; size = 4
+_l_v30704$ = -160					; size = 4
+_l_v30722$ = -156					; size = 4
+_l_v30715$ = -152					; size = 8
+_l_v30726$ = -144					; size = 8
+_l_v30711$ = -132					; size = 4
+_l_x_97$ = -128						; size = 4
+_l_v30739$ = -121					; size = 1
+_l_v30731$ = -120					; size = 8
+_l_v30735$ = -112					; size = 8
+_l_v30742$ = -97					; size = 1
+_l_v30751$ = -96					; size = 4
+_l_v30707$ = -90					; size = 1
+_l_v30723$ = -89					; size = 1
+_l_v30712$ = -88					; size = 4
+_l_v30716$ = -84					; size = 4
+_l_v30703$ = -80					; size = 8
+_l_v30727$ = -72					; size = 8
+_l_v30732$ = -64					; size = 8
+_l_v30736$ = -56					; size = 8
+_l_index_218$ = -44					; size = 4
+_l_v30750$ = -40					; size = 4
+_l_v30754$ = -36					; size = 4
+_l_v30717$ = -30					; size = 1
+_l_v30720$ = -29					; size = 1
+_l_v30713$ = -28					; size = 4
+_l_v30702$ = -24					; size = 8
+_l_v30706$ = -16					; size = 8
+_l_v30728$ = -8						; size = 8
+_l_self_3688$ = 8					; size = 4
+_l_pin_1$ = 12						; size = 4
+_l_n_38$ = 16						; size = 8
+_l_size_53$ = 24					; size = 4
+_pypy_g__inplace_divrem1 PROC				; COMDAT
+
+; 16550: long pypy_g__inplace_divrem1(struct pypy_pypy_rlib_rbigint_rbigint0 *l_self_3688, struct pypy_pypy_rlib_rbigint_rbigint0 *l_pin_1, long long l_n_38, long l_size_53) {
+
+	push	ebp
+	mov	ebp, esp
+	sub	esp, 292				; 00000124H
+$block0$210880:
+
+; 16551: 	struct pypy_object0 *l_evalue_70; long l_index_218; long l_index_219;
+; 16552: 	struct pypy_array5 *l_l_100; struct pypy_array5 *l_l_101;
+; 16553: 	long l_length_82; long l_length_83; bool_t l_v30707; bool_t l_v30709;
+; 16554: 	bool_t l_v30710; bool_t l_v30714; bool_t l_v30717; bool_t l_v30718;
+; 16555: 	bool_t l_v30720; bool_t l_v30723; bool_t l_v30729; bool_t l_v30733;
+; 16556: 	bool_t l_v30738; bool_t l_v30739; bool_t l_v30740; bool_t l_v30742;
+; 16557: 	bool_t l_v30745; long l_v30704; long l_v30712; long l_v30713;
+; 16558: 	long l_v30716; long l_v30722; long l_v30725; long l_v30730;
+; 16559: 	long l_v30734; long l_v30744; long l_v30750; long l_v30751;
+; 16560: 	long l_v30752; long l_v30753; long l_v30754; long long l_v30702;
+; 16561: 	long long l_v30703; long long l_v30705; long long l_v30706;
+; 16562: 	long long l_v30715; long long l_v30726; long long l_v30727;
+; 16563: 	long long l_v30728; long long l_v30731; long long l_v30732;
+; 16564: 	long long l_v30735; long long l_v30736; long long l_v30737;
+; 16565: 	long long l_v30748; long long l_v30749; struct pypy_array5 *l_v30711;
+; 16566: 	long l_x_97;
+; 16567: 
+; 16568:     block0:
+; 16569: 	OP_LLONG_GT(l_n_38, 0LL, l_v30707);
+
+	cmp	DWORD PTR _l_n_38$[ebp+4], 0
+	jl	SHORT $LN11 at pypy_g__in
+	jg	SHORT $LN19 at pypy_g__in
+	cmp	DWORD PTR _l_n_38$[ebp], 0
+	jbe	SHORT $LN11 at pypy_g__in
+$LN19 at pypy_g__in:
+	mov	DWORD PTR tv65[ebp], 1
+	jmp	SHORT $LN12 at pypy_g__in
+$LN11 at pypy_g__in:
+	mov	DWORD PTR tv65[ebp], 0
+$LN12 at pypy_g__in:
+	mov	al, BYTE PTR tv65[ebp]
+	mov	BYTE PTR _l_v30707$[ebp], al
+
+; 16570: 	if (l_v30707) {
+
+	movzx	ecx, BYTE PTR _l_v30707$[ebp]
+	test	ecx, ecx
+	je	SHORT $LN8 at pypy_g__in
+
+; 16571: 		goto block3;
+
+	jmp	SHORT $block3$210882
+$LN8 at pypy_g__in:
+
+; 16572: 	}
+; 16573: 	l_evalue_70 = (&pypy_g_exceptions_AssertionError.ae_super.se_super.e_super);
+
+	mov	DWORD PTR _l_evalue_70$[ebp], OFFSET _pypy_g_exceptions_AssertionError
+$block1$210883:
+
+; 16574: 	goto block1;
+; 16575: 
+; 16576:     block1:
+; 16577: 	pypy_g_RPyRaiseException((&pypy_g_exceptions_AssertionError_vtable.ae_super.se_super.e_super), l_evalue_70);
+
+	mov	edx, DWORD PTR _l_evalue_70$[ebp]
+	push	edx
+	push	OFFSET _pypy_g_exceptions_AssertionError_vtable
+	call	_pypy_g_RPyRaiseException
+    ;; expected {4(%ebp) | %ebx, %esi, %edi, (%ebp) | }
+	add	esp, 8
+
+; 16578: 	l_v30753 = -1L;
+
+	mov	DWORD PTR _l_v30753$[ebp], -1
+$block2$210884:
+
+; 16579: 	goto block2;
+; 16580: 
+; 16581:     block2:
+; 16582: 	RPY_DEBUG_RETURN();
+; 16583: 	return l_v30753;
+
+	mov	eax, DWORD PTR _l_v30753$[ebp]
+	jmp	$LN9 at pypy_g__in
+$block3$210882:
+
+; 16584: 
+; 16585:     block3:
+; 16586: 	OP_LLONG_LE(l_n_38, 2147483647LL, l_v30709);
+
+	cmp	DWORD PTR _l_n_38$[ebp+4], 0
+	jg	SHORT $LN13 at pypy_g__in
+	jl	SHORT $LN20 at pypy_g__in
+	cmp	DWORD PTR _l_n_38$[ebp], 2147483647	; 7fffffffH
+	ja	SHORT $LN13 at pypy_g__in
+$LN20 at pypy_g__in:
+	mov	DWORD PTR tv72[ebp], 1
+	jmp	SHORT $LN14 at pypy_g__in
+$LN13 at pypy_g__in:
+	mov	DWORD PTR tv72[ebp], 0
+$LN14 at pypy_g__in:
+	mov	al, BYTE PTR tv72[ebp]
+	mov	BYTE PTR _l_v30709$[ebp], al
+
+; 16587: 	if (l_v30709) {
+
+	movzx	ecx, BYTE PTR _l_v30709$[ebp]
+	test	ecx, ecx
+	je	SHORT $LN7 at pypy_g__in
+
+; 16588: 		goto block4;
+
+	jmp	SHORT $block4$210886
+$LN7 at pypy_g__in:
+
+; 16589: 	}
+; 16590: 	l_evalue_70 = (&pypy_g_exceptions_AssertionError.ae_super.se_super.e_super);
+
+	mov	DWORD PTR _l_evalue_70$[ebp], OFFSET _pypy_g_exceptions_AssertionError
+
+; 16591: 	goto block1;
+
+	jmp	SHORT $block1$210883
+$block4$210886:
+
+; 16592: 
+; 16593:     block4:
+; 16594: 	OP_INT_IS_TRUE(l_size_53, l_v30710);
+
+	xor	edx, edx
+	cmp	DWORD PTR _l_size_53$[ebp], 0
+	setne	dl
+	mov	BYTE PTR _l_v30710$[ebp], dl
+
+; 16595: 	if (l_v30710) {
+
+	movzx	eax, BYTE PTR _l_v30710$[ebp]
+	test	eax, eax
+	je	SHORT $block5$210889
+
+; 16596: 		l_v30754 = l_size_53;
+
+	mov	ecx, DWORD PTR _l_size_53$[ebp]
+	mov	DWORD PTR _l_v30754$[ebp], ecx
+
+; 16597: 		goto block6;
+
+	jmp	SHORT $block6$210888
+$block5$210889:
+
+; 16598: 	}
+; 16599: 	goto block5;
+; 16600: 
+; 16601:     block5:
+; 16602: 	l_v30711 = RPyField(l_pin_1, prrr_inst_digits);
+
+	mov	edx, DWORD PTR _l_pin_1$[ebp]
+	mov	eax, DWORD PTR [edx+8]
+	mov	DWORD PTR _l_v30711$[ebp], eax
+
+; 16603: 	l_v30712 = l_v30711->length;
+
+	mov	ecx, DWORD PTR _l_v30711$[ebp]
+	mov	edx, DWORD PTR [ecx+4]
+	mov	DWORD PTR _l_v30712$[ebp], edx
+
+; 16604: 	l_v30754 = l_v30712;
+
+	mov	eax, DWORD PTR _l_v30712$[ebp]
+	mov	DWORD PTR _l_v30754$[ebp], eax
+$block6$210888:
+
+; 16605: 	goto block6;
+; 16606: 
+; 16607:     block6:
+; 16608: 	OP_INT_SUB(l_v30754, 1L, l_v30713);
+
+	mov	ecx, DWORD PTR _l_v30754$[ebp]
+	sub	ecx, 1
+	mov	DWORD PTR _l_v30713$[ebp], ecx
+
+; 16609: 	l_v30702 = 0LL;
+
+	mov	DWORD PTR _l_v30702$[ebp], 0
+	mov	DWORD PTR _l_v30702$[ebp+4], 0
+
+; 16610: 	l_x_97 = l_v30713;
+
+	mov	edx, DWORD PTR _l_v30713$[ebp]
+	mov	DWORD PTR _l_x_97$[ebp], edx
+$block7$210890:
+
+; 16611: 	goto block7;
+; 16612: 
+; 16613:     block7:
+; 16614: 	OP_INT_GE(l_x_97, 0L, l_v30714);
+
+	xor	eax, eax
+	cmp	DWORD PTR _l_x_97$[ebp], 0
+	setge	al
+	mov	BYTE PTR _l_v30714$[ebp], al
+$LN5 at pypy_g__in:
+
+; 16615: 	while (l_v30714) {
+
+	movzx	ecx, BYTE PTR _l_v30714$[ebp]
+	test	ecx, ecx
+	je	SHORT $block8$210896
+
+; 16616: 		goto block9;
+
+	jmp	SHORT $block9$210894
+$block7_back$210895:
+
+; 16617: 		  block7_back: ;
+; 16618: 		OP_INT_GE(l_x_97, 0L, l_v30714);
+
+	xor	edx, edx
+	cmp	DWORD PTR _l_x_97$[ebp], 0
+	setge	dl
+	mov	BYTE PTR _l_v30714$[ebp], dl
+
+; 16619: 	}
+
+	jmp	SHORT $LN5 at pypy_g__in
+$block8$210896:
+
+; 16620: 	goto block8;
+; 16621: 
+; 16622:     block8:
+; 16623: 	OP_LLONG_AND(l_v30702, 2147483647LL, l_v30715);
+
+	mov	eax, DWORD PTR _l_v30702$[ebp]
+	and	eax, 2147483647				; 7fffffffH
+	mov	ecx, DWORD PTR _l_v30702$[ebp+4]
+	and	ecx, 0
+	mov	DWORD PTR _l_v30715$[ebp], eax
+	mov	DWORD PTR _l_v30715$[ebp+4], ecx
+
+; 16624: 	OP_TRUNCATE_LONGLONG_TO_INT(l_v30715, l_v30716);
+
+	mov	edx, DWORD PTR _l_v30715$[ebp]
+	mov	DWORD PTR _l_v30716$[ebp], edx
+
+; 16625: 	l_v30753 = l_v30716;
+
+	mov	eax, DWORD PTR _l_v30716$[ebp]
+	mov	DWORD PTR _l_v30753$[ebp], eax
+
+; 16626: 	goto block2;
+
+	jmp	$block2$210884
+$block9$210894:
+
+; 16627: 
+; 16628:     block9:
+; 16629: 	OP_LLONG_LSHIFT(l_v30702, 31LL, l_v30703);
+
+	mov	eax, DWORD PTR _l_v30702$[ebp]
+	mov	edx, DWORD PTR _l_v30702$[ebp+4]
+	mov	cl, 31					; 0000001fH
+	call	__allshl
+    ;; expected {4(%ebp) | %ebx, %esi, %edi, (%ebp) | }
+	mov	DWORD PTR _l_v30703$[ebp], eax
+	mov	DWORD PTR _l_v30703$[ebp+4], edx
+
+; 16630: 	l_l_100 = RPyField(l_pin_1, prrr_inst_digits);
+
+	mov	ecx, DWORD PTR _l_pin_1$[ebp]
+	mov	edx, DWORD PTR [ecx+8]
+	mov	DWORD PTR _l_l_100$[ebp], edx
+
+; 16631: 	l_length_83 = l_l_100->length;
+
+	mov	eax, DWORD PTR _l_l_100$[ebp]
+	mov	ecx, DWORD PTR [eax+4]
+	mov	DWORD PTR _l_length_83$[ebp], ecx
+
+; 16632: 	OP_INT_LT(l_x_97, 0L, l_v30717);
+
+	xor	edx, edx
+	cmp	DWORD PTR _l_x_97$[ebp], 0
+	setl	dl
+	mov	BYTE PTR _l_v30717$[ebp], dl
+
+; 16633: 	if (l_v30717) {
+
+	movzx	eax, BYTE PTR _l_v30717$[ebp]
+	test	eax, eax
+	je	SHORT $LN3 at pypy_g__in
+
+; 16634: 		goto block14;
+
+	jmp	$block14$210899
+$LN3 at pypy_g__in:
+
+; 16635: 	}
+; 16636: 	l_index_218 = l_x_97;
+
+	mov	ecx, DWORD PTR _l_x_97$[ebp]
+	mov	DWORD PTR _l_index_218$[ebp], ecx
+$block10$210900:
+
+; 16637: 	goto block10;
+; 16638: 
+; 16639:     block10:
+; 16640: 	OP_INT_GE(l_index_218, 0L, l_v30718);
+
+	xor	edx, edx
+	cmp	DWORD PTR _l_index_218$[ebp], 0
+	setge	dl
+	mov	BYTE PTR _l_v30718$[ebp], dl
+
+; 16641: 	RPyAssert(l_v30718, "negative list getitem index out of bound");
+; 16642: 	OP_INT_LT(l_index_218, l_length_83, l_v30720);
+
+	mov	eax, DWORD PTR _l_index_218$[ebp]
+	xor	ecx, ecx
+	cmp	eax, DWORD PTR _l_length_83$[ebp]
+	setl	cl
+	mov	BYTE PTR _l_v30720$[ebp], cl
+
+; 16643: 	RPyAssert(l_v30720, "list getitem index out of bound");
+; 16644: 	l_v30722 = l_l_100->length;
+
+	mov	edx, DWORD PTR _l_l_100$[ebp]
+	mov	eax, DWORD PTR [edx+4]
+	mov	DWORD PTR _l_v30722$[ebp], eax
+
+; 16645: 	OP_INT_LT(l_index_218, l_v30722, l_v30723);
+
+	mov	ecx, DWORD PTR _l_index_218$[ebp]
+	xor	edx, edx
+	cmp	ecx, DWORD PTR _l_v30722$[ebp]
+	setl	dl
+	mov	BYTE PTR _l_v30723$[ebp], dl
+
+; 16646: 	RPyAssert(l_v30723, "fixed getitem out of bounds");
+; 16647: 	l_v30725 = RPyItem(l_l_100, l_index_218);
+
+	mov	eax, DWORD PTR _l_index_218$[ebp]
+	mov	ecx, DWORD PTR _l_l_100$[ebp]
+	mov	edx, DWORD PTR [ecx+eax*4+8]
+	mov	DWORD PTR _l_v30725$[ebp], edx
+
+; 16648: 	OP_CAST_INT_TO_LONGLONG(l_v30725, l_v30726);
+
+	mov	eax, DWORD PTR _l_v30725$[ebp]
+	cdq
+	mov	DWORD PTR _l_v30726$[ebp], eax
+	mov	DWORD PTR _l_v30726$[ebp+4], edx
+
+; 16649: 	OP_LLONG_ADD(l_v30703, l_v30726, l_v30706);
+
+	mov	eax, DWORD PTR _l_v30703$[ebp]
+	add	eax, DWORD PTR _l_v30726$[ebp]
+	mov	ecx, DWORD PTR _l_v30703$[ebp+4]
+	adc	ecx, DWORD PTR _l_v30726$[ebp+4]
+	mov	DWORD PTR _l_v30706$[ebp], eax
+	mov	DWORD PTR _l_v30706$[ebp+4], ecx
+
+; 16650: 	OP_LLONG_FLOORDIV(l_v30706, l_n_38, l_v30727);
+
+	mov	edx, DWORD PTR _l_n_38$[ebp+4]
+	push	edx
+	mov	eax, DWORD PTR _l_n_38$[ebp]
+	push	eax
+	mov	ecx, DWORD PTR _l_v30706$[ebp+4]
+	push	ecx
+	mov	edx, DWORD PTR _l_v30706$[ebp]
+	push	edx
+	call	__alldiv
+    ;; expected {4(%ebp) | %ebx, %esi, %edi, (%ebp) | }
+	mov	DWORD PTR _l_v30727$[ebp], eax
+	mov	DWORD PTR _l_v30727$[ebp+4], edx
+
+; 16651: 	OP_LLONG_XOR(l_v30706, l_n_38, l_v30728);
+
+	mov	eax, DWORD PTR _l_v30706$[ebp]
+	xor	eax, DWORD PTR _l_n_38$[ebp]
+	mov	ecx, DWORD PTR _l_v30706$[ebp+4]
+	xor	ecx, DWORD PTR _l_n_38$[ebp+4]
+	mov	DWORD PTR _l_v30728$[ebp], eax
+	mov	DWORD PTR _l_v30728$[ebp+4], ecx
+
+; 16652: 	OP_LLONG_LE(l_v30728, 0LL, l_v30729);
+
+	jg	SHORT $LN15 at pypy_g__in
+	jl	SHORT $LN21 at pypy_g__in
+	cmp	DWORD PTR _l_v30728$[ebp], 0
+	ja	SHORT $LN15 at pypy_g__in
+$LN21 at pypy_g__in:
+	mov	DWORD PTR tv152[ebp], 1
+	jmp	SHORT $LN16 at pypy_g__in
+$LN15 at pypy_g__in:
+	mov	DWORD PTR tv152[ebp], 0
+$LN16 at pypy_g__in:
+	mov	dl, BYTE PTR tv152[ebp]
+	mov	BYTE PTR _l_v30729$[ebp], dl
+
+; 16653: 	OP_CAST_BOOL_TO_INT(l_v30729, l_v30730);
+
+	movzx	eax, BYTE PTR _l_v30729$[ebp]
+	mov	DWORD PTR _l_v30730$[ebp], eax
+
+; 16654: 	OP_CAST_INT_TO_LONGLONG(l_v30730, l_v30731);
+
+	mov	eax, DWORD PTR _l_v30730$[ebp]
+	cdq
+	mov	DWORD PTR _l_v30731$[ebp], eax
+	mov	DWORD PTR _l_v30731$[ebp+4], edx
+
+; 16655: 	OP_LLONG_MOD(l_v30706, l_n_38, l_v30732);
+
+	mov	ecx, DWORD PTR _l_n_38$[ebp+4]
+	push	ecx
+	mov	edx, DWORD PTR _l_n_38$[ebp]
+	push	edx
+	mov	eax, DWORD PTR _l_v30706$[ebp+4]
+	push	eax
+	mov	ecx, DWORD PTR _l_v30706$[ebp]
+	push	ecx
+	call	__allrem
+    ;; expected {4(%ebp) | %ebx, %esi, %edi, (%ebp) | }
+	mov	DWORD PTR _l_v30732$[ebp], eax
+	mov	DWORD PTR _l_v30732$[ebp+4], edx
+
+; 16656: 	OP_LLONG_NE(l_v30732, 0LL, l_v30733);
+
+	mov	edx, DWORD PTR _l_v30732$[ebp]
+	or	edx, DWORD PTR _l_v30732$[ebp+4]
+	je	SHORT $LN17 at pypy_g__in
+	mov	DWORD PTR tv158[ebp], 1
+	jmp	SHORT $LN18 at pypy_g__in
+$LN17 at pypy_g__in:
+	mov	DWORD PTR tv158[ebp], 0
+$LN18 at pypy_g__in:
+	mov	al, BYTE PTR tv158[ebp]
+	mov	BYTE PTR _l_v30733$[ebp], al
+
+; 16657: 	OP_CAST_BOOL_TO_INT(l_v30733, l_v30734);
+
+	movzx	ecx, BYTE PTR _l_v30733$[ebp]
+	mov	DWORD PTR _l_v30734$[ebp], ecx
+
+; 16658: 	OP_CAST_INT_TO_LONGLONG(l_v30734, l_v30735);
+
+	mov	eax, DWORD PTR _l_v30734$[ebp]
+	cdq
+	mov	DWORD PTR _l_v30735$[ebp], eax
+	mov	DWORD PTR _l_v30735$[ebp+4], edx
+
+; 16659: 	OP_LLONG_AND(l_v30731, l_v30735, l_v30736);
+
+	mov	edx, DWORD PTR _l_v30731$[ebp]
+	and	edx, DWORD PTR _l_v30735$[ebp]
+	mov	eax, DWORD PTR _l_v30731$[ebp+4]
+	and	eax, DWORD PTR _l_v30735$[ebp+4]
+	mov	DWORD PTR _l_v30736$[ebp], edx
+	mov	DWORD PTR _l_v30736$[ebp+4], eax
+
+; 16660: 	OP_LLONG_SUB(l_v30727, l_v30736, l_v30705);
+
+	mov	ecx, DWORD PTR _l_v30727$[ebp]
+	sub	ecx, DWORD PTR _l_v30736$[ebp]
+	mov	edx, DWORD PTR _l_v30727$[ebp+4]
+	sbb	edx, DWORD PTR _l_v30736$[ebp+4]
+	mov	DWORD PTR _l_v30705$[ebp], ecx
+	mov	DWORD PTR _l_v30705$[ebp+4], edx
+
+; 16661: 	OP_LLONG_AND(l_v30705, 2147483647LL, l_v30737);
+
+	mov	eax, DWORD PTR _l_v30705$[ebp]
+	and	eax, 2147483647				; 7fffffffH
+	mov	ecx, DWORD PTR _l_v30705$[ebp+4]
+	and	ecx, 0
+	mov	DWORD PTR _l_v30737$[ebp], eax
+	mov	DWORD PTR _l_v30737$[ebp+4], ecx
+
+; 16662: 	OP_TRUNCATE_LONGLONG_TO_INT(l_v30737, l_v30704);
+
+	mov	edx, DWORD PTR _l_v30737$[ebp]
+	mov	DWORD PTR _l_v30704$[ebp], edx
+
+; 16663: 	OP_INT_GE(l_v30704, 0L, l_v30738);
+
+	xor	eax, eax
+	cmp	DWORD PTR _l_v30704$[ebp], 0
+	setge	al
+	mov	BYTE PTR _l_v30738$[ebp], al
+
+; 16664: 	if (l_v30738) {
+
+	movzx	ecx, BYTE PTR _l_v30738$[ebp]
+	test	ecx, ecx
+	je	SHORT $LN2 at pypy_g__in
+
+; 16665: 		goto block11;
+
+	jmp	SHORT $block11$210908
+$LN2 at pypy_g__in:
+
+; 16666: 	}
+; 16667: 	l_evalue_70 = (&pypy_g_exceptions_AssertionError.ae_super.se_super.e_super);
+
+	mov	DWORD PTR _l_evalue_70$[ebp], OFFSET _pypy_g_exceptions_AssertionError
+
+; 16668: 	goto block1;
+
+	jmp	$block1$210883
+$block11$210908:
+
+; 16669: 
+; 16670:     block11:
+; 16671: 	l_l_101 = RPyField(l_self_3688, prrr_inst_digits);
+
+	mov	edx, DWORD PTR _l_self_3688$[ebp]
+	mov	eax, DWORD PTR [edx+8]
+	mov	DWORD PTR _l_l_101$[ebp], eax
+
+; 16672: 	l_length_82 = l_l_101->length;
+
+	mov	ecx, DWORD PTR _l_l_101$[ebp]
+	mov	edx, DWORD PTR [ecx+4]
+	mov	DWORD PTR _l_length_82$[ebp], edx
+
+; 16673: 	OP_INT_LT(l_x_97, 0L, l_v30739);
+
+	xor	eax, eax
+	cmp	DWORD PTR _l_x_97$[ebp], 0
+	setl	al
+	mov	BYTE PTR _l_v30739$[ebp], al
+
+; 16674: 	if (l_v30739) {
+
+	movzx	ecx, BYTE PTR _l_v30739$[ebp]
+	test	ecx, ecx
+	je	SHORT $LN1 at pypy_g__in
+
+; 16675: 		goto block13;
+
+	jmp	$block13$210910
+$LN1 at pypy_g__in:
+
+; 16676: 	}
+; 16677: 	l_index_219 = l_x_97;
+
+	mov	edx, DWORD PTR _l_x_97$[ebp]
+	mov	DWORD PTR _l_index_219$[ebp], edx
+$block12$210911:
+
+; 16678: 	goto block12;
+; 16679: 
+; 16680:     block12:
+; 16681: 	OP_INT_GE(l_index_219, 0L, l_v30740);
+
+	xor	eax, eax
+	cmp	DWORD PTR _l_index_219$[ebp], 0
+	setge	al
+	mov	BYTE PTR _l_v30740$[ebp], al
+
+; 16682: 	RPyAssert(l_v30740, "negative list setitem index out of bound");
+; 16683: 	OP_INT_LT(l_index_219, l_length_82, l_v30742);
+
+	mov	ecx, DWORD PTR _l_index_219$[ebp]
+	xor	edx, edx
+	cmp	ecx, DWORD PTR _l_length_82$[ebp]
+	setl	dl
+	mov	BYTE PTR _l_v30742$[ebp], dl
+
+; 16684: 	RPyAssert(l_v30742, "list setitem index out of bound");
+; 16685: 	l_v30744 = l_l_101->length;
+
+	mov	eax, DWORD PTR _l_l_101$[ebp]
+	mov	ecx, DWORD PTR [eax+4]
+	mov	DWORD PTR _l_v30744$[ebp], ecx
+
+; 16686: 	OP_INT_LT(l_index_219, l_v30744, l_v30745);
+
+	mov	edx, DWORD PTR _l_index_219$[ebp]
+	xor	eax, eax
+	cmp	edx, DWORD PTR _l_v30744$[ebp]
+	setl	al
+	mov	BYTE PTR _l_v30745$[ebp], al
+
+; 16687: 	RPyAssert(l_v30745, "fixed setitem out of bounds");
+; 16688: 	RPyItem(l_l_101, l_index_219) = l_v30704;
+
+	mov	ecx, DWORD PTR _l_index_219$[ebp]
+	mov	edx, DWORD PTR _l_l_101$[ebp]
+	mov	eax, DWORD PTR _l_v30704$[ebp]
+	mov	DWORD PTR [edx+ecx*4+8], eax
+
+; 16689: 	OP_LLONG_MUL(l_v30705, l_n_38, l_v30748);
+
+	mov	ecx, DWORD PTR _l_n_38$[ebp+4]
+	push	ecx
+	mov	edx, DWORD PTR _l_n_38$[ebp]
+	push	edx
+	mov	eax, DWORD PTR _l_v30705$[ebp+4]
+	push	eax
+	mov	ecx, DWORD PTR _l_v30705$[ebp]
+	push	ecx
+	call	__allmul
+    ;; expected {4(%ebp) | %ebx, %esi, %edi, (%ebp) | }
+	mov	DWORD PTR _l_v30748$[ebp], eax
+	mov	DWORD PTR _l_v30748$[ebp+4], edx
+
+; 16690: 	OP_LLONG_SUB(l_v30706, l_v30748, l_v30749);
+
+	mov	edx, DWORD PTR _l_v30706$[ebp]
+	sub	edx, DWORD PTR _l_v30748$[ebp]
+	mov	eax, DWORD PTR _l_v30706$[ebp+4]
+	sbb	eax, DWORD PTR _l_v30748$[ebp+4]
+	mov	DWORD PTR _l_v30749$[ebp], edx
+	mov	DWORD PTR _l_v30749$[ebp+4], eax
+
+; 16691: 	OP_INT_SUB(l_x_97, 1L, l_v30750);
+
+	mov	ecx, DWORD PTR _l_x_97$[ebp]
+	sub	ecx, 1
+	mov	DWORD PTR _l_v30750$[ebp], ecx
+
+; 16692: 	l_v30702 = l_v30749;
+
+	mov	edx, DWORD PTR _l_v30749$[ebp]
+	mov	DWORD PTR _l_v30702$[ebp], edx
+	mov	eax, DWORD PTR _l_v30749$[ebp+4]
+	mov	DWORD PTR _l_v30702$[ebp+4], eax
+
+; 16693: 	l_x_97 = l_v30750;
+
+	mov	ecx, DWORD PTR _l_v30750$[ebp]
+	mov	DWORD PTR _l_x_97$[ebp], ecx
+
+; 16694: 	goto block7_back;
+
+	jmp	$block7_back$210895
+$block13$210910:
+
+; 16695: 
+; 16696:     block13:
+; 16697: 	OP_INT_ADD(l_x_97, l_length_82, l_v30751);
+
+	mov	edx, DWORD PTR _l_x_97$[ebp]
+	add	edx, DWORD PTR _l_length_82$[ebp]
+	mov	DWORD PTR _l_v30751$[ebp], edx
+
+; 16698: 	l_index_219 = l_v30751;
+
+	mov	eax, DWORD PTR _l_v30751$[ebp]
+	mov	DWORD PTR _l_index_219$[ebp], eax
+
+; 16699: 	goto block12;
+
+	jmp	$block12$210911
+$block14$210899:
+
+; 16700: 
+; 16701:     block14:
+; 16702: 	OP_INT_ADD(l_x_97, l_length_83, l_v30752);
+
+	mov	ecx, DWORD PTR _l_x_97$[ebp]
+	add	ecx, DWORD PTR _l_length_83$[ebp]
+	mov	DWORD PTR _l_v30752$[ebp], ecx
+
+; 16703: 	l_index_218 = l_v30752;
+
+	mov	edx, DWORD PTR _l_v30752$[ebp]
+	mov	DWORD PTR _l_index_218$[ebp], edx
+
+; 16704: 	goto block10;
+
+	jmp	$block10$210900
+$LN9 at pypy_g__in:
+
+; 16705: }
+
+	mov	esp, ebp
+	pop	ebp
+	ret	0
+_pypy_g__inplace_divrem1 ENDP

Modified: pypy/branch/msvc-asmgcroot/pypy/translator/c/gcc/test/msvc/track8.s
==============================================================================
--- pypy/branch/msvc-asmgcroot/pypy/translator/c/gcc/test/msvc/track8.s	(original)
+++ pypy/branch/msvc-asmgcroot/pypy/translator/c/gcc/test/msvc/track8.s	Thu Nov  5 23:13:47 2009
@@ -1,547 +1,547 @@
-; Function compile flags: /Ogtpy
-;	COMDAT _pypy_g_foo
-_TEXT	SEGMENT
-tv419 = -8						; size = 4
-_l_v416$ = -4						; size = 4
-_l_v413$ = -4						; size = 4
-_l_v410$ = -4						; size = 4
-_l_v407$ = -4						; size = 4
-_l_v404$ = -4						; size = 4
-_l_v401$ = -4						; size = 4
-_l_v394$ = -4						; size = 4
-_l_v391$ = -4						; size = 4
-_l_v388$ = -4						; size = 4
-_l_v385$ = -4						; size = 4
-_l_v382$ = -4						; size = 4
-_l_v379$ = -4						; size = 4
-_l_v376$ = -4						; size = 4
-_l_v368$ = -4						; size = 4
-_l_v365$ = -4						; size = 4
-_l_v362$ = -4						; size = 4
-_l_v359$ = -4						; size = 4
-_l_v356$ = -4						; size = 4
-_l_v353$ = -4						; size = 4
-_local$40423 = 8					; size = 1
-_l_rec_1$ = 8						; size = 4
-_l_a1_1$ = 12						; size = 4
-_l_a2_1$ = 16						; size = 4
-_l_a3_1$ = 20						; size = 4
-_l_a4_1$ = 24						; size = 4
-_l_a5_1$ = 28						; size = 4
-_l_a6_1$ = 32						; size = 4
-_pypy_g_foo PROC					; COMDAT
-
-; 1026 : 	bool_t l_v337; bool_t l_v340; bool_t l_v345; bool_t l_v346;
-; 1027 : 	bool_t l_v371; bool_t l_v398; bool_t l_v420; bool_t l_v426;
-; 1028 : 	long l_v342; long l_v344; long l_v374; long l_v399; long l_v421;
-; 1029 : 	struct pypy_header0 *l_v347; struct pypy_object0 *l_v372;
-; 1030 : 	struct pypy_object_vtable0 *l_v339;
-; 1031 : 	struct pypy_object_vtable0 *l_v397;
-; 1032 : 	struct pypy_object_vtable0 *l_v419;
-; 1033 : 	struct pypy_object_vtable0 *l_v425; struct pypy_src8_A0 *l_v335;
-; 1034 : 	void* l_v336; void* l_v341; void* l_v343; void* l_v349; void* l_v351;
-; 1035 : 	void* l_v352; void* l_v353; void* l_v354; void* l_v356; void* l_v357;
-; 1036 : 	void* l_v359; void* l_v360; void* l_v362; void* l_v363; void* l_v365;
-; 1037 : 	void* l_v366; void* l_v368; void* l_v369; void* l_v376; void* l_v377;
-; 1038 : 	void* l_v379; void* l_v380; void* l_v382; void* l_v383; void* l_v385;
-; 1039 : 	void* l_v386; void* l_v388; void* l_v389; void* l_v391; void* l_v392;
-; 1040 : 	void* l_v394; void* l_v395; void* l_v401; void* l_v402; void* l_v404;
-; 1041 : 	void* l_v405; void* l_v407; void* l_v408; void* l_v410; void* l_v411;
-; 1042 : 	void* l_v413; void* l_v414; void* l_v416; void* l_v417; void* l_v424;
-; 1043 : 	void* l_v428;
-; 1044 : 
-; 1045 :     block0:
-; 1046 : 	OP_INT_GT(l_rec_1, 0L, l_v337);
-
-	mov	eax, DWORD PTR _l_rec_1$[esp-4]
-	sub	esp, 8
-	test	eax, eax
-$block0$34376:
-
-; 1047 : 	if (l_v337) {
-
-	jle	$block1$34379
-	push	ebx
-	mov	ebx, DWORD PTR _l_a2_1$[esp+8]
-	push	ebp
-	mov	ebp, DWORD PTR _l_a1_1$[esp+12]
-	push	edi
-	mov	edi, DWORD PTR _l_a3_1$[esp+16]
-	add	eax, -1
-	mov	DWORD PTR tv419[esp+20], eax
-	push	esi
-	npad	10
-$LL63 at pypy_g_foo:
-
-; 1048 : 		goto block2;
-; 1049 : 	}
-; 1050 : 	goto block1;
-; 1051 : 
-; 1052 :     block1:
-; 1053 : 	RPY_DEBUG_RETURN();
-; 1054 : 	return /* nothing */;
-; 1055 : 
-; 1056 :     block2:
-; 1057 : 	pypy_g_stack_check___();
-
-	lea	eax, DWORD PTR _local$40423[esp+20]
-	sub	eax, DWORD PTR __LLstacktoobig_stack_base_pointer
-$block0$40413:
-	cmp	eax, DWORD PTR __LLstacktoobig_stack_min
-$block2$34378:
-	jl	SHORT $LN16 at pypy_g_foo
-	cmp	eax, DWORD PTR __LLstacktoobig_stack_max
-	jle	SHORT $LN17 at pypy_g_foo
-$LN16 at pypy_g_foo:
-	call	_LL_stack_too_big_slowpath
-	;; expected {24(%esp) | 12(%esp), (%esp), 4(%esp), 8(%esp) | %ebx, %edi, %ebp, 44(%esp), 48(%esp), 52(%esp)}
-	test	eax, eax
-	jne	$LN71 at pypy_g_foo
-$LN17 at pypy_g_foo:
-$block1$40416:
-
-; 1058 : 	l_v339 = RPyField((&pypy_g_ExcData), ed_exc_type);
-; 1059 : 	l_v340 = (l_v339 == NULL);
-
-	cmp	DWORD PTR _pypy_g_ExcData, 0
-
-; 1060 : 	if (!l_v340) {
-
-	jne	$LN75 at pypy_g_foo
-
-; 1061 : 		goto block1;
-; 1062 : 	}
-; 1063 : 	goto block3;
-; 1064 : 
-; 1065 :     block3:
-; 1066 : 	l_v341 = RPyField((&pypy_g_pypy_rpython_memory_gc_semispace_SemiSpaceGC), ssgc_inst_free);
-
-	mov	esi, DWORD PTR _pypy_g_pypy_rpython_memory_gc_semispace_SemiSpaceGC+12
-
-; 1067 : 	OP_RAW_MALLOC_USAGE((0 + ROUND_UP_FOR_ALLOCATION(sizeof(struct pypy_src8_A0), sizeof(struct pypy_forwarding_stub0))), l_v342);
-; 1068 : 	l_v343 = RPyField((&pypy_g_pypy_rpython_memory_gc_semispace_SemiSpaceGC), ssgc_inst_top_of_space);
-; 1069 : 	OP_ADR_DELTA(l_v343, l_v341, l_v344);
-
-	mov	eax, DWORD PTR _pypy_g_pypy_rpython_memory_gc_semispace_SemiSpaceGC+80
-	sub	eax, esi
-
-; 1070 : 	OP_INT_GT(l_v342, l_v344, l_v345);
-
-	cmp	eax, 8
-$block3$34382:
-
-; 1071 : 	if (l_v345) {
-
-	jge	SHORT $block4$34395
-
-; 1184 : 	goto block1;
-; 1185 : 
-; 1186 :     block10:
-; 1187 : 	abort();  /* debug_llinterpcall should be unreachable */
-; 1188 : 	goto block5;
-; 1189 : 
-; 1190 :     block11:
-; 1191 : 	l_v424 = pypy_g_SemiSpaceGC_obtain_free_space((&pypy_g_pypy_rpython_memory_gc_semispace_SemiSpaceGC), (0 + ROUND_UP_FOR_ALLOCATION(sizeof(struct pypy_src8_A0), sizeof(struct pypy_forwarding_stub0))));
-
-	push	8
-	push	OFFSET _pypy_g_pypy_rpython_memory_gc_semispace_SemiSpaceGC
-$block11$34394:
-	call	_pypy_g_SemiSpaceGC_obtain_free_space
-	;; expected {32(%esp) | 20(%esp), 8(%esp), 12(%esp), 16(%esp) | %ebx, %edi, %ebp, 52(%esp), 56(%esp), 60(%esp)}
-	add	esp, 8
-
-; 1192 : 	l_v425 = RPyField((&pypy_g_ExcData), ed_exc_type);
-; 1193 : 	l_v426 = (l_v425 == NULL);
-
-	cmp	DWORD PTR _pypy_g_ExcData, 0
-
-; 1194 : 	if (!l_v426) {
-
-	je	SHORT $LN1 at pypy_g_foo
-
-; 1195 : 		l_v428 = NULL;
-
-	xor	esi, esi
-
-; 1196 : 		goto block6;
-
-	jmp	SHORT $block6$34416
-$LN1 at pypy_g_foo:
-
-; 1197 : 	}
-; 1198 : 	l_v336 = l_v424;
-
-	mov	esi, eax
-$block4$34395:
-
-; 1072 : 		goto block11;
-; 1073 : 	}
-; 1074 : 	l_v336 = l_v341;
-; 1075 : 	goto block4;
-; 1076 : 
-; 1077 :     block4:
-; 1078 : 	OP_INT_IS_TRUE(RUNNING_ON_LLINTERP, l_v346);
-; 1079 : 	if (l_v346) {
-; 1080 : 		goto block10;
-; 1081 : 	}
-; 1082 : 	goto block5;
-; 1083 : 
-; 1084 :     block5:
-; 1085 : 	l_v347 = (struct pypy_header0 *)l_v336;
-; 1086 : 	RPyField(l_v347, h_tid) = (GROUP_MEMBER_OFFSET(struct group_pypy_g_typeinfo_s, member1)|0L);
-; 1087 : 	OP_ADR_ADD(l_v336, (0 + ROUND_UP_FOR_ALLOCATION(sizeof(struct pypy_src8_A0), sizeof(struct pypy_forwarding_stub0))), l_v349);
-
-	lea	ecx, DWORD PTR [esi+8]
-	mov	DWORD PTR [esi], 1
-$block5$34398:
-
-; 1088 : 	RPyField((&pypy_g_pypy_rpython_memory_gc_semispace_SemiSpaceGC), ssgc_inst_free) = l_v349;
-
-	mov	DWORD PTR _pypy_g_pypy_rpython_memory_gc_semispace_SemiSpaceGC+12, ecx
-$block6$34416:
-
-; 1089 : 	OP_ADR_ADD(l_v336, 0, l_v351);
-; 1090 : 	l_v352 = (void*)l_v351;
-; 1091 : 	l_v428 = l_v352;
-; 1092 : 	goto block6;
-; 1093 : 
-; 1094 :     block6:
-; 1095 : 	l_v353 = (void*)l_a2_1;
-
-	mov	DWORD PTR _l_v353$[esp+24], ebx
-
-; 1096 : 	l_v354 = pypy_asm_gcroot(l_v353);
-
-	mov	eax, DWORD PTR ?_constant_always_one_@?1??pypy_asm_gcroot@@9 at 9
-	imul	eax, DWORD PTR _l_v353$[esp+24]
-
-; 1097 : 	l_a2_1 = l_v354; /* for moving GCs */
-; 1098 : 	l_v356 = (void*)l_a5_1;
-
-	mov	edx, DWORD PTR _l_a5_1$[esp+20]
-	mov	DWORD PTR _l_v356$[esp+24], edx
-
-; 1099 : 	l_v357 = pypy_asm_gcroot(l_v356);
-
-	mov	eax, DWORD PTR ?_constant_always_one_@?1??pypy_asm_gcroot@@9 at 9
-	imul	eax, DWORD PTR _l_v356$[esp+24]
-
-; 1100 : 	l_a5_1 = l_v357; /* for moving GCs */
-; 1101 : 	l_v359 = (void*)l_a6_1;
-
-	mov	eax, DWORD PTR _l_a6_1$[esp+20]
-	mov	DWORD PTR _l_v359$[esp+24], eax
-
-; 1102 : 	l_v360 = pypy_asm_gcroot(l_v359);
-
-	mov	eax, DWORD PTR ?_constant_always_one_@?1??pypy_asm_gcroot@@9 at 9
-	imul	eax, DWORD PTR _l_v359$[esp+24]
-
-; 1103 : 	l_a6_1 = l_v360; /* for moving GCs */
-; 1104 : 	l_v362 = (void*)l_a1_1;
-
-	mov	DWORD PTR _l_v362$[esp+24], ebp
-
-; 1105 : 	l_v363 = pypy_asm_gcroot(l_v362);
-
-	mov	eax, DWORD PTR ?_constant_always_one_@?1??pypy_asm_gcroot@@9 at 9
-	imul	eax, DWORD PTR _l_v362$[esp+24]
-
-; 1106 : 	l_a1_1 = l_v363; /* for moving GCs */
-; 1107 : 	l_v365 = (void*)l_a3_1;
-
-	mov	DWORD PTR _l_v365$[esp+24], edi
-
-; 1108 : 	l_v366 = pypy_asm_gcroot(l_v365);
-
-	mov	eax, DWORD PTR ?_constant_always_one_@?1??pypy_asm_gcroot@@9 at 9
-	imul	eax, DWORD PTR _l_v365$[esp+24]
-
-; 1109 : 	l_a3_1 = l_v366; /* for moving GCs */
-; 1110 : 	l_v368 = (void*)l_a4_1;
-
-	mov	ecx, DWORD PTR _l_a4_1$[esp+20]
-	mov	DWORD PTR _l_v368$[esp+24], ecx
-
-; 1111 : 	l_v369 = pypy_asm_gcroot(l_v368);
-
-	mov	eax, DWORD PTR ?_constant_always_one_@?1??pypy_asm_gcroot@@9 at 9
-	imul	eax, DWORD PTR _l_v368$[esp+24]
-
-; 1112 : 	l_a4_1 = l_v369; /* for moving GCs */
-; 1113 : 	l_v335 = (struct pypy_src8_A0 *)l_v428;
-; 1114 : 	l_v371 = (l_v335 != NULL);
-
-	test	esi, esi
-
-; 1115 : 	if (!l_v371) {
-
-	je	$LN75 at pypy_g_foo
-
-; 1116 : 		goto block1;
-; 1117 : 	}
-; 1118 : 	goto block7;
-; 1119 : 
-; 1120 :     block7:
-; 1121 : 	l_v372 = (struct pypy_object0 *)l_v335;
-; 1122 : 	RPyField(l_v372, o_typeptr) = (&pypy_g_src8_A_vtable.a_super);
-; 1123 : 	OP_INT_SUB(l_rec_1, 1L, l_v374);
-; 1124 : 	pypy_g_foo(l_v374, l_v335, l_v335, l_v335, l_v335, l_v335, l_v335);
-
-	mov	edx, DWORD PTR tv419[esp+24]
-	push	esi
-	push	esi
-	push	esi
-	push	esi
-	push	esi
-	push	esi
-	push	edx
-$block7$34426:
-	mov	DWORD PTR [esi+4], OFFSET _pypy_g_src8_A_vtable
-	call	_pypy_g_foo
-	;; expected {52(%esp) | 40(%esp), 28(%esp), 32(%esp), 36(%esp) | %ebx, %esi, %edi, %ebp, 72(%esp), 76(%esp), 80(%esp)}
-	add	esp, 28					; 0000001cH
-
-; 1125 : 	l_v376 = (void*)l_a2_1;
-
-	mov	DWORD PTR _l_v376$[esp+24], ebx
-
-; 1126 : 	l_v377 = pypy_asm_gcroot(l_v376);
-
-	mov	eax, DWORD PTR ?_constant_always_one_@?1??pypy_asm_gcroot@@9 at 9
-	imul	eax, DWORD PTR _l_v376$[esp+24]
-
-; 1127 : 	l_a2_1 = l_v377; /* for moving GCs */
-; 1128 : 	l_v379 = (void*)l_a6_1;
-
-	mov	eax, DWORD PTR _l_a6_1$[esp+20]
-	mov	DWORD PTR _l_v379$[esp+24], eax
-
-; 1129 : 	l_v380 = pypy_asm_gcroot(l_v379);
-
-	mov	eax, DWORD PTR ?_constant_always_one_@?1??pypy_asm_gcroot@@9 at 9
-	imul	eax, DWORD PTR _l_v379$[esp+24]
-
-; 1130 : 	l_a6_1 = l_v380; /* for moving GCs */
-; 1131 : 	l_v382 = (void*)l_a1_1;
-
-	mov	DWORD PTR _l_v382$[esp+24], ebp
-
-; 1132 : 	l_v383 = pypy_asm_gcroot(l_v382);
-
-	mov	eax, DWORD PTR ?_constant_always_one_@?1??pypy_asm_gcroot@@9 at 9
-	imul	eax, DWORD PTR _l_v382$[esp+24]
-
-; 1133 : 	l_a1_1 = l_v383; /* for moving GCs */
-; 1134 : 	l_v385 = (void*)l_v335;
-
-	mov	DWORD PTR _l_v385$[esp+24], esi
-
-; 1135 : 	l_v386 = pypy_asm_gcroot(l_v385);
-
-	mov	eax, DWORD PTR ?_constant_always_one_@?1??pypy_asm_gcroot@@9 at 9
-	imul	eax, DWORD PTR _l_v385$[esp+24]
-
-; 1136 : 	l_v335 = l_v386; /* for moving GCs */
-; 1137 : 	l_v388 = (void*)l_a3_1;
-
-	mov	DWORD PTR _l_v388$[esp+24], edi
-
-; 1138 : 	l_v389 = pypy_asm_gcroot(l_v388);
-
-	mov	eax, DWORD PTR ?_constant_always_one_@?1??pypy_asm_gcroot@@9 at 9
-	imul	eax, DWORD PTR _l_v388$[esp+24]
-
-; 1139 : 	l_a3_1 = l_v389; /* for moving GCs */
-; 1140 : 	l_v391 = (void*)l_a5_1;
-
-	mov	ecx, DWORD PTR _l_a5_1$[esp+20]
-	mov	DWORD PTR _l_v391$[esp+24], ecx
-
-; 1141 : 	l_v392 = pypy_asm_gcroot(l_v391);
-
-	mov	eax, DWORD PTR ?_constant_always_one_@?1??pypy_asm_gcroot@@9 at 9
-	imul	eax, DWORD PTR _l_v391$[esp+24]
-
-; 1142 : 	l_a5_1 = l_v392; /* for moving GCs */
-; 1143 : 	l_v394 = (void*)l_a4_1;
-
-	mov	edx, DWORD PTR _l_a4_1$[esp+20]
-	mov	DWORD PTR _l_v394$[esp+24], edx
-
-; 1144 : 	l_v395 = pypy_asm_gcroot(l_v394);
-
-	mov	eax, DWORD PTR ?_constant_always_one_@?1??pypy_asm_gcroot@@9 at 9
-	imul	eax, DWORD PTR _l_v394$[esp+24]
-
-; 1145 : 	l_a4_1 = l_v395; /* for moving GCs */
-; 1146 : 	l_v397 = RPyField((&pypy_g_ExcData), ed_exc_type);
-; 1147 : 	l_v398 = (l_v397 == NULL);
-
-	cmp	DWORD PTR _pypy_g_ExcData, 0
-
-; 1148 : 	if (!l_v398) {
-
-	jne	$LN75 at pypy_g_foo
-
-; 1149 : 		goto block1;
-; 1150 : 	}
-; 1151 : 	goto block8;
-; 1152 : 
-; 1153 :     block8:
-; 1154 : 	OP_INT_SUB(l_rec_1, 1L, l_v399);
-; 1155 : 	pypy_g_foo(l_v399, l_v335, l_v335, l_v335, l_v335, l_v335, l_v335);
-
-	mov	eax, DWORD PTR tv419[esp+24]
-	push	esi
-	push	esi
-	push	esi
-	push	esi
-	push	esi
-	push	esi
-	push	eax
-$block8$34437:
-	call	_pypy_g_foo
-	;; expected {52(%esp) | 40(%esp), 28(%esp), 32(%esp), 36(%esp) | %ebx, %edi, %ebp, 72(%esp), 76(%esp), 80(%esp)}
-	add	esp, 28					; 0000001cH
-
-; 1156 : 	l_v401 = (void*)l_a2_1;
-
-	mov	DWORD PTR _l_v401$[esp+24], ebx
-
-; 1157 : 	l_v402 = pypy_asm_gcroot(l_v401);
-
-	mov	eax, DWORD PTR ?_constant_always_one_@?1??pypy_asm_gcroot@@9 at 9
-	imul	eax, DWORD PTR _l_v401$[esp+24]
-
-; 1158 : 	l_a2_1 = l_v402; /* for moving GCs */
-; 1159 : 	l_v404 = (void*)l_a1_1;
-
-	mov	DWORD PTR _l_v404$[esp+24], ebp
-
-; 1160 : 	l_v405 = pypy_asm_gcroot(l_v404);
-
-	mov	eax, DWORD PTR ?_constant_always_one_@?1??pypy_asm_gcroot@@9 at 9
-	imul	eax, DWORD PTR _l_v404$[esp+24]
-
-; 1161 : 	l_a1_1 = l_v405; /* for moving GCs */
-; 1162 : 	l_v407 = (void*)l_a3_1;
-
-	mov	DWORD PTR _l_v407$[esp+24], edi
-
-; 1163 : 	l_v408 = pypy_asm_gcroot(l_v407);
-
-	mov	eax, DWORD PTR ?_constant_always_one_@?1??pypy_asm_gcroot@@9 at 9
-	imul	eax, DWORD PTR _l_v407$[esp+24]
-
-; 1164 : 	l_a3_1 = l_v408; /* for moving GCs */
-; 1165 : 	l_v410 = (void*)l_a6_1;
-
-	mov	ecx, DWORD PTR _l_a6_1$[esp+20]
-	mov	DWORD PTR _l_v410$[esp+24], ecx
-
-; 1166 : 	l_v411 = pypy_asm_gcroot(l_v410);
-
-	mov	eax, DWORD PTR ?_constant_always_one_@?1??pypy_asm_gcroot@@9 at 9
-	imul	eax, DWORD PTR _l_v410$[esp+24]
-
-; 1167 : 	l_a6_1 = l_v411; /* for moving GCs */
-; 1168 : 	l_v413 = (void*)l_a5_1;
-
-	mov	edx, DWORD PTR _l_a5_1$[esp+20]
-	mov	DWORD PTR _l_v413$[esp+24], edx
-
-; 1169 : 	l_v414 = pypy_asm_gcroot(l_v413);
-
-	mov	eax, DWORD PTR ?_constant_always_one_@?1??pypy_asm_gcroot@@9 at 9
-	imul	eax, DWORD PTR _l_v413$[esp+24]
-
-; 1170 : 	l_a5_1 = l_v414; /* for moving GCs */
-; 1171 : 	l_v416 = (void*)l_a4_1;
-
-	mov	esi, DWORD PTR _l_a4_1$[esp+20]
-	mov	DWORD PTR _l_v416$[esp+24], esi
-
-; 1172 : 	l_v417 = pypy_asm_gcroot(l_v416);
-
-	mov	eax, DWORD PTR ?_constant_always_one_@?1??pypy_asm_gcroot@@9 at 9
-	imul	eax, DWORD PTR _l_v416$[esp+24]
-
-; 1173 : 	l_a4_1 = l_v417; /* for moving GCs */
-; 1174 : 	l_v419 = RPyField((&pypy_g_ExcData), ed_exc_type);
-; 1175 : 	l_v420 = (l_v419 == NULL);
-
-	cmp	DWORD PTR _pypy_g_ExcData, 0
-
-; 1176 : 	if (!l_v420) {
-
-	jne	SHORT $LN75 at pypy_g_foo
-
-; 1177 : 		goto block1;
-; 1178 : 	}
-; 1179 : 	goto block9;
-; 1180 : 
-; 1181 :     block9:
-; 1182 : 	OP_INT_SUB(l_rec_1, 1L, l_v421);
-; 1183 : 	pypy_g_foo(l_v421, l_a6_1, l_a5_1, l_a4_1, l_a3_1, l_a2_1, l_a1_1);
-
-	sub	DWORD PTR _l_rec_1$[esp+20], 1
-	sub	DWORD PTR tv419[esp+24], 1
-	cmp	DWORD PTR _l_rec_1$[esp+20], 0
-	mov	eax, ebp
-	mov	ebp, DWORD PTR _l_a6_1$[esp+20]
-	mov	ecx, ebx
-	mov	ebx, DWORD PTR _l_a5_1$[esp+20]
-	mov	edx, edi
-$block9$34446:
-	mov	edi, esi
-	mov	DWORD PTR _l_a4_1$[esp+20], edx
-	mov	DWORD PTR _l_a5_1$[esp+20], ecx
-	mov	DWORD PTR _l_a6_1$[esp+20], eax
-$block0_1$34376:
-	jg	$LL63 at pypy_g_foo
-	pop	esi
-	pop	edi
-	pop	ebp
-	pop	ebx
-
-; 1199 : 	goto block4;
-; 1200 : }
-
-	add	esp, 8
-	ret	0
-$LN71 at pypy_g_foo:
-$block0$40426:
-$block0$40437:
-$block0$40434:
-$block2$40415:
-
-; 1048 : 		goto block2;
-; 1049 : 	}
-; 1050 : 	goto block1;
-; 1051 : 
-; 1052 :     block1:
-; 1053 : 	RPY_DEBUG_RETURN();
-; 1054 : 	return /* nothing */;
-; 1055 : 
-; 1056 :     block2:
-; 1057 : 	pypy_g_stack_check___();
-
-	mov	DWORD PTR _pypy_g_ExcData, OFFSET _pypy_g_exceptions_RuntimeError_vtable
-	mov	DWORD PTR _pypy_g_ExcData+4, OFFSET _pypy_g_exceptions_RuntimeError
-$block1$40435:
-$block1$40438:
-$block1$40427:
-$LN75 at pypy_g_foo:
-	pop	esi
-	pop	edi
-	pop	ebp
-	pop	ebx
-$block1$34379:
-
-; 1199 : 	goto block4;
-; 1200 : }
-
-	add	esp, 8
-	ret	0
-_pypy_g_foo ENDP
+; Function compile flags: /Ogtpy
+;	COMDAT _pypy_g_foo
+_TEXT	SEGMENT
+tv419 = -8						; size = 4
+_l_v416$ = -4						; size = 4
+_l_v413$ = -4						; size = 4
+_l_v410$ = -4						; size = 4
+_l_v407$ = -4						; size = 4
+_l_v404$ = -4						; size = 4
+_l_v401$ = -4						; size = 4
+_l_v394$ = -4						; size = 4
+_l_v391$ = -4						; size = 4
+_l_v388$ = -4						; size = 4
+_l_v385$ = -4						; size = 4
+_l_v382$ = -4						; size = 4
+_l_v379$ = -4						; size = 4
+_l_v376$ = -4						; size = 4
+_l_v368$ = -4						; size = 4
+_l_v365$ = -4						; size = 4
+_l_v362$ = -4						; size = 4
+_l_v359$ = -4						; size = 4
+_l_v356$ = -4						; size = 4
+_l_v353$ = -4						; size = 4
+_local$40423 = 8					; size = 1
+_l_rec_1$ = 8						; size = 4
+_l_a1_1$ = 12						; size = 4
+_l_a2_1$ = 16						; size = 4
+_l_a3_1$ = 20						; size = 4
+_l_a4_1$ = 24						; size = 4
+_l_a5_1$ = 28						; size = 4
+_l_a6_1$ = 32						; size = 4
+_pypy_g_foo PROC					; COMDAT
+
+; 1026 : 	bool_t l_v337; bool_t l_v340; bool_t l_v345; bool_t l_v346;
+; 1027 : 	bool_t l_v371; bool_t l_v398; bool_t l_v420; bool_t l_v426;
+; 1028 : 	long l_v342; long l_v344; long l_v374; long l_v399; long l_v421;
+; 1029 : 	struct pypy_header0 *l_v347; struct pypy_object0 *l_v372;
+; 1030 : 	struct pypy_object_vtable0 *l_v339;
+; 1031 : 	struct pypy_object_vtable0 *l_v397;
+; 1032 : 	struct pypy_object_vtable0 *l_v419;
+; 1033 : 	struct pypy_object_vtable0 *l_v425; struct pypy_src8_A0 *l_v335;
+; 1034 : 	void* l_v336; void* l_v341; void* l_v343; void* l_v349; void* l_v351;
+; 1035 : 	void* l_v352; void* l_v353; void* l_v354; void* l_v356; void* l_v357;
+; 1036 : 	void* l_v359; void* l_v360; void* l_v362; void* l_v363; void* l_v365;
+; 1037 : 	void* l_v366; void* l_v368; void* l_v369; void* l_v376; void* l_v377;
+; 1038 : 	void* l_v379; void* l_v380; void* l_v382; void* l_v383; void* l_v385;
+; 1039 : 	void* l_v386; void* l_v388; void* l_v389; void* l_v391; void* l_v392;
+; 1040 : 	void* l_v394; void* l_v395; void* l_v401; void* l_v402; void* l_v404;
+; 1041 : 	void* l_v405; void* l_v407; void* l_v408; void* l_v410; void* l_v411;
+; 1042 : 	void* l_v413; void* l_v414; void* l_v416; void* l_v417; void* l_v424;
+; 1043 : 	void* l_v428;
+; 1044 : 
+; 1045 :     block0:
+; 1046 : 	OP_INT_GT(l_rec_1, 0L, l_v337);
+
+	mov	eax, DWORD PTR _l_rec_1$[esp-4]
+	sub	esp, 8
+	test	eax, eax
+$block0$34376:
+
+; 1047 : 	if (l_v337) {
+
+	jle	$block1$34379
+	push	ebx
+	mov	ebx, DWORD PTR _l_a2_1$[esp+8]
+	push	ebp
+	mov	ebp, DWORD PTR _l_a1_1$[esp+12]
+	push	edi
+	mov	edi, DWORD PTR _l_a3_1$[esp+16]
+	add	eax, -1
+	mov	DWORD PTR tv419[esp+20], eax
+	push	esi
+	npad	10
+$LL63 at pypy_g_foo:
+
+; 1048 : 		goto block2;
+; 1049 : 	}
+; 1050 : 	goto block1;
+; 1051 : 
+; 1052 :     block1:
+; 1053 : 	RPY_DEBUG_RETURN();
+; 1054 : 	return /* nothing */;
+; 1055 : 
+; 1056 :     block2:
+; 1057 : 	pypy_g_stack_check___();
+
+	lea	eax, DWORD PTR _local$40423[esp+20]
+	sub	eax, DWORD PTR __LLstacktoobig_stack_base_pointer
+$block0$40413:
+	cmp	eax, DWORD PTR __LLstacktoobig_stack_min
+$block2$34378:
+	jl	SHORT $LN16 at pypy_g_foo
+	cmp	eax, DWORD PTR __LLstacktoobig_stack_max
+	jle	SHORT $LN17 at pypy_g_foo
+$LN16 at pypy_g_foo:
+	call	_LL_stack_too_big_slowpath
+	;; expected {24(%esp) | 12(%esp), (%esp), 4(%esp), 8(%esp) | %ebx, %edi, %ebp, 44(%esp), 48(%esp), 52(%esp)}
+	test	eax, eax
+	jne	$LN71 at pypy_g_foo
+$LN17 at pypy_g_foo:
+$block1$40416:
+
+; 1058 : 	l_v339 = RPyField((&pypy_g_ExcData), ed_exc_type);
+; 1059 : 	l_v340 = (l_v339 == NULL);
+
+	cmp	DWORD PTR _pypy_g_ExcData, 0
+
+; 1060 : 	if (!l_v340) {
+
+	jne	$LN75 at pypy_g_foo
+
+; 1061 : 		goto block1;
+; 1062 : 	}
+; 1063 : 	goto block3;
+; 1064 : 
+; 1065 :     block3:
+; 1066 : 	l_v341 = RPyField((&pypy_g_pypy_rpython_memory_gc_semispace_SemiSpaceGC), ssgc_inst_free);
+
+	mov	esi, DWORD PTR _pypy_g_pypy_rpython_memory_gc_semispace_SemiSpaceGC+12
+
+; 1067 : 	OP_RAW_MALLOC_USAGE((0 + ROUND_UP_FOR_ALLOCATION(sizeof(struct pypy_src8_A0), sizeof(struct pypy_forwarding_stub0))), l_v342);
+; 1068 : 	l_v343 = RPyField((&pypy_g_pypy_rpython_memory_gc_semispace_SemiSpaceGC), ssgc_inst_top_of_space);
+; 1069 : 	OP_ADR_DELTA(l_v343, l_v341, l_v344);
+
+	mov	eax, DWORD PTR _pypy_g_pypy_rpython_memory_gc_semispace_SemiSpaceGC+80
+	sub	eax, esi
+
+; 1070 : 	OP_INT_GT(l_v342, l_v344, l_v345);
+
+	cmp	eax, 8
+$block3$34382:
+
+; 1071 : 	if (l_v345) {
+
+	jge	SHORT $block4$34395
+
+; 1184 : 	goto block1;
+; 1185 : 
+; 1186 :     block10:
+; 1187 : 	abort();  /* debug_llinterpcall should be unreachable */
+; 1188 : 	goto block5;
+; 1189 : 
+; 1190 :     block11:
+; 1191 : 	l_v424 = pypy_g_SemiSpaceGC_obtain_free_space((&pypy_g_pypy_rpython_memory_gc_semispace_SemiSpaceGC), (0 + ROUND_UP_FOR_ALLOCATION(sizeof(struct pypy_src8_A0), sizeof(struct pypy_forwarding_stub0))));
+
+	push	8
+	push	OFFSET _pypy_g_pypy_rpython_memory_gc_semispace_SemiSpaceGC
+$block11$34394:
+	call	_pypy_g_SemiSpaceGC_obtain_free_space
+	;; expected {32(%esp) | 20(%esp), 8(%esp), 12(%esp), 16(%esp) | %ebx, %edi, %ebp, 52(%esp), 56(%esp), 60(%esp)}
+	add	esp, 8
+
+; 1192 : 	l_v425 = RPyField((&pypy_g_ExcData), ed_exc_type);
+; 1193 : 	l_v426 = (l_v425 == NULL);
+
+	cmp	DWORD PTR _pypy_g_ExcData, 0
+
+; 1194 : 	if (!l_v426) {
+
+	je	SHORT $LN1 at pypy_g_foo
+
+; 1195 : 		l_v428 = NULL;
+
+	xor	esi, esi
+
+; 1196 : 		goto block6;
+
+	jmp	SHORT $block6$34416
+$LN1 at pypy_g_foo:
+
+; 1197 : 	}
+; 1198 : 	l_v336 = l_v424;
+
+	mov	esi, eax
+$block4$34395:
+
+; 1072 : 		goto block11;
+; 1073 : 	}
+; 1074 : 	l_v336 = l_v341;
+; 1075 : 	goto block4;
+; 1076 : 
+; 1077 :     block4:
+; 1078 : 	OP_INT_IS_TRUE(RUNNING_ON_LLINTERP, l_v346);
+; 1079 : 	if (l_v346) {
+; 1080 : 		goto block10;
+; 1081 : 	}
+; 1082 : 	goto block5;
+; 1083 : 
+; 1084 :     block5:
+; 1085 : 	l_v347 = (struct pypy_header0 *)l_v336;
+; 1086 : 	RPyField(l_v347, h_tid) = (GROUP_MEMBER_OFFSET(struct group_pypy_g_typeinfo_s, member1)|0L);
+; 1087 : 	OP_ADR_ADD(l_v336, (0 + ROUND_UP_FOR_ALLOCATION(sizeof(struct pypy_src8_A0), sizeof(struct pypy_forwarding_stub0))), l_v349);
+
+	lea	ecx, DWORD PTR [esi+8]
+	mov	DWORD PTR [esi], 1
+$block5$34398:
+
+; 1088 : 	RPyField((&pypy_g_pypy_rpython_memory_gc_semispace_SemiSpaceGC), ssgc_inst_free) = l_v349;
+
+	mov	DWORD PTR _pypy_g_pypy_rpython_memory_gc_semispace_SemiSpaceGC+12, ecx
+$block6$34416:
+
+; 1089 : 	OP_ADR_ADD(l_v336, 0, l_v351);
+; 1090 : 	l_v352 = (void*)l_v351;
+; 1091 : 	l_v428 = l_v352;
+; 1092 : 	goto block6;
+; 1093 : 
+; 1094 :     block6:
+; 1095 : 	l_v353 = (void*)l_a2_1;
+
+	mov	DWORD PTR _l_v353$[esp+24], ebx
+
+; 1096 : 	l_v354 = pypy_asm_gcroot(l_v353);
+
+	mov	eax, DWORD PTR ?_constant_always_one_@?1??pypy_asm_gcroot@@9 at 9
+	imul	eax, DWORD PTR _l_v353$[esp+24]
+
+; 1097 : 	l_a2_1 = l_v354; /* for moving GCs */
+; 1098 : 	l_v356 = (void*)l_a5_1;
+
+	mov	edx, DWORD PTR _l_a5_1$[esp+20]
+	mov	DWORD PTR _l_v356$[esp+24], edx
+
+; 1099 : 	l_v357 = pypy_asm_gcroot(l_v356);
+
+	mov	eax, DWORD PTR ?_constant_always_one_@?1??pypy_asm_gcroot@@9 at 9
+	imul	eax, DWORD PTR _l_v356$[esp+24]
+
+; 1100 : 	l_a5_1 = l_v357; /* for moving GCs */
+; 1101 : 	l_v359 = (void*)l_a6_1;
+
+	mov	eax, DWORD PTR _l_a6_1$[esp+20]
+	mov	DWORD PTR _l_v359$[esp+24], eax
+
+; 1102 : 	l_v360 = pypy_asm_gcroot(l_v359);
+
+	mov	eax, DWORD PTR ?_constant_always_one_@?1??pypy_asm_gcroot@@9 at 9
+	imul	eax, DWORD PTR _l_v359$[esp+24]
+
+; 1103 : 	l_a6_1 = l_v360; /* for moving GCs */
+; 1104 : 	l_v362 = (void*)l_a1_1;
+
+	mov	DWORD PTR _l_v362$[esp+24], ebp
+
+; 1105 : 	l_v363 = pypy_asm_gcroot(l_v362);
+
+	mov	eax, DWORD PTR ?_constant_always_one_@?1??pypy_asm_gcroot@@9 at 9
+	imul	eax, DWORD PTR _l_v362$[esp+24]
+
+; 1106 : 	l_a1_1 = l_v363; /* for moving GCs */
+; 1107 : 	l_v365 = (void*)l_a3_1;
+
+	mov	DWORD PTR _l_v365$[esp+24], edi
+
+; 1108 : 	l_v366 = pypy_asm_gcroot(l_v365);
+
+	mov	eax, DWORD PTR ?_constant_always_one_@?1??pypy_asm_gcroot@@9 at 9
+	imul	eax, DWORD PTR _l_v365$[esp+24]
+
+; 1109 : 	l_a3_1 = l_v366; /* for moving GCs */
+; 1110 : 	l_v368 = (void*)l_a4_1;
+
+	mov	ecx, DWORD PTR _l_a4_1$[esp+20]
+	mov	DWORD PTR _l_v368$[esp+24], ecx
+
+; 1111 : 	l_v369 = pypy_asm_gcroot(l_v368);
+
+	mov	eax, DWORD PTR ?_constant_always_one_@?1??pypy_asm_gcroot@@9 at 9
+	imul	eax, DWORD PTR _l_v368$[esp+24]
+
+; 1112 : 	l_a4_1 = l_v369; /* for moving GCs */
+; 1113 : 	l_v335 = (struct pypy_src8_A0 *)l_v428;
+; 1114 : 	l_v371 = (l_v335 != NULL);
+
+	test	esi, esi
+
+; 1115 : 	if (!l_v371) {
+
+	je	$LN75 at pypy_g_foo
+
+; 1116 : 		goto block1;
+; 1117 : 	}
+; 1118 : 	goto block7;
+; 1119 : 
+; 1120 :     block7:
+; 1121 : 	l_v372 = (struct pypy_object0 *)l_v335;
+; 1122 : 	RPyField(l_v372, o_typeptr) = (&pypy_g_src8_A_vtable.a_super);
+; 1123 : 	OP_INT_SUB(l_rec_1, 1L, l_v374);
+; 1124 : 	pypy_g_foo(l_v374, l_v335, l_v335, l_v335, l_v335, l_v335, l_v335);
+
+	mov	edx, DWORD PTR tv419[esp+24]
+	push	esi
+	push	esi
+	push	esi
+	push	esi
+	push	esi
+	push	esi
+	push	edx
+$block7$34426:
+	mov	DWORD PTR [esi+4], OFFSET _pypy_g_src8_A_vtable
+	call	_pypy_g_foo
+	;; expected {52(%esp) | 40(%esp), 28(%esp), 32(%esp), 36(%esp) | %ebx, %esi, %edi, %ebp, 72(%esp), 76(%esp), 80(%esp)}
+	add	esp, 28					; 0000001cH
+
+; 1125 : 	l_v376 = (void*)l_a2_1;
+
+	mov	DWORD PTR _l_v376$[esp+24], ebx
+
+; 1126 : 	l_v377 = pypy_asm_gcroot(l_v376);
+
+	mov	eax, DWORD PTR ?_constant_always_one_@?1??pypy_asm_gcroot@@9 at 9
+	imul	eax, DWORD PTR _l_v376$[esp+24]
+
+; 1127 : 	l_a2_1 = l_v377; /* for moving GCs */
+; 1128 : 	l_v379 = (void*)l_a6_1;
+
+	mov	eax, DWORD PTR _l_a6_1$[esp+20]
+	mov	DWORD PTR _l_v379$[esp+24], eax
+
+; 1129 : 	l_v380 = pypy_asm_gcroot(l_v379);
+
+	mov	eax, DWORD PTR ?_constant_always_one_@?1??pypy_asm_gcroot@@9 at 9
+	imul	eax, DWORD PTR _l_v379$[esp+24]
+
+; 1130 : 	l_a6_1 = l_v380; /* for moving GCs */
+; 1131 : 	l_v382 = (void*)l_a1_1;
+
+	mov	DWORD PTR _l_v382$[esp+24], ebp
+
+; 1132 : 	l_v383 = pypy_asm_gcroot(l_v382);
+
+	mov	eax, DWORD PTR ?_constant_always_one_@?1??pypy_asm_gcroot@@9 at 9
+	imul	eax, DWORD PTR _l_v382$[esp+24]
+
+; 1133 : 	l_a1_1 = l_v383; /* for moving GCs */
+; 1134 : 	l_v385 = (void*)l_v335;
+
+	mov	DWORD PTR _l_v385$[esp+24], esi
+
+; 1135 : 	l_v386 = pypy_asm_gcroot(l_v385);
+
+	mov	eax, DWORD PTR ?_constant_always_one_@?1??pypy_asm_gcroot@@9 at 9
+	imul	eax, DWORD PTR _l_v385$[esp+24]
+
+; 1136 : 	l_v335 = l_v386; /* for moving GCs */
+; 1137 : 	l_v388 = (void*)l_a3_1;
+
+	mov	DWORD PTR _l_v388$[esp+24], edi
+
+; 1138 : 	l_v389 = pypy_asm_gcroot(l_v388);
+
+	mov	eax, DWORD PTR ?_constant_always_one_@?1??pypy_asm_gcroot@@9 at 9
+	imul	eax, DWORD PTR _l_v388$[esp+24]
+
+; 1139 : 	l_a3_1 = l_v389; /* for moving GCs */
+; 1140 : 	l_v391 = (void*)l_a5_1;
+
+	mov	ecx, DWORD PTR _l_a5_1$[esp+20]
+	mov	DWORD PTR _l_v391$[esp+24], ecx
+
+; 1141 : 	l_v392 = pypy_asm_gcroot(l_v391);
+
+	mov	eax, DWORD PTR ?_constant_always_one_@?1??pypy_asm_gcroot@@9 at 9
+	imul	eax, DWORD PTR _l_v391$[esp+24]
+
+; 1142 : 	l_a5_1 = l_v392; /* for moving GCs */
+; 1143 : 	l_v394 = (void*)l_a4_1;
+
+	mov	edx, DWORD PTR _l_a4_1$[esp+20]
+	mov	DWORD PTR _l_v394$[esp+24], edx
+
+; 1144 : 	l_v395 = pypy_asm_gcroot(l_v394);
+
+	mov	eax, DWORD PTR ?_constant_always_one_@?1??pypy_asm_gcroot@@9 at 9
+	imul	eax, DWORD PTR _l_v394$[esp+24]
+
+; 1145 : 	l_a4_1 = l_v395; /* for moving GCs */
+; 1146 : 	l_v397 = RPyField((&pypy_g_ExcData), ed_exc_type);
+; 1147 : 	l_v398 = (l_v397 == NULL);
+
+	cmp	DWORD PTR _pypy_g_ExcData, 0
+
+; 1148 : 	if (!l_v398) {
+
+	jne	$LN75 at pypy_g_foo
+
+; 1149 : 		goto block1;
+; 1150 : 	}
+; 1151 : 	goto block8;
+; 1152 : 
+; 1153 :     block8:
+; 1154 : 	OP_INT_SUB(l_rec_1, 1L, l_v399);
+; 1155 : 	pypy_g_foo(l_v399, l_v335, l_v335, l_v335, l_v335, l_v335, l_v335);
+
+	mov	eax, DWORD PTR tv419[esp+24]
+	push	esi
+	push	esi
+	push	esi
+	push	esi
+	push	esi
+	push	esi
+	push	eax
+$block8$34437:
+	call	_pypy_g_foo
+	;; expected {52(%esp) | 40(%esp), 28(%esp), 32(%esp), 36(%esp) | %ebx, %edi, %ebp, 72(%esp), 76(%esp), 80(%esp)}
+	add	esp, 28					; 0000001cH
+
+; 1156 : 	l_v401 = (void*)l_a2_1;
+
+	mov	DWORD PTR _l_v401$[esp+24], ebx
+
+; 1157 : 	l_v402 = pypy_asm_gcroot(l_v401);
+
+	mov	eax, DWORD PTR ?_constant_always_one_@?1??pypy_asm_gcroot@@9 at 9
+	imul	eax, DWORD PTR _l_v401$[esp+24]
+
+; 1158 : 	l_a2_1 = l_v402; /* for moving GCs */
+; 1159 : 	l_v404 = (void*)l_a1_1;
+
+	mov	DWORD PTR _l_v404$[esp+24], ebp
+
+; 1160 : 	l_v405 = pypy_asm_gcroot(l_v404);
+
+	mov	eax, DWORD PTR ?_constant_always_one_@?1??pypy_asm_gcroot@@9 at 9
+	imul	eax, DWORD PTR _l_v404$[esp+24]
+
+; 1161 : 	l_a1_1 = l_v405; /* for moving GCs */
+; 1162 : 	l_v407 = (void*)l_a3_1;
+
+	mov	DWORD PTR _l_v407$[esp+24], edi
+
+; 1163 : 	l_v408 = pypy_asm_gcroot(l_v407);
+
+	mov	eax, DWORD PTR ?_constant_always_one_@?1??pypy_asm_gcroot@@9 at 9
+	imul	eax, DWORD PTR _l_v407$[esp+24]
+
+; 1164 : 	l_a3_1 = l_v408; /* for moving GCs */
+; 1165 : 	l_v410 = (void*)l_a6_1;
+
+	mov	ecx, DWORD PTR _l_a6_1$[esp+20]
+	mov	DWORD PTR _l_v410$[esp+24], ecx
+
+; 1166 : 	l_v411 = pypy_asm_gcroot(l_v410);
+
+	mov	eax, DWORD PTR ?_constant_always_one_@?1??pypy_asm_gcroot@@9 at 9
+	imul	eax, DWORD PTR _l_v410$[esp+24]
+
+; 1167 : 	l_a6_1 = l_v411; /* for moving GCs */
+; 1168 : 	l_v413 = (void*)l_a5_1;
+
+	mov	edx, DWORD PTR _l_a5_1$[esp+20]
+	mov	DWORD PTR _l_v413$[esp+24], edx
+
+; 1169 : 	l_v414 = pypy_asm_gcroot(l_v413);
+
+	mov	eax, DWORD PTR ?_constant_always_one_@?1??pypy_asm_gcroot@@9 at 9
+	imul	eax, DWORD PTR _l_v413$[esp+24]
+
+; 1170 : 	l_a5_1 = l_v414; /* for moving GCs */
+; 1171 : 	l_v416 = (void*)l_a4_1;
+
+	mov	esi, DWORD PTR _l_a4_1$[esp+20]
+	mov	DWORD PTR _l_v416$[esp+24], esi
+
+; 1172 : 	l_v417 = pypy_asm_gcroot(l_v416);
+
+	mov	eax, DWORD PTR ?_constant_always_one_@?1??pypy_asm_gcroot@@9 at 9
+	imul	eax, DWORD PTR _l_v416$[esp+24]
+
+; 1173 : 	l_a4_1 = l_v417; /* for moving GCs */
+; 1174 : 	l_v419 = RPyField((&pypy_g_ExcData), ed_exc_type);
+; 1175 : 	l_v420 = (l_v419 == NULL);
+
+	cmp	DWORD PTR _pypy_g_ExcData, 0
+
+; 1176 : 	if (!l_v420) {
+
+	jne	SHORT $LN75 at pypy_g_foo
+
+; 1177 : 		goto block1;
+; 1178 : 	}
+; 1179 : 	goto block9;
+; 1180 : 
+; 1181 :     block9:
+; 1182 : 	OP_INT_SUB(l_rec_1, 1L, l_v421);
+; 1183 : 	pypy_g_foo(l_v421, l_a6_1, l_a5_1, l_a4_1, l_a3_1, l_a2_1, l_a1_1);
+
+	sub	DWORD PTR _l_rec_1$[esp+20], 1
+	sub	DWORD PTR tv419[esp+24], 1
+	cmp	DWORD PTR _l_rec_1$[esp+20], 0
+	mov	eax, ebp
+	mov	ebp, DWORD PTR _l_a6_1$[esp+20]
+	mov	ecx, ebx
+	mov	ebx, DWORD PTR _l_a5_1$[esp+20]
+	mov	edx, edi
+$block9$34446:
+	mov	edi, esi
+	mov	DWORD PTR _l_a4_1$[esp+20], edx
+	mov	DWORD PTR _l_a5_1$[esp+20], ecx
+	mov	DWORD PTR _l_a6_1$[esp+20], eax
+$block0_1$34376:
+	jg	$LL63 at pypy_g_foo
+	pop	esi
+	pop	edi
+	pop	ebp
+	pop	ebx
+
+; 1199 : 	goto block4;
+; 1200 : }
+
+	add	esp, 8
+	ret	0
+$LN71 at pypy_g_foo:
+$block0$40426:
+$block0$40437:
+$block0$40434:
+$block2$40415:
+
+; 1048 : 		goto block2;
+; 1049 : 	}
+; 1050 : 	goto block1;
+; 1051 : 
+; 1052 :     block1:
+; 1053 : 	RPY_DEBUG_RETURN();
+; 1054 : 	return /* nothing */;
+; 1055 : 
+; 1056 :     block2:
+; 1057 : 	pypy_g_stack_check___();
+
+	mov	DWORD PTR _pypy_g_ExcData, OFFSET _pypy_g_exceptions_RuntimeError_vtable
+	mov	DWORD PTR _pypy_g_ExcData+4, OFFSET _pypy_g_exceptions_RuntimeError
+$block1$40435:
+$block1$40438:
+$block1$40427:
+$LN75 at pypy_g_foo:
+	pop	esi
+	pop	edi
+	pop	ebp
+	pop	ebx
+$block1$34379:
+
+; 1199 : 	goto block4;
+; 1200 : }
+
+	add	esp, 8
+	ret	0
+_pypy_g_foo ENDP

Modified: pypy/branch/msvc-asmgcroot/pypy/translator/c/gcc/test/msvc/track_switch0.s
==============================================================================
--- pypy/branch/msvc-asmgcroot/pypy/translator/c/gcc/test/msvc/track_switch0.s	(original)
+++ pypy/branch/msvc-asmgcroot/pypy/translator/c/gcc/test/msvc/track_switch0.s	Thu Nov  5 23:13:47 2009
@@ -1,420 +1,420 @@
-; Function compile flags: /Odtpy
-;	COMDAT _pypy_g_BuiltinActivation_UwS_UCD_ObjSpace_W_Root_W_Root
-_TEXT	SEGMENT
-tv138 = -116						; size = 4
-_l_v271568$ = -109					; size = 1
-_l_v271567$ = -108					; size = 4
-_l_v271575$ = -104					; size = 4
-_l_v271551$ = -97					; size = 1
-_l_v271579$ = -96					; size = 4
-_l_v271576$ = -89					; size = 1
-_l_v271572$ = -88					; size = 4
-_l_v271583$ = -84					; size = 4
-_l_v271556$ = -80					; size = 4
-_l_v271559$ = -76					; size = 4
-_l_v271544$ = -72					; size = 4
-_l_v271545$ = -68					; size = 4
-_l_v271580$ = -64					; size = 4
-_l_v271557$ = -60					; size = 4
-_l_v271581$ = -56					; size = 4
-_l_v271553$ = -52					; size = 4
-_l_v271570$ = -48					; size = 4
-_l_v271554$ = -42					; size = 1
-_l_v271565$ = -41					; size = 1
-_l_v271558$ = -40					; size = 4
-_l_v271562$ = -33					; size = 1
-_l_v271561$ = -32					; size = 4
-_l_v271547$ = -28					; size = 4
-_l_v271548$ = -24					; size = 4
-_l_v271573$ = -18					; size = 1
-_l_v271546$ = -17					; size = 1
-_l_v271582$ = -16					; size = 4
-_l_v271550$ = -12					; size = 4
-_l_v271564$ = -8					; size = 4
-_l_v271578$ = -4					; size = 4
-_l_self_596$ = 8					; size = 4
-_l_scope_w_259$ = 12					; size = 4
-_pypy_g_BuiltinActivation_UwS_UCD_ObjSpace_W_Root_W_Root PROC ; COMDAT
-
-; 15629: struct pypy_pypy_interpreter_baseobjspace_W_Root0 *pypy_g_BuiltinActivation_UwS_UCD_ObjSpace_W_Root_W_Root(struct pypy_pypy_interpreter_gateway_BuiltinActivation0 *l_self_596, struct pypy_array1 *l_scope_w_259) {
-
-	push	ebp
-	mov	ebp, esp
-	sub	esp, 116				; 00000074H
-$block0$211591:
-
-; 15630: 	bool_t l_v271551; bool_t l_v271554; bool_t l_v271562;
-; 15631: 	bool_t l_v271565; bool_t l_v271568; bool_t l_v271573;
-; 15632: 	bool_t l_v271576; char l_v271546; long l_v271550; long l_v271553;
-; 15633: 	long l_v271564; long l_v271567; long l_v271572; long l_v271575;
-; 15634: 	struct pypy_object0 *l_v271556; struct pypy_object0 *l_v271570;
-; 15635: 	struct pypy_object0 *l_v271578;
-; 15636: 	struct pypy_object_vtable0 *l_v271561;
-; 15637: 	struct pypy_pypy_interpreter_baseobjspace_W_Root0 *l_v271544;
-; 15638: 	struct pypy_pypy_interpreter_baseobjspace_W_Root0 *l_v271545;
-; 15639: 	struct pypy_pypy_interpreter_baseobjspace_W_Root0 *l_v271557;
-; 15640: 	struct pypy_pypy_interpreter_baseobjspace_W_Root0 *l_v271579;
-; 15641: 	struct pypy_pypy_interpreter_baseobjspace_W_Root0 *l_v271580;
-; 15642: 	struct pypy_pypy_interpreter_baseobjspace_W_Root0 *l_v271581;
-; 15643: 	struct pypy_pypy_interpreter_baseobjspace_W_Root0 *l_v271582;
-; 15644: 	struct pypy_pypy_interpreter_baseobjspace_W_Root0 *l_v271583;
-; 15645: 	struct pypy_pypy_interpreter_gateway_BuiltinActivation_UwS_UCD0 *l_v271548;
-; 15646: 	struct pypy_pypy_module_unicodedata_interp_ucd_UCD0 *l_v271547;
-; 15647: 	void* l_v271558; void* l_v271559;
-; 15648: 
-; 15649:     block0:
-; 15650: 	l_v271548 = (struct pypy_pypy_interpreter_gateway_BuiltinActivation_UwS_UCD0 *)l_self_596;
-
-	mov	eax, DWORD PTR _l_self_596$[ebp]
-	mov	DWORD PTR _l_v271548$[ebp], eax
-
-; 15651: 	l_v271546 = RPyField(l_v271548, bausucdoswrwr_inst_behavior);
-
-	mov	ecx, DWORD PTR _l_v271548$[ebp]
-	mov	dl, BYTE PTR [ecx+8]
-	mov	BYTE PTR _l_v271546$[ebp], dl
-
-; 15652: 	RPyAssert(1, "unexpectedly negative list getitem index");
-; 15653: 	l_v271550 = l_scope_w_259->length;
-
-	mov	eax, DWORD PTR _l_scope_w_259$[ebp]
-	mov	ecx, DWORD PTR [eax+4]
-	mov	DWORD PTR _l_v271550$[ebp], ecx
-
-; 15654: 	OP_INT_LT(0L, l_v271550, l_v271551);
-
-	xor	edx, edx
-	cmp	DWORD PTR _l_v271550$[ebp], 0
-	setg	dl
-	mov	BYTE PTR _l_v271551$[ebp], dl
-
-; 15655: 	RPyAssert(l_v271551, "list getitem index out of bound");
-; 15656: 	l_v271553 = l_scope_w_259->length;
-
-	mov	eax, DWORD PTR _l_scope_w_259$[ebp]
-	mov	ecx, DWORD PTR [eax+4]
-	mov	DWORD PTR _l_v271553$[ebp], ecx
-
-; 15657: 	OP_INT_LT(0L, l_v271553, l_v271554);
-
-	xor	edx, edx
-	cmp	DWORD PTR _l_v271553$[ebp], 0
-	setg	dl
-	mov	BYTE PTR _l_v271554$[ebp], dl
-
-; 15658: 	RPyAssert(l_v271554, "fixed getitem out of bounds");
-; 15659: 	l_v271556 = RPyItem(l_scope_w_259, 0L);
-
-	mov	eax, DWORD PTR _l_scope_w_259$[ebp]
-	mov	ecx, DWORD PTR [eax+8]
-	mov	DWORD PTR _l_v271556$[ebp], ecx
-
-; 15660: 	l_v271557 = (struct pypy_pypy_interpreter_baseobjspace_W_Root0 *)l_v271556;
-
-	mov	edx, DWORD PTR _l_v271556$[ebp]
-	mov	DWORD PTR _l_v271557$[ebp], edx
-
-; 15661: 	l_v271547 = pypy_g_interp_w__UCD(l_v271557, 0);
-
-	push	0
-	mov	eax, DWORD PTR _l_v271557$[ebp]
-	push	eax
-	call	_pypy_g_interp_w__UCD
-    ;; expected {4(%ebp) | %ebx, %esi, %edi, (%ebp) | 12(%ebp)}
-	add	esp, 8
-	mov	DWORD PTR _l_v271547$[ebp], eax
-
-; 15662: 	l_v271558 = (void*)l_scope_w_259;
-
-	mov	ecx, DWORD PTR _l_scope_w_259$[ebp]
-	mov	DWORD PTR _l_v271558$[ebp], ecx
-
-; 15663: 	l_v271559 = pypy_asm_gcroot(l_v271558);
-
-	mov	eax, DWORD PTR ?_constant_always_one_@?1??pypy_asm_gcroot@@9 at 9
-	imul	eax, DWORD PTR _l_v271558$[ebp]
-	mov	edx, DWORD PTR _l_v271558$[ebp]
-	mov	DWORD PTR _l_v271559$[ebp], edx
-
-; 15664: 	l_scope_w_259 = l_v271559; /* for moving GCs */
-
-	mov	eax, DWORD PTR _l_v271559$[ebp]
-	mov	DWORD PTR _l_scope_w_259$[ebp], eax
-
-; 15665: 	l_v271561 = RPyField((&pypy_g_ExcData), ed_exc_type);
-
-	mov	ecx, DWORD PTR _pypy_g_ExcData
-	mov	DWORD PTR _l_v271561$[ebp], ecx
-
-; 15666: 	l_v271562 = (l_v271561 == NULL);
-
-	xor	edx, edx
-	cmp	DWORD PTR _l_v271561$[ebp], 0
-	sete	dl
-	mov	BYTE PTR _l_v271562$[ebp], dl
-
-; 15667: 	if (!l_v271562) {
-
-	movzx	eax, BYTE PTR _l_v271562$[ebp]
-	test	eax, eax
-	jne	SHORT $block1$211600
-
-; 15668: 		l_v271583 = ((struct pypy_pypy_interpreter_baseobjspace_W_Root0 *) NULL);
-
-	mov	DWORD PTR _l_v271583$[ebp], 0
-
-; 15669: 		goto block3;
-
-	jmp	$block3$211599
-$block1$211600:
-
-; 15670: 	}
-; 15671: 	goto block1;
-; 15672: 
-; 15673:     block1:
-; 15674: 	RPyAssert(1, "unexpectedly negative list getitem index");
-; 15675: 	l_v271564 = l_scope_w_259->length;
-
-	mov	ecx, DWORD PTR _l_scope_w_259$[ebp]
-	mov	edx, DWORD PTR [ecx+4]
-	mov	DWORD PTR _l_v271564$[ebp], edx
-
-; 15676: 	OP_INT_LT(1L, l_v271564, l_v271565);
-
-	xor	eax, eax
-	cmp	DWORD PTR _l_v271564$[ebp], 1
-	setg	al
-	mov	BYTE PTR _l_v271565$[ebp], al
-
-; 15677: 	RPyAssert(l_v271565, "list getitem index out of bound");
-; 15678: 	l_v271567 = l_scope_w_259->length;
-
-	mov	ecx, DWORD PTR _l_scope_w_259$[ebp]
-	mov	edx, DWORD PTR [ecx+4]
-	mov	DWORD PTR _l_v271567$[ebp], edx
-
-; 15679: 	OP_INT_LT(1L, l_v271567, l_v271568);
-
-	xor	eax, eax
-	cmp	DWORD PTR _l_v271567$[ebp], 1
-	setg	al
-	mov	BYTE PTR _l_v271568$[ebp], al
-
-; 15680: 	RPyAssert(l_v271568, "fixed getitem out of bounds");
-; 15681: 	l_v271570 = RPyItem(l_scope_w_259, 1L);
-
-	mov	ecx, DWORD PTR _l_scope_w_259$[ebp]
-	mov	edx, DWORD PTR [ecx+12]
-	mov	DWORD PTR _l_v271570$[ebp], edx
-
-; 15682: 	l_v271544 = (struct pypy_pypy_interpreter_baseobjspace_W_Root0 *)l_v271570;
-
-	mov	eax, DWORD PTR _l_v271570$[ebp]
-	mov	DWORD PTR _l_v271544$[ebp], eax
-
-; 15683: 	RPyAssert(1, "unexpectedly negative list getitem index");
-; 15684: 	l_v271572 = l_scope_w_259->length;
-
-	mov	ecx, DWORD PTR _l_scope_w_259$[ebp]
-	mov	edx, DWORD PTR [ecx+4]
-	mov	DWORD PTR _l_v271572$[ebp], edx
-
-; 15685: 	OP_INT_LT(2L, l_v271572, l_v271573);
-
-	xor	eax, eax
-	cmp	DWORD PTR _l_v271572$[ebp], 2
-	setg	al
-	mov	BYTE PTR _l_v271573$[ebp], al
-
-; 15686: 	RPyAssert(l_v271573, "list getitem index out of bound");
-; 15687: 	l_v271575 = l_scope_w_259->length;
-
-	mov	ecx, DWORD PTR _l_scope_w_259$[ebp]
-	mov	edx, DWORD PTR [ecx+4]
-	mov	DWORD PTR _l_v271575$[ebp], edx
-
-; 15688: 	OP_INT_LT(2L, l_v271575, l_v271576);
-
-	xor	eax, eax
-	cmp	DWORD PTR _l_v271575$[ebp], 2
-	setg	al
-	mov	BYTE PTR _l_v271576$[ebp], al
-
-; 15689: 	RPyAssert(l_v271576, "fixed getitem out of bounds");
-; 15690: 	l_v271578 = RPyItem(l_scope_w_259, 2L);
-
-	mov	ecx, DWORD PTR _l_scope_w_259$[ebp]
-	mov	edx, DWORD PTR [ecx+16]
-	mov	DWORD PTR _l_v271578$[ebp], edx
-
-; 15691: 	l_v271545 = (struct pypy_pypy_interpreter_baseobjspace_W_Root0 *)l_v271578;
-
-	mov	eax, DWORD PTR _l_v271578$[ebp]
-	mov	DWORD PTR _l_v271545$[ebp], eax
-
-; 15692: 	switch (l_v271546) {
-
-	movsx	ecx, BYTE PTR _l_v271546$[ebp]
-	mov	DWORD PTR tv138[ebp], ecx
-	cmp	DWORD PTR tv138[ebp], 3
-	ja	SHORT $LN1 at pypy_g_Bui@2
-	mov	edx, DWORD PTR tv138[ebp]
-	jmp	DWORD PTR $LN14 at pypy_g_Bui@2[edx*4]
-$LN5 at pypy_g_Bui@2:
-
-; 15693:     case 0:
-; 15694: 		goto block2;
-
-	jmp	SHORT $block2$211608
-$LN4 at pypy_g_Bui@2:
-
-; 15695:     case 1:
-; 15696: 		goto block4;
-
-	jmp	SHORT $block4$211610
-$LN3 at pypy_g_Bui@2:
-
-; 15697:     case 2:
-; 15698: 		goto block5;
-
-	jmp	SHORT $block5$211612
-$LN2 at pypy_g_Bui@2:
-
-; 15699:     case 3:
-; 15700: 		goto block6;
-
-	jmp	$block6$211614
-$LN1 at pypy_g_Bui@2:
-
-; 15701:     default:
-; 15702: 		assert(!"bad switch!!");
-
-	mov	eax, OFFSET ??_C at _0N@PGLFNKFI at bad?5switch?$CB?$CB?$AA@
-	test	eax, eax
-	je	SHORT $block2$211608
-	push	15702					; 00003d56H
-	push	OFFSET ??_C at _1BO@DMBFIACJ@?$AAi?$AAm?$AAp?$AAl?$AAe?$AAm?$AAe?$AAn?$AAt?$AA_?$AA1?$AA1?$AA?4?$AAc?$AA?$AA@
-	push	OFFSET ??_C at _1CA@EIJBLFPJ@?$AA?$CB?$AA?$CC?$AAb?$AAa?$AAd?$AA?5?$AAs?$AAw?$AAi?$AAt?$AAc?$AAh?$AA?$CB?$AA?$CB?$AA?$CC?$AA?$AA@
-	call	DWORD PTR __imp___wassert
-	add	esp, 12					; 0000000cH
-$block2$211608:
-
-; 15703: 	}
-; 15704: 
-; 15705:     block2:
-; 15706: 	l_v271579 = pypy_g_UCD_digit(l_v271547, l_v271544, l_v271545);
-
-	mov	edx, DWORD PTR _l_v271545$[ebp]
-	push	edx
-	mov	eax, DWORD PTR _l_v271544$[ebp]
-	push	eax
-	mov	ecx, DWORD PTR _l_v271547$[ebp]
-	push	ecx
-	call	_pypy_g_UCD_digit
-    ;; expected {4(%ebp) | %ebx, %esi, %edi, (%ebp) | }
-	add	esp, 12					; 0000000cH
-	mov	DWORD PTR _l_v271579$[ebp], eax
-
-; 15707: 	l_v271583 = l_v271579;
-
-	mov	edx, DWORD PTR _l_v271579$[ebp]
-	mov	DWORD PTR _l_v271583$[ebp], edx
-$block3$211599:
-
-; 15708: 	goto block3;
-; 15709: 
-; 15710:     block3:
-; 15711: 	RPY_DEBUG_RETURN();
-; 15712: 	return l_v271583;
-
-	mov	eax, DWORD PTR _l_v271583$[ebp]
-	jmp	SHORT $LN9 at pypy_g_Bui@2
-$block4$211610:
-
-; 15713: 
-; 15714:     block4:
-; 15715: 	l_v271580 = pypy_g_UCD_name(l_v271547, l_v271544, l_v271545);
-
-	mov	eax, DWORD PTR _l_v271545$[ebp]
-	push	eax
-	mov	ecx, DWORD PTR _l_v271544$[ebp]
-	push	ecx
-	mov	edx, DWORD PTR _l_v271547$[ebp]
-	push	edx
-	call	_pypy_g_UCD_name
-    ;; expected {4(%ebp) | %ebx, %esi, %edi, (%ebp) | }
-	add	esp, 12					; 0000000cH
-	mov	DWORD PTR _l_v271580$[ebp], eax
-
-; 15716: 	l_v271583 = l_v271580;
-
-	mov	eax, DWORD PTR _l_v271580$[ebp]
-	mov	DWORD PTR _l_v271583$[ebp], eax
-
-; 15717: 	goto block3;
-
-	jmp	SHORT $block3$211599
-$block5$211612:
-
-; 15718: 
-; 15719:     block5:
-; 15720: 	l_v271581 = pypy_g_UCD_decimal(l_v271547, l_v271544, l_v271545);
-
-	mov	ecx, DWORD PTR _l_v271545$[ebp]
-	push	ecx
-	mov	edx, DWORD PTR _l_v271544$[ebp]
-	push	edx
-	mov	eax, DWORD PTR _l_v271547$[ebp]
-	push	eax
-	call	_pypy_g_UCD_decimal
-    ;; expected {4(%ebp) | %ebx, %esi, %edi, (%ebp) | }
-	add	esp, 12					; 0000000cH
-	mov	DWORD PTR _l_v271581$[ebp], eax
-
-; 15721: 	l_v271583 = l_v271581;
-
-	mov	ecx, DWORD PTR _l_v271581$[ebp]
-	mov	DWORD PTR _l_v271583$[ebp], ecx
-
-; 15722: 	goto block3;
-
-	jmp	SHORT $block3$211599
-$block6$211614:
-
-; 15723: 
-; 15724:     block6:
-; 15725: 	l_v271582 = pypy_g_UCD_numeric(l_v271547, l_v271544, l_v271545);
-
-	mov	edx, DWORD PTR _l_v271545$[ebp]
-	push	edx
-	mov	eax, DWORD PTR _l_v271544$[ebp]
-	push	eax
-	mov	ecx, DWORD PTR _l_v271547$[ebp]
-	push	ecx
-	call	_pypy_g_UCD_numeric
-    ;; expected {4(%ebp) | %ebx, %esi, %edi, (%ebp) | }
-	add	esp, 12					; 0000000cH
-	mov	DWORD PTR _l_v271582$[ebp], eax
-
-; 15726: 	l_v271583 = l_v271582;
-
-	mov	edx, DWORD PTR _l_v271582$[ebp]
-	mov	DWORD PTR _l_v271583$[ebp], edx
-
-; 15727: 	goto block3;
-
-	jmp	SHORT $block3$211599
-$LN9 at pypy_g_Bui@2:
-
-; 15728: }
-
-	mov	esp, ebp
-	pop	ebp
-	ret	0
-	npad	3
-$LN14 at pypy_g_Bui@2:
-	DD	$LN5 at pypy_g_Bui@2
-	DD	$LN4 at pypy_g_Bui@2
-	DD	$LN3 at pypy_g_Bui@2
-	DD	$LN2 at pypy_g_Bui@2
-_pypy_g_BuiltinActivation_UwS_UCD_ObjSpace_W_Root_W_Root ENDP
+; Function compile flags: /Odtpy
+;	COMDAT _pypy_g_BuiltinActivation_UwS_UCD_ObjSpace_W_Root_W_Root
+_TEXT	SEGMENT
+tv138 = -116						; size = 4
+_l_v271568$ = -109					; size = 1
+_l_v271567$ = -108					; size = 4
+_l_v271575$ = -104					; size = 4
+_l_v271551$ = -97					; size = 1
+_l_v271579$ = -96					; size = 4
+_l_v271576$ = -89					; size = 1
+_l_v271572$ = -88					; size = 4
+_l_v271583$ = -84					; size = 4
+_l_v271556$ = -80					; size = 4
+_l_v271559$ = -76					; size = 4
+_l_v271544$ = -72					; size = 4
+_l_v271545$ = -68					; size = 4
+_l_v271580$ = -64					; size = 4
+_l_v271557$ = -60					; size = 4
+_l_v271581$ = -56					; size = 4
+_l_v271553$ = -52					; size = 4
+_l_v271570$ = -48					; size = 4
+_l_v271554$ = -42					; size = 1
+_l_v271565$ = -41					; size = 1
+_l_v271558$ = -40					; size = 4
+_l_v271562$ = -33					; size = 1
+_l_v271561$ = -32					; size = 4
+_l_v271547$ = -28					; size = 4
+_l_v271548$ = -24					; size = 4
+_l_v271573$ = -18					; size = 1
+_l_v271546$ = -17					; size = 1
+_l_v271582$ = -16					; size = 4
+_l_v271550$ = -12					; size = 4
+_l_v271564$ = -8					; size = 4
+_l_v271578$ = -4					; size = 4
+_l_self_596$ = 8					; size = 4
+_l_scope_w_259$ = 12					; size = 4
+_pypy_g_BuiltinActivation_UwS_UCD_ObjSpace_W_Root_W_Root PROC ; COMDAT
+
+; 15629: struct pypy_pypy_interpreter_baseobjspace_W_Root0 *pypy_g_BuiltinActivation_UwS_UCD_ObjSpace_W_Root_W_Root(struct pypy_pypy_interpreter_gateway_BuiltinActivation0 *l_self_596, struct pypy_array1 *l_scope_w_259) {
+
+	push	ebp
+	mov	ebp, esp
+	sub	esp, 116				; 00000074H
+$block0$211591:
+
+; 15630: 	bool_t l_v271551; bool_t l_v271554; bool_t l_v271562;
+; 15631: 	bool_t l_v271565; bool_t l_v271568; bool_t l_v271573;
+; 15632: 	bool_t l_v271576; char l_v271546; long l_v271550; long l_v271553;
+; 15633: 	long l_v271564; long l_v271567; long l_v271572; long l_v271575;
+; 15634: 	struct pypy_object0 *l_v271556; struct pypy_object0 *l_v271570;
+; 15635: 	struct pypy_object0 *l_v271578;
+; 15636: 	struct pypy_object_vtable0 *l_v271561;
+; 15637: 	struct pypy_pypy_interpreter_baseobjspace_W_Root0 *l_v271544;
+; 15638: 	struct pypy_pypy_interpreter_baseobjspace_W_Root0 *l_v271545;
+; 15639: 	struct pypy_pypy_interpreter_baseobjspace_W_Root0 *l_v271557;
+; 15640: 	struct pypy_pypy_interpreter_baseobjspace_W_Root0 *l_v271579;
+; 15641: 	struct pypy_pypy_interpreter_baseobjspace_W_Root0 *l_v271580;
+; 15642: 	struct pypy_pypy_interpreter_baseobjspace_W_Root0 *l_v271581;
+; 15643: 	struct pypy_pypy_interpreter_baseobjspace_W_Root0 *l_v271582;
+; 15644: 	struct pypy_pypy_interpreter_baseobjspace_W_Root0 *l_v271583;
+; 15645: 	struct pypy_pypy_interpreter_gateway_BuiltinActivation_UwS_UCD0 *l_v271548;
+; 15646: 	struct pypy_pypy_module_unicodedata_interp_ucd_UCD0 *l_v271547;
+; 15647: 	void* l_v271558; void* l_v271559;
+; 15648: 
+; 15649:     block0:
+; 15650: 	l_v271548 = (struct pypy_pypy_interpreter_gateway_BuiltinActivation_UwS_UCD0 *)l_self_596;
+
+	mov	eax, DWORD PTR _l_self_596$[ebp]
+	mov	DWORD PTR _l_v271548$[ebp], eax
+
+; 15651: 	l_v271546 = RPyField(l_v271548, bausucdoswrwr_inst_behavior);
+
+	mov	ecx, DWORD PTR _l_v271548$[ebp]
+	mov	dl, BYTE PTR [ecx+8]
+	mov	BYTE PTR _l_v271546$[ebp], dl
+
+; 15652: 	RPyAssert(1, "unexpectedly negative list getitem index");
+; 15653: 	l_v271550 = l_scope_w_259->length;
+
+	mov	eax, DWORD PTR _l_scope_w_259$[ebp]
+	mov	ecx, DWORD PTR [eax+4]
+	mov	DWORD PTR _l_v271550$[ebp], ecx
+
+; 15654: 	OP_INT_LT(0L, l_v271550, l_v271551);
+
+	xor	edx, edx
+	cmp	DWORD PTR _l_v271550$[ebp], 0
+	setg	dl
+	mov	BYTE PTR _l_v271551$[ebp], dl
+
+; 15655: 	RPyAssert(l_v271551, "list getitem index out of bound");
+; 15656: 	l_v271553 = l_scope_w_259->length;
+
+	mov	eax, DWORD PTR _l_scope_w_259$[ebp]
+	mov	ecx, DWORD PTR [eax+4]
+	mov	DWORD PTR _l_v271553$[ebp], ecx
+
+; 15657: 	OP_INT_LT(0L, l_v271553, l_v271554);
+
+	xor	edx, edx
+	cmp	DWORD PTR _l_v271553$[ebp], 0
+	setg	dl
+	mov	BYTE PTR _l_v271554$[ebp], dl
+
+; 15658: 	RPyAssert(l_v271554, "fixed getitem out of bounds");
+; 15659: 	l_v271556 = RPyItem(l_scope_w_259, 0L);
+
+	mov	eax, DWORD PTR _l_scope_w_259$[ebp]
+	mov	ecx, DWORD PTR [eax+8]
+	mov	DWORD PTR _l_v271556$[ebp], ecx
+
+; 15660: 	l_v271557 = (struct pypy_pypy_interpreter_baseobjspace_W_Root0 *)l_v271556;
+
+	mov	edx, DWORD PTR _l_v271556$[ebp]
+	mov	DWORD PTR _l_v271557$[ebp], edx
+
+; 15661: 	l_v271547 = pypy_g_interp_w__UCD(l_v271557, 0);
+
+	push	0
+	mov	eax, DWORD PTR _l_v271557$[ebp]
+	push	eax
+	call	_pypy_g_interp_w__UCD
+    ;; expected {4(%ebp) | %ebx, %esi, %edi, (%ebp) | 12(%ebp)}
+	add	esp, 8
+	mov	DWORD PTR _l_v271547$[ebp], eax
+
+; 15662: 	l_v271558 = (void*)l_scope_w_259;
+
+	mov	ecx, DWORD PTR _l_scope_w_259$[ebp]
+	mov	DWORD PTR _l_v271558$[ebp], ecx
+
+; 15663: 	l_v271559 = pypy_asm_gcroot(l_v271558);
+
+	mov	eax, DWORD PTR ?_constant_always_one_@?1??pypy_asm_gcroot@@9 at 9
+	imul	eax, DWORD PTR _l_v271558$[ebp]
+	mov	edx, DWORD PTR _l_v271558$[ebp]
+	mov	DWORD PTR _l_v271559$[ebp], edx
+
+; 15664: 	l_scope_w_259 = l_v271559; /* for moving GCs */
+
+	mov	eax, DWORD PTR _l_v271559$[ebp]
+	mov	DWORD PTR _l_scope_w_259$[ebp], eax
+
+; 15665: 	l_v271561 = RPyField((&pypy_g_ExcData), ed_exc_type);
+
+	mov	ecx, DWORD PTR _pypy_g_ExcData
+	mov	DWORD PTR _l_v271561$[ebp], ecx
+
+; 15666: 	l_v271562 = (l_v271561 == NULL);
+
+	xor	edx, edx
+	cmp	DWORD PTR _l_v271561$[ebp], 0
+	sete	dl
+	mov	BYTE PTR _l_v271562$[ebp], dl
+
+; 15667: 	if (!l_v271562) {
+
+	movzx	eax, BYTE PTR _l_v271562$[ebp]
+	test	eax, eax
+	jne	SHORT $block1$211600
+
+; 15668: 		l_v271583 = ((struct pypy_pypy_interpreter_baseobjspace_W_Root0 *) NULL);
+
+	mov	DWORD PTR _l_v271583$[ebp], 0
+
+; 15669: 		goto block3;
+
+	jmp	$block3$211599
+$block1$211600:
+
+; 15670: 	}
+; 15671: 	goto block1;
+; 15672: 
+; 15673:     block1:
+; 15674: 	RPyAssert(1, "unexpectedly negative list getitem index");
+; 15675: 	l_v271564 = l_scope_w_259->length;
+
+	mov	ecx, DWORD PTR _l_scope_w_259$[ebp]
+	mov	edx, DWORD PTR [ecx+4]
+	mov	DWORD PTR _l_v271564$[ebp], edx
+
+; 15676: 	OP_INT_LT(1L, l_v271564, l_v271565);
+
+	xor	eax, eax
+	cmp	DWORD PTR _l_v271564$[ebp], 1
+	setg	al
+	mov	BYTE PTR _l_v271565$[ebp], al
+
+; 15677: 	RPyAssert(l_v271565, "list getitem index out of bound");
+; 15678: 	l_v271567 = l_scope_w_259->length;
+
+	mov	ecx, DWORD PTR _l_scope_w_259$[ebp]
+	mov	edx, DWORD PTR [ecx+4]
+	mov	DWORD PTR _l_v271567$[ebp], edx
+
+; 15679: 	OP_INT_LT(1L, l_v271567, l_v271568);
+
+	xor	eax, eax
+	cmp	DWORD PTR _l_v271567$[ebp], 1
+	setg	al
+	mov	BYTE PTR _l_v271568$[ebp], al
+
+; 15680: 	RPyAssert(l_v271568, "fixed getitem out of bounds");
+; 15681: 	l_v271570 = RPyItem(l_scope_w_259, 1L);
+
+	mov	ecx, DWORD PTR _l_scope_w_259$[ebp]
+	mov	edx, DWORD PTR [ecx+12]
+	mov	DWORD PTR _l_v271570$[ebp], edx
+
+; 15682: 	l_v271544 = (struct pypy_pypy_interpreter_baseobjspace_W_Root0 *)l_v271570;
+
+	mov	eax, DWORD PTR _l_v271570$[ebp]
+	mov	DWORD PTR _l_v271544$[ebp], eax
+
+; 15683: 	RPyAssert(1, "unexpectedly negative list getitem index");
+; 15684: 	l_v271572 = l_scope_w_259->length;
+
+	mov	ecx, DWORD PTR _l_scope_w_259$[ebp]
+	mov	edx, DWORD PTR [ecx+4]
+	mov	DWORD PTR _l_v271572$[ebp], edx
+
+; 15685: 	OP_INT_LT(2L, l_v271572, l_v271573);
+
+	xor	eax, eax
+	cmp	DWORD PTR _l_v271572$[ebp], 2
+	setg	al
+	mov	BYTE PTR _l_v271573$[ebp], al
+
+; 15686: 	RPyAssert(l_v271573, "list getitem index out of bound");
+; 15687: 	l_v271575 = l_scope_w_259->length;
+
+	mov	ecx, DWORD PTR _l_scope_w_259$[ebp]
+	mov	edx, DWORD PTR [ecx+4]
+	mov	DWORD PTR _l_v271575$[ebp], edx
+
+; 15688: 	OP_INT_LT(2L, l_v271575, l_v271576);
+
+	xor	eax, eax
+	cmp	DWORD PTR _l_v271575$[ebp], 2
+	setg	al
+	mov	BYTE PTR _l_v271576$[ebp], al
+
+; 15689: 	RPyAssert(l_v271576, "fixed getitem out of bounds");
+; 15690: 	l_v271578 = RPyItem(l_scope_w_259, 2L);
+
+	mov	ecx, DWORD PTR _l_scope_w_259$[ebp]
+	mov	edx, DWORD PTR [ecx+16]
+	mov	DWORD PTR _l_v271578$[ebp], edx
+
+; 15691: 	l_v271545 = (struct pypy_pypy_interpreter_baseobjspace_W_Root0 *)l_v271578;
+
+	mov	eax, DWORD PTR _l_v271578$[ebp]
+	mov	DWORD PTR _l_v271545$[ebp], eax
+
+; 15692: 	switch (l_v271546) {
+
+	movsx	ecx, BYTE PTR _l_v271546$[ebp]
+	mov	DWORD PTR tv138[ebp], ecx
+	cmp	DWORD PTR tv138[ebp], 3
+	ja	SHORT $LN1 at pypy_g_Bui@2
+	mov	edx, DWORD PTR tv138[ebp]
+	jmp	DWORD PTR $LN14 at pypy_g_Bui@2[edx*4]
+$LN5 at pypy_g_Bui@2:
+
+; 15693:     case 0:
+; 15694: 		goto block2;
+
+	jmp	SHORT $block2$211608
+$LN4 at pypy_g_Bui@2:
+
+; 15695:     case 1:
+; 15696: 		goto block4;
+
+	jmp	SHORT $block4$211610
+$LN3 at pypy_g_Bui@2:
+
+; 15697:     case 2:
+; 15698: 		goto block5;
+
+	jmp	SHORT $block5$211612
+$LN2 at pypy_g_Bui@2:
+
+; 15699:     case 3:
+; 15700: 		goto block6;
+
+	jmp	$block6$211614
+$LN1 at pypy_g_Bui@2:
+
+; 15701:     default:
+; 15702: 		assert(!"bad switch!!");
+
+	mov	eax, OFFSET ??_C at _0N@PGLFNKFI at bad?5switch?$CB?$CB?$AA@
+	test	eax, eax
+	je	SHORT $block2$211608
+	push	15702					; 00003d56H
+	push	OFFSET ??_C at _1BO@DMBFIACJ@?$AAi?$AAm?$AAp?$AAl?$AAe?$AAm?$AAe?$AAn?$AAt?$AA_?$AA1?$AA1?$AA?4?$AAc?$AA?$AA@
+	push	OFFSET ??_C at _1CA@EIJBLFPJ@?$AA?$CB?$AA?$CC?$AAb?$AAa?$AAd?$AA?5?$AAs?$AAw?$AAi?$AAt?$AAc?$AAh?$AA?$CB?$AA?$CB?$AA?$CC?$AA?$AA@
+	call	DWORD PTR __imp___wassert
+	add	esp, 12					; 0000000cH
+$block2$211608:
+
+; 15703: 	}
+; 15704: 
+; 15705:     block2:
+; 15706: 	l_v271579 = pypy_g_UCD_digit(l_v271547, l_v271544, l_v271545);
+
+	mov	edx, DWORD PTR _l_v271545$[ebp]
+	push	edx
+	mov	eax, DWORD PTR _l_v271544$[ebp]
+	push	eax
+	mov	ecx, DWORD PTR _l_v271547$[ebp]
+	push	ecx
+	call	_pypy_g_UCD_digit
+    ;; expected {4(%ebp) | %ebx, %esi, %edi, (%ebp) | }
+	add	esp, 12					; 0000000cH
+	mov	DWORD PTR _l_v271579$[ebp], eax
+
+; 15707: 	l_v271583 = l_v271579;
+
+	mov	edx, DWORD PTR _l_v271579$[ebp]
+	mov	DWORD PTR _l_v271583$[ebp], edx
+$block3$211599:
+
+; 15708: 	goto block3;
+; 15709: 
+; 15710:     block3:
+; 15711: 	RPY_DEBUG_RETURN();
+; 15712: 	return l_v271583;
+
+	mov	eax, DWORD PTR _l_v271583$[ebp]
+	jmp	SHORT $LN9 at pypy_g_Bui@2
+$block4$211610:
+
+; 15713: 
+; 15714:     block4:
+; 15715: 	l_v271580 = pypy_g_UCD_name(l_v271547, l_v271544, l_v271545);
+
+	mov	eax, DWORD PTR _l_v271545$[ebp]
+	push	eax
+	mov	ecx, DWORD PTR _l_v271544$[ebp]
+	push	ecx
+	mov	edx, DWORD PTR _l_v271547$[ebp]
+	push	edx
+	call	_pypy_g_UCD_name
+    ;; expected {4(%ebp) | %ebx, %esi, %edi, (%ebp) | }
+	add	esp, 12					; 0000000cH
+	mov	DWORD PTR _l_v271580$[ebp], eax
+
+; 15716: 	l_v271583 = l_v271580;
+
+	mov	eax, DWORD PTR _l_v271580$[ebp]
+	mov	DWORD PTR _l_v271583$[ebp], eax
+
+; 15717: 	goto block3;
+
+	jmp	SHORT $block3$211599
+$block5$211612:
+
+; 15718: 
+; 15719:     block5:
+; 15720: 	l_v271581 = pypy_g_UCD_decimal(l_v271547, l_v271544, l_v271545);
+
+	mov	ecx, DWORD PTR _l_v271545$[ebp]
+	push	ecx
+	mov	edx, DWORD PTR _l_v271544$[ebp]
+	push	edx
+	mov	eax, DWORD PTR _l_v271547$[ebp]
+	push	eax
+	call	_pypy_g_UCD_decimal
+    ;; expected {4(%ebp) | %ebx, %esi, %edi, (%ebp) | }
+	add	esp, 12					; 0000000cH
+	mov	DWORD PTR _l_v271581$[ebp], eax
+
+; 15721: 	l_v271583 = l_v271581;
+
+	mov	ecx, DWORD PTR _l_v271581$[ebp]
+	mov	DWORD PTR _l_v271583$[ebp], ecx
+
+; 15722: 	goto block3;
+
+	jmp	SHORT $block3$211599
+$block6$211614:
+
+; 15723: 
+; 15724:     block6:
+; 15725: 	l_v271582 = pypy_g_UCD_numeric(l_v271547, l_v271544, l_v271545);
+
+	mov	edx, DWORD PTR _l_v271545$[ebp]
+	push	edx
+	mov	eax, DWORD PTR _l_v271544$[ebp]
+	push	eax
+	mov	ecx, DWORD PTR _l_v271547$[ebp]
+	push	ecx
+	call	_pypy_g_UCD_numeric
+    ;; expected {4(%ebp) | %ebx, %esi, %edi, (%ebp) | }
+	add	esp, 12					; 0000000cH
+	mov	DWORD PTR _l_v271582$[ebp], eax
+
+; 15726: 	l_v271583 = l_v271582;
+
+	mov	edx, DWORD PTR _l_v271582$[ebp]
+	mov	DWORD PTR _l_v271583$[ebp], edx
+
+; 15727: 	goto block3;
+
+	jmp	SHORT $block3$211599
+$LN9 at pypy_g_Bui@2:
+
+; 15728: }
+
+	mov	esp, ebp
+	pop	ebp
+	ret	0
+	npad	3
+$LN14 at pypy_g_Bui@2:
+	DD	$LN5 at pypy_g_Bui@2
+	DD	$LN4 at pypy_g_Bui@2
+	DD	$LN3 at pypy_g_Bui@2
+	DD	$LN2 at pypy_g_Bui@2
+_pypy_g_BuiltinActivation_UwS_UCD_ObjSpace_W_Root_W_Root ENDP



More information about the Pypy-commit mailing list