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
576dc5:	c1 f9 03             	sar    $0x3,%ecx
576dc8:	66 83 e1 1f          	and    $0x1f,%cx
576dcc:	c1 e1 0b             	shl    $0xb,%ecx
576dcf:	66 89 0c 70          	mov    %cx,(%eax,%esi,2)
576dd3:	eb 10                	jmp    0x576de5
576dd5:	8b d6                	mov    %esi,%edx
576dd7:	8b 4b 08             	mov    0x8(%ebx),%ecx
576dda:	03 d2                	add    %edx,%edx
576ddc:	8b c7                	mov    %edi,%eax
576dde:	03 d1                	add    %ecx,%edx
576de0:	e8 43 09 00 00       	call   0x577728
576de5:	46                   	inc    %esi
576de6:	8b 53 04             	mov    0x4(%ebx),%edx
576de9:	3b f2                	cmp    %edx,%esi
576deb:	7c 99                	jl     0x576d86
576ded:	eb 05                	jmp    0x576df4
576def:	33 c9                	xor    %ecx,%ecx
576df1:	89 4b 08             	mov    %ecx,0x8(%ebx)
576df4:	8b 47 08             	mov    0x8(%edi),%eax
576df7:	a8 02                	test   $0x2,%al
576df9:	75 04                	jne    0x576dff
576dfb:	a8 01                	test   $0x1,%al
576dfd:	74 0c                	je     0x576e0b
576dff:	8b c3                	mov    %ebx,%eax
576e01:	e8 d6 fe ff ff       	call   0x576cdc
576e06:	83 c8 ff             	or     $0xffffffff,%eax
576e09:	eb 02                	jmp    0x576e0d
576e0b:	33 c0                	xor    %eax,%eax
576e0d:	5f                   	pop    %edi
576e0e:	5e                   	pop    %esi
576e0f:	5b                   	pop    %ebx
576e10:	59                   	pop    %ecx
576e11:	5d                   	pop    %ebp
576e12:	c2 04 00             	ret    $0x4
576e15:	90                   	nop
576e16:	90                   	nop
576e17:	90                   	nop
576e18:	53                   	push   %ebx
576e19:	8b d8                	mov    %eax,%ebx
576e1b:	56                   	push   %esi
576e1c:	57                   	push   %edi
576e1d:	8a 53 0c             	mov    0xc(%ebx),%dl
576e20:	8a 03                	mov    (%ebx),%al
576e22:	80 e2 07             	and    $0x7,%dl
576e25:	8b f9                	mov    %ecx,%edi
576e27:	c1 e2 05             	shl    $0x5,%edx
576e2a:	0a d0                	or     %al,%dl
576e2c:	8b c7                	mov    %edi,%eax
576e2e:	e8 8d 08 00 00       	call   0x5776c0
576e33:	33 f6                	xor    %esi,%esi
576e35:	eb 2b                	jmp    0x576e62
576e37:	8a 03                	mov    (%ebx),%al
576e39:	84 c0                	test   %al,%al
576e3b:	75 16                	jne    0x576e53
576e3d:	8b 53 08             	mov    0x8(%ebx),%edx
576e40:	8b c7                	mov    %edi,%eax
576e42:	0f b7 14 72          	movzwl (%edx,%esi,2),%edx
576e46:	c1 fa 0b             	sar    $0xb,%edx
576e49:	c1 e2 03             	shl    $0x3,%edx
576e4c:	e8 6f 08 00 00       	call   0x5776c0
576e51:	eb 0e                	jmp    0x576e61
576e53:	8b 4b 08             	mov    0x8(%ebx),%ecx
576e56:	8b c7                	mov    %edi,%eax
576e58:	66 8b 14 71          	mov    (%ecx,%esi,2),%dx
576e5c:	e8 8b 09 00 00       	call   0x5777ec
576e61:	46                   	inc    %esi
576e62:	8b 4b 04             	mov    0x4(%ebx),%ecx
576e65:	3b f1                	cmp    %ecx,%esi
576e67:	7c ce                	jl     0x576e37
576e69:	33 c0                	xor    %eax,%eax
576e6b:	5f                   	pop    %edi
576e6c:	5e                   	pop    %esi
576e6d:	5b                   	pop    %ebx
576e6e:	c3                   	ret
576e6f:	90                   	nop
576e70:	83 c0 08             	add    $0x8,%eax
576e73:	8b d0                	mov    %eax,%edx
576e75:	8b c1                	mov    %ecx,%eax
576e77:	e8 ac 08 00 00       	call   0x577728
576e7c:	85 c0                	test   %eax,%eax
576e7e:	74 04                	je     0x576e84
576e80:	83 c8 ff             	or     $0xffffffff,%eax
576e83:	c3                   	ret
576e84:	33 c0                	xor    %eax,%eax
576e86:	c3                   	ret
576e87:	90                   	nop
576e88:	83 c0 08             	add    $0x8,%eax
576e8b:	66 8b 10             	mov    (%eax),%dx
576e8e:	8b c1                	mov    %ecx,%eax
576e90:	e8 57 09 00 00       	call   0x5777ec
576e95:	85 c0                	test   %eax,%eax
576e97:	74 04                	je     0x576e9d
576e99:	83 c8 ff             	or     $0xffffffff,%eax
576e9c:	c3                   	ret
576e9d:	33 c0                	xor    %eax,%eax
576e9f:	c3                   	ret
576ea0:	83 c0 08             	add    $0x8,%eax
576ea3:	0f b7 08             	movzwl (%eax),%ecx
576ea6:	51                   	push   %ecx
576ea7:	68 af 27 6a 00       	push   $0x6a27af
576eac:	52                   	push   %edx
576ead:	e8 1a 32 00 00       	call   0x57a0cc
576eb2:	83 c4 0c             	add    $0xc,%esp
576eb5:	33 c0                	xor    %eax,%eax
576eb7:	c3                   	ret
576eb8:	83 c0 08             	add    $0x8,%eax
576ebb:	8b 50 04             	mov    0x4(%eax),%edx
576ebe:	85 d2                	test   %edx,%edx
576ec0:	74 07                	je     0x576ec9
576ec2:	8b c2                	mov    %edx,%eax
576ec4:	e8 bb 14 00 00       	call   0x578384
576ec9:	c3                   	ret
576eca:	90                   	nop
576ecb:	90                   	nop
576ecc:	53                   	push   %ebx
576ecd:	56                   	push   %esi
576ece:	8b f0                	mov    %eax,%esi
576ed0:	57                   	push   %edi
576ed1:	55                   	push   %ebp
576ed2:	33 c0                	xor    %eax,%eax
576ed4:	8d 5e 08             	lea    0x8(%esi),%ebx
576ed7:	8b e9                	mov    %ecx,%ebp
576ed9:	89 43 04             	mov    %eax,0x4(%ebx)
576edc:	66 83 7e 02 01       	cmpw   $0x1,0x2(%esi)
576ee1:	72 4f                	jb     0x576f32
576ee3:	8b d3                	mov    %ebx,%edx
576ee5:	8b c5                	mov    %ebp,%eax
576ee7:	e8 70 07 00 00       	call   0x57765c
576eec:	85 c0                	test   %eax,%eax
576eee:	75 42                	jne    0x576f32
576ef0:	66 8b 7e 02          	mov    0x2(%esi),%di
576ef4:	66 81 c7 ff ff       	add    $0xffff,%di
576ef9:	66 89 7b 02          	mov    %di,0x2(%ebx)
576efd:	66 85 ff             	test   %di,%di
576f00:	76 27                	jbe    0x576f29
576f02:	0f b7 c7             	movzwl %di,%eax
576f05:	e8 72 14 00 00       	call   0x57837c
576f0a:	89 43 04             	mov    %eax,0x4(%ebx)
576f0d:	85 c0                	test   %eax,%eax
576f0f:	74 21                	je     0x576f32
576f11:	0f b7 4b 02          	movzwl 0x2(%ebx),%ecx
576f15:	8b 53 04             	mov    0x4(%ebx),%edx
576f18:	8b c5                	mov    %ebp,%eax
576f1a:	e8 61 19 00 00       	call   0x578880
576f1f:	0f b7 53 02          	movzwl 0x2(%ebx),%edx
576f23:	3b c2                	cmp    %edx,%eax
576f25:	75 0b                	jne    0x576f32
576f27:	eb 05                	jmp    0x576f2e
576f29:	33 c9                	xor    %ecx,%ecx
576f2b:	89 4b 04             	mov    %ecx,0x4(%ebx)
576f2e:	33 c0                	xor    %eax,%eax
576f30:	eb 0a                	jmp    0x576f3c
576f32:	8b c6                	mov    %esi,%eax
576f34:	e8 7f ff ff ff       	call   0x576eb8
576f39:	83 c8 ff             	or     $0xffffffff,%eax
576f3c:	5d                   	pop    %ebp
576f3d:	5f                   	pop    %edi
576f3e:	5e                   	pop    %esi
576f3f:	5b                   	pop    %ebx
576f40:	c3                   	ret
576f41:	90                   	nop
576f42:	90                   	nop
576f43:	90                   	nop
576f44:	53                   	push   %ebx
576f45:	8d 58 08             	lea    0x8(%eax),%ebx
576f48:	56                   	push   %esi
576f49:	8b f1                	mov    %ecx,%esi
576f4b:	0f b7 4b 02          	movzwl 0x2(%ebx),%ecx
576f4f:	8b c6                	mov    %esi,%eax
576f51:	8b 53 04             	mov    0x4(%ebx),%edx
576f54:	e8 a3 19 00 00       	call   0x5788fc
576f59:	0f b7 53 02          	movzwl 0x2(%ebx),%edx
576f5d:	3b c2                	cmp    %edx,%eax
576f5f:	74 06                	je     0x576f67
576f61:	83 c8 ff             	or     $0xffffffff,%eax