4056d9:	5d                   	pop    %ebp
4056da:	c3                   	ret
4056db:	55                   	push   %ebp
4056dc:	8b ec                	mov    %esp,%ebp
4056de:	51                   	push   %ecx
4056df:	57                   	push   %edi
4056e0:	8b 7d 08             	mov    0x8(%ebp),%edi
4056e3:	66 81 ff ff ff       	cmp    $0xffff,%di
4056e8:	0f b7 c7             	movzwl %di,%eax
4056eb:	89 45 fc             	mov    %eax,-0x4(%ebp)
4056ee:	74 4c                	je     0x40573c
4056f0:	8b 4d 0c             	mov    0xc(%ebp),%ecx
4056f3:	56                   	push   %esi
4056f4:	8b 31                	mov    (%ecx),%esi
4056f6:	85 f6                	test   %esi,%esi
4056f8:	ba 00 01 00 00       	mov    $0x100,%edx
4056fd:	75 16                	jne    0x405715
4056ff:	66 3b fa             	cmp    %dx,%di
405702:	73 11                	jae    0x405715
405704:	8d 4f bf             	lea    -0x41(%edi),%ecx
405707:	66 83 f9 19          	cmp    $0x19,%cx
40570b:	77 2e                	ja     0x40573b
40570d:	83 c7 20             	add    $0x20,%edi
405710:	0f b7 c7             	movzwl %di,%eax
405713:	eb 26                	jmp    0x40573b
405715:	ff 71 04             	push   0x4(%ecx)
405718:	8d 45 fc             	lea    -0x4(%ebp),%eax
40571b:	6a 01                	push   $0x1
40571d:	50                   	push   %eax
40571e:	6a 01                	push   $0x1
405720:	8d 45 08             	lea    0x8(%ebp),%eax
405723:	50                   	push   %eax
405724:	52                   	push   %edx
405725:	56                   	push   %esi
405726:	6a 00                	push   $0x0
405728:	e8 2e 55 00 00       	call   0x40ac5b
40572d:	83 c4 20             	add    $0x20,%esp
405730:	85 c0                	test   %eax,%eax
405732:	0f b7 45 08          	movzwl 0x8(%ebp),%eax
405736:	74 03                	je     0x40573b
405738:	8b 45 fc             	mov    -0x4(%ebp),%eax
40573b:	5e                   	pop    %esi
40573c:	5f                   	pop    %edi
40573d:	c9                   	leave
40573e:	c3                   	ret
40573f:	55                   	push   %ebp
405740:	8b ec                	mov    %esp,%ebp
405742:	51                   	push   %ecx
405743:	56                   	push   %esi
405744:	8b 75 08             	mov    0x8(%ebp),%esi
405747:	66 81 fe ff ff       	cmp    $0xffff,%si
40574c:	0f b7 c6             	movzwl %si,%eax
40574f:	89 45 fc             	mov    %eax,-0x4(%ebp)
405752:	74 4b                	je     0x40579f
405754:	8b 4d 0c             	mov    0xc(%ebp),%ecx
405757:	8b 11                	mov    (%ecx),%edx
405759:	85 d2                	test   %edx,%edx
40575b:	75 18                	jne    0x405775
40575d:	66 81 fe 00 01       	cmp    $0x100,%si
405762:	73 11                	jae    0x405775
405764:	8d 4e 9f             	lea    -0x61(%esi),%ecx
405767:	66 83 f9 19          	cmp    $0x19,%cx
40576b:	77 32                	ja     0x40579f
40576d:	83 c6 e0             	add    $0xffffffe0,%esi
405770:	0f b7 c6             	movzwl %si,%eax
405773:	eb 2a                	jmp    0x40579f
405775:	ff 71 04             	push   0x4(%ecx)
405778:	8d 45 fc             	lea    -0x4(%ebp),%eax
40577b:	6a 01                	push   $0x1
40577d:	50                   	push   %eax
40577e:	6a 01                	push   $0x1
405780:	8d 45 08             	lea    0x8(%ebp),%eax
405783:	50                   	push   %eax
405784:	68 00 02 00 00       	push   $0x200
405789:	52                   	push   %edx
40578a:	6a 00                	push   $0x0
40578c:	e8 ca 54 00 00       	call   0x40ac5b
405791:	83 c4 20             	add    $0x20,%esp
405794:	85 c0                	test   %eax,%eax
405796:	0f b7 45 08          	movzwl 0x8(%ebp),%eax
40579a:	74 03                	je     0x40579f
40579c:	8b 45 fc             	mov    -0x4(%ebp),%eax
40579f:	5e                   	pop    %esi
4057a0:	c9                   	leave
4057a1:	c3                   	ret
4057a2:	cc                   	int3
4057a3:	cc                   	int3
4057a4:	cc                   	int3
4057a5:	cc                   	int3
4057a6:	cc                   	int3
4057a7:	cc                   	int3
4057a8:	cc                   	int3
4057a9:	cc                   	int3
4057aa:	cc                   	int3
4057ab:	cc                   	int3
4057ac:	cc                   	int3
4057ad:	cc                   	int3
4057ae:	cc                   	int3
4057af:	cc                   	int3
4057b0:	8d 42 ff             	lea    -0x1(%edx),%eax
4057b3:	5b                   	pop    %ebx
4057b4:	c3                   	ret
4057b5:	8d a4 24 00 00 00 00 	lea    0x0(%esp),%esp
4057bc:	8d 64 24 00          	lea    0x0(%esp),%esp
4057c0:	33 c0                	xor    %eax,%eax
4057c2:	8a 44 24 08          	mov    0x8(%esp),%al
4057c6:	53                   	push   %ebx
4057c7:	8b d8                	mov    %eax,%ebx
4057c9:	c1 e0 08             	shl    $0x8,%eax
4057cc:	8b 54 24 08          	mov    0x8(%esp),%edx
4057d0:	f7 c2 03 00 00 00    	test   $0x3,%edx
4057d6:	74 15                	je     0x4057ed
4057d8:	8a 0a                	mov    (%edx),%cl
4057da:	83 c2 01             	add    $0x1,%edx
4057dd:	3a cb                	cmp    %bl,%cl
4057df:	74 cf                	je     0x4057b0
4057e1:	84 c9                	test   %cl,%cl
4057e3:	74 51                	je     0x405836
4057e5:	f7 c2 03 00 00 00    	test   $0x3,%edx
4057eb:	75 eb                	jne    0x4057d8
4057ed:	0b d8                	or     %eax,%ebx
4057ef:	57                   	push   %edi
4057f0:	8b c3                	mov    %ebx,%eax
4057f2:	c1 e3 10             	shl    $0x10,%ebx
4057f5:	56                   	push   %esi
4057f6:	0b d8                	or     %eax,%ebx
4057f8:	8b 0a                	mov    (%edx),%ecx
4057fa:	bf ff fe fe 7e       	mov    $0x7efefeff,%edi
4057ff:	8b c1                	mov    %ecx,%eax
405801:	8b f7                	mov    %edi,%esi
405803:	33 cb                	xor    %ebx,%ecx
405805:	03 f0                	add    %eax,%esi
405807:	03 f9                	add    %ecx,%edi
405809:	83 f1 ff             	xor    $0xffffffff,%ecx
40580c:	83 f0 ff             	xor    $0xffffffff,%eax
40580f:	33 cf                	xor    %edi,%ecx
405811:	33 c6                	xor    %esi,%eax
405813:	83 c2 04             	add    $0x4,%edx
405816:	81 e1 00 01 01 81    	and    $0x81010100,%ecx
40581c:	75 1c                	jne    0x40583a
40581e:	25 00 01 01 81       	and    $0x81010100,%eax
405823:	74 d3                	je     0x4057f8
405825:	25 00 01 01 01       	and    $0x1010100,%eax
40582a:	75 08                	jne    0x405834
40582c:	81 e6 00 00 00 80    	and    $0x80000000,%esi
405832:	75 c4                	jne    0x4057f8
405834:	5e                   	pop    %esi
405835:	5f                   	pop    %edi
405836:	5b                   	pop    %ebx
405837:	33 c0                	xor    %eax,%eax
405839:	c3                   	ret
40583a:	8b 42 fc             	mov    -0x4(%edx),%eax
40583d:	3a c3                	cmp    %bl,%al
40583f:	74 36                	je     0x405877
405841:	84 c0                	test   %al,%al
405843:	74 ef                	je     0x405834
405845:	3a e3                	cmp    %bl,%ah
405847:	74 27                	je     0x405870
405849:	84 e4                	test   %ah,%ah
40584b:	74 e7                	je     0x405834
40584d:	c1 e8 10             	shr    $0x10,%eax
405850:	3a c3                	cmp    %bl,%al
405852:	74 15                	je     0x405869
405854:	84 c0                	test   %al,%al
405856:	74 dc                	je     0x405834
405858:	3a e3                	cmp    %bl,%ah
40585a:	74 06                	je     0x405862
40585c:	84 e4                	test   %ah,%ah
40585e:	74 d4                	je     0x405834
405860:	eb 96                	jmp    0x4057f8
405862:	5e                   	pop    %esi
405863:	5f                   	pop    %edi
405864:	8d 42 ff             	lea    -0x1(%edx),%eax
405867:	5b                   	pop    %ebx
405868:	c3                   	ret
405869:	8d 42 fe             	lea    -0x2(%edx),%eax
40586c:	5e                   	pop    %esi
40586d:	5f                   	pop    %edi
40586e:	5b                   	pop    %ebx
40586f:	c3                   	ret
405870:	8d 42 fd             	lea    -0x3(%edx),%eax
405873:	5e                   	pop    %esi
405874:	5f                   	pop    %edi
405875:	5b                   	pop    %ebx
405876:	c3                   	ret
405877:	8d 42 fc             	lea    -0x4(%edx),%eax
40587a:	5e                   	pop    %esi
40587b:	5f                   	pop    %edi
40587c:	5b                   	pop    %ebx
40587d:	c3                   	ret
40587e:	8b c1                	mov    %ecx,%eax
405880:	83 60 04 00          	andl   $0x0,0x4(%eax)
405884:	83 60 08 00          	andl   $0x0,0x8(%eax)
405888:	c7 00 18 76 41 00    	movl   $0x417618,(%eax)
40588e:	c3                   	ret
40588f:	53                   	push   %ebx
405890:	8b 5c 24 08          	mov    0x8(%esp),%ebx
405894:	56                   	push   %esi
405895:	57                   	push   %edi
405896:	8b f9                	mov    %ecx,%edi
405898:	c7 07 18 76 41 00    	movl   $0x417618,(%edi)
40589e:	8b 03                	mov    (%ebx),%eax
4058a0:	85 c0                	test   %eax,%eax
4058a2:	74 26                	je     0x4058ca
4058a4:	50                   	push   %eax
4058a5:	e8 b6 0e 00 00       	call   0x406760
4058aa:	8b f0                	mov    %eax,%esi
4058ac:	46                   	inc    %esi
4058ad:	56                   	push   %esi
4058ae:	e8 9c 54 00 00       	call   0x40ad4f
4058b3:	85 c0                	test   %eax,%eax
4058b5:	59                   	pop    %ecx
4058b6:	59                   	pop    %ecx
4058b7:	89 47 04             	mov    %eax,0x4(%edi)
4058ba:	74 12                	je     0x4058ce
4058bc:	ff 33                	push   (%ebx)
4058be:	56                   	push   %esi
4058bf:	50                   	push   %eax
4058c0:	e8 d6 53 00 00       	call   0x40ac9b
4058c5:	83 c4 0c             	add    $0xc,%esp
4058c8:	eb 04                	jmp    0x4058ce
4058ca:	83 67 04 00          	andl   $0x0,0x4(%edi)
4058ce:	c7 47 08 01 00 00 00 	movl   $0x1,0x8(%edi)
4058d5:	8b c7                	mov    %edi,%eax
4058d7:	5f                   	pop    %edi
4058d8:	5e                   	pop    %esi
4058d9:	5b                   	pop    %ebx
4058da:	c2 04 00             	ret    $0x4
4058dd:	8b c1                	mov    %ecx,%eax
4058df:	8b 4c 24 04          	mov    0x4(%esp),%ecx
4058e3:	c7 00 18 76 41 00    	movl   $0x417618,(%eax)
4058e9:	8b 09                	mov    (%ecx),%ecx
4058eb:	83 60 08 00          	andl   $0x0,0x8(%eax)
4058ef:	89 48 04             	mov    %ecx,0x4(%eax)
4058f2:	c2 08 00             	ret    $0x8
4058f5:	53                   	push   %ebx
4058f6:	8b 5c 24 08          	mov    0x8(%esp),%ebx
4058fa:	56                   	push   %esi
4058fb:	8b f1                	mov    %ecx,%esi
4058fd:	c7 06 18 76 41 00    	movl   $0x417618,(%esi)
405903:	8b 43 08             	mov    0x8(%ebx),%eax
405906:	89 46 08             	mov    %eax,0x8(%esi)
405909:	85 c0                	test   %eax,%eax
40590b:	8b 43 04             	mov    0x4(%ebx),%eax
40590e:	57                   	push   %edi
40590f:	74 31                	je     0x405942
405911:	85 c0                	test   %eax,%eax
405913:	74 27                	je     0x40593c
405915:	50                   	push   %eax
405916:	e8 45 0e 00 00       	call   0x406760
40591b:	8b f8                	mov    %eax,%edi
40591d:	47                   	inc    %edi
40591e:	57                   	push   %edi
40591f:	e8 2b 54 00 00       	call   0x40ad4f
405924:	85 c0                	test   %eax,%eax
405926:	59                   	pop    %ecx
405927:	59                   	pop    %ecx
405928:	89 46 04             	mov    %eax,0x4(%esi)
40592b:	74 18                	je     0x405945
40592d:	ff 73 04             	push   0x4(%ebx)
405930:	57                   	push   %edi
405931:	50                   	push   %eax
405932:	e8 64 53 00 00       	call   0x40ac9b
405937:	83 c4 0c             	add    $0xc,%esp
40593a:	eb 09                	jmp    0x405945
40593c:	83 66 04 00          	andl   $0x0,0x4(%esi)
405940:	eb 03                	jmp    0x405945
405942:	89 46 04             	mov    %eax,0x4(%esi)
405945:	5f                   	pop    %edi
405946:	8b c6                	mov    %esi,%eax
405948:	5e                   	pop    %esi
405949:	5b                   	pop    %ebx
40594a:	c2 04 00             	ret    $0x4
40594d:	83 79 08 00          	cmpl   $0x0,0x8(%ecx)
405951:	c7 01 18 76 41 00    	movl   $0x417618,(%ecx)
405957:	74 09                	je     0x405962
405959:	ff 71 04             	push   0x4(%ecx)
40595c:	e8 f2 0a 00 00       	call   0x406453
405961:	59                   	pop    %ecx
405962:	c3                   	ret
405963:	8b 41 04             	mov    0x4(%ecx),%eax
405966:	85 c0                	test   %eax,%eax
405968:	75 05                	jne    0x40596f
40596a:	b8 20 76 41 00       	mov    $0x417620,%eax
40596f:	c3                   	ret
405970:	56                   	push   %esi
405971:	8d 44 24 08          	lea    0x8(%esp),%eax
405975:	50                   	push   %eax
405976:	8b f1                	mov    %ecx,%esi
405978:	e8 12 ff ff ff       	call   0x40588f
40597d:	c7 06 38 76 41 00    	movl   $0x417638,(%esi)
405983:	8b c6                	mov    %esi,%eax
405985:	5e                   	pop    %esi
405986:	c2 04 00             	ret    $0x4
405989:	56                   	push   %esi
40598a:	ff 74 24 08          	push   0x8(%esp)
40598e:	8b f1                	mov    %ecx,%esi
405990:	e8 60 ff ff ff       	call   0x4058f5
405995:	c7 06 38 76 41 00    	movl   $0x417638,(%esi)
40599b:	8b c6                	mov    %esi,%eax
40599d:	5e                   	pop    %esi
40599e:	c2 04 00             	ret    $0x4
4059a1:	c7 01 38 76 41 00    	movl   $0x417638,(%ecx)
4059a7:	e9 a1 ff ff ff       	jmp    0x40594d
4059ac:	56                   	push   %esi
4059ad:	8b f1                	mov    %ecx,%esi
4059af:	e8 99 ff ff ff       	call   0x40594d
4059b4:	f6 44 24 08 01       	testb  $0x1,0x8(%esp)
4059b9:	74 07                	je     0x4059c2
4059bb:	56                   	push   %esi
4059bc:	e8 6e 00 00 00       	call   0x405a2f
4059c1:	59                   	pop    %ecx
4059c2:	8b c6                	mov    %esi,%eax
4059c4:	5e                   	pop    %esi
4059c5:	c2 04 00             	ret    $0x4
4059c8:	56                   	push   %esi
4059c9:	8b f1                	mov    %ecx,%esi
4059cb:	c7 06 38 76 41 00    	movl   $0x417638,(%esi)
4059d1:	e8 77 ff ff ff       	call   0x40594d
4059d6:	f6 44 24 08 01       	testb  $0x1,0x8(%esp)
4059db:	74 07                	je     0x4059e4
4059dd:	56                   	push   %esi
4059de:	e8 4c 00 00 00       	call   0x405a2f
4059e3:	59                   	pop    %ecx
4059e4:	8b c6                	mov    %esi,%eax
4059e6:	5e                   	pop    %esi
4059e7:	c2 04 00             	ret    $0x4
4059ea:	51                   	push   %ecx
4059eb:	c7 01 44 76 41 00    	movl   $0x417644,(%ecx)
4059f1:	e8 1c 54 00 00       	call   0x40ae12
4059f6:	59                   	pop    %ecx
4059f7:	c3                   	ret
4059f8:	56                   	push   %esi
4059f9:	8b f1                	mov    %ecx,%esi
4059fb:	e8 ea ff ff ff       	call   0x4059ea
405a00:	f6 44 24 08 01       	testb  $0x1,0x8(%esp)
405a05:	74 07                	je     0x405a0e
405a07:	56                   	push   %esi
405a08:	e8 22 00 00 00       	call   0x405a2f
405a0d:	59                   	pop    %ecx
405a0e:	8b c6                	mov    %esi,%eax
405a10:	5e                   	pop    %esi
405a11:	c2 04 00             	ret    $0x4
405a14:	8b 44 24 04          	mov    0x4(%esp),%eax
405a18:	83 c1 09             	add    $0x9,%ecx
405a1b:	51                   	push   %ecx
405a1c:	83 c0 09             	add    $0x9,%eax
405a1f:	50                   	push   %eax
405a20:	e8 6b 54 00 00       	call   0x40ae90
405a25:	f7 d8                	neg    %eax