40b774:	8b ec                	mov    %esp,%ebp
40b776:	b8 10 14 00 00       	mov    $0x1410,%eax
40b77b:	e8 40 7e ff ff       	call   0x4035c0
40b780:	a1 c0 10 42 00       	mov    0x4210c0,%eax
40b785:	33 c5                	xor    %ebp,%eax
40b787:	89 45 fc             	mov    %eax,-0x4(%ebp)
40b78a:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40b78d:	8b c1                	mov    %ecx,%eax
40b78f:	8b 55 14             	mov    0x14(%ebp),%edx
40b792:	83 e1 3f             	and    $0x3f,%ecx
40b795:	c1 f8 06             	sar    $0x6,%eax
40b798:	6b c9 38             	imul   $0x38,%ecx,%ecx
40b79b:	53                   	push   %ebx
40b79c:	8b 5d 08             	mov    0x8(%ebp),%ebx
40b79f:	8b 04 85 a8 21 42 00 	mov    0x4221a8(,%eax,4),%eax
40b7a6:	56                   	push   %esi
40b7a7:	57                   	push   %edi
40b7a8:	8b fb                	mov    %ebx,%edi
40b7aa:	8b 44 08 18          	mov    0x18(%eax,%ecx,1),%eax
40b7ae:	8b 4d 10             	mov    0x10(%ebp),%ecx
40b7b1:	03 d1                	add    %ecx,%edx
40b7b3:	89 85 f8 eb ff ff    	mov    %eax,-0x1408(%ebp)
40b7b9:	33 c0                	xor    %eax,%eax
40b7bb:	ab                   	stos   %eax,%es:(%edi)
40b7bc:	89 95 f0 eb ff ff    	mov    %edx,-0x1410(%ebp)
40b7c2:	ab                   	stos   %eax,%es:(%edi)
40b7c3:	ab                   	stos   %eax,%es:(%edi)
40b7c4:	eb 75                	jmp    0x40b83b
40b7c6:	8d b5 fc eb ff ff    	lea    -0x1404(%ebp),%esi
40b7cc:	3b ca                	cmp    %edx,%ecx
40b7ce:	73 25                	jae    0x40b7f5
40b7d0:	0f b7 01             	movzwl (%ecx),%eax
40b7d3:	83 c1 02             	add    $0x2,%ecx
40b7d6:	83 f8 0a             	cmp    $0xa,%eax
40b7d9:	75 0d                	jne    0x40b7e8
40b7db:	83 43 08 02          	addl   $0x2,0x8(%ebx)
40b7df:	6a 0d                	push   $0xd
40b7e1:	5f                   	pop    %edi
40b7e2:	66 89 3e             	mov    %di,(%esi)
40b7e5:	83 c6 02             	add    $0x2,%esi
40b7e8:	66 89 06             	mov    %ax,(%esi)
40b7eb:	83 c6 02             	add    $0x2,%esi
40b7ee:	8d 45 fa             	lea    -0x6(%ebp),%eax
40b7f1:	3b f0                	cmp    %eax,%esi
40b7f3:	72 d7                	jb     0x40b7cc
40b7f5:	8b bd f8 eb ff ff    	mov    -0x1408(%ebp),%edi
40b7fb:	8d 85 fc eb ff ff    	lea    -0x1404(%ebp),%eax
40b801:	2b f0                	sub    %eax,%esi
40b803:	89 4d 10             	mov    %ecx,0x10(%ebp)
40b806:	6a 00                	push   $0x0
40b808:	8d 85 f4 eb ff ff    	lea    -0x140c(%ebp),%eax
40b80e:	83 e6 fe             	and    $0xfffffffe,%esi
40b811:	50                   	push   %eax
40b812:	56                   	push   %esi
40b813:	8d 85 fc eb ff ff    	lea    -0x1404(%ebp),%eax
40b819:	50                   	push   %eax
40b81a:	57                   	push   %edi
40b81b:	ff 15 c0 90 41 00    	call   *0x4190c0
40b821:	85 c0                	test   %eax,%eax
40b823:	74 1c                	je     0x40b841
40b825:	8b 85 f4 eb ff ff    	mov    -0x140c(%ebp),%eax
40b82b:	01 43 04             	add    %eax,0x4(%ebx)
40b82e:	3b c6                	cmp    %esi,%eax
40b830:	72 17                	jb     0x40b849
40b832:	8b 4d 10             	mov    0x10(%ebp),%ecx
40b835:	8b 95 f0 eb ff ff    	mov    -0x1410(%ebp),%edx
40b83b:	3b ca                	cmp    %edx,%ecx
40b83d:	72 87                	jb     0x40b7c6
40b83f:	eb 08                	jmp    0x40b849
40b841:	ff 15 28 90 41 00    	call   *0x419028
40b847:	89 03                	mov    %eax,(%ebx)
40b849:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40b84c:	8b c3                	mov    %ebx,%eax
40b84e:	5f                   	pop    %edi
40b84f:	5e                   	pop    %esi
40b850:	33 cd                	xor    %ebp,%ecx
40b852:	5b                   	pop    %ebx
40b853:	e8 70 88 ff ff       	call   0x4040c8
40b858:	c9                   	leave
40b859:	c3                   	ret
40b85a:	8b ff                	mov    %edi,%edi
40b85c:	55                   	push   %ebp
40b85d:	8b ec                	mov    %esp,%ebp
40b85f:	b8 18 14 00 00       	mov    $0x1418,%eax
40b864:	e8 57 7d ff ff       	call   0x4035c0
40b869:	a1 c0 10 42 00       	mov    0x4210c0,%eax
40b86e:	33 c5                	xor    %ebp,%eax
40b870:	89 45 fc             	mov    %eax,-0x4(%ebp)
40b873:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40b876:	8b c1                	mov    %ecx,%eax
40b878:	8b 55 10             	mov    0x10(%ebp),%edx
40b87b:	83 e1 3f             	and    $0x3f,%ecx
40b87e:	c1 f8 06             	sar    $0x6,%eax
40b881:	6b c9 38             	imul   $0x38,%ecx,%ecx
40b884:	53                   	push   %ebx
40b885:	56                   	push   %esi
40b886:	8b 04 85 a8 21 42 00 	mov    0x4221a8(,%eax,4),%eax
40b88d:	8b 75 08             	mov    0x8(%ebp),%esi
40b890:	57                   	push   %edi
40b891:	8b fe                	mov    %esi,%edi
40b893:	8b 44 08 18          	mov    0x18(%eax,%ecx,1),%eax
40b897:	8b 4d 14             	mov    0x14(%ebp),%ecx
40b89a:	89 85 f0 eb ff ff    	mov    %eax,-0x1410(%ebp)
40b8a0:	03 ca                	add    %edx,%ecx
40b8a2:	33 c0                	xor    %eax,%eax
40b8a4:	89 8d f4 eb ff ff    	mov    %ecx,-0x140c(%ebp)
40b8aa:	ab                   	stos   %eax,%es:(%edi)
40b8ab:	ab                   	stos   %eax,%es:(%edi)
40b8ac:	ab                   	stos   %eax,%es:(%edi)
40b8ad:	8b fa                	mov    %edx,%edi
40b8af:	3b d1                	cmp    %ecx,%edx
40b8b1:	0f 83 c4 00 00 00    	jae    0x40b97b
40b8b7:	8b b5 f4 eb ff ff    	mov    -0x140c(%ebp),%esi
40b8bd:	8d 85 50 f9 ff ff    	lea    -0x6b0(%ebp),%eax
40b8c3:	3b fe                	cmp    %esi,%edi
40b8c5:	73 21                	jae    0x40b8e8
40b8c7:	0f b7 0f             	movzwl (%edi),%ecx
40b8ca:	83 c7 02             	add    $0x2,%edi
40b8cd:	83 f9 0a             	cmp    $0xa,%ecx
40b8d0:	75 09                	jne    0x40b8db
40b8d2:	6a 0d                	push   $0xd
40b8d4:	5a                   	pop    %edx
40b8d5:	66 89 10             	mov    %dx,(%eax)
40b8d8:	83 c0 02             	add    $0x2,%eax
40b8db:	66 89 08             	mov    %cx,(%eax)
40b8de:	83 c0 02             	add    $0x2,%eax
40b8e1:	8d 4d f8             	lea    -0x8(%ebp),%ecx
40b8e4:	3b c1                	cmp    %ecx,%eax
40b8e6:	72 db                	jb     0x40b8c3
40b8e8:	6a 00                	push   $0x0
40b8ea:	6a 00                	push   $0x0
40b8ec:	68 55 0d 00 00       	push   $0xd55
40b8f1:	8d 8d f8 eb ff ff    	lea    -0x1408(%ebp),%ecx
40b8f7:	51                   	push   %ecx
40b8f8:	8d 8d 50 f9 ff ff    	lea    -0x6b0(%ebp),%ecx
40b8fe:	2b c1                	sub    %ecx,%eax
40b900:	d1 f8                	sar    $1,%eax
40b902:	50                   	push   %eax
40b903:	8b c1                	mov    %ecx,%eax
40b905:	50                   	push   %eax
40b906:	6a 00                	push   $0x0
40b908:	68 e9 fd 00 00       	push   $0xfde9
40b90d:	e8 1c 37 00 00       	call   0x40f02e
40b912:	8b 75 08             	mov    0x8(%ebp),%esi
40b915:	83 c4 20             	add    $0x20,%esp
40b918:	89 85 e8 eb ff ff    	mov    %eax,-0x1418(%ebp)
40b91e:	85 c0                	test   %eax,%eax
40b920:	74 51                	je     0x40b973
40b922:	33 db                	xor    %ebx,%ebx
40b924:	85 c0                	test   %eax,%eax
40b926:	74 35                	je     0x40b95d
40b928:	6a 00                	push   $0x0
40b92a:	8d 8d ec eb ff ff    	lea    -0x1414(%ebp),%ecx
40b930:	2b c3                	sub    %ebx,%eax
40b932:	51                   	push   %ecx
40b933:	50                   	push   %eax
40b934:	8d 85 f8 eb ff ff    	lea    -0x1408(%ebp),%eax
40b93a:	03 c3                	add    %ebx,%eax
40b93c:	50                   	push   %eax
40b93d:	ff b5 f0 eb ff ff    	push   -0x1410(%ebp)
40b943:	ff 15 c0 90 41 00    	call   *0x4190c0
40b949:	85 c0                	test   %eax,%eax
40b94b:	74 26                	je     0x40b973
40b94d:	03 9d ec eb ff ff    	add    -0x1414(%ebp),%ebx
40b953:	8b 85 e8 eb ff ff    	mov    -0x1418(%ebp),%eax
40b959:	3b d8                	cmp    %eax,%ebx
40b95b:	72 cb                	jb     0x40b928
40b95d:	8b c7                	mov    %edi,%eax
40b95f:	2b 45 10             	sub    0x10(%ebp),%eax
40b962:	89 46 04             	mov    %eax,0x4(%esi)
40b965:	3b bd f4 eb ff ff    	cmp    -0x140c(%ebp),%edi
40b96b:	0f 82 46 ff ff ff    	jb     0x40b8b7
40b971:	eb 08                	jmp    0x40b97b
40b973:	ff 15 28 90 41 00    	call   *0x419028
40b979:	89 06                	mov    %eax,(%esi)
40b97b:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40b97e:	8b c6                	mov    %esi,%eax
40b980:	5f                   	pop    %edi
40b981:	5e                   	pop    %esi
40b982:	33 cd                	xor    %ebp,%ecx
40b984:	5b                   	pop    %ebx
40b985:	e8 3e 87 ff ff       	call   0x4040c8
40b98a:	c9                   	leave
40b98b:	c3                   	ret
40b98c:	8b ff                	mov    %edi,%edi
40b98e:	55                   	push   %ebp
40b98f:	8b ec                	mov    %esp,%ebp
40b991:	83 ec 28             	sub    $0x28,%esp
40b994:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40b997:	56                   	push   %esi
40b998:	6a 00                	push   $0x0
40b99a:	e8 cb ad ff ff       	call   0x40676a
40b99f:	8d 45 d8             	lea    -0x28(%ebp),%eax
40b9a2:	50                   	push   %eax
40b9a3:	ff 75 10             	push   0x10(%ebp)
40b9a6:	ff 75 0c             	push   0xc(%ebp)
40b9a9:	ff 75 08             	push   0x8(%ebp)
40b9ac:	e8 12 00 00 00       	call   0x40b9c3
40b9b1:	83 c4 10             	add    $0x10,%esp
40b9b4:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40b9b7:	8b f0                	mov    %eax,%esi
40b9b9:	e8 f4 ad ff ff       	call   0x4067b2
40b9be:	8b c6                	mov    %esi,%eax
40b9c0:	5e                   	pop    %esi
40b9c1:	c9                   	leave
40b9c2:	c3                   	ret
40b9c3:	6a 14                	push   $0x14
40b9c5:	68 c8 00 42 00       	push   $0x4200c8
40b9ca:	e8 d1 84 ff ff       	call   0x403ea0
40b9cf:	8b 7d 08             	mov    0x8(%ebp),%edi
40b9d2:	83 ff fe             	cmp    $0xfffffffe,%edi
40b9d5:	75 1e                	jne    0x40b9f5
40b9d7:	8b 45 14             	mov    0x14(%ebp),%eax
40b9da:	c6 40 24 01          	movb   $0x1,0x24(%eax)
40b9de:	83 60 20 00          	andl   $0x0,0x20(%eax)
40b9e2:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
40b9e6:	c7 40 18 09 00 00 00 	movl   $0x9,0x18(%eax)
40b9ed:	83 c8 ff             	or     $0xffffffff,%eax
40b9f0:	e9 c1 00 00 00       	jmp    0x40bab6
40b9f5:	85 ff                	test   %edi,%edi
40b9f7:	78 0f                	js     0x40ba08
40b9f9:	3b 3d a8 23 42 00    	cmp    0x4223a8,%edi
40b9ff:	73 07                	jae    0x40ba08
40ba01:	33 c0                	xor    %eax,%eax
40ba03:	40                   	inc    %eax
40ba04:	33 f6                	xor    %esi,%esi
40ba06:	eb 04                	jmp    0x40ba0c
40ba08:	33 f6                	xor    %esi,%esi
40ba0a:	8b c6                	mov    %esi,%eax
40ba0c:	85 c0                	test   %eax,%eax
40ba0e:	75 25                	jne    0x40ba35
40ba10:	8b 45 14             	mov    0x14(%ebp),%eax
40ba13:	c6 40 24 01          	movb   $0x1,0x24(%eax)
40ba17:	89 70 20             	mov    %esi,0x20(%eax)
40ba1a:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
40ba1e:	c7 40 18 09 00 00 00 	movl   $0x9,0x18(%eax)
40ba25:	50                   	push   %eax
40ba26:	56                   	push   %esi
40ba27:	56                   	push   %esi
40ba28:	56                   	push   %esi
40ba29:	56                   	push   %esi
40ba2a:	56                   	push   %esi
40ba2b:	e8 1c ba ff ff       	call   0x40744c
40ba30:	83 c4 18             	add    $0x18,%esp
40ba33:	eb b8                	jmp    0x40b9ed
40ba35:	8b cf                	mov    %edi,%ecx
40ba37:	c1 f9 06             	sar    $0x6,%ecx
40ba3a:	89 4d e0             	mov    %ecx,-0x20(%ebp)
40ba3d:	8b c7                	mov    %edi,%eax
40ba3f:	83 e0 3f             	and    $0x3f,%eax
40ba42:	6b d0 38             	imul   $0x38,%eax,%edx
40ba45:	89 55 dc             	mov    %edx,-0x24(%ebp)
40ba48:	8b 04 8d a8 21 42 00 	mov    0x4221a8(,%ecx,4),%eax
40ba4f:	f6 44 10 28 01       	testb  $0x1,0x28(%eax,%edx,1)
40ba54:	74 ba                	je     0x40ba10
40ba56:	57                   	push   %edi
40ba57:	e8 23 3c 00 00       	call   0x40f67f
40ba5c:	59                   	pop    %ecx
40ba5d:	83 cb ff             	or     $0xffffffff,%ebx
40ba60:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
40ba63:	89 75 fc             	mov    %esi,-0x4(%ebp)
40ba66:	8b 45 e0             	mov    -0x20(%ebp),%eax
40ba69:	8b 04 85 a8 21 42 00 	mov    0x4221a8(,%eax,4),%eax
40ba70:	8b 4d dc             	mov    -0x24(%ebp),%ecx
40ba73:	f6 44 01 28 01       	testb  $0x1,0x28(%ecx,%eax,1)
40ba78:	75 17                	jne    0x40ba91
40ba7a:	8b 45 14             	mov    0x14(%ebp),%eax
40ba7d:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
40ba81:	c7 40 18 09 00 00 00 	movl   $0x9,0x18(%eax)
40ba88:	c6 40 24 01          	movb   $0x1,0x24(%eax)
40ba8c:	89 70 20             	mov    %esi,0x20(%eax)
40ba8f:	eb 17                	jmp    0x40baa8
40ba91:	ff 75 14             	push   0x14(%ebp)
40ba94:	ff 75 10             	push   0x10(%ebp)
40ba97:	ff 75 0c             	push   0xc(%ebp)
40ba9a:	57                   	push   %edi
40ba9b:	e8 34 00 00 00       	call   0x40bad4
40baa0:	83 c4 10             	add    $0x10,%esp
40baa3:	8b d8                	mov    %eax,%ebx
40baa5:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
40baa8:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40baaf:	e8 18 00 00 00       	call   0x40bacc
40bab4:	8b c3                	mov    %ebx,%eax
40bab6:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40bab9:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40bac0:	59                   	pop    %ecx
40bac1:	5f                   	pop    %edi
40bac2:	5e                   	pop    %esi
40bac3:	5b                   	pop    %ebx
40bac4:	c9                   	leave
40bac5:	c3                   	ret
40bac6:	8b 7d 08             	mov    0x8(%ebp),%edi
40bac9:	8b 5d e4             	mov    -0x1c(%ebp),%ebx
40bacc:	57                   	push   %edi
40bacd:	e8 62 3c 00 00       	call   0x40f734
40bad2:	59                   	pop    %ecx
40bad3:	c3                   	ret
40bad4:	8b ff                	mov    %edi,%edi
40bad6:	55                   	push   %ebp
40bad7:	8b ec                	mov    %esp,%ebp
40bad9:	83 ec 30             	sub    $0x30,%esp
40badc:	8b 55 10             	mov    0x10(%ebp),%edx
40badf:	8b 4d 08             	mov    0x8(%ebp),%ecx
40bae2:	8b 45 0c             	mov    0xc(%ebp),%eax
40bae5:	89 4d f0             	mov    %ecx,-0x10(%ebp)
40bae8:	89 45 f8             	mov    %eax,-0x8(%ebp)
40baeb:	89 55 f4             	mov    %edx,-0xc(%ebp)
40baee:	53                   	push   %ebx
40baef:	8b 5d 14             	mov    0x14(%ebp),%ebx
40baf2:	56                   	push   %esi
40baf3:	57                   	push   %edi
40baf4:	85 d2                	test   %edx,%edx
40baf6:	0f 84 ed 01 00 00    	je     0x40bce9
40bafc:	85 c0                	test   %eax,%eax
40bafe:	75 2a                	jne    0x40bb2a
40bb00:	33 c0                	xor    %eax,%eax
40bb02:	c6 43 24 01          	movb   $0x1,0x24(%ebx)
40bb06:	53                   	push   %ebx
40bb07:	50                   	push   %eax
40bb08:	50                   	push   %eax
40bb09:	50                   	push   %eax
40bb0a:	89 43 20             	mov    %eax,0x20(%ebx)
40bb0d:	50                   	push   %eax
40bb0e:	c6 43 1c 01          	movb   $0x1,0x1c(%ebx)
40bb12:	50                   	push   %eax
40bb13:	c7 43 18 16 00 00 00 	movl   $0x16,0x18(%ebx)
40bb1a:	e8 2d b9 ff ff       	call   0x40744c
40bb1f:	83 c4 18             	add    $0x18,%esp
40bb22:	83 c8 ff             	or     $0xffffffff,%eax
40bb25:	e9 c1 01 00 00       	jmp    0x40bceb
40bb2a:	8b c1                	mov    %ecx,%eax
40bb2c:	8b f1                	mov    %ecx,%esi
40bb2e:	83 e0 3f             	and    $0x3f,%eax
40bb31:	c1 fe 06             	sar    $0x6,%esi
40bb34:	6b f8 38             	imul   $0x38,%eax,%edi
40bb37:	89 75 ec             	mov    %esi,-0x14(%ebp)
40bb3a:	8b 04 b5 a8 21 42 00 	mov    0x4221a8(,%esi,4),%eax
40bb41:	89 7d e8             	mov    %edi,-0x18(%ebp)
40bb44:	8a 44 07 29          	mov    0x29(%edi,%eax,1),%al
40bb48:	88 45 ff             	mov    %al,-0x1(%ebp)
40bb4b:	3c 02                	cmp    $0x2,%al
40bb4d:	74 04                	je     0x40bb53
40bb4f:	3c 01                	cmp    $0x1,%al
40bb51:	75 08                	jne    0x40bb5b
40bb53:	8b c2                	mov    %edx,%eax
40bb55:	f7 d0                	not    %eax
40bb57:	a8 01                	test   $0x1,%al
40bb59:	74 a5                	je     0x40bb00
40bb5b:	8b 55 ec             	mov    -0x14(%ebp),%edx
40bb5e:	33 f6                	xor    %esi,%esi