574a3b:	8b 43 3c             	mov    0x3c(%ebx),%eax
574a3e:	3b c8                	cmp    %eax,%ecx
574a40:	7f 09                	jg     0x574a4b
574a42:	83 4b 08 04          	orl    $0x4,0x8(%ebx)
574a46:	83 ca ff             	or     $0xffffffff,%edx
574a49:	eb 27                	jmp    0x574a72
574a4b:	ff 4b 1c             	decl   0x1c(%ebx)
574a4e:	79 10                	jns    0x574a60
574a50:	ba 01 00 00 00       	mov    $0x1,%edx
574a55:	8b c3                	mov    %ebx,%eax
574a57:	e8 cc 42 00 00       	call   0x578d28
574a5c:	8b d0                	mov    %eax,%edx
574a5e:	eb 12                	jmp    0x574a72
574a60:	ff 43 3c             	incl   0x3c(%ebx)
574a63:	8b 43 18             	mov    0x18(%ebx),%eax
574a66:	ff 43 18             	incl   0x18(%ebx)
574a69:	33 d2                	xor    %edx,%edx
574a6b:	8a 10                	mov    (%eax),%dl
574a6d:	eb 03                	jmp    0x574a72
574a6f:	83 ca ff             	or     $0xffffffff,%edx
574a72:	89 55 f4             	mov    %edx,-0xc(%ebp)
574a75:	42                   	inc    %edx
574a76:	75 05                	jne    0x574a7d
574a78:	83 c8 ff             	or     $0xffffffff,%eax
574a7b:	eb 5e                	jmp    0x574adb
574a7d:	c1 e6 08             	shl    $0x8,%esi
574a80:	8b 4d f4             	mov    -0xc(%ebp),%ecx
574a83:	0b f1                	or     %ecx,%esi
574a85:	47                   	inc    %edi
574a86:	8b 45 f0             	mov    -0x10(%ebp),%eax
574a89:	3b f8                	cmp    %eax,%edi
574a8b:	7c 9e                	jl     0x574a2b
574a8d:	8b 4d f8             	mov    -0x8(%ebp),%ecx
574a90:	ba 01 00 00 00       	mov    $0x1,%edx
574a95:	d3 e2                	shl    %cl,%edx
574a97:	4a                   	dec    %edx
574a98:	23 f2                	and    %edx,%esi
574a9a:	8b 45 fc             	mov    -0x4(%ebp),%eax
574a9d:	85 c0                	test   %eax,%eax
574a9f:	74 33                	je     0x574ad4
574aa1:	8b 55 f0             	mov    -0x10(%ebp),%edx
574aa4:	b8 01 00 00 00       	mov    $0x1,%eax
574aa9:	c1 e2 03             	shl    $0x3,%edx
574aac:	bb 01 00 00 00       	mov    $0x1,%ebx
574ab1:	8b ca                	mov    %edx,%ecx
574ab3:	49                   	dec    %ecx
574ab4:	d3 e0                	shl    %cl,%eax
574ab6:	8b ca                	mov    %edx,%ecx
574ab8:	23 c6                	and    %esi,%eax
574aba:	d3 e3                	shl    %cl,%ebx
574abc:	f7 d6                	not    %esi
574abe:	8b 55 08             	mov    0x8(%ebp),%edx
574ac1:	46                   	inc    %esi
574ac2:	4b                   	dec    %ebx
574ac3:	23 de                	and    %esi,%ebx
574ac5:	85 c0                	test   %eax,%eax
574ac7:	89 1a                	mov    %ebx,(%edx)
574ac9:	74 0e                	je     0x574ad9
574acb:	8b 45 08             	mov    0x8(%ebp),%eax
574ace:	f7 db                	neg    %ebx
574ad0:	89 18                	mov    %ebx,(%eax)
574ad2:	eb 05                	jmp    0x574ad9
574ad4:	8b 4d 08             	mov    0x8(%ebp),%ecx
574ad7:	89 31                	mov    %esi,(%ecx)
574ad9:	33 c0                	xor    %eax,%eax
574adb:	5f                   	pop    %edi
574adc:	5e                   	pop    %esi
574add:	5b                   	pop    %ebx
574ade:	8b e5                	mov    %ebp,%esp
574ae0:	5d                   	pop    %ebp
574ae1:	c2 04 00             	ret    $0x4
574ae4:	53                   	push   %ebx
574ae5:	56                   	push   %esi
574ae6:	33 c9                	xor    %ecx,%ecx
574ae8:	eb 19                	jmp    0x574b03
574aea:	8b 58 04             	mov    0x4(%eax),%ebx
574aed:	8b f1                	mov    %ecx,%esi
574aef:	03 f6                	add    %esi,%esi
574af1:	8d 34 76             	lea    (%esi,%esi,2),%esi
574af4:	03 de                	add    %esi,%ebx
574af6:	0f b7 33             	movzwl (%ebx),%esi
574af9:	3b d6                	cmp    %esi,%edx
574afb:	75 05                	jne    0x574b02
574afd:	8b c3                	mov    %ebx,%eax
574aff:	5e                   	pop    %esi
574b00:	5b                   	pop    %ebx
574b01:	c3                   	ret
574b02:	41                   	inc    %ecx
574b03:	0f b7 18             	movzwl (%eax),%ebx
574b06:	3b cb                	cmp    %ebx,%ecx
574b08:	7c e0                	jl     0x574aea
574b0a:	33 c0                	xor    %eax,%eax
574b0c:	5e                   	pop    %esi
574b0d:	5b                   	pop    %ebx
574b0e:	c3                   	ret
574b0f:	90                   	nop
574b10:	53                   	push   %ebx
574b11:	56                   	push   %esi
574b12:	57                   	push   %edi
574b13:	55                   	push   %ebp
574b14:	83 c4 f8             	add    $0xfffffff8,%esp
574b17:	8b d9                	mov    %ecx,%ebx
574b19:	89 14 24             	mov    %edx,(%esp)
574b1c:	8b e8                	mov    %eax,%ebp
574b1e:	e8 f5 00 00 00       	call   0x574c18
574b23:	8b f8                	mov    %eax,%edi
574b25:	85 c0                	test   %eax,%eax
574b27:	75 07                	jne    0x574b30
574b29:	33 c0                	xor    %eax,%eax
574b2b:	e9 de 00 00 00       	jmp    0x574c0e
574b30:	89 5f 18             	mov    %ebx,0x18(%edi)
574b33:	66 89 6f 12          	mov    %bp,0x12(%edi)
574b37:	c7 47 24 01 00 00 00 	movl   $0x1,0x24(%edi)
574b3e:	0f b7 47 12          	movzwl 0x12(%edi),%eax
574b42:	c1 e0 02             	shl    $0x2,%eax
574b45:	e8 32 38 00 00       	call   0x57837c
574b4a:	89 47 14             	mov    %eax,0x14(%edi)
574b4d:	85 c0                	test   %eax,%eax
574b4f:	75 0e                	jne    0x574b5f
574b51:	8b c7                	mov    %edi,%eax
574b53:	e8 50 02 00 00       	call   0x574da8
574b58:	33 c0                	xor    %eax,%eax
574b5a:	e9 af 00 00 00       	jmp    0x574c0e
574b5f:	33 f6                	xor    %esi,%esi
574b61:	eb 0c                	jmp    0x574b6f
574b63:	0f b7 c6             	movzwl %si,%eax
574b66:	8b 57 14             	mov    0x14(%edi),%edx
574b69:	33 c9                	xor    %ecx,%ecx
574b6b:	89 0c 82             	mov    %ecx,(%edx,%eax,4)
574b6e:	46                   	inc    %esi
574b6f:	66 3b 77 12          	cmp    0x12(%edi),%si
574b73:	72 ee                	jb     0x574b63
574b75:	33 c0                	xor    %eax,%eax
574b77:	33 f6                	xor    %esi,%esi
574b79:	8b 1c 24             	mov    (%esp),%ebx
574b7c:	66 3b ee             	cmp    %si,%bp
574b7f:	76 1f                	jbe    0x574ba0
574b81:	8b 53 10             	mov    0x10(%ebx),%edx
574b84:	46                   	inc    %esi
574b85:	0f af 53 14          	imul   0x14(%ebx),%edx
574b89:	0f b7 4b 18          	movzwl 0x18(%ebx),%ecx
574b8d:	83 c1 07             	add    $0x7,%ecx
574b90:	83 c3 20             	add    $0x20,%ebx
574b93:	0f af d1             	imul   %ecx,%edx
574b96:	c1 ea 03             	shr    $0x3,%edx
574b99:	03 c2                	add    %edx,%eax
574b9b:	66 3b ee             	cmp    %si,%bp
574b9e:	77 e1                	ja     0x574b81
574ba0:	3d 00 00 00 01       	cmp    $0x1000000,%eax
574ba5:	0f 92 c0             	setb   %al
574ba8:	83 e0 01             	and    $0x1,%eax
574bab:	33 f6                	xor    %esi,%esi
574bad:	66 3b ee             	cmp    %si,%bp
574bb0:	89 44 24 04          	mov    %eax,0x4(%esp)
574bb4:	8b 1c 24             	mov    (%esp),%ebx
574bb7:	76 4c                	jbe    0x574c05
574bb9:	8b 43 0c             	mov    0xc(%ebx),%eax
574bbc:	50                   	push   %eax
574bbd:	8b 53 10             	mov    0x10(%ebx),%edx
574bc0:	52                   	push   %edx
574bc1:	8b 4b 14             	mov    0x14(%ebx),%ecx
574bc4:	51                   	push   %ecx
574bc5:	66 8b 43 18          	mov    0x18(%ebx),%ax
574bc9:	50                   	push   %eax
574bca:	8b 53 1c             	mov    0x1c(%ebx),%edx
574bcd:	52                   	push   %edx
574bce:	8b 4c 24 18          	mov    0x18(%esp),%ecx
574bd2:	51                   	push   %ecx
574bd3:	8b 4b 08             	mov    0x8(%ebx),%ecx
574bd6:	8b 53 04             	mov    0x4(%ebx),%edx
574bd9:	8b 03                	mov    (%ebx),%eax
574bdb:	e8 08 02 00 00       	call   0x574de8
574be0:	0f b7 d6             	movzwl %si,%edx
574be3:	8b 4f 14             	mov    0x14(%edi),%ecx
574be6:	85 c0                	test   %eax,%eax
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