503bb7:	75 1c                	jne    0x503bd5
503bb9:	8b 14 24             	mov    (%esp),%edx
503bbc:	8b 04 24             	mov    (%esp),%eax
503bbf:	8b 4a 20             	mov    0x20(%edx),%ecx
503bc2:	8b 70 04             	mov    0x4(%eax),%esi
503bc5:	c1 e1 03             	shl    $0x3,%ecx
503bc8:	ba 01 00 00 00       	mov    $0x1,%edx
503bcd:	8d 0c 49             	lea    (%ecx,%ecx,2),%ecx
503bd0:	ff 16                	call   *(%esi)
503bd2:	89 43 70             	mov    %eax,0x70(%ebx)
503bd5:	8b 04 24             	mov    (%esp),%eax
503bd8:	8b 73 70             	mov    0x70(%ebx),%esi
503bdb:	33 db                	xor    %ebx,%ebx
503bdd:	8b 90 d4 00 00 00    	mov    0xd4(%eax),%edx
503be3:	89 54 24 08          	mov    %edx,0x8(%esp)
503be7:	e9 89 00 00 00       	jmp    0x503c75
503bec:	8b 4c 24 08          	mov    0x8(%esp),%ecx
503bf0:	8b 41 4c             	mov    0x4c(%ecx),%eax
503bf3:	85 c0                	test   %eax,%eax
503bf5:	75 07                	jne    0x503bfe
503bf7:	33 c0                	xor    %eax,%eax
503bf9:	e9 87 00 00 00       	jmp    0x503c85
503bfe:	66 83 38 00          	cmpw   $0x0,(%eax)
503c02:	74 23                	je     0x503c27
503c04:	66 83 78 02 00       	cmpw   $0x0,0x2(%eax)
503c09:	74 1c                	je     0x503c27
503c0b:	66 83 78 10 00       	cmpw   $0x0,0x10(%eax)
503c10:	74 15                	je     0x503c27
503c12:	66 83 78 20 00       	cmpw   $0x0,0x20(%eax)
503c17:	74 0e                	je     0x503c27
503c19:	66 83 78 12 00       	cmpw   $0x0,0x12(%eax)
503c1e:	74 07                	je     0x503c27
503c20:	66 83 78 04 00       	cmpw   $0x0,0x4(%eax)
503c25:	75 04                	jne    0x503c2b
503c27:	33 c0                	xor    %eax,%eax
503c29:	eb 5a                	jmp    0x503c85
503c2b:	8b 14 24             	mov    (%esp),%edx
503c2e:	8b 82 9c 00 00 00    	mov    0x9c(%edx),%eax
503c34:	8b d3                	mov    %ebx,%edx
503c36:	c1 e2 08             	shl    $0x8,%edx
503c39:	03 c2                	add    %edx,%eax
503c3b:	83 38 00             	cmpl   $0x0,(%eax)
503c3e:	7d 04                	jge    0x503c44
503c40:	33 c0                	xor    %eax,%eax
503c42:	eb 41                	jmp    0x503c85
503c44:	b9 01 00 00 00       	mov    $0x1,%ecx
503c49:	8d 56 04             	lea    0x4(%esi),%edx
503c4c:	83 c0 04             	add    $0x4,%eax
503c4f:	8b 38                	mov    (%eax),%edi
503c51:	89 3a                	mov    %edi,(%edx)
503c53:	83 38 00             	cmpl   $0x0,(%eax)
503c56:	74 08                	je     0x503c60
503c58:	c7 44 24 04 01 00 00 	movl   $0x1,0x4(%esp)
503c5f:	00
503c60:	41                   	inc    %ecx
503c61:	83 c2 04             	add    $0x4,%edx
503c64:	83 c0 04             	add    $0x4,%eax
503c67:	83 f9 05             	cmp    $0x5,%ecx
503c6a:	7e e3                	jle    0x503c4f
503c6c:	83 c6 18             	add    $0x18,%esi
503c6f:	43                   	inc    %ebx
503c70:	83 44 24 08 54       	addl   $0x54,0x8(%esp)
503c75:	8b 04 24             	mov    (%esp),%eax
503c78:	3b 58 20             	cmp    0x20(%eax),%ebx
503c7b:	0f 8c 6b ff ff ff    	jl     0x503bec
503c81:	8b 44 24 04          	mov    0x4(%esp),%eax
503c85:	83 c4 0c             	add    $0xc,%esp
503c88:	5f                   	pop    %edi
503c89:	5e                   	pop    %esi
503c8a:	5b                   	pop    %ebx
503c8b:	c3                   	ret
503c8c:	53                   	push   %ebx
503c8d:	56                   	push   %esi
503c8e:	81 c4 e8 fe ff ff    	add    $0xfffffee8,%esp
503c94:	89 54 24 04          	mov    %edx,0x4(%esp)
503c98:	89 04 24             	mov    %eax,(%esp)
503c9b:	8b 04 24             	mov    (%esp),%eax
503c9e:	8b 90 a4 01 00 00    	mov    0x1a4(%eax),%edx
503ca4:	89 54 24 08          	mov    %edx,0x8(%esp)
503ca8:	8b 0c 24             	mov    (%esp),%ecx
503cab:	8b 81 38 01 00 00    	mov    0x138(%ecx),%eax
503cb1:	48                   	dec    %eax
503cb2:	89 44 24 0c          	mov    %eax,0xc(%esp)
503cb6:	eb 63                	jmp    0x503d1b
503cb8:	8b 14 24             	mov    (%esp),%edx
503cbb:	8b 04 24             	mov    (%esp),%eax
503cbe:	8b 8a 94 00 00 00    	mov    0x94(%edx),%ecx
503cc4:	3b 88 8c 00 00 00    	cmp    0x8c(%eax),%ecx
503cca:	75 39                	jne    0x503d05
503ccc:	8b 14 24             	mov    (%esp),%edx
503ccf:	83 ba 88 01 00 00 00 	cmpl   $0x0,0x188(%edx)
503cd6:	75 07                	jne    0x503cdf
503cd8:	b9 01 00 00 00       	mov    $0x1,%ecx
503cdd:	eb 02                	jmp    0x503ce1
503cdf:	33 c9                	xor    %ecx,%ecx
503ce1:	89 8c 24 90 00 00 00 	mov    %ecx,0x90(%esp)
503ce8:	8b 04 24             	mov    (%esp),%eax
503ceb:	8b 90 90 00 00 00    	mov    0x90(%eax),%edx
503cf1:	8b 04 24             	mov    (%esp),%eax
503cf4:	8b 88 98 00 00 00    	mov    0x98(%eax),%ecx
503cfa:	03 8c 24 90 00 00 00 	add    0x90(%esp),%ecx
503d01:	3b d1                	cmp    %ecx,%edx
503d03:	77 3d                	ja     0x503d42
503d05:	8b 04 24             	mov    (%esp),%eax
503d08:	8b 90 ac 01 00 00    	mov    0x1ac(%eax),%edx
503d0e:	ff 12                	call   *(%edx)
503d10:	85 c0                	test   %eax,%eax
503d12:	75 07                	jne    0x503d1b
503d14:	33 c0                	xor    %eax,%eax
503d16:	e9 36 07 00 00       	jmp    0x504451
503d1b:	8b 14 24             	mov    (%esp),%edx
503d1e:	8b 04 24             	mov    (%esp),%eax
503d21:	8b 8a 94 00 00 00    	mov    0x94(%edx),%ecx
503d27:	3b 88 8c 00 00 00    	cmp    0x8c(%eax),%ecx
503d2d:	7c 13                	jl     0x503d42
503d2f:	8b 14 24             	mov    (%esp),%edx
503d32:	8b 8a ac 01 00 00    	mov    0x1ac(%edx),%ecx
503d38:	83 79 14 00          	cmpl   $0x0,0x14(%ecx)
503d3c:	0f 84 76 ff ff ff    	je     0x503cb8
503d42:	33 c0                	xor    %eax,%eax
503d44:	89 44 24 18          	mov    %eax,0x18(%esp)
503d48:	8b 14 24             	mov    (%esp),%edx
503d4b:	8b 8a d4 00 00 00    	mov    0xd4(%edx),%ecx
503d51:	89 4c 24 40          	mov    %ecx,0x40(%esp)
503d55:	e9 c1 06 00 00       	jmp    0x50441b
503d5a:	8b 44 24 40          	mov    0x40(%esp),%eax
503d5e:	83 78 30 00          	cmpl   $0x0,0x30(%eax)
503d62:	0f 84 aa 06 00 00    	je     0x504412
503d68:	8b 14 24             	mov    (%esp),%edx
503d6b:	8b 8a 98 00 00 00    	mov    0x98(%edx),%ecx
503d71:	3b 4c 24 0c          	cmp    0xc(%esp),%ecx
503d75:	73 1d                	jae    0x503d94
503d77:	8b 44 24 40          	mov    0x40(%esp),%eax
503d7b:	8b 50 0c             	mov    0xc(%eax),%edx
503d7e:	89 54 24 20          	mov    %edx,0x20(%esp)
503d82:	8b 4c 24 20          	mov    0x20(%esp),%ecx
503d86:	03 c9                	add    %ecx,%ecx
503d88:	89 4c 24 24          	mov    %ecx,0x24(%esp)
503d8c:	33 c0                	xor    %eax,%eax
503d8e:	89 44 24 4c          	mov    %eax,0x4c(%esp)
503d92:	eb 38                	jmp    0x503dcc
503d94:	8b 54 24 40          	mov    0x40(%esp),%edx
503d98:	8b 42 20             	mov    0x20(%edx),%eax
503d9b:	8b 54 24 40          	mov    0x40(%esp),%edx
503d9f:	8b 4a 0c             	mov    0xc(%edx),%ecx
503da2:	33 d2                	xor    %edx,%edx
503da4:	f7 f1                	div    %ecx
503da6:	89 54 24 20          	mov    %edx,0x20(%esp)
503daa:	83 7c 24 20 00       	cmpl   $0x0,0x20(%esp)
503daf:	75 0b                	jne    0x503dbc
503db1:	8b 44 24 40          	mov    0x40(%esp),%eax
503db5:	8b 40 0c             	mov    0xc(%eax),%eax
503db8:	89 44 24 20          	mov    %eax,0x20(%esp)
503dbc:	8b 54 24 20          	mov    0x20(%esp),%edx
503dc0:	89 54 24 24          	mov    %edx,0x24(%esp)
503dc4:	c7 44 24 4c 01 00 00 	movl   $0x1,0x4c(%esp)
503dcb:	00
503dcc:	8b 0c 24             	mov    (%esp),%ecx
503dcf:	83 b9 98 00 00 00 00 	cmpl   $0x0,0x98(%ecx)
503dd6:	76 55                	jbe    0x503e2d
503dd8:	8b 44 24 40          	mov    0x40(%esp),%eax
503ddc:	8b 50 0c             	mov    0xc(%eax),%edx
503ddf:	01 54 24 24          	add    %edx,0x24(%esp)
503de3:	8b 4c 24 24          	mov    0x24(%esp),%ecx
503de7:	51                   	push   %ecx
503de8:	6a 00                	push   $0x0
503dea:	8b 44 24 08          	mov    0x8(%esp),%eax
503dee:	8b 54 24 48          	mov    0x48(%esp),%edx
503df2:	8b 88 98 00 00 00    	mov    0x98(%eax),%ecx
503df8:	8b 44 24 10          	mov    0x10(%esp),%eax
503dfc:	49                   	dec    %ecx
503dfd:	0f af 4a 0c          	imul   0xc(%edx),%ecx
503e01:	8b 54 24 20          	mov    0x20(%esp),%edx
503e05:	8b 54 90 48          	mov    0x48(%eax,%edx,4),%edx
503e09:	8b 44 24 08          	mov    0x8(%esp),%eax
503e0d:	8b 58 04             	mov    0x4(%eax),%ebx
503e10:	ff 53 20             	call   *0x20(%ebx)
503e13:	89 44 24 28          	mov    %eax,0x28(%esp)
503e17:	8b 44 24 40          	mov    0x40(%esp),%eax
503e1b:	8b 50 0c             	mov    0xc(%eax),%edx
503e1e:	c1 e2 02             	shl    $0x2,%edx
503e21:	01 54 24 28          	add    %edx,0x28(%esp)
503e25:	33 c9                	xor    %ecx,%ecx
503e27:	89 4c 24 48          	mov    %ecx,0x48(%esp)
503e2b:	eb 2b                	jmp    0x503e58
503e2d:	8b 44 24 24          	mov    0x24(%esp),%eax
503e31:	50                   	push   %eax
503e32:	6a 00                	push   $0x0
503e34:	8b 44 24 08          	mov    0x8(%esp),%eax
503e38:	8b 4c 24 20          	mov    0x20(%esp),%ecx
503e3c:	8b 54 24 10          	mov    0x10(%esp),%edx
503e40:	8b 58 04             	mov    0x4(%eax),%ebx
503e43:	8b 54 8a 48          	mov    0x48(%edx,%ecx,4),%edx
503e47:	33 c9                	xor    %ecx,%ecx
503e49:	ff 53 20             	call   *0x20(%ebx)
503e4c:	89 44 24 28          	mov    %eax,0x28(%esp)
503e50:	c7 44 24 48 01 00 00 	movl   $0x1,0x48(%esp)
503e57:	00
503e58:	8b 4c 24 18          	mov    0x18(%esp),%ecx
503e5c:	8b 44 24 08          	mov    0x8(%esp),%eax
503e60:	c1 e1 03             	shl    $0x3,%ecx
503e63:	8b 50 70             	mov    0x70(%eax),%edx
503e66:	8d 0c 49             	lea    (%ecx,%ecx,2),%ecx
503e69:	03 d1                	add    %ecx,%edx
503e6b:	89 54 24 50          	mov    %edx,0x50(%esp)
503e6f:	8b 44 24 40          	mov    0x40(%esp),%eax
503e73:	8b 50 4c             	mov    0x4c(%eax),%edx
503e76:	89 54 24 54          	mov    %edx,0x54(%esp)
503e7a:	8b 4c 24 54          	mov    0x54(%esp),%ecx
503e7e:	0f b7 01             	movzwl (%ecx),%eax
503e81:	89 44 24 58          	mov    %eax,0x58(%esp)
503e85:	8b 54 24 54          	mov    0x54(%esp),%edx
503e89:	0f b7 4a 02          	movzwl 0x2(%edx),%ecx
503e8d:	89 4c 24 5c          	mov    %ecx,0x5c(%esp)
503e91:	8b 44 24 54          	mov    0x54(%esp),%eax
503e95:	0f b7 50 10          	movzwl 0x10(%eax),%edx
503e99:	89 54 24 64          	mov    %edx,0x64(%esp)
503e9d:	8b 4c 24 54          	mov    0x54(%esp),%ecx
503ea1:	0f b7 41 20          	movzwl 0x20(%ecx),%eax
503ea5:	89 44 24 6c          	mov    %eax,0x6c(%esp)
503ea9:	8b 54 24 54          	mov    0x54(%esp),%edx
503ead:	0f b7 4a 12          	movzwl 0x12(%edx),%ecx
503eb1:	89 4c 24 68          	mov    %ecx,0x68(%esp)
503eb5:	8b 44 24 54          	mov    0x54(%esp),%eax
503eb9:	0f b7 50 04          	movzwl 0x4(%eax),%edx
503ebd:	89 54 24 60          	mov    %edx,0x60(%esp)
503ec1:	8b 0c 24             	mov    (%esp),%ecx
503ec4:	8b 54 24 18          	mov    0x18(%esp),%edx
503ec8:	8b 81 b8 01 00 00    	mov    0x1b8(%ecx),%eax
503ece:	8b 4c 90 04          	mov    0x4(%eax,%edx,4),%ecx
503ed2:	89 4c 24 44          	mov    %ecx,0x44(%esp)
503ed6:	8b 44 24 04          	mov    0x4(%esp),%eax
503eda:	8b 54 24 18          	mov    0x18(%esp),%edx
503ede:	8b 0c 90             	mov    (%eax,%edx,4),%ecx
503ee1:	33 c0                	xor    %eax,%eax
503ee3:	89 4c 24 38          	mov    %ecx,0x38(%esp)
503ee7:	89 44 24 1c          	mov    %eax,0x1c(%esp)
503eeb:	8b 54 24 28          	mov    0x28(%esp),%edx
503eef:	8b ca                	mov    %edx,%ecx
503ef1:	89 8c 24 94 00 00 00 	mov    %ecx,0x94(%esp)
503ef8:	8b 44 24 1c          	mov    0x1c(%esp),%eax
503efc:	3b 44 24 20          	cmp    0x20(%esp),%eax
503f00:	0f 8d 0c 05 00 00    	jge    0x504412
503f06:	8b 94 24 94 00 00 00 	mov    0x94(%esp),%edx
503f0d:	8b 0a                	mov    (%edx),%ecx
503f0f:	89 4c 24 2c          	mov    %ecx,0x2c(%esp)
503f13:	83 7c 24 48 00       	cmpl   $0x0,0x48(%esp)
503f18:	74 11                	je     0x503f2b
503f1a:	83 7c 24 1c 00       	cmpl   $0x0,0x1c(%esp)
503f1f:	75 0a                	jne    0x503f2b
503f21:	8b 44 24 2c          	mov    0x2c(%esp),%eax
503f25:	89 44 24 30          	mov    %eax,0x30(%esp)
503f29:	eb 0e                	jmp    0x503f39
503f2b:	8b 94 24 94 00 00 00 	mov    0x94(%esp),%edx
503f32:	8b 4a fc             	mov    -0x4(%edx),%ecx
503f35:	89 4c 24 30          	mov    %ecx,0x30(%esp)
503f39:	83 7c 24 4c 00       	cmpl   $0x0,0x4c(%esp)
503f3e:	74 15                	je     0x503f55
503f40:	8b 44 24 20          	mov    0x20(%esp),%eax
503f44:	48                   	dec    %eax
503f45:	3b 44 24 1c          	cmp    0x1c(%esp),%eax
503f49:	75 0a                	jne    0x503f55
503f4b:	8b 54 24 2c          	mov    0x2c(%esp),%edx
503f4f:	89 54 24 34          	mov    %edx,0x34(%esp)
503f53:	eb 0e                	jmp    0x503f63
503f55:	8b 8c 24 94 00 00 00 	mov    0x94(%esp),%ecx
503f5c:	8b 41 04             	mov    0x4(%ecx),%eax
503f5f:	89 44 24 34          	mov    %eax,0x34(%esp)
503f63:	8b 54 24 30          	mov    0x30(%esp),%edx
503f67:	0f bf 0a             	movswl (%edx),%ecx
503f6a:	89 4c 24 78          	mov    %ecx,0x78(%esp)
503f6e:	89 4c 24 74          	mov    %ecx,0x74(%esp)
503f72:	89 4c 24 70          	mov    %ecx,0x70(%esp)
503f76:	8b 44 24 2c          	mov    0x2c(%esp),%eax
503f7a:	0f bf 10             	movswl (%eax),%edx
503f7d:	89 94 24 80 00 00 00 	mov    %edx,0x80(%esp)
503f84:	89 54 24 7c          	mov    %edx,0x7c(%esp)
503f88:	8b 44 24 34          	mov    0x34(%esp),%eax
503f8c:	8b f2                	mov    %edx,%esi
503f8e:	0f bf 10             	movswl (%eax),%edx
503f91:	89 94 24 8c 00 00 00 	mov    %edx,0x8c(%esp)
503f98:	89 94 24 88 00 00 00 	mov    %edx,0x88(%esp)
503f9f:	89 94 24 84 00 00 00 	mov    %edx,0x84(%esp)
503fa6:	33 c0                	xor    %eax,%eax
503fa8:	89 44 24 3c          	mov    %eax,0x3c(%esp)
503fac:	33 d2                	xor    %edx,%edx
503fae:	8b 4c 24 40          	mov    0x40(%esp),%ecx
503fb2:	8b 41 1c             	mov    0x1c(%ecx),%eax
503fb5:	48                   	dec    %eax
503fb6:	89 44 24 14          	mov    %eax,0x14(%esp)
503fba:	89 54 24 10          	mov    %edx,0x10(%esp)
503fbe:	8b 4c 24 10          	mov    0x10(%esp),%ecx
503fc2:	3b 4c 24 14          	cmp    0x14(%esp),%ecx
503fc6:	0f 87 1e 04 00 00    	ja     0x5043ea
503fcc:	8d 94 24 98 00 00 00 	lea    0x98(%esp),%edx
503fd3:	b9 01 00 00 00       	mov    $0x1,%ecx
503fd8:	8b 44 24 2c          	mov    0x2c(%esp),%eax
503fdc:	e8 ff 3b 00 00       	call   0x507be0
503fe1:	8b 44 24 10          	mov    0x10(%esp),%eax
503fe5:	3b 44 24 14          	cmp    0x14(%esp),%eax
503fe9:	73 33                	jae    0x50401e
503feb:	8b 54 24 30          	mov    0x30(%esp),%edx
503fef:	0f bf 8a 80 00 00 00 	movswl 0x80(%edx),%ecx
503ff6:	89 4c 24 78          	mov    %ecx,0x78(%esp)
503ffa:	8b 44 24 2c          	mov    0x2c(%esp),%eax
503ffe:	0f bf 90 80 00 00 00 	movswl 0x80(%eax),%edx
504005:	89 94 24 80 00 00 00 	mov    %edx,0x80(%esp)
50400c:	8b 4c 24 34          	mov    0x34(%esp),%ecx
504010:	0f bf 81 80 00 00 00 	movswl 0x80(%ecx),%eax
504017:	89 84 24 8c 00 00 00 	mov    %eax,0x8c(%esp)
50401e:	8b 54 24 50          	mov    0x50(%esp),%edx
504022:	8b 5a 04             	mov    0x4(%edx),%ebx
504025:	85 db                	test   %ebx,%ebx
504027:	0f 84 93 00 00 00    	je     0x5040c0
50402d:	66 83 bc 24 9a 00 00 	cmpw   $0x0,0x9a(%esp)
504034:	00 00
504036:	0f 85 84 00 00 00    	jne    0x5040c0
50403c:	8b ce                	mov    %esi,%ecx
50403e:	2b 8c 24 80 00 00 00 	sub    0x80(%esp),%ecx
504045:	0f af 4c 24 58       	imul   0x58(%esp),%ecx
50404a:	c1 e1 02             	shl    $0x2,%ecx
50404d:	8d 0c c9             	lea    (%ecx,%ecx,8),%ecx
504050:	85 c9                	test   %ecx,%ecx
504052:	7c 32                	jl     0x504086
504054:	8b 44 24 5c          	mov    0x5c(%esp),%eax
504058:	8b 54 24 5c          	mov    0x5c(%esp),%edx
50405c:	c1 e0 07             	shl    $0x7,%eax
50405f:	c1 e2 08             	shl    $0x8,%edx
504062:	03 c1                	add    %ecx,%eax
504064:	8b ca                	mov    %edx,%ecx
504066:	99                   	cltd
504067:	f7 f9                	idiv   %ecx
504069:	85 db                	test   %ebx,%ebx
50406b:	7e 4b                	jle    0x5040b8
50406d:	8b cb                	mov    %ebx,%ecx
50406f:	ba 01 00 00 00       	mov    $0x1,%edx
504074:	d3 e2                	shl    %cl,%edx
504076:	3b c2                	cmp    %edx,%eax
504078:	7c 3e                	jl     0x5040b8
50407a:	8b cb                	mov    %ebx,%ecx
50407c:	b8 01 00 00 00       	mov    $0x1,%eax
504081:	d3 e0                	shl    %cl,%eax
504083:	48                   	dec    %eax
504084:	eb 32                	jmp    0x5040b8
504086:	8b 44 24 5c          	mov    0x5c(%esp),%eax
50408a:	8b 54 24 5c          	mov    0x5c(%esp),%edx
50408e:	c1 e0 07             	shl    $0x7,%eax
504091:	c1 e2 08             	shl    $0x8,%edx
504094:	2b c1                	sub    %ecx,%eax
504096:	8b ca                	mov    %edx,%ecx