405af0:	03 d9                	add    %ecx,%ebx
405af2:	3b f3                	cmp    %ebx,%esi
405af4:	0f 8f 3b 01 00 00    	jg     0x405c35
405afa:	8b 4d fc             	mov    -0x4(%ebp),%ecx
405afd:	c1 f9 04             	sar    $0x4,%ecx
405b00:	49                   	dec    %ecx
405b01:	89 4d f8             	mov    %ecx,-0x8(%ebp)
405b04:	83 f9 3f             	cmp    $0x3f,%ecx
405b07:	76 06                	jbe    0x405b0f
405b09:	6a 3f                	push   $0x3f
405b0b:	59                   	pop    %ecx
405b0c:	89 4d f8             	mov    %ecx,-0x8(%ebp)
405b0f:	8b 5f 04             	mov    0x4(%edi),%ebx
405b12:	3b 5f 08             	cmp    0x8(%edi),%ebx
405b15:	75 43                	jne    0x405b5a
405b17:	bb 00 00 00 80       	mov    $0x80000000,%ebx
405b1c:	83 f9 20             	cmp    $0x20,%ecx
405b1f:	73 1a                	jae    0x405b3b
405b21:	d3 eb                	shr    %cl,%ebx
405b23:	8b 4d f8             	mov    -0x8(%ebp),%ecx
405b26:	8d 4c 01 04          	lea    0x4(%ecx,%eax,1),%ecx
405b2a:	f7 d3                	not    %ebx
405b2c:	21 5c 90 44          	and    %ebx,0x44(%eax,%edx,4)
405b30:	fe 09                	decb   (%ecx)
405b32:	75 26                	jne    0x405b5a
405b34:	8b 4d 08             	mov    0x8(%ebp),%ecx
405b37:	21 19                	and    %ebx,(%ecx)
405b39:	eb 1f                	jmp    0x405b5a
405b3b:	83 c1 e0             	add    $0xffffffe0,%ecx
405b3e:	d3 eb                	shr    %cl,%ebx
405b40:	8b 4d f8             	mov    -0x8(%ebp),%ecx
405b43:	8d 4c 01 04          	lea    0x4(%ecx,%eax,1),%ecx
405b47:	f7 d3                	not    %ebx
405b49:	21 9c 90 c4 00 00 00 	and    %ebx,0xc4(%eax,%edx,4)
405b50:	fe 09                	decb   (%ecx)
405b52:	75 06                	jne    0x405b5a
405b54:	8b 4d 08             	mov    0x8(%ebp),%ecx
405b57:	21 59 04             	and    %ebx,0x4(%ecx)
405b5a:	8b 4f 08             	mov    0x8(%edi),%ecx
405b5d:	8b 5f 04             	mov    0x4(%edi),%ebx
405b60:	89 59 04             	mov    %ebx,0x4(%ecx)
405b63:	8b 4f 04             	mov    0x4(%edi),%ecx
405b66:	8b 7f 08             	mov    0x8(%edi),%edi
405b69:	89 79 08             	mov    %edi,0x8(%ecx)
405b6c:	8b 4d 10             	mov    0x10(%ebp),%ecx
405b6f:	2b ce                	sub    %esi,%ecx
405b71:	01 4d fc             	add    %ecx,-0x4(%ebp)
405b74:	83 7d fc 00          	cmpl   $0x0,-0x4(%ebp)
405b78:	0f 8e a5 00 00 00    	jle    0x405c23
405b7e:	8b 7d fc             	mov    -0x4(%ebp),%edi
405b81:	8b 4d 0c             	mov    0xc(%ebp),%ecx
405b84:	c1 ff 04             	sar    $0x4,%edi
405b87:	4f                   	dec    %edi
405b88:	8d 4c 31 fc          	lea    -0x4(%ecx,%esi,1),%ecx
405b8c:	83 ff 3f             	cmp    $0x3f,%edi
405b8f:	76 03                	jbe    0x405b94
405b91:	6a 3f                	push   $0x3f
405b93:	5f                   	pop    %edi
405b94:	8b 5d f4             	mov    -0xc(%ebp),%ebx
405b97:	8d 1c fb             	lea    (%ebx,%edi,8),%ebx
405b9a:	89 5d 10             	mov    %ebx,0x10(%ebp)
405b9d:	8b 5b 04             	mov    0x4(%ebx),%ebx
405ba0:	89 59 04             	mov    %ebx,0x4(%ecx)
405ba3:	8b 5d 10             	mov    0x10(%ebp),%ebx
405ba6:	89 59 08             	mov    %ebx,0x8(%ecx)
405ba9:	89 4b 04             	mov    %ecx,0x4(%ebx)
405bac:	8b 59 04             	mov    0x4(%ecx),%ebx
405baf:	89 4b 08             	mov    %ecx,0x8(%ebx)
405bb2:	8b 59 04             	mov    0x4(%ecx),%ebx
405bb5:	3b 59 08             	cmp    0x8(%ecx),%ebx
405bb8:	75 57                	jne    0x405c11
405bba:	8a 4c 07 04          	mov    0x4(%edi,%eax,1),%cl
405bbe:	88 4d 13             	mov    %cl,0x13(%ebp)
405bc1:	fe c1                	inc    %cl
405bc3:	88 4c 07 04          	mov    %cl,0x4(%edi,%eax,1)
405bc7:	83 ff 20             	cmp    $0x20,%edi
405bca:	73 1c                	jae    0x405be8
405bcc:	80 7d 13 00          	cmpb   $0x0,0x13(%ebp)
405bd0:	75 0e                	jne    0x405be0
405bd2:	8b cf                	mov    %edi,%ecx
405bd4:	bb 00 00 00 80       	mov    $0x80000000,%ebx
405bd9:	d3 eb                	shr    %cl,%ebx
405bdb:	8b 4d 08             	mov    0x8(%ebp),%ecx
405bde:	09 19                	or     %ebx,(%ecx)
405be0:	8d 44 90 44          	lea    0x44(%eax,%edx,4),%eax
405be4:	8b cf                	mov    %edi,%ecx
405be6:	eb 20                	jmp    0x405c08
405be8:	80 7d 13 00          	cmpb   $0x0,0x13(%ebp)
405bec:	75 10                	jne    0x405bfe
405bee:	8d 4f e0             	lea    -0x20(%edi),%ecx
405bf1:	bb 00 00 00 80       	mov    $0x80000000,%ebx
405bf6:	d3 eb                	shr    %cl,%ebx
405bf8:	8b 4d 08             	mov    0x8(%ebp),%ecx
405bfb:	09 59 04             	or     %ebx,0x4(%ecx)
405bfe:	8d 84 90 c4 00 00 00 	lea    0xc4(%eax,%edx,4),%eax
405c05:	8d 4f e0             	lea    -0x20(%edi),%ecx
405c08:	ba 00 00 00 80       	mov    $0x80000000,%edx
405c0d:	d3 ea                	shr    %cl,%edx
405c0f:	09 10                	or     %edx,(%eax)
405c11:	8b 55 0c             	mov    0xc(%ebp),%edx
405c14:	8b 4d fc             	mov    -0x4(%ebp),%ecx
405c17:	8d 44 32 fc          	lea    -0x4(%edx,%esi,1),%eax
405c1b:	89 08                	mov    %ecx,(%eax)
405c1d:	89 4c 01 fc          	mov    %ecx,-0x4(%ecx,%eax,1)
405c21:	eb 03                	jmp    0x405c26
405c23:	8b 55 0c             	mov    0xc(%ebp),%edx
405c26:	8d 46 01             	lea    0x1(%esi),%eax
405c29:	89 42 fc             	mov    %eax,-0x4(%edx)
405c2c:	89 44 32 f8          	mov    %eax,-0x8(%edx,%esi,1)
405c30:	e9 3c 01 00 00       	jmp    0x405d71
405c35:	33 c0                	xor    %eax,%eax
405c37:	e9 38 01 00 00       	jmp    0x405d74
405c3c:	0f 8d 2f 01 00 00    	jge    0x405d71
405c42:	8b 5d 0c             	mov    0xc(%ebp),%ebx
405c45:	29 75 10             	sub    %esi,0x10(%ebp)
405c48:	8d 4e 01             	lea    0x1(%esi),%ecx
405c4b:	89 4b fc             	mov    %ecx,-0x4(%ebx)
405c4e:	8d 5c 33 fc          	lea    -0x4(%ebx,%esi,1),%ebx
405c52:	8b 75 10             	mov    0x10(%ebp),%esi
405c55:	c1 fe 04             	sar    $0x4,%esi
405c58:	4e                   	dec    %esi
405c59:	89 5d 0c             	mov    %ebx,0xc(%ebp)
405c5c:	89 4b fc             	mov    %ecx,-0x4(%ebx)
405c5f:	83 fe 3f             	cmp    $0x3f,%esi
405c62:	76 03                	jbe    0x405c67
405c64:	6a 3f                	push   $0x3f
405c66:	5e                   	pop    %esi
405c67:	f6 45 fc 01          	testb  $0x1,-0x4(%ebp)
405c6b:	0f 85 80 00 00 00    	jne    0x405cf1
405c71:	8b 75 fc             	mov    -0x4(%ebp),%esi
405c74:	c1 fe 04             	sar    $0x4,%esi
405c77:	4e                   	dec    %esi
405c78:	83 fe 3f             	cmp    $0x3f,%esi
405c7b:	76 03                	jbe    0x405c80
405c7d:	6a 3f                	push   $0x3f
405c7f:	5e                   	pop    %esi
405c80:	8b 4f 04             	mov    0x4(%edi),%ecx
405c83:	3b 4f 08             	cmp    0x8(%edi),%ecx
405c86:	75 42                	jne    0x405cca
405c88:	bb 00 00 00 80       	mov    $0x80000000,%ebx
405c8d:	83 fe 20             	cmp    $0x20,%esi
405c90:	73 19                	jae    0x405cab
405c92:	8b ce                	mov    %esi,%ecx
405c94:	d3 eb                	shr    %cl,%ebx
405c96:	8d 74 06 04          	lea    0x4(%esi,%eax,1),%esi
405c9a:	f7 d3                	not    %ebx
405c9c:	21 5c 90 44          	and    %ebx,0x44(%eax,%edx,4)
405ca0:	fe 0e                	decb   (%esi)
405ca2:	75 23                	jne    0x405cc7
405ca4:	8b 4d 08             	mov    0x8(%ebp),%ecx
405ca7:	21 19                	and    %ebx,(%ecx)
405ca9:	eb 1c                	jmp    0x405cc7
405cab:	8d 4e e0             	lea    -0x20(%esi),%ecx
405cae:	d3 eb                	shr    %cl,%ebx
405cb0:	8d 4c 06 04          	lea    0x4(%esi,%eax,1),%ecx
405cb4:	f7 d3                	not    %ebx
405cb6:	21 9c 90 c4 00 00 00 	and    %ebx,0xc4(%eax,%edx,4)
405cbd:	fe 09                	decb   (%ecx)
405cbf:	75 06                	jne    0x405cc7
405cc1:	8b 4d 08             	mov    0x8(%ebp),%ecx
405cc4:	21 59 04             	and    %ebx,0x4(%ecx)
405cc7:	8b 5d 0c             	mov    0xc(%ebp),%ebx
405cca:	8b 4f 08             	mov    0x8(%edi),%ecx
405ccd:	8b 77 04             	mov    0x4(%edi),%esi
405cd0:	89 71 04             	mov    %esi,0x4(%ecx)
405cd3:	8b 77 08             	mov    0x8(%edi),%esi
405cd6:	8b 4f 04             	mov    0x4(%edi),%ecx
405cd9:	89 71 08             	mov    %esi,0x8(%ecx)
405cdc:	8b 75 10             	mov    0x10(%ebp),%esi
405cdf:	03 75 fc             	add    -0x4(%ebp),%esi
405ce2:	89 75 10             	mov    %esi,0x10(%ebp)
405ce5:	c1 fe 04             	sar    $0x4,%esi
405ce8:	4e                   	dec    %esi
405ce9:	83 fe 3f             	cmp    $0x3f,%esi
405cec:	76 03                	jbe    0x405cf1
405cee:	6a 3f                	push   $0x3f
405cf0:	5e                   	pop    %esi
405cf1:	8b 4d f4             	mov    -0xc(%ebp),%ecx
405cf4:	8d 0c f1             	lea    (%ecx,%esi,8),%ecx
405cf7:	8b 79 04             	mov    0x4(%ecx),%edi
405cfa:	89 4b 08             	mov    %ecx,0x8(%ebx)
405cfd:	89 7b 04             	mov    %edi,0x4(%ebx)
405d00:	89 59 04             	mov    %ebx,0x4(%ecx)
405d03:	8b 4b 04             	mov    0x4(%ebx),%ecx
405d06:	89 59 08             	mov    %ebx,0x8(%ecx)
405d09:	8b 4b 04             	mov    0x4(%ebx),%ecx
405d0c:	3b 4b 08             	cmp    0x8(%ebx),%ecx
405d0f:	75 57                	jne    0x405d68
405d11:	8a 4c 06 04          	mov    0x4(%esi,%eax,1),%cl
405d15:	88 4d 0f             	mov    %cl,0xf(%ebp)
405d18:	fe c1                	inc    %cl
405d1a:	88 4c 06 04          	mov    %cl,0x4(%esi,%eax,1)
405d1e:	83 fe 20             	cmp    $0x20,%esi
405d21:	73 1c                	jae    0x405d3f
405d23:	80 7d 0f 00          	cmpb   $0x0,0xf(%ebp)
405d27:	75 0e                	jne    0x405d37
405d29:	8b ce                	mov    %esi,%ecx
405d2b:	bf 00 00 00 80       	mov    $0x80000000,%edi
405d30:	d3 ef                	shr    %cl,%edi
405d32:	8b 4d 08             	mov    0x8(%ebp),%ecx
405d35:	09 39                	or     %edi,(%ecx)
405d37:	8d 44 90 44          	lea    0x44(%eax,%edx,4),%eax
405d3b:	8b ce                	mov    %esi,%ecx
405d3d:	eb 20                	jmp    0x405d5f
405d3f:	80 7d 0f 00          	cmpb   $0x0,0xf(%ebp)
405d43:	75 10                	jne    0x405d55
405d45:	8d 4e e0             	lea    -0x20(%esi),%ecx
405d48:	bf 00 00 00 80       	mov    $0x80000000,%edi
405d4d:	d3 ef                	shr    %cl,%edi
405d4f:	8b 4d 08             	mov    0x8(%ebp),%ecx
405d52:	09 79 04             	or     %edi,0x4(%ecx)
405d55:	8d 84 90 c4 00 00 00 	lea    0xc4(%eax,%edx,4),%eax
405d5c:	8d 4e e0             	lea    -0x20(%esi),%ecx
405d5f:	ba 00 00 00 80       	mov    $0x80000000,%edx
405d64:	d3 ea                	shr    %cl,%edx
405d66:	09 10                	or     %edx,(%eax)
405d68:	8b 45 10             	mov    0x10(%ebp),%eax
405d6b:	89 03                	mov    %eax,(%ebx)
405d6d:	89 44 18 fc          	mov    %eax,-0x4(%eax,%ebx,1)
405d71:	33 c0                	xor    %eax,%eax
405d73:	40                   	inc    %eax
405d74:	5f                   	pop    %edi
405d75:	5e                   	pop    %esi
405d76:	5b                   	pop    %ebx
405d77:	c9                   	leave
405d78:	c3                   	ret
405d79:	8b ff                	mov    %edi,%edi
405d7b:	55                   	push   %ebp
405d7c:	8b ec                	mov    %esp,%ebp
405d7e:	83 ec 14             	sub    $0x14,%esp
405d81:	a1 78 2d de 02       	mov    0x2de2d78,%eax
405d86:	8b 4d 08             	mov    0x8(%ebp),%ecx
405d89:	6b c0 14             	imul   $0x14,%eax,%eax
405d8c:	03 05 7c 2d de 02    	add    0x2de2d7c,%eax
405d92:	83 c1 17             	add    $0x17,%ecx
405d95:	83 e1 f0             	and    $0xfffffff0,%ecx
405d98:	89 4d f0             	mov    %ecx,-0x10(%ebp)
405d9b:	c1 f9 04             	sar    $0x4,%ecx
405d9e:	53                   	push   %ebx
405d9f:	49                   	dec    %ecx
405da0:	83 f9 20             	cmp    $0x20,%ecx
405da3:	56                   	push   %esi
405da4:	57                   	push   %edi
405da5:	7d 0b                	jge    0x405db2
405da7:	83 ce ff             	or     $0xffffffff,%esi
405daa:	d3 ee                	shr    %cl,%esi
405dac:	83 4d f8 ff          	orl    $0xffffffff,-0x8(%ebp)
405db0:	eb 0d                	jmp    0x405dbf
405db2:	83 c1 e0             	add    $0xffffffe0,%ecx
405db5:	83 ca ff             	or     $0xffffffff,%edx
405db8:	33 f6                	xor    %esi,%esi
405dba:	d3 ea                	shr    %cl,%edx
405dbc:	89 55 f8             	mov    %edx,-0x8(%ebp)
405dbf:	8b 0d 84 2d de 02    	mov    0x2de2d84,%ecx
405dc5:	8b d9                	mov    %ecx,%ebx
405dc7:	eb 11                	jmp    0x405dda
405dc9:	8b 53 04             	mov    0x4(%ebx),%edx
405dcc:	8b 3b                	mov    (%ebx),%edi
405dce:	23 55 f8             	and    -0x8(%ebp),%edx
405dd1:	23 fe                	and    %esi,%edi
405dd3:	0b d7                	or     %edi,%edx
405dd5:	75 0a                	jne    0x405de1
405dd7:	83 c3 14             	add    $0x14,%ebx
405dda:	89 5d 08             	mov    %ebx,0x8(%ebp)
405ddd:	3b d8                	cmp    %eax,%ebx
405ddf:	72 e8                	jb     0x405dc9
405de1:	3b d8                	cmp    %eax,%ebx
405de3:	75 7f                	jne    0x405e64
405de5:	8b 1d 7c 2d de 02    	mov    0x2de2d7c,%ebx
405deb:	eb 11                	jmp    0x405dfe
405ded:	8b 53 04             	mov    0x4(%ebx),%edx
405df0:	8b 3b                	mov    (%ebx),%edi
405df2:	23 55 f8             	and    -0x8(%ebp),%edx
405df5:	23 fe                	and    %esi,%edi
405df7:	0b d7                	or     %edi,%edx
405df9:	75 0a                	jne    0x405e05
405dfb:	83 c3 14             	add    $0x14,%ebx
405dfe:	89 5d 08             	mov    %ebx,0x8(%ebp)
405e01:	3b d9                	cmp    %ecx,%ebx
405e03:	72 e8                	jb     0x405ded
405e05:	3b d9                	cmp    %ecx,%ebx
405e07:	75 5b                	jne    0x405e64
405e09:	eb 0c                	jmp    0x405e17
405e0b:	83 7b 08 00          	cmpl   $0x0,0x8(%ebx)
405e0f:	75 0a                	jne    0x405e1b
405e11:	83 c3 14             	add    $0x14,%ebx
405e14:	89 5d 08             	mov    %ebx,0x8(%ebp)
405e17:	3b d8                	cmp    %eax,%ebx
405e19:	72 f0                	jb     0x405e0b
405e1b:	3b d8                	cmp    %eax,%ebx
405e1d:	75 31                	jne    0x405e50
405e1f:	8b 1d 7c 2d de 02    	mov    0x2de2d7c,%ebx
405e25:	eb 09                	jmp    0x405e30
405e27:	83 7b 08 00          	cmpl   $0x0,0x8(%ebx)
405e2b:	75 0a                	jne    0x405e37
405e2d:	83 c3 14             	add    $0x14,%ebx
405e30:	89 5d 08             	mov    %ebx,0x8(%ebp)
405e33:	3b d9                	cmp    %ecx,%ebx
405e35:	72 f0                	jb     0x405e27
405e37:	3b d9                	cmp    %ecx,%ebx
405e39:	75 15                	jne    0x405e50
405e3b:	e8 a0 fa ff ff       	call   0x4058e0
405e40:	8b d8                	mov    %eax,%ebx
405e42:	89 5d 08             	mov    %ebx,0x8(%ebp)
405e45:	85 db                	test   %ebx,%ebx
405e47:	75 07                	jne    0x405e50
405e49:	33 c0                	xor    %eax,%eax
405e4b:	e9 09 02 00 00       	jmp    0x406059
405e50:	53                   	push   %ebx
405e51:	e8 3a fb ff ff       	call   0x405990
405e56:	59                   	pop    %ecx
405e57:	8b 4b 10             	mov    0x10(%ebx),%ecx
405e5a:	89 01                	mov    %eax,(%ecx)
405e5c:	8b 43 10             	mov    0x10(%ebx),%eax
405e5f:	83 38 ff             	cmpl   $0xffffffff,(%eax)
405e62:	74 e5                	je     0x405e49
405e64:	89 1d 84 2d de 02    	mov    %ebx,0x2de2d84
405e6a:	8b 43 10             	mov    0x10(%ebx),%eax
405e6d:	8b 10                	mov    (%eax),%edx
405e6f:	89 55 fc             	mov    %edx,-0x4(%ebp)
405e72:	83 fa ff             	cmp    $0xffffffff,%edx
405e75:	74 14                	je     0x405e8b
405e77:	8b 8c 90 c4 00 00 00 	mov    0xc4(%eax,%edx,4),%ecx
405e7e:	8b 7c 90 44          	mov    0x44(%eax,%edx,4),%edi
405e82:	23 4d f8             	and    -0x8(%ebp),%ecx
405e85:	23 fe                	and    %esi,%edi
405e87:	0b cf                	or     %edi,%ecx
405e89:	75 29                	jne    0x405eb4
405e8b:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
405e8f:	8b 90 c4 00 00 00    	mov    0xc4(%eax),%edx
405e95:	8d 48 44             	lea    0x44(%eax),%ecx
405e98:	8b 39                	mov    (%ecx),%edi
405e9a:	23 55 f8             	and    -0x8(%ebp),%edx
405e9d:	23 fe                	and    %esi,%edi
405e9f:	0b d7                	or     %edi,%edx
405ea1:	75 0e                	jne    0x405eb1
405ea3:	ff 45 fc             	incl   -0x4(%ebp)
405ea6:	8b 91 84 00 00 00    	mov    0x84(%ecx),%edx
405eac:	83 c1 04             	add    $0x4,%ecx
405eaf:	eb e7                	jmp    0x405e98
405eb1:	8b 55 fc             	mov    -0x4(%ebp),%edx
405eb4:	8b ca                	mov    %edx,%ecx
405eb6:	69 c9 04 02 00 00    	imul   $0x204,%ecx,%ecx
405ebc:	8d 8c 01 44 01 00 00 	lea    0x144(%ecx,%eax,1),%ecx
405ec3:	89 4d f4             	mov    %ecx,-0xc(%ebp)
405ec6:	8b 4c 90 44          	mov    0x44(%eax,%edx,4),%ecx
405eca:	33 ff                	xor    %edi,%edi
405ecc:	23 ce                	and    %esi,%ecx
405ece:	75 12                	jne    0x405ee2
405ed0:	8b 8c 90 c4 00 00 00 	mov    0xc4(%eax,%edx,4),%ecx