407777:	0f 84 90 00 00 00    	je     0x40780d
40777d:	33 ff                	xor    %edi,%edi
40777f:	47                   	inc    %edi
407780:	ff 4e 04             	decl   0x4(%esi)
407783:	78 0a                	js     0x40778f
407785:	8b 0e                	mov    (%esi),%ecx
407787:	0f b6 01             	movzbl (%ecx),%eax
40778a:	41                   	inc    %ecx
40778b:	89 0e                	mov    %ecx,(%esi)
40778d:	eb 07                	jmp    0x407796
40778f:	56                   	push   %esi
407790:	e8 91 71 00 00       	call   0x40e926
407795:	59                   	pop    %ecx
407796:	83 f8 ff             	cmp    $0xffffffff,%eax
407799:	0f 84 5b ff ff ff    	je     0x4076fa
40779f:	88 45 fc             	mov    %al,-0x4(%ebp)
4077a2:	0f b6 c0             	movzbl %al,%eax
4077a5:	50                   	push   %eax
4077a6:	e8 6d 71 00 00       	call   0x40e918
4077ab:	85 c0                	test   %eax,%eax
4077ad:	59                   	pop    %ecx
4077ae:	74 33                	je     0x4077e3
4077b0:	ff 4e 04             	decl   0x4(%esi)
4077b3:	78 0a                	js     0x4077bf
4077b5:	8b 0e                	mov    (%esi),%ecx
4077b7:	0f b6 01             	movzbl (%ecx),%eax
4077ba:	41                   	inc    %ecx
4077bb:	89 0e                	mov    %ecx,(%esi)
4077bd:	eb 07                	jmp    0x4077c6
4077bf:	56                   	push   %esi
4077c0:	e8 61 71 00 00       	call   0x40e926
4077c5:	59                   	pop    %ecx
4077c6:	83 f8 ff             	cmp    $0xffffffff,%eax
4077c9:	75 12                	jne    0x4077dd
4077cb:	0f be 45 fc          	movsbl -0x4(%ebp),%eax
4077cf:	56                   	push   %esi
4077d0:	50                   	push   %eax
4077d1:	e8 36 09 00 00       	call   0x40810c
4077d6:	59                   	pop    %ecx
4077d7:	66 0d ff ff          	or     $0xffff,%ax
4077db:	eb 48                	jmp    0x407825
4077dd:	6a 02                	push   $0x2
4077df:	88 45 fd             	mov    %al,-0x3(%ebp)
4077e2:	5f                   	pop    %edi
4077e3:	57                   	push   %edi
4077e4:	8d 45 fc             	lea    -0x4(%ebp),%eax
4077e7:	50                   	push   %eax
4077e8:	8d 45 08             	lea    0x8(%ebp),%eax
4077eb:	50                   	push   %eax
4077ec:	e8 da 70 00 00       	call   0x40e8cb
4077f1:	83 c4 0c             	add    $0xc,%esp
4077f4:	83 f8 ff             	cmp    $0xffffffff,%eax
4077f7:	0f 85 27 ff ff ff    	jne    0x407724
4077fd:	e8 f8 1b 00 00       	call   0x4093fa
407802:	c7 00 2a 00 00 00    	movl   $0x2a,(%eax)
407808:	e9 ed fe ff ff       	jmp    0x4076fa
40780d:	83 46 04 fe          	addl   $0xfffffffe,0x4(%esi)
407811:	78 0c                	js     0x40781f
407813:	8b 0e                	mov    (%esi),%ecx
407815:	0f b7 01             	movzwl (%ecx),%eax
407818:	83 c1 02             	add    $0x2,%ecx
40781b:	89 0e                	mov    %ecx,(%esi)
40781d:	eb 07                	jmp    0x407826
40781f:	56                   	push   %esi
407820:	e8 61 6e 00 00       	call   0x40e686
407825:	59                   	pop    %ecx
407826:	5f                   	pop    %edi
407827:	5e                   	pop    %esi
407828:	5b                   	pop    %ebx
407829:	c9                   	leave
40782a:	c3                   	ret
40782b:	6a 0c                	push   $0xc
40782d:	68 d0 a9 41 00       	push   $0x41a9d0
407832:	e8 11 5e 00 00       	call   0x40d648
407837:	33 c0                	xor    %eax,%eax
407839:	33 f6                	xor    %esi,%esi
40783b:	39 75 08             	cmp    %esi,0x8(%ebp)
40783e:	0f 95 c0             	setne  %al
407841:	3b c6                	cmp    %esi,%eax
407843:	75 1e                	jne    0x407863
407845:	e8 b0 1b 00 00       	call   0x4093fa
40784a:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
407850:	56                   	push   %esi
407851:	56                   	push   %esi
407852:	56                   	push   %esi
407853:	56                   	push   %esi
407854:	56                   	push   %esi
407855:	e8 f6 fd ff ff       	call   0x407650
40785a:	83 c4 14             	add    $0x14,%esp
40785d:	66 0d ff ff          	or     $0xffff,%ax
407861:	eb 2b                	jmp    0x40788e
407863:	ff 75 08             	push   0x8(%ebp)
407866:	e8 9a 10 00 00       	call   0x408905
40786b:	59                   	pop    %ecx
40786c:	89 75 fc             	mov    %esi,-0x4(%ebp)
40786f:	ff 75 08             	push   0x8(%ebp)
407872:	e8 0d fe ff ff       	call   0x407684
407877:	59                   	pop    %ecx
407878:	0f b7 c0             	movzwl %ax,%eax
40787b:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40787e:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
407885:	e8 0a 00 00 00       	call   0x407894
40788a:	66 8b 45 e4          	mov    -0x1c(%ebp),%ax
40788e:	e8 fa 5d 00 00       	call   0x40d68d
407893:	c3                   	ret
407894:	ff 75 08             	push   0x8(%ebp)
407897:	e8 bb 10 00 00       	call   0x408957
40789c:	59                   	pop    %ecx
40789d:	c3                   	ret
40789e:	55                   	push   %ebp
40789f:	8b ec                	mov    %esp,%ebp
4078a1:	83 ec 10             	sub    $0x10,%esp
4078a4:	a1 20 c5 41 00       	mov    0x41c520,%eax
4078a9:	33 c5                	xor    %ebp,%eax
4078ab:	89 45 fc             	mov    %eax,-0x4(%ebp)
4078ae:	53                   	push   %ebx
4078af:	56                   	push   %esi
4078b0:	8b 75 0c             	mov    0xc(%ebp),%esi
4078b3:	f6 46 0c 40          	testb  $0x40,0xc(%esi)
4078b7:	57                   	push   %edi
4078b8:	0f 85 8f 01 00 00    	jne    0x407a4d
4078be:	56                   	push   %esi
4078bf:	e8 82 71 00 00       	call   0x40ea46
4078c4:	83 f8 ff             	cmp    $0xffffffff,%eax
4078c7:	59                   	pop    %ecx
4078c8:	bf f0 cb 41 00       	mov    $0x41cbf0,%edi
4078cd:	74 2e                	je     0x4078fd
4078cf:	56                   	push   %esi
4078d0:	e8 71 71 00 00       	call   0x40ea46
4078d5:	83 f8 fe             	cmp    $0xfffffffe,%eax
4078d8:	59                   	pop    %ecx
4078d9:	74 22                	je     0x4078fd
4078db:	56                   	push   %esi
4078dc:	e8 65 71 00 00       	call   0x40ea46
4078e1:	c1 f8 05             	sar    $0x5,%eax
4078e4:	56                   	push   %esi
4078e5:	8d 1c 85 c0 e4 41 00 	lea    0x41e4c0(,%eax,4),%ebx
4078ec:	e8 55 71 00 00       	call   0x40ea46
4078f1:	83 e0 1f             	and    $0x1f,%eax
4078f4:	6b c0 28             	imul   $0x28,%eax,%eax
4078f7:	03 03                	add    (%ebx),%eax
4078f9:	59                   	pop    %ecx
4078fa:	59                   	pop    %ecx
4078fb:	eb 02                	jmp    0x4078ff
4078fd:	8b c7                	mov    %edi,%eax
4078ff:	8a 40 24             	mov    0x24(%eax),%al
407902:	24 7f                	and    $0x7f,%al
407904:	3c 02                	cmp    $0x2,%al
407906:	0f 84 41 01 00 00    	je     0x407a4d
40790c:	56                   	push   %esi
40790d:	e8 34 71 00 00       	call   0x40ea46
407912:	83 f8 ff             	cmp    $0xffffffff,%eax
407915:	59                   	pop    %ecx
407916:	74 2e                	je     0x407946
407918:	56                   	push   %esi
407919:	e8 28 71 00 00       	call   0x40ea46
40791e:	83 f8 fe             	cmp    $0xfffffffe,%eax
407921:	59                   	pop    %ecx
407922:	74 22                	je     0x407946
407924:	56                   	push   %esi
407925:	e8 1c 71 00 00       	call   0x40ea46
40792a:	c1 f8 05             	sar    $0x5,%eax
40792d:	56                   	push   %esi
40792e:	8d 1c 85 c0 e4 41 00 	lea    0x41e4c0(,%eax,4),%ebx
407935:	e8 0c 71 00 00       	call   0x40ea46
40793a:	83 e0 1f             	and    $0x1f,%eax
40793d:	6b c0 28             	imul   $0x28,%eax,%eax
407940:	03 03                	add    (%ebx),%eax
407942:	59                   	pop    %ecx
407943:	59                   	pop    %ecx
407944:	eb 02                	jmp    0x407948
407946:	8b c7                	mov    %edi,%eax
407948:	8a 40 24             	mov    0x24(%eax),%al
40794b:	24 7f                	and    $0x7f,%al
40794d:	3c 01                	cmp    $0x1,%al
40794f:	75 5c                	jne    0x4079ad
407951:	ff 4e 04             	decl   0x4(%esi)
407954:	8b 5d 08             	mov    0x8(%ebp),%ebx
407957:	78 0e                	js     0x407967
407959:	8b 06                	mov    (%esi),%eax
40795b:	88 18                	mov    %bl,(%eax)
40795d:	8b 0e                	mov    (%esi),%ecx
40795f:	0f b6 01             	movzbl (%ecx),%eax
407962:	41                   	inc    %ecx
407963:	89 0e                	mov    %ecx,(%esi)
407965:	eb 0c                	jmp    0x407973
407967:	0f be c3             	movsbl %bl,%eax
40796a:	56                   	push   %esi
40796b:	50                   	push   %eax
40796c:	e8 ef 3c 00 00       	call   0x40b660
407971:	59                   	pop    %ecx
407972:	59                   	pop    %ecx
407973:	83 f8 ff             	cmp    $0xffffffff,%eax
407976:	75 09                	jne    0x407981
407978:	66 0d ff ff          	or     $0xffff,%ax
40797c:	e9 ec 00 00 00       	jmp    0x407a6d
407981:	ff 4e 04             	decl   0x4(%esi)
407984:	78 0e                	js     0x407994
407986:	8b 06                	mov    (%esi),%eax
407988:	88 38                	mov    %bh,(%eax)
40798a:	8b 0e                	mov    (%esi),%ecx
40798c:	0f b6 01             	movzbl (%ecx),%eax
40798f:	41                   	inc    %ecx
407990:	89 0e                	mov    %ecx,(%esi)
407992:	eb 0c                	jmp    0x4079a0
407994:	0f be c7             	movsbl %bh,%eax
407997:	56                   	push   %esi
407998:	50                   	push   %eax
407999:	e8 c2 3c 00 00       	call   0x40b660
40799e:	59                   	pop    %ecx
40799f:	59                   	pop    %ecx
4079a0:	83 f8 ff             	cmp    $0xffffffff,%eax
4079a3:	74 d3                	je     0x407978
4079a5:	66 8b c3             	mov    %bx,%ax
4079a8:	e9 c0 00 00 00       	jmp    0x407a6d
4079ad:	56                   	push   %esi
4079ae:	e8 93 70 00 00       	call   0x40ea46
4079b3:	83 f8 ff             	cmp    $0xffffffff,%eax
4079b6:	59                   	pop    %ecx
4079b7:	74 2e                	je     0x4079e7
4079b9:	56                   	push   %esi
4079ba:	e8 87 70 00 00       	call   0x40ea46
4079bf:	83 f8 fe             	cmp    $0xfffffffe,%eax
4079c2:	59                   	pop    %ecx
4079c3:	74 22                	je     0x4079e7
4079c5:	56                   	push   %esi
4079c6:	e8 7b 70 00 00       	call   0x40ea46
4079cb:	c1 f8 05             	sar    $0x5,%eax
4079ce:	56                   	push   %esi
4079cf:	8d 1c 85 c0 e4 41 00 	lea    0x41e4c0(,%eax,4),%ebx
4079d6:	e8 6b 70 00 00       	call   0x40ea46
4079db:	83 e0 1f             	and    $0x1f,%eax
4079de:	6b c0 28             	imul   $0x28,%eax,%eax
4079e1:	03 03                	add    (%ebx),%eax
4079e3:	59                   	pop    %ecx
4079e4:	59                   	pop    %ecx
4079e5:	eb 02                	jmp    0x4079e9
4079e7:	8b c7                	mov    %edi,%eax
4079e9:	f6 40 04 80          	testb  $0x80,0x4(%eax)
4079ed:	74 5e                	je     0x407a4d
4079ef:	ff 75 08             	push   0x8(%ebp)
4079f2:	8d 45 f4             	lea    -0xc(%ebp),%eax
4079f5:	6a 05                	push   $0x5
4079f7:	50                   	push   %eax
4079f8:	8d 45 f0             	lea    -0x10(%ebp),%eax
4079fb:	50                   	push   %eax
4079fc:	e8 41 73 00 00       	call   0x40ed42
407a01:	83 c4 10             	add    $0x10,%esp
407a04:	85 c0                	test   %eax,%eax
407a06:	0f 85 6c ff ff ff    	jne    0x407978
407a0c:	33 db                	xor    %ebx,%ebx
407a0e:	39 5d f0             	cmp    %ebx,-0x10(%ebp)
407a11:	7e 34                	jle    0x407a47
407a13:	ff 4e 04             	decl   0x4(%esi)
407a16:	78 12                	js     0x407a2a
407a18:	8b 06                	mov    (%esi),%eax
407a1a:	8a 4c 1d f4          	mov    -0xc(%ebp,%ebx,1),%cl
407a1e:	88 08                	mov    %cl,(%eax)
407a20:	8b 0e                	mov    (%esi),%ecx
407a22:	0f b6 01             	movzbl (%ecx),%eax
407a25:	41                   	inc    %ecx
407a26:	89 0e                	mov    %ecx,(%esi)
407a28:	eb 0e                	jmp    0x407a38
407a2a:	0f be 44 1d f4       	movsbl -0xc(%ebp,%ebx,1),%eax
407a2f:	56                   	push   %esi
407a30:	50                   	push   %eax
407a31:	e8 2a 3c 00 00       	call   0x40b660
407a36:	59                   	pop    %ecx
407a37:	59                   	pop    %ecx
407a38:	83 f8 ff             	cmp    $0xffffffff,%eax
407a3b:	0f 84 37 ff ff ff    	je     0x407978
407a41:	43                   	inc    %ebx
407a42:	3b 5d f0             	cmp    -0x10(%ebp),%ebx
407a45:	7c cc                	jl     0x407a13
407a47:	66 8b 45 08          	mov    0x8(%ebp),%ax
407a4b:	eb 20                	jmp    0x407a6d
407a4d:	83 46 04 fe          	addl   $0xfffffffe,0x4(%esi)
407a51:	78 0d                	js     0x407a60
407a53:	8b 0e                	mov    (%esi),%ecx
407a55:	8b 45 08             	mov    0x8(%ebp),%eax
407a58:	66 89 01             	mov    %ax,(%ecx)
407a5b:	83 06 02             	addl   $0x2,(%esi)
407a5e:	eb 0d                	jmp    0x407a6d
407a60:	0f b7 45 08          	movzwl 0x8(%ebp),%eax
407a64:	56                   	push   %esi
407a65:	50                   	push   %eax
407a66:	e8 08 70 00 00       	call   0x40ea73
407a6b:	59                   	pop    %ecx
407a6c:	59                   	pop    %ecx
407a6d:	8b 4d fc             	mov    -0x4(%ebp),%ecx
407a70:	5f                   	pop    %edi
407a71:	5e                   	pop    %esi
407a72:	33 cd                	xor    %ebp,%ecx
407a74:	5b                   	pop    %ebx
407a75:	e8 bb e4 ff ff       	call   0x405f35
407a7a:	c9                   	leave
407a7b:	c3                   	ret
407a7c:	6a 0c                	push   $0xc
407a7e:	68 f0 a9 41 00       	push   $0x41a9f0
407a83:	e8 c0 5b 00 00       	call   0x40d648
407a88:	33 c0                	xor    %eax,%eax
407a8a:	8b 7d 0c             	mov    0xc(%ebp),%edi
407a8d:	33 f6                	xor    %esi,%esi
407a8f:	3b fe                	cmp    %esi,%edi
407a91:	0f 95 c0             	setne  %al
407a94:	3b c6                	cmp    %esi,%eax
407a96:	75 1e                	jne    0x407ab6
407a98:	e8 5d 19 00 00       	call   0x4093fa
407a9d:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
407aa3:	56                   	push   %esi
407aa4:	56                   	push   %esi
407aa5:	56                   	push   %esi
407aa6:	56                   	push   %esi
407aa7:	56                   	push   %esi
407aa8:	e8 a3 fb ff ff       	call   0x407650
407aad:	83 c4 14             	add    $0x14,%esp
407ab0:	66 0d ff ff          	or     $0xffff,%ax
407ab4:	eb 2e                	jmp    0x407ae4
407ab6:	89 7d 0c             	mov    %edi,0xc(%ebp)
407ab9:	57                   	push   %edi
407aba:	e8 46 0e 00 00       	call   0x408905
407abf:	59                   	pop    %ecx
407ac0:	89 75 fc             	mov    %esi,-0x4(%ebp)
407ac3:	57                   	push   %edi
407ac4:	ff 75 08             	push   0x8(%ebp)
407ac7:	e8 d2 fd ff ff       	call   0x40789e
407acc:	59                   	pop    %ecx
407acd:	59                   	pop    %ecx
407ace:	0f b7 c0             	movzwl %ax,%eax
407ad1:	89 45 e4             	mov    %eax,-0x1c(%ebp)
407ad4:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
407adb:	e8 0a 00 00 00       	call   0x407aea
407ae0:	66 8b 45 e4          	mov    -0x1c(%ebp),%ax
407ae4:	e8 a4 5b 00 00       	call   0x40d68d
407ae9:	c3                   	ret
407aea:	ff 75 0c             	push   0xc(%ebp)
407aed:	e8 65 0e 00 00       	call   0x408957
407af2:	59                   	pop    %ecx
407af3:	c3                   	ret
407af4:	55                   	push   %ebp
407af5:	8b ec                	mov    %esp,%ebp
407af7:	83 ec 10             	sub    $0x10,%esp
407afa:	a1 20 c5 41 00       	mov    0x41c520,%eax
407aff:	33 c5                	xor    %ebp,%eax
407b01:	89 45 fc             	mov    %eax,-0x4(%ebp)
407b04:	53                   	push   %ebx
407b05:	56                   	push   %esi
407b06:	8b 75 0c             	mov    0xc(%ebp),%esi
407b09:	57                   	push   %edi
407b0a:	8b 7d 08             	mov    0x8(%ebp),%edi