40ce16:	09 50 08             	or     %edx,0x8(%eax)
40ce19:	a1 b0 de 41 00       	mov    0x41deb0,%eax
40ce1e:	8b 40 10             	mov    0x10(%eax),%eax
40ce21:	8b 0d ec e5 41 00    	mov    0x41e5ec,%ecx
40ce27:	83 a4 88 c4 00 00 00 	andl   $0x0,0xc4(%eax,%ecx,4)
40ce2e:	00
40ce2f:	a1 b0 de 41 00       	mov    0x41deb0,%eax
40ce34:	8b 40 10             	mov    0x10(%eax),%eax
40ce37:	fe 48 43             	decb   0x43(%eax)
40ce3a:	a1 b0 de 41 00       	mov    0x41deb0,%eax
40ce3f:	8b 48 10             	mov    0x10(%eax),%ecx
40ce42:	80 79 43 00          	cmpb   $0x0,0x43(%ecx)
40ce46:	75 09                	jne    0x40ce51
40ce48:	83 60 04 fe          	andl   $0xfffffffe,0x4(%eax)
40ce4c:	a1 b0 de 41 00       	mov    0x41deb0,%eax
40ce51:	83 78 08 ff          	cmpl   $0xffffffff,0x8(%eax)
40ce55:	75 65                	jne    0x40cebc
40ce57:	53                   	push   %ebx
40ce58:	6a 00                	push   $0x0
40ce5a:	ff 70 0c             	push   0xc(%eax)
40ce5d:	ff d6                	call   *%esi
40ce5f:	a1 b0 de 41 00       	mov    0x41deb0,%eax
40ce64:	ff 70 10             	push   0x10(%eax)
40ce67:	6a 00                	push   $0x0
40ce69:	ff 35 5c dd 41 00    	push   0x41dd5c
40ce6f:	ff 15 b4 70 41 00    	call   *0x4170b4
40ce75:	8b 0d d8 e5 41 00    	mov    0x41e5d8,%ecx
40ce7b:	a1 b0 de 41 00       	mov    0x41deb0,%eax
40ce80:	6b c9 14             	imul   $0x14,%ecx,%ecx
40ce83:	8b 15 dc e5 41 00    	mov    0x41e5dc,%edx
40ce89:	2b c8                	sub    %eax,%ecx
40ce8b:	8d 4c 11 ec          	lea    -0x14(%ecx,%edx,1),%ecx
40ce8f:	51                   	push   %ecx
40ce90:	8d 48 14             	lea    0x14(%eax),%ecx
40ce93:	51                   	push   %ecx
40ce94:	50                   	push   %eax
40ce95:	e8 86 e0 ff ff       	call   0x40af20
40ce9a:	8b 45 08             	mov    0x8(%ebp),%eax
40ce9d:	83 c4 0c             	add    $0xc,%esp
40cea0:	ff 0d d8 e5 41 00    	decl   0x41e5d8
40cea6:	3b 05 b0 de 41 00    	cmp    0x41deb0,%eax
40ceac:	76 04                	jbe    0x40ceb2
40ceae:	83 6d 08 14          	subl   $0x14,0x8(%ebp)
40ceb2:	a1 dc e5 41 00       	mov    0x41e5dc,%eax
40ceb7:	a3 e4 e5 41 00       	mov    %eax,0x41e5e4
40cebc:	8b 45 08             	mov    0x8(%ebp),%eax
40cebf:	a3 b0 de 41 00       	mov    %eax,0x41deb0
40cec4:	89 3d ec e5 41 00    	mov    %edi,0x41e5ec
40ceca:	5b                   	pop    %ebx
40cecb:	5f                   	pop    %edi
40cecc:	5e                   	pop    %esi
40cecd:	c9                   	leave
40cece:	c3                   	ret
40cecf:	a1 e8 e5 41 00       	mov    0x41e5e8,%eax
40ced4:	56                   	push   %esi
40ced5:	8b 35 d8 e5 41 00    	mov    0x41e5d8,%esi
40cedb:	57                   	push   %edi
40cedc:	33 ff                	xor    %edi,%edi
40cede:	3b f0                	cmp    %eax,%esi
40cee0:	75 34                	jne    0x40cf16
40cee2:	83 c0 10             	add    $0x10,%eax
40cee5:	6b c0 14             	imul   $0x14,%eax,%eax
40cee8:	50                   	push   %eax
40cee9:	ff 35 dc e5 41 00    	push   0x41e5dc
40ceef:	57                   	push   %edi
40cef0:	ff 35 5c dd 41 00    	push   0x41dd5c
40cef6:	ff 15 18 71 41 00    	call   *0x417118
40cefc:	3b c7                	cmp    %edi,%eax
40cefe:	75 04                	jne    0x40cf04
40cf00:	33 c0                	xor    %eax,%eax
40cf02:	eb 78                	jmp    0x40cf7c
40cf04:	83 05 e8 e5 41 00 10 	addl   $0x10,0x41e5e8
40cf0b:	8b 35 d8 e5 41 00    	mov    0x41e5d8,%esi
40cf11:	a3 dc e5 41 00       	mov    %eax,0x41e5dc
40cf16:	6b f6 14             	imul   $0x14,%esi,%esi
40cf19:	03 35 dc e5 41 00    	add    0x41e5dc,%esi
40cf1f:	68 c4 41 00 00       	push   $0x41c4
40cf24:	6a 08                	push   $0x8
40cf26:	ff 35 5c dd 41 00    	push   0x41dd5c
40cf2c:	ff 15 c0 70 41 00    	call   *0x4170c0
40cf32:	3b c7                	cmp    %edi,%eax
40cf34:	89 46 10             	mov    %eax,0x10(%esi)
40cf37:	74 c7                	je     0x40cf00
40cf39:	6a 04                	push   $0x4
40cf3b:	68 00 20 00 00       	push   $0x2000
40cf40:	68 00 00 10 00       	push   $0x100000
40cf45:	57                   	push   %edi
40cf46:	ff 15 14 71 41 00    	call   *0x417114
40cf4c:	3b c7                	cmp    %edi,%eax
40cf4e:	89 46 0c             	mov    %eax,0xc(%esi)
40cf51:	75 12                	jne    0x40cf65
40cf53:	ff 76 10             	push   0x10(%esi)
40cf56:	57                   	push   %edi
40cf57:	ff 35 5c dd 41 00    	push   0x41dd5c
40cf5d:	ff 15 b4 70 41 00    	call   *0x4170b4
40cf63:	eb 9b                	jmp    0x40cf00
40cf65:	83 4e 08 ff          	orl    $0xffffffff,0x8(%esi)
40cf69:	89 3e                	mov    %edi,(%esi)
40cf6b:	89 7e 04             	mov    %edi,0x4(%esi)
40cf6e:	ff 05 d8 e5 41 00    	incl   0x41e5d8
40cf74:	8b 46 10             	mov    0x10(%esi),%eax
40cf77:	83 08 ff             	orl    $0xffffffff,(%eax)
40cf7a:	8b c6                	mov    %esi,%eax
40cf7c:	5f                   	pop    %edi
40cf7d:	5e                   	pop    %esi
40cf7e:	c3                   	ret
40cf7f:	55                   	push   %ebp
40cf80:	8b ec                	mov    %esp,%ebp
40cf82:	51                   	push   %ecx
40cf83:	51                   	push   %ecx
40cf84:	8b 4d 08             	mov    0x8(%ebp),%ecx
40cf87:	8b 41 08             	mov    0x8(%ecx),%eax
40cf8a:	53                   	push   %ebx
40cf8b:	56                   	push   %esi
40cf8c:	8b 71 10             	mov    0x10(%ecx),%esi
40cf8f:	57                   	push   %edi
40cf90:	33 db                	xor    %ebx,%ebx
40cf92:	eb 03                	jmp    0x40cf97
40cf94:	03 c0                	add    %eax,%eax
40cf96:	43                   	inc    %ebx
40cf97:	85 c0                	test   %eax,%eax
40cf99:	7d f9                	jge    0x40cf94
40cf9b:	8b c3                	mov    %ebx,%eax
40cf9d:	69 c0 04 02 00 00    	imul   $0x204,%eax,%eax
40cfa3:	8d 84 30 44 01 00 00 	lea    0x144(%eax,%esi,1),%eax
40cfaa:	6a 3f                	push   $0x3f
40cfac:	89 45 f8             	mov    %eax,-0x8(%ebp)
40cfaf:	5a                   	pop    %edx
40cfb0:	89 40 08             	mov    %eax,0x8(%eax)
40cfb3:	89 40 04             	mov    %eax,0x4(%eax)
40cfb6:	83 c0 08             	add    $0x8,%eax
40cfb9:	4a                   	dec    %edx
40cfba:	75 f4                	jne    0x40cfb0
40cfbc:	6a 04                	push   $0x4
40cfbe:	8b fb                	mov    %ebx,%edi
40cfc0:	68 00 10 00 00       	push   $0x1000
40cfc5:	c1 e7 0f             	shl    $0xf,%edi
40cfc8:	03 79 0c             	add    0xc(%ecx),%edi
40cfcb:	68 00 80 00 00       	push   $0x8000
40cfd0:	57                   	push   %edi
40cfd1:	ff 15 14 71 41 00    	call   *0x417114
40cfd7:	85 c0                	test   %eax,%eax
40cfd9:	75 08                	jne    0x40cfe3
40cfdb:	83 c8 ff             	or     $0xffffffff,%eax
40cfde:	e9 9d 00 00 00       	jmp    0x40d080
40cfe3:	8d 97 00 70 00 00    	lea    0x7000(%edi),%edx
40cfe9:	3b fa                	cmp    %edx,%edi
40cfeb:	89 55 fc             	mov    %edx,-0x4(%ebp)
40cfee:	77 43                	ja     0x40d033
40cff0:	8b ca                	mov    %edx,%ecx
40cff2:	2b cf                	sub    %edi,%ecx
40cff4:	c1 e9 0c             	shr    $0xc,%ecx
40cff7:	8d 47 10             	lea    0x10(%edi),%eax
40cffa:	41                   	inc    %ecx
40cffb:	83 48 f8 ff          	orl    $0xffffffff,-0x8(%eax)
40cfff:	83 88 ec 0f 00 00 ff 	orl    $0xffffffff,0xfec(%eax)
40d006:	8d 90 fc 0f 00 00    	lea    0xffc(%eax),%edx
40d00c:	89 10                	mov    %edx,(%eax)
40d00e:	8d 90 fc ef ff ff    	lea    -0x1004(%eax),%edx
40d014:	c7 40 fc f0 0f 00 00 	movl   $0xff0,-0x4(%eax)
40d01b:	89 50 04             	mov    %edx,0x4(%eax)
40d01e:	c7 80 e8 0f 00 00 f0 	movl   $0xff0,0xfe8(%eax)
40d025:	0f 00 00
40d028:	05 00 10 00 00       	add    $0x1000,%eax
40d02d:	49                   	dec    %ecx
40d02e:	75 cb                	jne    0x40cffb
40d030:	8b 55 fc             	mov    -0x4(%ebp),%edx
40d033:	8b 45 f8             	mov    -0x8(%ebp),%eax
40d036:	05 f8 01 00 00       	add    $0x1f8,%eax
40d03b:	8d 4f 0c             	lea    0xc(%edi),%ecx
40d03e:	89 48 04             	mov    %ecx,0x4(%eax)
40d041:	89 41 08             	mov    %eax,0x8(%ecx)
40d044:	8d 4a 0c             	lea    0xc(%edx),%ecx
40d047:	89 48 08             	mov    %ecx,0x8(%eax)
40d04a:	89 41 04             	mov    %eax,0x4(%ecx)
40d04d:	83 64 9e 44 00       	andl   $0x0,0x44(%esi,%ebx,4)
40d052:	33 ff                	xor    %edi,%edi
40d054:	47                   	inc    %edi
40d055:	89 bc 9e c4 00 00 00 	mov    %edi,0xc4(%esi,%ebx,4)
40d05c:	8a 46 43             	mov    0x43(%esi),%al
40d05f:	8a c8                	mov    %al,%cl
40d061:	fe c1                	inc    %cl
40d063:	84 c0                	test   %al,%al
40d065:	8b 45 08             	mov    0x8(%ebp),%eax
40d068:	88 4e 43             	mov    %cl,0x43(%esi)
40d06b:	75 03                	jne    0x40d070
40d06d:	09 78 04             	or     %edi,0x4(%eax)
40d070:	ba 00 00 00 80       	mov    $0x80000000,%edx
40d075:	8b cb                	mov    %ebx,%ecx
40d077:	d3 ea                	shr    %cl,%edx
40d079:	f7 d2                	not    %edx
40d07b:	21 50 08             	and    %edx,0x8(%eax)
40d07e:	8b c3                	mov    %ebx,%eax
40d080:	5f                   	pop    %edi
40d081:	5e                   	pop    %esi
40d082:	5b                   	pop    %ebx
40d083:	c9                   	leave
40d084:	c3                   	ret
40d085:	55                   	push   %ebp
40d086:	8b ec                	mov    %esp,%ebp
40d088:	83 ec 0c             	sub    $0xc,%esp
40d08b:	8b 4d 08             	mov    0x8(%ebp),%ecx
40d08e:	8b 41 10             	mov    0x10(%ecx),%eax
40d091:	53                   	push   %ebx
40d092:	56                   	push   %esi
40d093:	8b 75 10             	mov    0x10(%ebp),%esi
40d096:	57                   	push   %edi
40d097:	8b 7d 0c             	mov    0xc(%ebp),%edi
40d09a:	8b d7                	mov    %edi,%edx
40d09c:	2b 51 0c             	sub    0xc(%ecx),%edx
40d09f:	83 c6 17             	add    $0x17,%esi
40d0a2:	c1 ea 0f             	shr    $0xf,%edx
40d0a5:	8b ca                	mov    %edx,%ecx
40d0a7:	69 c9 04 02 00 00    	imul   $0x204,%ecx,%ecx
40d0ad:	8d 8c 01 44 01 00 00 	lea    0x144(%ecx,%eax,1),%ecx
40d0b4:	89 4d f4             	mov    %ecx,-0xc(%ebp)
40d0b7:	8b 4f fc             	mov    -0x4(%edi),%ecx
40d0ba:	83 e6 f0             	and    $0xfffffff0,%esi
40d0bd:	49                   	dec    %ecx
40d0be:	3b f1                	cmp    %ecx,%esi
40d0c0:	8d 7c 39 fc          	lea    -0x4(%ecx,%edi,1),%edi
40d0c4:	8b 1f                	mov    (%edi),%ebx
40d0c6:	89 4d 10             	mov    %ecx,0x10(%ebp)
40d0c9:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40d0cc:	0f 8e 55 01 00 00    	jle    0x40d227
40d0d2:	f6 c3 01             	test   $0x1,%bl
40d0d5:	0f 85 45 01 00 00    	jne    0x40d220
40d0db:	03 d9                	add    %ecx,%ebx
40d0dd:	3b f3                	cmp    %ebx,%esi
40d0df:	0f 8f 3b 01 00 00    	jg     0x40d220
40d0e5:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40d0e8:	c1 f9 04             	sar    $0x4,%ecx
40d0eb:	49                   	dec    %ecx
40d0ec:	83 f9 3f             	cmp    $0x3f,%ecx
40d0ef:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40d0f2:	76 06                	jbe    0x40d0fa
40d0f4:	6a 3f                	push   $0x3f
40d0f6:	59                   	pop    %ecx
40d0f7:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40d0fa:	8b 5f 04             	mov    0x4(%edi),%ebx
40d0fd:	3b 5f 08             	cmp    0x8(%edi),%ebx
40d100:	75 43                	jne    0x40d145
40d102:	83 f9 20             	cmp    $0x20,%ecx
40d105:	bb 00 00 00 80       	mov    $0x80000000,%ebx
40d10a:	73 1a                	jae    0x40d126
40d10c:	d3 eb                	shr    %cl,%ebx
40d10e:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40d111:	8d 4c 01 04          	lea    0x4(%ecx,%eax,1),%ecx
40d115:	f7 d3                	not    %ebx
40d117:	21 5c 90 44          	and    %ebx,0x44(%eax,%edx,4)
40d11b:	fe 09                	decb   (%ecx)
40d11d:	75 26                	jne    0x40d145
40d11f:	8b 4d 08             	mov    0x8(%ebp),%ecx
40d122:	21 19                	and    %ebx,(%ecx)
40d124:	eb 1f                	jmp    0x40d145
40d126:	83 c1 e0             	add    $0xffffffe0,%ecx
40d129:	d3 eb                	shr    %cl,%ebx
40d12b:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40d12e:	8d 4c 01 04          	lea    0x4(%ecx,%eax,1),%ecx
40d132:	f7 d3                	not    %ebx
40d134:	21 9c 90 c4 00 00 00 	and    %ebx,0xc4(%eax,%edx,4)
40d13b:	fe 09                	decb   (%ecx)
40d13d:	75 06                	jne    0x40d145
40d13f:	8b 4d 08             	mov    0x8(%ebp),%ecx
40d142:	21 59 04             	and    %ebx,0x4(%ecx)
40d145:	8b 4f 08             	mov    0x8(%edi),%ecx
40d148:	8b 5f 04             	mov    0x4(%edi),%ebx
40d14b:	89 59 04             	mov    %ebx,0x4(%ecx)
40d14e:	8b 4f 04             	mov    0x4(%edi),%ecx
40d151:	8b 7f 08             	mov    0x8(%edi),%edi
40d154:	89 79 08             	mov    %edi,0x8(%ecx)
40d157:	8b 4d 10             	mov    0x10(%ebp),%ecx
40d15a:	2b ce                	sub    %esi,%ecx
40d15c:	01 4d fc             	add    %ecx,-0x4(%ebp)
40d15f:	83 7d fc 00          	cmpl   $0x0,-0x4(%ebp)
40d163:	0f 8e a5 00 00 00    	jle    0x40d20e
40d169:	8b 7d fc             	mov    -0x4(%ebp),%edi
40d16c:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40d16f:	c1 ff 04             	sar    $0x4,%edi
40d172:	4f                   	dec    %edi
40d173:	83 ff 3f             	cmp    $0x3f,%edi
40d176:	8d 4c 31 fc          	lea    -0x4(%ecx,%esi,1),%ecx
40d17a:	76 03                	jbe    0x40d17f
40d17c:	6a 3f                	push   $0x3f
40d17e:	5f                   	pop    %edi
40d17f:	8b 5d f4             	mov    -0xc(%ebp),%ebx
40d182:	8d 1c fb             	lea    (%ebx,%edi,8),%ebx
40d185:	89 5d 10             	mov    %ebx,0x10(%ebp)
40d188:	8b 5b 04             	mov    0x4(%ebx),%ebx
40d18b:	89 59 04             	mov    %ebx,0x4(%ecx)
40d18e:	8b 5d 10             	mov    0x10(%ebp),%ebx
40d191:	89 59 08             	mov    %ebx,0x8(%ecx)
40d194:	89 4b 04             	mov    %ecx,0x4(%ebx)
40d197:	8b 59 04             	mov    0x4(%ecx),%ebx
40d19a:	89 4b 08             	mov    %ecx,0x8(%ebx)
40d19d:	8b 59 04             	mov    0x4(%ecx),%ebx
40d1a0:	3b 59 08             	cmp    0x8(%ecx),%ebx
40d1a3:	75 57                	jne    0x40d1fc
40d1a5:	8a 4c 07 04          	mov    0x4(%edi,%eax,1),%cl
40d1a9:	88 4d 13             	mov    %cl,0x13(%ebp)
40d1ac:	fe c1                	inc    %cl
40d1ae:	83 ff 20             	cmp    $0x20,%edi
40d1b1:	88 4c 07 04          	mov    %cl,0x4(%edi,%eax,1)
40d1b5:	73 1c                	jae    0x40d1d3
40d1b7:	80 7d 13 00          	cmpb   $0x0,0x13(%ebp)
40d1bb:	75 0e                	jne    0x40d1cb
40d1bd:	8b cf                	mov    %edi,%ecx
40d1bf:	bb 00 00 00 80       	mov    $0x80000000,%ebx
40d1c4:	d3 eb                	shr    %cl,%ebx
40d1c6:	8b 4d 08             	mov    0x8(%ebp),%ecx
40d1c9:	09 19                	or     %ebx,(%ecx)
40d1cb:	8d 44 90 44          	lea    0x44(%eax,%edx,4),%eax
40d1cf:	8b cf                	mov    %edi,%ecx
40d1d1:	eb 20                	jmp    0x40d1f3
40d1d3:	80 7d 13 00          	cmpb   $0x0,0x13(%ebp)
40d1d7:	75 10                	jne    0x40d1e9
40d1d9:	8d 4f e0             	lea    -0x20(%edi),%ecx
40d1dc:	bb 00 00 00 80       	mov    $0x80000000,%ebx
40d1e1:	d3 eb                	shr    %cl,%ebx
40d1e3:	8b 4d 08             	mov    0x8(%ebp),%ecx
40d1e6:	09 59 04             	or     %ebx,0x4(%ecx)
40d1e9:	8d 84 90 c4 00 00 00 	lea    0xc4(%eax,%edx,4),%eax
40d1f0:	8d 4f e0             	lea    -0x20(%edi),%ecx
40d1f3:	ba 00 00 00 80       	mov    $0x80000000,%edx
40d1f8:	d3 ea                	shr    %cl,%edx
40d1fa:	09 10                	or     %edx,(%eax)
40d1fc:	8b 55 0c             	mov    0xc(%ebp),%edx
40d1ff:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40d202:	8d 44 32 fc          	lea    -0x4(%edx,%esi,1),%eax
40d206:	89 08                	mov    %ecx,(%eax)
40d208:	89 4c 01 fc          	mov    %ecx,-0x4(%ecx,%eax,1)
40d20c:	eb 03                	jmp    0x40d211
40d20e:	8b 55 0c             	mov    0xc(%ebp),%edx
40d211:	8d 46 01             	lea    0x1(%esi),%eax
40d214:	89 42 fc             	mov    %eax,-0x4(%edx)
40d217:	89 44 32 f8          	mov    %eax,-0x8(%edx,%esi,1)
40d21b:	e9 3c 01 00 00       	jmp    0x40d35c
40d220:	33 c0                	xor    %eax,%eax
40d222:	e9 38 01 00 00       	jmp    0x40d35f
40d227:	0f 8d 2f 01 00 00    	jge    0x40d35c
40d22d:	8b 5d 0c             	mov    0xc(%ebp),%ebx
40d230:	29 75 10             	sub    %esi,0x10(%ebp)
40d233:	8d 4e 01             	lea    0x1(%esi),%ecx
40d236:	89 4b fc             	mov    %ecx,-0x4(%ebx)
40d239:	8d 5c 33 fc          	lea    -0x4(%ebx,%esi,1),%ebx
40d23d:	8b 75 10             	mov    0x10(%ebp),%esi
40d240:	c1 fe 04             	sar    $0x4,%esi
40d243:	4e                   	dec    %esi
40d244:	83 fe 3f             	cmp    $0x3f,%esi
40d247:	89 5d 0c             	mov    %ebx,0xc(%ebp)