40d0fa:	0f 43 d8             	cmovae %eax,%ebx
40d0fd:	81 fb aa aa aa 0a    	cmp    $0xaaaaaaa,%ebx
40d103:	0f 87 1f 01 00 00    	ja     0x40d228
40d109:	8d 04 5b             	lea    (%ebx,%ebx,2),%eax
40d10c:	89 5d ec             	mov    %ebx,-0x14(%ebp)
40d10f:	c1 e0 03             	shl    $0x3,%eax
40d112:	89 45 d4             	mov    %eax,-0x2c(%ebp)
40d115:	3d 00 10 00 00       	cmp    $0x1000,%eax
40d11a:	72 27                	jb     0x40d143
40d11c:	8d 48 23             	lea    0x23(%eax),%ecx
40d11f:	3b c8                	cmp    %eax,%ecx
40d121:	0f 86 01 01 00 00    	jbe    0x40d228
40d127:	51                   	push   %ecx
40d128:	e8 b1 e7 00 00       	call   0x41b8de
40d12d:	83 c4 04             	add    $0x4,%esp
40d130:	85 c0                	test   %eax,%eax
40d132:	0f 84 fa 00 00 00    	je     0x40d232
40d138:	8d 70 23             	lea    0x23(%eax),%esi
40d13b:	83 e6 e0             	and    $0xffffffe0,%esi
40d13e:	89 46 fc             	mov    %eax,-0x4(%esi)
40d141:	eb 16                	jmp    0x40d159
40d143:	85 c0                	test   %eax,%eax
40d145:	74 0d                	je     0x40d154
40d147:	50                   	push   %eax
40d148:	e8 91 e7 00 00       	call   0x41b8de
40d14d:	83 c4 04             	add    $0x4,%esp
40d150:	8b f0                	mov    %eax,%esi
40d152:	eb 02                	jmp    0x40d156
40d154:	33 f6                	xor    %esi,%esi
40d156:	89 5d ec             	mov    %ebx,-0x14(%ebp)
40d159:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40d15c:	ff 75 dc             	push   -0x24(%ebp)
40d15f:	89 75 e8             	mov    %esi,-0x18(%ebp)
40d162:	c7 45 fc 00 00 00 00 	movl   $0x0,-0x4(%ebp)
40d169:	8d 04 40             	lea    (%eax,%eax,2),%eax
40d16c:	8d 04 c6             	lea    (%esi,%eax,8),%eax
40d16f:	8d 58 18             	lea    0x18(%eax),%ebx
40d172:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40d175:	8b c8                	mov    %eax,%ecx
40d177:	89 5d d0             	mov    %ebx,-0x30(%ebp)
40d17a:	e8 41 51 ff ff       	call   0x4022c0
40d17f:	8b 0f                	mov    (%edi),%ecx
40d181:	8b 57 04             	mov    0x4(%edi),%edx
40d184:	8b 45 e0             	mov    -0x20(%ebp),%eax
40d187:	51                   	push   %ecx
40d188:	56                   	push   %esi
40d189:	3b c2                	cmp    %edx,%eax
40d18b:	74 11                	je     0x40d19e
40d18d:	8b d0                	mov    %eax,%edx
40d18f:	e8 3c 05 00 00       	call   0x40d6d0
40d194:	8b 57 04             	mov    0x4(%edi),%edx
40d197:	83 c4 04             	add    $0x4,%esp
40d19a:	8b 4d e0             	mov    -0x20(%ebp),%ecx
40d19d:	53                   	push   %ebx
40d19e:	e8 2d 05 00 00       	call   0x40d6d0
40d1a3:	8b 0f                	mov    (%edi),%ecx
40d1a5:	83 c4 08             	add    $0x8,%esp
40d1a8:	85 c9                	test   %ecx,%ecx
40d1aa:	74 4e                	je     0x40d1fa
40d1ac:	8b 57 04             	mov    0x4(%edi),%edx
40d1af:	51                   	push   %ecx
40d1b0:	e8 0b f1 ff ff       	call   0x40c2c0
40d1b5:	8b 4f 08             	mov    0x8(%edi),%ecx
40d1b8:	b8 ab aa aa 2a       	mov    $0x2aaaaaab,%eax
40d1bd:	8b 1f                	mov    (%edi),%ebx
40d1bf:	83 c4 04             	add    $0x4,%esp
40d1c2:	2b cb                	sub    %ebx,%ecx
40d1c4:	f7 e9                	imul   %ecx
40d1c6:	c1 fa 02             	sar    $0x2,%edx
40d1c9:	8b c2                	mov    %edx,%eax
40d1cb:	c1 e8 1f             	shr    $0x1f,%eax
40d1ce:	03 c2                	add    %edx,%eax
40d1d0:	8d 0c 40             	lea    (%eax,%eax,2),%ecx
40d1d3:	c1 e1 03             	shl    $0x3,%ecx
40d1d6:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
40d1dc:	72 12                	jb     0x40d1f0
40d1de:	8b 53 fc             	mov    -0x4(%ebx),%edx
40d1e1:	83 c1 23             	add    $0x23,%ecx
40d1e4:	2b da                	sub    %edx,%ebx
40d1e6:	8d 43 fc             	lea    -0x4(%ebx),%eax
40d1e9:	83 f8 1f             	cmp    $0x1f,%eax
40d1ec:	77 44                	ja     0x40d232
40d1ee:	8b da                	mov    %edx,%ebx
40d1f0:	51                   	push   %ecx
40d1f1:	53                   	push   %ebx
40d1f2:	e8 17 e7 00 00       	call   0x41b90e
40d1f7:	83 c4 08             	add    $0x8,%esp
40d1fa:	8b 45 d8             	mov    -0x28(%ebp),%eax
40d1fd:	40                   	inc    %eax
40d1fe:	89 37                	mov    %esi,(%edi)
40d200:	8d 0c 40             	lea    (%eax,%eax,2),%ecx
40d203:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40d206:	8d 0c ce             	lea    (%esi,%ecx,8),%ecx
40d209:	89 4f 04             	mov    %ecx,0x4(%edi)
40d20c:	8b 4d d4             	mov    -0x2c(%ebp),%ecx
40d20f:	03 ce                	add    %esi,%ecx
40d211:	89 4f 08             	mov    %ecx,0x8(%edi)
40d214:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40d217:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40d21e:	59                   	pop    %ecx
40d21f:	5f                   	pop    %edi
40d220:	5e                   	pop    %esi
40d221:	5b                   	pop    %ebx
40d222:	8b e5                	mov    %ebp,%esp
40d224:	5d                   	pop    %ebp
40d225:	c2 08 00             	ret    $0x8
40d228:	e8 d3 3f ff ff       	call   0x401200
40d22d:	e8 9e 69 ff ff       	call   0x403bd0
40d232:	e8 48 38 01 00       	call   0x420a7f
40d237:	51                   	push   %ecx
40d238:	8b 4d d0             	mov    -0x30(%ebp),%ecx
40d23b:	8b d1                	mov    %ecx,%edx
40d23d:	e8 7e f0 ff ff       	call   0x40c2c0
40d242:	83 c4 04             	add    $0x4,%esp
40d245:	ff 75 ec             	push   -0x14(%ebp)
40d248:	ff 75 e8             	push   -0x18(%ebp)
40d24b:	e8 80 e4 ff ff       	call   0x40b6d0
40d250:	6a 00                	push   $0x0
40d252:	6a 00                	push   $0x0
40d254:	e8 85 01 01 00       	call   0x41d3de
40d259:	cc                   	int3
40d25a:	cc                   	int3
40d25b:	cc                   	int3
40d25c:	cc                   	int3
40d25d:	cc                   	int3
40d25e:	cc                   	int3
40d25f:	cc                   	int3
40d260:	55                   	push   %ebp
40d261:	8b ec                	mov    %esp,%ebp
40d263:	51                   	push   %ecx
40d264:	8b 45 08             	mov    0x8(%ebp),%eax
40d267:	53                   	push   %ebx
40d268:	56                   	push   %esi
40d269:	8b 75 0c             	mov    0xc(%ebp),%esi
40d26c:	8b d9                	mov    %ecx,%ebx
40d26e:	89 45 fc             	mov    %eax,-0x4(%ebp)
40d271:	80 7e 0d 00          	cmpb   $0x0,0xd(%esi)
40d275:	75 2d                	jne    0x40d2a4
40d277:	57                   	push   %edi
40d278:	ff 76 08             	push   0x8(%esi)
40d27b:	8b cb                	mov    %ebx,%ecx
40d27d:	50                   	push   %eax
40d27e:	e8 dd ff ff ff       	call   0x40d260
40d283:	8b fe                	mov    %esi,%edi
40d285:	8b 36                	mov    (%esi),%esi
40d287:	8d 4f 10             	lea    0x10(%edi),%ecx
40d28a:	e8 b1 0b 00 00       	call   0x40de40
40d28f:	6a 40                	push   $0x40
40d291:	57                   	push   %edi
40d292:	e8 77 e6 00 00       	call   0x41b90e
40d297:	8b 45 fc             	mov    -0x4(%ebp),%eax
40d29a:	83 c4 08             	add    $0x8,%esp
40d29d:	80 7e 0d 00          	cmpb   $0x0,0xd(%esi)
40d2a1:	74 d5                	je     0x40d278
40d2a3:	5f                   	pop    %edi
40d2a4:	5e                   	pop    %esi
40d2a5:	5b                   	pop    %ebx
40d2a6:	8b e5                	mov    %ebp,%esp
40d2a8:	5d                   	pop    %ebp
40d2a9:	c2 08 00             	ret    $0x8
40d2ac:	cc                   	int3
40d2ad:	cc                   	int3
40d2ae:	cc                   	int3
40d2af:	cc                   	int3
40d2b0:	55                   	push   %ebp
40d2b1:	8b ec                	mov    %esp,%ebp
40d2b3:	83 ec 10             	sub    $0x10,%esp
40d2b6:	8b 45 14             	mov    0x14(%ebp),%eax
40d2b9:	8b 55 08             	mov    0x8(%ebp),%edx
40d2bc:	53                   	push   %ebx
40d2bd:	8b d9                	mov    %ecx,%ebx
40d2bf:	89 45 f0             	mov    %eax,-0x10(%ebp)
40d2c2:	b9 fe ff ff 7f       	mov    $0x7ffffffe,%ecx
40d2c7:	56                   	push   %esi
40d2c8:	8b c1                	mov    %ecx,%eax
40d2ca:	8b 73 10             	mov    0x10(%ebx),%esi
40d2cd:	2b c6                	sub    %esi,%eax
40d2cf:	89 75 f8             	mov    %esi,-0x8(%ebp)
40d2d2:	57                   	push   %edi
40d2d3:	3b c2                	cmp    %edx,%eax
40d2d5:	0f 82 35 01 00 00    	jb     0x40d410
40d2db:	8b 7b 14             	mov    0x14(%ebx),%edi
40d2de:	8d 04 16             	lea    (%esi,%edx,1),%eax
40d2e1:	8b f0                	mov    %eax,%esi
40d2e3:	89 45 fc             	mov    %eax,-0x4(%ebp)
40d2e6:	83 ce 07             	or     $0x7,%esi
40d2e9:	89 7d f4             	mov    %edi,-0xc(%ebp)
40d2ec:	3b f1                	cmp    %ecx,%esi
40d2ee:	76 04                	jbe    0x40d2f4
40d2f0:	8b f1                	mov    %ecx,%esi
40d2f2:	eb 18                	jmp    0x40d30c
40d2f4:	8b c7                	mov    %edi,%eax
40d2f6:	d1 e8                	shr    $1,%eax
40d2f8:	2b c8                	sub    %eax,%ecx
40d2fa:	3b f9                	cmp    %ecx,%edi
40d2fc:	76 07                	jbe    0x40d305
40d2fe:	be fe ff ff 7f       	mov    $0x7ffffffe,%esi
40d303:	eb 07                	jmp    0x40d30c
40d305:	03 c7                	add    %edi,%eax
40d307:	3b f0                	cmp    %eax,%esi
40d309:	0f 42 f0             	cmovb  %eax,%esi
40d30c:	33 c9                	xor    %ecx,%ecx
40d30e:	8b c6                	mov    %esi,%eax
40d310:	83 c0 01             	add    $0x1,%eax
40d313:	0f 92 c1             	setb   %cl
40d316:	f7 d9                	neg    %ecx
40d318:	0b c8                	or     %eax,%ecx
40d31a:	81 f9 ff ff ff 7f    	cmp    $0x7fffffff,%ecx
40d320:	0f 87 e5 00 00 00    	ja     0x40d40b
40d326:	03 c9                	add    %ecx,%ecx
40d328:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
40d32e:	72 27                	jb     0x40d357
40d330:	8d 41 23             	lea    0x23(%ecx),%eax
40d333:	3b c1                	cmp    %ecx,%eax
40d335:	0f 86 d0 00 00 00    	jbe    0x40d40b
40d33b:	50                   	push   %eax
40d33c:	e8 9d e5 00 00       	call   0x41b8de
40d341:	83 c4 04             	add    $0x4,%esp
40d344:	85 c0                	test   %eax,%eax
40d346:	0f 84 c9 00 00 00    	je     0x40d415
40d34c:	8d 78 23             	lea    0x23(%eax),%edi
40d34f:	83 e7 e0             	and    $0xffffffe0,%edi
40d352:	89 47 fc             	mov    %eax,-0x4(%edi)
40d355:	eb 13                	jmp    0x40d36a
40d357:	85 c9                	test   %ecx,%ecx
40d359:	74 0d                	je     0x40d368
40d35b:	51                   	push   %ecx
40d35c:	e8 7d e5 00 00       	call   0x41b8de
40d361:	83 c4 04             	add    $0x4,%esp
40d364:	8b f8                	mov    %eax,%edi
40d366:	eb 02                	jmp    0x40d36a
40d368:	33 ff                	xor    %edi,%edi
40d36a:	8b 45 fc             	mov    -0x4(%ebp),%eax
40d36d:	89 43 10             	mov    %eax,0x10(%ebx)
40d370:	8b 45 18             	mov    0x18(%ebp),%eax
40d373:	03 c0                	add    %eax,%eax
40d375:	89 73 14             	mov    %esi,0x14(%ebx)
40d378:	83 7d f4 08          	cmpl   $0x8,-0xc(%ebp)
40d37c:	8b 75 f8             	mov    -0x8(%ebp),%esi
40d37f:	50                   	push   %eax
40d380:	ff 75 f0             	push   -0x10(%ebp)
40d383:	8d 0c 38             	lea    (%eax,%edi,1),%ecx
40d386:	8d 34 75 02 00 00 00 	lea    0x2(,%esi,2),%esi
40d38d:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40d390:	57                   	push   %edi
40d391:	72 59                	jb     0x40d3ec
40d393:	8b 33                	mov    (%ebx),%esi
40d395:	e8 b6 00 01 00       	call   0x41d450
40d39a:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40d39d:	8d 04 4d 02 00 00 00 	lea    0x2(,%ecx,2),%eax
40d3a4:	50                   	push   %eax
40d3a5:	56                   	push   %esi
40d3a6:	ff 75 fc             	push   -0x4(%ebp)
40d3a9:	e8 a2 00 01 00       	call   0x41d450
40d3ae:	8b 45 f4             	mov    -0xc(%ebp),%eax
40d3b1:	83 c4 18             	add    $0x18,%esp
40d3b4:	8d 0c 45 02 00 00 00 	lea    0x2(,%eax,2),%ecx
40d3bb:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
40d3c1:	72 12                	jb     0x40d3d5
40d3c3:	8b 56 fc             	mov    -0x4(%esi),%edx
40d3c6:	83 c1 23             	add    $0x23,%ecx
40d3c9:	2b f2                	sub    %edx,%esi
40d3cb:	8d 46 fc             	lea    -0x4(%esi),%eax
40d3ce:	83 f8 1f             	cmp    $0x1f,%eax
40d3d1:	77 42                	ja     0x40d415
40d3d3:	8b f2                	mov    %edx,%esi
40d3d5:	51                   	push   %ecx
40d3d6:	56                   	push   %esi
40d3d7:	e8 32 e5 00 00       	call   0x41b90e
40d3dc:	83 c4 08             	add    $0x8,%esp
40d3df:	89 3b                	mov    %edi,(%ebx)
40d3e1:	8b c3                	mov    %ebx,%eax
40d3e3:	5f                   	pop    %edi
40d3e4:	5e                   	pop    %esi
40d3e5:	5b                   	pop    %ebx
40d3e6:	8b e5                	mov    %ebp,%esp
40d3e8:	5d                   	pop    %ebp
40d3e9:	c2 14 00             	ret    $0x14
40d3ec:	e8 5f 00 01 00       	call   0x41d450
40d3f1:	56                   	push   %esi
40d3f2:	53                   	push   %ebx
40d3f3:	ff 75 fc             	push   -0x4(%ebp)
40d3f6:	e8 55 00 01 00       	call   0x41d450
40d3fb:	83 c4 18             	add    $0x18,%esp
40d3fe:	89 3b                	mov    %edi,(%ebx)
40d400:	8b c3                	mov    %ebx,%eax
40d402:	5f                   	pop    %edi
40d403:	5e                   	pop    %esi
40d404:	5b                   	pop    %ebx
40d405:	8b e5                	mov    %ebp,%esp
40d407:	5d                   	pop    %ebp
40d408:	c2 14 00             	ret    $0x14
40d40b:	e8 f0 3d ff ff       	call   0x401200
40d410:	e8 8b 3e ff ff       	call   0x4012a0
40d415:	e8 65 36 01 00       	call   0x420a7f
40d41a:	cc                   	int3
40d41b:	cc                   	int3
40d41c:	cc                   	int3
40d41d:	cc                   	int3
40d41e:	cc                   	int3
40d41f:	cc                   	int3
40d420:	55                   	push   %ebp
40d421:	8b ec                	mov    %esp,%ebp
40d423:	83 e4 f0             	and    $0xfffffff0,%esp
40d426:	83 ec 48             	sub    $0x48,%esp
40d429:	a1 14 40 45 00       	mov    0x454014,%eax
40d42e:	33 c4                	xor    %esp,%eax
40d430:	89 44 24 44          	mov    %eax,0x44(%esp)
40d434:	56                   	push   %esi
40d435:	57                   	push   %edi
40d436:	8b f9                	mov    %ecx,%edi
40d438:	89 54 24 10          	mov    %edx,0x10(%esp)
40d43c:	8b c2                	mov    %edx,%eax
40d43e:	2b c7                	sub    %edi,%eax
40d440:	3d 18 03 00 00       	cmp    $0x318,%eax
40d445:	8b 45 0c             	mov    0xc(%ebp),%eax
40d448:	0f 8c a2 00 00 00    	jl     0x40d4f0
40d44e:	8b 75 08             	mov    0x8(%ebp),%esi
40d451:	85 f6                	test   %esi,%esi
40d453:	0f 8e b3 00 00 00    	jle    0x40d50c
40d459:	50                   	push   %eax
40d45a:	52                   	push   %edx
40d45b:	8b d7                	mov    %edi,%edx
40d45d:	8d 4c 24 20          	lea    0x20(%esp),%ecx
40d461:	e8 da 05 00 00       	call   0x40da40
40d466:	8b 4c 24 18          	mov    0x18(%esp),%ecx
40d46a:	8b c6                	mov    %esi,%eax
40d46c:	2b 4c 24 24          	sub    0x24(%esp),%ecx
40d470:	83 c4 08             	add    $0x8,%esp
40d473:	c1 f8 02             	sar    $0x2,%eax
40d476:	d1 fe                	sar    $1,%esi
40d478:	03 f0                	add    %eax,%esi
40d47a:	b8 ab aa aa 2a       	mov    $0x2aaaaaab,%eax
40d47f:	f7 e9                	imul   %ecx
40d481:	8b 4c 24 18          	mov    0x18(%esp),%ecx
40d485:	b8 ab aa aa 2a       	mov    $0x2aaaaaab,%eax
40d48a:	c1 fa 02             	sar    $0x2,%edx
40d48d:	2b cf                	sub    %edi,%ecx
40d48f:	89 75 08             	mov    %esi,0x8(%ebp)
40d492:	8b f2                	mov    %edx,%esi
40d494:	c1 ee 1f             	shr    $0x1f,%esi
40d497:	03 f2                	add    %edx,%esi
40d499:	f7 e9                	imul   %ecx
40d49b:	c1 fa 02             	sar    $0x2,%edx
40d49e:	8b c2                	mov    %edx,%eax
40d4a0:	c1 e8 1f             	shr    $0x1f,%eax
40d4a3:	03 c2                	add    %edx,%eax
40d4a5:	3b c6                	cmp    %esi,%eax
40d4a7:	8b 45 0c             	mov    0xc(%ebp),%eax
40d4aa:	8b 75 08             	mov    0x8(%ebp),%esi