5a0c00:	56                   	push   %esi
5a0c01:	8b 74 24 0c          	mov    0xc(%esp),%esi
5a0c05:	8b 46 64             	mov    0x64(%esi),%eax
5a0c08:	85 c0                	test   %eax,%eax
5a0c0a:	74 21                	je     0x5a0c2d
5a0c0c:	83 38 00             	cmpl   $0x0,(%eax)
5a0c0f:	75 06                	jne    0x5a0c17
5a0c11:	83 78 04 00          	cmpl   $0x0,0x4(%eax)
5a0c15:	74 16                	je     0x5a0c2d
5a0c17:	ff 74 24 10          	push   0x10(%esp)
5a0c1b:	8b 44 24 0c          	mov    0xc(%esp),%eax
5a0c1f:	56                   	push   %esi
5a0c20:	ff 70 10             	push   0x10(%eax)
5a0c23:	e8 88 00 00 00       	call   0x5a0cb0
5a0c28:	83 c4 0c             	add    $0xc,%esp
5a0c2b:	5e                   	pop    %esi
5a0c2c:	c3                   	ret
5a0c2d:	6a 00                	push   $0x0
5a0c2f:	6a ff                	push   $0xffffffff
5a0c31:	56                   	push   %esi
5a0c32:	e8 99 39 ff ff       	call   0x5945d0
5a0c37:	8b 46 28             	mov    0x28(%esi),%eax
5a0c3a:	83 c4 0c             	add    $0xc,%esp
5a0c3d:	c1 e8 0c             	shr    $0xc,%eax
5a0c40:	f7 d0                	not    %eax
5a0c42:	83 e0 02             	and    $0x2,%eax
5a0c45:	83 c8 01             	or     $0x1,%eax
5a0c48:	5e                   	pop    %esi
5a0c49:	c3                   	ret
5a0c4a:	cc                   	int3
5a0c4b:	cc                   	int3
5a0c4c:	cc                   	int3
5a0c4d:	cc                   	int3
5a0c4e:	cc                   	int3
5a0c4f:	cc                   	int3
5a0c50:	8b 44 24 08          	mov    0x8(%esp),%eax
5a0c54:	83 78 64 00          	cmpl   $0x0,0x64(%eax)
5a0c58:	74 15                	je     0x5a0c6f
5a0c5a:	ff 74 24 0c          	push   0xc(%esp)
5a0c5e:	50                   	push   %eax
5a0c5f:	8b 44 24 0c          	mov    0xc(%esp),%eax
5a0c63:	ff 70 10             	push   0x10(%eax)
5a0c66:	e8 45 00 00 00       	call   0x5a0cb0
5a0c6b:	83 c4 0c             	add    $0xc,%esp
5a0c6e:	c3                   	ret
5a0c6f:	b8 03 00 00 00       	mov    $0x3,%eax
5a0c74:	c3                   	ret
5a0c75:	cc                   	int3
5a0c76:	cc                   	int3
5a0c77:	cc                   	int3
5a0c78:	cc                   	int3
5a0c79:	cc                   	int3
5a0c7a:	cc                   	int3
5a0c7b:	cc                   	int3
5a0c7c:	cc                   	int3
5a0c7d:	cc                   	int3
5a0c7e:	cc                   	int3
5a0c7f:	cc                   	int3
5a0c80:	56                   	push   %esi
5a0c81:	8b 74 24 0c          	mov    0xc(%esp),%esi
5a0c85:	6a 00                	push   $0x0
5a0c87:	6a ff                	push   $0xffffffff
5a0c89:	56                   	push   %esi
5a0c8a:	e8 41 39 ff ff       	call   0x5945d0
5a0c8f:	8b 46 28             	mov    0x28(%esi),%eax
5a0c92:	83 c4 0c             	add    $0xc,%esp
5a0c95:	c1 e8 0c             	shr    $0xc,%eax
5a0c98:	f7 d0                	not    %eax
5a0c9a:	83 e0 02             	and    $0x2,%eax
5a0c9d:	83 c8 01             	or     $0x1,%eax
5a0ca0:	5e                   	pop    %esi
5a0ca1:	c3                   	ret
5a0ca2:	cc                   	int3
5a0ca3:	cc                   	int3
5a0ca4:	cc                   	int3
5a0ca5:	cc                   	int3
5a0ca6:	cc                   	int3
5a0ca7:	cc                   	int3
5a0ca8:	cc                   	int3
5a0ca9:	cc                   	int3
5a0caa:	cc                   	int3
5a0cab:	cc                   	int3
5a0cac:	cc                   	int3
5a0cad:	cc                   	int3
5a0cae:	cc                   	int3
5a0caf:	cc                   	int3
5a0cb0:	8b 44 24 08          	mov    0x8(%esp),%eax
5a0cb4:	56                   	push   %esi
5a0cb5:	8b 70 64             	mov    0x64(%eax),%esi
5a0cb8:	85 f6                	test   %esi,%esi
5a0cba:	75 05                	jne    0x5a0cc1
5a0cbc:	8d 46 03             	lea    0x3(%esi),%eax
5a0cbf:	5e                   	pop    %esi
5a0cc0:	c3                   	ret
5a0cc1:	8b 46 04             	mov    0x4(%esi),%eax
5a0cc4:	53                   	push   %ebx
5a0cc5:	8b 5c 24 0c          	mov    0xc(%esp),%ebx
5a0cc9:	57                   	push   %edi
5a0cca:	85 c0                	test   %eax,%eax
5a0ccc:	74 38                	je     0x5a0d06
5a0cce:	50                   	push   %eax
5a0ccf:	33 ff                	xor    %edi,%edi
5a0cd1:	e8 3a d9 f0 ff       	call   0x4ae610
5a0cd6:	83 c4 04             	add    $0x4,%esp
5a0cd9:	85 c0                	test   %eax,%eax
5a0cdb:	7e 29                	jle    0x5a0d06
5a0cdd:	0f 1f 00             	nopl   (%eax)
5a0ce0:	57                   	push   %edi
5a0ce1:	ff 76 04             	push   0x4(%esi)
5a0ce4:	e8 47 da f0 ff       	call   0x4ae730
5a0ce9:	50                   	push   %eax
5a0cea:	e8 f1 6c f0 ff       	call   0x4a79e0
5a0cef:	83 c4 0c             	add    $0xc,%esp
5a0cf2:	3b c3                	cmp    %ebx,%eax
5a0cf4:	74 57                	je     0x5a0d4d
5a0cf6:	ff 76 04             	push   0x4(%esi)
5a0cf9:	47                   	inc    %edi
5a0cfa:	e8 11 d9 f0 ff       	call   0x4ae610
5a0cff:	83 c4 04             	add    $0x4,%esp
5a0d02:	3b f8                	cmp    %eax,%edi
5a0d04:	7c da                	jl     0x5a0ce0
5a0d06:	8b 06                	mov    (%esi),%eax
5a0d08:	85 c0                	test   %eax,%eax
5a0d0a:	74 38                	je     0x5a0d44
5a0d0c:	50                   	push   %eax
5a0d0d:	33 ff                	xor    %edi,%edi
5a0d0f:	e8 fc d8 f0 ff       	call   0x4ae610
5a0d14:	83 c4 04             	add    $0x4,%esp
5a0d17:	85 c0                	test   %eax,%eax
5a0d19:	7e 29                	jle    0x5a0d44
5a0d1b:	0f 1f 44 00 00       	nopl   0x0(%eax,%eax,1)
5a0d20:	57                   	push   %edi
5a0d21:	ff 36                	push   (%esi)
5a0d23:	e8 08 da f0 ff       	call   0x4ae730
5a0d28:	50                   	push   %eax
5a0d29:	e8 b2 6c f0 ff       	call   0x4a79e0
5a0d2e:	83 c4 0c             	add    $0xc,%esp
5a0d31:	3b c3                	cmp    %ebx,%eax
5a0d33:	74 21                	je     0x5a0d56
5a0d35:	ff 36                	push   (%esi)
5a0d37:	47                   	inc    %edi
5a0d38:	e8 d3 d8 f0 ff       	call   0x4ae610
5a0d3d:	83 c4 04             	add    $0x4,%esp
5a0d40:	3b f8                	cmp    %eax,%edi
5a0d42:	7c dc                	jl     0x5a0d20
5a0d44:	5f                   	pop    %edi
5a0d45:	5b                   	pop    %ebx
5a0d46:	b8 03 00 00 00       	mov    $0x3,%eax
5a0d4b:	5e                   	pop    %esi
5a0d4c:	c3                   	ret
5a0d4d:	5f                   	pop    %edi
5a0d4e:	5b                   	pop    %ebx
5a0d4f:	b8 02 00 00 00       	mov    $0x2,%eax
5a0d54:	5e                   	pop    %esi
5a0d55:	c3                   	ret
5a0d56:	5f                   	pop    %edi
5a0d57:	5b                   	pop    %ebx
5a0d58:	b8 01 00 00 00       	mov    $0x1,%eax
5a0d5d:	5e                   	pop    %esi
5a0d5e:	c3                   	ret
5a0d5f:	cc                   	int3
5a0d60:	b8 a4 ae 6c 00       	mov    $0x6caea4,%eax
5a0d65:	c3                   	ret
5a0d66:	cc                   	int3
5a0d67:	cc                   	int3
5a0d68:	cc                   	int3
5a0d69:	cc                   	int3
5a0d6a:	cc                   	int3
5a0d6b:	cc                   	int3
5a0d6c:	cc                   	int3
5a0d6d:	cc                   	int3
5a0d6e:	cc                   	int3
5a0d6f:	cc                   	int3
5a0d70:	68 e8 ae 6c 00       	push   $0x6caee8
5a0d75:	ff 74 24 08          	push   0x8(%esp)
5a0d79:	e8 12 11 f1 ff       	call   0x4b1e90
5a0d7e:	83 c4 08             	add    $0x8,%esp
5a0d81:	c3                   	ret
5a0d82:	cc                   	int3
5a0d83:	cc                   	int3
5a0d84:	cc                   	int3
5a0d85:	cc                   	int3
5a0d86:	cc                   	int3
5a0d87:	cc                   	int3
5a0d88:	cc                   	int3
5a0d89:	cc                   	int3
5a0d8a:	cc                   	int3
5a0d8b:	cc                   	int3
5a0d8c:	cc                   	int3
5a0d8d:	cc                   	int3
5a0d8e:	cc                   	int3
5a0d8f:	cc                   	int3
5a0d90:	b8 e8 ae 6c 00       	mov    $0x6caee8,%eax
5a0d95:	c3                   	ret
5a0d96:	cc                   	int3
5a0d97:	cc                   	int3
5a0d98:	cc                   	int3
5a0d99:	cc                   	int3
5a0d9a:	cc                   	int3
5a0d9b:	cc                   	int3
5a0d9c:	cc                   	int3
5a0d9d:	cc                   	int3
5a0d9e:	cc                   	int3
5a0d9f:	cc                   	int3
5a0da0:	68 e8 ae 6c 00       	push   $0x6caee8
5a0da5:	e8 a6 ad f2 ff       	call   0x4cbb50
5a0daa:	83 c4 04             	add    $0x4,%esp
5a0dad:	c3                   	ret
5a0dae:	cc                   	int3
5a0daf:	cc                   	int3
5a0db0:	b8 08 00 00 00       	mov    $0x8,%eax
5a0db5:	e8 36 07 04 00       	call   0x5e14f0
5a0dba:	8b 44 24 0c          	mov    0xc(%esp),%eax
5a0dbe:	0f b6 50 04          	movzbl 0x4(%eax),%edx
5a0dc2:	56                   	push   %esi
5a0dc3:	8d 70 01             	lea    0x1(%eax),%esi
5a0dc6:	0f b6 08             	movzbl (%eax),%ecx
5a0dc9:	0f b6 06             	movzbl (%esi),%eax
5a0dcc:	c1 e0 08             	shl    $0x8,%eax
5a0dcf:	0b c8                	or     %eax,%ecx
5a0dd1:	0f b6 46 01          	movzbl 0x1(%esi),%eax
5a0dd5:	c1 e0 10             	shl    $0x10,%eax
5a0dd8:	0b c8                	or     %eax,%ecx
5a0dda:	0f b6 46 02          	movzbl 0x2(%esi),%eax
5a0dde:	c1 e0 18             	shl    $0x18,%eax
5a0de1:	0b c8                	or     %eax,%ecx
5a0de3:	0f b6 46 04          	movzbl 0x4(%esi),%eax
5a0de7:	c1 e0 08             	shl    $0x8,%eax
5a0dea:	89 4c 24 04          	mov    %ecx,0x4(%esp)
5a0dee:	0b d0                	or     %eax,%edx
5a0df0:	0f b6 46 05          	movzbl 0x5(%esi),%eax
5a0df4:	0f b6 4e 06          	movzbl 0x6(%esi),%ecx
5a0df8:	5e                   	pop    %esi
5a0df9:	ff 74 24 1c          	push   0x1c(%esp)
5a0dfd:	c1 e1 08             	shl    $0x8,%ecx
5a0e00:	ff 74 24 1c          	push   0x1c(%esp)
5a0e04:	0b c8                	or     %eax,%ecx
5a0e06:	8d 44 24 08          	lea    0x8(%esp),%eax
5a0e0a:	ff 74 24 1c          	push   0x1c(%esp)
5a0e0e:	c1 e1 10             	shl    $0x10,%ecx
5a0e11:	0b ca                	or     %edx,%ecx
5a0e13:	83 7c 24 2c 00       	cmpl   $0x0,0x2c(%esp)
5a0e18:	89 4c 24 10          	mov    %ecx,0x10(%esp)
5a0e1c:	50                   	push   %eax
5a0e1d:	74 07                	je     0x5a0e26
5a0e1f:	e8 0c 09 00 00       	call   0x5a1730
5a0e24:	eb 05                	jmp    0x5a0e2b
5a0e26:	e8 45 00 00 00       	call   0x5a0e70
5a0e2b:	8b 44 24 20          	mov    0x20(%esp),%eax
5a0e2f:	83 c4 10             	add    $0x10,%esp
5a0e32:	8b 0c 24             	mov    (%esp),%ecx
5a0e35:	8d 50 01             	lea    0x1(%eax),%edx
5a0e38:	88 08                	mov    %cl,(%eax)
5a0e3a:	8b c1                	mov    %ecx,%eax
5a0e3c:	c1 e8 08             	shr    $0x8,%eax
5a0e3f:	88 02                	mov    %al,(%edx)
5a0e41:	8b c1                	mov    %ecx,%eax
5a0e43:	c1 e8 10             	shr    $0x10,%eax
5a0e46:	88 42 01             	mov    %al,0x1(%edx)
5a0e49:	c1 e9 18             	shr    $0x18,%ecx
5a0e4c:	88 4a 02             	mov    %cl,0x2(%edx)
5a0e4f:	8b 4c 24 04          	mov    0x4(%esp),%ecx
5a0e53:	8b c1                	mov    %ecx,%eax
5a0e55:	c1 e8 08             	shr    $0x8,%eax
5a0e58:	88 4a 03             	mov    %cl,0x3(%edx)
5a0e5b:	88 42 04             	mov    %al,0x4(%edx)
5a0e5e:	8b c1                	mov    %ecx,%eax
5a0e60:	c1 e8 10             	shr    $0x10,%eax
5a0e63:	c1 e9 18             	shr    $0x18,%ecx
5a0e66:	88 42 05             	mov    %al,0x5(%edx)
5a0e69:	88 4a 06             	mov    %cl,0x6(%edx)
5a0e6c:	83 c4 08             	add    $0x8,%esp
5a0e6f:	c3                   	ret
5a0e70:	56                   	push   %esi
5a0e71:	57                   	push   %edi
5a0e72:	8b 7c 24 0c          	mov    0xc(%esp),%edi
5a0e76:	6a 00                	push   $0x0
5a0e78:	ff 74 24 1c          	push   0x1c(%esp)
5a0e7c:	8b 77 04             	mov    0x4(%edi),%esi
5a0e7f:	8b c6                	mov    %esi,%eax
5a0e81:	8b 17                	mov    (%edi),%edx
5a0e83:	c1 e8 04             	shr    $0x4,%eax
5a0e86:	33 c2                	xor    %edx,%eax
5a0e88:	25 0f 0f 0f 0f       	and    $0xf0f0f0f,%eax
5a0e8d:	33 d0                	xor    %eax,%edx
5a0e8f:	c1 e0 04             	shl    $0x4,%eax
5a0e92:	33 f0                	xor    %eax,%esi
5a0e94:	8b c2                	mov    %edx,%eax
5a0e96:	c1 e8 10             	shr    $0x10,%eax
5a0e99:	33 c6                	xor    %esi,%eax
5a0e9b:	0f b7 c0             	movzwl %ax,%eax
5a0e9e:	33 f0                	xor    %eax,%esi
5a0ea0:	c1 e0 10             	shl    $0x10,%eax
5a0ea3:	33 d0                	xor    %eax,%edx
5a0ea5:	8b c6                	mov    %esi,%eax
5a0ea7:	c1 e8 02             	shr    $0x2,%eax
5a0eaa:	33 c2                	xor    %edx,%eax
5a0eac:	25 33 33 33 33       	and    $0x33333333,%eax
5a0eb1:	33 d0                	xor    %eax,%edx
5a0eb3:	c1 e0 02             	shl    $0x2,%eax
5a0eb6:	33 f0                	xor    %eax,%esi
5a0eb8:	8b c2                	mov    %edx,%eax
5a0eba:	c1 e8 08             	shr    $0x8,%eax
5a0ebd:	33 c6                	xor    %esi,%eax
5a0ebf:	25 ff 00 ff 00       	and    $0xff00ff,%eax
5a0ec4:	33 f0                	xor    %eax,%esi
5a0ec6:	c1 e0 08             	shl    $0x8,%eax
5a0ec9:	33 d0                	xor    %eax,%edx
5a0ecb:	8b ce                	mov    %esi,%ecx
5a0ecd:	d1 e9                	shr    $1,%ecx
5a0ecf:	33 ca                	xor    %edx,%ecx
5a0ed1:	81 e1 55 55 55 55    	and    $0x55555555,%ecx
5a0ed7:	8b c1                	mov    %ecx,%eax
5a0ed9:	33 c2                	xor    %edx,%eax
5a0edb:	89 07                	mov    %eax,(%edi)
5a0edd:	8d 04 09             	lea    (%ecx,%ecx,1),%eax
5a0ee0:	33 c6                	xor    %esi,%eax
5a0ee2:	57                   	push   %edi
5a0ee3:	89 47 04             	mov    %eax,0x4(%edi)
5a0ee6:	e8 c5 05 00 00       	call   0x5a14b0
5a0eeb:	6a 01                	push   $0x1
5a0eed:	ff 74 24 24          	push   0x24(%esp)
5a0ef1:	57                   	push   %edi
5a0ef2:	e8 b9 05 00 00       	call   0x5a14b0
5a0ef7:	6a 00                	push   $0x0
5a0ef9:	ff 74 24 2c          	push   0x2c(%esp)
5a0efd:	57                   	push   %edi
5a0efe:	e8 ad 05 00 00       	call   0x5a14b0
5a0f03:	8b 77 04             	mov    0x4(%edi),%esi
5a0f06:	83 c4 24             	add    $0x24,%esp
5a0f09:	8b 17                	mov    (%edi),%edx
5a0f0b:	8b c6                	mov    %esi,%eax
5a0f0d:	d1 e8                	shr    $1,%eax
5a0f0f:	33 c2                	xor    %edx,%eax
5a0f11:	25 55 55 55 55       	and    $0x55555555,%eax
5a0f16:	33 d0                	xor    %eax,%edx
5a0f18:	03 c0                	add    %eax,%eax
5a0f1a:	33 f0                	xor    %eax,%esi
5a0f1c:	8b c2                	mov    %edx,%eax
5a0f1e:	c1 e8 08             	shr    $0x8,%eax
5a0f21:	33 c6                	xor    %esi,%eax
5a0f23:	25 ff 00 ff 00       	and    $0xff00ff,%eax
5a0f28:	33 f0                	xor    %eax,%esi
5a0f2a:	c1 e0 08             	shl    $0x8,%eax
5a0f2d:	33 d0                	xor    %eax,%edx
5a0f2f:	8b c6                	mov    %esi,%eax
5a0f31:	c1 e8 02             	shr    $0x2,%eax
5a0f34:	33 c2                	xor    %edx,%eax
5a0f36:	25 33 33 33 33       	and    $0x33333333,%eax
5a0f3b:	33 d0                	xor    %eax,%edx