587c28:	8b f0                	mov    %eax,%esi
587c2a:	85 f6                	test   %esi,%esi
587c2c:	75 07                	jne    0x587c35
587c2e:	33 c0                	xor    %eax,%eax
587c30:	e9 9b 00 00 00       	jmp    0x587cd0
587c35:	8b 44 24 0c          	mov    0xc(%esp),%eax
587c39:	50                   	push   %eax
587c3a:	8b cd                	mov    %ebp,%ecx
587c3c:	8b 54 24 08          	mov    0x8(%esp),%edx
587c40:	8b c6                	mov    %esi,%eax
587c42:	e8 fd 9e ff ff       	call   0x581b44
587c47:	8b f0                	mov    %eax,%esi
587c49:	c1 e5 03             	shl    $0x3,%ebp
587c4c:	83 cd 02             	or     $0x2,%ebp
587c4f:	8b 44 24 0c          	mov    0xc(%esp),%eax
587c53:	c1 e0 03             	shl    $0x3,%eax
587c56:	83 c8 02             	or     $0x2,%eax
587c59:	89 44 24 08          	mov    %eax,0x8(%esp)
587c5d:	8b d5                	mov    %ebp,%edx
587c5f:	8b c3                	mov    %ebx,%eax
587c61:	e8 96 60 ff ff       	call   0x57dcfc
587c66:	89 83 94 00 00 00    	mov    %eax,0x94(%ebx)
587c6c:	8b 54 24 08          	mov    0x8(%esp),%edx
587c70:	8b c3                	mov    %ebx,%eax
587c72:	e8 f1 70 ff ff       	call   0x57ed68
587c77:	89 83 a8 00 00 00    	mov    %eax,0xa8(%ebx)
587c7d:	81 7b 28 20 42 47 52 	cmpl   $0x52474220,0x28(%ebx)
587c84:	75 28                	jne    0x587cae
587c86:	81 7b 2c 20 42 47 52 	cmpl   $0x52474220,0x2c(%ebx)
587c8d:	75 1f                	jne    0x587cae
587c8f:	f7 c7 10 00 00 00    	test   $0x10,%edi
587c95:	75 17                	jne    0x587cae
587c97:	8b 04 24             	mov    (%esp),%eax
587c9a:	89 44 24 10          	mov    %eax,0x10(%esp)
587c9e:	8d 44 24 10          	lea    0x10(%esp),%eax
587ca2:	8b ce                	mov    %esi,%ecx
587ca4:	ba 01 00 00 00       	mov    $0x1,%edx
587ca9:	e8 8e fd ff ff       	call   0x587a3c
587cae:	8b 06                	mov    (%esi),%eax
587cb0:	50                   	push   %eax
587cb1:	ba c8 7b 58 00       	mov    $0x587bc8,%edx
587cb6:	8b cb                	mov    %ebx,%ecx
587cb8:	8b c6                	mov    %esi,%eax
587cba:	e8 45 c9 ff ff       	call   0x584604
587cbf:	85 c0                	test   %eax,%eax
587cc1:	75 0b                	jne    0x587cce
587cc3:	8b c6                	mov    %esi,%eax
587cc5:	e8 f2 75 ff ff       	call   0x57f2bc
587cca:	33 c0                	xor    %eax,%eax
587ccc:	eb 02                	jmp    0x587cd0
587cce:	8b c6                	mov    %esi,%eax
587cd0:	83 c4 14             	add    $0x14,%esp
587cd3:	5d                   	pop    %ebp
587cd4:	5f                   	pop    %edi
587cd5:	5e                   	pop    %esi
587cd6:	5b                   	pop    %ebx
587cd7:	c3                   	ret
587cd8:	55                   	push   %ebp
587cd9:	8b ec                	mov    %esp,%ebp
587cdb:	03 c2                	add    %edx,%eax
587cdd:	03 c1                	add    %ecx,%eax
587cdf:	8b 55 08             	mov    0x8(%ebp),%edx
587ce2:	03 42 f8             	add    -0x8(%edx),%eax
587ce5:	8b 55 08             	mov    0x8(%ebp),%edx
587ce8:	8b 52 fc             	mov    -0x4(%edx),%edx
587ceb:	0f b7 04 42          	movzwl (%edx,%eax,2),%eax
587cef:	5d                   	pop    %ebp
587cf0:	c3                   	ret
587cf1:	8d 40 00             	lea    0x0(%eax),%eax
587cf4:	55                   	push   %ebp
587cf5:	8b ec                	mov    %esp,%ebp
587cf7:	83 c4 bc             	add    $0xffffffbc,%esp
587cfa:	53                   	push   %ebx
587cfb:	56                   	push   %esi
587cfc:	57                   	push   %edi
587cfd:	89 4d fc             	mov    %ecx,-0x4(%ebp)
587d00:	89 55 f0             	mov    %edx,-0x10(%ebp)
587d03:	89 45 f4             	mov    %eax,-0xc(%ebp)
587d06:	8b 45 08             	mov    0x8(%ebp),%eax
587d09:	8b 40 08             	mov    0x8(%eax),%eax
587d0c:	89 45 c0             	mov    %eax,-0x40(%ebp)
587d0f:	8b 45 08             	mov    0x8(%ebp),%eax
587d12:	8b 50 32             	mov    0x32(%eax),%edx
587d15:	8b 45 f4             	mov    -0xc(%ebp),%eax
587d18:	0f b7 00             	movzwl (%eax),%eax
587d1b:	c1 e8 08             	shr    $0x8,%eax
587d1e:	8b 4d f4             	mov    -0xc(%ebp),%ecx
587d21:	0f b7 49 02          	movzwl 0x2(%ecx),%ecx
587d25:	c1 e9 08             	shr    $0x8,%ecx
587d28:	89 4d ec             	mov    %ecx,-0x14(%ebp)
587d2b:	8b 4d f4             	mov    -0xc(%ebp),%ecx
587d2e:	0f b7 49 04          	movzwl 0x4(%ecx),%ecx
587d32:	c1 e9 08             	shr    $0x8,%ecx
587d35:	89 4d e8             	mov    %ecx,-0x18(%ebp)
587d38:	8b 34 82             	mov    (%edx,%eax,4),%esi
587d3b:	89 75 d0             	mov    %esi,-0x30(%ebp)
587d3e:	8b 4d ec             	mov    -0x14(%ebp),%ecx
587d41:	8b 8c 8a 00 04 00 00 	mov    0x400(%edx,%ecx,4),%ecx
587d48:	89 4d c8             	mov    %ecx,-0x38(%ebp)
587d4b:	8b 4d c8             	mov    -0x38(%ebp),%ecx
587d4e:	89 4d cc             	mov    %ecx,-0x34(%ebp)
587d51:	8b 4d e8             	mov    -0x18(%ebp),%ecx
587d54:	8b 8c 8a 00 08 00 00 	mov    0x800(%edx,%ecx,4),%ecx
587d5b:	89 4d c4             	mov    %ecx,-0x3c(%ebp)
587d5e:	8b 5d c4             	mov    -0x3c(%ebp),%ebx
587d61:	3d ff 00 00 00       	cmp    $0xff,%eax
587d66:	74 06                	je     0x587d6e
587d68:	8b 4d 08             	mov    0x8(%ebp),%ecx
587d6b:	03 71 16             	add    0x16(%ecx),%esi
587d6e:	81 7d ec ff 00 00 00 	cmpl   $0xff,-0x14(%ebp)
587d75:	74 09                	je     0x587d80
587d77:	8b 4d 08             	mov    0x8(%ebp),%ecx
587d7a:	8b 49 12             	mov    0x12(%ecx),%ecx
587d7d:	01 4d c8             	add    %ecx,-0x38(%ebp)
587d80:	81 7d e8 ff 00 00 00 	cmpl   $0xff,-0x18(%ebp)
587d87:	74 09                	je     0x587d92
587d89:	8b 4d 08             	mov    0x8(%ebp),%ecx
587d8c:	8b 49 0e             	mov    0xe(%ecx),%ecx
587d8f:	01 4d c4             	add    %ecx,-0x3c(%ebp)
587d92:	0f b7 84 42 00 0c 00 	movzwl 0xc00(%edx,%eax,2),%eax
587d99:	00
587d9a:	89 45 e4             	mov    %eax,-0x1c(%ebp)
587d9d:	8b 45 ec             	mov    -0x14(%ebp),%eax
587da0:	0f b7 84 42 00 0e 00 	movzwl 0xe00(%edx,%eax,2),%eax
587da7:	00
587da8:	89 45 e0             	mov    %eax,-0x20(%ebp)
587dab:	8b 45 e8             	mov    -0x18(%ebp),%eax
587dae:	0f b7 84 42 00 10 00 	movzwl 0x1000(%edx,%eax,2),%eax
587db5:	00
587db6:	89 45 dc             	mov    %eax,-0x24(%ebp)
587db9:	8b 45 c0             	mov    -0x40(%ebp),%eax
587dbc:	48                   	dec    %eax
587dbd:	85 c0                	test   %eax,%eax
587dbf:	0f 8c 6d 03 00 00    	jl     0x588132
587dc5:	40                   	inc    %eax
587dc6:	89 45 bc             	mov    %eax,-0x44(%ebp)
587dc9:	c7 45 f8 00 00 00 00 	movl   $0x0,-0x8(%ebp)
587dd0:	8b 45 e4             	mov    -0x1c(%ebp),%eax
587dd3:	3b 45 e0             	cmp    -0x20(%ebp),%eax
587dd6:	7c 76                	jl     0x587e4e
587dd8:	8b 45 e0             	mov    -0x20(%ebp),%eax
587ddb:	3b 45 dc             	cmp    -0x24(%ebp),%eax
587dde:	7c 6e                	jl     0x587e4e
587de0:	55                   	push   %ebp
587de1:	8b cb                	mov    %ebx,%ecx
587de3:	8b 55 cc             	mov    -0x34(%ebp),%edx
587de6:	8b c6                	mov    %esi,%eax
587de8:	e8 eb fe ff ff       	call   0x587cd8
587ded:	59                   	pop    %ecx
587dee:	8b f8                	mov    %eax,%edi
587df0:	55                   	push   %ebp
587df1:	8b cb                	mov    %ebx,%ecx
587df3:	8b 55 cc             	mov    -0x34(%ebp),%edx
587df6:	8b 45 d0             	mov    -0x30(%ebp),%eax
587df9:	e8 da fe ff ff       	call   0x587cd8
587dfe:	59                   	pop    %ecx
587dff:	2b f8                	sub    %eax,%edi
587e01:	89 7d d8             	mov    %edi,-0x28(%ebp)
587e04:	55                   	push   %ebp
587e05:	8b cb                	mov    %ebx,%ecx
587e07:	8b 55 c8             	mov    -0x38(%ebp),%edx
587e0a:	8b c6                	mov    %esi,%eax
587e0c:	e8 c7 fe ff ff       	call   0x587cd8
587e11:	59                   	pop    %ecx
587e12:	8b f8                	mov    %eax,%edi
587e14:	55                   	push   %ebp
587e15:	8b cb                	mov    %ebx,%ecx
587e17:	8b 55 cc             	mov    -0x34(%ebp),%edx
587e1a:	8b c6                	mov    %esi,%eax
587e1c:	e8 b7 fe ff ff       	call   0x587cd8
587e21:	59                   	pop    %ecx
587e22:	2b f8                	sub    %eax,%edi
587e24:	89 7d d4             	mov    %edi,-0x2c(%ebp)
587e27:	55                   	push   %ebp
587e28:	8b 4d c4             	mov    -0x3c(%ebp),%ecx
587e2b:	8b 55 c8             	mov    -0x38(%ebp),%edx
587e2e:	8b c6                	mov    %esi,%eax
587e30:	e8 a3 fe ff ff       	call   0x587cd8
587e35:	59                   	pop    %ecx
587e36:	50                   	push   %eax
587e37:	55                   	push   %ebp
587e38:	8b cb                	mov    %ebx,%ecx
587e3a:	8b 55 c8             	mov    -0x38(%ebp),%edx
587e3d:	8b c6                	mov    %esi,%eax
587e3f:	e8 94 fe ff ff       	call   0x587cd8
587e44:	59                   	pop    %ecx
587e45:	5a                   	pop    %edx
587e46:	92                   	xchg   %eax,%edx
587e47:	2b c2                	sub    %edx,%eax
587e49:	e9 96 02 00 00       	jmp    0x5880e4
587e4e:	8b 45 e4             	mov    -0x1c(%ebp),%eax
587e51:	3b 45 dc             	cmp    -0x24(%ebp),%eax
587e54:	7c 78                	jl     0x587ece
587e56:	8b 45 dc             	mov    -0x24(%ebp),%eax
587e59:	3b 45 e0             	cmp    -0x20(%ebp),%eax
587e5c:	7c 70                	jl     0x587ece
587e5e:	55                   	push   %ebp
587e5f:	8b cb                	mov    %ebx,%ecx
587e61:	8b 55 cc             	mov    -0x34(%ebp),%edx
587e64:	8b c6                	mov    %esi,%eax
587e66:	e8 6d fe ff ff       	call   0x587cd8
587e6b:	59                   	pop    %ecx
587e6c:	8b f8                	mov    %eax,%edi
587e6e:	55                   	push   %ebp
587e6f:	8b cb                	mov    %ebx,%ecx
587e71:	8b 55 cc             	mov    -0x34(%ebp),%edx
587e74:	8b 45 d0             	mov    -0x30(%ebp),%eax
587e77:	e8 5c fe ff ff       	call   0x587cd8
587e7c:	59                   	pop    %ecx
587e7d:	2b f8                	sub    %eax,%edi
587e7f:	89 7d d8             	mov    %edi,-0x28(%ebp)
587e82:	55                   	push   %ebp
587e83:	8b 4d c4             	mov    -0x3c(%ebp),%ecx
587e86:	8b 55 c8             	mov    -0x38(%ebp),%edx
587e89:	8b c6                	mov    %esi,%eax
587e8b:	e8 48 fe ff ff       	call   0x587cd8
587e90:	59                   	pop    %ecx
587e91:	8b f8                	mov    %eax,%edi
587e93:	55                   	push   %ebp
587e94:	8b 4d c4             	mov    -0x3c(%ebp),%ecx
587e97:	8b 55 cc             	mov    -0x34(%ebp),%edx
587e9a:	8b c6                	mov    %esi,%eax
587e9c:	e8 37 fe ff ff       	call   0x587cd8
587ea1:	59                   	pop    %ecx
587ea2:	2b f8                	sub    %eax,%edi
587ea4:	89 7d d4             	mov    %edi,-0x2c(%ebp)
587ea7:	55                   	push   %ebp
587ea8:	8b 4d c4             	mov    -0x3c(%ebp),%ecx
587eab:	8b 55 cc             	mov    -0x34(%ebp),%edx
587eae:	8b c6                	mov    %esi,%eax
587eb0:	e8 23 fe ff ff       	call   0x587cd8
587eb5:	59                   	pop    %ecx
587eb6:	50                   	push   %eax
587eb7:	55                   	push   %ebp
587eb8:	8b cb                	mov    %ebx,%ecx
587eba:	8b 55 cc             	mov    -0x34(%ebp),%edx
587ebd:	8b c6                	mov    %esi,%eax
587ebf:	e8 14 fe ff ff       	call   0x587cd8
587ec4:	59                   	pop    %ecx
587ec5:	5a                   	pop    %edx
587ec6:	92                   	xchg   %eax,%edx
587ec7:	2b c2                	sub    %edx,%eax
587ec9:	e9 16 02 00 00       	jmp    0x5880e4
587ece:	8b 45 dc             	mov    -0x24(%ebp),%eax
587ed1:	3b 45 e4             	cmp    -0x1c(%ebp),%eax
587ed4:	7c 7c                	jl     0x587f52
587ed6:	8b 45 e4             	mov    -0x1c(%ebp),%eax
587ed9:	3b 45 e0             	cmp    -0x20(%ebp),%eax
587edc:	7c 74                	jl     0x587f52
587ede:	55                   	push   %ebp
587edf:	8b 4d c4             	mov    -0x3c(%ebp),%ecx
587ee2:	8b 55 cc             	mov    -0x34(%ebp),%edx
587ee5:	8b c6                	mov    %esi,%eax
587ee7:	e8 ec fd ff ff       	call   0x587cd8
587eec:	59                   	pop    %ecx
587eed:	8b f8                	mov    %eax,%edi
587eef:	55                   	push   %ebp
587ef0:	8b 4d c4             	mov    -0x3c(%ebp),%ecx
587ef3:	8b 55 cc             	mov    -0x34(%ebp),%edx
587ef6:	8b 45 d0             	mov    -0x30(%ebp),%eax
587ef9:	e8 da fd ff ff       	call   0x587cd8
587efe:	59                   	pop    %ecx
587eff:	2b f8                	sub    %eax,%edi
587f01:	89 7d d8             	mov    %edi,-0x28(%ebp)
587f04:	55                   	push   %ebp
587f05:	8b 4d c4             	mov    -0x3c(%ebp),%ecx
587f08:	8b 55 c8             	mov    -0x38(%ebp),%edx
587f0b:	8b c6                	mov    %esi,%eax
587f0d:	e8 c6 fd ff ff       	call   0x587cd8
587f12:	59                   	pop    %ecx
587f13:	8b f8                	mov    %eax,%edi
587f15:	55                   	push   %ebp
587f16:	8b 4d c4             	mov    -0x3c(%ebp),%ecx
587f19:	8b 55 cc             	mov    -0x34(%ebp),%edx
587f1c:	8b c6                	mov    %esi,%eax
587f1e:	e8 b5 fd ff ff       	call   0x587cd8
587f23:	59                   	pop    %ecx
587f24:	2b f8                	sub    %eax,%edi
587f26:	89 7d d4             	mov    %edi,-0x2c(%ebp)
587f29:	55                   	push   %ebp
587f2a:	8b 4d c4             	mov    -0x3c(%ebp),%ecx
587f2d:	8b 55 cc             	mov    -0x34(%ebp),%edx
587f30:	8b 45 d0             	mov    -0x30(%ebp),%eax
587f33:	e8 a0 fd ff ff       	call   0x587cd8
587f38:	59                   	pop    %ecx
587f39:	50                   	push   %eax
587f3a:	55                   	push   %ebp
587f3b:	8b cb                	mov    %ebx,%ecx
587f3d:	8b 55 cc             	mov    -0x34(%ebp),%edx
587f40:	8b 45 d0             	mov    -0x30(%ebp),%eax
587f43:	e8 90 fd ff ff       	call   0x587cd8
587f48:	59                   	pop    %ecx
587f49:	5a                   	pop    %edx
587f4a:	92                   	xchg   %eax,%edx
587f4b:	2b c2                	sub    %edx,%eax
587f4d:	e9 92 01 00 00       	jmp    0x5880e4
587f52:	8b 45 e0             	mov    -0x20(%ebp),%eax
587f55:	3b 45 e4             	cmp    -0x1c(%ebp),%eax
587f58:	7c 78                	jl     0x587fd2
587f5a:	8b 45 e4             	mov    -0x1c(%ebp),%eax
587f5d:	3b 45 dc             	cmp    -0x24(%ebp),%eax
587f60:	7c 70                	jl     0x587fd2
587f62:	55                   	push   %ebp
587f63:	8b cb                	mov    %ebx,%ecx
587f65:	8b 55 c8             	mov    -0x38(%ebp),%edx
587f68:	8b c6                	mov    %esi,%eax
587f6a:	e8 69 fd ff ff       	call   0x587cd8
587f6f:	59                   	pop    %ecx
587f70:	8b f8                	mov    %eax,%edi
587f72:	55                   	push   %ebp
587f73:	8b cb                	mov    %ebx,%ecx
587f75:	8b 55 c8             	mov    -0x38(%ebp),%edx
587f78:	8b 45 d0             	mov    -0x30(%ebp),%eax
587f7b:	e8 58 fd ff ff       	call   0x587cd8
587f80:	59                   	pop    %ecx
587f81:	2b f8                	sub    %eax,%edi
587f83:	89 7d d8             	mov    %edi,-0x28(%ebp)
587f86:	55                   	push   %ebp
587f87:	8b cb                	mov    %ebx,%ecx
587f89:	8b 55 c8             	mov    -0x38(%ebp),%edx
587f8c:	8b 45 d0             	mov    -0x30(%ebp),%eax
587f8f:	e8 44 fd ff ff       	call   0x587cd8
587f94:	59                   	pop    %ecx
587f95:	8b f8                	mov    %eax,%edi
587f97:	55                   	push   %ebp
587f98:	8b cb                	mov    %ebx,%ecx
587f9a:	8b 55 cc             	mov    -0x34(%ebp),%edx
587f9d:	8b 45 d0             	mov    -0x30(%ebp),%eax
587fa0:	e8 33 fd ff ff       	call   0x587cd8
587fa5:	59                   	pop    %ecx
587fa6:	2b f8                	sub    %eax,%edi
587fa8:	89 7d d4             	mov    %edi,-0x2c(%ebp)
587fab:	55                   	push   %ebp
587fac:	8b 4d c4             	mov    -0x3c(%ebp),%ecx
587faf:	8b 55 c8             	mov    -0x38(%ebp),%edx
587fb2:	8b c6                	mov    %esi,%eax
587fb4:	e8 1f fd ff ff       	call   0x587cd8
587fb9:	59                   	pop    %ecx
587fba:	50                   	push   %eax
587fbb:	55                   	push   %ebp
587fbc:	8b cb                	mov    %ebx,%ecx
587fbe:	8b 55 c8             	mov    -0x38(%ebp),%edx
587fc1:	8b c6                	mov    %esi,%eax
587fc3:	e8 10 fd ff ff       	call   0x587cd8
587fc8:	59                   	pop    %ecx
587fc9:	5a                   	pop    %edx
587fca:	92                   	xchg   %eax,%edx
587fcb:	2b c2                	sub    %edx,%eax
587fcd:	e9 12 01 00 00       	jmp    0x5880e4
587fd2:	8b 45 e0             	mov    -0x20(%ebp),%eax