40c2be:	8b f8                	mov    %eax,%edi
40c2c0:	59                   	pop    %ecx
40c2c1:	59                   	pop    %ecx
40c2c2:	85 ff                	test   %edi,%edi
40c2c4:	74 14                	je     0x40c2da
40c2c6:	3b de                	cmp    %esi,%ebx
40c2c8:	73 10                	jae    0x40c2da
40c2ca:	2b f3                	sub    %ebx,%esi
40c2cc:	56                   	push   %esi
40c2cd:	6a 00                	push   $0x0
40c2cf:	03 df                	add    %edi,%ebx
40c2d1:	53                   	push   %ebx
40c2d2:	e8 09 b7 ff ff       	call   0x4079e0
40c2d7:	83 c4 0c             	add    $0xc,%esp
40c2da:	8b c7                	mov    %edi,%eax
40c2dc:	5f                   	pop    %edi
40c2dd:	5e                   	pop    %esi
40c2de:	5b                   	pop    %ebx
40c2df:	5d                   	pop    %ebp
40c2e0:	c3                   	ret
40c2e1:	8b ff                	mov    %edi,%edi
40c2e3:	55                   	push   %ebp
40c2e4:	8b ec                	mov    %esp,%ebp
40c2e6:	b8 e4 1a 00 00       	mov    $0x1ae4,%eax
40c2eb:	e8 10 15 00 00       	call   0x40d800
40c2f0:	a1 84 22 41 00       	mov    0x412284,%eax
40c2f5:	33 c5                	xor    %ebp,%eax
40c2f7:	89 45 fc             	mov    %eax,-0x4(%ebp)
40c2fa:	8b 45 0c             	mov    0xc(%ebp),%eax
40c2fd:	56                   	push   %esi
40c2fe:	8b 75 08             	mov    0x8(%ebp),%esi
40c301:	57                   	push   %edi
40c302:	33 ff                	xor    %edi,%edi
40c304:	89 85 34 e5 ff ff    	mov    %eax,-0x1acc(%ebp)
40c30a:	89 bd 38 e5 ff ff    	mov    %edi,-0x1ac8(%ebp)
40c310:	89 bd 30 e5 ff ff    	mov    %edi,-0x1ad0(%ebp)
40c316:	39 7d 10             	cmp    %edi,0x10(%ebp)
40c319:	75 07                	jne    0x40c322
40c31b:	33 c0                	xor    %eax,%eax
40c31d:	e9 ae 06 00 00       	jmp    0x40c9d0
40c322:	3b c7                	cmp    %edi,%eax
40c324:	75 1f                	jne    0x40c345
40c326:	e8 0f 7e ff ff       	call   0x40413a
40c32b:	89 38                	mov    %edi,(%eax)
40c32d:	e8 f5 7d ff ff       	call   0x404127
40c332:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40c338:	e8 4a 69 ff ff       	call   0x402c87
40c33d:	83 c8 ff             	or     $0xffffffff,%eax
40c340:	e9 8b 06 00 00       	jmp    0x40c9d0
40c345:	8b c6                	mov    %esi,%eax
40c347:	c1 f8 05             	sar    $0x5,%eax
40c34a:	8b fe                	mov    %esi,%edi
40c34c:	53                   	push   %ebx
40c34d:	8d 1c 85 20 46 41 00 	lea    0x414620(,%eax,4),%ebx
40c354:	8b 03                	mov    (%ebx),%eax
40c356:	83 e7 1f             	and    $0x1f,%edi
40c359:	c1 e7 06             	shl    $0x6,%edi
40c35c:	8a 4c 38 24          	mov    0x24(%eax,%edi,1),%cl
40c360:	02 c9                	add    %cl,%cl
40c362:	d0 f9                	sar    $1,%cl
40c364:	89 9d 24 e5 ff ff    	mov    %ebx,-0x1adc(%ebp)
40c36a:	88 8d 3f e5 ff ff    	mov    %cl,-0x1ac1(%ebp)
40c370:	80 f9 02             	cmp    $0x2,%cl
40c373:	74 05                	je     0x40c37a
40c375:	80 f9 01             	cmp    $0x1,%cl
40c378:	75 27                	jne    0x40c3a1
40c37a:	8b 4d 10             	mov    0x10(%ebp),%ecx
40c37d:	f7 d1                	not    %ecx
40c37f:	f6 c1 01             	test   $0x1,%cl
40c382:	75 1d                	jne    0x40c3a1
40c384:	e8 b1 7d ff ff       	call   0x40413a
40c389:	83 20 00             	andl   $0x0,(%eax)
40c38c:	e8 96 7d ff ff       	call   0x404127
40c391:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40c397:	e8 eb 68 ff ff       	call   0x402c87
40c39c:	e9 1d 06 00 00       	jmp    0x40c9be
40c3a1:	f6 44 38 04 20       	testb  $0x20,0x4(%eax,%edi,1)
40c3a6:	74 0f                	je     0x40c3b7
40c3a8:	6a 02                	push   $0x2
40c3aa:	6a 00                	push   $0x0
40c3ac:	6a 00                	push   $0x0
40c3ae:	56                   	push   %esi
40c3af:	e8 77 14 00 00       	call   0x40d82b
40c3b4:	83 c4 10             	add    $0x10,%esp
40c3b7:	56                   	push   %esi
40c3b8:	e8 8a e5 ff ff       	call   0x40a947
40c3bd:	59                   	pop    %ecx
40c3be:	85 c0                	test   %eax,%eax
40c3c0:	0f 84 99 02 00 00    	je     0x40c65f
40c3c6:	8b 03                	mov    (%ebx),%eax
40c3c8:	f6 44 07 04 80       	testb  $0x80,0x4(%edi,%eax,1)
40c3cd:	0f 84 8c 02 00 00    	je     0x40c65f
40c3d3:	e8 0e 9a ff ff       	call   0x405de6
40c3d8:	8b 40 6c             	mov    0x6c(%eax),%eax
40c3db:	33 c9                	xor    %ecx,%ecx
40c3dd:	39 48 14             	cmp    %ecx,0x14(%eax)
40c3e0:	8d 85 20 e5 ff ff    	lea    -0x1ae0(%ebp),%eax
40c3e6:	0f 94 c1             	sete   %cl
40c3e9:	50                   	push   %eax
40c3ea:	8b 03                	mov    (%ebx),%eax
40c3ec:	ff 34 07             	push   (%edi,%eax,1)
40c3ef:	8b f1                	mov    %ecx,%esi
40c3f1:	ff 15 34 f1 40 00    	call   *0x40f134
40c3f7:	33 c9                	xor    %ecx,%ecx
40c3f9:	3b c1                	cmp    %ecx,%eax
40c3fb:	0f 84 60 02 00 00    	je     0x40c661
40c401:	3b f1                	cmp    %ecx,%esi
40c403:	74 0c                	je     0x40c411
40c405:	38 8d 3f e5 ff ff    	cmp    %cl,-0x1ac1(%ebp)
40c40b:	0f 84 50 02 00 00    	je     0x40c661
40c411:	ff 15 30 f1 40 00    	call   *0x40f130
40c417:	8b 9d 34 e5 ff ff    	mov    -0x1acc(%ebp),%ebx
40c41d:	89 85 20 e5 ff ff    	mov    %eax,-0x1ae0(%ebp)
40c423:	33 c0                	xor    %eax,%eax
40c425:	89 85 2c e5 ff ff    	mov    %eax,-0x1ad4(%ebp)
40c42b:	39 45 10             	cmp    %eax,0x10(%ebp)
40c42e:	0f 86 23 05 00 00    	jbe    0x40c957
40c434:	89 85 40 e5 ff ff    	mov    %eax,-0x1ac0(%ebp)
40c43a:	8a 85 3f e5 ff ff    	mov    -0x1ac1(%ebp),%al
40c440:	84 c0                	test   %al,%al
40c442:	0f 85 67 01 00 00    	jne    0x40c5af
40c448:	8a 0b                	mov    (%ebx),%cl
40c44a:	8b b5 24 e5 ff ff    	mov    -0x1adc(%ebp),%esi
40c450:	33 c0                	xor    %eax,%eax
40c452:	80 f9 0a             	cmp    $0xa,%cl
40c455:	0f 94 c0             	sete   %al
40c458:	89 85 1c e5 ff ff    	mov    %eax,-0x1ae4(%ebp)
40c45e:	8b 06                	mov    (%esi),%eax
40c460:	03 c7                	add    %edi,%eax
40c462:	83 78 38 00          	cmpl   $0x0,0x38(%eax)
40c466:	74 15                	je     0x40c47d
40c468:	8a 50 34             	mov    0x34(%eax),%dl
40c46b:	88 55 f4             	mov    %dl,-0xc(%ebp)
40c46e:	88 4d f5             	mov    %cl,-0xb(%ebp)
40c471:	83 60 38 00          	andl   $0x0,0x38(%eax)
40c475:	6a 02                	push   $0x2
40c477:	8d 45 f4             	lea    -0xc(%ebp),%eax
40c47a:	50                   	push   %eax
40c47b:	eb 4b                	jmp    0x40c4c8
40c47d:	0f be c1             	movsbl %cl,%eax
40c480:	50                   	push   %eax
40c481:	e8 cd e8 ff ff       	call   0x40ad53
40c486:	59                   	pop    %ecx
40c487:	85 c0                	test   %eax,%eax
40c489:	74 3a                	je     0x40c4c5
40c48b:	8b 8d 34 e5 ff ff    	mov    -0x1acc(%ebp),%ecx
40c491:	2b cb                	sub    %ebx,%ecx
40c493:	03 4d 10             	add    0x10(%ebp),%ecx
40c496:	33 c0                	xor    %eax,%eax
40c498:	40                   	inc    %eax
40c499:	3b c8                	cmp    %eax,%ecx
40c49b:	0f 86 a5 01 00 00    	jbe    0x40c646
40c4a1:	6a 02                	push   $0x2
40c4a3:	8d 85 44 e5 ff ff    	lea    -0x1abc(%ebp),%eax
40c4a9:	53                   	push   %ebx
40c4aa:	50                   	push   %eax
40c4ab:	e8 51 e8 ff ff       	call   0x40ad01
40c4b0:	83 c4 0c             	add    $0xc,%esp
40c4b3:	83 f8 ff             	cmp    $0xffffffff,%eax
40c4b6:	0f 84 92 04 00 00    	je     0x40c94e
40c4bc:	43                   	inc    %ebx
40c4bd:	ff 85 40 e5 ff ff    	incl   -0x1ac0(%ebp)
40c4c3:	eb 1b                	jmp    0x40c4e0
40c4c5:	6a 01                	push   $0x1
40c4c7:	53                   	push   %ebx
40c4c8:	8d 85 44 e5 ff ff    	lea    -0x1abc(%ebp),%eax
40c4ce:	50                   	push   %eax
40c4cf:	e8 2d e8 ff ff       	call   0x40ad01
40c4d4:	83 c4 0c             	add    $0xc,%esp
40c4d7:	83 f8 ff             	cmp    $0xffffffff,%eax
40c4da:	0f 84 6e 04 00 00    	je     0x40c94e
40c4e0:	33 c0                	xor    %eax,%eax
40c4e2:	50                   	push   %eax
40c4e3:	50                   	push   %eax
40c4e4:	6a 05                	push   $0x5
40c4e6:	8d 4d f4             	lea    -0xc(%ebp),%ecx
40c4e9:	51                   	push   %ecx
40c4ea:	6a 01                	push   $0x1
40c4ec:	8d 8d 44 e5 ff ff    	lea    -0x1abc(%ebp),%ecx
40c4f2:	51                   	push   %ecx
40c4f3:	50                   	push   %eax
40c4f4:	ff b5 20 e5 ff ff    	push   -0x1ae0(%ebp)
40c4fa:	43                   	inc    %ebx
40c4fb:	ff 85 40 e5 ff ff    	incl   -0x1ac0(%ebp)
40c501:	ff 15 10 f1 40 00    	call   *0x40f110
40c507:	8b f0                	mov    %eax,%esi
40c509:	85 f6                	test   %esi,%esi
40c50b:	0f 84 3d 04 00 00    	je     0x40c94e
40c511:	6a 00                	push   $0x0
40c513:	8d 85 2c e5 ff ff    	lea    -0x1ad4(%ebp),%eax
40c519:	50                   	push   %eax
40c51a:	56                   	push   %esi
40c51b:	8d 45 f4             	lea    -0xc(%ebp),%eax
40c51e:	50                   	push   %eax
40c51f:	8b 85 24 e5 ff ff    	mov    -0x1adc(%ebp),%eax
40c525:	8b 00                	mov    (%eax),%eax
40c527:	ff 34 07             	push   (%edi,%eax,1)
40c52a:	ff 15 e8 f0 40 00    	call   *0x40f0e8
40c530:	85 c0                	test   %eax,%eax
40c532:	0f 84 0a 04 00 00    	je     0x40c942
40c538:	8b 85 40 e5 ff ff    	mov    -0x1ac0(%ebp),%eax
40c53e:	8b 8d 30 e5 ff ff    	mov    -0x1ad0(%ebp),%ecx
40c544:	03 c1                	add    %ecx,%eax
40c546:	89 85 38 e5 ff ff    	mov    %eax,-0x1ac8(%ebp)
40c54c:	39 b5 2c e5 ff ff    	cmp    %esi,-0x1ad4(%ebp)
40c552:	0f 8c f6 03 00 00    	jl     0x40c94e
40c558:	83 bd 1c e5 ff ff 00 	cmpl   $0x0,-0x1ae4(%ebp)
40c55f:	0f 84 cd 00 00 00    	je     0x40c632
40c565:	6a 00                	push   $0x0
40c567:	8d 85 2c e5 ff ff    	lea    -0x1ad4(%ebp),%eax
40c56d:	50                   	push   %eax
40c56e:	6a 01                	push   $0x1
40c570:	8d 45 f4             	lea    -0xc(%ebp),%eax
40c573:	50                   	push   %eax
40c574:	8b 85 24 e5 ff ff    	mov    -0x1adc(%ebp),%eax
40c57a:	8b 00                	mov    (%eax),%eax
40c57c:	c6 45 f4 0d          	movb   $0xd,-0xc(%ebp)
40c580:	ff 34 07             	push   (%edi,%eax,1)
40c583:	ff 15 e8 f0 40 00    	call   *0x40f0e8
40c589:	85 c0                	test   %eax,%eax
40c58b:	0f 84 b1 03 00 00    	je     0x40c942
40c591:	83 bd 2c e5 ff ff 01 	cmpl   $0x1,-0x1ad4(%ebp)
40c598:	0f 8c b0 03 00 00    	jl     0x40c94e
40c59e:	ff 85 30 e5 ff ff    	incl   -0x1ad0(%ebp)
40c5a4:	ff 85 38 e5 ff ff    	incl   -0x1ac8(%ebp)
40c5aa:	e9 83 00 00 00       	jmp    0x40c632
40c5af:	3c 01                	cmp    $0x1,%al
40c5b1:	74 04                	je     0x40c5b7
40c5b3:	3c 02                	cmp    $0x2,%al
40c5b5:	75 21                	jne    0x40c5d8
40c5b7:	0f b7 33             	movzwl (%ebx),%esi
40c5ba:	33 c9                	xor    %ecx,%ecx
40c5bc:	83 fe 0a             	cmp    $0xa,%esi
40c5bf:	0f 94 c1             	sete   %cl
40c5c2:	83 c3 02             	add    $0x2,%ebx
40c5c5:	83 85 40 e5 ff ff 02 	addl   $0x2,-0x1ac0(%ebp)
40c5cc:	89 b5 44 e5 ff ff    	mov    %esi,-0x1abc(%ebp)
40c5d2:	89 8d 1c e5 ff ff    	mov    %ecx,-0x1ae4(%ebp)
40c5d8:	3c 01                	cmp    $0x1,%al
40c5da:	74 04                	je     0x40c5e0
40c5dc:	3c 02                	cmp    $0x2,%al
40c5de:	75 52                	jne    0x40c632
40c5e0:	ff b5 44 e5 ff ff    	push   -0x1abc(%ebp)
40c5e6:	e8 bb 1f 00 00       	call   0x40e5a6
40c5eb:	59                   	pop    %ecx
40c5ec:	66 3b 85 44 e5 ff ff 	cmp    -0x1abc(%ebp),%ax
40c5f3:	0f 85 49 03 00 00    	jne    0x40c942
40c5f9:	83 85 38 e5 ff ff 02 	addl   $0x2,-0x1ac8(%ebp)
40c600:	83 bd 1c e5 ff ff 00 	cmpl   $0x0,-0x1ae4(%ebp)
40c607:	74 29                	je     0x40c632
40c609:	6a 0d                	push   $0xd
40c60b:	58                   	pop    %eax
40c60c:	50                   	push   %eax
40c60d:	89 85 44 e5 ff ff    	mov    %eax,-0x1abc(%ebp)
40c613:	e8 8e 1f 00 00       	call   0x40e5a6
40c618:	59                   	pop    %ecx
40c619:	66 3b 85 44 e5 ff ff 	cmp    -0x1abc(%ebp),%ax
40c620:	0f 85 1c 03 00 00    	jne    0x40c942
40c626:	ff 85 38 e5 ff ff    	incl   -0x1ac8(%ebp)
40c62c:	ff 85 30 e5 ff ff    	incl   -0x1ad0(%ebp)
40c632:	8b 45 10             	mov    0x10(%ebp),%eax
40c635:	39 85 40 e5 ff ff    	cmp    %eax,-0x1ac0(%ebp)
40c63b:	0f 82 f9 fd ff ff    	jb     0x40c43a
40c641:	e9 08 03 00 00       	jmp    0x40c94e
40c646:	8b 0e                	mov    (%esi),%ecx
40c648:	8a 13                	mov    (%ebx),%dl
40c64a:	ff 85 38 e5 ff ff    	incl   -0x1ac8(%ebp)
40c650:	88 54 0f 34          	mov    %dl,0x34(%edi,%ecx,1)
40c654:	8b 0e                	mov    (%esi),%ecx
40c656:	89 44 0f 38          	mov    %eax,0x38(%edi,%ecx,1)
40c65a:	e9 ef 02 00 00       	jmp    0x40c94e
40c65f:	33 c9                	xor    %ecx,%ecx
40c661:	8b 03                	mov    (%ebx),%eax
40c663:	f6 44 38 04 80       	testb  $0x80,0x4(%eax,%edi,1)
40c668:	0f 84 a1 02 00 00    	je     0x40c90f
40c66e:	80 bd 3f e5 ff ff 00 	cmpb   $0x0,-0x1ac1(%ebp)
40c675:	89 8d 44 e5 ff ff    	mov    %ecx,-0x1abc(%ebp)
40c67b:	0f 85 a8 00 00 00    	jne    0x40c729
40c681:	8b 9d 34 e5 ff ff    	mov    -0x1acc(%ebp),%ebx
40c687:	39 4d 10             	cmp    %ecx,0x10(%ebp)
40c68a:	0f 86 fd 02 00 00    	jbe    0x40c98d
40c690:	8b cb                	mov    %ebx,%ecx
40c692:	33 f6                	xor    %esi,%esi
40c694:	2b 8d 34 e5 ff ff    	sub    -0x1acc(%ebp),%ecx
40c69a:	8d 85 48 e5 ff ff    	lea    -0x1ab8(%ebp),%eax
40c6a0:	3b 4d 10             	cmp    0x10(%ebp),%ecx
40c6a3:	73 26                	jae    0x40c6cb
40c6a5:	8a 13                	mov    (%ebx),%dl
40c6a7:	43                   	inc    %ebx
40c6a8:	41                   	inc    %ecx
40c6a9:	89 9d 20 e5 ff ff    	mov    %ebx,-0x1ae0(%ebp)
40c6af:	80 fa 0a             	cmp    $0xa,%dl
40c6b2:	75 0b                	jne    0x40c6bf
40c6b4:	ff 85 30 e5 ff ff    	incl   -0x1ad0(%ebp)
40c6ba:	c6 00 0d             	movb   $0xd,(%eax)
40c6bd:	40                   	inc    %eax
40c6be:	46                   	inc    %esi
40c6bf:	88 10                	mov    %dl,(%eax)
40c6c1:	40                   	inc    %eax
40c6c2:	46                   	inc    %esi
40c6c3:	81 fe ff 13 00 00    	cmp    $0x13ff,%esi
40c6c9:	72 d5                	jb     0x40c6a0
40c6cb:	8b f0                	mov    %eax,%esi
40c6cd:	8d 85 48 e5 ff ff    	lea    -0x1ab8(%ebp),%eax
40c6d3:	2b f0                	sub    %eax,%esi
40c6d5:	6a 00                	push   $0x0
40c6d7:	8d 85 28 e5 ff ff    	lea    -0x1ad8(%ebp),%eax
40c6dd:	50                   	push   %eax
40c6de:	56                   	push   %esi
40c6df:	8d 85 48 e5 ff ff    	lea    -0x1ab8(%ebp),%eax
40c6e5:	50                   	push   %eax
40c6e6:	8b 85 24 e5 ff ff    	mov    -0x1adc(%ebp),%eax
40c6ec:	8b 00                	mov    (%eax),%eax
40c6ee:	ff 34 07             	push   (%edi,%eax,1)
40c6f1:	ff 15 e8 f0 40 00    	call   *0x40f0e8
40c6f7:	85 c0                	test   %eax,%eax
40c6f9:	0f 84 43 02 00 00    	je     0x40c942
40c6ff:	8b 85 28 e5 ff ff    	mov    -0x1ad8(%ebp),%eax
40c705:	01 85 38 e5 ff ff    	add    %eax,-0x1ac8(%ebp)
40c70b:	3b c6                	cmp    %esi,%eax
40c70d:	0f 8c 3b 02 00 00    	jl     0x40c94e
40c713:	8b c3                	mov    %ebx,%eax
40c715:	2b 85 34 e5 ff ff    	sub    -0x1acc(%ebp),%eax
40c71b:	3b 45 10             	cmp    0x10(%ebp),%eax
40c71e:	0f 82 6c ff ff ff    	jb     0x40c690
40c724:	e9 25 02 00 00       	jmp    0x40c94e
40c729:	80 bd 3f e5 ff ff 02 	cmpb   $0x2,-0x1ac1(%ebp)
40c730:	0f 85 cd 00 00 00    	jne    0x40c803
40c736:	8b 9d 34 e5 ff ff    	mov    -0x1acc(%ebp),%ebx
40c73c:	39 4d 10             	cmp    %ecx,0x10(%ebp)
40c73f:	0f 86 48 02 00 00    	jbe    0x40c98d
40c745:	83 a5 40 e5 ff ff 00 	andl   $0x0,-0x1ac0(%ebp)
40c74c:	8b cb                	mov    %ebx,%ecx
40c74e:	2b 8d 34 e5 ff ff    	sub    -0x1acc(%ebp),%ecx
40c754:	6a 02                	push   $0x2
40c756:	8d 85 48 e5 ff ff    	lea    -0x1ab8(%ebp),%eax
40c75c:	5e                   	pop    %esi
40c75d:	3b 4d 10             	cmp    0x10(%ebp),%ecx
40c760:	73 43                	jae    0x40c7a5
40c762:	0f b7 13             	movzwl (%ebx),%edx
40c765:	03 de                	add    %esi,%ebx
40c767:	03 ce                	add    %esi,%ecx
40c769:	89 9d 20 e5 ff ff    	mov    %ebx,-0x1ae0(%ebp)
40c76f:	83 fa 0a             	cmp    $0xa,%edx
40c772:	75 1a                	jne    0x40c78e
40c774:	01 b5 30 e5 ff ff    	add    %esi,-0x1ad0(%ebp)
40c77a:	6a 0d                	push   $0xd
40c77c:	5b                   	pop    %ebx
40c77d:	66 89 18             	mov    %bx,(%eax)
40c780:	8b 9d 20 e5 ff ff    	mov    -0x1ae0(%ebp),%ebx