40665f:	2b c1                	sub    %ecx,%eax
406661:	48                   	dec    %eax
406662:	eb 08                	jmp    0x40666c
406664:	8b 86 a0 9b 00 00    	mov    0x9ba0(%esi),%eax
40666a:	2b c1                	sub    %ecx,%eax
40666c:	89 45 d4             	mov    %eax,-0x2c(%ebp)
40666f:	e9 c3 09 00 00       	jmp    0x407037
406674:	ff 24 85 72 70 40 00 	jmp    *0x407072(,%eax,4)
40667b:	83 7d cc 00          	cmpl   $0x0,-0x34(%ebp)
40667f:	0f 84 c2 09 00 00    	je     0x407047
406685:	8b 45 c8             	mov    -0x38(%ebp),%eax
406688:	ff 4d cc             	decl   -0x34(%ebp)
40668b:	8b cb                	mov    %ebx,%ecx
40668d:	0f b6 00             	movzbl (%eax),%eax
406690:	d3 e0                	shl    %cl,%eax
406692:	09 45 c0             	or     %eax,-0x40(%ebp)
406695:	ff 45 c8             	incl   -0x38(%ebp)
406698:	83 c3 08             	add    $0x8,%ebx
40669b:	83 fb 03             	cmp    $0x3,%ebx
40669e:	72 db                	jb     0x40667b
4066a0:	8b 45 c0             	mov    -0x40(%ebp),%eax
4066a3:	83 eb 03             	sub    $0x3,%ebx
4066a6:	c1 6d c0 03          	shrl   $0x3,-0x40(%ebp)
4066aa:	83 e0 07             	and    $0x7,%eax
4066ad:	8b c8                	mov    %eax,%ecx
4066af:	80 e1 01             	and    $0x1,%cl
4066b2:	f6 d9                	neg    %cl
4066b4:	1b c9                	sbb    %ecx,%ecx
4066b6:	83 e1 07             	and    $0x7,%ecx
4066b9:	d1 e8                	shr    $1,%eax
4066bb:	83 c1 08             	add    $0x8,%ecx
4066be:	83 e8 00             	sub    $0x0,%eax
4066c1:	89 8e 14 05 00 00    	mov    %ecx,0x514(%esi)
4066c7:	0f 84 2e 01 00 00    	je     0x4067fb
4066cd:	48                   	dec    %eax
4066ce:	74 56                	je     0x406726
4066d0:	48                   	dec    %eax
4066d1:	74 48                	je     0x40671b
4066d3:	48                   	dec    %eax
4066d4:	0f 85 5d 09 00 00    	jne    0x407037
4066da:	83 cf ff             	or     $0xffffffff,%edi
4066dd:	c7 06 11 00 00 00    	movl   $0x11,(%esi)
4066e3:	8b 45 c0             	mov    -0x40(%ebp),%eax
4066e6:	8b 4d 08             	mov    0x8(%ebp),%ecx
4066e9:	89 86 1c 05 00 00    	mov    %eax,0x51c(%esi)
4066ef:	8b 45 cc             	mov    -0x34(%ebp),%eax
4066f2:	89 9e 18 05 00 00    	mov    %ebx,0x518(%esi)
4066f8:	89 41 04             	mov    %eax,0x4(%ecx)
4066fb:	8b 45 08             	mov    0x8(%ebp),%eax
4066fe:	8b 4d c8             	mov    -0x38(%ebp),%ecx
406701:	50                   	push   %eax
406702:	89 08                	mov    %ecx,(%eax)
406704:	8b 4d d0             	mov    -0x30(%ebp),%ecx
406707:	89 8e a8 9b 00 00    	mov    %ecx,0x9ba8(%esi)
40670d:	e8 a0 09 00 00       	call   0x4070b2
406712:	8b c7                	mov    %edi,%eax
406714:	5f                   	pop    %edi
406715:	5e                   	pop    %esi
406716:	5b                   	pop    %ebx
406717:	c9                   	leave
406718:	c2 04 00             	ret    $0x4
40671b:	c7 06 0b 00 00 00    	movl   $0xb,(%esi)
406721:	e9 11 09 00 00       	jmp    0x407037
406726:	80 3d b0 e3 42 00 00 	cmpb   $0x0,0x42e3b0
40672d:	0f 85 a0 00 00 00    	jne    0x4067d3
406733:	83 65 f8 00          	andl   $0x0,-0x8(%ebp)
406737:	b8 30 d2 42 00       	mov    $0x42d230,%eax
40673c:	3d 6c d4 42 00       	cmp    $0x42d46c,%eax
406741:	b1 08                	mov    $0x8,%cl
406743:	7e 14                	jle    0x406759
406745:	3d 30 d6 42 00       	cmp    $0x42d630,%eax
40674a:	7d 04                	jge    0x406750
40674c:	fe c1                	inc    %cl
40674e:	eb 09                	jmp    0x406759
406750:	3d 90 d6 42 00       	cmp    $0x42d690,%eax
406755:	7d 02                	jge    0x406759
406757:	b1 07                	mov    $0x7,%cl
406759:	0f be c9             	movsbl %cl,%ecx
40675c:	89 08                	mov    %ecx,(%eax)
40675e:	83 c0 04             	add    $0x4,%eax
406761:	3d b0 d6 42 00       	cmp    $0x42d6b0,%eax
406766:	7c d4                	jl     0x40673c
406768:	8d 45 f8             	lea    -0x8(%ebp),%eax
40676b:	bf 30 d2 42 00       	mov    $0x42d230,%edi
406770:	50                   	push   %eax
406771:	68 30 db 42 00       	push   $0x42db30
406776:	68 24 a4 40 00       	push   $0x40a424
40677b:	68 2c d2 42 00       	push   $0x42d22c
406780:	68 54 84 40 00       	push   $0x408454
406785:	68 14 84 40 00       	push   $0x408414
40678a:	68 01 01 00 00       	push   $0x101
40678f:	68 20 01 00 00       	push   $0x120
406794:	57                   	push   %edi
406795:	e8 80 09 00 00       	call   0x40711a
40679a:	6a 1e                	push   $0x1e
40679c:	59                   	pop    %ecx
40679d:	6a 05                	push   $0x5
40679f:	58                   	pop    %eax
4067a0:	f3 ab                	rep stos %eax,%es:(%edi)
4067a2:	8d 45 f8             	lea    -0x8(%ebp),%eax
4067a5:	50                   	push   %eax
4067a6:	68 30 db 42 00       	push   $0x42db30
4067ab:	68 28 a4 40 00       	push   $0x40a428
4067b0:	68 28 d2 42 00       	push   $0x42d228
4067b5:	68 d0 84 40 00       	push   $0x4084d0
4067ba:	68 94 84 40 00       	push   $0x408494
4067bf:	6a 00                	push   $0x0
4067c1:	6a 1e                	push   $0x1e
4067c3:	68 30 d2 42 00       	push   $0x42d230
4067c8:	e8 4d 09 00 00       	call   0x40711a
4067cd:	fe 05 b0 e3 42 00    	incb   0x42e3b0
4067d3:	a0 24 a4 40 00       	mov    0x40a424,%al
4067d8:	88 46 10             	mov    %al,0x10(%esi)
4067db:	a0 28 a4 40 00       	mov    0x40a428,%al
4067e0:	88 46 11             	mov    %al,0x11(%esi)
4067e3:	a1 2c d2 42 00       	mov    0x42d22c,%eax
4067e8:	89 46 14             	mov    %eax,0x14(%esi)
4067eb:	a1 28 d2 42 00       	mov    0x42d228,%eax
4067f0:	89 46 18             	mov    %eax,0x18(%esi)
4067f3:	83 26 00             	andl   $0x0,(%esi)
4067f6:	e9 3c 08 00 00       	jmp    0x407037
4067fb:	8b cb                	mov    %ebx,%ecx
4067fd:	c7 06 09 00 00 00    	movl   $0x9,(%esi)
406803:	83 e1 07             	and    $0x7,%ecx
406806:	d3 6d c0             	shrl   %cl,-0x40(%ebp)
406809:	2b d9                	sub    %ecx,%ebx
40680b:	e9 27 08 00 00       	jmp    0x407037
406810:	83 7d cc 00          	cmpl   $0x0,-0x34(%ebp)
406814:	0f 84 2d 08 00 00    	je     0x407047
40681a:	8b 45 c8             	mov    -0x38(%ebp),%eax
40681d:	ff 4d cc             	decl   -0x34(%ebp)
406820:	8b cb                	mov    %ebx,%ecx
406822:	0f b6 00             	movzbl (%eax),%eax
406825:	d3 e0                	shl    %cl,%eax
406827:	09 45 c0             	or     %eax,-0x40(%ebp)
40682a:	ff 45 c8             	incl   -0x38(%ebp)
40682d:	83 c3 08             	add    $0x8,%ebx
406830:	83 fb 20             	cmp    $0x20,%ebx
406833:	72 db                	jb     0x406810
406835:	8b 45 c0             	mov    -0x40(%ebp),%eax
406838:	33 db                	xor    %ebx,%ebx
40683a:	25 ff ff 00 00       	and    $0xffff,%eax
40683f:	89 5d c0             	mov    %ebx,-0x40(%ebp)
406842:	3b c3                	cmp    %ebx,%eax
406844:	89 46 04             	mov    %eax,0x4(%esi)
406847:	0f 84 e9 00 00 00    	je     0x406936
40684d:	6a 0a                	push   $0xa
40684f:	58                   	pop    %eax
406850:	e9 e7 00 00 00       	jmp    0x40693c
406855:	83 7d cc 00          	cmpl   $0x0,-0x34(%ebp)
406859:	0f 84 e8 07 00 00    	je     0x407047
40685f:	8b 45 d4             	mov    -0x2c(%ebp),%eax
406862:	85 c0                	test   %eax,%eax
406864:	0f 85 98 00 00 00    	jne    0x406902
40686a:	8b 8e a0 9b 00 00    	mov    0x9ba0(%esi),%ecx
406870:	8b 55 d0             	mov    -0x30(%ebp),%edx
406873:	3b d1                	cmp    %ecx,%edx
406875:	75 29                	jne    0x4068a0
406877:	8b 86 a4 9b 00 00    	mov    0x9ba4(%esi),%eax
40687d:	8d be a0 1b 00 00    	lea    0x1ba0(%esi),%edi
406883:	3b c7                	cmp    %edi,%eax
406885:	74 19                	je     0x4068a0
406887:	8b d7                	mov    %edi,%edx
406889:	3b d0                	cmp    %eax,%edx
40688b:	89 55 d0             	mov    %edx,-0x30(%ebp)
40688e:	73 05                	jae    0x406895
406890:	2b c2                	sub    %edx,%eax
406892:	48                   	dec    %eax
406893:	eb 04                	jmp    0x406899
406895:	2b ca                	sub    %edx,%ecx
406897:	8b c1                	mov    %ecx,%eax
406899:	85 c0                	test   %eax,%eax
40689b:	89 45 d4             	mov    %eax,-0x2c(%ebp)
40689e:	75 62                	jne    0x406902
4068a0:	ff 75 08             	push   0x8(%ebp)
4068a3:	89 96 a8 9b 00 00    	mov    %edx,0x9ba8(%esi)
4068a9:	e8 04 08 00 00       	call   0x4070b2
4068ae:	8b 96 a8 9b 00 00    	mov    0x9ba8(%esi),%edx
4068b4:	8b 8e a4 9b 00 00    	mov    0x9ba4(%esi),%ecx
4068ba:	3b d1                	cmp    %ecx,%edx
4068bc:	89 55 d0             	mov    %edx,-0x30(%ebp)
4068bf:	73 07                	jae    0x4068c8
4068c1:	8b c1                	mov    %ecx,%eax
4068c3:	2b c2                	sub    %edx,%eax
4068c5:	48                   	dec    %eax
4068c6:	eb 08                	jmp    0x4068d0
4068c8:	8b 86 a0 9b 00 00    	mov    0x9ba0(%esi),%eax
4068ce:	2b c2                	sub    %edx,%eax
4068d0:	8b be a0 9b 00 00    	mov    0x9ba0(%esi),%edi
4068d6:	89 45 d4             	mov    %eax,-0x2c(%ebp)
4068d9:	3b d7                	cmp    %edi,%edx
4068db:	75 1d                	jne    0x4068fa
4068dd:	8d 96 a0 1b 00 00    	lea    0x1ba0(%esi),%edx
4068e3:	3b d1                	cmp    %ecx,%edx
4068e5:	74 13                	je     0x4068fa
4068e7:	89 55 d0             	mov    %edx,-0x30(%ebp)
4068ea:	73 07                	jae    0x4068f3
4068ec:	2b ca                	sub    %edx,%ecx
4068ee:	49                   	dec    %ecx
4068ef:	8b c1                	mov    %ecx,%eax
4068f1:	eb 04                	jmp    0x4068f7
4068f3:	2b fa                	sub    %edx,%edi
4068f5:	8b c7                	mov    %edi,%eax
4068f7:	89 45 d4             	mov    %eax,-0x2c(%ebp)
4068fa:	85 c0                	test   %eax,%eax
4068fc:	0f 84 61 07 00 00    	je     0x407063
406902:	3b 45 cc             	cmp    -0x34(%ebp),%eax
406905:	72 03                	jb     0x40690a
406907:	8b 45 cc             	mov    -0x34(%ebp),%eax
40690a:	8b 4e 04             	mov    0x4(%esi),%ecx
40690d:	3b c8                	cmp    %eax,%ecx
40690f:	8b f9                	mov    %ecx,%edi
406911:	72 02                	jb     0x406915
406913:	8b f8                	mov    %eax,%edi
406915:	57                   	push   %edi
406916:	ff 75 c8             	push   -0x38(%ebp)
406919:	ff 75 d0             	push   -0x30(%ebp)
40691c:	e8 99 f3 ff ff       	call   0x405cba
406921:	01 7d c8             	add    %edi,-0x38(%ebp)
406924:	29 7d cc             	sub    %edi,-0x34(%ebp)
406927:	01 7d d0             	add    %edi,-0x30(%ebp)
40692a:	29 7d d4             	sub    %edi,-0x2c(%ebp)
40692d:	29 7e 04             	sub    %edi,0x4(%esi)
406930:	0f 85 01 07 00 00    	jne    0x407037
406936:	8b 86 14 05 00 00    	mov    0x514(%esi),%eax
40693c:	89 06                	mov    %eax,(%esi)
40693e:	e9 f4 06 00 00       	jmp    0x407037
406943:	83 7d cc 00          	cmpl   $0x0,-0x34(%ebp)
406947:	0f 84 fa 06 00 00    	je     0x407047
40694d:	8b 45 c8             	mov    -0x38(%ebp),%eax
406950:	ff 4d cc             	decl   -0x34(%ebp)
406953:	8b cb                	mov    %ebx,%ecx
406955:	0f b6 00             	movzbl (%eax),%eax
406958:	d3 e0                	shl    %cl,%eax
40695a:	09 45 c0             	or     %eax,-0x40(%ebp)
40695d:	ff 45 c8             	incl   -0x38(%ebp)
406960:	83 c3 08             	add    $0x8,%ebx
406963:	83 fb 0e             	cmp    $0xe,%ebx
406966:	72 db                	jb     0x406943
406968:	8b 45 c0             	mov    -0x40(%ebp),%eax
40696b:	25 ff 3f 00 00       	and    $0x3fff,%eax
406970:	8b c8                	mov    %eax,%ecx
406972:	89 46 04             	mov    %eax,0x4(%esi)
406975:	83 e1 1f             	and    $0x1f,%ecx
406978:	80 f9 1d             	cmp    $0x1d,%cl
40697b:	0f 87 59 fd ff ff    	ja     0x4066da
406981:	25 e0 03 00 00       	and    $0x3e0,%eax
406986:	3d a0 03 00 00       	cmp    $0x3a0,%eax
40698b:	0f 87 49 fd ff ff    	ja     0x4066da
406991:	c1 6d c0 0e          	shrl   $0xe,-0x40(%ebp)
406995:	83 eb 0e             	sub    $0xe,%ebx
406998:	83 66 08 00          	andl   $0x0,0x8(%esi)
40699c:	c7 06 0c 00 00 00    	movl   $0xc,(%esi)
4069a2:	8b 46 04             	mov    0x4(%esi),%eax
4069a5:	c1 e8 0a             	shr    $0xa,%eax
4069a8:	83 c0 04             	add    $0x4,%eax
4069ab:	39 46 08             	cmp    %eax,0x8(%esi)
4069ae:	73 69                	jae    0x406a19
4069b0:	eb 20                	jmp    0x4069d2
4069b2:	83 7d cc 00          	cmpl   $0x0,-0x34(%ebp)
4069b6:	0f 84 8b 06 00 00    	je     0x407047
4069bc:	8b 45 c8             	mov    -0x38(%ebp),%eax
4069bf:	ff 4d cc             	decl   -0x34(%ebp)
4069c2:	8b cb                	mov    %ebx,%ecx
4069c4:	0f b6 00             	movzbl (%eax),%eax
4069c7:	d3 e0                	shl    %cl,%eax
4069c9:	09 45 c0             	or     %eax,-0x40(%ebp)
4069cc:	ff 45 c8             	incl   -0x38(%ebp)
4069cf:	83 c3 08             	add    $0x8,%ebx
4069d2:	83 fb 03             	cmp    $0x3,%ebx
4069d5:	72 db                	jb     0x4069b2
4069d7:	8b 4e 08             	mov    0x8(%esi),%ecx
4069da:	8b 45 c0             	mov    -0x40(%ebp),%eax
4069dd:	83 e0 07             	and    $0x7,%eax
4069e0:	83 eb 03             	sub    $0x3,%ebx
4069e3:	0f be 89 00 84 40 00 	movsbl 0x408400(%ecx),%ecx
4069ea:	c1 6d c0 03          	shrl   $0x3,-0x40(%ebp)
4069ee:	89 44 8e 0c          	mov    %eax,0xc(%esi,%ecx,4)
4069f2:	8b 4e 04             	mov    0x4(%esi),%ecx
4069f5:	ff 46 08             	incl   0x8(%esi)
4069f8:	8b 46 08             	mov    0x8(%esi),%eax
4069fb:	c1 e9 0a             	shr    $0xa,%ecx
4069fe:	83 c1 04             	add    $0x4,%ecx
406a01:	3b c1                	cmp    %ecx,%eax
406a03:	72 cd                	jb     0x4069d2
406a05:	eb 12                	jmp    0x406a19
406a07:	8b 46 08             	mov    0x8(%esi),%eax
406a0a:	0f be 80 00 84 40 00 	movsbl 0x408400(%eax),%eax
406a11:	83 64 86 0c 00       	andl   $0x0,0xc(%esi,%eax,4)
406a16:	ff 46 08             	incl   0x8(%esi)
406a19:	83 7e 08 13          	cmpl   $0x13,0x8(%esi)
406a1d:	72 e8                	jb     0x406a07
406a1f:	8d 4d f8             	lea    -0x8(%ebp),%ecx
406a22:	8d be 0c 05 00 00    	lea    0x50c(%esi),%edi
406a28:	51                   	push   %ecx
406a29:	8d 8e 20 05 00 00    	lea    0x520(%esi),%ecx
406a2f:	51                   	push   %ecx
406a30:	8d 8e 10 05 00 00    	lea    0x510(%esi),%ecx
406a36:	33 c0                	xor    %eax,%eax
406a38:	57                   	push   %edi
406a39:	51                   	push   %ecx
406a3a:	50                   	push   %eax
406a3b:	89 45 f8             	mov    %eax,-0x8(%ebp)
406a3e:	50                   	push   %eax
406a3f:	6a 13                	push   $0x13
406a41:	8d 46 0c             	lea    0xc(%esi),%eax
406a44:	6a 13                	push   $0x13
406a46:	50                   	push   %eax
406a47:	c7 07 07 00 00 00    	movl   $0x7,(%edi)
406a4d:	e8 c8 06 00 00       	call   0x40711a
406a52:	85 c0                	test   %eax,%eax
406a54:	75 12                	jne    0x406a68
406a56:	39 07                	cmp    %eax,(%edi)
406a58:	74 0e                	je     0x406a68
406a5a:	21 46 08             	and    %eax,0x8(%esi)
406a5d:	c7 06 0d 00 00 00    	movl   $0xd,(%esi)
406a63:	e9 1d 01 00 00       	jmp    0x406b85
406a68:	c7 06 11 00 00 00    	movl   $0x11,(%esi)
406a6e:	e9 c4 05 00 00       	jmp    0x407037
406a73:	8b 86 0c 05 00 00    	mov    0x50c(%esi),%eax
406a79:	eb 20                	jmp    0x406a9b
406a7b:	83 7d cc 00          	cmpl   $0x0,-0x34(%ebp)
406a7f:	0f 84 c2 05 00 00    	je     0x407047
406a85:	8b 4d c8             	mov    -0x38(%ebp),%ecx
406a88:	ff 4d cc             	decl   -0x34(%ebp)
406a8b:	0f b6 11             	movzbl (%ecx),%edx
406a8e:	8b cb                	mov    %ebx,%ecx
406a90:	d3 e2                	shl    %cl,%edx
406a92:	09 55 c0             	or     %edx,-0x40(%ebp)
406a95:	ff 45 c8             	incl   -0x38(%ebp)
406a98:	83 c3 08             	add    $0x8,%ebx
406a9b:	3b d8                	cmp    %eax,%ebx
406a9d:	72 dc                	jb     0x406a7b
406a9f:	0f b7 04 45 00 a4 40 	movzwl 0x40a400(,%eax,2),%eax
406aa6:	00
406aa7:	23 45 c0             	and    -0x40(%ebp),%eax
406aaa:	8b 8e 10 05 00 00    	mov    0x510(%esi),%ecx
406ab0:	8d 04 81             	lea    (%ecx,%eax,4),%eax
406ab3:	0f b6 50 01          	movzbl 0x1(%eax),%edx
406ab7:	0f b7 40 02          	movzwl 0x2(%eax),%eax
406abb:	83 f8 10             	cmp    $0x10,%eax
406abe:	89 45 ec             	mov    %eax,-0x14(%ebp)
406ac1:	73 16                	jae    0x406ad9
406ac3:	8b ca                	mov    %edx,%ecx
406ac5:	2b da                	sub    %edx,%ebx
406ac7:	d3 6d c0             	shrl   %cl,-0x40(%ebp)
406aca:	8b 4e 08             	mov    0x8(%esi),%ecx
406acd:	89 44 8e 0c          	mov    %eax,0xc(%esi,%ecx,4)
406ad1:	ff 46 08             	incl   0x8(%esi)
406ad4:	e9 ac 00 00 00       	jmp    0x406b85