43c5fc:	50                   	push   %eax
43c5fd:	e8 9a ff ff ff       	call   0x43c59c
43c602:	8b c6                	mov    %esi,%eax
43c604:	5e                   	pop    %esi
43c605:	c3                   	ret
43c606:	8b 44 24 04          	mov    0x4(%esp),%eax
43c60a:	85 c0                	test   %eax,%eax
43c60c:	75 05                	jne    0x43c613
43c60e:	e8 38 8e ff ff       	call   0x43544b
43c613:	3b 41 04             	cmp    0x4(%ecx),%eax
43c616:	56                   	push   %esi
43c617:	75 07                	jne    0x43c620
43c619:	8b 10                	mov    (%eax),%edx
43c61b:	89 51 04             	mov    %edx,0x4(%ecx)
43c61e:	eb 07                	jmp    0x43c627
43c620:	8b 50 04             	mov    0x4(%eax),%edx
43c623:	8b 30                	mov    (%eax),%esi
43c625:	89 32                	mov    %esi,(%edx)
43c627:	3b 41 08             	cmp    0x8(%ecx),%eax
43c62a:	75 08                	jne    0x43c634
43c62c:	8b 50 04             	mov    0x4(%eax),%edx
43c62f:	89 51 08             	mov    %edx,0x8(%ecx)
43c632:	eb 08                	jmp    0x43c63c
43c634:	8b 10                	mov    (%eax),%edx
43c636:	8b 70 04             	mov    0x4(%eax),%esi
43c639:	89 72 04             	mov    %esi,0x4(%edx)
43c63c:	50                   	push   %eax
43c63d:	e8 5a ff ff ff       	call   0x43c59c
43c642:	5e                   	pop    %esi
43c643:	c2 04 00             	ret    $0x4
43c646:	8b 54 24 04          	mov    0x4(%esp),%edx
43c64a:	3b 51 0c             	cmp    0xc(%ecx),%edx
43c64d:	7d 10                	jge    0x43c65f
43c64f:	85 d2                	test   %edx,%edx
43c651:	7c 0c                	jl     0x43c65f
43c653:	8b 41 04             	mov    0x4(%ecx),%eax
43c656:	74 09                	je     0x43c661
43c658:	4a                   	dec    %edx
43c659:	8b 00                	mov    (%eax),%eax
43c65b:	75 fb                	jne    0x43c658
43c65d:	eb 02                	jmp    0x43c661
43c65f:	33 c0                	xor    %eax,%eax
43c661:	c2 04 00             	ret    $0x4
43c664:	8b 44 24 08          	mov    0x8(%esp),%eax
43c668:	85 c0                	test   %eax,%eax
43c66a:	75 0e                	jne    0x43c67a
43c66c:	8b 41 04             	mov    0x4(%ecx),%eax
43c66f:	eb 0b                	jmp    0x43c67c
43c671:	8b 48 08             	mov    0x8(%eax),%ecx
43c674:	3b 4c 24 04          	cmp    0x4(%esp),%ecx
43c678:	74 06                	je     0x43c680
43c67a:	8b 00                	mov    (%eax),%eax
43c67c:	85 c0                	test   %eax,%eax
43c67e:	75 f1                	jne    0x43c671
43c680:	c2 08 00             	ret    $0x8
43c683:	8b c1                	mov    %ecx,%eax
43c685:	33 c9                	xor    %ecx,%ecx
43c687:	89 48 0c             	mov    %ecx,0xc(%eax)
43c68a:	89 48 10             	mov    %ecx,0x10(%eax)
43c68d:	89 48 08             	mov    %ecx,0x8(%eax)
43c690:	89 48 04             	mov    %ecx,0x4(%eax)
43c693:	89 48 14             	mov    %ecx,0x14(%eax)
43c696:	8b 4c 24 04          	mov    0x4(%esp),%ecx
43c69a:	c7 00 fc be 48 00    	movl   $0x48befc,(%eax)
43c6a0:	89 48 18             	mov    %ecx,0x18(%eax)
43c6a3:	c2 04 00             	ret    $0x4
43c6a6:	c7 01 fc be 48 00    	movl   $0x48befc,(%ecx)
43c6ac:	e9 cb fe ff ff       	jmp    0x43c57c
43c6b1:	56                   	push   %esi
43c6b2:	8b f1                	mov    %ecx,%esi
43c6b4:	83 7e 10 00          	cmpl   $0x0,0x10(%esi)
43c6b8:	75 2d                	jne    0x43c6e7
43c6ba:	6a 0c                	push   $0xc
43c6bc:	ff 76 18             	push   0x18(%esi)
43c6bf:	8d 46 14             	lea    0x14(%esi),%eax
43c6c2:	50                   	push   %eax
43c6c3:	e8 a0 01 00 00       	call   0x43c868
43c6c8:	8b 4e 18             	mov    0x18(%esi),%ecx
43c6cb:	83 c0 04             	add    $0x4,%eax
43c6ce:	8d 14 49             	lea    (%ecx,%ecx,2),%edx
43c6d1:	49                   	dec    %ecx
43c6d2:	8d 44 90 f4          	lea    -0xc(%eax,%edx,4),%eax
43c6d6:	78 0f                	js     0x43c6e7
43c6d8:	41                   	inc    %ecx
43c6d9:	8b 56 10             	mov    0x10(%esi),%edx
43c6dc:	89 10                	mov    %edx,(%eax)
43c6de:	89 46 10             	mov    %eax,0x10(%esi)
43c6e1:	83 e8 0c             	sub    $0xc,%eax
43c6e4:	49                   	dec    %ecx
43c6e5:	75 f2                	jne    0x43c6d9
43c6e7:	8b 46 10             	mov    0x10(%esi),%eax
43c6ea:	8b 08                	mov    (%eax),%ecx
43c6ec:	89 4e 10             	mov    %ecx,0x10(%esi)
43c6ef:	8b 4c 24 08          	mov    0x8(%esp),%ecx
43c6f3:	89 48 04             	mov    %ecx,0x4(%eax)
43c6f6:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
43c6fa:	89 08                	mov    %ecx,(%eax)
43c6fc:	ff 46 0c             	incl   0xc(%esi)
43c6ff:	83 60 08 00          	andl   $0x0,0x8(%eax)
43c703:	5e                   	pop    %esi
43c704:	c2 08 00             	ret    $0x8
43c707:	56                   	push   %esi
43c708:	8b f1                	mov    %ecx,%esi
43c70a:	ff 76 04             	push   0x4(%esi)
43c70d:	6a 00                	push   $0x0
43c70f:	e8 9d ff ff ff       	call   0x43c6b1
43c714:	8b 4c 24 08          	mov    0x8(%esp),%ecx
43c718:	89 48 08             	mov    %ecx,0x8(%eax)
43c71b:	8b 4e 04             	mov    0x4(%esi),%ecx
43c71e:	85 c9                	test   %ecx,%ecx
43c720:	74 05                	je     0x43c727
43c722:	89 41 04             	mov    %eax,0x4(%ecx)
43c725:	eb 03                	jmp    0x43c72a
43c727:	89 46 08             	mov    %eax,0x8(%esi)
43c72a:	89 46 04             	mov    %eax,0x4(%esi)
43c72d:	5e                   	pop    %esi
43c72e:	c2 04 00             	ret    $0x4
43c731:	56                   	push   %esi
43c732:	8b f1                	mov    %ecx,%esi
43c734:	6a 00                	push   $0x0
43c736:	ff 76 08             	push   0x8(%esi)
43c739:	e8 73 ff ff ff       	call   0x43c6b1
43c73e:	8b 4c 24 08          	mov    0x8(%esp),%ecx
43c742:	89 48 08             	mov    %ecx,0x8(%eax)
43c745:	8b 4e 08             	mov    0x8(%esi),%ecx
43c748:	85 c9                	test   %ecx,%ecx
43c74a:	74 04                	je     0x43c750
43c74c:	89 01                	mov    %eax,(%ecx)
43c74e:	eb 03                	jmp    0x43c753
43c750:	89 46 04             	mov    %eax,0x4(%esi)
43c753:	89 46 08             	mov    %eax,0x8(%esi)
43c756:	5e                   	pop    %esi
43c757:	c2 04 00             	ret    $0x4
43c75a:	55                   	push   %ebp
43c75b:	8b ec                	mov    %esp,%ebp
43c75d:	56                   	push   %esi
43c75e:	8b 75 08             	mov    0x8(%ebp),%esi
43c761:	85 f6                	test   %esi,%esi
43c763:	57                   	push   %edi
43c764:	8b f9                	mov    %ecx,%edi
43c766:	75 05                	jne    0x43c76d
43c768:	e8 de 8c ff ff       	call   0x43544b
43c76d:	8b 46 08             	mov    0x8(%esi),%eax
43c770:	85 c0                	test   %eax,%eax
43c772:	89 45 08             	mov    %eax,0x8(%ebp)
43c775:	74 1a                	je     0x43c791
43c777:	8d 45 08             	lea    0x8(%ebp),%eax
43c77a:	50                   	push   %eax
43c77b:	8b ce                	mov    %esi,%ecx
43c77d:	e8 f9 ac fc ff       	call   0x40747b
43c782:	ff 30                	push   (%eax)
43c784:	8b cf                	mov    %edi,%ecx
43c786:	e8 7c ff ff ff       	call   0x43c707
43c78b:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
43c78f:	75 e6                	jne    0x43c777
43c791:	5f                   	pop    %edi
43c792:	5e                   	pop    %esi
43c793:	5d                   	pop    %ebp
43c794:	c2 04 00             	ret    $0x4
43c797:	55                   	push   %ebp
43c798:	8b ec                	mov    %esp,%ebp
43c79a:	56                   	push   %esi
43c79b:	8b 75 08             	mov    0x8(%ebp),%esi
43c79e:	85 f6                	test   %esi,%esi
43c7a0:	57                   	push   %edi
43c7a1:	8b f9                	mov    %ecx,%edi
43c7a3:	75 05                	jne    0x43c7aa
43c7a5:	e8 a1 8c ff ff       	call   0x43544b
43c7aa:	8b 46 04             	mov    0x4(%esi),%eax
43c7ad:	85 c0                	test   %eax,%eax
43c7af:	89 45 08             	mov    %eax,0x8(%ebp)
43c7b2:	74 1a                	je     0x43c7ce
43c7b4:	8d 45 08             	lea    0x8(%ebp),%eax
43c7b7:	50                   	push   %eax
43c7b8:	8b ce                	mov    %esi,%ecx
43c7ba:	e8 a3 ac fc ff       	call   0x407462
43c7bf:	ff 30                	push   (%eax)
43c7c1:	8b cf                	mov    %edi,%ecx
43c7c3:	e8 69 ff ff ff       	call   0x43c731
43c7c8:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
43c7cc:	75 e6                	jne    0x43c7b4
43c7ce:	5f                   	pop    %edi
43c7cf:	5e                   	pop    %esi
43c7d0:	5d                   	pop    %ebp
43c7d1:	c2 04 00             	ret    $0x4
43c7d4:	56                   	push   %esi
43c7d5:	8b 74 24 08          	mov    0x8(%esp),%esi
43c7d9:	85 f6                	test   %esi,%esi
43c7db:	57                   	push   %edi
43c7dc:	8b f9                	mov    %ecx,%edi
43c7de:	75 0b                	jne    0x43c7eb
43c7e0:	ff 74 24 10          	push   0x10(%esp)
43c7e4:	e8 1e ff ff ff       	call   0x43c707
43c7e9:	eb 21                	jmp    0x43c80c
43c7eb:	56                   	push   %esi
43c7ec:	ff 76 04             	push   0x4(%esi)
43c7ef:	e8 bd fe ff ff       	call   0x43c6b1
43c7f4:	8b 4c 24 10          	mov    0x10(%esp),%ecx
43c7f8:	89 48 08             	mov    %ecx,0x8(%eax)
43c7fb:	8b 4e 04             	mov    0x4(%esi),%ecx
43c7fe:	85 c9                	test   %ecx,%ecx
43c800:	74 04                	je     0x43c806
43c802:	89 01                	mov    %eax,(%ecx)
43c804:	eb 03                	jmp    0x43c809
43c806:	89 47 04             	mov    %eax,0x4(%edi)
43c809:	89 46 04             	mov    %eax,0x4(%esi)
43c80c:	5f                   	pop    %edi
43c80d:	5e                   	pop    %esi
43c80e:	c2 08 00             	ret    $0x8
43c811:	56                   	push   %esi
43c812:	8b 74 24 08          	mov    0x8(%esp),%esi
43c816:	85 f6                	test   %esi,%esi
43c818:	57                   	push   %edi
43c819:	8b f9                	mov    %ecx,%edi
43c81b:	75 0b                	jne    0x43c828
43c81d:	ff 74 24 10          	push   0x10(%esp)
43c821:	e8 0b ff ff ff       	call   0x43c731
43c826:	eb 1f                	jmp    0x43c847
43c828:	ff 36                	push   (%esi)
43c82a:	56                   	push   %esi
43c82b:	e8 81 fe ff ff       	call   0x43c6b1
43c830:	8b 4c 24 10          	mov    0x10(%esp),%ecx
43c834:	89 48 08             	mov    %ecx,0x8(%eax)
43c837:	8b 0e                	mov    (%esi),%ecx
43c839:	85 c9                	test   %ecx,%ecx
43c83b:	74 05                	je     0x43c842
43c83d:	89 41 04             	mov    %eax,0x4(%ecx)
43c840:	eb 03                	jmp    0x43c845
43c842:	89 47 08             	mov    %eax,0x8(%edi)
43c845:	89 06                	mov    %eax,(%esi)
43c847:	5f                   	pop    %edi
43c848:	5e                   	pop    %esi
43c849:	c2 08 00             	ret    $0x8
43c84c:	56                   	push   %esi
43c84d:	8b f1                	mov    %ecx,%esi
43c84f:	e8 52 fe ff ff       	call   0x43c6a6
43c854:	f6 44 24 08 01       	testb  $0x1,0x8(%esp)
43c859:	74 07                	je     0x43c862
43c85b:	56                   	push   %esi
43c85c:	e8 1f 38 00 00       	call   0x440080
43c861:	59                   	pop    %ecx
43c862:	8b c6                	mov    %esi,%eax
43c864:	5e                   	pop    %esi
43c865:	c2 04 00             	ret    $0x4
43c868:	8b 44 24 08          	mov    0x8(%esp),%eax
43c86c:	85 c0                	test   %eax,%eax
43c86e:	74 23                	je     0x43c893
43c870:	83 7c 24 0c 00       	cmpl   $0x0,0xc(%esp)
43c875:	74 1c                	je     0x43c893
43c877:	0f af 44 24 0c       	imul   0xc(%esp),%eax
43c87c:	83 c0 04             	add    $0x4,%eax
43c87f:	50                   	push   %eax
43c880:	e8 d0 37 00 00       	call   0x440055
43c885:	59                   	pop    %ecx
43c886:	8b 4c 24 04          	mov    0x4(%esp),%ecx
43c88a:	8b 11                	mov    (%ecx),%edx
43c88c:	89 10                	mov    %edx,(%eax)
43c88e:	89 01                	mov    %eax,(%ecx)
43c890:	c2 0c 00             	ret    $0xc
43c893:	e8 b3 8b ff ff       	call   0x43544b
43c898:	cc                   	int3
43c899:	85 c9                	test   %ecx,%ecx
43c89b:	74 11                	je     0x43c8ae
43c89d:	56                   	push   %esi
43c89e:	8b 31                	mov    (%ecx),%esi
43c8a0:	51                   	push   %ecx
43c8a1:	e8 da 37 00 00       	call   0x440080
43c8a6:	85 f6                	test   %esi,%esi
43c8a8:	59                   	pop    %ecx
43c8a9:	8b ce                	mov    %esi,%ecx
43c8ab:	75 f1                	jne    0x43c89e
43c8ad:	5e                   	pop    %esi
43c8ae:	c3                   	ret
43c8af:	55                   	push   %ebp
43c8b0:	8b ec                	mov    %esp,%ebp
43c8b2:	53                   	push   %ebx
43c8b3:	56                   	push   %esi
43c8b4:	57                   	push   %edi
43c8b5:	8b 7d 08             	mov    0x8(%ebp),%edi
43c8b8:	33 db                	xor    %ebx,%ebx
43c8ba:	3b fb                	cmp    %ebx,%edi
43c8bc:	8b f1                	mov    %ecx,%esi
43c8be:	0f 8c a5 00 00 00    	jl     0x43c969
43c8c4:	8b 45 0c             	mov    0xc(%ebp),%eax
43c8c7:	3b c3                	cmp    %ebx,%eax
43c8c9:	7c 03                	jl     0x43c8ce
43c8cb:	89 46 10             	mov    %eax,0x10(%esi)
43c8ce:	3b fb                	cmp    %ebx,%edi
43c8d0:	75 14                	jne    0x43c8e6
43c8d2:	ff 76 04             	push   0x4(%esi)
43c8d5:	e8 a6 37 00 00       	call   0x440080
43c8da:	59                   	pop    %ecx
43c8db:	89 5e 0c             	mov    %ebx,0xc(%esi)
43c8de:	89 5e 08             	mov    %ebx,0x8(%esi)
43c8e1:	e9 c4 00 00 00       	jmp    0x43c9aa
43c8e6:	8b 4e 04             	mov    0x4(%esi),%ecx
43c8e9:	3b cb                	cmp    %ebx,%ecx
43c8eb:	75 1f                	jne    0x43c90c
43c8ed:	57                   	push   %edi
43c8ee:	e8 62 37 00 00       	call   0x440055
43c8f3:	57                   	push   %edi
43c8f4:	53                   	push   %ebx
43c8f5:	50                   	push   %eax
43c8f6:	89 46 04             	mov    %eax,0x4(%esi)
43c8f9:	e8 42 b9 fd ff       	call   0x418240
43c8fe:	83 c4 10             	add    $0x10,%esp
43c901:	89 7e 0c             	mov    %edi,0xc(%esi)
43c904:	89 7e 08             	mov    %edi,0x8(%esi)
43c907:	e9 a1 00 00 00       	jmp    0x43c9ad
43c90c:	8b 5e 0c             	mov    0xc(%esi),%ebx
43c90f:	3b fb                	cmp    %ebx,%edi
43c911:	7f 1b                	jg     0x43c92e
43c913:	8b 46 08             	mov    0x8(%esi),%eax
43c916:	3b f8                	cmp    %eax,%edi
43c918:	7e ea                	jle    0x43c904
43c91a:	8b d7                	mov    %edi,%edx
43c91c:	2b d0                	sub    %eax,%edx
43c91e:	52                   	push   %edx
43c91f:	03 c1                	add    %ecx,%eax
43c921:	6a 00                	push   $0x0
43c923:	50                   	push   %eax
43c924:	e8 17 b9 fd ff       	call   0x418240
43c929:	83 c4 0c             	add    $0xc,%esp
43c92c:	eb d6                	jmp    0x43c904
43c92e:	8b 46 10             	mov    0x10(%esi),%eax
43c931:	85 c0                	test   %eax,%eax
43c933:	75 23                	jne    0x43c958
43c935:	8b 46 08             	mov    0x8(%esi),%eax
43c938:	6a 08                	push   $0x8
43c93a:	99                   	cltd
43c93b:	59                   	pop    %ecx
43c93c:	f7 f9                	idiv   %ecx
43c93e:	83 f8 04             	cmp    $0x4,%eax
43c941:	7c 12                	jl     0x43c955
43c943:	b9 00 04 00 00       	mov    $0x400,%ecx
43c948:	3b c1                	cmp    %ecx,%eax
43c94a:	7e 04                	jle    0x43c950
43c94c:	8b c1                	mov    %ecx,%eax
43c94e:	eb 08                	jmp    0x43c958
43c950:	83 f8 04             	cmp    $0x4,%eax
43c953:	7d 03                	jge    0x43c958
43c955:	6a 04                	push   $0x4
43c957:	58                   	pop    %eax
43c958:	03 c3                	add    %ebx,%eax
43c95a:	3b f8                	cmp    %eax,%edi
43c95c:	89 45 08             	mov    %eax,0x8(%ebp)
43c95f:	7c 03                	jl     0x43c964
43c961:	89 7d 08             	mov    %edi,0x8(%ebp)
43c964:	39 5d 08             	cmp    %ebx,0x8(%ebp)
43c967:	7d 05                	jge    0x43c96e