41a5a7:	8b 08                	mov    (%eax),%ecx
41a5a9:	ff 51 28             	call   *0x28(%ecx)
41a5ac:	84 db                	test   %bl,%bl
41a5ae:	7e 07                	jle    0x41a5b7
41a5b0:	8b c6                	mov    %esi,%eax
41a5b2:	e8 bd 90 fe ff       	call   0x403674
41a5b7:	5e                   	pop    %esi
41a5b8:	5b                   	pop    %ebx
41a5b9:	c3                   	ret
41a5ba:	8b c0                	mov    %eax,%eax
41a5bc:	53                   	push   %ebx
41a5bd:	33 c9                	xor    %ecx,%ecx
41a5bf:	8b 18                	mov    (%eax),%ebx
41a5c1:	ff 53 3c             	call   *0x3c(%ebx)
41a5c4:	5b                   	pop    %ebx
41a5c5:	c3                   	ret
41a5c6:	8b c0                	mov    %eax,%eax
41a5c8:	53                   	push   %ebx
41a5c9:	56                   	push   %esi
41a5ca:	57                   	push   %edi
41a5cb:	55                   	push   %ebp
41a5cc:	51                   	push   %ecx
41a5cd:	8b f9                	mov    %ecx,%edi
41a5cf:	8b f2                	mov    %edx,%esi
41a5d1:	8b d8                	mov    %eax,%ebx
41a5d3:	80 7b 1c 00          	cmpb   $0x0,0x1c(%ebx)
41a5d7:	75 08                	jne    0x41a5e1
41a5d9:	8b 43 14             	mov    0x14(%ebx),%eax
41a5dc:	89 04 24             	mov    %eax,(%esp)
41a5df:	eb 2e                	jmp    0x41a60f
41a5e1:	8b cc                	mov    %esp,%ecx
41a5e3:	8b d6                	mov    %esi,%edx
41a5e5:	8b c3                	mov    %ebx,%eax
41a5e7:	8b 28                	mov    (%eax),%ebp
41a5e9:	ff 95 8c 00 00 00    	call   *0x8c(%ebp)
41a5ef:	84 c0                	test   %al,%al
41a5f1:	74 1c                	je     0x41a60f
41a5f3:	8a 43 1d             	mov    0x1d(%ebx),%al
41a5f6:	2c 01                	sub    $0x1,%al
41a5f8:	72 26                	jb     0x41a620
41a5fa:	fe c8                	dec    %al
41a5fc:	74 02                	je     0x41a600
41a5fe:	eb 0f                	jmp    0x41a60f
41a600:	8b 15 b4 45 47 00    	mov    0x4745b4,%edx
41a606:	33 c9                	xor    %ecx,%ecx
41a608:	8b c3                	mov    %ebx,%eax
41a60a:	e8 69 f5 ff ff       	call   0x419b78
41a60f:	57                   	push   %edi
41a610:	8b ce                	mov    %esi,%ecx
41a612:	8b 54 24 04          	mov    0x4(%esp),%edx
41a616:	8b c3                	mov    %ebx,%eax
41a618:	8b 18                	mov    (%eax),%ebx
41a61a:	ff 93 88 00 00 00    	call   *0x88(%ebx)
41a620:	8b 04 24             	mov    (%esp),%eax
41a623:	5a                   	pop    %edx
41a624:	5d                   	pop    %ebp
41a625:	5f                   	pop    %edi
41a626:	5e                   	pop    %esi
41a627:	5b                   	pop    %ebx
41a628:	c3                   	ret
41a629:	8d 40 00             	lea    0x0(%eax),%eax
41a62c:	53                   	push   %ebx
41a62d:	83 78 08 00          	cmpl   $0x0,0x8(%eax)
41a631:	75 11                	jne    0x41a644
41a633:	66 83 78 22 00       	cmpw   $0x0,0x22(%eax)
41a638:	74 0a                	je     0x41a644
41a63a:	8b d8                	mov    %eax,%ebx
41a63c:	8b d0                	mov    %eax,%edx
41a63e:	8b 43 24             	mov    0x24(%ebx),%eax
41a641:	ff 53 20             	call   *0x20(%ebx)
41a644:	5b                   	pop    %ebx
41a645:	c3                   	ret
41a646:	8b c0                	mov    %eax,%eax
41a648:	53                   	push   %ebx
41a649:	83 78 08 00          	cmpl   $0x0,0x8(%eax)
41a64d:	75 11                	jne    0x41a660
41a64f:	66 83 78 2a 00       	cmpw   $0x0,0x2a(%eax)
41a654:	74 0a                	je     0x41a660
41a656:	8b d8                	mov    %eax,%ebx
41a658:	8b d0                	mov    %eax,%edx
41a65a:	8b 43 2c             	mov    0x2c(%ebx),%eax
41a65d:	ff 53 28             	call   *0x28(%ebx)
41a660:	5b                   	pop    %ebx
41a661:	c3                   	ret
41a662:	8b c0                	mov    %eax,%eax
41a664:	53                   	push   %ebx
41a665:	8b d8                	mov    %eax,%ebx
41a667:	83 7b 14 00          	cmpl   $0x0,0x14(%ebx)
41a66b:	74 33                	je     0x41a6a0
41a66d:	8b c3                	mov    %ebx,%eax
41a66f:	8b 10                	mov    (%eax),%edx
41a671:	ff 92 84 00 00 00    	call   *0x84(%edx)
41a677:	8b 43 10             	mov    0x10(%ebx),%eax
41a67a:	8b 4b 14             	mov    0x14(%ebx),%ecx
41a67d:	8b 15 5c 65 41 00    	mov    0x41655c,%edx
41a683:	e8 50 a4 fe ff       	call   0x404ad8
41a688:	33 c0                	xor    %eax,%eax
41a68a:	89 43 14             	mov    %eax,0x14(%ebx)
41a68d:	33 d2                	xor    %edx,%edx
41a68f:	8b c3                	mov    %ebx,%eax
41a691:	8b 08                	mov    (%eax),%ecx
41a693:	ff 51 28             	call   *0x28(%ecx)
41a696:	8b c3                	mov    %ebx,%eax
41a698:	8b 10                	mov    (%eax),%edx
41a69a:	ff 92 80 00 00 00    	call   *0x80(%edx)
41a6a0:	5b                   	pop    %ebx
41a6a1:	c3                   	ret
41a6a2:	8b c0                	mov    %eax,%eax
41a6a4:	53                   	push   %ebx
41a6a5:	56                   	push   %esi
41a6a6:	8b f2                	mov    %edx,%esi
41a6a8:	8b d8                	mov    %eax,%ebx
41a6aa:	85 f6                	test   %esi,%esi
41a6ac:	7c 05                	jl     0x41a6b3
41a6ae:	3b 73 14             	cmp    0x14(%ebx),%esi
41a6b1:	7c 0f                	jl     0x41a6c2
41a6b3:	8b 15 ec 47 47 00    	mov    0x4747ec,%edx
41a6b9:	8b ce                	mov    %esi,%ecx
41a6bb:	8b c3                	mov    %ebx,%eax
41a6bd:	e8 b6 f4 ff ff       	call   0x419b78
41a6c2:	8b c3                	mov    %ebx,%eax
41a6c4:	8b 10                	mov    (%eax),%edx
41a6c6:	ff 92 84 00 00 00    	call   *0x84(%edx)
41a6cc:	8b 43 10             	mov    0x10(%ebx),%eax
41a6cf:	8d 04 f0             	lea    (%eax,%esi,8),%eax
41a6d2:	8b 15 5c 65 41 00    	mov    0x41655c,%edx
41a6d8:	e8 e7 a4 fe ff       	call   0x404bc4
41a6dd:	ff 4b 14             	decl   0x14(%ebx)
41a6e0:	8b 43 14             	mov    0x14(%ebx),%eax
41a6e3:	3b f0                	cmp    %eax,%esi
41a6e5:	7d 19                	jge    0x41a700
41a6e7:	2b c6                	sub    %esi,%eax
41a6e9:	8b c8                	mov    %eax,%ecx
41a6eb:	c1 e1 03             	shl    $0x3,%ecx
41a6ee:	8b 43 10             	mov    0x10(%ebx),%eax
41a6f1:	8d 14 f0             	lea    (%eax,%esi,8),%edx
41a6f4:	8b 43 10             	mov    0x10(%ebx),%eax
41a6f7:	8d 44 f0 08          	lea    0x8(%eax,%esi,8),%eax
41a6fb:	e8 f0 81 fe ff       	call   0x4028f0
41a700:	8b c3                	mov    %ebx,%eax
41a702:	8b 10                	mov    (%eax),%edx
41a704:	ff 92 80 00 00 00    	call   *0x80(%edx)
41a70a:	5e                   	pop    %esi
41a70b:	5b                   	pop    %ebx
41a70c:	c3                   	ret
41a70d:	8d 40 00             	lea    0x0(%eax),%eax
41a710:	53                   	push   %ebx
41a711:	56                   	push   %esi
41a712:	57                   	push   %edi
41a713:	8b f9                	mov    %ecx,%edi
41a715:	8b f2                	mov    %edx,%esi
41a717:	8b d8                	mov    %eax,%ebx
41a719:	85 f6                	test   %esi,%esi
41a71b:	7c 05                	jl     0x41a722
41a71d:	3b 73 14             	cmp    0x14(%ebx),%esi
41a720:	7c 0f                	jl     0x41a731
41a722:	8b 15 ec 47 47 00    	mov    0x4747ec,%edx
41a728:	8b ce                	mov    %esi,%ecx
41a72a:	8b c3                	mov    %ebx,%eax
41a72c:	e8 47 f4 ff ff       	call   0x419b78
41a731:	85 ff                	test   %edi,%edi
41a733:	7c 05                	jl     0x41a73a
41a735:	3b 7b 14             	cmp    0x14(%ebx),%edi
41a738:	7c 0f                	jl     0x41a749
41a73a:	8b 15 ec 47 47 00    	mov    0x4747ec,%edx
41a740:	8b cf                	mov    %edi,%ecx
41a742:	8b c3                	mov    %ebx,%eax
41a744:	e8 2f f4 ff ff       	call   0x419b78
41a749:	8b c3                	mov    %ebx,%eax
41a74b:	8b 10                	mov    (%eax),%edx
41a74d:	ff 92 84 00 00 00    	call   *0x84(%edx)
41a753:	8b cf                	mov    %edi,%ecx
41a755:	8b d6                	mov    %esi,%edx
41a757:	8b c3                	mov    %ebx,%eax
41a759:	e8 0e 00 00 00       	call   0x41a76c
41a75e:	8b c3                	mov    %ebx,%eax
41a760:	8b 10                	mov    (%eax),%edx
41a762:	ff 92 80 00 00 00    	call   *0x80(%edx)
41a768:	5f                   	pop    %edi
41a769:	5e                   	pop    %esi
41a76a:	5b                   	pop    %ebx
41a76b:	c3                   	ret
41a76c:	53                   	push   %ebx
41a76d:	8b 58 10             	mov    0x10(%eax),%ebx
41a770:	8d 14 d3             	lea    (%ebx,%edx,8),%edx
41a773:	8b 40 10             	mov    0x10(%eax),%eax
41a776:	8d 04 c8             	lea    (%eax,%ecx,8),%eax
41a779:	8b 0a                	mov    (%edx),%ecx
41a77b:	8b 18                	mov    (%eax),%ebx
41a77d:	89 1a                	mov    %ebx,(%edx)
41a77f:	89 08                	mov    %ecx,(%eax)
41a781:	8b 4a 04             	mov    0x4(%edx),%ecx
41a784:	8b 58 04             	mov    0x4(%eax),%ebx
41a787:	89 5a 04             	mov    %ebx,0x4(%edx)
41a78a:	89 48 04             	mov    %ecx,0x4(%eax)
41a78d:	5b                   	pop    %ebx
41a78e:	c3                   	ret
41a78f:	90                   	nop
41a790:	53                   	push   %ebx
41a791:	56                   	push   %esi
41a792:	57                   	push   %edi
41a793:	55                   	push   %ebp
41a794:	83 c4 f0             	add    $0xfffffff0,%esp
41a797:	89 4c 24 04          	mov    %ecx,0x4(%esp)
41a79b:	89 14 24             	mov    %edx,(%esp)
41a79e:	8b f8                	mov    %eax,%edi
41a7a0:	c6 44 24 08 00       	movb   $0x0,0x8(%esp)
41a7a5:	33 f6                	xor    %esi,%esi
41a7a7:	8b 47 14             	mov    0x14(%edi),%eax
41a7aa:	48                   	dec    %eax
41a7ab:	89 44 24 0c          	mov    %eax,0xc(%esp)
41a7af:	3b 74 24 0c          	cmp    0xc(%esp),%esi
41a7b3:	7f 3f                	jg     0x41a7f4
41a7b5:	8b 5c 24 0c          	mov    0xc(%esp),%ebx
41a7b9:	03 de                	add    %esi,%ebx
41a7bb:	d1 eb                	shr    $1,%ebx
41a7bd:	8b 47 10             	mov    0x10(%edi),%eax
41a7c0:	8b 14 d8             	mov    (%eax,%ebx,8),%edx
41a7c3:	8b 0c 24             	mov    (%esp),%ecx
41a7c6:	8b c7                	mov    %edi,%eax
41a7c8:	8b 28                	mov    (%eax),%ebp
41a7ca:	ff 55 34             	call   *0x34(%ebp)
41a7cd:	85 c0                	test   %eax,%eax
41a7cf:	7d 05                	jge    0x41a7d6
41a7d1:	8d 73 01             	lea    0x1(%ebx),%esi
41a7d4:	eb 18                	jmp    0x41a7ee
41a7d6:	8b d3                	mov    %ebx,%edx
41a7d8:	4a                   	dec    %edx
41a7d9:	89 54 24 0c          	mov    %edx,0xc(%esp)
41a7dd:	85 c0                	test   %eax,%eax
41a7df:	75 0d                	jne    0x41a7ee
41a7e1:	c6 44 24 08 01       	movb   $0x1,0x8(%esp)
41a7e6:	80 7f 1d 01          	cmpb   $0x1,0x1d(%edi)
41a7ea:	74 02                	je     0x41a7ee
41a7ec:	8b f3                	mov    %ebx,%esi
41a7ee:	3b 74 24 0c          	cmp    0xc(%esp),%esi
41a7f2:	7e c1                	jle    0x41a7b5
41a7f4:	8b 44 24 04          	mov    0x4(%esp),%eax
41a7f8:	89 30                	mov    %esi,(%eax)
41a7fa:	8a 44 24 08          	mov    0x8(%esp),%al
41a7fe:	83 c4 10             	add    $0x10,%esp
41a801:	5d                   	pop    %ebp
41a802:	5f                   	pop    %edi
41a803:	5e                   	pop    %esi
41a804:	5b                   	pop    %ebx
41a805:	c3                   	ret
41a806:	8b c0                	mov    %eax,%eax
41a808:	53                   	push   %ebx
41a809:	56                   	push   %esi
41a80a:	57                   	push   %edi
41a80b:	8b f9                	mov    %ecx,%edi
41a80d:	8b f2                	mov    %edx,%esi
41a80f:	8b d8                	mov    %eax,%ebx
41a811:	85 f6                	test   %esi,%esi
41a813:	7c 05                	jl     0x41a81a
41a815:	3b 73 14             	cmp    0x14(%ebx),%esi
41a818:	7c 0f                	jl     0x41a829
41a81a:	8b 15 ec 47 47 00    	mov    0x4747ec,%edx
41a820:	8b ce                	mov    %esi,%ecx
41a822:	8b c3                	mov    %ebx,%eax
41a824:	e8 4f f3 ff ff       	call   0x419b78
41a829:	8b c7                	mov    %edi,%eax
41a82b:	8b 53 10             	mov    0x10(%ebx),%edx
41a82e:	8b 14 f2             	mov    (%edx,%esi,8),%edx
41a831:	e8 6e 98 fe ff       	call   0x4040a4
41a836:	5f                   	pop    %edi
41a837:	5e                   	pop    %esi
41a838:	5b                   	pop    %ebx
41a839:	c3                   	ret
41a83a:	8b c0                	mov    %eax,%eax
41a83c:	8b 40 18             	mov    0x18(%eax),%eax
41a83f:	c3                   	ret
41a840:	8b 40 14             	mov    0x14(%eax),%eax
41a843:	c3                   	ret
41a844:	53                   	push   %ebx
41a845:	56                   	push   %esi
41a846:	8b f2                	mov    %edx,%esi
41a848:	8b d8                	mov    %eax,%ebx
41a84a:	85 f6                	test   %esi,%esi
41a84c:	7c 05                	jl     0x41a853
41a84e:	3b 73 14             	cmp    0x14(%ebx),%esi
41a851:	7c 0f                	jl     0x41a862
41a853:	8b 15 ec 47 47 00    	mov    0x4747ec,%edx
41a859:	8b ce                	mov    %esi,%ecx
41a85b:	8b c3                	mov    %ebx,%eax
41a85d:	e8 16 f3 ff ff       	call   0x419b78
41a862:	8b 43 10             	mov    0x10(%ebx),%eax
41a865:	8b 44 f0 04          	mov    0x4(%eax,%esi,8),%eax
41a869:	5e                   	pop    %esi
41a86a:	5b                   	pop    %ebx
41a86b:	c3                   	ret
41a86c:	56                   	push   %esi
41a86d:	8b 50 18             	mov    0x18(%eax),%edx
41a870:	83 fa 40             	cmp    $0x40,%edx
41a873:	7e 0e                	jle    0x41a883
41a875:	8b f2                	mov    %edx,%esi
41a877:	85 f6                	test   %esi,%esi
41a879:	79 03                	jns    0x41a87e
41a87b:	83 c6 03             	add    $0x3,%esi
41a87e:	c1 fe 02             	sar    $0x2,%esi
41a881:	eb 11                	jmp    0x41a894
41a883:	83 fa 08             	cmp    $0x8,%edx
41a886:	7e 07                	jle    0x41a88f
41a888:	be 10 00 00 00       	mov    $0x10,%esi
41a88d:	eb 05                	jmp    0x41a894
41a88f:	be 04 00 00 00       	mov    $0x4,%esi
41a894:	03 f2                	add    %edx,%esi
41a896:	8b d6                	mov    %esi,%edx
41a898:	8b 08                	mov    (%eax),%ecx
41a89a:	ff 51 28             	call   *0x28(%ecx)
41a89d:	5e                   	pop    %esi
41a89e:	c3                   	ret
41a89f:	90                   	nop
41a8a0:	53                   	push   %ebx
41a8a1:	56                   	push   %esi
41a8a2:	51                   	push   %ecx
41a8a3:	8b f2                	mov    %edx,%esi
41a8a5:	8b d8                	mov    %eax,%ebx
41a8a7:	80 7b 1c 00          	cmpb   $0x0,0x1c(%ebx)
41a8ab:	75 0e                	jne    0x41a8bb
41a8ad:	8b d6                	mov    %esi,%edx
41a8af:	8b c3                	mov    %ebx,%eax
41a8b1:	e8 8a f5 ff ff       	call   0x419e40
41a8b6:	89 04 24             	mov    %eax,(%esp)
41a8b9:	eb 19                	jmp    0x41a8d4
41a8bb:	8b cc                	mov    %esp,%ecx
41a8bd:	8b d6                	mov    %esi,%edx
41a8bf:	8b c3                	mov    %ebx,%eax
41a8c1:	8b 18                	mov    (%eax),%ebx
41a8c3:	ff 93 8c 00 00 00    	call   *0x8c(%ebx)
41a8c9:	84 c0                	test   %al,%al
41a8cb:	75 07                	jne    0x41a8d4
41a8cd:	c7 04 24 ff ff ff ff 	movl   $0xffffffff,(%esp)
41a8d4:	8b 04 24             	mov    (%esp),%eax
41a8d7:	5a                   	pop    %edx
41a8d8:	5e                   	pop    %esi
41a8d9:	5b                   	pop    %ebx
41a8da:	c3                   	ret
41a8db:	90                   	nop
41a8dc:	53                   	push   %ebx
41a8dd:	56                   	push   %esi
41a8de:	8b f0                	mov    %eax,%esi
41a8e0:	6a 00                	push   $0x0
41a8e2:	8b c6                	mov    %esi,%eax
41a8e4:	8b 18                	mov    (%eax),%ebx
41a8e6:	ff 53 64             	call   *0x64(%ebx)
41a8e9:	5e                   	pop    %esi
41a8ea:	5b                   	pop    %ebx
41a8eb:	c3                   	ret
41a8ec:	55                   	push   %ebp