40f3a4:	ff 15 a4 c0 41 00    	call   *0x41c0a4
40f3aa:	85 c0                	test   %eax,%eax
40f3ac:	0f 85 4d ff ff ff    	jne    0x40f2ff
40f3b2:	8b 85 a4 fd ff ff    	mov    -0x25c(%ebp),%eax
40f3b8:	8b 8d 84 fd ff ff    	mov    -0x27c(%ebp),%ecx
40f3be:	8b 10                	mov    (%eax),%edx
40f3c0:	8b 40 04             	mov    0x4(%eax),%eax
40f3c3:	2b c2                	sub    %edx,%eax
40f3c5:	c1 f8 02             	sar    $0x2,%eax
40f3c8:	3b c8                	cmp    %eax,%ecx
40f3ca:	74 34                	je     0x40f400
40f3cc:	68 80 ed 40 00       	push   $0x40ed80
40f3d1:	2b c1                	sub    %ecx,%eax
40f3d3:	6a 04                	push   $0x4
40f3d5:	50                   	push   %eax
40f3d6:	8d 04 8a             	lea    (%edx,%ecx,4),%eax
40f3d9:	50                   	push   %eax
40f3da:	e8 b1 3e 00 00       	call   0x413290
40f3df:	83 c4 10             	add    $0x10,%esp
40f3e2:	eb 1c                	jmp    0x40f400
40f3e4:	38 9d a0 fd ff ff    	cmp    %bl,-0x260(%ebp)
40f3ea:	74 12                	je     0x40f3fe
40f3ec:	ff b5 94 fd ff ff    	push   -0x26c(%ebp)
40f3f2:	e8 4c f9 ff ff       	call   0x40ed43
40f3f7:	8b 85 80 fd ff ff    	mov    -0x280(%ebp),%eax
40f3fd:	59                   	pop    %ecx
40f3fe:	8b d8                	mov    %eax,%ebx
40f400:	56                   	push   %esi
40f401:	ff 15 9c c0 41 00    	call   *0x41c09c
40f407:	80 bd 7c fd ff ff 00 	cmpb   $0x0,-0x284(%ebp)
40f40e:	5e                   	pop    %esi
40f40f:	74 0c                	je     0x40f41d
40f411:	ff b5 70 fd ff ff    	push   -0x290(%ebp)
40f417:	e8 27 f9 ff ff       	call   0x40ed43
40f41c:	59                   	pop    %ecx
40f41d:	8b c3                	mov    %ebx,%eax
40f41f:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40f422:	5f                   	pop    %edi
40f423:	33 cd                	xor    %ebp,%ecx
40f425:	5b                   	pop    %ebx
40f426:	e8 ca 97 ff ff       	call   0x408bf5
40f42b:	c9                   	leave
40f42c:	c3                   	ret
40f42d:	8b ff                	mov    %edi,%edi
40f42f:	55                   	push   %ebp
40f430:	8b ec                	mov    %esp,%ebp
40f432:	83 ec 10             	sub    $0x10,%esp
40f435:	6a 00                	push   $0x0
40f437:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40f43a:	e8 0b d6 ff ff       	call   0x40ca4a
40f43f:	8b 45 f4             	mov    -0xc(%ebp),%eax
40f442:	ba e9 fd 00 00       	mov    $0xfde9,%edx
40f447:	39 50 08             	cmp    %edx,0x8(%eax)
40f44a:	74 0c                	je     0x40f458
40f44c:	e8 4e 1f 00 00       	call   0x41139f
40f451:	33 d2                	xor    %edx,%edx
40f453:	85 c0                	test   %eax,%eax
40f455:	75 01                	jne    0x40f458
40f457:	42                   	inc    %edx
40f458:	80 7d fc 00          	cmpb   $0x0,-0x4(%ebp)
40f45c:	74 0a                	je     0x40f468
40f45e:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40f461:	83 a1 50 03 00 00 fd 	andl   $0xfffffffd,0x350(%ecx)
40f468:	8b c2                	mov    %edx,%eax
40f46a:	c9                   	leave
40f46b:	c3                   	ret
40f46c:	8b ff                	mov    %edi,%edi
40f46e:	56                   	push   %esi
40f46f:	8b f1                	mov    %ecx,%esi
40f471:	80 7e 14 00          	cmpb   $0x0,0x14(%esi)
40f475:	74 0d                	je     0x40f484
40f477:	ff 76 08             	push   0x8(%esi)
40f47a:	e8 c4 f8 ff ff       	call   0x40ed43
40f47f:	59                   	pop    %ecx
40f480:	c6 46 14 00          	movb   $0x0,0x14(%esi)
40f484:	5e                   	pop    %esi
40f485:	c3                   	ret
40f486:	8b ff                	mov    %edi,%edi
40f488:	55                   	push   %ebp
40f489:	8b ec                	mov    %esp,%ebp
40f48b:	56                   	push   %esi
40f48c:	57                   	push   %edi
40f48d:	8b f1                	mov    %ecx,%esi
40f48f:	e8 d8 ff ff ff       	call   0x40f46c
40f494:	8b 7d 08             	mov    0x8(%ebp),%edi
40f497:	8d 46 08             	lea    0x8(%esi),%eax
40f49a:	56                   	push   %esi
40f49b:	57                   	push   %edi
40f49c:	50                   	push   %eax
40f49d:	e8 5f 00 00 00       	call   0x40f501
40f4a2:	83 c4 0c             	add    $0xc,%esp
40f4a5:	85 c0                	test   %eax,%eax
40f4a7:	74 0a                	je     0x40f4b3
40f4a9:	83 66 0c 00          	andl   $0x0,0xc(%esi)
40f4ad:	c6 46 14 00          	movb   $0x0,0x14(%esi)
40f4b1:	eb 09                	jmp    0x40f4bc
40f4b3:	c6 46 14 01          	movb   $0x1,0x14(%esi)
40f4b7:	33 c0                	xor    %eax,%eax
40f4b9:	89 7e 0c             	mov    %edi,0xc(%esi)
40f4bc:	5f                   	pop    %edi
40f4bd:	5e                   	pop    %esi
40f4be:	5d                   	pop    %ebp
40f4bf:	c2 04 00             	ret    $0x4
40f4c2:	8b ff                	mov    %edi,%edi
40f4c4:	55                   	push   %ebp
40f4c5:	8b ec                	mov    %esp,%ebp
40f4c7:	56                   	push   %esi
40f4c8:	57                   	push   %edi
40f4c9:	8b f1                	mov    %ecx,%esi
40f4cb:	e8 9c ff ff ff       	call   0x40f46c
40f4d0:	8b 7d 08             	mov    0x8(%ebp),%edi
40f4d3:	56                   	push   %esi
40f4d4:	8d 04 3f             	lea    (%edi,%edi,1),%eax
40f4d7:	50                   	push   %eax
40f4d8:	8d 46 08             	lea    0x8(%esi),%eax
40f4db:	50                   	push   %eax
40f4dc:	e8 20 00 00 00       	call   0x40f501
40f4e1:	83 c4 0c             	add    $0xc,%esp
40f4e4:	85 c0                	test   %eax,%eax
40f4e6:	74 0a                	je     0x40f4f2
40f4e8:	83 66 0c 00          	andl   $0x0,0xc(%esi)
40f4ec:	c6 46 14 00          	movb   $0x0,0x14(%esi)
40f4f0:	eb 09                	jmp    0x40f4fb
40f4f2:	c6 46 14 01          	movb   $0x1,0x14(%esi)
40f4f6:	33 c0                	xor    %eax,%eax
40f4f8:	89 7e 0c             	mov    %edi,0xc(%esi)
40f4fb:	5f                   	pop    %edi
40f4fc:	5e                   	pop    %esi
40f4fd:	5d                   	pop    %ebp
40f4fe:	c2 04 00             	ret    $0x4
40f501:	8b ff                	mov    %edi,%edi
40f503:	55                   	push   %ebp
40f504:	8b ec                	mov    %esp,%ebp
40f506:	ff 75 0c             	push   0xc(%ebp)
40f509:	e8 d5 14 00 00       	call   0x4109e3
40f50e:	59                   	pop    %ecx
40f50f:	8b 4d 08             	mov    0x8(%ebp),%ecx
40f512:	89 01                	mov    %eax,(%ecx)
40f514:	f7 d8                	neg    %eax
40f516:	1b c0                	sbb    %eax,%eax
40f518:	83 e0 f4             	and    $0xfffffff4,%eax
40f51b:	83 c0 0c             	add    $0xc,%eax
40f51e:	5d                   	pop    %ebp
40f51f:	c3                   	ret
40f520:	8b ff                	mov    %edi,%edi
40f522:	56                   	push   %esi
40f523:	8b f1                	mov    %ecx,%esi
40f525:	57                   	push   %edi
40f526:	8b 7e 08             	mov    0x8(%esi),%edi
40f529:	39 7e 04             	cmp    %edi,0x4(%esi)
40f52c:	74 04                	je     0x40f532
40f52e:	33 c0                	xor    %eax,%eax
40f530:	eb 72                	jmp    0x40f5a4
40f532:	83 3e 00             	cmpl   $0x0,(%esi)
40f535:	75 26                	jne    0x40f55d
40f537:	6a 04                	push   $0x4
40f539:	6a 04                	push   $0x4
40f53b:	e8 a6 f7 ff ff       	call   0x40ece6
40f540:	6a 00                	push   $0x0
40f542:	89 06                	mov    %eax,(%esi)
40f544:	e8 fa f7 ff ff       	call   0x40ed43
40f549:	8b 06                	mov    (%esi),%eax
40f54b:	83 c4 0c             	add    $0xc,%esp
40f54e:	85 c0                	test   %eax,%eax
40f550:	74 18                	je     0x40f56a
40f552:	89 46 04             	mov    %eax,0x4(%esi)
40f555:	83 c0 10             	add    $0x10,%eax
40f558:	89 46 08             	mov    %eax,0x8(%esi)
40f55b:	eb d1                	jmp    0x40f52e
40f55d:	2b 3e                	sub    (%esi),%edi
40f55f:	c1 ff 02             	sar    $0x2,%edi
40f562:	81 ff ff ff ff 7f    	cmp    $0x7fffffff,%edi
40f568:	76 05                	jbe    0x40f56f
40f56a:	6a 0c                	push   $0xc
40f56c:	58                   	pop    %eax
40f56d:	eb 35                	jmp    0x40f5a4
40f56f:	53                   	push   %ebx
40f570:	6a 04                	push   $0x4
40f572:	8d 1c 3f             	lea    (%edi,%edi,1),%ebx
40f575:	53                   	push   %ebx
40f576:	ff 36                	push   (%esi)
40f578:	e8 94 20 00 00       	call   0x411611
40f57d:	83 c4 0c             	add    $0xc,%esp
40f580:	85 c0                	test   %eax,%eax
40f582:	75 05                	jne    0x40f589
40f584:	6a 0c                	push   $0xc
40f586:	5e                   	pop    %esi
40f587:	eb 10                	jmp    0x40f599
40f589:	89 06                	mov    %eax,(%esi)
40f58b:	8d 0c b8             	lea    (%eax,%edi,4),%ecx
40f58e:	8d 04 98             	lea    (%eax,%ebx,4),%eax
40f591:	89 4e 04             	mov    %ecx,0x4(%esi)
40f594:	89 46 08             	mov    %eax,0x8(%esi)
40f597:	33 f6                	xor    %esi,%esi
40f599:	6a 00                	push   $0x0
40f59b:	e8 a3 f7 ff ff       	call   0x40ed43
40f5a0:	59                   	pop    %ecx
40f5a1:	8b c6                	mov    %esi,%eax
40f5a3:	5b                   	pop    %ebx
40f5a4:	5f                   	pop    %edi
40f5a5:	5e                   	pop    %esi
40f5a6:	c3                   	ret
40f5a7:	8b ff                	mov    %edi,%edi
40f5a9:	55                   	push   %ebp
40f5aa:	8b ec                	mov    %esp,%ebp
40f5ac:	5d                   	pop    %ebp
40f5ad:	e9 84 f9 ff ff       	jmp    0x40ef36
40f5b2:	8b ff                	mov    %edi,%edi
40f5b4:	55                   	push   %ebp
40f5b5:	8b ec                	mov    %esp,%ebp
40f5b7:	56                   	push   %esi
40f5b8:	8b 75 08             	mov    0x8(%ebp),%esi
40f5bb:	85 f6                	test   %esi,%esi
40f5bd:	75 0f                	jne    0x40f5ce
40f5bf:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40f5c2:	e8 d9 00 00 00       	call   0x40f6a0
40f5c7:	33 c0                	xor    %eax,%eax
40f5c9:	e9 a8 00 00 00       	jmp    0x40f676
40f5ce:	53                   	push   %ebx
40f5cf:	33 db                	xor    %ebx,%ebx
40f5d1:	66 39 1e             	cmp    %bx,(%esi)
40f5d4:	75 25                	jne    0x40f5fb
40f5d6:	8b 75 0c             	mov    0xc(%ebp),%esi
40f5d9:	39 5e 0c             	cmp    %ebx,0xc(%esi)
40f5dc:	75 11                	jne    0x40f5ef
40f5de:	6a 01                	push   $0x1
40f5e0:	8b ce                	mov    %esi,%ecx
40f5e2:	e8 92 00 00 00       	call   0x40f679
40f5e7:	85 c0                	test   %eax,%eax
40f5e9:	0f 85 86 00 00 00    	jne    0x40f675
40f5ef:	8b 46 08             	mov    0x8(%esi),%eax
40f5f2:	88 18                	mov    %bl,(%eax)
40f5f4:	33 c0                	xor    %eax,%eax
40f5f6:	89 5e 10             	mov    %ebx,0x10(%esi)
40f5f9:	eb 7a                	jmp    0x40f675
40f5fb:	53                   	push   %ebx
40f5fc:	53                   	push   %ebx
40f5fd:	53                   	push   %ebx
40f5fe:	53                   	push   %ebx
40f5ff:	6a ff                	push   $0xffffffff
40f601:	56                   	push   %esi
40f602:	53                   	push   %ebx
40f603:	ff 75 14             	push   0x14(%ebp)
40f606:	e8 3a 0a 00 00       	call   0x410045
40f60b:	83 c4 20             	add    $0x20,%esp
40f60e:	85 c0                	test   %eax,%eax
40f610:	75 16                	jne    0x40f628
40f612:	ff 15 48 c1 41 00    	call   *0x41c148
40f618:	50                   	push   %eax
40f619:	e8 7f f6 ff ff       	call   0x40ec9d
40f61e:	59                   	pop    %ecx
40f61f:	e8 af f6 ff ff       	call   0x40ecd3
40f624:	8b 00                	mov    (%eax),%eax
40f626:	eb 4d                	jmp    0x40f675
40f628:	57                   	push   %edi
40f629:	8b 7d 0c             	mov    0xc(%ebp),%edi
40f62c:	3b 47 0c             	cmp    0xc(%edi),%eax
40f62f:	76 0c                	jbe    0x40f63d
40f631:	50                   	push   %eax
40f632:	8b cf                	mov    %edi,%ecx
40f634:	e8 40 00 00 00       	call   0x40f679
40f639:	85 c0                	test   %eax,%eax
40f63b:	75 37                	jne    0x40f674
40f63d:	53                   	push   %ebx
40f63e:	53                   	push   %ebx
40f63f:	ff 77 0c             	push   0xc(%edi)
40f642:	ff 77 08             	push   0x8(%edi)
40f645:	6a ff                	push   $0xffffffff
40f647:	56                   	push   %esi
40f648:	53                   	push   %ebx
40f649:	ff 75 14             	push   0x14(%ebp)
40f64c:	e8 f4 09 00 00       	call   0x410045
40f651:	83 c4 20             	add    $0x20,%esp
40f654:	85 c0                	test   %eax,%eax
40f656:	75 16                	jne    0x40f66e
40f658:	ff 15 48 c1 41 00    	call   *0x41c148
40f65e:	50                   	push   %eax
40f65f:	e8 39 f6 ff ff       	call   0x40ec9d
40f664:	59                   	pop    %ecx
40f665:	e8 69 f6 ff ff       	call   0x40ecd3
40f66a:	8b 00                	mov    (%eax),%eax
40f66c:	eb 06                	jmp    0x40f674
40f66e:	48                   	dec    %eax
40f66f:	89 47 10             	mov    %eax,0x10(%edi)
40f672:	33 c0                	xor    %eax,%eax
40f674:	5f                   	pop    %edi
40f675:	5b                   	pop    %ebx
40f676:	5e                   	pop    %esi
40f677:	5d                   	pop    %ebp
40f678:	c3                   	ret
40f679:	8b ff                	mov    %edi,%edi
40f67b:	56                   	push   %esi
40f67c:	8b f1                	mov    %ecx,%esi
40f67e:	80 7e 14 00          	cmpb   $0x0,0x14(%esi)
40f682:	74 04                	je     0x40f688
40f684:	c6 46 14 00          	movb   $0x0,0x14(%esi)
40f688:	e8 46 f6 ff ff       	call   0x40ecd3
40f68d:	6a 22                	push   $0x22
40f68f:	59                   	pop    %ecx
40f690:	89 08                	mov    %ecx,(%eax)
40f692:	8b c1                	mov    %ecx,%eax
40f694:	83 66 0c 00          	andl   $0x0,0xc(%esi)
40f698:	c6 46 14 00          	movb   $0x0,0x14(%esi)
40f69c:	5e                   	pop    %esi
40f69d:	c2 04 00             	ret    $0x4
40f6a0:	33 c0                	xor    %eax,%eax
40f6a2:	38 41 14             	cmp    %al,0x14(%ecx)
40f6a5:	74 03                	je     0x40f6aa
40f6a7:	88 41 14             	mov    %al,0x14(%ecx)
40f6aa:	89 41 08             	mov    %eax,0x8(%ecx)
40f6ad:	89 41 0c             	mov    %eax,0xc(%ecx)
40f6b0:	89 41 10             	mov    %eax,0x10(%ecx)
40f6b3:	c3                   	ret
40f6b4:	8b ff                	mov    %edi,%edi
40f6b6:	55                   	push   %ebp
40f6b7:	8b ec                	mov    %esp,%ebp
40f6b9:	81 ec 2c 02 00 00    	sub    $0x22c,%esp
40f6bf:	a1 18 60 42 00       	mov    0x426018,%eax
40f6c4:	33 c5                	xor    %ebp,%eax
40f6c6:	89 45 fc             	mov    %eax,-0x4(%ebp)
40f6c9:	8b 45 08             	mov    0x8(%ebp),%eax
40f6cc:	8d 8d f0 fd ff ff    	lea    -0x210(%ebp),%ecx
40f6d2:	68 05 01 00 00       	push   $0x105
40f6d7:	51                   	push   %ecx
40f6d8:	50                   	push   %eax
40f6d9:	ff 15 84 c0 41 00    	call   *0x41c084
40f6df:	85 c0                	test   %eax,%eax
40f6e1:	75 11                	jne    0x40f6f4
40f6e3:	ff 15 48 c1 41 00    	call   *0x41c148
40f6e9:	50                   	push   %eax
40f6ea:	e8 ae f5 ff ff       	call   0x40ec9d
40f6ef:	59                   	pop    %ecx
40f6f0:	33 c0                	xor    %eax,%eax
40f6f2:	eb 55                	jmp    0x40f749
40f6f4:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40f6f7:	8b 45 10             	mov    0x10(%ebp),%eax
40f6fa:	83 a5 e4 fd ff ff 00 	andl   $0x0,-0x21c(%ebp)
40f701:	89 8d d4 fd ff ff    	mov    %ecx,-0x22c(%ebp)
40f707:	89 85 d8 fd ff ff    	mov    %eax,-0x228(%ebp)
40f70d:	89 8d dc fd ff ff    	mov    %ecx,-0x224(%ebp)
40f713:	89 85 e0 fd ff ff    	mov    %eax,-0x220(%ebp)
40f719:	c6 85 e8 fd ff ff 00 	movb   $0x0,-0x218(%ebp)
40f720:	e8 08 fd ff ff       	call   0x40f42d
40f725:	50                   	push   %eax
40f726:	8d 85 ef fd ff ff    	lea    -0x211(%ebp),%eax
40f72c:	50                   	push   %eax
40f72d:	8d 85 d4 fd ff ff    	lea    -0x22c(%ebp),%eax
40f733:	50                   	push   %eax
40f734:	8d 85 f0 fd ff ff    	lea    -0x210(%ebp),%eax
40f73a:	50                   	push   %eax