50986d:	c7 40 14 0f 00 00 00 	movl   $0xf,0x14(%eax)
509874:	8b 54 24 04          	mov    0x4(%esp),%edx
509878:	89 50 18             	mov    %edx,0x18(%eax)
50987b:	8b c6                	mov    %esi,%eax
50987d:	8b 10                	mov    (%eax),%edx
50987f:	ff 12                	call   *(%edx)
509881:	8b 4c 24 18          	mov    0x18(%esp),%ecx
509885:	47                   	inc    %edi
509886:	89 0b                	mov    %ecx,(%ebx)
509888:	83 c3 04             	add    $0x4,%ebx
50988b:	3b 7c 24 14          	cmp    0x14(%esp),%edi
50988f:	7e ac                	jle    0x50983d
509891:	ff 44 24 0c          	incl   0xc(%esp)
509895:	83 44 24 1c 04       	addl   $0x4,0x1c(%esp)
50989a:	8b 44 24 0c          	mov    0xc(%esp),%eax
50989e:	3b 44 24 08          	cmp    0x8(%esp),%eax
5098a2:	0f 8c 55 ff ff ff    	jl     0x5097fd
5098a8:	eb 7d                	jmp    0x509927
5098aa:	83 7c 24 10 00       	cmpl   $0x0,0x10(%esp)
5098af:	75 12                	jne    0x5098c3
5098b1:	83 7c 24 14 3f       	cmpl   $0x3f,0x14(%esp)
5098b6:	75 0b                	jne    0x5098c3
5098b8:	85 ed                	test   %ebp,%ebp
5098ba:	75 07                	jne    0x5098c3
5098bc:	83 7c 24 18 00       	cmpl   $0x0,0x18(%esp)
5098c1:	74 16                	je     0x5098d9
5098c3:	8b 06                	mov    (%esi),%eax
5098c5:	c7 40 14 0f 00 00 00 	movl   $0xf,0x14(%eax)
5098cc:	8b 54 24 04          	mov    0x4(%esp),%edx
5098d0:	89 50 18             	mov    %edx,0x18(%eax)
5098d3:	8b c6                	mov    %esi,%eax
5098d5:	8b 10                	mov    (%eax),%edx
5098d7:	ff 12                	call   *(%edx)
5098d9:	33 c9                	xor    %ecx,%ecx
5098db:	89 4c 24 0c          	mov    %ecx,0xc(%esp)
5098df:	8b 04 24             	mov    (%esp),%eax
5098e2:	8d 78 04             	lea    0x4(%eax),%edi
5098e5:	8b 44 24 0c          	mov    0xc(%esp),%eax
5098e9:	3b 44 24 08          	cmp    0x8(%esp),%eax
5098ed:	7d 38                	jge    0x509927
5098ef:	8b 1f                	mov    (%edi),%ebx
5098f1:	83 7c 9c 20 00       	cmpl   $0x0,0x20(%esp,%ebx,4)
5098f6:	74 16                	je     0x50990e
5098f8:	8b 06                	mov    (%esi),%eax
5098fa:	c7 40 14 11 00 00 00 	movl   $0x11,0x14(%eax)
509901:	8b 54 24 04          	mov    0x4(%esp),%edx
509905:	89 50 18             	mov    %edx,0x18(%eax)
509908:	8b c6                	mov    %esi,%eax
50990a:	8b 10                	mov    (%eax),%edx
50990c:	ff 12                	call   *(%edx)
50990e:	c7 44 9c 20 01 00 00 	movl   $0x1,0x20(%esp,%ebx,4)
509915:	00
509916:	ff 44 24 0c          	incl   0xc(%esp)
50991a:	83 c7 04             	add    $0x4,%edi
50991d:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
509921:	3b 4c 24 08          	cmp    0x8(%esp),%ecx
509925:	7c c8                	jl     0x5098ef
509927:	83 04 24 24          	addl   $0x24,(%esp)
50992b:	ff 44 24 04          	incl   0x4(%esp)
50992f:	8b 44 24 04          	mov    0x4(%esp),%eax
509933:	3b 86 a0 00 00 00    	cmp    0xa0(%esi),%eax
509939:	0f 8e 42 fd ff ff    	jle    0x509681
50993f:	83 be dc 00 00 00 00 	cmpl   $0x0,0xdc(%esi)
509946:	74 35                	je     0x50997d
509948:	33 d2                	xor    %edx,%edx
50994a:	8d 5c 24 48          	lea    0x48(%esp),%ebx
50994e:	89 54 24 0c          	mov    %edx,0xc(%esp)
509952:	eb 1e                	jmp    0x509972
509954:	83 3b 00             	cmpl   $0x0,(%ebx)
509957:	7d 0f                	jge    0x509968
509959:	8b 06                	mov    (%esi),%eax
50995b:	c7 40 14 2c 00 00 00 	movl   $0x2c,0x14(%eax)
509962:	8b c6                	mov    %esi,%eax
509964:	8b 10                	mov    (%eax),%edx
509966:	ff 12                	call   *(%edx)
509968:	ff 44 24 0c          	incl   0xc(%esp)
50996c:	81 c3 00 01 00 00    	add    $0x100,%ebx
509972:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
509976:	3b 4e 34             	cmp    0x34(%esi),%ecx
509979:	7c d9                	jl     0x509954
50997b:	eb 30                	jmp    0x5099ad
50997d:	33 c0                	xor    %eax,%eax
50997f:	8d 5c 24 20          	lea    0x20(%esp),%ebx
509983:	89 44 24 0c          	mov    %eax,0xc(%esp)
509987:	eb 1b                	jmp    0x5099a4
509989:	83 3b 00             	cmpl   $0x0,(%ebx)
50998c:	75 0f                	jne    0x50999d
50998e:	8b 06                	mov    (%esi),%eax
509990:	c7 40 14 2c 00 00 00 	movl   $0x2c,0x14(%eax)
509997:	8b c6                	mov    %esi,%eax
509999:	8b 10                	mov    (%eax),%edx
50999b:	ff 12                	call   *(%edx)
50999d:	ff 44 24 0c          	incl   0xc(%esp)
5099a1:	83 c3 04             	add    $0x4,%ebx
5099a4:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
5099a8:	3b 4e 34             	cmp    0x34(%esi),%ecx
5099ab:	7c dc                	jl     0x509989
5099ad:	81 c4 48 0a 00 00    	add    $0xa48,%esp
5099b3:	5d                   	pop    %ebp
5099b4:	5f                   	pop    %edi
5099b5:	5e                   	pop    %esi
5099b6:	5b                   	pop    %ebx
5099b7:	c3                   	ret
5099b8:	53                   	push   %ebx
5099b9:	8b d8                	mov    %eax,%ebx
5099bb:	56                   	push   %esi
5099bc:	57                   	push   %edi
5099bd:	55                   	push   %ebp
5099be:	8b 93 a4 00 00 00    	mov    0xa4(%ebx),%edx
5099c4:	85 d2                	test   %edx,%edx
5099c6:	74 6d                	je     0x509a35
5099c8:	8b 83 44 01 00 00    	mov    0x144(%ebx),%eax
5099ce:	8d b3 f0 00 00 00    	lea    0xf0(%ebx),%esi
5099d4:	8b 48 20             	mov    0x20(%eax),%ecx
5099d7:	c1 e1 02             	shl    $0x2,%ecx
5099da:	8d 0c c9             	lea    (%ecx,%ecx,8),%ecx
5099dd:	03 ca                	add    %edx,%ecx
5099df:	8b d1                	mov    %ecx,%edx
5099e1:	8b 02                	mov    (%edx),%eax
5099e3:	8d 4a 04             	lea    0x4(%edx),%ecx
5099e6:	89 83 ec 00 00 00    	mov    %eax,0xec(%ebx)
5099ec:	33 c0                	xor    %eax,%eax
5099ee:	eb 1b                	jmp    0x509a0b
5099f0:	8b 39                	mov    (%ecx),%edi
5099f2:	40                   	inc    %eax
5099f3:	8b ef                	mov    %edi,%ebp
5099f5:	8d 7c bd 00          	lea    0x0(%ebp,%edi,4),%edi
5099f9:	8d 7c bd 00          	lea    0x0(%ebp,%edi,4),%edi
5099fd:	c1 e7 02             	shl    $0x2,%edi
509a00:	03 7b 3c             	add    0x3c(%ebx),%edi
509a03:	89 3e                	mov    %edi,(%esi)
509a05:	83 c6 04             	add    $0x4,%esi
509a08:	83 c1 04             	add    $0x4,%ecx
509a0b:	3b 02                	cmp    (%edx),%eax
509a0d:	7c e1                	jl     0x5099f0
509a0f:	8b 42 14             	mov    0x14(%edx),%eax
509a12:	89 83 34 01 00 00    	mov    %eax,0x134(%ebx)
509a18:	8b 4a 18             	mov    0x18(%edx),%ecx
509a1b:	89 8b 38 01 00 00    	mov    %ecx,0x138(%ebx)
509a21:	8b 42 1c             	mov    0x1c(%edx),%eax
509a24:	89 83 3c 01 00 00    	mov    %eax,0x13c(%ebx)
509a2a:	8b 52 20             	mov    0x20(%edx),%edx
509a2d:	89 93 40 01 00 00    	mov    %edx,0x140(%ebx)
509a33:	eb 6e                	jmp    0x509aa3
509a35:	83 7b 34 04          	cmpl   $0x4,0x34(%ebx)
509a39:	7e 1c                	jle    0x509a57
509a3b:	8b 03                	mov    (%ebx),%eax
509a3d:	c7 40 14 18 00 00 00 	movl   $0x18,0x14(%eax)
509a44:	8b 53 34             	mov    0x34(%ebx),%edx
509a47:	89 50 18             	mov    %edx,0x18(%eax)
509a4a:	c7 40 1c 04 00 00 00 	movl   $0x4,0x1c(%eax)
509a51:	8b c3                	mov    %ebx,%eax
509a53:	8b 10                	mov    (%eax),%edx
509a55:	ff 12                	call   *(%edx)
509a57:	8b 4b 34             	mov    0x34(%ebx),%ecx
509a5a:	89 8b ec 00 00 00    	mov    %ecx,0xec(%ebx)
509a60:	33 c0                	xor    %eax,%eax
509a62:	8d 93 f0 00 00 00    	lea    0xf0(%ebx),%edx
509a68:	eb 12                	jmp    0x509a7c
509a6a:	8d 0c 80             	lea    (%eax,%eax,4),%ecx
509a6d:	8d 0c 88             	lea    (%eax,%ecx,4),%ecx
509a70:	40                   	inc    %eax
509a71:	c1 e1 02             	shl    $0x2,%ecx
509a74:	03 4b 3c             	add    0x3c(%ebx),%ecx
509a77:	89 0a                	mov    %ecx,(%edx)
509a79:	83 c2 04             	add    $0x4,%edx
509a7c:	3b 43 34             	cmp    0x34(%ebx),%eax
509a7f:	7c e9                	jl     0x509a6a
509a81:	33 c0                	xor    %eax,%eax
509a83:	33 d2                	xor    %edx,%edx
509a85:	89 83 34 01 00 00    	mov    %eax,0x134(%ebx)
509a8b:	33 c9                	xor    %ecx,%ecx
509a8d:	c7 83 38 01 00 00 3f 	movl   $0x3f,0x138(%ebx)
509a94:	00 00 00
509a97:	89 93 3c 01 00 00    	mov    %edx,0x13c(%ebx)
509a9d:	89 8b 40 01 00 00    	mov    %ecx,0x140(%ebx)
509aa3:	5d                   	pop    %ebp
509aa4:	5f                   	pop    %edi
509aa5:	5e                   	pop    %esi
509aa6:	5b                   	pop    %ebx
509aa7:	c3                   	ret
509aa8:	53                   	push   %ebx
509aa9:	8b d8                	mov    %eax,%ebx
509aab:	56                   	push   %esi
509aac:	57                   	push   %edi
509aad:	51                   	push   %ecx
509aae:	83 bb ec 00 00 00 01 	cmpl   $0x1,0xec(%ebx)
509ab5:	75 67                	jne    0x509b1e
509ab7:	8b 8b f0 00 00 00    	mov    0xf0(%ebx),%ecx
509abd:	8b 41 1c             	mov    0x1c(%ecx),%eax
509ac0:	89 83 00 01 00 00    	mov    %eax,0x100(%ebx)
509ac6:	8b 51 20             	mov    0x20(%ecx),%edx
509ac9:	89 93 04 01 00 00    	mov    %edx,0x104(%ebx)
509acf:	33 d2                	xor    %edx,%edx
509ad1:	c7 41 34 01 00 00 00 	movl   $0x1,0x34(%ecx)
509ad8:	c7 41 38 01 00 00 00 	movl   $0x1,0x38(%ecx)
509adf:	c7 41 3c 01 00 00 00 	movl   $0x1,0x3c(%ecx)
509ae6:	c7 41 40 08 00 00 00 	movl   $0x8,0x40(%ecx)
509aed:	c7 41 44 01 00 00 00 	movl   $0x1,0x44(%ecx)
509af4:	8b 41 20             	mov    0x20(%ecx),%eax
509af7:	8b 71 0c             	mov    0xc(%ecx),%esi
509afa:	f7 f6                	div    %esi
509afc:	8b c2                	mov    %edx,%eax
509afe:	85 c0                	test   %eax,%eax
509b00:	75 02                	jne    0x509b04
509b02:	8b c6                	mov    %esi,%eax
509b04:	89 41 48             	mov    %eax,0x48(%ecx)
509b07:	33 d2                	xor    %edx,%edx
509b09:	c7 83 08 01 00 00 01 	movl   $0x1,0x108(%ebx)
509b10:	00 00 00
509b13:	89 93 0c 01 00 00    	mov    %edx,0x10c(%ebx)
509b19:	e9 11 01 00 00       	jmp    0x509c2f
509b1e:	8b 83 ec 00 00 00    	mov    0xec(%ebx),%eax
509b24:	85 c0                	test   %eax,%eax
509b26:	7e 05                	jle    0x509b2d
509b28:	83 f8 04             	cmp    $0x4,%eax
509b2b:	7e 1f                	jle    0x509b4c
509b2d:	8b 03                	mov    (%ebx),%eax
509b2f:	c7 40 14 18 00 00 00 	movl   $0x18,0x14(%eax)
509b36:	8b 93 ec 00 00 00    	mov    0xec(%ebx),%edx
509b3c:	89 50 18             	mov    %edx,0x18(%eax)
509b3f:	c7 40 1c 04 00 00 00 	movl   $0x4,0x1c(%eax)
509b46:	8b c3                	mov    %ebx,%eax
509b48:	8b 10                	mov    (%eax),%edx
509b4a:	ff 12                	call   *(%edx)
509b4c:	8b 8b e0 00 00 00    	mov    0xe0(%ebx),%ecx
509b52:	c1 e1 03             	shl    $0x3,%ecx
509b55:	8b c1                	mov    %ecx,%eax
509b57:	03 43 18             	add    0x18(%ebx),%eax
509b5a:	48                   	dec    %eax
509b5b:	99                   	cltd
509b5c:	f7 f9                	idiv   %ecx
509b5e:	89 83 00 01 00 00    	mov    %eax,0x100(%ebx)
509b64:	8b 8b e4 00 00 00    	mov    0xe4(%ebx),%ecx
509b6a:	c1 e1 03             	shl    $0x3,%ecx
509b6d:	8b c1                	mov    %ecx,%eax
509b6f:	03 43 1c             	add    0x1c(%ebx),%eax
509b72:	48                   	dec    %eax
509b73:	99                   	cltd
509b74:	f7 f9                	idiv   %ecx
509b76:	89 83 04 01 00 00    	mov    %eax,0x104(%ebx)
509b7c:	33 c9                	xor    %ecx,%ecx
509b7e:	89 8b 08 01 00 00    	mov    %ecx,0x108(%ebx)
509b84:	33 f6                	xor    %esi,%esi
509b86:	8d 83 f0 00 00 00    	lea    0xf0(%ebx),%eax
509b8c:	89 04 24             	mov    %eax,(%esp)
509b8f:	e9 8f 00 00 00       	jmp    0x509c23
509b94:	8b 14 24             	mov    (%esp),%edx
509b97:	8b 0a                	mov    (%edx),%ecx
509b99:	8b 41 08             	mov    0x8(%ecx),%eax
509b9c:	89 41 34             	mov    %eax,0x34(%ecx)
509b9f:	8b 41 0c             	mov    0xc(%ecx),%eax
509ba2:	89 41 38             	mov    %eax,0x38(%ecx)
509ba5:	8b 51 34             	mov    0x34(%ecx),%edx
509ba8:	0f af d0             	imul   %eax,%edx
509bab:	89 51 3c             	mov    %edx,0x3c(%ecx)
509bae:	33 d2                	xor    %edx,%edx
509bb0:	8b 41 34             	mov    0x34(%ecx),%eax
509bb3:	c1 e0 03             	shl    $0x3,%eax
509bb6:	89 41 40             	mov    %eax,0x40(%ecx)
509bb9:	8b 41 1c             	mov    0x1c(%ecx),%eax
509bbc:	8b 79 34             	mov    0x34(%ecx),%edi
509bbf:	f7 f7                	div    %edi
509bc1:	8b c2                	mov    %edx,%eax
509bc3:	85 c0                	test   %eax,%eax
509bc5:	75 02                	jne    0x509bc9
509bc7:	8b c7                	mov    %edi,%eax
509bc9:	89 41 44             	mov    %eax,0x44(%ecx)
509bcc:	33 d2                	xor    %edx,%edx
509bce:	8b 41 20             	mov    0x20(%ecx),%eax
509bd1:	8b 79 38             	mov    0x38(%ecx),%edi
509bd4:	f7 f7                	div    %edi
509bd6:	8b c2                	mov    %edx,%eax
509bd8:	85 c0                	test   %eax,%eax
509bda:	75 02                	jne    0x509bde
509bdc:	8b c7                	mov    %edi,%eax
509bde:	89 41 48             	mov    %eax,0x48(%ecx)
509be1:	8b 79 3c             	mov    0x3c(%ecx),%edi
509be4:	8b 83 08 01 00 00    	mov    0x108(%ebx),%eax
509bea:	03 c7                	add    %edi,%eax
509bec:	83 f8 0a             	cmp    $0xa,%eax
509bef:	7e 24                	jle    0x509c15
509bf1:	8b 13                	mov    (%ebx),%edx
509bf3:	8b c3                	mov    %ebx,%eax
509bf5:	c7 42 14 0b 00 00 00 	movl   $0xb,0x14(%edx)
509bfc:	8b 10                	mov    (%eax),%edx
509bfe:	ff 12                	call   *(%edx)
509c00:	eb 13                	jmp    0x509c15
509c02:	8b 8b 08 01 00 00    	mov    0x108(%ebx),%ecx
509c08:	ff 83 08 01 00 00    	incl   0x108(%ebx)
509c0e:	89 b4 8b 0c 01 00 00 	mov    %esi,0x10c(%ebx,%ecx,4)
509c15:	8b c7                	mov    %edi,%eax
509c17:	83 c7 ff             	add    $0xffffffff,%edi
509c1a:	85 c0                	test   %eax,%eax
509c1c:	7f e4                	jg     0x509c02
509c1e:	46                   	inc    %esi
509c1f:	83 04 24 04          	addl   $0x4,(%esp)
509c23:	3b b3 ec 00 00 00    	cmp    0xec(%ebx),%esi
509c29:	0f 8c 65 ff ff ff    	jl     0x509b94
509c2f:	8b 83 c4 00 00 00    	mov    0xc4(%ebx),%eax
509c35:	85 c0                	test   %eax,%eax
509c37:	7e 18                	jle    0x509c51
509c39:	f7 ab 00 01 00 00    	imull  0x100(%ebx)
509c3f:	3d ff ff 00 00       	cmp    $0xffff,%eax
509c44:	7c 05                	jl     0x509c4b
509c46:	b8 ff ff 00 00       	mov    $0xffff,%eax
509c4b:	89 83 c0 00 00 00    	mov    %eax,0xc0(%ebx)
509c51:	5a                   	pop    %edx
509c52:	5f                   	pop    %edi
509c53:	5e                   	pop    %esi
509c54:	5b                   	pop    %ebx
509c55:	c3                   	ret
509c56:	90                   	nop
509c57:	90                   	nop
509c58:	53                   	push   %ebx
509c59:	8b d8                	mov    %eax,%ebx
509c5b:	56                   	push   %esi
509c5c:	8b b3 44 01 00 00    	mov    0x144(%ebx),%esi
509c62:	8b 46 14             	mov    0x14(%esi),%eax
509c65:	83 e8 01             	sub    $0x1,%eax
509c68:	72 12                	jb     0x509c7c
509c6a:	0f 84 a1 00 00 00    	je     0x509d11
509c70:	48                   	dec    %eax
509c71:	0f 84 f2 00 00 00    	je     0x509d69
509c77:	e9 42 01 00 00       	jmp    0x509dbe
509c7c:	8b c3                	mov    %ebx,%eax
509c7e:	e8 35 fd ff ff       	call   0x5099b8
509c83:	8b c3                	mov    %ebx,%eax
509c85:	e8 1e fe ff ff       	call   0x509aa8
509c8a:	83 bb a8 00 00 00 00 	cmpl   $0x0,0xa8(%ebx)
509c91:	75 20                	jne    0x509cb3
509c93:	8b c3                	mov    %ebx,%eax
509c95:	8b 90 58 01 00 00    	mov    0x158(%eax),%edx
509c9b:	ff 12                	call   *(%edx)
509c9d:	8b c3                	mov    %ebx,%eax
509c9f:	8b 90 5c 01 00 00    	mov    0x15c(%eax),%edx
509ca5:	ff 12                	call   *(%edx)
509ca7:	33 d2                	xor    %edx,%edx
509ca9:	8b c3                	mov    %ebx,%eax
509cab:	8b 88 4c 01 00 00    	mov    0x14c(%eax),%ecx
509cb1:	ff 11                	call   *(%ecx)
509cb3:	8b c3                	mov    %ebx,%eax
509cb5:	8b 90 60 01 00 00    	mov    0x160(%eax),%edx
509cbb:	ff 12                	call   *(%edx)
509cbd:	8b 93 b0 00 00 00    	mov    0xb0(%ebx),%edx
509cc3:	8b c3                	mov    %ebx,%eax
509cc5:	8b 88 64 01 00 00    	mov    0x164(%eax),%ecx
509ccb:	ff 11                	call   *(%ecx)
509ccd:	83 7e 1c 01          	cmpl   $0x1,0x1c(%esi)
509cd1:	7e 07                	jle    0x509cda