574be8:	89 04 91             	mov    %eax,(%ecx,%edx,4)
574beb:	75 0b                	jne    0x574bf8
574bed:	8b c7                	mov    %edi,%eax
574bef:	e8 b4 01 00 00       	call   0x574da8
574bf4:	33 c0                	xor    %eax,%eax
574bf6:	eb 16                	jmp    0x574c0e
574bf8:	66 ff 47 10          	incw   0x10(%edi)
574bfc:	46                   	inc    %esi
574bfd:	83 c3 20             	add    $0x20,%ebx
574c00:	66 3b ee             	cmp    %si,%bp
574c03:	77 b4                	ja     0x574bb9
574c05:	8b c7                	mov    %edi,%eax
574c07:	e8 d0 0b 00 00       	call   0x5757dc
574c0c:	8b c7                	mov    %edi,%eax
574c0e:	59                   	pop    %ecx
574c0f:	5a                   	pop    %edx
574c10:	5d                   	pop    %ebp
574c11:	5f                   	pop    %edi
574c12:	5e                   	pop    %esi
574c13:	5b                   	pop    %ebx
574c14:	c3                   	ret
574c15:	90                   	nop
574c16:	90                   	nop
574c17:	90                   	nop
574c18:	53                   	push   %ebx
574c19:	b8 28 00 00 00       	mov    $0x28,%eax
574c1e:	e8 59 37 00 00       	call   0x57837c
574c23:	8b d8                	mov    %eax,%ebx
574c25:	85 c0                	test   %eax,%eax
574c27:	75 04                	jne    0x574c2d
574c29:	33 c0                	xor    %eax,%eax
574c2b:	5b                   	pop    %ebx
574c2c:	c3                   	ret
574c2d:	33 d2                	xor    %edx,%edx
574c2f:	33 c9                	xor    %ecx,%ecx
574c31:	89 13                	mov    %edx,(%ebx)
574c33:	89 4b 04             	mov    %ecx,0x4(%ebx)
574c36:	33 c0                	xor    %eax,%eax
574c38:	33 d2                	xor    %edx,%edx
574c3a:	89 43 08             	mov    %eax,0x8(%ebx)
574c3d:	89 53 0c             	mov    %edx,0xc(%ebx)
574c40:	33 c9                	xor    %ecx,%ecx
574c42:	33 c0                	xor    %eax,%eax
574c44:	89 4b 18             	mov    %ecx,0x18(%ebx)
574c47:	33 d2                	xor    %edx,%edx
574c49:	66 c7 43 10 00 00    	movw   $0x0,0x10(%ebx)
574c4f:	66 c7 43 12 00 00    	movw   $0x0,0x12(%ebx)
574c55:	89 43 14             	mov    %eax,0x14(%ebx)
574c58:	33 c9                	xor    %ecx,%ecx
574c5a:	c7 43 24 01 00 00 00 	movl   $0x1,0x24(%ebx)
574c61:	89 53 1c             	mov    %edx,0x1c(%ebx)
574c64:	89 4b 20             	mov    %ecx,0x20(%ebx)
574c67:	8b c3                	mov    %ebx,%eax
574c69:	5b                   	pop    %ebx
574c6a:	c3                   	ret
574c6b:	90                   	nop
574c6c:	53                   	push   %ebx
574c6d:	56                   	push   %esi
574c6e:	57                   	push   %edi
574c6f:	8b f8                	mov    %eax,%edi
574c71:	e8 a2 ff ff ff       	call   0x574c18
574c76:	8b f0                	mov    %eax,%esi
574c78:	0f b7 57 10          	movzwl 0x10(%edi),%edx
574c7c:	8b c6                	mov    %esi,%eax
574c7e:	e8 11 0c 00 00       	call   0x575894
574c83:	85 c0                	test   %eax,%eax
574c85:	75 31                	jne    0x574cb8
574c87:	33 db                	xor    %ebx,%ebx
574c89:	eb 1a                	jmp    0x574ca5
574c8b:	8b 47 14             	mov    0x14(%edi),%eax
574c8e:	8b 04 98             	mov    (%eax,%ebx,4),%eax
574c91:	e8 66 00 00 00       	call   0x574cfc
574c96:	8b 56 14             	mov    0x14(%esi),%edx
574c99:	85 c0                	test   %eax,%eax
574c9b:	89 04 9a             	mov    %eax,(%edx,%ebx,4)
574c9e:	74 18                	je     0x574cb8
574ca0:	66 ff 46 10          	incw   0x10(%esi)
574ca4:	43                   	inc    %ebx
574ca5:	0f b7 57 10          	movzwl 0x10(%edi),%edx
574ca9:	3b da                	cmp    %edx,%ebx
574cab:	7c de                	jl     0x574c8b
574cad:	8b c6                	mov    %esi,%eax
574caf:	e8 28 0b 00 00       	call   0x5757dc
574cb4:	8b c6                	mov    %esi,%eax
574cb6:	eb 0d                	jmp    0x574cc5
574cb8:	85 f6                	test   %esi,%esi
574cba:	74 07                	je     0x574cc3
574cbc:	8b c6                	mov    %esi,%eax
574cbe:	e8 e5 00 00 00       	call   0x574da8
574cc3:	33 c0                	xor    %eax,%eax
574cc5:	5f                   	pop    %edi
574cc6:	5e                   	pop    %esi
574cc7:	5b                   	pop    %ebx
574cc8:	c3                   	ret
574cc9:	90                   	nop
574cca:	90                   	nop
574ccb:	90                   	nop
574ccc:	53                   	push   %ebx
574ccd:	b8 28 00 00 00       	mov    $0x28,%eax
574cd2:	e8 a5 36 00 00       	call   0x57837c
574cd7:	8b d8                	mov    %eax,%ebx
574cd9:	85 c0                	test   %eax,%eax
574cdb:	75 04                	jne    0x574ce1
574cdd:	33 c0                	xor    %eax,%eax
574cdf:	5b                   	pop    %ebx
574ce0:	c3                   	ret
574ce1:	6a 28                	push   $0x28
574ce3:	6a 00                	push   $0x0
574ce5:	53                   	push   %ebx
574ce6:	e8 bd 5d fe ff       	call   0x55aaa8
574ceb:	c7 43 24 00 00 01 00 	movl   $0x10000,0x24(%ebx)
574cf2:	83 c4 0c             	add    $0xc,%esp
574cf5:	8b c3                	mov    %ebx,%eax
574cf7:	5b                   	pop    %ebx
574cf8:	c3                   	ret
574cf9:	90                   	nop
574cfa:	90                   	nop
574cfb:	90                   	nop
574cfc:	53                   	push   %ebx
574cfd:	56                   	push   %esi
574cfe:	8b f0                	mov    %eax,%esi
574d00:	e8 c7 ff ff ff       	call   0x574ccc
574d05:	8b d8                	mov    %eax,%ebx
574d07:	85 c0                	test   %eax,%eax
574d09:	75 05                	jne    0x574d10
574d0b:	33 c0                	xor    %eax,%eax
574d0d:	5e                   	pop    %esi
574d0e:	5b                   	pop    %ebx
574d0f:	c3                   	ret
574d10:	8b 16                	mov    (%esi),%edx
574d12:	89 13                	mov    %edx,(%ebx)
574d14:	8b 4e 04             	mov    0x4(%esi),%ecx
574d17:	89 4b 04             	mov    %ecx,0x4(%ebx)
574d1a:	8b 46 08             	mov    0x8(%esi),%eax
574d1d:	89 43 08             	mov    %eax,0x8(%ebx)
574d20:	8b 56 0c             	mov    0xc(%esi),%edx
574d23:	89 53 0c             	mov    %edx,0xc(%ebx)
574d26:	8b 4e 10             	mov    0x10(%esi),%ecx
574d29:	89 4b 10             	mov    %ecx,0x10(%ebx)
574d2c:	8b 46 14             	mov    0x14(%esi),%eax
574d2f:	89 43 14             	mov    %eax,0x14(%ebx)
574d32:	66 8b 56 18          	mov    0x18(%esi),%dx
574d36:	66 89 53 18          	mov    %dx,0x18(%ebx)
574d3a:	8a 4e 1a             	mov    0x1a(%esi),%cl
574d3d:	88 4b 1a             	mov    %cl,0x1a(%ebx)
574d40:	8b 46 20             	mov    0x20(%esi),%eax
574d43:	89 43 20             	mov    %eax,0x20(%ebx)
574d46:	8b 56 24             	mov    0x24(%esi),%edx
574d49:	89 53 24             	mov    %edx,0x24(%ebx)
574d4c:	33 d2                	xor    %edx,%edx
574d4e:	33 c0                	xor    %eax,%eax
574d50:	e8 c7 36 00 00       	call   0x57841c
574d55:	89 43 1c             	mov    %eax,0x1c(%ebx)
574d58:	85 c0                	test   %eax,%eax
574d5a:	75 05                	jne    0x574d61
574d5c:	33 c0                	xor    %eax,%eax
574d5e:	5e                   	pop    %esi
574d5f:	5b                   	pop    %ebx
574d60:	c3                   	ret
574d61:	33 c9                	xor    %ecx,%ecx
574d63:	33 d2                	xor    %edx,%edx
574d65:	8b 46 1c             	mov    0x1c(%esi),%eax
574d68:	e8 fb 3d 00 00       	call   0x578b68
574d6d:	85 c0                	test   %eax,%eax
574d6f:	74 05                	je     0x574d76
574d71:	33 c0                	xor    %eax,%eax
574d73:	5e                   	pop    %esi
574d74:	5b                   	pop    %ebx
574d75:	c3                   	ret
574d76:	83 c9 ff             	or     $0xffffffff,%ecx
574d79:	8b 56 1c             	mov    0x1c(%esi),%edx
574d7c:	8b 43 1c             	mov    0x1c(%ebx),%eax
574d7f:	e8 a4 41 00 00       	call   0x578f28
574d84:	85 c0                	test   %eax,%eax
574d86:	74 05                	je     0x574d8d
574d88:	33 c0                	xor    %eax,%eax
574d8a:	5e                   	pop    %esi
574d8b:	5b                   	pop    %ebx
574d8c:	c3                   	ret
574d8d:	33 c9                	xor    %ecx,%ecx
574d8f:	33 d2                	xor    %edx,%edx
574d91:	8b 43 1c             	mov    0x1c(%ebx),%eax
574d94:	e8 cf 3d 00 00       	call   0x578b68
574d99:	85 c0                	test   %eax,%eax
574d9b:	74 05                	je     0x574da2
574d9d:	33 c0                	xor    %eax,%eax
574d9f:	5e                   	pop    %esi
574da0:	5b                   	pop    %ebx
574da1:	c3                   	ret
574da2:	8b c3                	mov    %ebx,%eax
574da4:	5e                   	pop    %esi
574da5:	5b                   	pop    %ebx
574da6:	c3                   	ret
574da7:	90                   	nop
574da8:	53                   	push   %ebx
574da9:	56                   	push   %esi
574daa:	8b f0                	mov    %eax,%esi
574dac:	8b 46 14             	mov    0x14(%esi),%eax
574daf:	85 c0                	test   %eax,%eax
574db1:	74 28                	je     0x574ddb
574db3:	33 db                	xor    %ebx,%ebx
574db5:	eb 14                	jmp    0x574dcb
574db7:	8b 46 14             	mov    0x14(%esi),%eax
574dba:	8b 04 98             	mov    (%eax,%ebx,4),%eax
574dbd:	e8 66 01 00 00       	call   0x574f28
574dc2:	8b 56 14             	mov    0x14(%esi),%edx
574dc5:	33 c9                	xor    %ecx,%ecx
574dc7:	89 0c 9a             	mov    %ecx,(%edx,%ebx,4)
574dca:	43                   	inc    %ebx
574dcb:	0f b7 46 10          	movzwl 0x10(%esi),%eax
574dcf:	3b d8                	cmp    %eax,%ebx
574dd1:	7c e4                	jl     0x574db7
574dd3:	8b 46 14             	mov    0x14(%esi),%eax
574dd6:	e8 a9 35 00 00       	call   0x578384
574ddb:	8b c6                	mov    %esi,%eax
574ddd:	e8 a2 35 00 00       	call   0x578384
574de2:	5e                   	pop    %esi
574de3:	5b                   	pop    %ebx
574de4:	c3                   	ret
574de5:	90                   	nop
574de6:	90                   	nop
574de7:	90                   	nop
574de8:	55                   	push   %ebp
574de9:	8b ec                	mov    %esp,%ebp
574deb:	83 c4 f8             	add    $0xfffffff8,%esp
574dee:	53                   	push   %ebx
574def:	56                   	push   %esi
574df0:	57                   	push   %edi
574df1:	89 4d f8             	mov    %ecx,-0x8(%ebp)
574df4:	89 55 fc             	mov    %edx,-0x4(%ebp)
574df7:	8b f8                	mov    %eax,%edi
574df9:	8b 75 10             	mov    0x10(%ebp),%esi
574dfc:	b8 28 00 00 00       	mov    $0x28,%eax
574e01:	e8 76 35 00 00       	call   0x57837c
574e06:	8b d8                	mov    %eax,%ebx
574e08:	85 c0                	test   %eax,%eax
574e0a:	75 07                	jne    0x574e13
574e0c:	33 c0                	xor    %eax,%eax
574e0e:	e9 0c 01 00 00       	jmp    0x574f1f
574e13:	89 3b                	mov    %edi,(%ebx)
574e15:	8b 55 fc             	mov    -0x4(%ebp),%edx
574e18:	89 53 04             	mov    %edx,0x4(%ebx)
574e1b:	8b 4d f8             	mov    -0x8(%ebp),%ecx
574e1e:	89 4b 08             	mov    %ecx,0x8(%ebx)
574e21:	8b 45 1c             	mov    0x1c(%ebp),%eax
574e24:	89 43 0c             	mov    %eax,0xc(%ebx)
574e27:	8b 55 18             	mov    0x18(%ebp),%edx
574e2a:	89 53 10             	mov    %edx,0x10(%ebx)
574e2d:	33 d2                	xor    %edx,%edx
574e2f:	8b 4d 14             	mov    0x14(%ebp),%ecx
574e32:	89 4b 14             	mov    %ecx,0x14(%ebx)
574e35:	66 89 73 18          	mov    %si,0x18(%ebx)
574e39:	8a 45 0c             	mov    0xc(%ebp),%al
574e3c:	88 43 1a             	mov    %al,0x1a(%ebx)
574e3f:	89 53 1c             	mov    %edx,0x1c(%ebx)
574e42:	0f b7 c6             	movzwl %si,%eax
574e45:	83 c0 07             	add    $0x7,%eax
574e48:	85 c0                	test   %eax,%eax
574e4a:	79 03                	jns    0x574e4f
574e4c:	83 c0 07             	add    $0x7,%eax
574e4f:	c1 f8 03             	sar    $0x3,%eax
574e52:	89 43 20             	mov    %eax,0x20(%ebx)
574e55:	8b 73 10             	mov    0x10(%ebx),%esi
574e58:	0f af 73 14          	imul   0x14(%ebx),%esi
574e5c:	0f af f0             	imul   %eax,%esi
574e5f:	8b 45 08             	mov    0x8(%ebp),%eax
574e62:	85 c0                	test   %eax,%eax
574e64:	74 0d                	je     0x574e73
574e66:	8b d6                	mov    %esi,%edx
574e68:	33 c0                	xor    %eax,%eax
574e6a:	e8 ad 35 00 00       	call   0x57841c
574e6f:	8b f8                	mov    %eax,%edi
574e71:	eb 07                	jmp    0x574e7a
574e73:	e8 90 37 00 00       	call   0x578608
574e78:	8b f8                	mov    %eax,%edi
574e7a:	89 7b 1c             	mov    %edi,0x1c(%ebx)
574e7d:	85 ff                	test   %edi,%edi
574e7f:	75 0e                	jne    0x574e8f
574e81:	8b c3                	mov    %ebx,%eax
574e83:	e8 a0 00 00 00       	call   0x574f28
574e88:	33 c0                	xor    %eax,%eax
574e8a:	e9 90 00 00 00       	jmp    0x574f1f
574e8f:	8d 56 ff             	lea    -0x1(%esi),%edx
574e92:	33 c9                	xor    %ecx,%ecx
574e94:	8b 43 1c             	mov    0x1c(%ebx),%eax
574e97:	e8 cc 3c 00 00       	call   0x578b68
574e9c:	85 c0                	test   %eax,%eax
574e9e:	7c 72                	jl     0x574f12
574ea0:	8b 53 1c             	mov    0x1c(%ebx),%edx
574ea3:	f6 42 08 07          	testb  $0x7,0x8(%edx)
574ea7:	75 53                	jne    0x574efc
574ea9:	8b 73 1c             	mov    0x1c(%ebx),%esi
574eac:	8b 7e 40             	mov    0x40(%esi),%edi
574eaf:	85 ff                	test   %edi,%edi
574eb1:	7c 13                	jl     0x574ec6
574eb3:	8b 46 3c             	mov    0x3c(%esi),%eax
574eb6:	3b f8                	cmp    %eax,%edi
574eb8:	7f 0c                	jg     0x574ec6
574eba:	8b 53 1c             	mov    0x1c(%ebx),%edx
574ebd:	83 4a 08 04          	orl    $0x4,0x8(%edx)
574ec1:	83 c9 ff             	or     $0xffffffff,%ecx
574ec4:	eb 39                	jmp    0x574eff
574ec6:	8b 43 1c             	mov    0x1c(%ebx),%eax
574ec9:	83 48 04 20          	orl    $0x20,0x4(%eax)
574ecd:	8b 53 1c             	mov    0x1c(%ebx),%edx
574ed0:	ff 4a 1c             	decl   0x1c(%edx)
574ed3:	79 0e                	jns    0x574ee3
574ed5:	33 d2                	xor    %edx,%edx
574ed7:	8b 43 1c             	mov    0x1c(%ebx),%eax
574eda:	e8 39 3f 00 00       	call   0x578e18
574edf:	8b c8                	mov    %eax,%ecx
574ee1:	eb 1c                	jmp    0x574eff
574ee3:	8b 43 1c             	mov    0x1c(%ebx),%eax
574ee6:	ff 40 3c             	incl   0x3c(%eax)
574ee9:	8b 53 1c             	mov    0x1c(%ebx),%edx
574eec:	8b 4a 18             	mov    0x18(%edx),%ecx
574eef:	ff 42 18             	incl   0x18(%edx)
574ef2:	33 c0                	xor    %eax,%eax
574ef4:	88 01                	mov    %al,(%ecx)
574ef6:	33 c9                	xor    %ecx,%ecx
574ef8:	8a c8                	mov    %al,%cl
574efa:	eb 03                	jmp    0x574eff
574efc:	83 c9 ff             	or     $0xffffffff,%ecx
574eff:	41                   	inc    %ecx
574f00:	74 10                	je     0x574f12
574f02:	33 c9                	xor    %ecx,%ecx
574f04:	33 d2                	xor    %edx,%edx
574f06:	8b 43 1c             	mov    0x1c(%ebx),%eax
574f09:	e8 5a 3c 00 00       	call   0x578b68
574f0e:	85 c0                	test   %eax,%eax
574f10:	7d 0b                	jge    0x574f1d
574f12:	8b c3                	mov    %ebx,%eax
574f14:	e8 0f 00 00 00       	call   0x574f28
574f19:	33 c0                	xor    %eax,%eax
574f1b:	eb 02                	jmp    0x574f1f
574f1d:	8b c3                	mov    %ebx,%eax
574f1f:	5f                   	pop    %edi
574f20:	5e                   	pop    %esi
574f21:	5b                   	pop    %ebx
574f22:	59                   	pop    %ecx
574f23:	59                   	pop    %ecx
574f24:	5d                   	pop    %ebp
574f25:	c2 18 00             	ret    $0x18
574f28:	53                   	push   %ebx
574f29:	8b d8                	mov    %eax,%ebx
574f2b:	8b 43 1c             	mov    0x1c(%ebx),%eax
574f2e:	85 c0                	test   %eax,%eax
574f30:	74 05                	je     0x574f37
574f32:	e8 05 38 00 00       	call   0x57873c
574f37:	8b c3                	mov    %ebx,%eax