40f2ae:	3b 85 28 05 00 00    	cmp    0x528(%ebp),%eax
40f2b4:	89 45 a0             	mov    %eax,-0x60(%ebp)
40f2b7:	0f 82 36 ff ff ff    	jb     0x40f1f3
40f2bd:	eb 30                	jmp    0x40f2ef
40f2bf:	6a 00                	push   $0x0
40f2c1:	8d 4d 94             	lea    -0x6c(%ebp),%ecx
40f2c4:	51                   	push   %ecx
40f2c5:	ff b5 28 05 00 00    	push   0x528(%ebp)
40f2cb:	ff 75 9c             	push   -0x64(%ebp)
40f2ce:	ff 30                	push   (%eax)
40f2d0:	ff 15 28 70 41 00    	call   *0x417028
40f2d6:	85 c0                	test   %eax,%eax
40f2d8:	74 0c                	je     0x40f2e6
40f2da:	8b 45 94             	mov    -0x6c(%ebp),%eax
40f2dd:	83 65 ac 00          	andl   $0x0,-0x54(%ebp)
40f2e1:	89 45 a0             	mov    %eax,-0x60(%ebp)
40f2e4:	eb 09                	jmp    0x40f2ef
40f2e6:	ff 15 b0 70 41 00    	call   *0x4170b0
40f2ec:	89 45 ac             	mov    %eax,-0x54(%ebp)
40f2ef:	8b 45 a0             	mov    -0x60(%ebp),%eax
40f2f2:	85 c0                	test   %eax,%eax
40f2f4:	75 56                	jne    0x40f34c
40f2f6:	8b 7d 90             	mov    -0x70(%ebp),%edi
40f2f9:	33 f6                	xor    %esi,%esi
40f2fb:	39 75 ac             	cmp    %esi,-0x54(%ebp)
40f2fe:	74 20                	je     0x40f320
40f300:	6a 05                	push   $0x5
40f302:	5e                   	pop    %esi
40f303:	39 75 ac             	cmp    %esi,-0x54(%ebp)
40f306:	75 0d                	jne    0x40f315
40f308:	e8 ed a0 ff ff       	call   0x4093fa
40f30d:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40f313:	eb 2b                	jmp    0x40f340
40f315:	ff 75 ac             	push   -0x54(%ebp)
40f318:	e8 03 a1 ff ff       	call   0x409420
40f31d:	59                   	pop    %ecx
40f31e:	eb 27                	jmp    0x40f347
40f320:	8b 07                	mov    (%edi),%eax
40f322:	f6 44 03 04 40       	testb  $0x40,0x4(%ebx,%eax,1)
40f327:	74 0c                	je     0x40f335
40f329:	8b 45 9c             	mov    -0x64(%ebp),%eax
40f32c:	80 38 1a             	cmpb   $0x1a,(%eax)
40f32f:	75 04                	jne    0x40f335
40f331:	33 c0                	xor    %eax,%eax
40f333:	eb 1a                	jmp    0x40f34f
40f335:	e8 c0 a0 ff ff       	call   0x4093fa
40f33a:	c7 00 1c 00 00 00    	movl   $0x1c,(%eax)
40f340:	e8 c8 a0 ff ff       	call   0x40940d
40f345:	89 30                	mov    %esi,(%eax)
40f347:	83 c8 ff             	or     $0xffffffff,%eax
40f34a:	eb 03                	jmp    0x40f34f
40f34c:	2b 45 98             	sub    -0x68(%ebp),%eax
40f34f:	5f                   	pop    %edi
40f350:	5b                   	pop    %ebx
40f351:	8b 8d 14 05 00 00    	mov    0x514(%ebp),%ecx
40f357:	33 cd                	xor    %ebp,%ecx
40f359:	5e                   	pop    %esi
40f35a:	e8 d6 6b ff ff       	call   0x405f35
40f35f:	81 c5 18 05 00 00    	add    $0x518,%ebp
40f365:	c9                   	leave
40f366:	c3                   	ret
40f367:	6a 10                	push   $0x10
40f369:	68 f8 ac 41 00       	push   $0x41acf8
40f36e:	e8 d5 e2 ff ff       	call   0x40d648
40f373:	8b 45 08             	mov    0x8(%ebp),%eax
40f376:	83 f8 fe             	cmp    $0xfffffffe,%eax
40f379:	75 1b                	jne    0x40f396
40f37b:	e8 8d a0 ff ff       	call   0x40940d
40f380:	83 20 00             	andl   $0x0,(%eax)
40f383:	e8 72 a0 ff ff       	call   0x4093fa
40f388:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40f38e:	83 c8 ff             	or     $0xffffffff,%eax
40f391:	e9 9d 00 00 00       	jmp    0x40f433
40f396:	33 ff                	xor    %edi,%edi
40f398:	3b c7                	cmp    %edi,%eax
40f39a:	7c 08                	jl     0x40f3a4
40f39c:	3b 05 b4 e4 41 00    	cmp    0x41e4b4,%eax
40f3a2:	72 21                	jb     0x40f3c5
40f3a4:	e8 64 a0 ff ff       	call   0x40940d
40f3a9:	89 38                	mov    %edi,(%eax)
40f3ab:	e8 4a a0 ff ff       	call   0x4093fa
40f3b0:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40f3b6:	57                   	push   %edi
40f3b7:	57                   	push   %edi
40f3b8:	57                   	push   %edi
40f3b9:	57                   	push   %edi
40f3ba:	57                   	push   %edi
40f3bb:	e8 90 82 ff ff       	call   0x407650
40f3c0:	83 c4 14             	add    $0x14,%esp
40f3c3:	eb c9                	jmp    0x40f38e
40f3c5:	8b c8                	mov    %eax,%ecx
40f3c7:	c1 f9 05             	sar    $0x5,%ecx
40f3ca:	8d 1c 8d c0 e4 41 00 	lea    0x41e4c0(,%ecx,4),%ebx
40f3d1:	8b f0                	mov    %eax,%esi
40f3d3:	83 e6 1f             	and    $0x1f,%esi
40f3d6:	6b f6 28             	imul   $0x28,%esi,%esi
40f3d9:	8b 0b                	mov    (%ebx),%ecx
40f3db:	0f b6 4c 31 04       	movzbl 0x4(%ecx,%esi,1),%ecx
40f3e0:	83 e1 01             	and    $0x1,%ecx
40f3e3:	74 bf                	je     0x40f3a4
40f3e5:	50                   	push   %eax
40f3e6:	e8 07 5a 00 00       	call   0x414df2
40f3eb:	59                   	pop    %ecx
40f3ec:	89 7d fc             	mov    %edi,-0x4(%ebp)
40f3ef:	8b 03                	mov    (%ebx),%eax
40f3f1:	f6 44 30 04 01       	testb  $0x1,0x4(%eax,%esi,1)
40f3f6:	74 16                	je     0x40f40e
40f3f8:	ff 75 10             	push   0x10(%ebp)
40f3fb:	ff 75 0c             	push   0xc(%ebp)
40f3fe:	ff 75 08             	push   0x8(%ebp)
40f401:	e8 9b f9 ff ff       	call   0x40eda1
40f406:	83 c4 0c             	add    $0xc,%esp
40f409:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40f40c:	eb 16                	jmp    0x40f424
40f40e:	e8 e7 9f ff ff       	call   0x4093fa
40f413:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40f419:	e8 ef 9f ff ff       	call   0x40940d
40f41e:	89 38                	mov    %edi,(%eax)
40f420:	83 4d e4 ff          	orl    $0xffffffff,-0x1c(%ebp)
40f424:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40f42b:	e8 09 00 00 00       	call   0x40f439
40f430:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40f433:	e8 55 e2 ff ff       	call   0x40d68d
40f438:	c3                   	ret
40f439:	ff 75 08             	push   0x8(%ebp)
40f43c:	e8 51 5a 00 00       	call   0x414e92
40f441:	59                   	pop    %ecx
40f442:	c3                   	ret
40f443:	6a 10                	push   $0x10
40f445:	68 18 ad 41 00       	push   $0x41ad18
40f44a:	e8 f9 e1 ff ff       	call   0x40d648
40f44f:	8b 45 08             	mov    0x8(%ebp),%eax
40f452:	83 f8 fe             	cmp    $0xfffffffe,%eax
40f455:	75 13                	jne    0x40f46a
40f457:	e8 9e 9f ff ff       	call   0x4093fa
40f45c:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40f462:	83 c8 ff             	or     $0xffffffff,%eax
40f465:	e9 aa 00 00 00       	jmp    0x40f514
40f46a:	33 db                	xor    %ebx,%ebx
40f46c:	3b c3                	cmp    %ebx,%eax
40f46e:	7c 08                	jl     0x40f478
40f470:	3b 05 b4 e4 41 00    	cmp    0x41e4b4,%eax
40f476:	72 1a                	jb     0x40f492
40f478:	e8 7d 9f ff ff       	call   0x4093fa
40f47d:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40f483:	53                   	push   %ebx
40f484:	53                   	push   %ebx
40f485:	53                   	push   %ebx
40f486:	53                   	push   %ebx
40f487:	53                   	push   %ebx
40f488:	e8 c3 81 ff ff       	call   0x407650
40f48d:	83 c4 14             	add    $0x14,%esp
40f490:	eb d0                	jmp    0x40f462
40f492:	8b c8                	mov    %eax,%ecx
40f494:	c1 f9 05             	sar    $0x5,%ecx
40f497:	8d 3c 8d c0 e4 41 00 	lea    0x41e4c0(,%ecx,4),%edi
40f49e:	8b f0                	mov    %eax,%esi
40f4a0:	83 e6 1f             	and    $0x1f,%esi
40f4a3:	6b f6 28             	imul   $0x28,%esi,%esi
40f4a6:	8b 0f                	mov    (%edi),%ecx
40f4a8:	0f b6 4c 0e 04       	movzbl 0x4(%esi,%ecx,1),%ecx
40f4ad:	83 e1 01             	and    $0x1,%ecx
40f4b0:	74 c6                	je     0x40f478
40f4b2:	50                   	push   %eax
40f4b3:	e8 3a 59 00 00       	call   0x414df2
40f4b8:	59                   	pop    %ecx
40f4b9:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40f4bc:	8b 07                	mov    (%edi),%eax
40f4be:	f6 44 06 04 01       	testb  $0x1,0x4(%esi,%eax,1)
40f4c3:	74 31                	je     0x40f4f6
40f4c5:	ff 75 08             	push   0x8(%ebp)
40f4c8:	e8 b4 58 00 00       	call   0x414d81
40f4cd:	59                   	pop    %ecx
40f4ce:	50                   	push   %eax
40f4cf:	ff 15 54 71 41 00    	call   *0x417154
40f4d5:	85 c0                	test   %eax,%eax
40f4d7:	75 0b                	jne    0x40f4e4
40f4d9:	ff 15 b0 70 41 00    	call   *0x4170b0
40f4df:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40f4e2:	eb 03                	jmp    0x40f4e7
40f4e4:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
40f4e7:	39 5d e4             	cmp    %ebx,-0x1c(%ebp)
40f4ea:	74 19                	je     0x40f505
40f4ec:	e8 1c 9f ff ff       	call   0x40940d
40f4f1:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
40f4f4:	89 08                	mov    %ecx,(%eax)
40f4f6:	e8 ff 9e ff ff       	call   0x4093fa
40f4fb:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40f501:	83 4d e4 ff          	orl    $0xffffffff,-0x1c(%ebp)
40f505:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40f50c:	e8 09 00 00 00       	call   0x40f51a
40f511:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40f514:	e8 74 e1 ff ff       	call   0x40d68d
40f519:	c3                   	ret
40f51a:	ff 75 08             	push   0x8(%ebp)
40f51d:	e8 70 59 00 00       	call   0x414e92
40f522:	59                   	pop    %ecx
40f523:	c3                   	ret
40f524:	56                   	push   %esi
40f525:	8b 74 24 08          	mov    0x8(%esp),%esi
40f529:	8b 46 0c             	mov    0xc(%esi),%eax
40f52c:	a8 83                	test   $0x83,%al
40f52e:	74 1e                	je     0x40f54e
40f530:	a8 08                	test   $0x8,%al
40f532:	74 1a                	je     0x40f54e
40f534:	ff 76 08             	push   0x8(%esi)
40f537:	e8 17 6f ff ff       	call   0x406453
40f53c:	81 66 0c f7 fb ff ff 	andl   $0xfffffbf7,0xc(%esi)
40f543:	33 c0                	xor    %eax,%eax
40f545:	59                   	pop    %ecx
40f546:	89 06                	mov    %eax,(%esi)
40f548:	89 46 08             	mov    %eax,0x8(%esi)
40f54b:	89 46 04             	mov    %eax,0x4(%esi)
40f54e:	5e                   	pop    %esi
40f54f:	c3                   	ret
40f550:	55                   	push   %ebp
40f551:	8b ec                	mov    %esp,%ebp
40f553:	83 ec 10             	sub    $0x10,%esp
40f556:	53                   	push   %ebx
40f557:	56                   	push   %esi
40f558:	57                   	push   %edi
40f559:	8b 7d 08             	mov    0x8(%ebp),%edi
40f55c:	57                   	push   %edi
40f55d:	e8 e4 f4 ff ff       	call   0x40ea46
40f562:	33 db                	xor    %ebx,%ebx
40f564:	39 5f 04             	cmp    %ebx,0x4(%edi)
40f567:	59                   	pop    %ecx
40f568:	89 45 fc             	mov    %eax,-0x4(%ebp)
40f56b:	7d 03                	jge    0x40f570
40f56d:	89 5f 04             	mov    %ebx,0x4(%edi)
40f570:	6a 01                	push   $0x1
40f572:	53                   	push   %ebx
40f573:	53                   	push   %ebx
40f574:	50                   	push   %eax
40f575:	e8 fb 47 00 00       	call   0x413d75
40f57a:	8b f2                	mov    %edx,%esi
40f57c:	83 c4 10             	add    $0x10,%esp
40f57f:	3b f3                	cmp    %ebx,%esi
40f581:	8b c8                	mov    %eax,%ecx
40f583:	89 4d f0             	mov    %ecx,-0x10(%ebp)
40f586:	89 75 f4             	mov    %esi,-0xc(%ebp)
40f589:	7f 11                	jg     0x40f59c
40f58b:	7c 04                	jl     0x40f591
40f58d:	3b cb                	cmp    %ebx,%ecx
40f58f:	73 0b                	jae    0x40f59c
40f591:	83 c8 ff             	or     $0xffffffff,%eax
40f594:	83 ca ff             	or     $0xffffffff,%edx
40f597:	e9 63 01 00 00       	jmp    0x40f6ff
40f59c:	8b 57 0c             	mov    0xc(%edi),%edx
40f59f:	66 f7 c2 08 01       	test   $0x108,%dx
40f5a4:	75 11                	jne    0x40f5b7
40f5a6:	8b 47 04             	mov    0x4(%edi),%eax
40f5a9:	99                   	cltd
40f5aa:	2b c8                	sub    %eax,%ecx
40f5ac:	1b f2                	sbb    %edx,%esi
40f5ae:	8b c1                	mov    %ecx,%eax
40f5b0:	8b d6                	mov    %esi,%edx
40f5b2:	e9 48 01 00 00       	jmp    0x40f6ff
40f5b7:	8b 07                	mov    (%edi),%eax
40f5b9:	8b 4f 08             	mov    0x8(%edi),%ecx
40f5bc:	8b d8                	mov    %eax,%ebx
40f5be:	2b d9                	sub    %ecx,%ebx
40f5c0:	f6 c2 03             	test   $0x3,%dl
40f5c3:	89 5d f8             	mov    %ebx,-0x8(%ebp)
40f5c6:	74 3f                	je     0x40f607
40f5c8:	8b 5d fc             	mov    -0x4(%ebp),%ebx
40f5cb:	8b 55 fc             	mov    -0x4(%ebp),%edx
40f5ce:	83 e3 1f             	and    $0x1f,%ebx
40f5d1:	6b db 28             	imul   $0x28,%ebx,%ebx
40f5d4:	c1 fa 05             	sar    $0x5,%edx
40f5d7:	8b 14 95 c0 e4 41 00 	mov    0x41e4c0(,%edx,4),%edx
40f5de:	f6 44 1a 04 80       	testb  $0x80,0x4(%edx,%ebx,1)
40f5e3:	74 11                	je     0x40f5f6
40f5e5:	8b d1                	mov    %ecx,%edx
40f5e7:	eb 09                	jmp    0x40f5f2
40f5e9:	80 3a 0a             	cmpb   $0xa,(%edx)
40f5ec:	75 03                	jne    0x40f5f1
40f5ee:	ff 45 f8             	incl   -0x8(%ebp)
40f5f1:	42                   	inc    %edx
40f5f2:	3b d0                	cmp    %eax,%edx
40f5f4:	72 f3                	jb     0x40f5e9
40f5f6:	8b 55 f0             	mov    -0x10(%ebp),%edx
40f5f9:	0b d6                	or     %esi,%edx
40f5fb:	75 1e                	jne    0x40f61b
40f5fd:	8b 45 f8             	mov    -0x8(%ebp),%eax
40f600:	33 d2                	xor    %edx,%edx
40f602:	e9 f8 00 00 00       	jmp    0x40f6ff
40f607:	84 d2                	test   %dl,%dl
40f609:	78 eb                	js     0x40f5f6
40f60b:	e8 ea 9d ff ff       	call   0x4093fa
40f610:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40f616:	e9 76 ff ff ff       	jmp    0x40f591
40f61b:	f6 47 0c 01          	testb  $0x1,0xc(%edi)
40f61f:	0f 84 d0 00 00 00    	je     0x40f6f5
40f625:	8b 57 04             	mov    0x4(%edi),%edx
40f628:	85 d2                	test   %edx,%edx
40f62a:	75 08                	jne    0x40f634
40f62c:	21 55 f8             	and    %edx,-0x8(%ebp)
40f62f:	e9 c1 00 00 00       	jmp    0x40f6f5
40f634:	8b 75 fc             	mov    -0x4(%ebp),%esi
40f637:	8b 5d fc             	mov    -0x4(%ebp),%ebx
40f63a:	83 e6 1f             	and    $0x1f,%esi
40f63d:	6b f6 28             	imul   $0x28,%esi,%esi
40f640:	2b c1                	sub    %ecx,%eax
40f642:	03 c2                	add    %edx,%eax
40f644:	c1 fb 05             	sar    $0x5,%ebx
40f647:	8d 1c 9d c0 e4 41 00 	lea    0x41e4c0(,%ebx,4),%ebx
40f64e:	89 45 08             	mov    %eax,0x8(%ebp)
40f651:	8b 03                	mov    (%ebx),%eax
40f653:	f6 44 30 04 80       	testb  $0x80,0x4(%eax,%esi,1)
40f658:	0f 84 8a 00 00 00    	je     0x40f6e8
40f65e:	6a 02                	push   $0x2
40f660:	6a 00                	push   $0x0
40f662:	6a 00                	push   $0x0
40f664:	ff 75 fc             	push   -0x4(%ebp)
40f667:	e8 09 47 00 00       	call   0x413d75
40f66c:	83 c4 10             	add    $0x10,%esp
40f66f:	3b 45 f0             	cmp    -0x10(%ebp),%eax
40f672:	75 24                	jne    0x40f698
40f674:	3b 55 f4             	cmp    -0xc(%ebp),%edx
40f677:	75 1f                	jne    0x40f698
40f679:	8b 47 08             	mov    0x8(%edi),%eax
40f67c:	8b 4d 08             	mov    0x8(%ebp),%ecx
40f67f:	03 c8                	add    %eax,%ecx
40f681:	eb 09                	jmp    0x40f68c
40f683:	80 38 0a             	cmpb   $0xa,(%eax)
40f686:	75 03                	jne    0x40f68b
40f688:	ff 45 08             	incl   0x8(%ebp)
40f68b:	40                   	inc    %eax
40f68c:	3b c1                	cmp    %ecx,%eax
40f68e:	72 f3                	jb     0x40f683
40f690:	66 f7 47 0c 00 20    	testw  $0x2000,0xc(%edi)
40f696:	eb 4b                	jmp    0x40f6e3
40f698:	6a 00                	push   $0x0
40f69a:	ff 75 f4             	push   -0xc(%ebp)
40f69d:	ff 75 f0             	push   -0x10(%ebp)
40f6a0:	ff 75 fc             	push   -0x4(%ebp)
40f6a3:	e8 cd 46 00 00       	call   0x413d75
40f6a8:	83 c4 10             	add    $0x10,%esp
40f6ab:	85 d2                	test   %edx,%edx
40f6ad:	7f 0e                	jg     0x40f6bd
40f6af:	0f 8c dc fe ff ff    	jl     0x40f591
40f6b5:	85 c0                	test   %eax,%eax
40f6b7:	0f 82 d4 fe ff ff    	jb     0x40f591
40f6bd:	b8 00 02 00 00       	mov    $0x200,%eax
40f6c2:	39 45 08             	cmp    %eax,0x8(%ebp)
40f6c5:	77 0f                	ja     0x40f6d6
40f6c7:	8b 4f 0c             	mov    0xc(%edi),%ecx
40f6ca:	f6 c1 08             	test   $0x8,%cl
40f6cd:	74 07                	je     0x40f6d6