46fcac:	33 ff                	xor    %edi,%edi
46fcae:	47                   	inc    %edi
46fcaf:	3b df                	cmp    %edi,%ebx
46fcb1:	75 11                	jne    0x46fcc4
46fcb3:	8d 85 e0 df ff ff    	lea    -0x2020(%ebp),%eax
46fcb9:	50                   	push   %eax
46fcba:	e8 39 9f f9 ff       	call   0x409bf8
46fcbf:	e9 aa 00 00 00       	jmp    0x46fd6e
46fcc4:	83 c3 02             	add    $0x2,%ebx
46fcc7:	e8 62 97 f9 ff       	call   0x40942e
46fccc:	53                   	push   %ebx
46fccd:	8b f0                	mov    %eax,%esi
46fccf:	57                   	push   %edi
46fcd0:	56                   	push   %esi
46fcd1:	e8 da 94 f9 ff       	call   0x4091b0
46fcd6:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
46fcd9:	8d 45 f0             	lea    -0x10(%ebp),%eax
46fcdc:	83 65 f8 00          	andl   $0x0,-0x8(%ebp)
46fce0:	6a 00                	push   $0x0
46fce2:	57                   	push   %edi
46fce3:	50                   	push   %eax
46fce4:	56                   	push   %esi
46fce5:	89 4d f0             	mov    %ecx,-0x10(%ebp)
46fce8:	89 7d fc             	mov    %edi,-0x4(%ebp)
46fceb:	e8 50 93 f9 ff       	call   0x409040
46fcf0:	83 c4 1c             	add    $0x1c,%esp
46fcf3:	8d 4d f0             	lea    -0x10(%ebp),%ecx
46fcf6:	e8 25 9d f9 ff       	call   0x409a20
46fcfb:	8b 45 ec             	mov    -0x14(%ebp),%eax
46fcfe:	83 65 f8 00          	andl   $0x0,-0x8(%ebp)
46fd02:	57                   	push   %edi
46fd03:	89 45 f0             	mov    %eax,-0x10(%ebp)
46fd06:	8d 45 f0             	lea    -0x10(%ebp),%eax
46fd09:	57                   	push   %edi
46fd0a:	50                   	push   %eax
46fd0b:	56                   	push   %esi
46fd0c:	89 7d fc             	mov    %edi,-0x4(%ebp)
46fd0f:	e8 2c 93 f9 ff       	call   0x409040
46fd14:	83 c4 10             	add    $0x10,%esp
46fd17:	8d 4d f0             	lea    -0x10(%ebp),%ecx
46fd1a:	e8 01 9d f9 ff       	call   0x409a20
46fd1f:	83 fb 04             	cmp    $0x4,%ebx
46fd22:	75 4a                	jne    0x46fd6e
46fd24:	8b 45 08             	mov    0x8(%ebp),%eax
46fd27:	83 65 f8 00          	andl   $0x0,-0x8(%ebp)
46fd2b:	6a 02                	push   $0x2
46fd2d:	89 45 f0             	mov    %eax,-0x10(%ebp)
46fd30:	8d 45 f0             	lea    -0x10(%ebp),%eax
46fd33:	57                   	push   %edi
46fd34:	50                   	push   %eax
46fd35:	56                   	push   %esi
46fd36:	89 7d fc             	mov    %edi,-0x4(%ebp)
46fd39:	e8 02 93 f9 ff       	call   0x409040
46fd3e:	83 c4 10             	add    $0x10,%esp
46fd41:	8d 4d f0             	lea    -0x10(%ebp),%ecx
46fd44:	e8 d7 9c f9 ff       	call   0x409a20
46fd49:	8b 45 e8             	mov    -0x18(%ebp),%eax
46fd4c:	83 65 f8 00          	andl   $0x0,-0x8(%ebp)
46fd50:	6a 03                	push   $0x3
46fd52:	89 45 f0             	mov    %eax,-0x10(%ebp)
46fd55:	8d 45 f0             	lea    -0x10(%ebp),%eax
46fd58:	57                   	push   %edi
46fd59:	50                   	push   %eax
46fd5a:	56                   	push   %esi
46fd5b:	89 7d fc             	mov    %edi,-0x4(%ebp)
46fd5e:	e8 dd 92 f9 ff       	call   0x409040
46fd63:	83 c4 10             	add    $0x10,%esp
46fd66:	8d 4d f0             	lea    -0x10(%ebp),%ecx
46fd69:	e8 b2 9c f9 ff       	call   0x409a20
46fd6e:	5f                   	pop    %edi
46fd6f:	5e                   	pop    %esi
46fd70:	33 c0                	xor    %eax,%eax
46fd72:	5b                   	pop    %ebx
46fd73:	8b e5                	mov    %ebp,%esp
46fd75:	5d                   	pop    %ebp
46fd76:	c2 08 00             	ret    $0x8
46fd79:	55                   	push   %ebp
46fd7a:	8b ec                	mov    %esp,%ebp
46fd7c:	83 ec 34             	sub    $0x34,%esp
46fd7f:	8b 45 08             	mov    0x8(%ebp),%eax
46fd82:	53                   	push   %ebx
46fd83:	56                   	push   %esi
46fd84:	33 db                	xor    %ebx,%ebx
46fd86:	8b 40 04             	mov    0x4(%eax),%eax
46fd89:	57                   	push   %edi
46fd8a:	8b f9                	mov    %ecx,%edi
46fd8c:	89 5d fc             	mov    %ebx,-0x4(%ebp)
46fd8f:	8b 70 04             	mov    0x4(%eax),%esi
46fd92:	8b ce                	mov    %esi,%ecx
46fd94:	83 7e 0c 0e          	cmpl   $0xe,0xc(%esi)
46fd98:	75 13                	jne    0x46fdad
46fd9a:	33 c0                	xor    %eax,%eax
46fd9c:	40                   	inc    %eax
46fd9d:	89 45 fc             	mov    %eax,-0x4(%ebp)
46fda0:	8d 45 cc             	lea    -0x34(%ebp),%eax
46fda3:	50                   	push   %eax
46fda4:	e8 fb 7d ff ff       	call   0x467ba4
46fda9:	8b c8                	mov    %eax,%ecx
46fdab:	eb 2a                	jmp    0x46fdd7
46fdad:	6a 02                	push   $0x2
46fdaf:	58                   	pop    %eax
46fdb0:	89 45 fc             	mov    %eax,-0x4(%ebp)
46fdb3:	e8 df 9b f9 ff       	call   0x409997
46fdb8:	8b 4e 08             	mov    0x8(%esi),%ecx
46fdbb:	8b 01                	mov    (%ecx),%eax
46fdbd:	89 45 dc             	mov    %eax,-0x24(%ebp)
46fdc0:	8b 41 04             	mov    0x4(%ecx),%eax
46fdc3:	89 45 e0             	mov    %eax,-0x20(%ebp)
46fdc6:	8b 41 08             	mov    0x8(%ecx),%eax
46fdc9:	89 45 e4             	mov    %eax,-0x1c(%ebp)
46fdcc:	8b 41 0c             	mov    0xc(%ecx),%eax
46fdcf:	8d 4d dc             	lea    -0x24(%ebp),%ecx
46fdd2:	89 45 e8             	mov    %eax,-0x18(%ebp)
46fdd5:	ff 00                	incl   (%eax)
46fdd7:	8b 01                	mov    (%ecx),%eax
46fdd9:	89 45 ec             	mov    %eax,-0x14(%ebp)
46fddc:	8b 41 04             	mov    0x4(%ecx),%eax
46fddf:	89 45 f0             	mov    %eax,-0x10(%ebp)
46fde2:	8b 41 08             	mov    0x8(%ecx),%eax
46fde5:	89 45 f4             	mov    %eax,-0xc(%ebp)
46fde8:	8b 41 0c             	mov    0xc(%ecx),%eax
46fdeb:	89 45 f8             	mov    %eax,-0x8(%ebp)
46fdee:	ff 00                	incl   (%eax)
46fdf0:	8b 45 fc             	mov    -0x4(%ebp),%eax
46fdf3:	a8 02                	test   $0x2,%al
46fdf5:	74 11                	je     0x46fe08
46fdf7:	83 e0 fd             	and    $0xfffffffd,%eax
46fdfa:	8d 4d dc             	lea    -0x24(%ebp),%ecx
46fdfd:	89 45 fc             	mov    %eax,-0x4(%ebp)
46fe00:	e8 5f 5c f9 ff       	call   0x405a64
46fe05:	8b 45 fc             	mov    -0x4(%ebp),%eax
46fe08:	a8 01                	test   $0x1,%al
46fe0a:	74 08                	je     0x46fe14
46fe0c:	8d 4d cc             	lea    -0x34(%ebp),%ecx
46fe0f:	e8 50 5c f9 ff       	call   0x405a64
46fe14:	8d 45 ec             	lea    -0x14(%ebp),%eax
46fe17:	8b cf                	mov    %edi,%ecx
46fe19:	50                   	push   %eax
46fe1a:	e8 9e a1 f9 ff       	call   0x409fbd
46fe1f:	85 c0                	test   %eax,%eax
46fe21:	75 27                	jne    0x46fe4a
46fe23:	8b 75 0c             	mov    0xc(%ebp),%esi
46fe26:	8b ce                	mov    %esi,%ecx
46fe28:	e8 f3 9b f9 ff       	call   0x409a20
46fe2d:	c7 46 0c 01 00 00 00 	movl   $0x1,0xc(%esi)
46fe34:	89 1e                	mov    %ebx,(%esi)
46fe36:	8b 07                	mov    (%edi),%eax
46fe38:	53                   	push   %ebx
46fe39:	6a 02                	push   $0x2
46fe3b:	8b 48 04             	mov    0x4(%eax),%ecx
46fe3e:	03 cf                	add    %edi,%ecx
46fe40:	e8 5e 6c fe ff       	call   0x456aa3
46fe45:	83 cb ff             	or     $0xffffffff,%ebx
46fe48:	eb 52                	jmp    0x46fe9c
46fe4a:	8b 48 14             	mov    0x14(%eax),%ecx
46fe4d:	83 f9 04             	cmp    $0x4,%ecx
46fe50:	7e 1d                	jle    0x46fe6f
46fe52:	8b 07                	mov    (%edi),%eax
46fe54:	53                   	push   %ebx
46fe55:	6a 01                	push   $0x1
46fe57:	8b 48 04             	mov    0x4(%eax),%ecx
46fe5a:	03 cf                	add    %edi,%ecx
46fe5c:	e8 42 6c fe ff       	call   0x456aa3
46fe61:	8b 75 0c             	mov    0xc(%ebp),%esi
46fe64:	8b ce                	mov    %esi,%ecx
46fe66:	e8 b5 9b f9 ff       	call   0x409a20
46fe6b:	89 1e                	mov    %ebx,(%esi)
46fe6d:	eb 26                	jmp    0x46fe95
46fe6f:	8b 45 08             	mov    0x8(%ebp),%eax
46fe72:	51                   	push   %ecx
46fe73:	8d 4d ec             	lea    -0x14(%ebp),%ecx
46fe76:	51                   	push   %ecx
46fe77:	8b 40 04             	mov    0x4(%eax),%eax
46fe7a:	8b 08                	mov    (%eax),%ecx
46fe7c:	e8 1b 9e f9 ff       	call   0x409c9c
46fe81:	50                   	push   %eax
46fe82:	e8 65 89 01 00       	call   0x4887ec
46fe87:	8b 75 0c             	mov    0xc(%ebp),%esi
46fe8a:	8b f8                	mov    %eax,%edi
46fe8c:	8b ce                	mov    %esi,%ecx
46fe8e:	e8 8d 9b f9 ff       	call   0x409a20
46fe93:	89 3e                	mov    %edi,(%esi)
46fe95:	c7 46 0c 01 00 00 00 	movl   $0x1,0xc(%esi)
46fe9c:	8d 4d ec             	lea    -0x14(%ebp),%ecx
46fe9f:	e8 c0 5b f9 ff       	call   0x405a64
46fea4:	5f                   	pop    %edi
46fea5:	5e                   	pop    %esi
46fea6:	8b c3                	mov    %ebx,%eax
46fea8:	5b                   	pop    %ebx
46fea9:	8b e5                	mov    %ebp,%esp
46feab:	5d                   	pop    %ebp
46feac:	c2 08 00             	ret    $0x8
46feaf:	55                   	push   %ebp
46feb0:	8b ec                	mov    %esp,%ebp
46feb2:	51                   	push   %ecx
46feb3:	51                   	push   %ecx
46feb4:	53                   	push   %ebx
46feb5:	56                   	push   %esi
46feb6:	8b 75 08             	mov    0x8(%ebp),%esi
46feb9:	33 c0                	xor    %eax,%eax
46febb:	57                   	push   %edi
46febc:	8b 7e 04             	mov    0x4(%esi),%edi
46febf:	8b 4f 08             	mov    0x8(%edi),%ecx
46fec2:	89 4d fc             	mov    %ecx,-0x4(%ebp)
46fec5:	83 79 0c 04          	cmpl   $0x4,0xc(%ecx)
46fec9:	75 01                	jne    0x46fecc
46fecb:	40                   	inc    %eax
46fecc:	8b 5f 0c             	mov    0xc(%edi),%ebx
46fecf:	89 5d f8             	mov    %ebx,-0x8(%ebp)
46fed2:	83 7b 0c 04          	cmpl   $0x4,0xc(%ebx)
46fed6:	75 03                	jne    0x46fedb
46fed8:	83 c0 02             	add    $0x2,%eax
46fedb:	83 e8 00             	sub    $0x0,%eax
46fede:	0f 84 bf 00 00 00    	je     0x46ffa3
46fee4:	48                   	dec    %eax
46fee5:	0f 84 82 00 00 00    	je     0x46ff6d
46feeb:	48                   	dec    %eax
46feec:	74 4a                	je     0x46ff38
46feee:	48                   	dec    %eax
46feef:	0f 85 ee 00 00 00    	jne    0x46ffe3
46fef5:	8b cb                	mov    %ebx,%ecx
46fef7:	e8 9b 9a f9 ff       	call   0x409997
46fefc:	8b 43 08             	mov    0x8(%ebx),%eax
46feff:	8b 38                	mov    (%eax),%edi
46ff01:	8b 46 04             	mov    0x4(%esi),%eax
46ff04:	8b 70 08             	mov    0x8(%eax),%esi
46ff07:	8b ce                	mov    %esi,%ecx
46ff09:	e8 89 9a f9 ff       	call   0x409997
46ff0e:	8b 46 08             	mov    0x8(%esi),%eax
46ff11:	57                   	push   %edi
46ff12:	8b 10                	mov    (%eax),%edx
46ff14:	8b 45 08             	mov    0x8(%ebp),%eax
46ff17:	52                   	push   %edx
46ff18:	8b 40 04             	mov    0x4(%eax),%eax
46ff1b:	8b 48 04             	mov    0x4(%eax),%ecx
46ff1e:	8b 30                	mov    (%eax),%esi
46ff20:	e8 77 9d f9 ff       	call   0x409c9c
46ff25:	50                   	push   %eax
46ff26:	8b ce                	mov    %esi,%ecx
46ff28:	e8 6f 9d f9 ff       	call   0x409c9c
46ff2d:	50                   	push   %eax
46ff2e:	e8 aa 7f 01 00       	call   0x487edd
46ff33:	e9 96 00 00 00       	jmp    0x46ffce
46ff38:	8b cb                	mov    %ebx,%ecx
46ff3a:	e8 58 9a f9 ff       	call   0x409997
46ff3f:	8b 43 08             	mov    0x8(%ebx),%eax
46ff42:	8b 10                	mov    (%eax),%edx
46ff44:	8b 46 04             	mov    0x4(%esi),%eax
46ff47:	52                   	push   %edx
46ff48:	8b 48 08             	mov    0x8(%eax),%ecx
46ff4b:	8b 70 04             	mov    0x4(%eax),%esi
46ff4e:	8b 38                	mov    (%eax),%edi
46ff50:	e8 47 9d f9 ff       	call   0x409c9c
46ff55:	50                   	push   %eax
46ff56:	8b ce                	mov    %esi,%ecx
46ff58:	e8 3f 9d f9 ff       	call   0x409c9c
46ff5d:	50                   	push   %eax
46ff5e:	8b cf                	mov    %edi,%ecx
46ff60:	e8 37 9d f9 ff       	call   0x409c9c
46ff65:	50                   	push   %eax
46ff66:	e8 72 7f 01 00       	call   0x487edd
46ff6b:	eb 61                	jmp    0x46ffce
46ff6d:	e8 25 9a f9 ff       	call   0x409997
46ff72:	8b 4d fc             	mov    -0x4(%ebp),%ecx
46ff75:	8b 41 08             	mov    0x8(%ecx),%eax
46ff78:	8b 4d f8             	mov    -0x8(%ebp),%ecx
46ff7b:	8b 38                	mov    (%eax),%edi
46ff7d:	8b 46 04             	mov    0x4(%esi),%eax
46ff80:	8b 70 04             	mov    0x4(%eax),%esi
46ff83:	8b 18                	mov    (%eax),%ebx
46ff85:	e8 12 9d f9 ff       	call   0x409c9c
46ff8a:	50                   	push   %eax
46ff8b:	57                   	push   %edi
46ff8c:	8b ce                	mov    %esi,%ecx
46ff8e:	e8 09 9d f9 ff       	call   0x409c9c
46ff93:	50                   	push   %eax
46ff94:	8b cb                	mov    %ebx,%ecx
46ff96:	e8 01 9d f9 ff       	call   0x409c9c
46ff9b:	50                   	push   %eax
46ff9c:	e8 3c 7f 01 00       	call   0x487edd
46ffa1:	eb 2b                	jmp    0x46ffce
46ffa3:	8b 77 04             	mov    0x4(%edi),%esi
46ffa6:	8b cb                	mov    %ebx,%ecx
46ffa8:	8b 3f                	mov    (%edi),%edi
46ffaa:	e8 ed 9c f9 ff       	call   0x409c9c
46ffaf:	8b 4d fc             	mov    -0x4(%ebp),%ecx
46ffb2:	50                   	push   %eax
46ffb3:	e8 e4 9c f9 ff       	call   0x409c9c
46ffb8:	50                   	push   %eax
46ffb9:	8b ce                	mov    %esi,%ecx
46ffbb:	e8 dc 9c f9 ff       	call   0x409c9c
46ffc0:	50                   	push   %eax
46ffc1:	8b cf                	mov    %edi,%ecx
46ffc3:	e8 d4 9c f9 ff       	call   0x409c9c
46ffc8:	50                   	push   %eax
46ffc9:	e8 0f 7f 01 00       	call   0x487edd
46ffce:	8b 75 0c             	mov    0xc(%ebp),%esi
46ffd1:	8b f8                	mov    %eax,%edi
46ffd3:	8b ce                	mov    %esi,%ecx
46ffd5:	e8 46 9a f9 ff       	call   0x409a20
46ffda:	89 3e                	mov    %edi,(%esi)
46ffdc:	c7 46 0c 01 00 00 00 	movl   $0x1,0xc(%esi)
46ffe3:	5f                   	pop    %edi
46ffe4:	5e                   	pop    %esi
46ffe5:	33 c0                	xor    %eax,%eax
46ffe7:	5b                   	pop    %ebx
46ffe8:	8b e5                	mov    %ebp,%esp
46ffea:	5d                   	pop    %ebp
46ffeb:	c2 08 00             	ret    $0x8
46ffee:	55                   	push   %ebp
46ffef:	8b ec                	mov    %esp,%ebp
46fff1:	83 ec 10             	sub    $0x10,%esp
46fff4:	53                   	push   %ebx
46fff5:	56                   	push   %esi
46fff6:	8b 75 08             	mov    0x8(%ebp),%esi
46fff9:	33 db                	xor    %ebx,%ebx
46fffb:	43                   	inc    %ebx
46fffc:	57                   	push   %edi
46fffd:	33 ff                	xor    %edi,%edi
46ffff:	89 5d fc             	mov    %ebx,-0x4(%ebp)
470002:	89 7d f0             	mov    %edi,-0x10(%ebp)
470005:	89 7d f8             	mov    %edi,-0x8(%ebp)
470008:	39 5e 08             	cmp    %ebx,0x8(%esi)
47000b:	76 0e                	jbe    0x47001b
47000d:	8b 46 04             	mov    0x4(%esi),%eax
470010:	8d 4d f0             	lea    -0x10(%ebp),%ecx
470013:	ff 70 04             	push   0x4(%eax)
470016:	e8 81 9e f9 ff       	call   0x409e9c
47001b:	83 ec 10             	sub    $0x10,%esp
47001e:	8d 45 f0             	lea    -0x10(%ebp),%eax
470021:	8b cc                	mov    %esp,%ecx
470023:	50                   	push   %eax
470024:	89 79 08             	mov    %edi,0x8(%ecx)
470027:	e8 94 9a f9 ff       	call   0x409ac0
47002c:	8b 46 04             	mov    0x4(%esi),%eax
47002f:	8b 08                	mov    (%eax),%ecx
470031:	e8 66 9c f9 ff       	call   0x409c9c
470036:	50                   	push   %eax
470037:	e8 15 88 01 00       	call   0x488851
47003c:	8b 75 0c             	mov    0xc(%ebp),%esi
47003f:	8b f8                	mov    %eax,%edi
470041:	8b ce                	mov    %esi,%ecx
470043:	e8 d8 99 f9 ff       	call   0x409a20
470048:	8d 4d f0             	lea    -0x10(%ebp),%ecx
47004b:	89 5e 0c             	mov    %ebx,0xc(%esi)
47004e:	89 3e                	mov    %edi,(%esi)
470050:	e8 cb 99 f9 ff       	call   0x409a20
470055:	5f                   	pop    %edi
470056:	5e                   	pop    %esi
470057:	33 c0                	xor    %eax,%eax