40c786:	03 c6                	add    %esi,%eax
40c788:	01 b5 40 e5 ff ff    	add    %esi,-0x1ac0(%ebp)
40c78e:	01 b5 40 e5 ff ff    	add    %esi,-0x1ac0(%ebp)
40c794:	66 89 10             	mov    %dx,(%eax)
40c797:	03 c6                	add    %esi,%eax
40c799:	81 bd 40 e5 ff ff fe 	cmpl   $0x13fe,-0x1ac0(%ebp)
40c7a0:	13 00 00
40c7a3:	72 b8                	jb     0x40c75d
40c7a5:	8b f0                	mov    %eax,%esi
40c7a7:	8d 85 48 e5 ff ff    	lea    -0x1ab8(%ebp),%eax
40c7ad:	2b f0                	sub    %eax,%esi
40c7af:	6a 00                	push   $0x0
40c7b1:	8d 85 28 e5 ff ff    	lea    -0x1ad8(%ebp),%eax
40c7b7:	50                   	push   %eax
40c7b8:	56                   	push   %esi
40c7b9:	8d 85 48 e5 ff ff    	lea    -0x1ab8(%ebp),%eax
40c7bf:	50                   	push   %eax
40c7c0:	8b 85 24 e5 ff ff    	mov    -0x1adc(%ebp),%eax
40c7c6:	8b 00                	mov    (%eax),%eax
40c7c8:	ff 34 07             	push   (%edi,%eax,1)
40c7cb:	ff 15 e8 f0 40 00    	call   *0x40f0e8
40c7d1:	85 c0                	test   %eax,%eax
40c7d3:	0f 84 69 01 00 00    	je     0x40c942
40c7d9:	8b 85 28 e5 ff ff    	mov    -0x1ad8(%ebp),%eax
40c7df:	01 85 38 e5 ff ff    	add    %eax,-0x1ac8(%ebp)
40c7e5:	3b c6                	cmp    %esi,%eax
40c7e7:	0f 8c 61 01 00 00    	jl     0x40c94e
40c7ed:	8b c3                	mov    %ebx,%eax
40c7ef:	2b 85 34 e5 ff ff    	sub    -0x1acc(%ebp),%eax
40c7f5:	3b 45 10             	cmp    0x10(%ebp),%eax
40c7f8:	0f 82 47 ff ff ff    	jb     0x40c745
40c7fe:	e9 4b 01 00 00       	jmp    0x40c94e
40c803:	8b 85 34 e5 ff ff    	mov    -0x1acc(%ebp),%eax
40c809:	89 85 2c e5 ff ff    	mov    %eax,-0x1ad4(%ebp)
40c80f:	39 4d 10             	cmp    %ecx,0x10(%ebp)
40c812:	0f 86 75 01 00 00    	jbe    0x40c98d
40c818:	8b 8d 2c e5 ff ff    	mov    -0x1ad4(%ebp),%ecx
40c81e:	83 a5 40 e5 ff ff 00 	andl   $0x0,-0x1ac0(%ebp)
40c825:	2b 8d 34 e5 ff ff    	sub    -0x1acc(%ebp),%ecx
40c82b:	6a 02                	push   $0x2
40c82d:	8d 85 48 f9 ff ff    	lea    -0x6b8(%ebp),%eax
40c833:	5e                   	pop    %esi
40c834:	3b 4d 10             	cmp    0x10(%ebp),%ecx
40c837:	73 3b                	jae    0x40c874
40c839:	8b 95 2c e5 ff ff    	mov    -0x1ad4(%ebp),%edx
40c83f:	0f b7 12             	movzwl (%edx),%edx
40c842:	01 b5 2c e5 ff ff    	add    %esi,-0x1ad4(%ebp)
40c848:	03 ce                	add    %esi,%ecx
40c84a:	83 fa 0a             	cmp    $0xa,%edx
40c84d:	75 0e                	jne    0x40c85d
40c84f:	6a 0d                	push   $0xd
40c851:	5b                   	pop    %ebx
40c852:	66 89 18             	mov    %bx,(%eax)
40c855:	03 c6                	add    %esi,%eax
40c857:	01 b5 40 e5 ff ff    	add    %esi,-0x1ac0(%ebp)
40c85d:	01 b5 40 e5 ff ff    	add    %esi,-0x1ac0(%ebp)
40c863:	66 89 10             	mov    %dx,(%eax)
40c866:	03 c6                	add    %esi,%eax
40c868:	81 bd 40 e5 ff ff a8 	cmpl   $0x6a8,-0x1ac0(%ebp)
40c86f:	06 00 00
40c872:	72 c0                	jb     0x40c834
40c874:	33 f6                	xor    %esi,%esi
40c876:	56                   	push   %esi
40c877:	56                   	push   %esi
40c878:	68 55 0d 00 00       	push   $0xd55
40c87d:	8d 8d f0 eb ff ff    	lea    -0x1410(%ebp),%ecx
40c883:	51                   	push   %ecx
40c884:	8d 8d 48 f9 ff ff    	lea    -0x6b8(%ebp),%ecx
40c88a:	2b c1                	sub    %ecx,%eax
40c88c:	99                   	cltd
40c88d:	2b c2                	sub    %edx,%eax
40c88f:	d1 f8                	sar    $1,%eax
40c891:	50                   	push   %eax
40c892:	8b c1                	mov    %ecx,%eax
40c894:	50                   	push   %eax
40c895:	56                   	push   %esi
40c896:	68 e9 fd 00 00       	push   $0xfde9
40c89b:	ff 15 10 f1 40 00    	call   *0x40f110
40c8a1:	8b d8                	mov    %eax,%ebx
40c8a3:	3b de                	cmp    %esi,%ebx
40c8a5:	0f 84 97 00 00 00    	je     0x40c942
40c8ab:	6a 00                	push   $0x0
40c8ad:	8d 85 28 e5 ff ff    	lea    -0x1ad8(%ebp),%eax
40c8b3:	50                   	push   %eax
40c8b4:	8b c3                	mov    %ebx,%eax
40c8b6:	2b c6                	sub    %esi,%eax
40c8b8:	50                   	push   %eax
40c8b9:	8d 84 35 f0 eb ff ff 	lea    -0x1410(%ebp,%esi,1),%eax
40c8c0:	50                   	push   %eax
40c8c1:	8b 85 24 e5 ff ff    	mov    -0x1adc(%ebp),%eax
40c8c7:	8b 00                	mov    (%eax),%eax
40c8c9:	ff 34 07             	push   (%edi,%eax,1)
40c8cc:	ff 15 e8 f0 40 00    	call   *0x40f0e8
40c8d2:	85 c0                	test   %eax,%eax
40c8d4:	74 0c                	je     0x40c8e2
40c8d6:	03 b5 28 e5 ff ff    	add    -0x1ad8(%ebp),%esi
40c8dc:	3b de                	cmp    %esi,%ebx
40c8de:	7f cb                	jg     0x40c8ab
40c8e0:	eb 0c                	jmp    0x40c8ee
40c8e2:	ff 15 44 f0 40 00    	call   *0x40f044
40c8e8:	89 85 44 e5 ff ff    	mov    %eax,-0x1abc(%ebp)
40c8ee:	3b de                	cmp    %esi,%ebx
40c8f0:	7f 5c                	jg     0x40c94e
40c8f2:	8b 85 2c e5 ff ff    	mov    -0x1ad4(%ebp),%eax
40c8f8:	2b 85 34 e5 ff ff    	sub    -0x1acc(%ebp),%eax
40c8fe:	89 85 38 e5 ff ff    	mov    %eax,-0x1ac8(%ebp)
40c904:	3b 45 10             	cmp    0x10(%ebp),%eax
40c907:	0f 82 0b ff ff ff    	jb     0x40c818
40c90d:	eb 3f                	jmp    0x40c94e
40c90f:	51                   	push   %ecx
40c910:	8d 8d 28 e5 ff ff    	lea    -0x1ad8(%ebp),%ecx
40c916:	51                   	push   %ecx
40c917:	ff 75 10             	push   0x10(%ebp)
40c91a:	ff b5 34 e5 ff ff    	push   -0x1acc(%ebp)
40c920:	ff 34 38             	push   (%eax,%edi,1)
40c923:	ff 15 e8 f0 40 00    	call   *0x40f0e8
40c929:	85 c0                	test   %eax,%eax
40c92b:	74 15                	je     0x40c942
40c92d:	8b 85 28 e5 ff ff    	mov    -0x1ad8(%ebp),%eax
40c933:	83 a5 44 e5 ff ff 00 	andl   $0x0,-0x1abc(%ebp)
40c93a:	89 85 38 e5 ff ff    	mov    %eax,-0x1ac8(%ebp)
40c940:	eb 0c                	jmp    0x40c94e
40c942:	ff 15 44 f0 40 00    	call   *0x40f044
40c948:	89 85 44 e5 ff ff    	mov    %eax,-0x1abc(%ebp)
40c94e:	83 bd 38 e5 ff ff 00 	cmpl   $0x0,-0x1ac8(%ebp)
40c955:	75 6c                	jne    0x40c9c3
40c957:	83 bd 44 e5 ff ff 00 	cmpl   $0x0,-0x1abc(%ebp)
40c95e:	74 2d                	je     0x40c98d
40c960:	6a 05                	push   $0x5
40c962:	5e                   	pop    %esi
40c963:	39 b5 44 e5 ff ff    	cmp    %esi,-0x1abc(%ebp)
40c969:	75 14                	jne    0x40c97f
40c96b:	e8 b7 77 ff ff       	call   0x404127
40c970:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40c976:	e8 bf 77 ff ff       	call   0x40413a
40c97b:	89 30                	mov    %esi,(%eax)
40c97d:	eb 3f                	jmp    0x40c9be
40c97f:	ff b5 44 e5 ff ff    	push   -0x1abc(%ebp)
40c985:	e8 c3 77 ff ff       	call   0x40414d
40c98a:	59                   	pop    %ecx
40c98b:	eb 31                	jmp    0x40c9be
40c98d:	8b 85 24 e5 ff ff    	mov    -0x1adc(%ebp),%eax
40c993:	8b 00                	mov    (%eax),%eax
40c995:	f6 44 07 04 40       	testb  $0x40,0x4(%edi,%eax,1)
40c99a:	74 0f                	je     0x40c9ab
40c99c:	8b 85 34 e5 ff ff    	mov    -0x1acc(%ebp),%eax
40c9a2:	80 38 1a             	cmpb   $0x1a,(%eax)
40c9a5:	75 04                	jne    0x40c9ab
40c9a7:	33 c0                	xor    %eax,%eax
40c9a9:	eb 24                	jmp    0x40c9cf
40c9ab:	e8 77 77 ff ff       	call   0x404127
40c9b0:	c7 00 1c 00 00 00    	movl   $0x1c,(%eax)
40c9b6:	e8 7f 77 ff ff       	call   0x40413a
40c9bb:	83 20 00             	andl   $0x0,(%eax)
40c9be:	83 c8 ff             	or     $0xffffffff,%eax
40c9c1:	eb 0c                	jmp    0x40c9cf
40c9c3:	8b 85 38 e5 ff ff    	mov    -0x1ac8(%ebp),%eax
40c9c9:	2b 85 30 e5 ff ff    	sub    -0x1ad0(%ebp),%eax
40c9cf:	5b                   	pop    %ebx
40c9d0:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40c9d3:	5f                   	pop    %edi
40c9d4:	33 cd                	xor    %ebp,%ecx
40c9d6:	5e                   	pop    %esi
40c9d7:	e8 c8 53 ff ff       	call   0x401da4
40c9dc:	c9                   	leave
40c9dd:	c3                   	ret
40c9de:	6a 10                	push   $0x10
40c9e0:	68 10 14 41 00       	push   $0x411410
40c9e5:	e8 86 77 ff ff       	call   0x404170
40c9ea:	8b 5d 08             	mov    0x8(%ebp),%ebx
40c9ed:	83 fb fe             	cmp    $0xfffffffe,%ebx
40c9f0:	75 1b                	jne    0x40ca0d
40c9f2:	e8 43 77 ff ff       	call   0x40413a
40c9f7:	83 20 00             	andl   $0x0,(%eax)
40c9fa:	e8 28 77 ff ff       	call   0x404127
40c9ff:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40ca05:	83 c8 ff             	or     $0xffffffff,%eax
40ca08:	e9 94 00 00 00       	jmp    0x40caa1
40ca0d:	85 db                	test   %ebx,%ebx
40ca0f:	78 08                	js     0x40ca19
40ca11:	3b 1d 00 46 41 00    	cmp    0x414600,%ebx
40ca17:	72 1a                	jb     0x40ca33
40ca19:	e8 1c 77 ff ff       	call   0x40413a
40ca1e:	83 20 00             	andl   $0x0,(%eax)
40ca21:	e8 01 77 ff ff       	call   0x404127
40ca26:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40ca2c:	e8 56 62 ff ff       	call   0x402c87
40ca31:	eb d2                	jmp    0x40ca05
40ca33:	8b c3                	mov    %ebx,%eax
40ca35:	c1 f8 05             	sar    $0x5,%eax
40ca38:	8d 3c 85 20 46 41 00 	lea    0x414620(,%eax,4),%edi
40ca3f:	8b f3                	mov    %ebx,%esi
40ca41:	83 e6 1f             	and    $0x1f,%esi
40ca44:	c1 e6 06             	shl    $0x6,%esi
40ca47:	8b 07                	mov    (%edi),%eax
40ca49:	0f be 44 30 04       	movsbl 0x4(%eax,%esi,1),%eax
40ca4e:	83 e0 01             	and    $0x1,%eax
40ca51:	74 c6                	je     0x40ca19
40ca53:	53                   	push   %ebx
40ca54:	e8 85 66 ff ff       	call   0x4030de
40ca59:	59                   	pop    %ecx
40ca5a:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40ca5e:	8b 07                	mov    (%edi),%eax
40ca60:	f6 44 30 04 01       	testb  $0x1,0x4(%eax,%esi,1)
40ca65:	74 14                	je     0x40ca7b
40ca67:	ff 75 10             	push   0x10(%ebp)
40ca6a:	ff 75 0c             	push   0xc(%ebp)
40ca6d:	53                   	push   %ebx
40ca6e:	e8 6e f8 ff ff       	call   0x40c2e1
40ca73:	83 c4 0c             	add    $0xc,%esp
40ca76:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40ca79:	eb 17                	jmp    0x40ca92
40ca7b:	e8 a7 76 ff ff       	call   0x404127
40ca80:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40ca86:	e8 af 76 ff ff       	call   0x40413a
40ca8b:	83 20 00             	andl   $0x0,(%eax)
40ca8e:	83 4d e4 ff          	orl    $0xffffffff,-0x1c(%ebp)
40ca92:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40ca99:	e8 0c 00 00 00       	call   0x40caaa
40ca9e:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40caa1:	e8 0f 77 ff ff       	call   0x4041b5
40caa6:	c3                   	ret
40caa7:	8b 5d 08             	mov    0x8(%ebp),%ebx
40caaa:	53                   	push   %ebx
40caab:	e8 cd 66 ff ff       	call   0x40317d
40cab0:	59                   	pop    %ecx
40cab1:	c3                   	ret
40cab2:	6a 10                	push   $0x10
40cab4:	68 30 14 41 00       	push   $0x411430
40cab9:	e8 b2 76 ff ff       	call   0x404170
40cabe:	8b 5d 08             	mov    0x8(%ebp),%ebx
40cac1:	83 fb fe             	cmp    $0xfffffffe,%ebx
40cac4:	75 13                	jne    0x40cad9
40cac6:	e8 5c 76 ff ff       	call   0x404127
40cacb:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40cad1:	83 c8 ff             	or     $0xffffffff,%eax
40cad4:	e9 a1 00 00 00       	jmp    0x40cb7a
40cad9:	85 db                	test   %ebx,%ebx
40cadb:	78 08                	js     0x40cae5
40cadd:	3b 1d 00 46 41 00    	cmp    0x414600,%ebx
40cae3:	72 12                	jb     0x40caf7
40cae5:	e8 3d 76 ff ff       	call   0x404127
40caea:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40caf0:	e8 92 61 ff ff       	call   0x402c87
40caf5:	eb da                	jmp    0x40cad1
40caf7:	8b c3                	mov    %ebx,%eax
40caf9:	c1 f8 05             	sar    $0x5,%eax
40cafc:	8d 3c 85 20 46 41 00 	lea    0x414620(,%eax,4),%edi
40cb03:	8b f3                	mov    %ebx,%esi
40cb05:	83 e6 1f             	and    $0x1f,%esi
40cb08:	c1 e6 06             	shl    $0x6,%esi
40cb0b:	8b 07                	mov    (%edi),%eax
40cb0d:	0f be 44 06 04       	movsbl 0x4(%esi,%eax,1),%eax
40cb12:	83 e0 01             	and    $0x1,%eax
40cb15:	74 ce                	je     0x40cae5
40cb17:	53                   	push   %ebx
40cb18:	e8 c1 65 ff ff       	call   0x4030de
40cb1d:	59                   	pop    %ecx
40cb1e:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40cb22:	8b 07                	mov    (%edi),%eax
40cb24:	f6 44 06 04 01       	testb  $0x1,0x4(%esi,%eax,1)
40cb29:	74 31                	je     0x40cb5c
40cb2b:	53                   	push   %ebx
40cb2c:	e8 44 65 ff ff       	call   0x403075
40cb31:	59                   	pop    %ecx
40cb32:	50                   	push   %eax
40cb33:	ff 15 38 f1 40 00    	call   *0x40f138
40cb39:	85 c0                	test   %eax,%eax
40cb3b:	75 0b                	jne    0x40cb48
40cb3d:	ff 15 44 f0 40 00    	call   *0x40f044
40cb43:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40cb46:	eb 04                	jmp    0x40cb4c
40cb48:	83 65 e4 00          	andl   $0x0,-0x1c(%ebp)
40cb4c:	83 7d e4 00          	cmpl   $0x0,-0x1c(%ebp)
40cb50:	74 19                	je     0x40cb6b
40cb52:	e8 e3 75 ff ff       	call   0x40413a
40cb57:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
40cb5a:	89 08                	mov    %ecx,(%eax)
40cb5c:	e8 c6 75 ff ff       	call   0x404127
40cb61:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40cb67:	83 4d e4 ff          	orl    $0xffffffff,-0x1c(%ebp)
40cb6b:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40cb72:	e8 0c 00 00 00       	call   0x40cb83
40cb77:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40cb7a:	e8 36 76 ff ff       	call   0x4041b5
40cb7f:	c3                   	ret
40cb80:	8b 5d 08             	mov    0x8(%ebp),%ebx
40cb83:	53                   	push   %ebx
40cb84:	e8 f4 65 ff ff       	call   0x40317d
40cb89:	59                   	pop    %ecx
40cb8a:	c3                   	ret
40cb8b:	f6 41 0c 40          	testb  $0x40,0xc(%ecx)
40cb8f:	74 06                	je     0x40cb97
40cb91:	83 79 08 00          	cmpl   $0x0,0x8(%ecx)
40cb95:	74 24                	je     0x40cbbb
40cb97:	ff 49 04             	decl   0x4(%ecx)
40cb9a:	78 0b                	js     0x40cba7
40cb9c:	8b 11                	mov    (%ecx),%edx
40cb9e:	88 02                	mov    %al,(%edx)
40cba0:	ff 01                	incl   (%ecx)
40cba2:	0f b6 c0             	movzbl %al,%eax
40cba5:	eb 0c                	jmp    0x40cbb3
40cba7:	0f be c0             	movsbl %al,%eax
40cbaa:	51                   	push   %ecx
40cbab:	50                   	push   %eax
40cbac:	e8 7b a4 ff ff       	call   0x40702c
40cbb1:	59                   	pop    %ecx
40cbb2:	59                   	pop    %ecx
40cbb3:	83 f8 ff             	cmp    $0xffffffff,%eax
40cbb6:	75 03                	jne    0x40cbbb
40cbb8:	09 06                	or     %eax,(%esi)
40cbba:	c3                   	ret
40cbbb:	ff 06                	incl   (%esi)
40cbbd:	c3                   	ret
40cbbe:	8b ff                	mov    %edi,%edi
40cbc0:	55                   	push   %ebp
40cbc1:	8b ec                	mov    %esp,%ebp
40cbc3:	81 ec 80 02 00 00    	sub    $0x280,%esp
40cbc9:	a1 84 22 41 00       	mov    0x412284,%eax
40cbce:	33 c5                	xor    %ebp,%eax
40cbd0:	89 45 fc             	mov    %eax,-0x4(%ebp)
40cbd3:	53                   	push   %ebx
40cbd4:	8b 5d 0c             	mov    0xc(%ebp),%ebx
40cbd7:	56                   	push   %esi
40cbd8:	8b 75 08             	mov    0x8(%ebp),%esi
40cbdb:	33 c0                	xor    %eax,%eax
40cbdd:	57                   	push   %edi
40cbde:	8b 7d 14             	mov    0x14(%ebp),%edi
40cbe1:	ff 75 10             	push   0x10(%ebp)
40cbe4:	8d 8d ac fd ff ff    	lea    -0x254(%ebp),%ecx
40cbea:	89 b5 d0 fd ff ff    	mov    %esi,-0x230(%ebp)
40cbf0:	89 bd e4 fd ff ff    	mov    %edi,-0x21c(%ebp)
40cbf6:	89 85 a8 fd ff ff    	mov    %eax,-0x258(%ebp)
40cbfc:	89 85 f0 fd ff ff    	mov    %eax,-0x210(%ebp)
40cc02:	89 85 c8 fd ff ff    	mov    %eax,-0x238(%ebp)
40cc08:	89 85 e8 fd ff ff    	mov    %eax,-0x218(%ebp)
40cc0e:	89 85 cc fd ff ff    	mov    %eax,-0x234(%ebp)
40cc14:	89 85 a4 fd ff ff    	mov    %eax,-0x25c(%ebp)
40cc1a:	89 85 c4 fd ff ff    	mov    %eax,-0x23c(%ebp)
40cc20:	e8 c0 53 ff ff       	call   0x401fe5
40cc25:	e8 fd 74 ff ff       	call   0x404127
40cc2a:	89 85 9c fd ff ff    	mov    %eax,-0x264(%ebp)
40cc30:	85 f6                	test   %esi,%esi
40cc32:	75 2b                	jne    0x40cc5f
40cc34:	e8 ee 74 ff ff       	call   0x404127
40cc39:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40cc3f:	e8 43 60 ff ff       	call   0x402c87
40cc44:	80 bd b8 fd ff ff 00 	cmpb   $0x0,-0x248(%ebp)
40cc4b:	74 0a                	je     0x40cc57
40cc4d:	8b 85 b4 fd ff ff    	mov    -0x24c(%ebp),%eax