40d571:	85 f6                	test   %esi,%esi
40d573:	79 04                	jns    0x40d579
40d575:	3b f1                	cmp    %ecx,%esi
40d577:	75 14                	jne    0x40d58d
40d579:	8b 45 08             	mov    0x8(%ebp),%eax
40d57c:	85 c0                	test   %eax,%eax
40d57e:	74 0d                	je     0x40d58d
40d580:	89 18                	mov    %ebx,(%eax)
40d582:	eb 09                	jmp    0x40d58d
40d584:	85 d2                	test   %edx,%edx
40d586:	74 05                	je     0x40d58d
40d588:	33 c0                	xor    %eax,%eax
40d58a:	66 89 03             	mov    %ax,(%ebx)
40d58d:	5f                   	pop    %edi
40d58e:	8b c6                	mov    %esi,%eax
40d590:	5e                   	pop    %esi
40d591:	5b                   	pop    %ebx
40d592:	5d                   	pop    %ebp
40d593:	c2 14 00             	ret    $0x14
40d596:	8b ff                	mov    %edi,%edi
40d598:	55                   	push   %ebp
40d599:	8b ec                	mov    %esp,%ebp
40d59b:	6a 00                	push   $0x0
40d59d:	6a 04                	push   $0x4
40d59f:	8d 45 10             	lea    0x10(%ebp),%eax
40d5a2:	50                   	push   %eax
40d5a3:	51                   	push   %ecx
40d5a4:	52                   	push   %edx
40d5a5:	6a 2b                	push   $0x2b
40d5a7:	ff 75 0c             	push   0xc(%ebp)
40d5aa:	ff 75 08             	push   0x8(%ebp)
40d5ad:	ff 15 2c 21 41 00    	call   *0x41212c
40d5b3:	83 c4 20             	add    $0x20,%esp
40d5b6:	5d                   	pop    %ebp
40d5b7:	c2 0c 00             	ret    $0xc
40d5ba:	8b ff                	mov    %edi,%edi
40d5bc:	55                   	push   %ebp
40d5bd:	8b ec                	mov    %esp,%ebp
40d5bf:	83 ec 28             	sub    $0x28,%esp
40d5c2:	53                   	push   %ebx
40d5c3:	56                   	push   %esi
40d5c4:	57                   	push   %edi
40d5c5:	8b f9                	mov    %ecx,%edi
40d5c7:	8b f2                	mov    %edx,%esi
40d5c9:	85 ff                	test   %edi,%edi
40d5cb:	0f 84 e9 00 00 00    	je     0x40d6ba
40d5d1:	33 db                	xor    %ebx,%ebx
40d5d3:	66 39 1f             	cmp    %bx,(%edi)
40d5d6:	0f 84 de 00 00 00    	je     0x40d6ba
40d5dc:	68 04 01 00 00       	push   $0x104
40d5e1:	8b ce                	mov    %esi,%ecx
40d5e3:	e8 05 a3 ff ff       	call   0x4078ed
40d5e8:	8b 46 04             	mov    0x4(%esi),%eax
40d5eb:	2b 06                	sub    (%esi),%eax
40d5ed:	53                   	push   %ebx
40d5ee:	ff 36                	push   (%esi)
40d5f0:	d1 f8                	sar    $1,%eax
40d5f2:	50                   	push   %eax
40d5f3:	57                   	push   %edi
40d5f4:	ff 15 84 20 41 00    	call   *0x412084
40d5fa:	8b c8                	mov    %eax,%ecx
40d5fc:	85 c9                	test   %ecx,%ecx
40d5fe:	0f 84 d1 00 00 00    	je     0x40d6d5
40d604:	8b 46 04             	mov    0x4(%esi),%eax
40d607:	2b 06                	sub    (%esi),%eax
40d609:	d1 f8                	sar    $1,%eax
40d60b:	3b c8                	cmp    %eax,%ecx
40d60d:	0f 86 bd 00 00 00    	jbe    0x40d6d0
40d613:	51                   	push   %ecx
40d614:	8b ce                	mov    %esi,%ecx
40d616:	e8 d2 a2 ff ff       	call   0x4078ed
40d61b:	8b 46 04             	mov    0x4(%esi),%eax
40d61e:	2b 06                	sub    (%esi),%eax
40d620:	53                   	push   %ebx
40d621:	ff 36                	push   (%esi)
40d623:	d1 f8                	sar    $1,%eax
40d625:	50                   	push   %eax
40d626:	57                   	push   %edi
40d627:	ff 15 84 20 41 00    	call   *0x412084
40d62d:	8b c8                	mov    %eax,%ecx
40d62f:	85 c9                	test   %ecx,%ecx
40d631:	75 44                	jne    0x40d677
40d633:	ff 15 70 20 41 00    	call   *0x412070
40d639:	8b f0                	mov    %eax,%esi
40d63b:	85 f6                	test   %esi,%esi
40d63d:	75 05                	jne    0x40d644
40d63f:	be 07 05 00 00       	mov    $0x507,%esi
40d644:	a1 00 10 41 00       	mov    0x411000,%eax
40d649:	3d 00 10 41 00       	cmp    $0x411000,%eax
40d64e:	74 20                	je     0x40d670
40d650:	f6 40 1c 01          	testb  $0x1,0x1c(%eax)
40d654:	74 1a                	je     0x40d670
40d656:	80 78 19 02          	cmpb   $0x2,0x19(%eax)
40d65a:	72 14                	jb     0x40d670
40d65c:	56                   	push   %esi
40d65d:	ff 70 14             	push   0x14(%eax)
40d660:	ba d4 47 40 00       	mov    $0x4047d4,%edx
40d665:	ff 70 10             	push   0x10(%eax)
40d668:	6a 0b                	push   $0xb
40d66a:	59                   	pop    %ecx
40d66b:	e8 26 ff ff ff       	call   0x40d596
40d670:	6a 21                	push   $0x21
40d672:	e9 9d 00 00 00       	jmp    0x40d714
40d677:	8b 46 04             	mov    0x4(%esi),%eax
40d67a:	2b 06                	sub    (%esi),%eax
40d67c:	d1 f8                	sar    $1,%eax
40d67e:	3b c8                	cmp    %eax,%ecx
40d680:	76 4e                	jbe    0x40d6d0
40d682:	a1 00 10 41 00       	mov    0x411000,%eax
40d687:	3d 00 10 41 00       	cmp    $0x411000,%eax
40d68c:	74 21                	je     0x40d6af
40d68e:	f6 40 1c 01          	testb  $0x1,0x1c(%eax)
40d692:	74 1b                	je     0x40d6af
40d694:	80 78 19 02          	cmpb   $0x2,0x19(%eax)
40d698:	72 15                	jb     0x40d6af
40d69a:	6a 7a                	push   $0x7a
40d69c:	ff 70 14             	push   0x14(%eax)
40d69f:	ba d4 47 40 00       	mov    $0x4047d4,%edx
40d6a4:	ff 70 10             	push   0x10(%eax)
40d6a7:	6a 0c                	push   $0xc
40d6a9:	59                   	pop    %ecx
40d6aa:	e8 e7 fe ff ff       	call   0x40d596
40d6af:	6a 24                	push   $0x24
40d6b1:	68 a4 47 40 00       	push   $0x4047a4
40d6b6:	6a 7a                	push   $0x7a
40d6b8:	eb 60                	jmp    0x40d71a
40d6ba:	8b 06                	mov    (%esi),%eax
40d6bc:	8b ce                	mov    %esi,%ecx
40d6be:	89 46 04             	mov    %eax,0x4(%esi)
40d6c1:	33 c0                	xor    %eax,%eax
40d6c3:	66 89 45 fe          	mov    %ax,-0x2(%ebp)
40d6c7:	8d 45 fe             	lea    -0x2(%ebp),%eax
40d6ca:	50                   	push   %eax
40d6cb:	e8 86 03 00 00       	call   0x40da56
40d6d0:	5f                   	pop    %edi
40d6d1:	5e                   	pop    %esi
40d6d2:	5b                   	pop    %ebx
40d6d3:	c9                   	leave
40d6d4:	c3                   	ret
40d6d5:	ff 15 70 20 41 00    	call   *0x412070
40d6db:	8b f0                	mov    %eax,%esi
40d6dd:	85 f6                	test   %esi,%esi
40d6df:	75 05                	jne    0x40d6e6
40d6e1:	be 07 05 00 00       	mov    $0x507,%esi
40d6e6:	a1 00 10 41 00       	mov    0x411000,%eax
40d6eb:	3d 00 10 41 00       	cmp    $0x411000,%eax
40d6f0:	74 20                	je     0x40d712
40d6f2:	f6 40 1c 01          	testb  $0x1,0x1c(%eax)
40d6f6:	74 1a                	je     0x40d712
40d6f8:	80 78 19 02          	cmpb   $0x2,0x19(%eax)
40d6fc:	72 14                	jb     0x40d712
40d6fe:	56                   	push   %esi
40d6ff:	ff 70 14             	push   0x14(%eax)
40d702:	ba d4 47 40 00       	mov    $0x4047d4,%edx
40d707:	ff 70 10             	push   0x10(%eax)
40d70a:	6a 0a                	push   $0xa
40d70c:	59                   	pop    %ecx
40d70d:	e8 84 fe ff ff       	call   0x40d596
40d712:	6a 1c                	push   $0x1c
40d714:	68 a4 47 40 00       	push   $0x4047a4
40d719:	56                   	push   %esi
40d71a:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40d71d:	e8 df fc ff ff       	call   0x40d401
40d722:	68 60 03 41 00       	push   $0x410360
40d727:	8b c1                	mov    %ecx,%eax
40d729:	50                   	push   %eax
40d72a:	e8 e7 0e 00 00       	call   0x40e616
40d72f:	cc                   	int3
40d730:	8b ff                	mov    %edi,%edi
40d732:	55                   	push   %ebp
40d733:	8b ec                	mov    %esp,%ebp
40d735:	8b 45 08             	mov    0x8(%ebp),%eax
40d738:	8a 40 04             	mov    0x4(%eax),%al
40d73b:	88 41 04             	mov    %al,0x4(%ecx)
40d73e:	8b c1                	mov    %ecx,%eax
40d740:	5d                   	pop    %ebp
40d741:	c2 04 00             	ret    $0x4
40d744:	cc                   	int3
40d745:	cc                   	int3
40d746:	cc                   	int3
40d747:	cc                   	int3
40d748:	cc                   	int3
40d749:	cc                   	int3
40d74a:	cc                   	int3
40d74b:	cc                   	int3
40d74c:	cc                   	int3
40d74d:	cc                   	int3
40d74e:	cc                   	int3
40d74f:	cc                   	int3
40d750:	8b c1                	mov    %ecx,%eax
40d752:	c2 04 00             	ret    $0x4
40d755:	8b ff                	mov    %edi,%edi
40d757:	55                   	push   %ebp
40d758:	8b ec                	mov    %esp,%ebp
40d75a:	51                   	push   %ecx
40d75b:	51                   	push   %ecx
40d75c:	53                   	push   %ebx
40d75d:	8b da                	mov    %edx,%ebx
40d75f:	56                   	push   %esi
40d760:	8b f1                	mov    %ecx,%esi
40d762:	89 5d f8             	mov    %ebx,-0x8(%ebp)
40d765:	8b cb                	mov    %ebx,%ecx
40d767:	57                   	push   %edi
40d768:	33 ff                	xor    %edi,%edi
40d76a:	8d 51 02             	lea    0x2(%ecx),%edx
40d76d:	66 8b 01             	mov    (%ecx),%ax
40d770:	83 c1 02             	add    $0x2,%ecx
40d773:	66 3b c7             	cmp    %di,%ax
40d776:	75 f5                	jne    0x40d76d
40d778:	2b ca                	sub    %edx,%ecx
40d77a:	d1 f9                	sar    $1,%ecx
40d77c:	8d 41 14             	lea    0x14(%ecx),%eax
40d77f:	8b ce                	mov    %esi,%ecx
40d781:	50                   	push   %eax
40d782:	e8 66 a1 ff ff       	call   0x4078ed
40d787:	ff 75 08             	push   0x8(%ebp)
40d78a:	53                   	push   %ebx
40d78b:	eb 37                	jmp    0x40d7c4
40d78d:	8b 7e 04             	mov    0x4(%esi),%edi
40d790:	2b 3e                	sub    (%esi),%edi
40d792:	d1 ff                	sar    $1,%edi
40d794:	81 ff ff ff ff 7f    	cmp    $0x7fffffff,%edi
40d79a:	73 46                	jae    0x40d7e2
40d79c:	6a 00                	push   $0x0
40d79e:	8b ce                	mov    %esi,%ecx
40d7a0:	e8 48 a1 ff ff       	call   0x4078ed
40d7a5:	81 ff ff ff ff 3f    	cmp    $0x3fffffff,%edi
40d7ab:	72 07                	jb     0x40d7b4
40d7ad:	bf ff ff ff 7f       	mov    $0x7fffffff,%edi
40d7b2:	eb 02                	jmp    0x40d7b6
40d7b4:	03 ff                	add    %edi,%edi
40d7b6:	57                   	push   %edi
40d7b7:	8b ce                	mov    %esi,%ecx
40d7b9:	e8 2f a1 ff ff       	call   0x4078ed
40d7be:	ff 75 08             	push   0x8(%ebp)
40d7c1:	ff 75 f8             	push   -0x8(%ebp)
40d7c4:	8b 56 04             	mov    0x4(%esi),%edx
40d7c7:	8d 45 fc             	lea    -0x4(%ebp),%eax
40d7ca:	2b 16                	sub    (%esi),%edx
40d7cc:	51                   	push   %ecx
40d7cd:	51                   	push   %ecx
40d7ce:	8b 0e                	mov    (%esi),%ecx
40d7d0:	50                   	push   %eax
40d7d1:	d1 fa                	sar    $1,%edx
40d7d3:	e8 25 fd ff ff       	call   0x40d4fd
40d7d8:	8b d8                	mov    %eax,%ebx
40d7da:	81 fb 7a 00 07 80    	cmp    $0x8007007a,%ebx
40d7e0:	74 ab                	je     0x40d78d
40d7e2:	8b ce                	mov    %esi,%ecx
40d7e4:	85 db                	test   %ebx,%ebx
40d7e6:	78 10                	js     0x40d7f8
40d7e8:	8b 45 fc             	mov    -0x4(%ebp),%eax
40d7eb:	2b 06                	sub    (%esi),%eax
40d7ed:	d1 f8                	sar    $1,%eax
40d7ef:	40                   	inc    %eax
40d7f0:	50                   	push   %eax
40d7f1:	e8 f7 a0 ff ff       	call   0x4078ed
40d7f6:	eb 0e                	jmp    0x40d806
40d7f8:	6a 01                	push   $0x1
40d7fa:	e8 ee a0 ff ff       	call   0x4078ed
40d7ff:	8b 06                	mov    (%esi),%eax
40d801:	33 c9                	xor    %ecx,%ecx
40d803:	66 89 08             	mov    %cx,(%eax)
40d806:	5f                   	pop    %edi
40d807:	5e                   	pop    %esi
40d808:	8b c3                	mov    %ebx,%eax
40d80a:	5b                   	pop    %ebx
40d80b:	c9                   	leave
40d80c:	c3                   	ret
40d80d:	8b ff                	mov    %edi,%edi
40d80f:	55                   	push   %ebp
40d810:	8b ec                	mov    %esp,%ebp
40d812:	53                   	push   %ebx
40d813:	56                   	push   %esi
40d814:	57                   	push   %edi
40d815:	33 db                	xor    %ebx,%ebx
40d817:	8b f9                	mov    %ecx,%edi
40d819:	53                   	push   %ebx
40d81a:	53                   	push   %ebx
40d81b:	53                   	push   %ebx
40d81c:	53                   	push   %ebx
40d81d:	6a ff                	push   $0xffffffff
40d81f:	57                   	push   %edi
40d820:	53                   	push   %ebx
40d821:	68 e9 fd 00 00       	push   $0xfde9
40d826:	ff 15 f8 20 41 00    	call   *0x4120f8
40d82c:	8b 75 08             	mov    0x8(%ebp),%esi
40d82f:	8b ce                	mov    %esi,%ecx
40d831:	85 c0                	test   %eax,%eax
40d833:	75 1f                	jne    0x40d854
40d835:	6a 01                	push   $0x1
40d837:	e8 bf 01 00 00       	call   0x40d9fb
40d83c:	8b 06                	mov    (%esi),%eax
40d83e:	88 18                	mov    %bl,(%eax)
40d840:	ff 15 70 20 41 00    	call   *0x412070
40d846:	85 c0                	test   %eax,%eax
40d848:	7e 37                	jle    0x40d881
40d84a:	0f b7 c0             	movzwl %ax,%eax
40d84d:	0d 00 00 07 80       	or     $0x80070000,%eax
40d852:	eb 2d                	jmp    0x40d881
40d854:	50                   	push   %eax
40d855:	e8 a1 01 00 00       	call   0x40d9fb
40d85a:	8b 46 04             	mov    0x4(%esi),%eax
40d85d:	2b 06                	sub    (%esi),%eax
40d85f:	53                   	push   %ebx
40d860:	53                   	push   %ebx
40d861:	50                   	push   %eax
40d862:	ff 36                	push   (%esi)
40d864:	6a ff                	push   $0xffffffff
40d866:	57                   	push   %edi
40d867:	53                   	push   %ebx
40d868:	68 e9 fd 00 00       	push   $0xfde9
40d86d:	ff 15 f8 20 41 00    	call   *0x4120f8
40d873:	8b ce                	mov    %esi,%ecx
40d875:	85 c0                	test   %eax,%eax
40d877:	74 bc                	je     0x40d835
40d879:	50                   	push   %eax
40d87a:	e8 7c 01 00 00       	call   0x40d9fb
40d87f:	33 c0                	xor    %eax,%eax
40d881:	5f                   	pop    %edi
40d882:	5e                   	pop    %esi
40d883:	5b                   	pop    %ebx
40d884:	5d                   	pop    %ebp
40d885:	c2 04 00             	ret    $0x4
40d888:	8b ff                	mov    %edi,%edi
40d88a:	51                   	push   %ecx
40d88b:	56                   	push   %esi
40d88c:	57                   	push   %edi
40d88d:	6a 00                	push   $0x0
40d88f:	8b f2                	mov    %edx,%esi
40d891:	8b f9                	mov    %ecx,%edi
40d893:	ff 15 b0 20 41 00    	call   *0x4120b0
40d899:	6a 00                	push   $0x0
40d89b:	56                   	push   %esi
40d89c:	8b d7                	mov    %edi,%edx
40d89e:	8b c8                	mov    %eax,%ecx
40d8a0:	e8 04 00 00 00       	call   0x40d8a9
40d8a5:	5f                   	pop    %edi
40d8a6:	5e                   	pop    %esi
40d8a7:	59                   	pop    %ecx
40d8a8:	c3                   	ret
40d8a9:	8b ff                	mov    %edi,%edi
40d8ab:	55                   	push   %ebp
40d8ac:	8b ec                	mov    %esp,%ebp
40d8ae:	83 ec 2c             	sub    $0x2c,%esp
40d8b1:	53                   	push   %ebx
40d8b2:	56                   	push   %esi
40d8b3:	8b f2                	mov    %edx,%esi
40d8b5:	8b d1                	mov    %ecx,%edx
40d8b7:	8b 4d 0c             	mov    0xc(%ebp),%ecx