405652:	74 19                	je     0x40566d
405654:	52                   	push   %edx
405655:	50                   	push   %eax
405656:	8b 02                	mov    (%edx),%eax
405658:	52                   	push   %edx
405659:	ff 50 04             	call   *0x4(%eax)
40565c:	58                   	pop    %eax
40565d:	8b 08                	mov    (%eax),%ecx
40565f:	8f 00                	pop    (%eax)
405661:	85 c9                	test   %ecx,%ecx
405663:	75 01                	jne    0x405666
405665:	c3                   	ret
405666:	8b 01                	mov    (%ecx),%eax
405668:	51                   	push   %ecx
405669:	ff 50 08             	call   *0x8(%eax)
40566c:	c3                   	ret
40566d:	8b 08                	mov    (%eax),%ecx
40566f:	85 c9                	test   %ecx,%ecx
405671:	89 10                	mov    %edx,(%eax)
405673:	74 06                	je     0x40567b
405675:	8b 01                	mov    (%ecx),%eax
405677:	51                   	push   %ecx
405678:	ff 50 08             	call   *0x8(%eax)
40567b:	c3                   	ret
40567c:	85 d2                	test   %edx,%edx
40567e:	0f 84 b4 ff ff ff    	je     0x405638
405684:	57                   	push   %edi
405685:	89 c7                	mov    %eax,%edi
405687:	6a 00                	push   $0x0
405689:	54                   	push   %esp
40568a:	51                   	push   %ecx
40568b:	52                   	push   %edx
40568c:	8b 02                	mov    (%edx),%eax
40568e:	ff 10                	call   *(%eax)
405690:	85 c0                	test   %eax,%eax
405692:	74 07                	je     0x40569b
405694:	b0 17                	mov    $0x17,%al
405696:	e9 7d d1 ff ff       	jmp    0x402818
40569b:	8b 07                	mov    (%edi),%eax
40569d:	85 c0                	test   %eax,%eax
40569f:	74 06                	je     0x4056a7
4056a1:	50                   	push   %eax
4056a2:	8b 00                	mov    (%eax),%eax
4056a4:	ff 50 08             	call   *0x8(%eax)
4056a7:	58                   	pop    %eax
4056a8:	89 07                	mov    %eax,(%edi)
4056aa:	5f                   	pop    %edi
4056ab:	c3                   	ret
4056ac:	85 c0                	test   %eax,%eax
4056ae:	74 06                	je     0x4056b6
4056b0:	50                   	push   %eax
4056b1:	8b 00                	mov    (%eax),%eax
4056b3:	ff 50 04             	call   *0x4(%eax)
4056b6:	c3                   	ret
4056b7:	90                   	nop
4056b8:	83 c0 04             	add    $0x4,%eax
4056bb:	50                   	push   %eax
4056bc:	e8 33 bc ff ff       	call   0x4012f4
4056c1:	c3                   	ret
4056c2:	8b c0                	mov    %eax,%eax
4056c4:	83 78 04 00          	cmpl   $0x0,0x4(%eax)
4056c8:	74 07                	je     0x4056d1
4056ca:	b0 02                	mov    $0x2,%al
4056cc:	e8 47 d1 ff ff       	call   0x402818
4056d1:	c3                   	ret
4056d2:	8b c0                	mov    %eax,%eax
4056d4:	e8 07 db ff ff       	call   0x4031e0
4056d9:	c7 40 04 01 00 00 00 	movl   $0x1,0x4(%eax)
4056e0:	c3                   	ret
4056e1:	8d 40 00             	lea    0x0(%eax),%eax
4056e4:	55                   	push   %ebp
4056e5:	8b ec                	mov    %esp,%ebp
4056e7:	53                   	push   %ebx
4056e8:	8b 5d 08             	mov    0x8(%ebp),%ebx
4056eb:	8b 4d 10             	mov    0x10(%ebp),%ecx
4056ee:	8b 55 0c             	mov    0xc(%ebp),%edx
4056f1:	8b c3                	mov    %ebx,%eax
4056f3:	e8 04 dc ff ff       	call   0x4032fc
4056f8:	84 c0                	test   %al,%al
4056fa:	74 04                	je     0x405700
4056fc:	33 c0                	xor    %eax,%eax
4056fe:	eb 05                	jmp    0x405705
405700:	b8 02 40 00 80       	mov    $0x80004002,%eax
405705:	5b                   	pop    %ebx
405706:	5d                   	pop    %ebp
405707:	c2 0c 00             	ret    $0xc
40570a:	8b c0                	mov    %eax,%eax
40570c:	55                   	push   %ebp
40570d:	8b ec                	mov    %esp,%ebp
40570f:	8b 45 08             	mov    0x8(%ebp),%eax
405712:	83 c0 04             	add    $0x4,%eax
405715:	50                   	push   %eax
405716:	e8 d1 bb ff ff       	call   0x4012ec
40571b:	5d                   	pop    %ebp
40571c:	c2 04 00             	ret    $0x4
40571f:	90                   	nop
405720:	55                   	push   %ebp
405721:	8b ec                	mov    %esp,%ebp
405723:	53                   	push   %ebx
405724:	56                   	push   %esi
405725:	8b 5d 08             	mov    0x8(%ebp),%ebx
405728:	8d 43 04             	lea    0x4(%ebx),%eax
40572b:	50                   	push   %eax
40572c:	e8 c3 bb ff ff       	call   0x4012f4
405731:	8b f0                	mov    %eax,%esi
405733:	85 f6                	test   %esi,%esi
405735:	75 09                	jne    0x405740
405737:	b2 01                	mov    $0x1,%dl
405739:	8b c3                	mov    %ebx,%eax
40573b:	8b 08                	mov    (%eax),%ecx
40573d:	ff 51 fc             	call   *-0x4(%ecx)
405740:	8b c6                	mov    %esi,%eax
405742:	5e                   	pop    %esi
405743:	5b                   	pop    %ebx
405744:	5d                   	pop    %ebp
405745:	c2 04 00             	ret    $0x4
405748:	55                   	push   %ebp
405749:	8b ec                	mov    %esp,%ebp
40574b:	83 c4 f8             	add    $0xfffffff8,%esp
40574e:	53                   	push   %ebx
40574f:	56                   	push   %esi
405750:	89 4d f8             	mov    %ecx,-0x8(%ebp)
405753:	89 55 fc             	mov    %edx,-0x4(%ebp)
405756:	33 d2                	xor    %edx,%edx
405758:	83 7d f8 00          	cmpl   $0x0,-0x8(%ebp)
40575c:	0f 84 b8 00 00 00    	je     0x40581a
405762:	33 f6                	xor    %esi,%esi
405764:	33 c9                	xor    %ecx,%ecx
405766:	85 c0                	test   %eax,%eax
405768:	0f 84 87 00 00 00    	je     0x4057f5
40576e:	eb 6c                	jmp    0x4057dc
405770:	8b 55 f8             	mov    -0x8(%ebp),%edx
405773:	0f b7 14 4a          	movzwl (%edx,%ecx,2),%edx
405777:	41                   	inc    %ecx
405778:	83 fa 7f             	cmp    $0x7f,%edx
40577b:	77 06                	ja     0x405783
40577d:	88 14 30             	mov    %dl,(%eax,%esi,1)
405780:	46                   	inc    %esi
405781:	eb 59                	jmp    0x4057dc
405783:	81 fa ff 07 00 00    	cmp    $0x7ff,%edx
405789:	76 31                	jbe    0x4057bc
40578b:	8d 5e 03             	lea    0x3(%esi),%ebx
40578e:	3b 5d fc             	cmp    -0x4(%ebp),%ebx
405791:	77 53                	ja     0x4057e6
405793:	8b da                	mov    %edx,%ebx
405795:	c1 eb 0c             	shr    $0xc,%ebx
405798:	80 cb e0             	or     $0xe0,%bl
40579b:	88 1c 30             	mov    %bl,(%eax,%esi,1)
40579e:	8b da                	mov    %edx,%ebx
4057a0:	c1 eb 06             	shr    $0x6,%ebx
4057a3:	80 e3 3f             	and    $0x3f,%bl
4057a6:	80 cb 80             	or     $0x80,%bl
4057a9:	88 5c 30 01          	mov    %bl,0x1(%eax,%esi,1)
4057ad:	80 e2 3f             	and    $0x3f,%dl
4057b0:	80 ca 80             	or     $0x80,%dl
4057b3:	88 54 30 02          	mov    %dl,0x2(%eax,%esi,1)
4057b7:	83 c6 03             	add    $0x3,%esi
4057ba:	eb 20                	jmp    0x4057dc
4057bc:	8d 5e 02             	lea    0x2(%esi),%ebx
4057bf:	3b 5d fc             	cmp    -0x4(%ebp),%ebx
4057c2:	77 22                	ja     0x4057e6
4057c4:	8b da                	mov    %edx,%ebx
4057c6:	c1 eb 06             	shr    $0x6,%ebx
4057c9:	80 cb c0             	or     $0xc0,%bl
4057cc:	88 1c 30             	mov    %bl,(%eax,%esi,1)
4057cf:	80 e2 3f             	and    $0x3f,%dl
4057d2:	80 ca 80             	or     $0x80,%dl
4057d5:	88 54 30 01          	mov    %dl,0x1(%eax,%esi,1)
4057d9:	83 c6 02             	add    $0x2,%esi
4057dc:	3b 4d 08             	cmp    0x8(%ebp),%ecx
4057df:	73 05                	jae    0x4057e6
4057e1:	3b 75 fc             	cmp    -0x4(%ebp),%esi
4057e4:	72 8a                	jb     0x405770
4057e6:	3b 75 fc             	cmp    -0x4(%ebp),%esi
4057e9:	72 04                	jb     0x4057ef
4057eb:	8b 75 fc             	mov    -0x4(%ebp),%esi
4057ee:	4e                   	dec    %esi
4057ef:	c6 04 30 00          	movb   $0x0,(%eax,%esi,1)
4057f3:	eb 22                	jmp    0x405817
4057f5:	3b 4d 08             	cmp    0x8(%ebp),%ecx
4057f8:	73 1d                	jae    0x405817
4057fa:	8b 45 f8             	mov    -0x8(%ebp),%eax
4057fd:	0f b7 14 48          	movzwl (%eax,%ecx,2),%edx
405801:	41                   	inc    %ecx
405802:	83 fa 7f             	cmp    $0x7f,%edx
405805:	76 0a                	jbe    0x405811
405807:	81 fa ff 07 00 00    	cmp    $0x7ff,%edx
40580d:	76 01                	jbe    0x405810
40580f:	46                   	inc    %esi
405810:	46                   	inc    %esi
405811:	46                   	inc    %esi
405812:	3b 4d 08             	cmp    0x8(%ebp),%ecx
405815:	72 e3                	jb     0x4057fa
405817:	8d 56 01             	lea    0x1(%esi),%edx
40581a:	8b c2                	mov    %edx,%eax
40581c:	5e                   	pop    %esi
40581d:	5b                   	pop    %ebx
40581e:	59                   	pop    %ecx
40581f:	59                   	pop    %ecx
405820:	5d                   	pop    %ebp
405821:	c2 04 00             	ret    $0x4
405824:	55                   	push   %ebp
405825:	8b ec                	mov    %esp,%ebp
405827:	83 c4 f0             	add    $0xfffffff0,%esp
40582a:	53                   	push   %ebx
40582b:	56                   	push   %esi
40582c:	89 4d f4             	mov    %ecx,-0xc(%ebp)
40582f:	89 55 f8             	mov    %edx,-0x8(%ebp)
405832:	89 45 fc             	mov    %eax,-0x4(%ebp)
405835:	83 7d f4 00          	cmpl   $0x0,-0xc(%ebp)
405839:	75 0a                	jne    0x405845
40583b:	33 c0                	xor    %eax,%eax
40583d:	89 45 f0             	mov    %eax,-0x10(%ebp)
405840:	e9 09 01 00 00       	jmp    0x40594e
405845:	c7 45 f0 ff ff ff ff 	movl   $0xffffffff,-0x10(%ebp)
40584c:	33 c0                	xor    %eax,%eax
40584e:	33 f6                	xor    %esi,%esi
405850:	83 7d fc 00          	cmpl   $0x0,-0x4(%ebp)
405854:	0f 84 a9 00 00 00    	je     0x405903
40585a:	e9 82 00 00 00       	jmp    0x4058e1
40585f:	8b 55 f4             	mov    -0xc(%ebp),%edx
405862:	33 c9                	xor    %ecx,%ecx
405864:	8a 0c 32             	mov    (%edx,%esi,1),%cl
405867:	46                   	inc    %esi
405868:	f6 c1 80             	test   $0x80,%cl
40586b:	74 6c                	je     0x4058d9
40586d:	3b 75 08             	cmp    0x8(%ebp),%esi
405870:	0f 83 d8 00 00 00    	jae    0x40594e
405876:	83 e1 3f             	and    $0x3f,%ecx
405879:	f6 c1 20             	test   $0x20,%cl
40587c:	74 2e                	je     0x4058ac
40587e:	8b 55 f4             	mov    -0xc(%ebp),%edx
405881:	8a 14 32             	mov    (%edx,%esi,1),%dl
405884:	46                   	inc    %esi
405885:	8b da                	mov    %edx,%ebx
405887:	80 e3 c0             	and    $0xc0,%bl
40588a:	80 fb 80             	cmp    $0x80,%bl
40588d:	0f 85 bb 00 00 00    	jne    0x40594e
405893:	3b 75 08             	cmp    0x8(%ebp),%esi
405896:	0f 83 b2 00 00 00    	jae    0x40594e
40589c:	80 e2 3f             	and    $0x3f,%dl
40589f:	81 e2 ff 00 00 00    	and    $0xff,%edx
4058a5:	c1 e1 06             	shl    $0x6,%ecx
4058a8:	0b d1                	or     %ecx,%edx
4058aa:	8b ca                	mov    %edx,%ecx
4058ac:	8b 55 f4             	mov    -0xc(%ebp),%edx
4058af:	8a 14 32             	mov    (%edx,%esi,1),%dl
4058b2:	46                   	inc    %esi
4058b3:	8b da                	mov    %edx,%ebx
4058b5:	80 e3 c0             	and    $0xc0,%bl
4058b8:	80 fb 80             	cmp    $0x80,%bl
4058bb:	0f 85 8d 00 00 00    	jne    0x40594e
4058c1:	80 e2 3f             	and    $0x3f,%dl
4058c4:	81 e2 ff 00 00 00    	and    $0xff,%edx
4058ca:	c1 e1 06             	shl    $0x6,%ecx
4058cd:	66 0b d1             	or     %cx,%dx
4058d0:	8b 4d fc             	mov    -0x4(%ebp),%ecx
4058d3:	66 89 14 41          	mov    %dx,(%ecx,%eax,2)
4058d7:	eb 07                	jmp    0x4058e0
4058d9:	8b 55 fc             	mov    -0x4(%ebp),%edx
4058dc:	66 89 0c 42          	mov    %cx,(%edx,%eax,2)
4058e0:	40                   	inc    %eax
4058e1:	3b 75 08             	cmp    0x8(%ebp),%esi
4058e4:	73 09                	jae    0x4058ef
4058e6:	3b 45 f8             	cmp    -0x8(%ebp),%eax
4058e9:	0f 82 70 ff ff ff    	jb     0x40585f
4058ef:	3b 45 f8             	cmp    -0x8(%ebp),%eax
4058f2:	72 04                	jb     0x4058f8
4058f4:	8b 45 f8             	mov    -0x8(%ebp),%eax
4058f7:	48                   	dec    %eax
4058f8:	8b 55 fc             	mov    -0x4(%ebp),%edx
4058fb:	66 c7 04 42 00 00    	movw   $0x0,(%edx,%eax,2)
405901:	eb 47                	jmp    0x40594a
405903:	3b 75 08             	cmp    0x8(%ebp),%esi
405906:	73 42                	jae    0x40594a
405908:	8b 55 f4             	mov    -0xc(%ebp),%edx
40590b:	8a 14 32             	mov    (%edx,%esi,1),%dl
40590e:	46                   	inc    %esi
40590f:	f6 c2 80             	test   $0x80,%dl
405912:	74 30                	je     0x405944
405914:	3b 75 08             	cmp    0x8(%ebp),%esi
405917:	73 35                	jae    0x40594e
405919:	80 e2 3f             	and    $0x3f,%dl
40591c:	f6 c2 20             	test   $0x20,%dl
40591f:	74 14                	je     0x405935
405921:	8b 55 f4             	mov    -0xc(%ebp),%edx
405924:	8a 14 32             	mov    (%edx,%esi,1),%dl
405927:	46                   	inc    %esi
405928:	80 e2 c0             	and    $0xc0,%dl
40592b:	80 fa 80             	cmp    $0x80,%dl
40592e:	75 1e                	jne    0x40594e
405930:	3b 75 08             	cmp    0x8(%ebp),%esi
405933:	73 19                	jae    0x40594e
405935:	8b 55 f4             	mov    -0xc(%ebp),%edx
405938:	8a 14 32             	mov    (%edx,%esi,1),%dl
40593b:	46                   	inc    %esi
40593c:	80 e2 c0             	and    $0xc0,%dl
40593f:	80 fa 80             	cmp    $0x80,%dl
405942:	75 0a                	jne    0x40594e
405944:	40                   	inc    %eax
405945:	3b 75 08             	cmp    0x8(%ebp),%esi
405948:	72 be                	jb     0x405908
40594a:	40                   	inc    %eax
40594b:	89 45 f0             	mov    %eax,-0x10(%ebp)
40594e:	8b 45 f0             	mov    -0x10(%ebp),%eax
405951:	5e                   	pop    %esi
405952:	5b                   	pop    %ebx
405953:	8b e5                	mov    %ebp,%esp
405955:	5d                   	pop    %ebp
405956:	c2 04 00             	ret    $0x4
405959:	8d 40 00             	lea    0x0(%eax),%eax
40595c:	55                   	push   %ebp
40595d:	8b ec                	mov    %esp,%ebp
40595f:	6a 00                	push   $0x0
405961:	53                   	push   %ebx
405962:	56                   	push   %esi
405963:	8b f2                	mov    %edx,%esi
405965:	8b d8                	mov    %eax,%ebx
405967:	33 c0                	xor    %eax,%eax
405969:	55                   	push   %ebp
40596a:	68 fb 59 40 00       	push   $0x4059fb
40596f:	64 ff 30             	push   %fs:(%eax)
405972:	64 89 20             	mov    %esp,%fs:(%eax)
405975:	8b c6                	mov    %esi,%eax
405977:	e8 1c e6 ff ff       	call   0x403f98
40597c:	8b c3                	mov    %ebx,%eax
40597e:	33 d2                	xor    %edx,%edx
405980:	e8 6b ee ff ff       	call   0x4047f0
405985:	74 5e                	je     0x4059e5
405987:	8b c3                	mov    %ebx,%eax
405989:	e8 56 ee ff ff       	call   0x4047e4
40598e:	8d 14 40             	lea    (%eax,%eax,2),%edx
405991:	8d 45 fc             	lea    -0x4(%ebp),%eax
405994:	e8 4b ec ff ff       	call   0x4045e4
405999:	8b c3                	mov    %ebx,%eax
40599b:	e8 44 ee ff ff       	call   0x4047e4
4059a0:	50                   	push   %eax
4059a1:	8b 45 fc             	mov    -0x4(%ebp),%eax
4059a4:	e8 af e8 ff ff       	call   0x404258
4059a9:	40                   	inc    %eax
4059aa:	50                   	push   %eax
4059ab:	8b c3                	mov    %ebx,%eax
4059ad:	e8 22 ee ff ff       	call   0x4047d4
4059b2:	50                   	push   %eax
4059b3:	8b 45 fc             	mov    -0x4(%ebp),%eax
4059b6:	e8 9d ea ff ff       	call   0x404458
4059bb:	59                   	pop    %ecx
4059bc:	5a                   	pop    %edx
4059bd:	e8 86 fd ff ff       	call   0x405748
4059c2:	85 c0                	test   %eax,%eax