40a759:	ff
40a75a:	03 c2                	add    %edx,%eax
40a75c:	8b 4d 10             	mov    0x10(%ebp),%ecx
40a75f:	99                   	cltd
40a760:	f7 ff                	idiv   %edi
40a762:	8b bd 6c f5 ff ff    	mov    -0xa94(%ebp),%edi
40a768:	8a 84 15 d8 ea ff ff 	mov    -0x1528(%ebp,%edx,1),%al
40a76f:	30 04 0f             	xor    %al,(%edi,%ecx,1)
40a772:	8b 45 14             	mov    0x14(%ebp),%eax
40a775:	47                   	inc    %edi
40a776:	ff 4d 14             	decl   0x14(%ebp)
40a779:	85 c0                	test   %eax,%eax
40a77b:	89 bd 6c f5 ff ff    	mov    %edi,-0xa94(%ebp)
40a781:	0f 85 ba 77 ff ff    	jne    0x401f41
40a787:	5b                   	pop    %ebx
40a788:	8b c1                	mov    %ecx,%eax
40a78a:	5e                   	pop    %esi
40a78b:	eb 02                	jmp    0x40a78f
40a78d:	33 c0                	xor    %eax,%eax
40a78f:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40a792:	5f                   	pop    %edi
40a793:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40a79a:	c9                   	leave
40a79b:	c3                   	ret
40a79c:	55                   	push   %ebp
40a79d:	8b ec                	mov    %esp,%ebp
40a79f:	51                   	push   %ecx
40a7a0:	51                   	push   %ecx
40a7a1:	53                   	push   %ebx
40a7a2:	56                   	push   %esi
40a7a3:	57                   	push   %edi
40a7a4:	8b 7d 08             	mov    0x8(%ebp),%edi
40a7a7:	83 65 08 00          	andl   $0x0,0x8(%ebp)
40a7ab:	8b 47 3c             	mov    0x3c(%edi),%eax
40a7ae:	8b 74 38 78          	mov    0x78(%eax,%edi,1),%esi
40a7b2:	8b 44 3e 20          	mov    0x20(%esi,%edi,1),%eax
40a7b6:	03 f7                	add    %edi,%esi
40a7b8:	03 c7                	add    %edi,%eax
40a7ba:	8b 5e 1c             	mov    0x1c(%esi),%ebx
40a7bd:	8b 4e 24             	mov    0x24(%esi),%ecx
40a7c0:	03 df                	add    %edi,%ebx
40a7c2:	03 cf                	add    %edi,%ecx
40a7c4:	83 7e 18 00          	cmpl   $0x0,0x18(%esi)
40a7c8:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40a7cb:	76 25                	jbe    0x40a7f2
40a7cd:	89 45 fc             	mov    %eax,-0x4(%ebp)
40a7d0:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40a7d3:	8b c7                	mov    %edi,%eax
40a7d5:	03 01                	add    (%ecx),%eax
40a7d7:	50                   	push   %eax
40a7d8:	e8 9c 76 ff ff       	call   0x401e79
40a7dd:	3b 45 0c             	cmp    0xc(%ebp),%eax
40a7e0:	59                   	pop    %ecx
40a7e1:	74 16                	je     0x40a7f9
40a7e3:	ff 45 08             	incl   0x8(%ebp)
40a7e6:	83 45 fc 04          	addl   $0x4,-0x4(%ebp)
40a7ea:	8b 45 08             	mov    0x8(%ebp),%eax
40a7ed:	3b 46 18             	cmp    0x18(%esi),%eax
40a7f0:	72 de                	jb     0x40a7d0
40a7f2:	33 c0                	xor    %eax,%eax
40a7f4:	5f                   	pop    %edi
40a7f5:	5e                   	pop    %esi
40a7f6:	5b                   	pop    %ebx
40a7f7:	c9                   	leave
40a7f8:	c3                   	ret
40a7f9:	8b 45 f8             	mov    -0x8(%ebp),%eax
40a7fc:	8b 4d 08             	mov    0x8(%ebp),%ecx
40a7ff:	0f b7 04 48          	movzwl (%eax,%ecx,2),%eax
40a803:	8b 04 83             	mov    (%ebx,%eax,4),%eax
40a806:	03 c7                	add    %edi,%eax
40a808:	eb ea                	jmp    0x40a7f4
40a80a:	b8 3c 77 42 00       	mov    $0x42773c,%eax
40a80f:	e8 1c 14 00 00       	call   0x40bc30
40a814:	83 ec 28             	sub    $0x28,%esp
40a817:	8a 45 0c             	mov    0xc(%ebp),%al
40a81a:	53                   	push   %ebx
40a81b:	56                   	push   %esi
40a81c:	33 db                	xor    %ebx,%ebx
40a81e:	57                   	push   %edi
40a81f:	53                   	push   %ebx
40a820:	8d 4d dc             	lea    -0x24(%ebp),%ecx
40a823:	88 45 dc             	mov    %al,-0x24(%ebp)
40a826:	e8 da 02 00 00       	call   0x40ab05
40a82b:	be 20 12 43 00       	mov    $0x431220,%esi
40a830:	56                   	push   %esi
40a831:	e8 2a 19 00 00       	call   0x40c160
40a836:	59                   	pop    %ecx
40a837:	50                   	push   %eax
40a838:	56                   	push   %esi
40a839:	8d 4d dc             	lea    -0x24(%ebp),%ecx
40a83c:	e8 50 01 00 00       	call   0x40a991
40a841:	53                   	push   %ebx
40a842:	53                   	push   %ebx
40a843:	68 04 12 43 00       	push   $0x431204
40a848:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40a84b:	ff 15 5c 97 43 00    	call   *0x43975c
40a851:	3b c3                	cmp    %ebx,%eax
40a853:	0f 84 d3 00 00 00    	je     0x40a92c
40a859:	8a 45 0c             	mov    0xc(%ebp),%al
40a85c:	53                   	push   %ebx
40a85d:	8d 4d cc             	lea    -0x34(%ebp),%ecx
40a860:	88 45 cc             	mov    %al,-0x34(%ebp)
40a863:	e8 9d 02 00 00       	call   0x40ab05
40a868:	be f4 11 43 00       	mov    $0x4311f4,%esi
40a86d:	56                   	push   %esi
40a86e:	e8 ed 18 00 00       	call   0x40c160
40a873:	59                   	pop    %ecx
40a874:	50                   	push   %eax
40a875:	56                   	push   %esi
40a876:	8d 4d cc             	lea    -0x34(%ebp),%ecx
40a879:	e8 13 01 00 00       	call   0x40a991
40a87e:	8b 45 d0             	mov    -0x30(%ebp),%eax
40a881:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
40a885:	3b c3                	cmp    %ebx,%eax
40a887:	75 05                	jne    0x40a88e
40a889:	b8 8c 98 42 00       	mov    $0x42988c,%eax
40a88e:	53                   	push   %ebx
40a88f:	53                   	push   %ebx
40a890:	50                   	push   %eax
40a891:	ff 15 60 97 43 00    	call   *0x439760
40a897:	68 e8 11 43 00       	push   $0x4311e8
40a89c:	8b f0                	mov    %eax,%esi
40a89e:	e8 ad 18 00 00       	call   0x40c150
40a8a3:	59                   	pop    %ecx
40a8a4:	50                   	push   %eax
40a8a5:	56                   	push   %esi
40a8a6:	e8 f1 fe ff ff       	call   0x40a79c
40a8ab:	59                   	pop    %ecx
40a8ac:	89 45 f0             	mov    %eax,-0x10(%ebp)
40a8af:	59                   	pop    %ecx
40a8b0:	6a 0a                	push   $0xa
40a8b2:	68 4d 01 00 00       	push   $0x14d
40a8b7:	53                   	push   %ebx
40a8b8:	ff 15 64 97 43 00    	call   *0x439764
40a8be:	8b f0                	mov    %eax,%esi
40a8c0:	3b f3                	cmp    %ebx,%esi
40a8c2:	74 5b                	je     0x40a91f
40a8c4:	56                   	push   %esi
40a8c5:	53                   	push   %ebx
40a8c6:	ff 15 68 97 43 00    	call   *0x439768
40a8cc:	3b c3                	cmp    %ebx,%eax
40a8ce:	89 45 ec             	mov    %eax,-0x14(%ebp)
40a8d1:	74 4c                	je     0x40a91f
40a8d3:	56                   	push   %esi
40a8d4:	53                   	push   %ebx
40a8d5:	ff 15 6c 97 43 00    	call   *0x43976c
40a8db:	68 d8 11 43 00       	push   $0x4311d8
40a8e0:	68 70 75 43 00       	push   $0x437570
40a8e5:	8b f8                	mov    %eax,%edi
40a8e7:	e8 52 05 00 00       	call   0x40ae3e
40a8ec:	59                   	pop    %ecx
40a8ed:	8b f0                	mov    %eax,%esi
40a8ef:	59                   	pop    %ecx
40a8f0:	6a 0a                	push   $0xa
40a8f2:	8b ce                	mov    %esi,%ecx
40a8f4:	e8 48 02 00 00       	call   0x40ab41
40a8f9:	8b ce                	mov    %esi,%ecx
40a8fb:	e8 6a 03 00 00       	call   0x40ac6a
40a900:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40a903:	53                   	push   %ebx
40a904:	c1 e0 03             	shl    $0x3,%eax
40a907:	50                   	push   %eax
40a908:	68 00 30 00 00       	push   $0x3000
40a90d:	57                   	push   %edi
40a90e:	53                   	push   %ebx
40a90f:	ff 15 70 97 43 00    	call   *0x439770
40a915:	50                   	push   %eax
40a916:	ff 55 f0             	call   *-0x10(%ebp)
40a919:	8b f0                	mov    %eax,%esi
40a91b:	3b f3                	cmp    %ebx,%esi
40a91d:	75 1f                	jne    0x40a93e
40a91f:	6a 01                	push   $0x1
40a921:	8d 4d cc             	lea    -0x34(%ebp),%ecx
40a924:	88 5d fc             	mov    %bl,-0x4(%ebp)
40a927:	e8 d9 01 00 00       	call   0x40ab05
40a92c:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
40a930:	6a 01                	push   $0x1
40a932:	8d 4d dc             	lea    -0x24(%ebp),%ecx
40a935:	e8 cb 01 00 00       	call   0x40ab05
40a93a:	32 c0                	xor    %al,%al
40a93c:	eb 3c                	jmp    0x40a97a
40a93e:	57                   	push   %edi
40a93f:	ff 75 ec             	push   -0x14(%ebp)
40a942:	56                   	push   %esi
40a943:	e8 28 14 00 00       	call   0x40bd70
40a948:	83 c4 0c             	add    $0xc,%esp
40a94b:	57                   	push   %edi
40a94c:	56                   	push   %esi
40a94d:	ff 75 0c             	push   0xc(%ebp)
40a950:	ff 75 08             	push   0x8(%ebp)
40a953:	e8 4f 75 ff ff       	call   0x401ea7
40a958:	83 c4 10             	add    $0x10,%esp
40a95b:	ff d6                	call   *%esi
40a95d:	6a 01                	push   $0x1
40a95f:	8d 4d cc             	lea    -0x34(%ebp),%ecx
40a962:	88 5d fc             	mov    %bl,-0x4(%ebp)
40a965:	e8 9b 01 00 00       	call   0x40ab05
40a96a:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
40a96e:	6a 01                	push   $0x1
40a970:	8d 4d dc             	lea    -0x24(%ebp),%ecx
40a973:	e8 8d 01 00 00       	call   0x40ab05
40a978:	b0 01                	mov    $0x1,%al
40a97a:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40a97d:	5f                   	pop    %edi
40a97e:	5e                   	pop    %esi
40a97f:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40a986:	5b                   	pop    %ebx
40a987:	c9                   	leave
40a988:	c3                   	ret
40a989:	6a 01                	push   $0x1
40a98b:	e8 75 01 00 00       	call   0x40ab05
40a990:	c3                   	ret
40a991:	56                   	push   %esi
40a992:	57                   	push   %edi
40a993:	8b 7c 24 10          	mov    0x10(%esp),%edi
40a997:	6a 01                	push   $0x1
40a999:	8b f1                	mov    %ecx,%esi
40a99b:	57                   	push   %edi
40a99c:	e8 25 00 00 00       	call   0x40a9c6
40a9a1:	84 c0                	test   %al,%al
40a9a3:	74 1a                	je     0x40a9bf
40a9a5:	57                   	push   %edi
40a9a6:	ff 74 24 10          	push   0x10(%esp)
40a9aa:	ff 76 04             	push   0x4(%esi)
40a9ad:	e8 be 13 00 00       	call   0x40bd70
40a9b2:	8b 46 04             	mov    0x4(%esi),%eax
40a9b5:	83 c4 0c             	add    $0xc,%esp
40a9b8:	89 7e 08             	mov    %edi,0x8(%esi)
40a9bb:	80 24 07 00          	andb   $0x0,(%edi,%eax,1)
40a9bf:	8b c6                	mov    %esi,%eax
40a9c1:	5f                   	pop    %edi
40a9c2:	5e                   	pop    %esi
40a9c3:	c2 08 00             	ret    $0x8
40a9c6:	56                   	push   %esi
40a9c7:	57                   	push   %edi
40a9c8:	8b 7c 24 0c          	mov    0xc(%esp),%edi
40a9cc:	8b f1                	mov    %ecx,%esi
40a9ce:	83 ff fd             	cmp    $0xfffffffd,%edi
40a9d1:	76 05                	jbe    0x40a9d8
40a9d3:	e8 88 b7 00 00       	call   0x416160
40a9d8:	8b 4e 04             	mov    0x4(%esi),%ecx
40a9db:	33 d2                	xor    %edx,%edx
40a9dd:	3b ca                	cmp    %edx,%ecx
40a9df:	74 17                	je     0x40a9f8
40a9e1:	8a 41 ff             	mov    -0x1(%ecx),%al
40a9e4:	3a c2                	cmp    %dl,%al
40a9e6:	74 10                	je     0x40a9f8
40a9e8:	3c ff                	cmp    $0xff,%al
40a9ea:	74 0c                	je     0x40a9f8
40a9ec:	3b fa                	cmp    %edx,%edi
40a9ee:	75 52                	jne    0x40aa42
40a9f0:	fe c8                	dec    %al
40a9f2:	52                   	push   %edx
40a9f3:	88 41 ff             	mov    %al,-0x1(%ecx)
40a9f6:	eb 0c                	jmp    0x40aa04
40a9f8:	3b fa                	cmp    %edx,%edi
40a9fa:	75 1e                	jne    0x40aa1a
40a9fc:	38 54 24 10          	cmp    %dl,0x10(%esp)
40aa00:	74 0b                	je     0x40aa0d
40aa02:	6a 01                	push   $0x1
40aa04:	8b ce                	mov    %esi,%ecx
40aa06:	e8 fa 00 00 00       	call   0x40ab05
40aa0b:	eb 09                	jmp    0x40aa16
40aa0d:	3b ca                	cmp    %edx,%ecx
40aa0f:	74 05                	je     0x40aa16
40aa11:	89 56 08             	mov    %edx,0x8(%esi)
40aa14:	88 11                	mov    %dl,(%ecx)
40aa16:	32 c0                	xor    %al,%al
40aa18:	eb 32                	jmp    0x40aa4c
40aa1a:	38 54 24 10          	cmp    %dl,0x10(%esp)
40aa1e:	74 1d                	je     0x40aa3d
40aa20:	8b 46 0c             	mov    0xc(%esi),%eax
40aa23:	83 f8 1f             	cmp    $0x1f,%eax
40aa26:	77 04                	ja     0x40aa2c
40aa28:	3b c7                	cmp    %edi,%eax
40aa2a:	73 0b                	jae    0x40aa37
40aa2c:	6a 01                	push   $0x1
40aa2e:	8b ce                	mov    %esi,%ecx
40aa30:	e8 d0 00 00 00       	call   0x40ab05
40aa35:	eb 0b                	jmp    0x40aa42
40aa37:	38 54 24 10          	cmp    %dl,0x10(%esp)
40aa3b:	75 0d                	jne    0x40aa4a
40aa3d:	39 7e 0c             	cmp    %edi,0xc(%esi)
40aa40:	73 08                	jae    0x40aa4a
40aa42:	57                   	push   %edi
40aa43:	8b ce                	mov    %esi,%ecx
40aa45:	e8 07 00 00 00       	call   0x40aa51
40aa4a:	b0 01                	mov    $0x1,%al
40aa4c:	5f                   	pop    %edi
40aa4d:	5e                   	pop    %esi
40aa4e:	c2 08 00             	ret    $0x8
40aa51:	b8 48 77 42 00       	mov    $0x427748,%eax
40aa56:	e8 d5 11 00 00       	call   0x40bc30
40aa5b:	51                   	push   %ecx
40aa5c:	51                   	push   %ecx
40aa5d:	51                   	push   %ecx
40aa5e:	53                   	push   %ebx
40aa5f:	8b 5d 08             	mov    0x8(%ebp),%ebx
40aa62:	56                   	push   %esi
40aa63:	83 cb 1f             	or     $0x1f,%ebx
40aa66:	57                   	push   %edi
40aa67:	8b f1                	mov    %ecx,%esi
40aa69:	83 fb fd             	cmp    $0xfffffffd,%ebx
40aa6c:	89 65 f0             	mov    %esp,-0x10(%ebp)
40aa6f:	89 75 ec             	mov    %esi,-0x14(%ebp)
40aa72:	76 03                	jbe    0x40aa77
40aa74:	8b 5d 08             	mov    0x8(%ebp),%ebx
40aa77:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40aa7b:	8d 43 02             	lea    0x2(%ebx),%eax
40aa7e:	85 c0                	test   %eax,%eax
40aa80:	7d 02                	jge    0x40aa84
40aa82:	33 c0                	xor    %eax,%eax
40aa84:	50                   	push   %eax
40aa85:	e8 77 22 01 00       	call   0x41cd01
40aa8a:	59                   	pop    %ecx
40aa8b:	89 45 08             	mov    %eax,0x8(%ebp)
40aa8e:	eb 25                	jmp    0x40aab5
40aa90:	8b 45 08             	mov    0x8(%ebp),%eax
40aa93:	89 45 e8             	mov    %eax,-0x18(%ebp)
40aa96:	83 c0 02             	add    $0x2,%eax
40aa99:	85 c0                	test   %eax,%eax
40aa9b:	7d 02                	jge    0x40aa9f
40aa9d:	33 c0                	xor    %eax,%eax
40aa9f:	50                   	push   %eax
40aaa0:	e8 5c 22 01 00       	call   0x41cd01
40aaa5:	89 45 08             	mov    %eax,0x8(%ebp)
40aaa8:	59                   	pop    %ecx
40aaa9:	b8 af aa 40 00       	mov    $0x40aaaf,%eax
40aaae:	c3                   	ret
40aaaf:	8b 75 ec             	mov    -0x14(%ebp),%esi
40aab2:	8b 5d e8             	mov    -0x18(%ebp),%ebx
40aab5:	8b 46 08             	mov    0x8(%esi),%eax
40aab8:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
40aabc:	85 c0                	test   %eax,%eax
40aabe:	76 11                	jbe    0x40aad1
40aac0:	50                   	push   %eax
40aac1:	8b 45 08             	mov    0x8(%ebp),%eax
40aac4:	ff 76 04             	push   0x4(%esi)
40aac7:	40                   	inc    %eax
40aac8:	50                   	push   %eax
40aac9:	e8 a2 12 00 00       	call   0x40bd70
40aace:	83 c4 0c             	add    $0xc,%esp
40aad1:	8b 7e 08             	mov    0x8(%esi),%edi
40aad4:	6a 01                	push   $0x1
40aad6:	8b ce                	mov    %esi,%ecx
40aad8:	e8 28 00 00 00       	call   0x40ab05
40aadd:	8b 45 08             	mov    0x8(%ebp),%eax
40aae0:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40aae3:	40                   	inc    %eax
40aae4:	89 46 04             	mov    %eax,0x4(%esi)