411566:	75 02                	jne    0x41156a
411568:	8b d7                	mov    %edi,%edx
41156a:	8b 4e 10             	mov    0x10(%esi),%ecx
41156d:	8d 41 04             	lea    0x4(%ecx),%eax
411570:	89 46 10             	mov    %eax,0x10(%esi)
411573:	8a 01                	mov    (%ecx),%al
411575:	88 02                	mov    %al,(%edx)
411577:	c7 46 34 01 00 00 00 	movl   $0x1,0x34(%esi)
41157e:	8b 87 04 04 00 00    	mov    0x404(%edi),%eax
411584:	85 c0                	test   %eax,%eax
411586:	74 02                	je     0x41158a
411588:	8b f8                	mov    %eax,%edi
41158a:	89 7e 30             	mov    %edi,0x30(%esi)
41158d:	b0 01                	mov    $0x1,%al
41158f:	5f                   	pop    %edi
411590:	5e                   	pop    %esi
411591:	c2 04 00             	ret    $0x4
411594:	8b ff                	mov    %edi,%edi
411596:	55                   	push   %ebp
411597:	8b ec                	mov    %esp,%ebp
411599:	51                   	push   %ecx
41159a:	53                   	push   %ebx
41159b:	56                   	push   %esi
41159c:	8b f1                	mov    %ecx,%esi
41159e:	57                   	push   %edi
41159f:	8b 56 10             	mov    0x10(%esi),%edx
4115a2:	c6 46 38 01          	movb   $0x1,0x38(%esi)
4115a6:	8d 42 04             	lea    0x4(%edx),%eax
4115a9:	89 46 10             	mov    %eax,0x10(%esi)
4115ac:	ff 76 28             	push   0x28(%esi)
4115af:	0f b7 46 2e          	movzwl 0x2e(%esi),%eax
4115b3:	0f b7 1a             	movzwl (%edx),%ebx
4115b6:	50                   	push   %eax
4115b7:	ff 76 04             	push   0x4(%esi)
4115ba:	ff 36                	push   (%esi)
4115bc:	e8 c6 c5 ff ff       	call   0x40db87
4115c1:	83 c4 10             	add    $0x10,%esp
4115c4:	84 c0                	test   %al,%al
4115c6:	75 43                	jne    0x41160b
4115c8:	88 5d fc             	mov    %bl,-0x4(%ebp)
4115cb:	8b 5e 08             	mov    0x8(%esi),%ebx
4115ce:	88 45 fd             	mov    %al,-0x3(%ebp)
4115d1:	38 43 14             	cmp    %al,0x14(%ebx)
4115d4:	75 07                	jne    0x4115dd
4115d6:	8b cb                	mov    %ebx,%ecx
4115d8:	e8 e3 02 00 00       	call   0x4118c0
4115dd:	8b 43 0c             	mov    0xc(%ebx),%eax
4115e0:	8d 7e 3c             	lea    0x3c(%esi),%edi
4115e3:	8b 48 04             	mov    0x4(%eax),%ecx
4115e6:	8b 87 04 04 00 00    	mov    0x404(%edi),%eax
4115ec:	85 c0                	test   %eax,%eax
4115ee:	75 02                	jne    0x4115f2
4115f0:	8b c7                	mov    %edi,%eax
4115f2:	53                   	push   %ebx
4115f3:	51                   	push   %ecx
4115f4:	8d 4d fc             	lea    -0x4(%ebp),%ecx
4115f7:	51                   	push   %ecx
4115f8:	50                   	push   %eax
4115f9:	e8 d7 c0 00 00       	call   0x41d6d5
4115fe:	83 c4 10             	add    $0x10,%esp
411601:	85 c0                	test   %eax,%eax
411603:	79 18                	jns    0x41161d
411605:	c6 46 2c 01          	movb   $0x1,0x2c(%esi)
411609:	eb 12                	jmp    0x41161d
41160b:	8d 7e 3c             	lea    0x3c(%esi),%edi
41160e:	8b 87 04 04 00 00    	mov    0x404(%edi),%eax
411614:	85 c0                	test   %eax,%eax
411616:	75 02                	jne    0x41161a
411618:	8b c7                	mov    %edi,%eax
41161a:	66 89 18             	mov    %bx,(%eax)
41161d:	8b 87 04 04 00 00    	mov    0x404(%edi),%eax
411623:	85 c0                	test   %eax,%eax
411625:	74 02                	je     0x411629
411627:	8b f8                	mov    %eax,%edi
411629:	89 7e 30             	mov    %edi,0x30(%esi)
41162c:	b0 01                	mov    $0x1,%al
41162e:	5f                   	pop    %edi
41162f:	c7 46 34 01 00 00 00 	movl   $0x1,0x34(%esi)
411636:	5e                   	pop    %esi
411637:	5b                   	pop    %ebx
411638:	c9                   	leave
411639:	c2 04 00             	ret    $0x4
41163c:	8b ff                	mov    %edi,%edi
41163e:	56                   	push   %esi
41163f:	8b f1                	mov    %ecx,%esi
411641:	57                   	push   %edi
411642:	8b 56 10             	mov    0x10(%esi),%edx
411645:	8d 42 04             	lea    0x4(%edx),%eax
411648:	89 46 10             	mov    %eax,0x10(%esi)
41164b:	8b 3a                	mov    (%edx),%edi
41164d:	e8 a7 c3 00 00       	call   0x41d9f9
411652:	85 c0                	test   %eax,%eax
411654:	75 24                	jne    0x41167a
411656:	8b 46 08             	mov    0x8(%esi),%eax
411659:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
41165d:	c7 40 18 16 00 00 00 	movl   $0x16,0x18(%eax)
411664:	33 c0                	xor    %eax,%eax
411666:	ff 76 08             	push   0x8(%esi)
411669:	50                   	push   %eax
41166a:	50                   	push   %eax
41166b:	50                   	push   %eax
41166c:	50                   	push   %eax
41166d:	50                   	push   %eax
41166e:	e8 fe bc ff ff       	call   0x40d371
411673:	83 c4 18             	add    $0x18,%esp
411676:	32 c0                	xor    %al,%al
411678:	eb 44                	jmp    0x4116be
41167a:	ff 76 28             	push   0x28(%esi)
41167d:	e8 2b fa ff ff       	call   0x4110ad
411682:	59                   	pop    %ecx
411683:	83 e8 01             	sub    $0x1,%eax
411686:	74 2b                	je     0x4116b3
411688:	83 e8 01             	sub    $0x1,%eax
41168b:	74 1d                	je     0x4116aa
41168d:	48                   	dec    %eax
41168e:	83 e8 01             	sub    $0x1,%eax
411691:	74 10                	je     0x4116a3
411693:	83 e8 04             	sub    $0x4,%eax
411696:	75 be                	jne    0x411656
411698:	8b 46 14             	mov    0x14(%esi),%eax
41169b:	99                   	cltd
41169c:	89 07                	mov    %eax,(%edi)
41169e:	89 57 04             	mov    %edx,0x4(%edi)
4116a1:	eb 15                	jmp    0x4116b8
4116a3:	8b 46 14             	mov    0x14(%esi),%eax
4116a6:	89 07                	mov    %eax,(%edi)
4116a8:	eb 0e                	jmp    0x4116b8
4116aa:	66 8b 46 14          	mov    0x14(%esi),%ax
4116ae:	66 89 07             	mov    %ax,(%edi)
4116b1:	eb 05                	jmp    0x4116b8
4116b3:	8a 46 14             	mov    0x14(%esi),%al
4116b6:	88 07                	mov    %al,(%edi)
4116b8:	c6 46 2c 01          	movb   $0x1,0x2c(%esi)
4116bc:	b0 01                	mov    $0x1,%al
4116be:	5f                   	pop    %edi
4116bf:	5e                   	pop    %esi
4116c0:	c3                   	ret
4116c1:	8b 51 1c             	mov    0x1c(%ecx),%edx
4116c4:	8b c2                	mov    %edx,%eax
4116c6:	c1 e8 05             	shr    $0x5,%eax
4116c9:	a8 01                	test   $0x1,%al
4116cb:	74 09                	je     0x4116d6
4116cd:	81 ca 80 00 00 00    	or     $0x80,%edx
4116d3:	89 51 1c             	mov    %edx,0x1c(%ecx)
4116d6:	6a 00                	push   $0x0
4116d8:	e8 13 cd ff ff       	call   0x40e3f0
4116dd:	c3                   	ret
4116de:	8b 51 1c             	mov    0x1c(%ecx),%edx
4116e1:	8b c2                	mov    %edx,%eax
4116e3:	c1 e8 05             	shr    $0x5,%eax
4116e6:	a8 01                	test   $0x1,%al
4116e8:	74 09                	je     0x4116f3
4116ea:	81 ca 80 00 00 00    	or     $0x80,%edx
4116f0:	89 51 1c             	mov    %edx,0x1c(%ecx)
4116f3:	6a 00                	push   $0x0
4116f5:	e8 83 ce ff ff       	call   0x40e57d
4116fa:	c3                   	ret
4116fb:	6a 01                	push   $0x1
4116fd:	c7 41 24 08 00 00 00 	movl   $0x8,0x24(%ecx)
411704:	c7 41 28 0a 00 00 00 	movl   $0xa,0x28(%ecx)
41170b:	e8 1e d3 ff ff       	call   0x40ea2e
411710:	c3                   	ret
411711:	6a 01                	push   $0x1
411713:	c7 41 24 08 00 00 00 	movl   $0x8,0x24(%ecx)
41171a:	c7 41 28 0a 00 00 00 	movl   $0xa,0x28(%ecx)
411721:	e8 95 d4 ff ff       	call   0x40ebbb
411726:	c3                   	ret
411727:	8b ff                	mov    %edi,%edi
411729:	53                   	push   %ebx
41172a:	56                   	push   %esi
41172b:	8b f1                	mov    %ecx,%esi
41172d:	57                   	push   %edi
41172e:	8b 56 10             	mov    0x10(%esi),%edx
411731:	8d 42 04             	lea    0x4(%edx),%eax
411734:	89 46 10             	mov    %eax,0x10(%esi)
411737:	8b 5e 24             	mov    0x24(%esi),%ebx
41173a:	8b 3a                	mov    (%edx),%edi
41173c:	89 7e 30             	mov    %edi,0x30(%esi)
41173f:	83 fb ff             	cmp    $0xffffffff,%ebx
411742:	75 05                	jne    0x411749
411744:	bb ff ff ff 7f       	mov    $0x7fffffff,%ebx
411749:	ff 76 28             	push   0x28(%esi)
41174c:	0f b6 46 2d          	movzbl 0x2d(%esi),%eax
411750:	50                   	push   %eax
411751:	ff 76 04             	push   0x4(%esi)
411754:	ff 36                	push   (%esi)
411756:	e8 fb c3 ff ff       	call   0x40db56
41175b:	83 c4 10             	add    $0x10,%esp
41175e:	84 c0                	test   %al,%al
411760:	74 19                	je     0x41177b
411762:	85 ff                	test   %edi,%edi
411764:	75 08                	jne    0x41176e
411766:	bf 00 25 43 00       	mov    $0x432500,%edi
41176b:	89 7e 30             	mov    %edi,0x30(%esi)
41176e:	53                   	push   %ebx
41176f:	57                   	push   %edi
411770:	c6 46 38 01          	movb   $0x1,0x38(%esi)
411774:	e8 2d b0 00 00       	call   0x41c7a6
411779:	eb 13                	jmp    0x41178e
41177b:	85 ff                	test   %edi,%edi
41177d:	75 08                	jne    0x411787
41177f:	bf 10 25 43 00       	mov    $0x432510,%edi
411784:	89 7e 30             	mov    %edi,0x30(%esi)
411787:	53                   	push   %ebx
411788:	57                   	push   %edi
411789:	e8 f6 ae 00 00       	call   0x41c684
41178e:	59                   	pop    %ecx
41178f:	59                   	pop    %ecx
411790:	5f                   	pop    %edi
411791:	89 46 34             	mov    %eax,0x34(%esi)
411794:	b0 01                	mov    $0x1,%al
411796:	5e                   	pop    %esi
411797:	5b                   	pop    %ebx
411798:	c3                   	ret
411799:	8b ff                	mov    %edi,%edi
41179b:	53                   	push   %ebx
41179c:	56                   	push   %esi
41179d:	8b f1                	mov    %ecx,%esi
41179f:	57                   	push   %edi
4117a0:	8b 56 10             	mov    0x10(%esi),%edx
4117a3:	8d 42 04             	lea    0x4(%edx),%eax
4117a6:	89 46 10             	mov    %eax,0x10(%esi)
4117a9:	8b 5e 24             	mov    0x24(%esi),%ebx
4117ac:	8b 3a                	mov    (%edx),%edi
4117ae:	89 7e 30             	mov    %edi,0x30(%esi)
4117b1:	83 fb ff             	cmp    $0xffffffff,%ebx
4117b4:	75 05                	jne    0x4117bb
4117b6:	bb ff ff ff 7f       	mov    $0x7fffffff,%ebx
4117bb:	ff 76 28             	push   0x28(%esi)
4117be:	0f b7 46 2e          	movzwl 0x2e(%esi),%eax
4117c2:	50                   	push   %eax
4117c3:	ff 76 04             	push   0x4(%esi)
4117c6:	ff 36                	push   (%esi)
4117c8:	e8 ba c3 ff ff       	call   0x40db87
4117cd:	83 c4 10             	add    $0x10,%esp
4117d0:	84 c0                	test   %al,%al
4117d2:	74 1b                	je     0x4117ef
4117d4:	85 ff                	test   %edi,%edi
4117d6:	75 08                	jne    0x4117e0
4117d8:	bf 00 25 43 00       	mov    $0x432500,%edi
4117dd:	89 7e 30             	mov    %edi,0x30(%esi)
4117e0:	53                   	push   %ebx
4117e1:	57                   	push   %edi
4117e2:	c6 46 38 01          	movb   $0x1,0x38(%esi)
4117e6:	e8 bb af 00 00       	call   0x41c7a6
4117eb:	59                   	pop    %ecx
4117ec:	59                   	pop    %ecx
4117ed:	eb 15                	jmp    0x411804
4117ef:	85 ff                	test   %edi,%edi
4117f1:	75 07                	jne    0x4117fa
4117f3:	c7 46 30 10 25 43 00 	movl   $0x432510,0x30(%esi)
4117fa:	6a 00                	push   $0x0
4117fc:	53                   	push   %ebx
4117fd:	8b ce                	mov    %esi,%ecx
4117ff:	e8 09 00 00 00       	call   0x41180d
411804:	5f                   	pop    %edi
411805:	89 46 34             	mov    %eax,0x34(%esi)
411808:	b0 01                	mov    $0x1,%al
41180a:	5e                   	pop    %esi
41180b:	5b                   	pop    %ebx
41180c:	c3                   	ret
41180d:	8b ff                	mov    %edi,%edi
41180f:	55                   	push   %ebp
411810:	8b ec                	mov    %esp,%ebp
411812:	53                   	push   %ebx
411813:	56                   	push   %esi
411814:	8b f1                	mov    %ecx,%esi
411816:	57                   	push   %edi
411817:	8b 5e 08             	mov    0x8(%esi),%ebx
41181a:	80 7b 14 00          	cmpb   $0x0,0x14(%ebx)
41181e:	75 07                	jne    0x411827
411820:	8b cb                	mov    %ebx,%ecx
411822:	e8 99 00 00 00       	call   0x4118c0
411827:	8b 76 30             	mov    0x30(%esi),%esi
41182a:	33 ff                	xor    %edi,%edi
41182c:	39 7d 08             	cmp    %edi,0x8(%ebp)
41182f:	7e 28                	jle    0x411859
411831:	8a 06                	mov    (%esi),%al
411833:	84 c0                	test   %al,%al
411835:	74 22                	je     0x411859
411837:	0f b6 c0             	movzbl %al,%eax
41183a:	68 00 80 00 00       	push   $0x8000
41183f:	50                   	push   %eax
411840:	8b 43 0c             	mov    0xc(%ebx),%eax
411843:	ff 30                	push   (%eax)
411845:	e8 bb 03 00 00       	call   0x411c05
41184a:	83 c4 0c             	add    $0xc,%esp
41184d:	85 c0                	test   %eax,%eax
41184f:	74 01                	je     0x411852
411851:	46                   	inc    %esi
411852:	46                   	inc    %esi
411853:	47                   	inc    %edi
411854:	3b 7d 08             	cmp    0x8(%ebp),%edi
411857:	7c d8                	jl     0x411831
411859:	8b c7                	mov    %edi,%eax
41185b:	5f                   	pop    %edi
41185c:	5e                   	pop    %esi
41185d:	5b                   	pop    %ebx
41185e:	5d                   	pop    %ebp
41185f:	c2 08 00             	ret    $0x8
411862:	8b ff                	mov    %edi,%edi
411864:	55                   	push   %ebp
411865:	8b ec                	mov    %esp,%ebp
411867:	8b 01                	mov    (%ecx),%eax
411869:	48                   	dec    %eax
41186a:	89 01                	mov    %eax,(%ecx)
41186c:	8a 4d 08             	mov    0x8(%ebp),%cl
41186f:	84 c9                	test   %cl,%cl
411871:	74 14                	je     0x411887
411873:	38 08                	cmp    %cl,(%eax)
411875:	74 10                	je     0x411887
411877:	e8 f5 ad 00 00       	call   0x41c671
41187c:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
411882:	e8 67 bb ff ff       	call   0x40d3ee
411887:	5d                   	pop    %ebp
411888:	c2 04 00             	ret    $0x4
41188b:	8b ff                	mov    %edi,%edi
41188d:	55                   	push   %ebp
41188e:	8b ec                	mov    %esp,%ebp
411890:	8b 01                	mov    (%ecx),%eax
411892:	83 c0 fe             	add    $0xfffffffe,%eax
411895:	89 01                	mov    %eax,(%ecx)
411897:	66 8b 4d 08          	mov    0x8(%ebp),%cx
41189b:	66 85 c9             	test   %cx,%cx
41189e:	74 15                	je     0x4118b5
4118a0:	66 39 08             	cmp    %cx,(%eax)
4118a3:	74 10                	je     0x4118b5
4118a5:	e8 c7 ad 00 00       	call   0x41c671
4118aa:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
4118b0:	e8 39 bb ff ff       	call   0x40d3ee
4118b5:	5d                   	pop    %ebp
4118b6:	c2 04 00             	ret    $0x4
4118b9:	cc                   	int3
4118ba:	cc                   	int3
4118bb:	cc                   	int3
4118bc:	cc                   	int3
4118bd:	cc                   	int3
4118be:	cc                   	int3
4118bf:	cc                   	int3
4118c0:	8b ff                	mov    %edi,%edi
4118c2:	55                   	push   %ebp
4118c3:	8b ec                	mov    %esp,%ebp
4118c5:	51                   	push   %ecx
4118c6:	53                   	push   %ebx
4118c7:	56                   	push   %esi
4118c8:	57                   	push   %edi
4118c9:	8b d9                	mov    %ecx,%ebx
4118cb:	e8 05 b9 ff ff       	call   0x40d1d5
4118d0:	ff 73 04             	push   0x4(%ebx)
4118d3:	8d 73 0c             	lea    0xc(%ebx),%esi