576a88:	8b c6                	mov    %esi,%eax
576a8a:	e8 cd 0b 00 00       	call   0x57765c
576a8f:	85 c0                	test   %eax,%eax
576a91:	74 05                	je     0x576a98
576a93:	83 c8 ff             	or     $0xffffffff,%eax
576a96:	eb 02                	jmp    0x576a9a
576a98:	33 c0                	xor    %eax,%eax
576a9a:	5a                   	pop    %edx
576a9b:	5e                   	pop    %esi
576a9c:	5b                   	pop    %ebx
576a9d:	c3                   	ret
576a9e:	90                   	nop
576a9f:	90                   	nop
576aa0:	53                   	push   %ebx
576aa1:	56                   	push   %esi
576aa2:	8b f1                	mov    %ecx,%esi
576aa4:	8d 58 08             	lea    0x8(%eax),%ebx
576aa7:	8b 02                	mov    (%edx),%eax
576aa9:	3d 00 01 00 00       	cmp    $0x100,%eax
576aae:	7f 13                	jg     0x576ac3
576ab0:	8a 13                	mov    (%ebx),%dl
576ab2:	8b c6                	mov    %esi,%eax
576ab4:	e8 07 0c 00 00       	call   0x5776c0
576ab9:	85 c0                	test   %eax,%eax
576abb:	74 1a                	je     0x576ad7
576abd:	83 c8 ff             	or     $0xffffffff,%eax
576ac0:	5e                   	pop    %esi
576ac1:	5b                   	pop    %ebx
576ac2:	c3                   	ret
576ac3:	66 8b 13             	mov    (%ebx),%dx
576ac6:	8b c6                	mov    %esi,%eax
576ac8:	e8 1f 0d 00 00       	call   0x5777ec
576acd:	85 c0                	test   %eax,%eax
576acf:	74 06                	je     0x576ad7
576ad1:	83 c8 ff             	or     $0xffffffff,%eax
576ad4:	5e                   	pop    %esi
576ad5:	5b                   	pop    %ebx
576ad6:	c3                   	ret
576ad7:	8a 53 02             	mov    0x2(%ebx),%dl
576ada:	8b c6                	mov    %esi,%eax
576adc:	e8 df 0b 00 00       	call   0x5776c0
576ae1:	85 c0                	test   %eax,%eax
576ae3:	75 0e                	jne    0x576af3
576ae5:	8a 53 03             	mov    0x3(%ebx),%dl
576ae8:	8b c6                	mov    %esi,%eax
576aea:	e8 d1 0b 00 00       	call   0x5776c0
576aef:	85 c0                	test   %eax,%eax
576af1:	74 06                	je     0x576af9
576af3:	83 c8 ff             	or     $0xffffffff,%eax
576af6:	5e                   	pop    %esi
576af7:	5b                   	pop    %ebx
576af8:	c3                   	ret
576af9:	33 c0                	xor    %eax,%eax
576afb:	5e                   	pop    %esi
576afc:	5b                   	pop    %ebx
576afd:	c3                   	ret
576afe:	90                   	nop
576aff:	90                   	nop
576b00:	83 c0 08             	add    $0x8,%eax
576b03:	33 c9                	xor    %ecx,%ecx
576b05:	8a 48 03             	mov    0x3(%eax),%cl
576b08:	51                   	push   %ecx
576b09:	33 c9                	xor    %ecx,%ecx
576b0b:	8a 48 02             	mov    0x2(%eax),%cl
576b0e:	51                   	push   %ecx
576b0f:	0f b7 00             	movzwl (%eax),%eax
576b12:	50                   	push   %eax
576b13:	68 8e 26 6a 00       	push   $0x6a268e
576b18:	52                   	push   %edx
576b19:	e8 ae 35 00 00       	call   0x57a0cc
576b1e:	83 c4 14             	add    $0x14,%esp
576b21:	33 c0                	xor    %eax,%eax
576b23:	c3                   	ret
576b24:	83 c0 08             	add    $0x8,%eax
576b27:	e8 b0 01 00 00       	call   0x576cdc
576b2c:	c3                   	ret
576b2d:	90                   	nop
576b2e:	90                   	nop
576b2f:	90                   	nop
576b30:	56                   	push   %esi
576b31:	8d 70 08             	lea    0x8(%eax),%esi
576b34:	66 8b 40 02          	mov    0x2(%eax),%ax
576b38:	50                   	push   %eax
576b39:	8b c6                	mov    %esi,%eax
576b3b:	e8 ac 01 00 00       	call   0x576cec
576b40:	5e                   	pop    %esi
576b41:	c3                   	ret
576b42:	90                   	nop
576b43:	90                   	nop
576b44:	83 c0 08             	add    $0x8,%eax
576b47:	e8 cc 02 00 00       	call   0x576e18
576b4c:	c3                   	ret
576b4d:	90                   	nop
576b4e:	90                   	nop
576b4f:	90                   	nop
576b50:	53                   	push   %ebx
576b51:	56                   	push   %esi
576b52:	8d 70 08             	lea    0x8(%eax),%esi
576b55:	57                   	push   %edi
576b56:	8b fa                	mov    %edx,%edi
576b58:	33 d2                	xor    %edx,%edx
576b5a:	8b 46 04             	mov    0x4(%esi),%eax
576b5d:	33 c9                	xor    %ecx,%ecx
576b5f:	50                   	push   %eax
576b60:	8a 56 0c             	mov    0xc(%esi),%dl
576b63:	52                   	push   %edx
576b64:	8a 0e                	mov    (%esi),%cl
576b66:	51                   	push   %ecx
576b67:	68 b7 26 6a 00       	push   $0x6a26b7
576b6c:	57                   	push   %edi
576b6d:	e8 5a 35 00 00       	call   0x57a0cc
576b72:	83 c4 14             	add    $0x14,%esp
576b75:	33 db                	xor    %ebx,%ebx
576b77:	eb 28                	jmp    0x576ba1
576b79:	8b 46 08             	mov    0x8(%esi),%eax
576b7c:	0f b7 04 58          	movzwl (%eax,%ebx,2),%eax
576b80:	8b d0                	mov    %eax,%edx
576b82:	81 e2 ff 07 00 00    	and    $0x7ff,%edx
576b88:	52                   	push   %edx
576b89:	53                   	push   %ebx
576b8a:	c1 f8 0b             	sar    $0xb,%eax
576b8d:	8b 4e 08             	mov    0x8(%esi),%ecx
576b90:	50                   	push   %eax
576b91:	53                   	push   %ebx
576b92:	68 e6 26 6a 00       	push   $0x6a26e6
576b97:	57                   	push   %edi
576b98:	e8 2f 35 00 00       	call   0x57a0cc
576b9d:	83 c4 18             	add    $0x18,%esp
576ba0:	43                   	inc    %ebx
576ba1:	8b 46 04             	mov    0x4(%esi),%eax
576ba4:	3b d8                	cmp    %eax,%ebx
576ba6:	7c d1                	jl     0x576b79
576ba8:	33 c0                	xor    %eax,%eax
576baa:	5f                   	pop    %edi
576bab:	5e                   	pop    %esi
576bac:	5b                   	pop    %ebx
576bad:	c3                   	ret
576bae:	90                   	nop
576baf:	90                   	nop
576bb0:	83 c0 08             	add    $0x8,%eax
576bb3:	83 c0 04             	add    $0x4,%eax
576bb6:	e8 21 01 00 00       	call   0x576cdc
576bbb:	c3                   	ret
576bbc:	53                   	push   %ebx
576bbd:	56                   	push   %esi
576bbe:	57                   	push   %edi
576bbf:	55                   	push   %ebp
576bc0:	83 c4 f8             	add    $0xfffffff8,%esp
576bc3:	8b e8                	mov    %eax,%ebp
576bc5:	8b d9                	mov    %ecx,%ebx
576bc7:	89 14 24             	mov    %edx,(%esp)
576bca:	0f b7 7d 02          	movzwl 0x2(%ebp),%edi
576bce:	8b 04 24             	mov    (%esp),%eax
576bd1:	8d 75 08             	lea    0x8(%ebp),%esi
576bd4:	8b 10                	mov    (%eax),%edx
576bd6:	81 fa 00 01 00 00    	cmp    $0x100,%edx
576bdc:	7f 17                	jg     0x576bf5
576bde:	8d 54 24 04          	lea    0x4(%esp),%edx
576be2:	8b c3                	mov    %ebx,%eax
576be4:	e8 73 0a 00 00       	call   0x57765c
576be9:	33 c9                	xor    %ecx,%ecx
576beb:	4f                   	dec    %edi
576bec:	8a 4c 24 04          	mov    0x4(%esp),%cl
576bf0:	66 89 0e             	mov    %cx,(%esi)
576bf3:	eb 0c                	jmp    0x576c01
576bf5:	8b d6                	mov    %esi,%edx
576bf7:	8b c3                	mov    %ebx,%eax
576bf9:	e8 2a 0b 00 00       	call   0x577728
576bfe:	83 ef 02             	sub    $0x2,%edi
576c01:	57                   	push   %edi
576c02:	8d 46 04             	lea    0x4(%esi),%eax
576c05:	8b cb                	mov    %ebx,%ecx
576c07:	8b 54 24 04          	mov    0x4(%esp),%edx
576c0b:	e8 dc 00 00 00       	call   0x576cec
576c10:	85 c0                	test   %eax,%eax
576c12:	74 05                	je     0x576c19
576c14:	83 c8 ff             	or     $0xffffffff,%eax
576c17:	eb 14                	jmp    0x576c2d
576c19:	f6 43 08 01          	testb  $0x1,0x8(%ebx)
576c1d:	74 0c                	je     0x576c2b
576c1f:	8b c5                	mov    %ebp,%eax
576c21:	e8 8a ff ff ff       	call   0x576bb0
576c26:	83 c8 ff             	or     $0xffffffff,%eax
576c29:	eb 02                	jmp    0x576c2d
576c2b:	33 c0                	xor    %eax,%eax
576c2d:	59                   	pop    %ecx
576c2e:	5a                   	pop    %edx
576c2f:	5d                   	pop    %ebp
576c30:	5f                   	pop    %edi
576c31:	5e                   	pop    %esi
576c32:	5b                   	pop    %ebx
576c33:	c3                   	ret
576c34:	53                   	push   %ebx
576c35:	56                   	push   %esi
576c36:	57                   	push   %edi
576c37:	8b fa                	mov    %edx,%edi
576c39:	8d 58 08             	lea    0x8(%eax),%ebx
576c3c:	8b f1                	mov    %ecx,%esi
576c3e:	8b 07                	mov    (%edi),%eax
576c40:	3d 00 01 00 00       	cmp    $0x100,%eax
576c45:	7f 0b                	jg     0x576c52
576c47:	8a 13                	mov    (%ebx),%dl
576c49:	8b c6                	mov    %esi,%eax
576c4b:	e8 70 0a 00 00       	call   0x5776c0
576c50:	eb 0a                	jmp    0x576c5c
576c52:	66 8b 13             	mov    (%ebx),%dx
576c55:	8b c6                	mov    %esi,%eax
576c57:	e8 90 0b 00 00       	call   0x5777ec
576c5c:	8d 43 04             	lea    0x4(%ebx),%eax
576c5f:	8b ce                	mov    %esi,%ecx
576c61:	8b d7                	mov    %edi,%edx
576c63:	e8 b0 01 00 00       	call   0x576e18
576c68:	85 c0                	test   %eax,%eax
576c6a:	74 05                	je     0x576c71
576c6c:	83 c8 ff             	or     $0xffffffff,%eax
576c6f:	eb 02                	jmp    0x576c73
576c71:	33 c0                	xor    %eax,%eax
576c73:	5f                   	pop    %edi
576c74:	5e                   	pop    %esi
576c75:	5b                   	pop    %ebx
576c76:	c3                   	ret
576c77:	90                   	nop
576c78:	53                   	push   %ebx
576c79:	56                   	push   %esi
576c7a:	8d 70 08             	lea    0x8(%eax),%esi
576c7d:	57                   	push   %edi
576c7e:	8b fa                	mov    %edx,%edi
576c80:	33 d2                	xor    %edx,%edx
576c82:	8b 46 08             	mov    0x8(%esi),%eax
576c85:	33 c9                	xor    %ecx,%ecx
576c87:	50                   	push   %eax
576c88:	8a 56 10             	mov    0x10(%esi),%dl
576c8b:	52                   	push   %edx
576c8c:	8a 4e 04             	mov    0x4(%esi),%cl
576c8f:	51                   	push   %ecx
576c90:	0f b7 06             	movzwl (%esi),%eax
576c93:	50                   	push   %eax
576c94:	68 0d 27 6a 00       	push   $0x6a270d
576c99:	57                   	push   %edi
576c9a:	e8 2d 34 00 00       	call   0x57a0cc
576c9f:	83 c4 18             	add    $0x18,%esp
576ca2:	33 db                	xor    %ebx,%ebx
576ca4:	eb 28                	jmp    0x576cce
576ca6:	8b 46 0c             	mov    0xc(%esi),%eax
576ca9:	0f b7 04 58          	movzwl (%eax,%ebx,2),%eax
576cad:	8b d0                	mov    %eax,%edx
576caf:	81 e2 ff 07 00 00    	and    $0x7ff,%edx
576cb5:	52                   	push   %edx
576cb6:	53                   	push   %ebx
576cb7:	c1 f8 0b             	sar    $0xb,%eax
576cba:	8b 4e 0c             	mov    0xc(%esi),%ecx
576cbd:	50                   	push   %eax
576cbe:	53                   	push   %ebx
576cbf:	68 49 27 6a 00       	push   $0x6a2749
576cc4:	57                   	push   %edi
576cc5:	e8 02 34 00 00       	call   0x57a0cc
576cca:	83 c4 18             	add    $0x18,%esp
576ccd:	43                   	inc    %ebx
576cce:	8b 46 08             	mov    0x8(%esi),%eax
576cd1:	3b d8                	cmp    %eax,%ebx
576cd3:	7c d1                	jl     0x576ca6
576cd5:	33 c0                	xor    %eax,%eax
576cd7:	5f                   	pop    %edi
576cd8:	5e                   	pop    %esi
576cd9:	5b                   	pop    %ebx
576cda:	c3                   	ret
576cdb:	90                   	nop
576cdc:	8b 50 08             	mov    0x8(%eax),%edx
576cdf:	85 d2                	test   %edx,%edx
576ce1:	74 07                	je     0x576cea
576ce3:	8b c2                	mov    %edx,%eax
576ce5:	e8 9a 16 00 00       	call   0x578384
576cea:	c3                   	ret
576ceb:	90                   	nop
576cec:	55                   	push   %ebp
576ced:	8b ec                	mov    %esp,%ebp
576cef:	51                   	push   %ecx
576cf0:	53                   	push   %ebx
576cf1:	56                   	push   %esi
576cf2:	57                   	push   %edi
576cf3:	8b f9                	mov    %ecx,%edi
576cf5:	8b d8                	mov    %eax,%ebx
576cf7:	33 f6                	xor    %esi,%esi
576cf9:	8d 55 ff             	lea    -0x1(%ebp),%edx
576cfc:	8b c7                	mov    %edi,%eax
576cfe:	e8 59 09 00 00       	call   0x57765c
576d03:	46                   	inc    %esi
576d04:	8a 4d ff             	mov    -0x1(%ebp),%cl
576d07:	80 e1 1f             	and    $0x1f,%cl
576d0a:	88 0b                	mov    %cl,(%ebx)
576d0c:	33 c0                	xor    %eax,%eax
576d0e:	8a 45 ff             	mov    -0x1(%ebp),%al
576d11:	c1 f8 05             	sar    $0x5,%eax
576d14:	24 07                	and    $0x7,%al
576d16:	88 43 0c             	mov    %al,0xc(%ebx)
576d19:	8a 13                	mov    (%ebx),%dl
576d1b:	80 ea 01             	sub    $0x1,%dl
576d1e:	72 11                	jb     0x576d31
576d20:	74 06                	je     0x576d28
576d22:	fe ca                	dec    %dl
576d24:	74 16                	je     0x576d3c
576d26:	eb 24                	jmp    0x576d4c
576d28:	c7 43 04 01 00 00 00 	movl   $0x1,0x4(%ebx)
576d2f:	eb 1b                	jmp    0x576d4c
576d31:	0f b7 4d 08          	movzwl 0x8(%ebp),%ecx
576d35:	2b ce                	sub    %esi,%ecx
576d37:	89 4b 04             	mov    %ecx,0x4(%ebx)
576d3a:	eb 10                	jmp    0x576d4c
576d3c:	0f b7 45 08          	movzwl 0x8(%ebp),%eax
576d40:	2b c6                	sub    %esi,%eax
576d42:	d1 f8                	sar    $1,%eax
576d44:	79 03                	jns    0x576d49
576d46:	83 d0 00             	adc    $0x0,%eax
576d49:	89 43 04             	mov    %eax,0x4(%ebx)
576d4c:	8b 73 04             	mov    0x4(%ebx),%esi
576d4f:	85 f6                	test   %esi,%esi
576d51:	0f 8e 98 00 00 00    	jle    0x576def
576d57:	8b c6                	mov    %esi,%eax
576d59:	c1 e0 02             	shl    $0x2,%eax
576d5c:	e8 1b 16 00 00       	call   0x57837c
576d61:	89 43 08             	mov    %eax,0x8(%ebx)
576d64:	8b 53 08             	mov    0x8(%ebx),%edx
576d67:	85 d2                	test   %edx,%edx
576d69:	75 17                	jne    0x576d82
576d6b:	68 ed 03 00 00       	push   $0x3ed
576d70:	68 85 27 6a 00       	push   $0x6a2785
576d75:	68 70 27 6a 00       	push   $0x6a2770
576d7a:	e8 c1 3d fe ff       	call   0x55ab40
576d7f:	83 c4 0c             	add    $0xc,%esp
576d82:	33 f6                	xor    %esi,%esi
576d84:	eb 60                	jmp    0x576de6
576d86:	8a 03                	mov    (%ebx),%al
576d88:	84 c0                	test   %al,%al
576d8a:	75 49                	jne    0x576dd5
576d8c:	8d 55 ff             	lea    -0x1(%ebp),%edx
576d8f:	8b c7                	mov    %edi,%eax
576d91:	e8 c6 08 00 00       	call   0x57765c
576d96:	33 d2                	xor    %edx,%edx
576d98:	8a 55 ff             	mov    -0x1(%ebp),%dl
576d9b:	c1 fa 03             	sar    $0x3,%edx
576d9e:	f7 c2 e0 ff ff ff    	test   $0xffffffe0,%edx
576da4:	74 17                	je     0x576dbd
576da6:	68 f1 03 00 00       	push   $0x3f1
576dab:	68 a6 27 6a 00       	push   $0x6a27a6
576db0:	68 8e 27 6a 00       	push   $0x6a278e
576db5:	e8 86 3d fe ff       	call   0x55ab40
576dba:	83 c4 0c             	add    $0xc,%esp
576dbd:	33 c9                	xor    %ecx,%ecx
576dbf:	8b 43 08             	mov    0x8(%ebx),%eax
576dc2:	8a 4d ff             	mov    -0x1(%ebp),%cl