4058e5:	56                   	push   %esi
4058e6:	8b 35 78 2d de 02    	mov    0x2de2d78,%esi
4058ec:	57                   	push   %edi
4058ed:	33 ff                	xor    %edi,%edi
4058ef:	3b f0                	cmp    %eax,%esi
4058f1:	75 34                	jne    0x405927
4058f3:	83 c0 10             	add    $0x10,%eax
4058f6:	6b c0 14             	imul   $0x14,%eax,%eax
4058f9:	50                   	push   %eax
4058fa:	ff 35 7c 2d de 02    	push   0x2de2d7c
405900:	57                   	push   %edi
405901:	ff 35 24 0e 43 00    	push   0x430e24
405907:	ff 15 08 d1 41 00    	call   *0x41d108
40590d:	3b c7                	cmp    %edi,%eax
40590f:	75 04                	jne    0x405915
405911:	33 c0                	xor    %eax,%eax
405913:	eb 78                	jmp    0x40598d
405915:	83 05 88 2d de 02 10 	addl   $0x10,0x2de2d88
40591c:	8b 35 78 2d de 02    	mov    0x2de2d78,%esi
405922:	a3 7c 2d de 02       	mov    %eax,0x2de2d7c
405927:	6b f6 14             	imul   $0x14,%esi,%esi
40592a:	03 35 7c 2d de 02    	add    0x2de2d7c,%esi
405930:	68 c4 41 00 00       	push   $0x41c4
405935:	6a 08                	push   $0x8
405937:	ff 35 24 0e 43 00    	push   0x430e24
40593d:	ff 15 50 d0 41 00    	call   *0x41d050
405943:	89 46 10             	mov    %eax,0x10(%esi)
405946:	3b c7                	cmp    %edi,%eax
405948:	74 c7                	je     0x405911
40594a:	6a 04                	push   $0x4
40594c:	68 00 20 00 00       	push   $0x2000
405951:	68 00 00 10 00       	push   $0x100000
405956:	57                   	push   %edi
405957:	ff 15 04 d1 41 00    	call   *0x41d104
40595d:	89 46 0c             	mov    %eax,0xc(%esi)
405960:	3b c7                	cmp    %edi,%eax
405962:	75 12                	jne    0x405976
405964:	ff 76 10             	push   0x10(%esi)
405967:	57                   	push   %edi
405968:	ff 35 24 0e 43 00    	push   0x430e24
40596e:	ff 15 d0 d0 41 00    	call   *0x41d0d0
405974:	eb 9b                	jmp    0x405911
405976:	83 4e 08 ff          	orl    $0xffffffff,0x8(%esi)
40597a:	89 3e                	mov    %edi,(%esi)
40597c:	89 7e 04             	mov    %edi,0x4(%esi)
40597f:	ff 05 78 2d de 02    	incl   0x2de2d78
405985:	8b 46 10             	mov    0x10(%esi),%eax
405988:	83 08 ff             	orl    $0xffffffff,(%eax)
40598b:	8b c6                	mov    %esi,%eax
40598d:	5f                   	pop    %edi
40598e:	5e                   	pop    %esi
40598f:	c3                   	ret
405990:	8b ff                	mov    %edi,%edi
405992:	55                   	push   %ebp
405993:	8b ec                	mov    %esp,%ebp
405995:	51                   	push   %ecx
405996:	51                   	push   %ecx
405997:	8b 4d 08             	mov    0x8(%ebp),%ecx
40599a:	8b 41 08             	mov    0x8(%ecx),%eax
40599d:	53                   	push   %ebx
40599e:	56                   	push   %esi
40599f:	8b 71 10             	mov    0x10(%ecx),%esi
4059a2:	57                   	push   %edi
4059a3:	33 db                	xor    %ebx,%ebx
4059a5:	eb 03                	jmp    0x4059aa
4059a7:	03 c0                	add    %eax,%eax
4059a9:	43                   	inc    %ebx
4059aa:	85 c0                	test   %eax,%eax
4059ac:	7d f9                	jge    0x4059a7
4059ae:	8b c3                	mov    %ebx,%eax
4059b0:	69 c0 04 02 00 00    	imul   $0x204,%eax,%eax
4059b6:	8d 84 30 44 01 00 00 	lea    0x144(%eax,%esi,1),%eax
4059bd:	6a 3f                	push   $0x3f
4059bf:	89 45 f8             	mov    %eax,-0x8(%ebp)
4059c2:	5a                   	pop    %edx
4059c3:	89 40 08             	mov    %eax,0x8(%eax)
4059c6:	89 40 04             	mov    %eax,0x4(%eax)
4059c9:	83 c0 08             	add    $0x8,%eax
4059cc:	4a                   	dec    %edx
4059cd:	75 f4                	jne    0x4059c3
4059cf:	6a 04                	push   $0x4
4059d1:	8b fb                	mov    %ebx,%edi
4059d3:	68 00 10 00 00       	push   $0x1000
4059d8:	c1 e7 0f             	shl    $0xf,%edi
4059db:	03 79 0c             	add    0xc(%ecx),%edi
4059de:	68 00 80 00 00       	push   $0x8000
4059e3:	57                   	push   %edi
4059e4:	ff 15 04 d1 41 00    	call   *0x41d104
4059ea:	85 c0                	test   %eax,%eax
4059ec:	75 08                	jne    0x4059f6
4059ee:	83 c8 ff             	or     $0xffffffff,%eax
4059f1:	e9 9d 00 00 00       	jmp    0x405a93
4059f6:	8d 97 00 70 00 00    	lea    0x7000(%edi),%edx
4059fc:	89 55 fc             	mov    %edx,-0x4(%ebp)
4059ff:	3b fa                	cmp    %edx,%edi
405a01:	77 43                	ja     0x405a46
405a03:	8b ca                	mov    %edx,%ecx
405a05:	2b cf                	sub    %edi,%ecx
405a07:	c1 e9 0c             	shr    $0xc,%ecx
405a0a:	8d 47 10             	lea    0x10(%edi),%eax
405a0d:	41                   	inc    %ecx
405a0e:	83 48 f8 ff          	orl    $0xffffffff,-0x8(%eax)
405a12:	83 88 ec 0f 00 00 ff 	orl    $0xffffffff,0xfec(%eax)
405a19:	8d 90 fc 0f 00 00    	lea    0xffc(%eax),%edx
405a1f:	89 10                	mov    %edx,(%eax)
405a21:	8d 90 fc ef ff ff    	lea    -0x1004(%eax),%edx
405a27:	c7 40 fc f0 0f 00 00 	movl   $0xff0,-0x4(%eax)
405a2e:	89 50 04             	mov    %edx,0x4(%eax)
405a31:	c7 80 e8 0f 00 00 f0 	movl   $0xff0,0xfe8(%eax)
405a38:	0f 00 00
405a3b:	05 00 10 00 00       	add    $0x1000,%eax
405a40:	49                   	dec    %ecx
405a41:	75 cb                	jne    0x405a0e
405a43:	8b 55 fc             	mov    -0x4(%ebp),%edx
405a46:	8b 45 f8             	mov    -0x8(%ebp),%eax
405a49:	05 f8 01 00 00       	add    $0x1f8,%eax
405a4e:	8d 4f 0c             	lea    0xc(%edi),%ecx
405a51:	89 48 04             	mov    %ecx,0x4(%eax)
405a54:	89 41 08             	mov    %eax,0x8(%ecx)
405a57:	8d 4a 0c             	lea    0xc(%edx),%ecx
405a5a:	89 48 08             	mov    %ecx,0x8(%eax)
405a5d:	89 41 04             	mov    %eax,0x4(%ecx)
405a60:	83 64 9e 44 00       	andl   $0x0,0x44(%esi,%ebx,4)
405a65:	33 ff                	xor    %edi,%edi
405a67:	47                   	inc    %edi
405a68:	89 bc 9e c4 00 00 00 	mov    %edi,0xc4(%esi,%ebx,4)
405a6f:	8a 46 43             	mov    0x43(%esi),%al
405a72:	8a c8                	mov    %al,%cl
405a74:	fe c1                	inc    %cl
405a76:	84 c0                	test   %al,%al
405a78:	8b 45 08             	mov    0x8(%ebp),%eax
405a7b:	88 4e 43             	mov    %cl,0x43(%esi)
405a7e:	75 03                	jne    0x405a83
405a80:	09 78 04             	or     %edi,0x4(%eax)
405a83:	ba 00 00 00 80       	mov    $0x80000000,%edx
405a88:	8b cb                	mov    %ebx,%ecx
405a8a:	d3 ea                	shr    %cl,%edx
405a8c:	f7 d2                	not    %edx
405a8e:	21 50 08             	and    %edx,0x8(%eax)
405a91:	8b c3                	mov    %ebx,%eax
405a93:	5f                   	pop    %edi
405a94:	5e                   	pop    %esi
405a95:	5b                   	pop    %ebx
405a96:	c9                   	leave
405a97:	c3                   	ret
405a98:	8b ff                	mov    %edi,%edi
405a9a:	55                   	push   %ebp
405a9b:	8b ec                	mov    %esp,%ebp
405a9d:	83 ec 0c             	sub    $0xc,%esp
405aa0:	8b 4d 08             	mov    0x8(%ebp),%ecx
405aa3:	8b 41 10             	mov    0x10(%ecx),%eax
405aa6:	53                   	push   %ebx
405aa7:	56                   	push   %esi
405aa8:	8b 75 10             	mov    0x10(%ebp),%esi
405aab:	57                   	push   %edi
405aac:	8b 7d 0c             	mov    0xc(%ebp),%edi
405aaf:	8b d7                	mov    %edi,%edx
405ab1:	2b 51 0c             	sub    0xc(%ecx),%edx
405ab4:	83 c6 17             	add    $0x17,%esi
405ab7:	c1 ea 0f             	shr    $0xf,%edx
405aba:	8b ca                	mov    %edx,%ecx
405abc:	69 c9 04 02 00 00    	imul   $0x204,%ecx,%ecx
405ac2:	8d 8c 01 44 01 00 00 	lea    0x144(%ecx,%eax,1),%ecx
405ac9:	89 4d f4             	mov    %ecx,-0xc(%ebp)
405acc:	8b 4f fc             	mov    -0x4(%edi),%ecx
405acf:	83 e6 f0             	and    $0xfffffff0,%esi
405ad2:	49                   	dec    %ecx
405ad3:	3b f1                	cmp    %ecx,%esi
405ad5:	8d 7c 39 fc          	lea    -0x4(%ecx,%edi,1),%edi
405ad9:	8b 1f                	mov    (%edi),%ebx
405adb:	89 4d 10             	mov    %ecx,0x10(%ebp)
405ade:	89 5d fc             	mov    %ebx,-0x4(%ebp)
405ae1:	0f 8e 55 01 00 00    	jle    0x405c3c
405ae7:	f6 c3 01             	test   $0x1,%bl
405aea:	0f 85 45 01 00 00    	jne    0x405c35
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