40e2d5:	e8 ca 02 00 00       	call   0x40e5a4
40e2da:	33 c0                	xor    %eax,%eax
40e2dc:	5f                   	pop    %edi
40e2dd:	5b                   	pop    %ebx
40e2de:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40e2e1:	33 cd                	xor    %ebp,%ecx
40e2e3:	5e                   	pop    %esi
40e2e4:	e8 df 5d ff ff       	call   0x4040c8
40e2e9:	c9                   	leave
40e2ea:	c3                   	ret
40e2eb:	33 c0                	xor    %eax,%eax
40e2ed:	50                   	push   %eax
40e2ee:	50                   	push   %eax
40e2ef:	50                   	push   %eax
40e2f0:	50                   	push   %eax
40e2f1:	50                   	push   %eax
40e2f2:	e8 ff 91 ff ff       	call   0x4074f6
40e2f7:	cc                   	int3
40e2f8:	8b ff                	mov    %edi,%edi
40e2fa:	55                   	push   %ebp
40e2fb:	8b ec                	mov    %esp,%ebp
40e2fd:	51                   	push   %ecx
40e2fe:	8b 4d 08             	mov    0x8(%ebp),%ecx
40e301:	53                   	push   %ebx
40e302:	57                   	push   %edi
40e303:	33 db                	xor    %ebx,%ebx
40e305:	8d 51 02             	lea    0x2(%ecx),%edx
40e308:	66 8b 01             	mov    (%ecx),%ax
40e30b:	83 c1 02             	add    $0x2,%ecx
40e30e:	66 3b c3             	cmp    %bx,%ax
40e311:	75 f5                	jne    0x40e308
40e313:	8b 7d 10             	mov    0x10(%ebp),%edi
40e316:	2b ca                	sub    %edx,%ecx
40e318:	d1 f9                	sar    $1,%ecx
40e31a:	8b c7                	mov    %edi,%eax
40e31c:	41                   	inc    %ecx
40e31d:	f7 d0                	not    %eax
40e31f:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40e322:	3b c8                	cmp    %eax,%ecx
40e324:	76 07                	jbe    0x40e32d
40e326:	6a 0c                	push   $0xc
40e328:	58                   	pop    %eax
40e329:	5f                   	pop    %edi
40e32a:	5b                   	pop    %ebx
40e32b:	c9                   	leave
40e32c:	c3                   	ret
40e32d:	56                   	push   %esi
40e32e:	8d 5f 01             	lea    0x1(%edi),%ebx
40e331:	03 d9                	add    %ecx,%ebx
40e333:	6a 02                	push   $0x2
40e335:	53                   	push   %ebx
40e336:	e8 07 c4 ff ff       	call   0x40a742
40e33b:	8b f0                	mov    %eax,%esi
40e33d:	59                   	pop    %ecx
40e33e:	59                   	pop    %ecx
40e33f:	85 ff                	test   %edi,%edi
40e341:	74 12                	je     0x40e355
40e343:	57                   	push   %edi
40e344:	ff 75 0c             	push   0xc(%ebp)
40e347:	53                   	push   %ebx
40e348:	56                   	push   %esi
40e349:	e8 cf fd ff ff       	call   0x40e11d
40e34e:	83 c4 10             	add    $0x10,%esp
40e351:	85 c0                	test   %eax,%eax
40e353:	75 4a                	jne    0x40e39f
40e355:	ff 75 fc             	push   -0x4(%ebp)
40e358:	2b df                	sub    %edi,%ebx
40e35a:	8d 04 7e             	lea    (%esi,%edi,2),%eax
40e35d:	ff 75 08             	push   0x8(%ebp)
40e360:	53                   	push   %ebx
40e361:	50                   	push   %eax
40e362:	e8 b6 fd ff ff       	call   0x40e11d
40e367:	83 c4 10             	add    $0x10,%esp
40e36a:	85 c0                	test   %eax,%eax
40e36c:	75 31                	jne    0x40e39f
40e36e:	8b 7d 14             	mov    0x14(%ebp),%edi
40e371:	8b cf                	mov    %edi,%ecx
40e373:	e8 75 02 00 00       	call   0x40e5ed
40e378:	8b d8                	mov    %eax,%ebx
40e37a:	85 db                	test   %ebx,%ebx
40e37c:	74 09                	je     0x40e387
40e37e:	56                   	push   %esi
40e37f:	e8 1b c4 ff ff       	call   0x40a79f
40e384:	59                   	pop    %ecx
40e385:	eb 0b                	jmp    0x40e392
40e387:	8b 47 04             	mov    0x4(%edi),%eax
40e38a:	89 30                	mov    %esi,(%eax)
40e38c:	83 47 04 04          	addl   $0x4,0x4(%edi)
40e390:	33 db                	xor    %ebx,%ebx
40e392:	6a 00                	push   $0x0
40e394:	e8 06 c4 ff ff       	call   0x40a79f
40e399:	59                   	pop    %ecx
40e39a:	8b c3                	mov    %ebx,%eax
40e39c:	5e                   	pop    %esi
40e39d:	eb 8a                	jmp    0x40e329
40e39f:	33 c0                	xor    %eax,%eax
40e3a1:	50                   	push   %eax
40e3a2:	50                   	push   %eax
40e3a3:	50                   	push   %eax
40e3a4:	50                   	push   %eax
40e3a5:	50                   	push   %eax
40e3a6:	e8 4b 91 ff ff       	call   0x4074f6
40e3ab:	cc                   	int3
40e3ac:	8b ff                	mov    %edi,%edi
40e3ae:	55                   	push   %ebp
40e3af:	8b ec                	mov    %esp,%ebp
40e3b1:	81 ec 64 02 00 00    	sub    $0x264,%esp
40e3b7:	a1 c0 10 42 00       	mov    0x4210c0,%eax
40e3bc:	33 c5                	xor    %ebp,%eax
40e3be:	89 45 fc             	mov    %eax,-0x4(%ebp)
40e3c1:	8b 55 0c             	mov    0xc(%ebp),%edx
40e3c4:	8b 4d 10             	mov    0x10(%ebp),%ecx
40e3c7:	53                   	push   %ebx
40e3c8:	56                   	push   %esi
40e3c9:	57                   	push   %edi
40e3ca:	8b 7d 08             	mov    0x8(%ebp),%edi
40e3cd:	89 8d a4 fd ff ff    	mov    %ecx,-0x25c(%ebp)
40e3d3:	3b d7                	cmp    %edi,%edx
40e3d5:	74 20                	je     0x40e3f7
40e3d7:	0f b7 02             	movzwl (%edx),%eax
40e3da:	8d 8d ab fd ff ff    	lea    -0x255(%ebp),%ecx
40e3e0:	50                   	push   %eax
40e3e1:	e8 e3 01 00 00       	call   0x40e5c9
40e3e6:	84 c0                	test   %al,%al
40e3e8:	75 07                	jne    0x40e3f1
40e3ea:	83 ea 02             	sub    $0x2,%edx
40e3ed:	3b d7                	cmp    %edi,%edx
40e3ef:	75 e6                	jne    0x40e3d7
40e3f1:	8b 8d a4 fd ff ff    	mov    -0x25c(%ebp),%ecx
40e3f7:	0f b7 32             	movzwl (%edx),%esi
40e3fa:	83 fe 3a             	cmp    $0x3a,%esi
40e3fd:	75 1a                	jne    0x40e419
40e3ff:	8d 47 02             	lea    0x2(%edi),%eax
40e402:	3b d0                	cmp    %eax,%edx
40e404:	74 13                	je     0x40e419
40e406:	51                   	push   %ecx
40e407:	33 db                	xor    %ebx,%ebx
40e409:	53                   	push   %ebx
40e40a:	53                   	push   %ebx
40e40b:	57                   	push   %edi
40e40c:	e8 e7 fe ff ff       	call   0x40e2f8
40e411:	83 c4 10             	add    $0x10,%esp
40e414:	e9 fa 00 00 00       	jmp    0x40e513
40e419:	56                   	push   %esi
40e41a:	8d 8d ab fd ff ff    	lea    -0x255(%ebp),%ecx
40e420:	e8 a4 01 00 00       	call   0x40e5c9
40e425:	2b d7                	sub    %edi,%edx
40e427:	0f b6 c0             	movzbl %al,%eax
40e42a:	d1 fa                	sar    $1,%edx
40e42c:	42                   	inc    %edx
40e42d:	f7 d8                	neg    %eax
40e42f:	1b c0                	sbb    %eax,%eax
40e431:	33 db                	xor    %ebx,%ebx
40e433:	53                   	push   %ebx
40e434:	53                   	push   %ebx
40e435:	23 c2                	and    %edx,%eax
40e437:	53                   	push   %ebx
40e438:	89 85 a0 fd ff ff    	mov    %eax,-0x260(%ebp)
40e43e:	8d 85 ac fd ff ff    	lea    -0x254(%ebp),%eax
40e444:	50                   	push   %eax
40e445:	53                   	push   %ebx
40e446:	57                   	push   %edi
40e447:	ff 15 f8 90 41 00    	call   *0x4190f8
40e44d:	8b f0                	mov    %eax,%esi
40e44f:	83 fe ff             	cmp    $0xffffffff,%esi
40e452:	75 08                	jne    0x40e45c
40e454:	ff b5 a4 fd ff ff    	push   -0x25c(%ebp)
40e45a:	eb ad                	jmp    0x40e409
40e45c:	8b 9d a4 fd ff ff    	mov    -0x25c(%ebp),%ebx
40e462:	6a 2e                	push   $0x2e
40e464:	8b 43 04             	mov    0x4(%ebx),%eax
40e467:	2b 03                	sub    (%ebx),%eax
40e469:	c1 f8 02             	sar    $0x2,%eax
40e46c:	89 85 a4 fd ff ff    	mov    %eax,-0x25c(%ebp)
40e472:	58                   	pop    %eax
40e473:	66 39 85 d8 fd ff ff 	cmp    %ax,-0x228(%ebp)
40e47a:	75 1d                	jne    0x40e499
40e47c:	66 83 bd da fd ff ff 	cmpw   $0x0,-0x226(%ebp)
40e483:	00
40e484:	74 34                	je     0x40e4ba
40e486:	66 39 85 da fd ff ff 	cmp    %ax,-0x226(%ebp)
40e48d:	75 0a                	jne    0x40e499
40e48f:	66 83 bd dc fd ff ff 	cmpw   $0x0,-0x224(%ebp)
40e496:	00
40e497:	74 21                	je     0x40e4ba
40e499:	53                   	push   %ebx
40e49a:	ff b5 a0 fd ff ff    	push   -0x260(%ebp)
40e4a0:	8d 85 d8 fd ff ff    	lea    -0x228(%ebp),%eax
40e4a6:	57                   	push   %edi
40e4a7:	50                   	push   %eax
40e4a8:	e8 4b fe ff ff       	call   0x40e2f8
40e4ad:	83 c4 10             	add    $0x10,%esp
40e4b0:	89 85 9c fd ff ff    	mov    %eax,-0x264(%ebp)
40e4b6:	85 c0                	test   %eax,%eax
40e4b8:	75 4c                	jne    0x40e506
40e4ba:	8d 85 ac fd ff ff    	lea    -0x254(%ebp),%eax
40e4c0:	50                   	push   %eax
40e4c1:	56                   	push   %esi
40e4c2:	ff 15 fc 90 41 00    	call   *0x4190fc
40e4c8:	6a 2e                	push   $0x2e
40e4ca:	85 c0                	test   %eax,%eax
40e4cc:	58                   	pop    %eax
40e4cd:	75 a4                	jne    0x40e473
40e4cf:	8b 43 04             	mov    0x4(%ebx),%eax
40e4d2:	8b 13                	mov    (%ebx),%edx
40e4d4:	2b c2                	sub    %edx,%eax
40e4d6:	8b 8d a4 fd ff ff    	mov    -0x25c(%ebp),%ecx
40e4dc:	c1 f8 02             	sar    $0x2,%eax
40e4df:	3b c8                	cmp    %eax,%ecx
40e4e1:	75 0b                	jne    0x40e4ee
40e4e3:	56                   	push   %esi
40e4e4:	ff 15 f4 90 41 00    	call   *0x4190f4
40e4ea:	33 c0                	xor    %eax,%eax
40e4ec:	eb 25                	jmp    0x40e513
40e4ee:	68 28 e1 40 00       	push   $0x40e128
40e4f3:	2b c1                	sub    %ecx,%eax
40e4f5:	6a 04                	push   $0x4
40e4f7:	50                   	push   %eax
40e4f8:	8d 04 8a             	lea    (%edx,%ecx,4),%eax
40e4fb:	50                   	push   %eax
40e4fc:	e8 df 61 00 00       	call   0x4146e0
40e501:	83 c4 10             	add    $0x10,%esp
40e504:	eb dd                	jmp    0x40e4e3
40e506:	56                   	push   %esi
40e507:	ff 15 f4 90 41 00    	call   *0x4190f4
40e50d:	8b 85 9c fd ff ff    	mov    -0x264(%ebp),%eax
40e513:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40e516:	5f                   	pop    %edi
40e517:	5e                   	pop    %esi
40e518:	33 cd                	xor    %ebp,%ecx
40e51a:	5b                   	pop    %ebx
40e51b:	e8 a8 5b ff ff       	call   0x4040c8
40e520:	c9                   	leave
40e521:	c3                   	ret
40e522:	8b ff                	mov    %edi,%edi
40e524:	55                   	push   %ebp
40e525:	8b ec                	mov    %esp,%ebp
40e527:	53                   	push   %ebx
40e528:	57                   	push   %edi
40e529:	8b f9                	mov    %ecx,%edi
40e52b:	8b 4d 08             	mov    0x8(%ebp),%ecx
40e52e:	c6 47 0c 00          	movb   $0x0,0xc(%edi)
40e532:	8d 5f 04             	lea    0x4(%edi),%ebx
40e535:	85 c9                	test   %ecx,%ecx
40e537:	74 07                	je     0x40e540
40e539:	8b 01                	mov    (%ecx),%eax
40e53b:	8b 49 04             	mov    0x4(%ecx),%ecx
40e53e:	eb 14                	jmp    0x40e554
40e540:	83 3d 98 20 42 00 00 	cmpl   $0x0,0x422098
40e547:	75 12                	jne    0x40e55b
40e549:	a1 e0 12 42 00       	mov    0x4212e0,%eax
40e54e:	8b 0d e4 12 42 00    	mov    0x4212e4,%ecx
40e554:	89 03                	mov    %eax,(%ebx)
40e556:	89 4b 04             	mov    %ecx,0x4(%ebx)
40e559:	eb 41                	jmp    0x40e59c
40e55b:	56                   	push   %esi
40e55c:	e8 4c de ff ff       	call   0x40c3ad
40e561:	89 07                	mov    %eax,(%edi)
40e563:	8d 77 08             	lea    0x8(%edi),%esi
40e566:	53                   	push   %ebx
40e567:	50                   	push   %eax
40e568:	8b 48 4c             	mov    0x4c(%eax),%ecx
40e56b:	89 0b                	mov    %ecx,(%ebx)
40e56d:	8b 48 48             	mov    0x48(%eax),%ecx
40e570:	89 0e                	mov    %ecx,(%esi)
40e572:	e8 a9 ea ff ff       	call   0x40d020
40e577:	56                   	push   %esi
40e578:	ff 37                	push   (%edi)
40e57a:	e8 ff ea ff ff       	call   0x40d07e
40e57f:	8b 0f                	mov    (%edi),%ecx
40e581:	83 c4 10             	add    $0x10,%esp
40e584:	8b 81 50 03 00 00    	mov    0x350(%ecx),%eax
40e58a:	5e                   	pop    %esi
40e58b:	a8 02                	test   $0x2,%al
40e58d:	75 0d                	jne    0x40e59c
40e58f:	83 c8 02             	or     $0x2,%eax
40e592:	89 81 50 03 00 00    	mov    %eax,0x350(%ecx)
40e598:	c6 47 0c 01          	movb   $0x1,0xc(%edi)
40e59c:	8b c7                	mov    %edi,%eax
40e59e:	5f                   	pop    %edi
40e59f:	5b                   	pop    %ebx
40e5a0:	5d                   	pop    %ebp
40e5a1:	c2 04 00             	ret    $0x4
40e5a4:	8b ff                	mov    %edi,%edi
40e5a6:	56                   	push   %esi
40e5a7:	57                   	push   %edi
40e5a8:	8b f9                	mov    %ecx,%edi
40e5aa:	8b 37                	mov    (%edi),%esi
40e5ac:	eb 0b                	jmp    0x40e5b9
40e5ae:	ff 36                	push   (%esi)
40e5b0:	e8 ea c1 ff ff       	call   0x40a79f
40e5b5:	59                   	pop    %ecx
40e5b6:	83 c6 04             	add    $0x4,%esi
40e5b9:	3b 77 04             	cmp    0x4(%edi),%esi
40e5bc:	75 f0                	jne    0x40e5ae
40e5be:	ff 37                	push   (%edi)
40e5c0:	e8 da c1 ff ff       	call   0x40a79f
40e5c5:	59                   	pop    %ecx
40e5c6:	5f                   	pop    %edi
40e5c7:	5e                   	pop    %esi
40e5c8:	c3                   	ret
40e5c9:	8b ff                	mov    %edi,%edi
40e5cb:	55                   	push   %ebp
40e5cc:	8b ec                	mov    %esp,%ebp
40e5ce:	66 83 7d 08 2f       	cmpw   $0x2f,0x8(%ebp)
40e5d3:	74 12                	je     0x40e5e7
40e5d5:	66 83 7d 08 5c       	cmpw   $0x5c,0x8(%ebp)
40e5da:	74 0b                	je     0x40e5e7
40e5dc:	66 83 7d 08 3a       	cmpw   $0x3a,0x8(%ebp)
40e5e1:	74 04                	je     0x40e5e7
40e5e3:	32 c0                	xor    %al,%al
40e5e5:	eb 02                	jmp    0x40e5e9
40e5e7:	b0 01                	mov    $0x1,%al
40e5e9:	5d                   	pop    %ebp
40e5ea:	c2 04 00             	ret    $0x4
40e5ed:	8b ff                	mov    %edi,%edi
40e5ef:	56                   	push   %esi
40e5f0:	8b f1                	mov    %ecx,%esi
40e5f2:	57                   	push   %edi
40e5f3:	8b 7e 08             	mov    0x8(%esi),%edi
40e5f6:	39 7e 04             	cmp    %edi,0x4(%esi)
40e5f9:	74 04                	je     0x40e5ff
40e5fb:	33 c0                	xor    %eax,%eax
40e5fd:	eb 72                	jmp    0x40e671
40e5ff:	83 3e 00             	cmpl   $0x0,(%esi)
40e602:	75 26                	jne    0x40e62a
40e604:	6a 04                	push   $0x4
40e606:	6a 04                	push   $0x4
40e608:	e8 35 c1 ff ff       	call   0x40a742
40e60d:	6a 00                	push   $0x0
40e60f:	89 06                	mov    %eax,(%esi)
40e611:	e8 89 c1 ff ff       	call   0x40a79f
40e616:	8b 06                	mov    (%esi),%eax
40e618:	83 c4 0c             	add    $0xc,%esp
40e61b:	85 c0                	test   %eax,%eax
40e61d:	74 18                	je     0x40e637
40e61f:	89 46 04             	mov    %eax,0x4(%esi)
40e622:	83 c0 10             	add    $0x10,%eax
40e625:	89 46 08             	mov    %eax,0x8(%esi)
40e628:	eb d1                	jmp    0x40e5fb
40e62a:	2b 3e                	sub    (%esi),%edi
40e62c:	c1 ff 02             	sar    $0x2,%edi
40e62f:	81 ff ff ff ff 7f    	cmp    $0x7fffffff,%edi
40e635:	76 05                	jbe    0x40e63c
40e637:	6a 0c                	push   $0xc
40e639:	58                   	pop    %eax
40e63a:	eb 35                	jmp    0x40e671
40e63c:	53                   	push   %ebx
40e63d:	6a 04                	push   $0x4
40e63f:	8d 1c 3f             	lea    (%edi,%edi,1),%ebx