40999b:	f6 c2 01             	test   $0x1,%dl
40999e:	75 74                	jne    0x409a14
4099a0:	c1 fa 04             	sar    $0x4,%edx
4099a3:	4a                   	dec    %edx
4099a4:	83 fa 3f             	cmp    $0x3f,%edx
4099a7:	76 03                	jbe    0x4099ac
4099a9:	6a 3f                	push   $0x3f
4099ab:	5a                   	pop    %edx
4099ac:	8b 4b 04             	mov    0x4(%ebx),%ecx
4099af:	3b 4b 08             	cmp    0x8(%ebx),%ecx
4099b2:	75 42                	jne    0x4099f6
4099b4:	bb 00 00 00 80       	mov    $0x80000000,%ebx
4099b9:	83 fa 20             	cmp    $0x20,%edx
4099bc:	73 19                	jae    0x4099d7
4099be:	8b ca                	mov    %edx,%ecx
4099c0:	d3 eb                	shr    %cl,%ebx
4099c2:	8d 4c 02 04          	lea    0x4(%edx,%eax,1),%ecx
4099c6:	f7 d3                	not    %ebx
4099c8:	21 5c b8 44          	and    %ebx,0x44(%eax,%edi,4)
4099cc:	fe 09                	decb   (%ecx)
4099ce:	75 23                	jne    0x4099f3
4099d0:	8b 4d 08             	mov    0x8(%ebp),%ecx
4099d3:	21 19                	and    %ebx,(%ecx)
4099d5:	eb 1c                	jmp    0x4099f3
4099d7:	8d 4a e0             	lea    -0x20(%edx),%ecx
4099da:	d3 eb                	shr    %cl,%ebx
4099dc:	8d 4c 02 04          	lea    0x4(%edx,%eax,1),%ecx
4099e0:	f7 d3                	not    %ebx
4099e2:	21 9c b8 c4 00 00 00 	and    %ebx,0xc4(%eax,%edi,4)
4099e9:	fe 09                	decb   (%ecx)
4099eb:	75 06                	jne    0x4099f3
4099ed:	8b 4d 08             	mov    0x8(%ebp),%ecx
4099f0:	21 59 04             	and    %ebx,0x4(%ecx)
4099f3:	8b 5d 0c             	mov    0xc(%ebp),%ebx
4099f6:	8b 53 08             	mov    0x8(%ebx),%edx
4099f9:	8b 5b 04             	mov    0x4(%ebx),%ebx
4099fc:	8b 4d fc             	mov    -0x4(%ebp),%ecx
4099ff:	03 4d f4             	add    -0xc(%ebp),%ecx
409a02:	89 5a 04             	mov    %ebx,0x4(%edx)
409a05:	8b 55 0c             	mov    0xc(%ebp),%edx
409a08:	8b 5a 04             	mov    0x4(%edx),%ebx
409a0b:	8b 52 08             	mov    0x8(%edx),%edx
409a0e:	89 53 08             	mov    %edx,0x8(%ebx)
409a11:	89 4d fc             	mov    %ecx,-0x4(%ebp)
409a14:	8b d1                	mov    %ecx,%edx
409a16:	c1 fa 04             	sar    $0x4,%edx
409a19:	4a                   	dec    %edx
409a1a:	83 fa 3f             	cmp    $0x3f,%edx
409a1d:	76 03                	jbe    0x409a22
409a1f:	6a 3f                	push   $0x3f
409a21:	5a                   	pop    %edx
409a22:	8b 5d f8             	mov    -0x8(%ebp),%ebx
409a25:	83 e3 01             	and    $0x1,%ebx
409a28:	89 5d f4             	mov    %ebx,-0xc(%ebp)
409a2b:	0f 85 8f 00 00 00    	jne    0x409ac0
409a31:	2b 75 f8             	sub    -0x8(%ebp),%esi
409a34:	8b 5d f8             	mov    -0x8(%ebp),%ebx
409a37:	c1 fb 04             	sar    $0x4,%ebx
409a3a:	6a 3f                	push   $0x3f
409a3c:	89 75 0c             	mov    %esi,0xc(%ebp)
409a3f:	4b                   	dec    %ebx
409a40:	5e                   	pop    %esi
409a41:	3b de                	cmp    %esi,%ebx
409a43:	76 02                	jbe    0x409a47
409a45:	8b de                	mov    %esi,%ebx
409a47:	03 4d f8             	add    -0x8(%ebp),%ecx
409a4a:	8b d1                	mov    %ecx,%edx
409a4c:	c1 fa 04             	sar    $0x4,%edx
409a4f:	4a                   	dec    %edx
409a50:	89 4d fc             	mov    %ecx,-0x4(%ebp)
409a53:	3b d6                	cmp    %esi,%edx
409a55:	76 02                	jbe    0x409a59
409a57:	8b d6                	mov    %esi,%edx
409a59:	3b da                	cmp    %edx,%ebx
409a5b:	74 5e                	je     0x409abb
409a5d:	8b 4d 0c             	mov    0xc(%ebp),%ecx
409a60:	8b 71 04             	mov    0x4(%ecx),%esi
409a63:	3b 71 08             	cmp    0x8(%ecx),%esi
409a66:	75 3b                	jne    0x409aa3
409a68:	be 00 00 00 80       	mov    $0x80000000,%esi
409a6d:	83 fb 20             	cmp    $0x20,%ebx
409a70:	73 17                	jae    0x409a89
409a72:	8b cb                	mov    %ebx,%ecx
409a74:	d3 ee                	shr    %cl,%esi
409a76:	f7 d6                	not    %esi
409a78:	21 74 b8 44          	and    %esi,0x44(%eax,%edi,4)
409a7c:	fe 4c 03 04          	decb   0x4(%ebx,%eax,1)
409a80:	75 21                	jne    0x409aa3
409a82:	8b 4d 08             	mov    0x8(%ebp),%ecx
409a85:	21 31                	and    %esi,(%ecx)
409a87:	eb 1a                	jmp    0x409aa3
409a89:	8d 4b e0             	lea    -0x20(%ebx),%ecx
409a8c:	d3 ee                	shr    %cl,%esi
409a8e:	f7 d6                	not    %esi
409a90:	21 b4 b8 c4 00 00 00 	and    %esi,0xc4(%eax,%edi,4)
409a97:	fe 4c 03 04          	decb   0x4(%ebx,%eax,1)
409a9b:	75 06                	jne    0x409aa3
409a9d:	8b 4d 08             	mov    0x8(%ebp),%ecx
409aa0:	21 71 04             	and    %esi,0x4(%ecx)
409aa3:	8b 4d 0c             	mov    0xc(%ebp),%ecx
409aa6:	8b 71 08             	mov    0x8(%ecx),%esi
409aa9:	8b 49 04             	mov    0x4(%ecx),%ecx
409aac:	89 4e 04             	mov    %ecx,0x4(%esi)
409aaf:	8b 4d 0c             	mov    0xc(%ebp),%ecx
409ab2:	8b 71 04             	mov    0x4(%ecx),%esi
409ab5:	8b 49 08             	mov    0x8(%ecx),%ecx
409ab8:	89 4e 08             	mov    %ecx,0x8(%esi)
409abb:	8b 75 0c             	mov    0xc(%ebp),%esi
409abe:	eb 03                	jmp    0x409ac3
409ac0:	8b 5d 08             	mov    0x8(%ebp),%ebx
409ac3:	83 7d f4 00          	cmpl   $0x0,-0xc(%ebp)
409ac7:	75 08                	jne    0x409ad1
409ac9:	3b da                	cmp    %edx,%ebx
409acb:	0f 84 80 00 00 00    	je     0x409b51
409ad1:	8b 4d f0             	mov    -0x10(%ebp),%ecx
409ad4:	8d 0c d1             	lea    (%ecx,%edx,8),%ecx
409ad7:	8b 59 04             	mov    0x4(%ecx),%ebx
409ada:	89 4e 08             	mov    %ecx,0x8(%esi)
409add:	89 5e 04             	mov    %ebx,0x4(%esi)
409ae0:	89 71 04             	mov    %esi,0x4(%ecx)
409ae3:	8b 4e 04             	mov    0x4(%esi),%ecx
409ae6:	89 71 08             	mov    %esi,0x8(%ecx)
409ae9:	8b 4e 04             	mov    0x4(%esi),%ecx
409aec:	3b 4e 08             	cmp    0x8(%esi),%ecx
409aef:	75 60                	jne    0x409b51
409af1:	8a 4c 02 04          	mov    0x4(%edx,%eax,1),%cl
409af5:	88 4d 0f             	mov    %cl,0xf(%ebp)
409af8:	fe c1                	inc    %cl
409afa:	88 4c 02 04          	mov    %cl,0x4(%edx,%eax,1)
409afe:	83 fa 20             	cmp    $0x20,%edx
409b01:	73 25                	jae    0x409b28
409b03:	80 7d 0f 00          	cmpb   $0x0,0xf(%ebp)
409b07:	75 0e                	jne    0x409b17
409b09:	8b ca                	mov    %edx,%ecx
409b0b:	bb 00 00 00 80       	mov    $0x80000000,%ebx
409b10:	d3 eb                	shr    %cl,%ebx
409b12:	8b 4d 08             	mov    0x8(%ebp),%ecx
409b15:	09 19                	or     %ebx,(%ecx)
409b17:	bb 00 00 00 80       	mov    $0x80000000,%ebx
409b1c:	8b ca                	mov    %edx,%ecx
409b1e:	d3 eb                	shr    %cl,%ebx
409b20:	8d 44 b8 44          	lea    0x44(%eax,%edi,4),%eax
409b24:	09 18                	or     %ebx,(%eax)
409b26:	eb 29                	jmp    0x409b51
409b28:	80 7d 0f 00          	cmpb   $0x0,0xf(%ebp)
409b2c:	75 10                	jne    0x409b3e
409b2e:	8d 4a e0             	lea    -0x20(%edx),%ecx
409b31:	bb 00 00 00 80       	mov    $0x80000000,%ebx
409b36:	d3 eb                	shr    %cl,%ebx
409b38:	8b 4d 08             	mov    0x8(%ebp),%ecx
409b3b:	09 59 04             	or     %ebx,0x4(%ecx)
409b3e:	8d 4a e0             	lea    -0x20(%edx),%ecx
409b41:	ba 00 00 00 80       	mov    $0x80000000,%edx
409b46:	d3 ea                	shr    %cl,%edx
409b48:	8d 84 b8 c4 00 00 00 	lea    0xc4(%eax,%edi,4),%eax
409b4f:	09 10                	or     %edx,(%eax)
409b51:	8b 45 fc             	mov    -0x4(%ebp),%eax
409b54:	89 06                	mov    %eax,(%esi)
409b56:	89 44 30 fc          	mov    %eax,-0x4(%eax,%esi,1)
409b5a:	8b 45 f0             	mov    -0x10(%ebp),%eax
409b5d:	ff 08                	decl   (%eax)
409b5f:	0f 85 f3 00 00 00    	jne    0x409c58
409b65:	a1 60 09 43 00       	mov    0x430960,%eax
409b6a:	85 c0                	test   %eax,%eax
409b6c:	0f 84 d8 00 00 00    	je     0x409c4a
409b72:	8b 0d 9c 23 c7 00    	mov    0xc7239c,%ecx
409b78:	8b 35 dc a0 41 00    	mov    0x41a0dc,%esi
409b7e:	68 00 40 00 00       	push   $0x4000
409b83:	c1 e1 0f             	shl    $0xf,%ecx
409b86:	03 48 0c             	add    0xc(%eax),%ecx
409b89:	bb 00 80 00 00       	mov    $0x8000,%ebx
409b8e:	53                   	push   %ebx
409b8f:	51                   	push   %ecx
409b90:	ff d6                	call   *%esi
409b92:	8b 0d 9c 23 c7 00    	mov    0xc7239c,%ecx
409b98:	a1 60 09 43 00       	mov    0x430960,%eax
409b9d:	ba 00 00 00 80       	mov    $0x80000000,%edx
409ba2:	d3 ea                	shr    %cl,%edx
409ba4:	09 50 08             	or     %edx,0x8(%eax)
409ba7:	a1 60 09 43 00       	mov    0x430960,%eax
409bac:	8b 40 10             	mov    0x10(%eax),%eax
409baf:	8b 0d 9c 23 c7 00    	mov    0xc7239c,%ecx
409bb5:	83 a4 88 c4 00 00 00 	andl   $0x0,0xc4(%eax,%ecx,4)
409bbc:	00
409bbd:	a1 60 09 43 00       	mov    0x430960,%eax
409bc2:	8b 40 10             	mov    0x10(%eax),%eax
409bc5:	fe 48 43             	decb   0x43(%eax)
409bc8:	a1 60 09 43 00       	mov    0x430960,%eax
409bcd:	8b 48 10             	mov    0x10(%eax),%ecx
409bd0:	80 79 43 00          	cmpb   $0x0,0x43(%ecx)
409bd4:	75 09                	jne    0x409bdf
409bd6:	83 60 04 fe          	andl   $0xfffffffe,0x4(%eax)
409bda:	a1 60 09 43 00       	mov    0x430960,%eax
409bdf:	83 78 08 ff          	cmpl   $0xffffffff,0x8(%eax)
409be3:	75 65                	jne    0x409c4a
409be5:	53                   	push   %ebx
409be6:	6a 00                	push   $0x0
409be8:	ff 70 0c             	push   0xc(%eax)
409beb:	ff d6                	call   *%esi
409bed:	a1 60 09 43 00       	mov    0x430960,%eax
409bf2:	ff 70 10             	push   0x10(%eax)
409bf5:	6a 00                	push   $0x0
409bf7:	ff 35 08 08 43 00    	push   0x430808
409bfd:	ff 15 9c a0 41 00    	call   *0x41a09c
409c03:	8b 0d 88 23 c7 00    	mov    0xc72388,%ecx
409c09:	a1 60 09 43 00       	mov    0x430960,%eax
409c0e:	6b c9 14             	imul   $0x14,%ecx,%ecx
409c11:	8b 15 8c 23 c7 00    	mov    0xc7238c,%edx
409c17:	2b c8                	sub    %eax,%ecx
409c19:	8d 4c 11 ec          	lea    -0x14(%ecx,%edx,1),%ecx
409c1d:	51                   	push   %ecx
409c1e:	8d 48 14             	lea    0x14(%eax),%ecx
409c21:	51                   	push   %ecx
409c22:	50                   	push   %eax
409c23:	e8 88 e8 ff ff       	call   0x4084b0
409c28:	8b 45 08             	mov    0x8(%ebp),%eax
409c2b:	83 c4 0c             	add    $0xc,%esp
409c2e:	ff 0d 88 23 c7 00    	decl   0xc72388
409c34:	3b 05 60 09 43 00    	cmp    0x430960,%eax
409c3a:	76 04                	jbe    0x409c40
409c3c:	83 6d 08 14          	subl   $0x14,0x8(%ebp)
409c40:	a1 8c 23 c7 00       	mov    0xc7238c,%eax
409c45:	a3 94 23 c7 00       	mov    %eax,0xc72394
409c4a:	8b 45 08             	mov    0x8(%ebp),%eax
409c4d:	a3 60 09 43 00       	mov    %eax,0x430960
409c52:	89 3d 9c 23 c7 00    	mov    %edi,0xc7239c
409c58:	5b                   	pop    %ebx
409c59:	5f                   	pop    %edi
409c5a:	5e                   	pop    %esi
409c5b:	c9                   	leave
409c5c:	c3                   	ret
409c5d:	a1 98 23 c7 00       	mov    0xc72398,%eax
409c62:	56                   	push   %esi
409c63:	8b 35 88 23 c7 00    	mov    0xc72388,%esi
409c69:	57                   	push   %edi
409c6a:	33 ff                	xor    %edi,%edi
409c6c:	3b f0                	cmp    %eax,%esi
409c6e:	75 34                	jne    0x409ca4
409c70:	83 c0 10             	add    $0x10,%eax
409c73:	6b c0 14             	imul   $0x14,%eax,%eax
409c76:	50                   	push   %eax
409c77:	ff 35 8c 23 c7 00    	push   0xc7238c
409c7d:	57                   	push   %edi
409c7e:	ff 35 08 08 43 00    	push   0x430808
409c84:	ff 15 e4 a0 41 00    	call   *0x41a0e4
409c8a:	3b c7                	cmp    %edi,%eax
409c8c:	75 04                	jne    0x409c92
409c8e:	33 c0                	xor    %eax,%eax
409c90:	eb 78                	jmp    0x409d0a
409c92:	83 05 98 23 c7 00 10 	addl   $0x10,0xc72398
409c99:	8b 35 88 23 c7 00    	mov    0xc72388,%esi
409c9f:	a3 8c 23 c7 00       	mov    %eax,0xc7238c
409ca4:	6b f6 14             	imul   $0x14,%esi,%esi
409ca7:	03 35 8c 23 c7 00    	add    0xc7238c,%esi
409cad:	68 c4 41 00 00       	push   $0x41c4
409cb2:	6a 08                	push   $0x8
409cb4:	ff 35 08 08 43 00    	push   0x430808
409cba:	ff 15 d4 a0 41 00    	call   *0x41a0d4
409cc0:	89 46 10             	mov    %eax,0x10(%esi)
409cc3:	3b c7                	cmp    %edi,%eax
409cc5:	74 c7                	je     0x409c8e
409cc7:	6a 04                	push   $0x4
409cc9:	68 00 20 00 00       	push   $0x2000
409cce:	68 00 00 10 00       	push   $0x100000
409cd3:	57                   	push   %edi
409cd4:	ff 15 e0 a0 41 00    	call   *0x41a0e0
409cda:	89 46 0c             	mov    %eax,0xc(%esi)
409cdd:	3b c7                	cmp    %edi,%eax
409cdf:	75 12                	jne    0x409cf3
409ce1:	ff 76 10             	push   0x10(%esi)
409ce4:	57                   	push   %edi
409ce5:	ff 35 08 08 43 00    	push   0x430808
409ceb:	ff 15 9c a0 41 00    	call   *0x41a09c
409cf1:	eb 9b                	jmp    0x409c8e
409cf3:	83 4e 08 ff          	orl    $0xffffffff,0x8(%esi)
409cf7:	89 3e                	mov    %edi,(%esi)
409cf9:	89 7e 04             	mov    %edi,0x4(%esi)
409cfc:	ff 05 88 23 c7 00    	incl   0xc72388
409d02:	8b 46 10             	mov    0x10(%esi),%eax
409d05:	83 08 ff             	orl    $0xffffffff,(%eax)
409d08:	8b c6                	mov    %esi,%eax
409d0a:	5f                   	pop    %edi
409d0b:	5e                   	pop    %esi
409d0c:	c3                   	ret
409d0d:	8b ff                	mov    %edi,%edi
409d0f:	55                   	push   %ebp
409d10:	8b ec                	mov    %esp,%ebp
409d12:	51                   	push   %ecx
409d13:	51                   	push   %ecx
409d14:	8b 4d 08             	mov    0x8(%ebp),%ecx
409d17:	8b 41 08             	mov    0x8(%ecx),%eax
409d1a:	53                   	push   %ebx
409d1b:	56                   	push   %esi
409d1c:	8b 71 10             	mov    0x10(%ecx),%esi
409d1f:	57                   	push   %edi
409d20:	33 db                	xor    %ebx,%ebx
409d22:	eb 03                	jmp    0x409d27
409d24:	03 c0                	add    %eax,%eax
409d26:	43                   	inc    %ebx
409d27:	85 c0                	test   %eax,%eax
409d29:	7d f9                	jge    0x409d24
409d2b:	8b c3                	mov    %ebx,%eax
409d2d:	69 c0 04 02 00 00    	imul   $0x204,%eax,%eax
409d33:	8d 84 30 44 01 00 00 	lea    0x144(%eax,%esi,1),%eax
409d3a:	6a 3f                	push   $0x3f
409d3c:	89 45 f8             	mov    %eax,-0x8(%ebp)
409d3f:	5a                   	pop    %edx
409d40:	89 40 08             	mov    %eax,0x8(%eax)
409d43:	89 40 04             	mov    %eax,0x4(%eax)
409d46:	83 c0 08             	add    $0x8,%eax
409d49:	4a                   	dec    %edx
409d4a:	75 f4                	jne    0x409d40
409d4c:	6a 04                	push   $0x4
409d4e:	8b fb                	mov    %ebx,%edi
409d50:	68 00 10 00 00       	push   $0x1000
409d55:	c1 e7 0f             	shl    $0xf,%edi
409d58:	03 79 0c             	add    0xc(%ecx),%edi
409d5b:	68 00 80 00 00       	push   $0x8000
409d60:	57                   	push   %edi
409d61:	ff 15 e0 a0 41 00    	call   *0x41a0e0
409d67:	85 c0                	test   %eax,%eax
409d69:	75 08                	jne    0x409d73
409d6b:	83 c8 ff             	or     $0xffffffff,%eax
409d6e:	e9 9d 00 00 00       	jmp    0x409e10
409d73:	8d 97 00 70 00 00    	lea    0x7000(%edi),%edx
409d79:	89 55 fc             	mov    %edx,-0x4(%ebp)
409d7c:	3b fa                	cmp    %edx,%edi
409d7e:	77 43                	ja     0x409dc3
409d80:	8b ca                	mov    %edx,%ecx
409d82:	2b cf                	sub    %edi,%ecx
409d84:	c1 e9 0c             	shr    $0xc,%ecx
409d87:	8d 47 10             	lea    0x10(%edi),%eax
409d8a:	41                   	inc    %ecx
409d8b:	83 48 f8 ff          	orl    $0xffffffff,-0x8(%eax)
409d8f:	83 88 ec 0f 00 00 ff 	orl    $0xffffffff,0xfec(%eax)
409d96:	8d 90 fc 0f 00 00    	lea    0xffc(%eax),%edx
409d9c:	89 10                	mov    %edx,(%eax)
409d9e:	8d 90 fc ef ff ff    	lea    -0x1004(%eax),%edx
409da4:	c7 40 fc f0 0f 00 00 	movl   $0xff0,-0x4(%eax)
409dab:	89 50 04             	mov    %edx,0x4(%eax)
409dae:	c7 80 e8 0f 00 00 f0 	movl   $0xff0,0xfe8(%eax)
409db5:	0f 00 00
409db8:	05 00 10 00 00       	add    $0x1000,%eax
409dbd:	49                   	dec    %ecx
409dbe:	75 cb                	jne    0x409d8b
409dc0:	8b 55 fc             	mov    -0x4(%ebp),%edx
409dc3:	8b 45 f8             	mov    -0x8(%ebp),%eax
409dc6:	05 f8 01 00 00       	add    $0x1f8,%eax
409dcb:	8d 4f 0c             	lea    0xc(%edi),%ecx
409dce:	89 48 04             	mov    %ecx,0x4(%eax)