405702:	8b 45 e8             	mov    -0x18(%ebp),%eax
405705:	89 7d d8             	mov    %edi,-0x28(%ebp)
405708:	8d 04 c7             	lea    (%edi,%eax,8),%eax
40570b:	50                   	push   %eax
40570c:	e8 43 39 00 00       	call   0x409054
405711:	8b 45 d0             	mov    -0x30(%ebp),%eax
405714:	8b 4d d4             	mov    -0x2c(%ebp),%ecx
405717:	83 c4 14             	add    $0x14,%esp
40571a:	01 45 dc             	add    %eax,-0x24(%ebp)
40571d:	89 75 e8             	mov    %esi,-0x18(%ebp)
405720:	11 4d e0             	adc    %ecx,-0x20(%ebp)
405723:	33 f6                	xor    %esi,%esi
405725:	8d 45 a0             	lea    -0x60(%ebp),%eax
405728:	50                   	push   %eax
405729:	ff 75 ec             	push   -0x14(%ebp)
40572c:	e8 9b 37 00 00       	call   0x408ecc
405731:	85 c0                	test   %eax,%eax
405733:	75 98                	jne    0x4056cd
405735:	8d 45 a0             	lea    -0x60(%ebp),%eax
405738:	c7 45 a0 1c 00 00 00 	movl   $0x1c,-0x60(%ebp)
40573f:	50                   	push   %eax
405740:	ff 75 ec             	push   -0x14(%ebp)
405743:	e8 8a 37 00 00       	call   0x408ed2
405748:	85 c0                	test   %eax,%eax
40574a:	75 11                	jne    0x40575d
40574c:	8d 45 c4             	lea    -0x3c(%ebp),%eax
40574f:	68 d8 a5 40 00       	push   $0x40a5d8
405754:	50                   	push   %eax
405755:	89 75 c4             	mov    %esi,-0x3c(%ebp)
405758:	e8 d9 37 00 00       	call   0x408f36
40575d:	89 75 e4             	mov    %esi,-0x1c(%ebp)
405760:	8b 45 ac             	mov    -0x54(%ebp),%eax
405763:	3b 43 58             	cmp    0x58(%ebx),%eax
405766:	0f 85 89 00 00 00    	jne    0x4057f5
40576c:	3b 75 e8             	cmp    -0x18(%ebp),%esi
40576f:	7d 40                	jge    0x4057b1
405771:	6a 00                	push   $0x0
405773:	68 e8 03 00 00       	push   $0x3e8
405778:	ff 75 e0             	push   -0x20(%ebp)
40577b:	ff 75 dc             	push   -0x24(%ebp)
40577e:	e8 5d 38 00 00       	call   0x408fe0
405783:	8b ca                	mov    %edx,%ecx
405785:	8b d0                	mov    %eax,%edx
405787:	0b d1                	or     %ecx,%edx
405789:	75 05                	jne    0x405790
40578b:	6a 01                	push   $0x1
40578d:	33 c9                	xor    %ecx,%ecx
40578f:	58                   	pop    %eax
405790:	51                   	push   %ecx
405791:	50                   	push   %eax
405792:	ff 74 f7 04          	push   0x4(%edi,%esi,8)
405796:	ff 34 f7             	push   (%edi,%esi,8)
405799:	e8 42 38 00 00       	call   0x408fe0
40579e:	6a 0a                	push   $0xa
4057a0:	99                   	cltd
4057a1:	59                   	pop    %ecx
4057a2:	f7 f9                	idiv   %ecx
4057a4:	6a 63                	push   $0x63
4057a6:	59                   	pop    %ecx
4057a7:	3b c1                	cmp    %ecx,%eax
4057a9:	89 45 e4             	mov    %eax,-0x1c(%ebp)
4057ac:	7e 03                	jle    0x4057b1
4057ae:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
4057b1:	ff 75 e4             	push   -0x1c(%ebp)
4057b4:	8d 85 98 fe ff ff    	lea    -0x168(%ebp),%eax
4057ba:	ff 75 a8             	push   -0x58(%ebp)
4057bd:	68 b8 ca 40 00       	push   $0x40cab8
4057c2:	50                   	push   %eax
4057c3:	ff 15 58 a1 40 00    	call   *0x40a158
4057c9:	83 c4 10             	add    $0x10,%esp
4057cc:	8d 85 98 fe ff ff    	lea    -0x168(%ebp),%eax
4057d2:	8b cb                	mov    %ebx,%ecx
4057d4:	6a 0b                	push   $0xb
4057d6:	ff 73 10             	push   0x10(%ebx)
4057d9:	ff 75 bc             	push   -0x44(%ebp)
4057dc:	50                   	push   %eax
4057dd:	e8 f1 f6 ff ff       	call   0x404ed3
4057e2:	53                   	push   %ebx
4057e3:	68 e1 44 40 00       	push   $0x4044e1
4057e8:	ff 75 a8             	push   -0x58(%ebp)
4057eb:	89 43 50             	mov    %eax,0x50(%ebx)
4057ee:	ff 15 34 a2 40 00    	call   *0x40a234
4057f4:	46                   	inc    %esi
4057f5:	8d 45 a0             	lea    -0x60(%ebp),%eax
4057f8:	50                   	push   %eax
4057f9:	ff 75 ec             	push   -0x14(%ebp)
4057fc:	e8 cb 36 00 00       	call   0x408ecc
405801:	85 c0                	test   %eax,%eax
405803:	0f 85 57 ff ff ff    	jne    0x405760
405809:	eb 28                	jmp    0x405833
40580b:	83 7d ec 00          	cmpl   $0x0,-0x14(%ebp)
40580f:	74 09                	je     0x40581a
405811:	ff 75 ec             	push   -0x14(%ebp)
405814:	ff 15 dc a0 40 00    	call   *0x40a0dc
40581a:	83 7d d8 00          	cmpl   $0x0,-0x28(%ebp)
40581e:	74 0a                	je     0x40582a
405820:	ff 75 d8             	push   -0x28(%ebp)
405823:	ff 15 48 a1 40 00    	call   *0x40a148
405829:	59                   	pop    %ecx
40582a:	b8 30 58 40 00       	mov    $0x405830,%eax
40582f:	c3                   	ret
405830:	8b 45 9c             	mov    -0x64(%ebp),%eax
405833:	8b 4d f4             	mov    -0xc(%ebp),%ecx
405836:	5f                   	pop    %edi
405837:	5e                   	pop    %esi
405838:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40583f:	5b                   	pop    %ebx
405840:	c9                   	leave
405841:	c3                   	ret
405842:	55                   	push   %ebp
405843:	8b ec                	mov    %esp,%ebp
405845:	83 ec 28             	sub    $0x28,%esp
405848:	a1 c8 d7 40 00       	mov    0x40d7c8,%eax
40584d:	56                   	push   %esi
40584e:	57                   	push   %edi
40584f:	33 ff                	xor    %edi,%edi
405851:	3b c7                	cmp    %edi,%eax
405853:	74 0e                	je     0x405863
405855:	ff 75 08             	push   0x8(%ebp)
405858:	57                   	push   %edi
405859:	6a 40                	push   $0x40
40585b:	ff d0                	call   *%eax
40585d:	8b f0                	mov    %eax,%esi
40585f:	3b f7                	cmp    %edi,%esi
405861:	75 04                	jne    0x405867
405863:	33 c0                	xor    %eax,%eax
405865:	eb 4a                	jmp    0x4058b1
405867:	8d 45 f0             	lea    -0x10(%ebp),%eax
40586a:	50                   	push   %eax
40586b:	8d 45 f8             	lea    -0x8(%ebp),%eax
40586e:	50                   	push   %eax
40586f:	8d 45 e0             	lea    -0x20(%ebp),%eax
405872:	50                   	push   %eax
405873:	8d 45 d8             	lea    -0x28(%ebp),%eax
405876:	50                   	push   %eax
405877:	56                   	push   %esi
405878:	ff 15 88 a0 40 00    	call   *0x40a088
40587e:	85 c0                	test   %eax,%eax
405880:	74 26                	je     0x4058a8
405882:	8b 45 f8             	mov    -0x8(%ebp),%eax
405885:	8b 4d fc             	mov    -0x4(%ebp),%ecx
405888:	03 45 f0             	add    -0x10(%ebp),%eax
40588b:	6a 08                	push   $0x8
40588d:	13 4d f4             	adc    -0xc(%ebp),%ecx
405890:	89 45 e8             	mov    %eax,-0x18(%ebp)
405893:	8d 45 e8             	lea    -0x18(%ebp),%eax
405896:	50                   	push   %eax
405897:	89 4d ec             	mov    %ecx,-0x14(%ebp)
40589a:	ff 75 0c             	push   0xc(%ebp)
40589d:	e8 b2 37 00 00       	call   0x409054
4058a2:	83 c4 0c             	add    $0xc,%esp
4058a5:	6a 01                	push   $0x1
4058a7:	5f                   	pop    %edi
4058a8:	56                   	push   %esi
4058a9:	ff 15 dc a0 40 00    	call   *0x40a0dc
4058af:	8b c7                	mov    %edi,%eax
4058b1:	5f                   	pop    %edi
4058b2:	5e                   	pop    %esi
4058b3:	c9                   	leave
4058b4:	c2 08 00             	ret    $0x8
4058b7:	8b 44 24 04          	mov    0x4(%esp),%eax
4058bb:	83 f8 0c             	cmp    $0xc,%eax
4058be:	7f 05                	jg     0x4058c5
4058c0:	83 f8 01             	cmp    $0x1,%eax
4058c3:	7d 02                	jge    0x4058c7
4058c5:	33 c0                	xor    %eax,%eax
4058c7:	8b 04 85 18 c6 40 00 	mov    0x40c618(,%eax,4),%eax
4058ce:	c2 04 00             	ret    $0x4
4058d1:	55                   	push   %ebp
4058d2:	8b ec                	mov    %esp,%ebp
4058d4:	8b 45 0c             	mov    0xc(%ebp),%eax
4058d7:	33 c9                	xor    %ecx,%ecx
4058d9:	c1 e8 10             	shr    $0x10,%eax
4058dc:	8a cc                	mov    %ah,%cl
4058de:	0f b6 c9             	movzbl %cl,%ecx
4058e1:	0f b6 c0             	movzbl %al,%eax
4058e4:	51                   	push   %ecx
4058e5:	50                   	push   %eax
4058e6:	33 c0                	xor    %eax,%eax
4058e8:	8a 45 0d             	mov    0xd(%ebp),%al
4058eb:	0f b6 c0             	movzbl %al,%eax
4058ee:	50                   	push   %eax
4058ef:	0f b6 45 0c          	movzbl 0xc(%ebp),%eax
4058f3:	50                   	push   %eax
4058f4:	68 dc ca 40 00       	push   $0x40cadc
4058f9:	ff 75 08             	push   0x8(%ebp)
4058fc:	ff 15 30 a2 40 00    	call   *0x40a230
405902:	8b 45 08             	mov    0x8(%ebp),%eax
405905:	83 c4 18             	add    $0x18,%esp
405908:	5d                   	pop    %ebp
405909:	c2 08 00             	ret    $0x8
40590c:	b8 88 94 40 00       	mov    $0x409488,%eax
405911:	e8 1a 36 00 00       	call   0x408f30
405916:	81 ec a4 01 00 00    	sub    $0x1a4,%esp
40591c:	53                   	push   %ebx
40591d:	56                   	push   %esi
40591e:	33 f6                	xor    %esi,%esi
405920:	57                   	push   %edi
405921:	39 35 fc d7 40 00    	cmp    %esi,0x40d7fc
405927:	89 65 f0             	mov    %esp,-0x10(%ebp)
40592a:	8b d9                	mov    %ecx,%ebx
40592c:	89 75 ec             	mov    %esi,-0x14(%ebp)
40592f:	89 75 e4             	mov    %esi,-0x1c(%ebp)
405932:	89 75 fc             	mov    %esi,-0x4(%ebp)
405935:	0f 84 14 02 00 00    	je     0x405b4f
40593b:	39 35 00 d8 40 00    	cmp    %esi,0x40d800
405941:	0f 84 08 02 00 00    	je     0x405b4f
405947:	6a 02                	push   $0x2
405949:	56                   	push   %esi
40594a:	89 75 e8             	mov    %esi,-0x18(%ebp)
40594d:	ff 15 90 a0 40 00    	call   *0x40a090
405953:	50                   	push   %eax
405954:	8d 45 ec             	lea    -0x14(%ebp),%eax
405957:	6a 01                	push   $0x1
405959:	50                   	push   %eax
40595a:	ff 15 fc d7 40 00    	call   *0x40d7fc
405960:	3b c6                	cmp    %esi,%eax
405962:	0f 85 1e 01 00 00    	jne    0x405a86
405968:	33 ff                	xor    %edi,%edi
40596a:	8b 45 ec             	mov    -0x14(%ebp),%eax
40596d:	3b 38                	cmp    (%eax),%edi
40596f:	0f 83 11 01 00 00    	jae    0x405a86
405975:	8b 55 08             	mov    0x8(%ebp),%edx
405978:	8d 4c 7f 03          	lea    0x3(%edi,%edi,2),%ecx
40597c:	39 14 c8             	cmp    %edx,(%eax,%ecx,8)
40597f:	0f 85 f9 00 00 00    	jne    0x405a7e
405985:	8d 34 7f             	lea    (%edi,%edi,2),%esi
405988:	c1 e6 03             	shl    $0x3,%esi
40598b:	03 c6                	add    %esi,%eax
40598d:	83 78 10 00          	cmpl   $0x0,0x10(%eax)
405991:	75 04                	jne    0x405997
405993:	83 60 14 00          	andl   $0x0,0x14(%eax)
405997:	8b 45 ec             	mov    -0x14(%ebp),%eax
40599a:	66 8b 44 06 0c       	mov    0xc(%esi,%eax,1),%ax
40599f:	50                   	push   %eax
4059a0:	e8 3f 35 00 00       	call   0x408ee4
4059a5:	0f b7 c0             	movzwl %ax,%eax
4059a8:	50                   	push   %eax
4059a9:	8b 45 ec             	mov    -0x14(%ebp),%eax
4059ac:	8b cb                	mov    %ebx,%ecx
4059ae:	ff 74 06 08          	push   0x8(%esi,%eax,1)
4059b2:	8d 85 50 fe ff ff    	lea    -0x1b0(%ebp),%eax
4059b8:	50                   	push   %eax
4059b9:	e8 13 ff ff ff       	call   0x4058d1
4059be:	50                   	push   %eax
4059bf:	8d 85 d0 fe ff ff    	lea    -0x130(%ebp),%eax
4059c5:	68 14 cb 40 00       	push   $0x40cb14
4059ca:	50                   	push   %eax
4059cb:	ff 15 30 a2 40 00    	call   *0x40a230
4059d1:	83 c4 10             	add    $0x10,%esp
4059d4:	83 f8 1c             	cmp    $0x1c,%eax
4059d7:	89 45 e0             	mov    %eax,-0x20(%ebp)
4059da:	7d 0b                	jge    0x4059e7
4059dc:	c6 84 05 d0 fe ff ff 	movb   $0x20,-0x130(%ebp,%eax,1)
4059e3:	20
4059e4:	40                   	inc    %eax
4059e5:	eb ed                	jmp    0x4059d4
4059e7:	8b 45 ec             	mov    -0x14(%ebp),%eax
4059ea:	8d 34 7f             	lea    (%edi,%edi,2),%esi
4059ed:	c1 e6 03             	shl    $0x3,%esi
4059f0:	66 8b 44 06 14       	mov    0x14(%esi,%eax,1),%ax
4059f5:	50                   	push   %eax
4059f6:	e8 e9 34 00 00       	call   0x408ee4
4059fb:	0f b7 c0             	movzwl %ax,%eax
4059fe:	50                   	push   %eax
4059ff:	8b 45 ec             	mov    -0x14(%ebp),%eax
405a02:	8b cb                	mov    %ebx,%ecx
405a04:	ff 74 06 10          	push   0x10(%esi,%eax,1)
405a08:	8d 85 50 fe ff ff    	lea    -0x1b0(%ebp),%eax
405a0e:	50                   	push   %eax
405a0f:	e8 bd fe ff ff       	call   0x4058d1
405a14:	50                   	push   %eax
405a15:	8b 45 ec             	mov    -0x14(%ebp),%eax
405a18:	8b cb                	mov    %ebx,%ecx
405a1a:	ff 74 06 04          	push   0x4(%esi,%eax,1)
405a1e:	e8 94 fe ff ff       	call   0x4058b7
405a23:	50                   	push   %eax
405a24:	8b 45 e0             	mov    -0x20(%ebp),%eax
405a27:	68 04 cb 40 00       	push   $0x40cb04
405a2c:	8d 84 05 d0 fe ff ff 	lea    -0x130(%ebp,%eax,1),%eax
405a33:	50                   	push   %eax
405a34:	ff 15 58 a1 40 00    	call   *0x40a158
405a3a:	83 c4 14             	add    $0x14,%esp
405a3d:	83 7d e8 00          	cmpl   $0x0,-0x18(%ebp)
405a41:	75 17                	jne    0x405a5a
405a43:	6a 0f                	push   $0xf
405a45:	8b cb                	mov    %ebx,%ecx
405a47:	ff 73 18             	push   0x18(%ebx)
405a4a:	ff 73 4c             	push   0x4c(%ebx)
405a4d:	68 fc ca 40 00       	push   $0x40cafc
405a52:	e8 7c f4 ff ff       	call   0x404ed3
405a57:	89 45 e8             	mov    %eax,-0x18(%ebp)
405a5a:	8b 45 ec             	mov    -0x14(%ebp),%eax
405a5d:	83 7c 06 04 05       	cmpl   $0x5,0x4(%esi,%eax,1)
405a62:	74 04                	je     0x405a68
405a64:	6a 10                	push   $0x10
405a66:	eb 02                	jmp    0x405a6a
405a68:	6a 11                	push   $0x11
405a6a:	ff 73 18             	push   0x18(%ebx)
405a6d:	8d 85 d0 fe ff ff    	lea    -0x130(%ebp),%eax
405a73:	8b cb                	mov    %ebx,%ecx
405a75:	ff 75 e8             	push   -0x18(%ebp)
405a78:	50                   	push   %eax
405a79:	e8 55 f4 ff ff       	call   0x404ed3
405a7e:	47                   	inc    %edi
405a7f:	33 f6                	xor    %esi,%esi
405a81:	e9 e4 fe ff ff       	jmp    0x40596a
405a86:	6a 02                	push   $0x2
405a88:	56                   	push   %esi
405a89:	ff 15 90 a0 40 00    	call   *0x40a090
405a8f:	50                   	push   %eax
405a90:	8d 45 e4             	lea    -0x1c(%ebp),%eax
405a93:	6a 01                	push   $0x1
405a95:	50                   	push   %eax
405a96:	ff 15 00 d8 40 00    	call   *0x40d800
405a9c:	3b c6                	cmp    %esi,%eax
405a9e:	0f 85 9a 00 00 00    	jne    0x405b3e
405aa4:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
405aa7:	33 c0                	xor    %eax,%eax
405aa9:	3b 01                	cmp    (%ecx),%eax
405aab:	0f 83 8d 00 00 00    	jae    0x405b3e
405ab1:	8b 75 08             	mov    0x8(%ebp),%esi
405ab4:	8d 78 01             	lea    0x1(%eax),%edi
405ab7:	8d 14 7f             	lea    (%edi,%edi,2),%edx
405aba:	39 34 91             	cmp    %esi,(%ecx,%edx,4)
405abd:	75 76                	jne    0x405b35
405abf:	8d 34 40             	lea    (%eax,%eax,2),%esi
405ac2:	c1 e6 02             	shl    $0x2,%esi
405ac5:	66 8b 44 0e 08       	mov    0x8(%esi,%ecx,1),%ax
405aca:	50                   	push   %eax
405acb:	e8 14 34 00 00       	call   0x408ee4
405ad0:	0f b7 c0             	movzwl %ax,%eax
405ad3:	50                   	push   %eax
405ad4:	8b 45 e4             	mov    -0x1c(%ebp),%eax
405ad7:	8b cb                	mov    %ebx,%ecx
405ad9:	ff 74 06 04          	push   0x4(%esi,%eax,1)
405add:	8d 85 50 fe ff ff    	lea    -0x1b0(%ebp),%eax
405ae3:	50                   	push   %eax
405ae4:	e8 e8 fd ff ff       	call   0x4058d1
405ae9:	50                   	push   %eax
405aea:	8d 85 d0 fe ff ff    	lea    -0x130(%ebp),%eax
405af0:	68 f0 ca 40 00       	push   $0x40caf0
405af5:	50                   	push   %eax
405af6:	ff 15 58 a1 40 00    	call   *0x40a158
405afc:	83 c4 10             	add    $0x10,%esp
405aff:	83 7d e8 00          	cmpl   $0x0,-0x18(%ebp)
405b03:	75 17                	jne    0x405b1c
405b05:	6a 0f                	push   $0xf
405b07:	8b cb                	mov    %ebx,%ecx
405b09:	ff 73 18             	push   0x18(%ebx)