40aa2f:	8d 3c 85 20 46 41 00 	lea    0x414620(,%eax,4),%edi
40aa36:	e8 75 80 ff ff       	call   0x402ab0
40aa3b:	83 e0 1f             	and    $0x1f,%eax
40aa3e:	59                   	pop    %ecx
40aa3f:	c1 e0 06             	shl    $0x6,%eax
40aa42:	03 07                	add    (%edi),%eax
40aa44:	59                   	pop    %ecx
40aa45:	eb 02                	jmp    0x40aa49
40aa47:	8b c3                	mov    %ebx,%eax
40aa49:	8a 40 24             	mov    0x24(%eax),%al
40aa4c:	24 7f                	and    $0x7f,%al
40aa4e:	3c 01                	cmp    $0x1,%al
40aa50:	0f 84 9f 00 00 00    	je     0x40aaf5
40aa56:	56                   	push   %esi
40aa57:	e8 54 80 ff ff       	call   0x402ab0
40aa5c:	59                   	pop    %ecx
40aa5d:	83 f8 ff             	cmp    $0xffffffff,%eax
40aa60:	74 2e                	je     0x40aa90
40aa62:	56                   	push   %esi
40aa63:	e8 48 80 ff ff       	call   0x402ab0
40aa68:	59                   	pop    %ecx
40aa69:	83 f8 fe             	cmp    $0xfffffffe,%eax
40aa6c:	74 22                	je     0x40aa90
40aa6e:	56                   	push   %esi
40aa6f:	e8 3c 80 ff ff       	call   0x402ab0
40aa74:	c1 f8 05             	sar    $0x5,%eax
40aa77:	56                   	push   %esi
40aa78:	8d 3c 85 20 46 41 00 	lea    0x414620(,%eax,4),%edi
40aa7f:	e8 2c 80 ff ff       	call   0x402ab0
40aa84:	83 e0 1f             	and    $0x1f,%eax
40aa87:	59                   	pop    %ecx
40aa88:	c1 e0 06             	shl    $0x6,%eax
40aa8b:	03 07                	add    (%edi),%eax
40aa8d:	59                   	pop    %ecx
40aa8e:	eb 02                	jmp    0x40aa92
40aa90:	8b c3                	mov    %ebx,%eax
40aa92:	f6 40 04 80          	testb  $0x80,0x4(%eax)
40aa96:	74 5d                	je     0x40aaf5
40aa98:	ff 75 08             	push   0x8(%ebp)
40aa9b:	8d 45 f4             	lea    -0xc(%ebp),%eax
40aa9e:	6a 05                	push   $0x5
40aaa0:	50                   	push   %eax
40aaa1:	8d 45 f0             	lea    -0x10(%ebp),%eax
40aaa4:	50                   	push   %eax
40aaa5:	e8 58 31 00 00       	call   0x40dc02
40aaaa:	83 c4 10             	add    $0x10,%esp
40aaad:	85 c0                	test   %eax,%eax
40aaaf:	74 07                	je     0x40aab8
40aab1:	b8 ff ff 00 00       	mov    $0xffff,%eax
40aab6:	eb 5d                	jmp    0x40ab15
40aab8:	33 ff                	xor    %edi,%edi
40aaba:	39 7d f0             	cmp    %edi,-0x10(%ebp)
40aabd:	7e 30                	jle    0x40aaef
40aabf:	ff 4e 04             	decl   0x4(%esi)
40aac2:	78 12                	js     0x40aad6
40aac4:	8b 06                	mov    (%esi),%eax
40aac6:	8a 4c 3d f4          	mov    -0xc(%ebp,%edi,1),%cl
40aaca:	88 08                	mov    %cl,(%eax)
40aacc:	8b 0e                	mov    (%esi),%ecx
40aace:	0f b6 01             	movzbl (%ecx),%eax
40aad1:	41                   	inc    %ecx
40aad2:	89 0e                	mov    %ecx,(%esi)
40aad4:	eb 0e                	jmp    0x40aae4
40aad6:	0f be 44 3d f4       	movsbl -0xc(%ebp,%edi,1),%eax
40aadb:	56                   	push   %esi
40aadc:	50                   	push   %eax
40aadd:	e8 4a c5 ff ff       	call   0x40702c
40aae2:	59                   	pop    %ecx
40aae3:	59                   	pop    %ecx
40aae4:	83 f8 ff             	cmp    $0xffffffff,%eax
40aae7:	74 c8                	je     0x40aab1
40aae9:	47                   	inc    %edi
40aaea:	3b 7d f0             	cmp    -0x10(%ebp),%edi
40aaed:	7c d0                	jl     0x40aabf
40aaef:	66 8b 45 08          	mov    0x8(%ebp),%ax
40aaf3:	eb 20                	jmp    0x40ab15
40aaf5:	83 46 04 fe          	addl   $0xfffffffe,0x4(%esi)
40aaf9:	78 0d                	js     0x40ab08
40aafb:	8b 0e                	mov    (%esi),%ecx
40aafd:	8b 45 08             	mov    0x8(%ebp),%eax
40ab00:	66 89 01             	mov    %ax,(%ecx)
40ab03:	83 06 02             	addl   $0x2,(%esi)
40ab06:	eb 0d                	jmp    0x40ab15
40ab08:	0f b7 45 08          	movzwl 0x8(%ebp),%eax
40ab0c:	56                   	push   %esi
40ab0d:	50                   	push   %eax
40ab0e:	e8 ad 37 00 00       	call   0x40e2c0
40ab13:	59                   	pop    %ecx
40ab14:	59                   	pop    %ecx
40ab15:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40ab18:	5f                   	pop    %edi
40ab19:	5e                   	pop    %esi
40ab1a:	33 cd                	xor    %ebp,%ecx
40ab1c:	5b                   	pop    %ebx
40ab1d:	e8 82 72 ff ff       	call   0x401da4
40ab22:	c9                   	leave
40ab23:	c3                   	ret
40ab24:	8b ff                	mov    %edi,%edi
40ab26:	56                   	push   %esi
40ab27:	57                   	push   %edi
40ab28:	33 ff                	xor    %edi,%edi
40ab2a:	ff b7 00 2e 41 00    	push   0x412e00(%edi)
40ab30:	ff 15 8c f0 40 00    	call   *0x40f08c
40ab36:	89 87 00 2e 41 00    	mov    %eax,0x412e00(%edi)
40ab3c:	83 c7 04             	add    $0x4,%edi
40ab3f:	83 ff 28             	cmp    $0x28,%edi
40ab42:	72 e6                	jb     0x40ab2a
40ab44:	5f                   	pop    %edi
40ab45:	5e                   	pop    %esi
40ab46:	c3                   	ret
40ab47:	a1 84 22 41 00       	mov    0x412284,%eax
40ab4c:	83 c8 01             	or     $0x1,%eax
40ab4f:	33 c9                	xor    %ecx,%ecx
40ab51:	39 05 24 3b 41 00    	cmp    %eax,0x413b24
40ab57:	0f 94 c1             	sete   %cl
40ab5a:	8b c1                	mov    %ecx,%eax
40ab5c:	c3                   	ret
40ab5d:	cc                   	int3
40ab5e:	cc                   	int3
40ab5f:	cc                   	int3
40ab60:	8b 4c 24 04          	mov    0x4(%esp),%ecx
40ab64:	f7 c1 03 00 00 00    	test   $0x3,%ecx
40ab6a:	74 24                	je     0x40ab90
40ab6c:	8a 01                	mov    (%ecx),%al
40ab6e:	83 c1 01             	add    $0x1,%ecx
40ab71:	84 c0                	test   %al,%al
40ab73:	74 4e                	je     0x40abc3
40ab75:	f7 c1 03 00 00 00    	test   $0x3,%ecx
40ab7b:	75 ef                	jne    0x40ab6c
40ab7d:	05 00 00 00 00       	add    $0x0,%eax
40ab82:	8d a4 24 00 00 00 00 	lea    0x0(%esp),%esp
40ab89:	8d a4 24 00 00 00 00 	lea    0x0(%esp),%esp
40ab90:	8b 01                	mov    (%ecx),%eax
40ab92:	ba ff fe fe 7e       	mov    $0x7efefeff,%edx
40ab97:	03 d0                	add    %eax,%edx
40ab99:	83 f0 ff             	xor    $0xffffffff,%eax
40ab9c:	33 c2                	xor    %edx,%eax
40ab9e:	83 c1 04             	add    $0x4,%ecx
40aba1:	a9 00 01 01 81       	test   $0x81010100,%eax
40aba6:	74 e8                	je     0x40ab90
40aba8:	8b 41 fc             	mov    -0x4(%ecx),%eax
40abab:	84 c0                	test   %al,%al
40abad:	74 32                	je     0x40abe1
40abaf:	84 e4                	test   %ah,%ah
40abb1:	74 24                	je     0x40abd7
40abb3:	a9 00 00 ff 00       	test   $0xff0000,%eax
40abb8:	74 13                	je     0x40abcd
40abba:	a9 00 00 00 ff       	test   $0xff000000,%eax
40abbf:	74 02                	je     0x40abc3
40abc1:	eb cd                	jmp    0x40ab90
40abc3:	8d 41 ff             	lea    -0x1(%ecx),%eax
40abc6:	8b 4c 24 04          	mov    0x4(%esp),%ecx
40abca:	2b c1                	sub    %ecx,%eax
40abcc:	c3                   	ret
40abcd:	8d 41 fe             	lea    -0x2(%ecx),%eax
40abd0:	8b 4c 24 04          	mov    0x4(%esp),%ecx
40abd4:	2b c1                	sub    %ecx,%eax
40abd6:	c3                   	ret
40abd7:	8d 41 fd             	lea    -0x3(%ecx),%eax
40abda:	8b 4c 24 04          	mov    0x4(%esp),%ecx
40abde:	2b c1                	sub    %ecx,%eax
40abe0:	c3                   	ret
40abe1:	8d 41 fc             	lea    -0x4(%ecx),%eax
40abe4:	8b 4c 24 04          	mov    0x4(%esp),%ecx
40abe8:	2b c1                	sub    %ecx,%eax
40abea:	c3                   	ret
40abeb:	8b ff                	mov    %edi,%edi
40abed:	55                   	push   %ebp
40abee:	8b ec                	mov    %esp,%ebp
40abf0:	83 ec 10             	sub    $0x10,%esp
40abf3:	53                   	push   %ebx
40abf4:	56                   	push   %esi
40abf5:	8b 75 0c             	mov    0xc(%ebp),%esi
40abf8:	33 db                	xor    %ebx,%ebx
40abfa:	3b f3                	cmp    %ebx,%esi
40abfc:	74 15                	je     0x40ac13
40abfe:	39 5d 10             	cmp    %ebx,0x10(%ebp)
40ac01:	74 10                	je     0x40ac13
40ac03:	38 1e                	cmp    %bl,(%esi)
40ac05:	75 12                	jne    0x40ac19
40ac07:	8b 45 08             	mov    0x8(%ebp),%eax
40ac0a:	3b c3                	cmp    %ebx,%eax
40ac0c:	74 05                	je     0x40ac13
40ac0e:	33 c9                	xor    %ecx,%ecx
40ac10:	66 89 08             	mov    %cx,(%eax)
40ac13:	33 c0                	xor    %eax,%eax
40ac15:	5e                   	pop    %esi
40ac16:	5b                   	pop    %ebx
40ac17:	c9                   	leave
40ac18:	c3                   	ret
40ac19:	ff 75 14             	push   0x14(%ebp)
40ac1c:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40ac1f:	e8 c1 73 ff ff       	call   0x401fe5
40ac24:	8b 45 f0             	mov    -0x10(%ebp),%eax
40ac27:	39 58 14             	cmp    %ebx,0x14(%eax)
40ac2a:	75 1e                	jne    0x40ac4a
40ac2c:	8b 45 08             	mov    0x8(%ebp),%eax
40ac2f:	3b c3                	cmp    %ebx,%eax
40ac31:	74 06                	je     0x40ac39
40ac33:	0f b6 0e             	movzbl (%esi),%ecx
40ac36:	66 89 08             	mov    %cx,(%eax)
40ac39:	38 5d fc             	cmp    %bl,-0x4(%ebp)
40ac3c:	74 07                	je     0x40ac45
40ac3e:	8b 45 f8             	mov    -0x8(%ebp),%eax
40ac41:	83 60 70 fd          	andl   $0xfffffffd,0x70(%eax)
40ac45:	33 c0                	xor    %eax,%eax
40ac47:	40                   	inc    %eax
40ac48:	eb cb                	jmp    0x40ac15
40ac4a:	8d 45 f0             	lea    -0x10(%ebp),%eax
40ac4d:	50                   	push   %eax
40ac4e:	0f b6 06             	movzbl (%esi),%eax
40ac51:	50                   	push   %eax
40ac52:	e8 c4 00 00 00       	call   0x40ad1b
40ac57:	59                   	pop    %ecx
40ac58:	59                   	pop    %ecx
40ac59:	85 c0                	test   %eax,%eax
40ac5b:	74 7d                	je     0x40acda
40ac5d:	8b 45 f0             	mov    -0x10(%ebp),%eax
40ac60:	8b 88 ac 00 00 00    	mov    0xac(%eax),%ecx
40ac66:	83 f9 01             	cmp    $0x1,%ecx
40ac69:	7e 25                	jle    0x40ac90
40ac6b:	39 4d 10             	cmp    %ecx,0x10(%ebp)
40ac6e:	7c 20                	jl     0x40ac90
40ac70:	33 d2                	xor    %edx,%edx
40ac72:	39 5d 08             	cmp    %ebx,0x8(%ebp)
40ac75:	0f 95 c2             	setne  %dl
40ac78:	52                   	push   %edx
40ac79:	ff 75 08             	push   0x8(%ebp)
40ac7c:	51                   	push   %ecx
40ac7d:	56                   	push   %esi
40ac7e:	6a 09                	push   $0x9
40ac80:	ff 70 04             	push   0x4(%eax)
40ac83:	ff 15 30 f0 40 00    	call   *0x40f030
40ac89:	85 c0                	test   %eax,%eax
40ac8b:	8b 45 f0             	mov    -0x10(%ebp),%eax
40ac8e:	75 10                	jne    0x40aca0
40ac90:	8b 4d 10             	mov    0x10(%ebp),%ecx
40ac93:	3b 88 ac 00 00 00    	cmp    0xac(%eax),%ecx
40ac99:	72 20                	jb     0x40acbb
40ac9b:	38 5e 01             	cmp    %bl,0x1(%esi)
40ac9e:	74 1b                	je     0x40acbb
40aca0:	8b 80 ac 00 00 00    	mov    0xac(%eax),%eax
40aca6:	38 5d fc             	cmp    %bl,-0x4(%ebp)
40aca9:	0f 84 66 ff ff ff    	je     0x40ac15
40acaf:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40acb2:	83 61 70 fd          	andl   $0xfffffffd,0x70(%ecx)
40acb6:	e9 5a ff ff ff       	jmp    0x40ac15
40acbb:	e8 67 94 ff ff       	call   0x404127
40acc0:	c7 00 2a 00 00 00    	movl   $0x2a,(%eax)
40acc6:	38 5d fc             	cmp    %bl,-0x4(%ebp)
40acc9:	74 07                	je     0x40acd2
40accb:	8b 45 f8             	mov    -0x8(%ebp),%eax
40acce:	83 60 70 fd          	andl   $0xfffffffd,0x70(%eax)
40acd2:	83 c8 ff             	or     $0xffffffff,%eax
40acd5:	e9 3b ff ff ff       	jmp    0x40ac15
40acda:	33 c0                	xor    %eax,%eax
40acdc:	39 5d 08             	cmp    %ebx,0x8(%ebp)
40acdf:	0f 95 c0             	setne  %al
40ace2:	50                   	push   %eax
40ace3:	ff 75 08             	push   0x8(%ebp)
40ace6:	8b 45 f0             	mov    -0x10(%ebp),%eax
40ace9:	6a 01                	push   $0x1
40aceb:	56                   	push   %esi
40acec:	6a 09                	push   $0x9
40acee:	ff 70 04             	push   0x4(%eax)
40acf1:	ff 15 30 f0 40 00    	call   *0x40f030
40acf7:	85 c0                	test   %eax,%eax
40acf9:	0f 85 3a ff ff ff    	jne    0x40ac39
40acff:	eb ba                	jmp    0x40acbb
40ad01:	8b ff                	mov    %edi,%edi
40ad03:	55                   	push   %ebp
40ad04:	8b ec                	mov    %esp,%ebp
40ad06:	6a 00                	push   $0x0
40ad08:	ff 75 10             	push   0x10(%ebp)
40ad0b:	ff 75 0c             	push   0xc(%ebp)
40ad0e:	ff 75 08             	push   0x8(%ebp)
40ad11:	e8 d5 fe ff ff       	call   0x40abeb
40ad16:	83 c4 10             	add    $0x10,%esp
40ad19:	5d                   	pop    %ebp
40ad1a:	c3                   	ret
40ad1b:	8b ff                	mov    %edi,%edi
40ad1d:	55                   	push   %ebp
40ad1e:	8b ec                	mov    %esp,%ebp
40ad20:	83 ec 10             	sub    $0x10,%esp
40ad23:	ff 75 0c             	push   0xc(%ebp)
40ad26:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40ad29:	e8 b7 72 ff ff       	call   0x401fe5
40ad2e:	0f b6 45 08          	movzbl 0x8(%ebp),%eax
40ad32:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40ad35:	8b 89 c8 00 00 00    	mov    0xc8(%ecx),%ecx
40ad3b:	0f b7 04 41          	movzwl (%ecx,%eax,2),%eax
40ad3f:	25 00 80 00 00       	and    $0x8000,%eax
40ad44:	80 7d fc 00          	cmpb   $0x0,-0x4(%ebp)
40ad48:	74 07                	je     0x40ad51
40ad4a:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40ad4d:	83 61 70 fd          	andl   $0xfffffffd,0x70(%ecx)
40ad51:	c9                   	leave
40ad52:	c3                   	ret
40ad53:	8b ff                	mov    %edi,%edi
40ad55:	55                   	push   %ebp
40ad56:	8b ec                	mov    %esp,%ebp
40ad58:	6a 00                	push   $0x0
40ad5a:	ff 75 08             	push   0x8(%ebp)
40ad5d:	e8 b9 ff ff ff       	call   0x40ad1b
40ad62:	59                   	pop    %ecx
40ad63:	59                   	pop    %ecx
40ad64:	5d                   	pop    %ebp
40ad65:	c3                   	ret
40ad66:	cc                   	int3
40ad67:	cc                   	int3
40ad68:	cc                   	int3
40ad69:	cc                   	int3
40ad6a:	cc                   	int3
40ad6b:	cc                   	int3
40ad6c:	cc                   	int3
40ad6d:	cc                   	int3
40ad6e:	cc                   	int3
40ad6f:	cc                   	int3
40ad70:	56                   	push   %esi
40ad71:	8b 44 24 14          	mov    0x14(%esp),%eax
40ad75:	0b c0                	or     %eax,%eax
40ad77:	75 28                	jne    0x40ada1
40ad79:	8b 4c 24 10          	mov    0x10(%esp),%ecx
40ad7d:	8b 44 24 0c          	mov    0xc(%esp),%eax
40ad81:	33 d2                	xor    %edx,%edx
40ad83:	f7 f1                	div    %ecx
40ad85:	8b d8                	mov    %eax,%ebx
40ad87:	8b 44 24 08          	mov    0x8(%esp),%eax
40ad8b:	f7 f1                	div    %ecx
40ad8d:	8b f0                	mov    %eax,%esi
40ad8f:	8b c3                	mov    %ebx,%eax
40ad91:	f7 64 24 10          	mull   0x10(%esp)
40ad95:	8b c8                	mov    %eax,%ecx
40ad97:	8b c6                	mov    %esi,%eax
40ad99:	f7 64 24 10          	mull   0x10(%esp)
40ad9d:	03 d1                	add    %ecx,%edx
40ad9f:	eb 47                	jmp    0x40ade8
40ada1:	8b c8                	mov    %eax,%ecx
40ada3:	8b 5c 24 10          	mov    0x10(%esp),%ebx
40ada7:	8b 54 24 0c          	mov    0xc(%esp),%edx
40adab:	8b 44 24 08          	mov    0x8(%esp),%eax
40adaf:	d1 e9                	shr    $1,%ecx
40adb1:	d1 db                	rcr    $1,%ebx
40adb3:	d1 ea                	shr    $1,%edx
40adb5:	d1 d8                	rcr    $1,%eax
40adb7:	0b c9                	or     %ecx,%ecx
40adb9:	75 f4                	jne    0x40adaf
40adbb:	f7 f3                	div    %ebx
40adbd:	8b f0                	mov    %eax,%esi
40adbf:	f7 64 24 14          	mull   0x14(%esp)