501dac:	8b 44 24 34          	mov    0x34(%esp),%eax
501db0:	8b 08                	mov    (%eax),%ecx
501db2:	8b c3                	mov    %ebx,%eax
501db4:	c1 e0 06             	shl    $0x6,%eax
501db7:	03 c8                	add    %eax,%ecx
501db9:	8b 44 24 18          	mov    0x18(%esp),%eax
501dbd:	03 c0                	add    %eax,%eax
501dbf:	03 c8                	add    %eax,%ecx
501dc1:	8b 44 24 18          	mov    0x18(%esp),%eax
501dc5:	3b f0                	cmp    %eax,%esi
501dc7:	7c 1c                	jl     0x501de5
501dc9:	66 8b 39             	mov    (%ecx),%di
501dcc:	83 c1 02             	add    $0x2,%ecx
501dcf:	66 85 ff             	test   %di,%di
501dd2:	74 0c                	je     0x501de0
501dd4:	89 5c 24 14          	mov    %ebx,0x14(%esp)
501dd8:	8b 04 24             	mov    (%esp),%eax
501ddb:	89 58 0c             	mov    %ebx,0xc(%eax)
501dde:	eb 18                	jmp    0x501df8
501de0:	40                   	inc    %eax
501de1:	3b f0                	cmp    %eax,%esi
501de3:	7d e4                	jge    0x501dc9
501de5:	42                   	inc    %edx
501de6:	83 44 24 34 04       	addl   $0x4,0x34(%esp)
501deb:	3b 54 24 0c          	cmp    0xc(%esp),%edx
501def:	7e bb                	jle    0x501dac
501df1:	4b                   	dec    %ebx
501df2:	3b 5c 24 10          	cmp    0x10(%esp),%ebx
501df6:	7d 9f                	jge    0x501d97
501df8:	3b 74 24 18          	cmp    0x18(%esp),%esi
501dfc:	7e 69                	jle    0x501e67
501dfe:	8b 44 24 18          	mov    0x18(%esp),%eax
501e02:	3b f0                	cmp    %eax,%esi
501e04:	7c 61                	jl     0x501e67
501e06:	8b 54 24 08          	mov    0x8(%esp),%edx
501e0a:	8b 4c 24 04          	mov    0x4(%esp),%ecx
501e0e:	8d 0c 91             	lea    (%ecx,%edx,4),%ecx
501e11:	89 4c 24 38          	mov    %ecx,0x38(%esp)
501e15:	3b 54 24 0c          	cmp    0xc(%esp),%edx
501e19:	7f 47                	jg     0x501e62
501e1b:	8b 4c 24 38          	mov    0x38(%esp),%ecx
501e1f:	8b 5c 24 10          	mov    0x10(%esp),%ebx
501e23:	c1 e3 06             	shl    $0x6,%ebx
501e26:	8b 09                	mov    (%ecx),%ecx
501e28:	03 cb                	add    %ebx,%ecx
501e2a:	8b d8                	mov    %eax,%ebx
501e2c:	03 db                	add    %ebx,%ebx
501e2e:	03 cb                	add    %ebx,%ecx
501e30:	8b 5c 24 10          	mov    0x10(%esp),%ebx
501e34:	3b 5c 24 14          	cmp    0x14(%esp),%ebx
501e38:	7f 1c                	jg     0x501e56
501e3a:	66 83 39 00          	cmpw   $0x0,(%ecx)
501e3e:	74 0c                	je     0x501e4c
501e40:	89 44 24 18          	mov    %eax,0x18(%esp)
501e44:	8b 14 24             	mov    (%esp),%edx
501e47:	89 42 10             	mov    %eax,0x10(%edx)
501e4a:	eb 1b                	jmp    0x501e67
501e4c:	43                   	inc    %ebx
501e4d:	83 c1 40             	add    $0x40,%ecx
501e50:	3b 5c 24 14          	cmp    0x14(%esp),%ebx
501e54:	7e e4                	jle    0x501e3a
501e56:	42                   	inc    %edx
501e57:	83 44 24 38 04       	addl   $0x4,0x38(%esp)
501e5c:	3b 54 24 0c          	cmp    0xc(%esp),%edx
501e60:	7e b9                	jle    0x501e1b
501e62:	40                   	inc    %eax
501e63:	3b f0                	cmp    %eax,%esi
501e65:	7d 9f                	jge    0x501e06
501e67:	3b 74 24 18          	cmp    0x18(%esp),%esi
501e6b:	7e 69                	jle    0x501ed6
501e6d:	8b c6                	mov    %esi,%eax
501e6f:	3b 44 24 18          	cmp    0x18(%esp),%eax
501e73:	7c 61                	jl     0x501ed6
501e75:	8b 54 24 08          	mov    0x8(%esp),%edx
501e79:	8b 4c 24 04          	mov    0x4(%esp),%ecx
501e7d:	8d 0c 91             	lea    (%ecx,%edx,4),%ecx
501e80:	89 4c 24 3c          	mov    %ecx,0x3c(%esp)
501e84:	3b 54 24 0c          	cmp    0xc(%esp),%edx
501e88:	7f 45                	jg     0x501ecf
501e8a:	8b 4c 24 3c          	mov    0x3c(%esp),%ecx
501e8e:	8b 5c 24 10          	mov    0x10(%esp),%ebx
501e92:	c1 e3 06             	shl    $0x6,%ebx
501e95:	8b 09                	mov    (%ecx),%ecx
501e97:	03 cb                	add    %ebx,%ecx
501e99:	8b d8                	mov    %eax,%ebx
501e9b:	03 db                	add    %ebx,%ebx
501e9d:	03 cb                	add    %ebx,%ecx
501e9f:	8b 5c 24 10          	mov    0x10(%esp),%ebx
501ea3:	3b 5c 24 14          	cmp    0x14(%esp),%ebx
501ea7:	7f 1a                	jg     0x501ec3
501ea9:	66 83 39 00          	cmpw   $0x0,(%ecx)
501ead:	74 0a                	je     0x501eb9
501eaf:	8b f0                	mov    %eax,%esi
501eb1:	8b 14 24             	mov    (%esp),%edx
501eb4:	89 42 14             	mov    %eax,0x14(%edx)
501eb7:	eb 1d                	jmp    0x501ed6
501eb9:	43                   	inc    %ebx
501eba:	83 c1 40             	add    $0x40,%ecx
501ebd:	3b 5c 24 14          	cmp    0x14(%esp),%ebx
501ec1:	7e e6                	jle    0x501ea9
501ec3:	42                   	inc    %edx
501ec4:	83 44 24 3c 04       	addl   $0x4,0x3c(%esp)
501ec9:	3b 54 24 0c          	cmp    0xc(%esp),%edx
501ecd:	7e bb                	jle    0x501e8a
501ecf:	48                   	dec    %eax
501ed0:	3b 44 24 18          	cmp    0x18(%esp),%eax
501ed4:	7d 9f                	jge    0x501e75
501ed6:	8b 44 24 0c          	mov    0xc(%esp),%eax
501eda:	8b 54 24 14          	mov    0x14(%esp),%edx
501ede:	2b 44 24 08          	sub    0x8(%esp),%eax
501ee2:	2b 54 24 10          	sub    0x10(%esp),%edx
501ee6:	c1 e0 03             	shl    $0x3,%eax
501ee9:	8b ce                	mov    %esi,%ecx
501eeb:	8b d8                	mov    %eax,%ebx
501eed:	0f af d8             	imul   %eax,%ebx
501ef0:	c1 e2 02             	shl    $0x2,%edx
501ef3:	2b 4c 24 18          	sub    0x18(%esp),%ecx
501ef7:	c1 e1 03             	shl    $0x3,%ecx
501efa:	03 c9                	add    %ecx,%ecx
501efc:	8d 14 52             	lea    (%edx,%edx,2),%edx
501eff:	8b c2                	mov    %edx,%eax
501f01:	f7 ea                	imul   %edx
501f03:	8b d1                	mov    %ecx,%edx
501f05:	03 d8                	add    %eax,%ebx
501f07:	0f af d1             	imul   %ecx,%edx
501f0a:	8b 0c 24             	mov    (%esp),%ecx
501f0d:	03 da                	add    %edx,%ebx
501f0f:	33 c0                	xor    %eax,%eax
501f11:	89 59 18             	mov    %ebx,0x18(%ecx)
501f14:	89 44 24 1c          	mov    %eax,0x1c(%esp)
501f18:	8b 54 24 08          	mov    0x8(%esp),%edx
501f1c:	8b 4c 24 04          	mov    0x4(%esp),%ecx
501f20:	8d 04 91             	lea    (%ecx,%edx,4),%eax
501f23:	89 44 24 44          	mov    %eax,0x44(%esp)
501f27:	3b 54 24 0c          	cmp    0xc(%esp),%edx
501f2b:	7f 56                	jg     0x501f83
501f2d:	8b 5c 24 10          	mov    0x10(%esp),%ebx
501f31:	8b 44 24 44          	mov    0x44(%esp),%eax
501f35:	8b c8                	mov    %eax,%ecx
501f37:	89 4c 24 40          	mov    %ecx,0x40(%esp)
501f3b:	3b 5c 24 14          	cmp    0x14(%esp),%ebx
501f3f:	7f 36                	jg     0x501f77
501f41:	8b 44 24 40          	mov    0x40(%esp),%eax
501f45:	8b 08                	mov    (%eax),%ecx
501f47:	8b c3                	mov    %ebx,%eax
501f49:	c1 e0 06             	shl    $0x6,%eax
501f4c:	03 c8                	add    %eax,%ecx
501f4e:	8b 44 24 18          	mov    0x18(%esp),%eax
501f52:	03 c0                	add    %eax,%eax
501f54:	03 c8                	add    %eax,%ecx
501f56:	8b 44 24 18          	mov    0x18(%esp),%eax
501f5a:	3b f0                	cmp    %eax,%esi
501f5c:	7c 12                	jl     0x501f70
501f5e:	66 83 39 00          	cmpw   $0x0,(%ecx)
501f62:	74 04                	je     0x501f68
501f64:	ff 44 24 1c          	incl   0x1c(%esp)
501f68:	40                   	inc    %eax
501f69:	83 c1 02             	add    $0x2,%ecx
501f6c:	3b f0                	cmp    %eax,%esi
501f6e:	7d ee                	jge    0x501f5e
501f70:	43                   	inc    %ebx
501f71:	3b 5c 24 14          	cmp    0x14(%esp),%ebx
501f75:	7e ca                	jle    0x501f41
501f77:	42                   	inc    %edx
501f78:	83 44 24 44 04       	addl   $0x4,0x44(%esp)
501f7d:	3b 54 24 0c          	cmp    0xc(%esp),%edx
501f81:	7e aa                	jle    0x501f2d
501f83:	8b 14 24             	mov    (%esp),%edx
501f86:	8b 4c 24 1c          	mov    0x1c(%esp),%ecx
501f8a:	89 4a 1c             	mov    %ecx,0x1c(%edx)
501f8d:	83 c4 48             	add    $0x48,%esp
501f90:	5f                   	pop    %edi
501f91:	5e                   	pop    %esi
501f92:	5b                   	pop    %ebx
501f93:	c3                   	ret
501f94:	55                   	push   %ebp
501f95:	8b ec                	mov    %esp,%ebp
501f97:	83 c4 f0             	add    $0xfffffff0,%esp
501f9a:	53                   	push   %ebx
501f9b:	56                   	push   %esi
501f9c:	8b f1                	mov    %ecx,%esi
501f9e:	89 55 f8             	mov    %edx,-0x8(%ebp)
501fa1:	89 45 fc             	mov    %eax,-0x4(%ebp)
501fa4:	3b 75 08             	cmp    0x8(%ebp),%esi
501fa7:	0f 8d f7 00 00 00    	jge    0x5020a4
501fad:	8b c6                	mov    %esi,%eax
501faf:	03 c0                	add    %eax,%eax
501fb1:	3b 45 08             	cmp    0x8(%ebp),%eax
501fb4:	7f 0c                	jg     0x501fc2
501fb6:	8b d6                	mov    %esi,%edx
501fb8:	8b 45 f8             	mov    -0x8(%ebp),%eax
501fbb:	e8 b0 fb ff ff       	call   0x501b70
501fc0:	eb 0a                	jmp    0x501fcc
501fc2:	8b d6                	mov    %esi,%edx
501fc4:	8b 45 f8             	mov    -0x8(%ebp),%eax
501fc7:	e8 d0 fb ff ff       	call   0x501b9c
501fcc:	85 c0                	test   %eax,%eax
501fce:	0f 84 d0 00 00 00    	je     0x5020a4
501fd4:	8b de                	mov    %esi,%ebx
501fd6:	c1 e3 05             	shl    $0x5,%ebx
501fd9:	03 5d f8             	add    -0x8(%ebp),%ebx
501fdc:	8b 50 04             	mov    0x4(%eax),%edx
501fdf:	89 53 04             	mov    %edx,0x4(%ebx)
501fe2:	8b 48 0c             	mov    0xc(%eax),%ecx
501fe5:	89 4b 0c             	mov    %ecx,0xc(%ebx)
501fe8:	8b 50 14             	mov    0x14(%eax),%edx
501feb:	89 53 14             	mov    %edx,0x14(%ebx)
501fee:	8b 08                	mov    (%eax),%ecx
501ff0:	89 0b                	mov    %ecx,(%ebx)
501ff2:	8b 50 08             	mov    0x8(%eax),%edx
501ff5:	89 53 08             	mov    %edx,0x8(%ebx)
501ff8:	8b 48 10             	mov    0x10(%eax),%ecx
501ffb:	89 4b 10             	mov    %ecx,0x10(%ebx)
501ffe:	8b 50 04             	mov    0x4(%eax),%edx
502001:	2b 10                	sub    (%eax),%edx
502003:	c1 e2 03             	shl    $0x3,%edx
502006:	89 55 f4             	mov    %edx,-0xc(%ebp)
502009:	8b 48 0c             	mov    0xc(%eax),%ecx
50200c:	2b 48 08             	sub    0x8(%eax),%ecx
50200f:	c1 e1 02             	shl    $0x2,%ecx
502012:	8d 14 49             	lea    (%ecx,%ecx,2),%edx
502015:	8b 48 14             	mov    0x14(%eax),%ecx
502018:	2b 48 10             	sub    0x10(%eax),%ecx
50201b:	c1 e1 03             	shl    $0x3,%ecx
50201e:	03 c9                	add    %ecx,%ecx
502020:	89 4d f0             	mov    %ecx,-0x10(%ebp)
502023:	b9 01 00 00 00       	mov    $0x1,%ecx
502028:	3b 55 f0             	cmp    -0x10(%ebp),%edx
50202b:	7d 08                	jge    0x502035
50202d:	8b 55 f0             	mov    -0x10(%ebp),%edx
502030:	b9 02 00 00 00       	mov    $0x2,%ecx
502035:	3b 55 f4             	cmp    -0xc(%ebp),%edx
502038:	7d 02                	jge    0x50203c
50203a:	33 c9                	xor    %ecx,%ecx
50203c:	83 e9 01             	sub    $0x1,%ecx
50203f:	72 07                	jb     0x502048
502041:	74 19                	je     0x50205c
502043:	49                   	dec    %ecx
502044:	74 2c                	je     0x502072
502046:	eb 3e                	jmp    0x502086
502048:	8b 50 04             	mov    0x4(%eax),%edx
50204b:	03 10                	add    (%eax),%edx
50204d:	d1 fa                	sar    $1,%edx
50204f:	79 03                	jns    0x502054
502051:	83 d2 00             	adc    $0x0,%edx
502054:	89 50 04             	mov    %edx,0x4(%eax)
502057:	42                   	inc    %edx
502058:	89 13                	mov    %edx,(%ebx)
50205a:	eb 2a                	jmp    0x502086
50205c:	8b 50 0c             	mov    0xc(%eax),%edx
50205f:	03 50 08             	add    0x8(%eax),%edx
502062:	d1 fa                	sar    $1,%edx
502064:	79 03                	jns    0x502069
502066:	83 d2 00             	adc    $0x0,%edx
502069:	89 50 0c             	mov    %edx,0xc(%eax)
50206c:	42                   	inc    %edx
50206d:	89 53 08             	mov    %edx,0x8(%ebx)
502070:	eb 14                	jmp    0x502086
502072:	8b 50 14             	mov    0x14(%eax),%edx
502075:	03 50 10             	add    0x10(%eax),%edx
502078:	d1 fa                	sar    $1,%edx
50207a:	79 03                	jns    0x50207f
50207c:	83 d2 00             	adc    $0x0,%edx
50207f:	89 50 14             	mov    %edx,0x14(%eax)
502082:	42                   	inc    %edx
502083:	89 53 10             	mov    %edx,0x10(%ebx)
502086:	8b d0                	mov    %eax,%edx
502088:	8b 45 fc             	mov    -0x4(%ebp),%eax
50208b:	e8 34 fb ff ff       	call   0x501bc4
502090:	8b d3                	mov    %ebx,%edx
502092:	8b 45 fc             	mov    -0x4(%ebp),%eax
502095:	e8 2a fb ff ff       	call   0x501bc4
50209a:	46                   	inc    %esi
50209b:	3b 75 08             	cmp    0x8(%ebp),%esi
50209e:	0f 8c 09 ff ff ff    	jl     0x501fad
5020a4:	8b c6                	mov    %esi,%eax
5020a6:	5e                   	pop    %esi
5020a7:	5b                   	pop    %ebx
5020a8:	8b e5                	mov    %ebp,%esp
5020aa:	5d                   	pop    %ebp
5020ab:	c2 04 00             	ret    $0x4
5020ae:	90                   	nop
5020af:	90                   	nop
5020b0:	53                   	push   %ebx
5020b1:	56                   	push   %esi
5020b2:	57                   	push   %edi
5020b3:	55                   	push   %ebp
5020b4:	83 c4 d0             	add    $0xffffffd0,%esp
5020b7:	89 4c 24 04          	mov    %ecx,0x4(%esp)
5020bb:	89 04 24             	mov    %eax,(%esp)
5020be:	8b 04 24             	mov    (%esp),%eax
5020c1:	33 c9                	xor    %ecx,%ecx
5020c3:	8b 80 c4 01 00 00    	mov    0x1c4(%eax),%eax
5020c9:	8b 40 18             	mov    0x18(%eax),%eax
5020cc:	89 4c 24 18          	mov    %ecx,0x18(%esp)
5020d0:	33 c9                	xor    %ecx,%ecx
5020d2:	89 4c 24 1c          	mov    %ecx,0x1c(%esp)
5020d6:	33 c9                	xor    %ecx,%ecx
5020d8:	89 4c 24 20          	mov    %ecx,0x20(%esp)
5020dc:	33 c9                	xor    %ecx,%ecx
5020de:	89 4c 24 24          	mov    %ecx,0x24(%esp)
5020e2:	8b 0a                	mov    (%edx),%ecx
5020e4:	8b 5a 04             	mov    0x4(%edx),%ebx
5020e7:	89 5c 24 08          	mov    %ebx,0x8(%esp)
5020eb:	8b 5a 08             	mov    0x8(%edx),%ebx
5020ee:	8d 04 88             	lea    (%eax,%ecx,4),%eax
5020f1:	89 5c 24 0c          	mov    %ebx,0xc(%esp)
5020f5:	8b 5a 0c             	mov    0xc(%edx),%ebx
5020f8:	89 5c 24 10          	mov    %ebx,0x10(%esp)
5020fc:	8b 5a 10             	mov    0x10(%edx),%ebx
5020ff:	89 5c 24 14          	mov    %ebx,0x14(%esp)
502103:	8b 72 14             	mov    0x14(%edx),%esi
502106:	89 44 24 2c          	mov    %eax,0x2c(%esp)
50210a:	3b 4c 24 08          	cmp    0x8(%esp),%ecx
50210e:	0f 8f 8b 00 00 00    	jg     0x50219f
502114:	8b 5c 24 0c          	mov    0xc(%esp),%ebx
502118:	8b 44 24 2c          	mov    0x2c(%esp),%eax
50211c:	8b d0                	mov    %eax,%edx
50211e:	89 54 24 28          	mov    %edx,0x28(%esp)
502122:	3b 5c 24 10          	cmp    0x10(%esp),%ebx
502126:	7f 67                	jg     0x50218f
502128:	8b 44 24 28          	mov    0x28(%esp),%eax
50212c:	8b 38                	mov    (%eax),%edi
50212e:	8b c3                	mov    %ebx,%eax
502130:	c1 e0 06             	shl    $0x6,%eax
502133:	03 f8                	add    %eax,%edi
502135:	8b 54 24 14          	mov    0x14(%esp),%edx
502139:	03 d2                	add    %edx,%edx
50213b:	03 fa                	add    %edx,%edi
50213d:	8b 54 24 14          	mov    0x14(%esp),%edx
502141:	3b f2                	cmp    %edx,%esi
502143:	7c 43                	jl     0x502188
502145:	66 8b 07             	mov    (%edi),%ax
502148:	83 c7 02             	add    $0x2,%edi
50214b:	0f b7 c0             	movzwl %ax,%eax
50214e:	85 c0                	test   %eax,%eax
502150:	74 31                	je     0x502183
502152:	01 44 24 18          	add    %eax,0x18(%esp)
502156:	8b e9                	mov    %ecx,%ebp
502158:	c1 e5 03             	shl    $0x3,%ebp
50215b:	83 c5 04             	add    $0x4,%ebp
50215e:	0f af e8             	imul   %eax,%ebp
502161:	01 6c 24 1c          	add    %ebp,0x1c(%esp)
502165:	8b eb                	mov    %ebx,%ebp
502167:	c1 e5 02             	shl    $0x2,%ebp
50216a:	83 c5 02             	add    $0x2,%ebp
50216d:	0f af e8             	imul   %eax,%ebp
502170:	01 6c 24 20          	add    %ebp,0x20(%esp)
502174:	8b ea                	mov    %edx,%ebp
502176:	c1 e5 03             	shl    $0x3,%ebp