501bb8:	3b d1                	cmp    %ecx,%edx
501bba:	7f ed                	jg     0x501ba9
501bbc:	8b c7                	mov    %edi,%eax
501bbe:	5f                   	pop    %edi
501bbf:	5e                   	pop    %esi
501bc0:	5b                   	pop    %ebx
501bc1:	c3                   	ret
501bc2:	90                   	nop
501bc3:	90                   	nop
501bc4:	53                   	push   %ebx
501bc5:	56                   	push   %esi
501bc6:	57                   	push   %edi
501bc7:	83 c4 b8             	add    $0xffffffb8,%esp
501bca:	89 14 24             	mov    %edx,(%esp)
501bcd:	8b 80 c4 01 00 00    	mov    0x1c4(%eax),%eax
501bd3:	8b 40 18             	mov    0x18(%eax),%eax
501bd6:	89 44 24 04          	mov    %eax,0x4(%esp)
501bda:	8b 14 24             	mov    (%esp),%edx
501bdd:	8b 0a                	mov    (%edx),%ecx
501bdf:	89 4c 24 08          	mov    %ecx,0x8(%esp)
501be3:	8b 04 24             	mov    (%esp),%eax
501be6:	8b 50 04             	mov    0x4(%eax),%edx
501be9:	89 54 24 0c          	mov    %edx,0xc(%esp)
501bed:	8b 0c 24             	mov    (%esp),%ecx
501bf0:	8b 41 08             	mov    0x8(%ecx),%eax
501bf3:	89 44 24 10          	mov    %eax,0x10(%esp)
501bf7:	8b 14 24             	mov    (%esp),%edx
501bfa:	8b 4a 0c             	mov    0xc(%edx),%ecx
501bfd:	89 4c 24 14          	mov    %ecx,0x14(%esp)
501c01:	8b 04 24             	mov    (%esp),%eax
501c04:	8b 50 10             	mov    0x10(%eax),%edx
501c07:	89 54 24 18          	mov    %edx,0x18(%esp)
501c0b:	8b 0c 24             	mov    (%esp),%ecx
501c0e:	8b 71 14             	mov    0x14(%ecx),%esi
501c11:	8b 44 24 0c          	mov    0xc(%esp),%eax
501c15:	3b 44 24 08          	cmp    0x8(%esp),%eax
501c19:	7e 74                	jle    0x501c8f
501c1b:	8b 54 24 08          	mov    0x8(%esp),%edx
501c1f:	8b 4c 24 04          	mov    0x4(%esp),%ecx
501c23:	8d 04 91             	lea    (%ecx,%edx,4),%eax
501c26:	89 44 24 24          	mov    %eax,0x24(%esp)
501c2a:	3b 54 24 0c          	cmp    0xc(%esp),%edx
501c2e:	7f 5f                	jg     0x501c8f
501c30:	8b 5c 24 10          	mov    0x10(%esp),%ebx
501c34:	8b 44 24 24          	mov    0x24(%esp),%eax
501c38:	8b c8                	mov    %eax,%ecx
501c3a:	89 4c 24 20          	mov    %ecx,0x20(%esp)
501c3e:	3b 5c 24 14          	cmp    0x14(%esp),%ebx
501c42:	7f 3f                	jg     0x501c83
501c44:	8b 44 24 20          	mov    0x20(%esp),%eax
501c48:	8b 08                	mov    (%eax),%ecx
501c4a:	8b c3                	mov    %ebx,%eax
501c4c:	c1 e0 06             	shl    $0x6,%eax
501c4f:	03 c8                	add    %eax,%ecx
501c51:	8b 44 24 18          	mov    0x18(%esp),%eax
501c55:	03 c0                	add    %eax,%eax
501c57:	03 c8                	add    %eax,%ecx
501c59:	8b 44 24 18          	mov    0x18(%esp),%eax
501c5d:	3b f0                	cmp    %eax,%esi
501c5f:	7c 1b                	jl     0x501c7c
501c61:	66 8b 39             	mov    (%ecx),%di
501c64:	83 c1 02             	add    $0x2,%ecx
501c67:	66 85 ff             	test   %di,%di
501c6a:	74 0b                	je     0x501c77
501c6c:	89 54 24 08          	mov    %edx,0x8(%esp)
501c70:	8b 04 24             	mov    (%esp),%eax
501c73:	89 10                	mov    %edx,(%eax)
501c75:	eb 18                	jmp    0x501c8f
501c77:	40                   	inc    %eax
501c78:	3b f0                	cmp    %eax,%esi
501c7a:	7d e5                	jge    0x501c61
501c7c:	43                   	inc    %ebx
501c7d:	3b 5c 24 14          	cmp    0x14(%esp),%ebx
501c81:	7e c1                	jle    0x501c44
501c83:	42                   	inc    %edx
501c84:	83 44 24 24 04       	addl   $0x4,0x24(%esp)
501c89:	3b 54 24 0c          	cmp    0xc(%esp),%edx
501c8d:	7e a1                	jle    0x501c30
501c8f:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
501c93:	3b 4c 24 08          	cmp    0x8(%esp),%ecx
501c97:	7e 75                	jle    0x501d0e
501c99:	8b 54 24 0c          	mov    0xc(%esp),%edx
501c9d:	8b 44 24 04          	mov    0x4(%esp),%eax
501ca1:	8d 0c 90             	lea    (%eax,%edx,4),%ecx
501ca4:	89 4c 24 2c          	mov    %ecx,0x2c(%esp)
501ca8:	3b 54 24 08          	cmp    0x8(%esp),%edx
501cac:	7c 60                	jl     0x501d0e
501cae:	8b 5c 24 10          	mov    0x10(%esp),%ebx
501cb2:	8b 44 24 2c          	mov    0x2c(%esp),%eax
501cb6:	8b c8                	mov    %eax,%ecx
501cb8:	89 4c 24 28          	mov    %ecx,0x28(%esp)
501cbc:	3b 5c 24 14          	cmp    0x14(%esp),%ebx
501cc0:	7f 40                	jg     0x501d02
501cc2:	8b 44 24 28          	mov    0x28(%esp),%eax
501cc6:	8b 08                	mov    (%eax),%ecx
501cc8:	8b c3                	mov    %ebx,%eax
501cca:	c1 e0 06             	shl    $0x6,%eax
501ccd:	03 c8                	add    %eax,%ecx
501ccf:	8b 44 24 18          	mov    0x18(%esp),%eax
501cd3:	03 c0                	add    %eax,%eax
501cd5:	03 c8                	add    %eax,%ecx
501cd7:	8b 44 24 18          	mov    0x18(%esp),%eax
501cdb:	3b f0                	cmp    %eax,%esi
501cdd:	7c 1c                	jl     0x501cfb
501cdf:	66 8b 39             	mov    (%ecx),%di
501ce2:	83 c1 02             	add    $0x2,%ecx
501ce5:	66 85 ff             	test   %di,%di
501ce8:	74 0c                	je     0x501cf6
501cea:	89 54 24 0c          	mov    %edx,0xc(%esp)
501cee:	8b 04 24             	mov    (%esp),%eax
501cf1:	89 50 04             	mov    %edx,0x4(%eax)
501cf4:	eb 18                	jmp    0x501d0e
501cf6:	40                   	inc    %eax
501cf7:	3b f0                	cmp    %eax,%esi
501cf9:	7d e4                	jge    0x501cdf
501cfb:	43                   	inc    %ebx
501cfc:	3b 5c 24 14          	cmp    0x14(%esp),%ebx
501d00:	7e c0                	jle    0x501cc2
501d02:	4a                   	dec    %edx
501d03:	83 44 24 2c fc       	addl   $0xfffffffc,0x2c(%esp)
501d08:	3b 54 24 08          	cmp    0x8(%esp),%edx
501d0c:	7d a0                	jge    0x501cae
501d0e:	8b 4c 24 14          	mov    0x14(%esp),%ecx
501d12:	3b 4c 24 10          	cmp    0x10(%esp),%ecx
501d16:	7e 6b                	jle    0x501d83
501d18:	8b 5c 24 10          	mov    0x10(%esp),%ebx
501d1c:	3b 5c 24 14          	cmp    0x14(%esp),%ebx
501d20:	7f 61                	jg     0x501d83
501d22:	8b 54 24 08          	mov    0x8(%esp),%edx
501d26:	8b 44 24 04          	mov    0x4(%esp),%eax
501d2a:	8d 0c 90             	lea    (%eax,%edx,4),%ecx
501d2d:	89 4c 24 30          	mov    %ecx,0x30(%esp)
501d31:	3b 54 24 0c          	cmp    0xc(%esp),%edx
501d35:	7f 45                	jg     0x501d7c
501d37:	8b 44 24 30          	mov    0x30(%esp),%eax
501d3b:	8b 08                	mov    (%eax),%ecx
501d3d:	8b c3                	mov    %ebx,%eax
501d3f:	c1 e0 06             	shl    $0x6,%eax
501d42:	03 c8                	add    %eax,%ecx
501d44:	8b 44 24 18          	mov    0x18(%esp),%eax
501d48:	03 c0                	add    %eax,%eax
501d4a:	03 c8                	add    %eax,%ecx
501d4c:	8b 44 24 18          	mov    0x18(%esp),%eax
501d50:	3b f0                	cmp    %eax,%esi
501d52:	7c 1c                	jl     0x501d70
501d54:	66 8b 39             	mov    (%ecx),%di
501d57:	83 c1 02             	add    $0x2,%ecx
501d5a:	66 85 ff             	test   %di,%di
501d5d:	74 0c                	je     0x501d6b
501d5f:	89 5c 24 10          	mov    %ebx,0x10(%esp)
501d63:	8b 04 24             	mov    (%esp),%eax
501d66:	89 58 08             	mov    %ebx,0x8(%eax)
501d69:	eb 18                	jmp    0x501d83
501d6b:	40                   	inc    %eax
501d6c:	3b f0                	cmp    %eax,%esi
501d6e:	7d e4                	jge    0x501d54
501d70:	42                   	inc    %edx
501d71:	83 44 24 30 04       	addl   $0x4,0x30(%esp)
501d76:	3b 54 24 0c          	cmp    0xc(%esp),%edx
501d7a:	7e bb                	jle    0x501d37
501d7c:	43                   	inc    %ebx
501d7d:	3b 5c 24 14          	cmp    0x14(%esp),%ebx
501d81:	7e 9f                	jle    0x501d22
501d83:	8b 54 24 14          	mov    0x14(%esp),%edx
501d87:	3b 54 24 10          	cmp    0x10(%esp),%edx
501d8b:	7e 6b                	jle    0x501df8
501d8d:	8b 5c 24 14          	mov    0x14(%esp),%ebx
501d91:	3b 5c 24 10          	cmp    0x10(%esp),%ebx
501d95:	7c 61                	jl     0x501df8
501d97:	8b 54 24 08          	mov    0x8(%esp),%edx
501d9b:	8b 44 24 04          	mov    0x4(%esp),%eax
501d9f:	8d 0c 90             	lea    (%eax,%edx,4),%ecx
501da2:	89 4c 24 34          	mov    %ecx,0x34(%esp)
501da6:	3b 54 24 0c          	cmp    0xc(%esp),%edx
501daa:	7f 45                	jg     0x501df1
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