40fca4:	75 04                	jne    0x40fcaa
40fca6:	33 c0                	xor    %eax,%eax
40fca8:	eb 0e                	jmp    0x40fcb8
40fcaa:	ff 75 08             	push   0x8(%ebp)
40fcad:	8b ce                	mov    %esi,%ecx
40fcaf:	ff 15 54 41 42 00    	call   *0x424154
40fcb5:	ff d6                	call   *%esi
40fcb7:	59                   	pop    %ecx
40fcb8:	5e                   	pop    %esi
40fcb9:	5d                   	pop    %ebp
40fcba:	c3                   	ret
40fcbb:	8b ff                	mov    %edi,%edi
40fcbd:	55                   	push   %ebp
40fcbe:	8b ec                	mov    %esp,%ebp
40fcc0:	ff 75 08             	push   0x8(%ebp)
40fcc3:	e8 7b ff ff ff       	call   0x40fc43
40fcc8:	59                   	pop    %ecx
40fcc9:	a3 8c 47 43 00       	mov    %eax,0x43478c
40fcce:	5d                   	pop    %ebp
40fccf:	c3                   	ret
40fcd0:	8b ff                	mov    %edi,%edi
40fcd2:	55                   	push   %ebp
40fcd3:	8b ec                	mov    %esp,%ebp
40fcd5:	83 ec 10             	sub    $0x10,%esp
40fcd8:	53                   	push   %ebx
40fcd9:	8b 5d 08             	mov    0x8(%ebp),%ebx
40fcdc:	85 db                	test   %ebx,%ebx
40fcde:	75 07                	jne    0x40fce7
40fce0:	33 c0                	xor    %eax,%eax
40fce2:	e9 15 01 00 00       	jmp    0x40fdfc
40fce7:	56                   	push   %esi
40fce8:	83 fb 02             	cmp    $0x2,%ebx
40fceb:	74 1b                	je     0x40fd08
40fced:	83 fb 01             	cmp    $0x1,%ebx
40fcf0:	74 16                	je     0x40fd08
40fcf2:	e8 04 f1 ff ff       	call   0x40edfb
40fcf7:	6a 16                	push   $0x16
40fcf9:	5e                   	pop    %esi
40fcfa:	89 30                	mov    %esi,(%eax)
40fcfc:	e8 80 d3 ff ff       	call   0x40d081
40fd01:	8b c6                	mov    %esi,%eax
40fd03:	e9 f3 00 00 00       	jmp    0x40fdfb
40fd08:	57                   	push   %edi
40fd09:	68 04 01 00 00       	push   $0x104
40fd0e:	be 90 47 43 00       	mov    $0x434790,%esi
40fd13:	33 ff                	xor    %edi,%edi
40fd15:	56                   	push   %esi
40fd16:	57                   	push   %edi
40fd17:	ff 15 c4 40 42 00    	call   *0x4240c4
40fd1d:	a1 e4 4d 43 00       	mov    0x434de4,%eax
40fd22:	89 35 d0 4d 43 00    	mov    %esi,0x434dd0
40fd28:	89 45 f0             	mov    %eax,-0x10(%ebp)
40fd2b:	85 c0                	test   %eax,%eax
40fd2d:	74 05                	je     0x40fd34
40fd2f:	66 39 38             	cmp    %di,(%eax)
40fd32:	75 05                	jne    0x40fd39
40fd34:	8b c6                	mov    %esi,%eax
40fd36:	89 75 f0             	mov    %esi,-0x10(%ebp)
40fd39:	8d 4d f4             	lea    -0xc(%ebp),%ecx
40fd3c:	89 7d fc             	mov    %edi,-0x4(%ebp)
40fd3f:	51                   	push   %ecx
40fd40:	8d 4d fc             	lea    -0x4(%ebp),%ecx
40fd43:	89 7d f4             	mov    %edi,-0xc(%ebp)
40fd46:	51                   	push   %ecx
40fd47:	57                   	push   %edi
40fd48:	57                   	push   %edi
40fd49:	50                   	push   %eax
40fd4a:	e8 b0 00 00 00       	call   0x40fdff
40fd4f:	6a 02                	push   $0x2
40fd51:	ff 75 f4             	push   -0xc(%ebp)
40fd54:	ff 75 fc             	push   -0x4(%ebp)
40fd57:	e8 37 02 00 00       	call   0x40ff93
40fd5c:	8b f0                	mov    %eax,%esi
40fd5e:	83 c4 20             	add    $0x20,%esp
40fd61:	85 f6                	test   %esi,%esi
40fd63:	75 0c                	jne    0x40fd71
40fd65:	e8 91 f0 ff ff       	call   0x40edfb
40fd6a:	6a 0c                	push   $0xc
40fd6c:	5f                   	pop    %edi
40fd6d:	89 38                	mov    %edi,(%eax)
40fd6f:	eb 32                	jmp    0x40fda3
40fd71:	8d 45 f4             	lea    -0xc(%ebp),%eax
40fd74:	50                   	push   %eax
40fd75:	8d 45 fc             	lea    -0x4(%ebp),%eax
40fd78:	50                   	push   %eax
40fd79:	8b 45 fc             	mov    -0x4(%ebp),%eax
40fd7c:	8d 04 86             	lea    (%esi,%eax,4),%eax
40fd7f:	50                   	push   %eax
40fd80:	56                   	push   %esi
40fd81:	ff 75 f0             	push   -0x10(%ebp)
40fd84:	e8 76 00 00 00       	call   0x40fdff
40fd89:	83 c4 14             	add    $0x14,%esp
40fd8c:	83 fb 01             	cmp    $0x1,%ebx
40fd8f:	75 16                	jne    0x40fda7
40fd91:	8b 45 fc             	mov    -0x4(%ebp),%eax
40fd94:	48                   	dec    %eax
40fd95:	a3 d4 4d 43 00       	mov    %eax,0x434dd4
40fd9a:	8b c6                	mov    %esi,%eax
40fd9c:	8b f7                	mov    %edi,%esi
40fd9e:	a3 dc 4d 43 00       	mov    %eax,0x434ddc
40fda3:	8b df                	mov    %edi,%ebx
40fda5:	eb 4a                	jmp    0x40fdf1
40fda7:	8d 45 f8             	lea    -0x8(%ebp),%eax
40fdaa:	89 7d f8             	mov    %edi,-0x8(%ebp)
40fdad:	50                   	push   %eax
40fdae:	56                   	push   %esi
40fdaf:	e8 36 ae 00 00       	call   0x41abea
40fdb4:	8b d8                	mov    %eax,%ebx
40fdb6:	59                   	pop    %ecx
40fdb7:	59                   	pop    %ecx
40fdb8:	85 db                	test   %ebx,%ebx
40fdba:	74 05                	je     0x40fdc1
40fdbc:	8b 45 f8             	mov    -0x8(%ebp),%eax
40fdbf:	eb 26                	jmp    0x40fde7
40fdc1:	8b 55 f8             	mov    -0x8(%ebp),%edx
40fdc4:	8b cf                	mov    %edi,%ecx
40fdc6:	8b c2                	mov    %edx,%eax
40fdc8:	39 3a                	cmp    %edi,(%edx)
40fdca:	74 08                	je     0x40fdd4
40fdcc:	8d 40 04             	lea    0x4(%eax),%eax
40fdcf:	41                   	inc    %ecx
40fdd0:	39 38                	cmp    %edi,(%eax)
40fdd2:	75 f8                	jne    0x40fdcc
40fdd4:	8b c7                	mov    %edi,%eax
40fdd6:	89 0d d4 4d 43 00    	mov    %ecx,0x434dd4
40fddc:	89 45 f8             	mov    %eax,-0x8(%ebp)
40fddf:	8b df                	mov    %edi,%ebx
40fde1:	89 15 dc 4d 43 00    	mov    %edx,0x434ddc
40fde7:	50                   	push   %eax
40fde8:	e8 1e 33 00 00       	call   0x41310b
40fded:	59                   	pop    %ecx
40fdee:	89 7d f8             	mov    %edi,-0x8(%ebp)
40fdf1:	56                   	push   %esi
40fdf2:	e8 14 33 00 00       	call   0x41310b
40fdf7:	59                   	pop    %ecx
40fdf8:	8b c3                	mov    %ebx,%eax
40fdfa:	5f                   	pop    %edi
40fdfb:	5e                   	pop    %esi
40fdfc:	5b                   	pop    %ebx
40fdfd:	c9                   	leave
40fdfe:	c3                   	ret
40fdff:	8b ff                	mov    %edi,%edi
40fe01:	55                   	push   %ebp
40fe02:	8b ec                	mov    %esp,%ebp
40fe04:	8b 45 14             	mov    0x14(%ebp),%eax
40fe07:	83 ec 10             	sub    $0x10,%esp
40fe0a:	8b 4d 08             	mov    0x8(%ebp),%ecx
40fe0d:	8b 55 10             	mov    0x10(%ebp),%edx
40fe10:	56                   	push   %esi
40fe11:	8b 75 0c             	mov    0xc(%ebp),%esi
40fe14:	57                   	push   %edi
40fe15:	8b 7d 18             	mov    0x18(%ebp),%edi
40fe18:	83 27 00             	andl   $0x0,(%edi)
40fe1b:	c7 00 01 00 00 00    	movl   $0x1,(%eax)
40fe21:	85 f6                	test   %esi,%esi
40fe23:	74 08                	je     0x40fe2d
40fe25:	89 16                	mov    %edx,(%esi)
40fe27:	83 c6 04             	add    $0x4,%esi
40fe2a:	89 75 0c             	mov    %esi,0xc(%ebp)
40fe2d:	53                   	push   %ebx
40fe2e:	32 db                	xor    %bl,%bl
40fe30:	c7 45 f8 20 00 00 00 	movl   $0x20,-0x8(%ebp)
40fe37:	c7 45 f4 09 00 00 00 	movl   $0x9,-0xc(%ebp)
40fe3e:	6a 22                	push   $0x22
40fe40:	58                   	pop    %eax
40fe41:	66 39 01             	cmp    %ax,(%ecx)
40fe44:	75 0a                	jne    0x40fe50
40fe46:	84 db                	test   %bl,%bl
40fe48:	0f 94 c3             	sete   %bl
40fe4b:	83 c1 02             	add    $0x2,%ecx
40fe4e:	eb 1a                	jmp    0x40fe6a
40fe50:	ff 07                	incl   (%edi)
40fe52:	85 d2                	test   %edx,%edx
40fe54:	74 09                	je     0x40fe5f
40fe56:	66 8b 01             	mov    (%ecx),%ax
40fe59:	66 89 02             	mov    %ax,(%edx)
40fe5c:	83 c2 02             	add    $0x2,%edx
40fe5f:	0f b7 01             	movzwl (%ecx),%eax
40fe62:	83 c1 02             	add    $0x2,%ecx
40fe65:	66 85 c0             	test   %ax,%ax
40fe68:	74 1f                	je     0x40fe89
40fe6a:	84 db                	test   %bl,%bl
40fe6c:	75 d0                	jne    0x40fe3e
40fe6e:	66 3b 45 f8          	cmp    -0x8(%ebp),%ax
40fe72:	74 09                	je     0x40fe7d
40fe74:	66 3b 45 f4          	cmp    -0xc(%ebp),%ax
40fe78:	6a 22                	push   $0x22
40fe7a:	58                   	pop    %eax
40fe7b:	75 c4                	jne    0x40fe41
40fe7d:	85 d2                	test   %edx,%edx
40fe7f:	74 0b                	je     0x40fe8c
40fe81:	33 c0                	xor    %eax,%eax
40fe83:	66 89 42 fe          	mov    %ax,-0x2(%edx)
40fe87:	eb 03                	jmp    0x40fe8c
40fe89:	83 e9 02             	sub    $0x2,%ecx
40fe8c:	c6 45 ff 00          	movb   $0x0,-0x1(%ebp)
40fe90:	0f b7 01             	movzwl (%ecx),%eax
40fe93:	8b f8                	mov    %eax,%edi
40fe95:	66 85 c0             	test   %ax,%ax
40fe98:	74 19                	je     0x40feb3
40fe9a:	8b 5d f8             	mov    -0x8(%ebp),%ebx
40fe9d:	66 3b c3             	cmp    %bx,%ax
40fea0:	74 09                	je     0x40feab
40fea2:	0f b7 f8             	movzwl %ax,%edi
40fea5:	66 3b 45 f4          	cmp    -0xc(%ebp),%ax
40fea9:	75 08                	jne    0x40feb3
40feab:	83 c1 02             	add    $0x2,%ecx
40feae:	0f b7 01             	movzwl (%ecx),%eax
40feb1:	eb ea                	jmp    0x40fe9d
40feb3:	66 85 ff             	test   %di,%di
40feb6:	0f 84 c6 00 00 00    	je     0x40ff82
40febc:	85 f6                	test   %esi,%esi
40febe:	74 08                	je     0x40fec8
40fec0:	89 16                	mov    %edx,(%esi)
40fec2:	83 c6 04             	add    $0x4,%esi
40fec5:	89 75 0c             	mov    %esi,0xc(%ebp)
40fec8:	8b 45 14             	mov    0x14(%ebp),%eax
40fecb:	6a 5c                	push   $0x5c
40fecd:	5e                   	pop    %esi
40fece:	ff 00                	incl   (%eax)
40fed0:	0f b7 01             	movzwl (%ecx),%eax
40fed3:	33 db                	xor    %ebx,%ebx
40fed5:	c7 45 f0 01 00 00 00 	movl   $0x1,-0x10(%ebp)
40fedc:	8b f8                	mov    %eax,%edi
40fede:	66 3b c6             	cmp    %si,%ax
40fee1:	75 0e                	jne    0x40fef1
40fee3:	83 c1 02             	add    $0x2,%ecx
40fee6:	43                   	inc    %ebx
40fee7:	0f b7 01             	movzwl (%ecx),%eax
40feea:	66 3b c6             	cmp    %si,%ax
40feed:	74 f4                	je     0x40fee3
40feef:	8b f8                	mov    %eax,%edi
40fef1:	6a 22                	push   $0x22
40fef3:	58                   	pop    %eax
40fef4:	66 3b f8             	cmp    %ax,%di
40fef7:	75 29                	jne    0x40ff22
40fef9:	f6 c3 01             	test   $0x1,%bl
40fefc:	75 22                	jne    0x40ff20
40fefe:	8a 45 ff             	mov    -0x1(%ebp),%al
40ff01:	84 c0                	test   %al,%al
40ff03:	74 11                	je     0x40ff16
40ff05:	6a 22                	push   $0x22
40ff07:	5f                   	pop    %edi
40ff08:	66 39 79 02          	cmp    %di,0x2(%ecx)
40ff0c:	75 05                	jne    0x40ff13
40ff0e:	83 c1 02             	add    $0x2,%ecx
40ff11:	eb 0d                	jmp    0x40ff20
40ff13:	8a 45 ff             	mov    -0x1(%ebp),%al
40ff16:	83 65 f0 00          	andl   $0x0,-0x10(%ebp)
40ff1a:	84 c0                	test   %al,%al
40ff1c:	0f 94 45 ff          	sete   -0x1(%ebp)
40ff20:	d1 eb                	shr    $1,%ebx
40ff22:	8b 7d 18             	mov    0x18(%ebp),%edi
40ff25:	85 db                	test   %ebx,%ebx
40ff27:	74 0f                	je     0x40ff38
40ff29:	4b                   	dec    %ebx
40ff2a:	85 d2                	test   %edx,%edx
40ff2c:	74 06                	je     0x40ff34
40ff2e:	66 89 32             	mov    %si,(%edx)
40ff31:	83 c2 02             	add    $0x2,%edx
40ff34:	ff 07                	incl   (%edi)
40ff36:	eb ed                	jmp    0x40ff25
40ff38:	0f b7 01             	movzwl (%ecx),%eax
40ff3b:	66 85 c0             	test   %ax,%ax
40ff3e:	74 2c                	je     0x40ff6c
40ff40:	80 7d ff 00          	cmpb   $0x0,-0x1(%ebp)
40ff44:	75 0c                	jne    0x40ff52
40ff46:	66 3b 45 f8          	cmp    -0x8(%ebp),%ax
40ff4a:	74 20                	je     0x40ff6c
40ff4c:	66 3b 45 f4          	cmp    -0xc(%ebp),%ax
40ff50:	74 1a                	je     0x40ff6c
40ff52:	83 7d f0 00          	cmpl   $0x0,-0x10(%ebp)
40ff56:	74 0c                	je     0x40ff64
40ff58:	85 d2                	test   %edx,%edx
40ff5a:	74 06                	je     0x40ff62
40ff5c:	66 89 02             	mov    %ax,(%edx)
40ff5f:	83 c2 02             	add    $0x2,%edx
40ff62:	ff 07                	incl   (%edi)
40ff64:	83 c1 02             	add    $0x2,%ecx
40ff67:	e9 64 ff ff ff       	jmp    0x40fed0
40ff6c:	8b 75 0c             	mov    0xc(%ebp),%esi
40ff6f:	85 d2                	test   %edx,%edx
40ff71:	74 08                	je     0x40ff7b
40ff73:	33 c0                	xor    %eax,%eax
40ff75:	66 89 02             	mov    %ax,(%edx)
40ff78:	83 c2 02             	add    $0x2,%edx
40ff7b:	ff 07                	incl   (%edi)
40ff7d:	e9 0e ff ff ff       	jmp    0x40fe90
40ff82:	5b                   	pop    %ebx
40ff83:	85 f6                	test   %esi,%esi
40ff85:	74 03                	je     0x40ff8a
40ff87:	83 26 00             	andl   $0x0,(%esi)
40ff8a:	8b 45 14             	mov    0x14(%ebp),%eax
40ff8d:	5f                   	pop    %edi
40ff8e:	5e                   	pop    %esi
40ff8f:	ff 00                	incl   (%eax)
40ff91:	c9                   	leave
40ff92:	c3                   	ret
40ff93:	8b ff                	mov    %edi,%edi
40ff95:	55                   	push   %ebp
40ff96:	8b ec                	mov    %esp,%ebp
40ff98:	56                   	push   %esi
40ff99:	8b 75 08             	mov    0x8(%ebp),%esi
40ff9c:	81 fe ff ff ff 3f    	cmp    $0x3fffffff,%esi
40ffa2:	73 39                	jae    0x40ffdd
40ffa4:	83 c8 ff             	or     $0xffffffff,%eax
40ffa7:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40ffaa:	33 d2                	xor    %edx,%edx
40ffac:	f7 75 10             	divl   0x10(%ebp)
40ffaf:	3b c8                	cmp    %eax,%ecx
40ffb1:	73 2a                	jae    0x40ffdd
40ffb3:	0f af 4d 10          	imul   0x10(%ebp),%ecx
40ffb7:	c1 e6 02             	shl    $0x2,%esi
40ffba:	8b c6                	mov    %esi,%eax
40ffbc:	f7 d0                	not    %eax
40ffbe:	3b c1                	cmp    %ecx,%eax
40ffc0:	76 1b                	jbe    0x40ffdd
40ffc2:	8d 04 0e             	lea    (%esi,%ecx,1),%eax
40ffc5:	6a 01                	push   $0x1
40ffc7:	50                   	push   %eax
40ffc8:	e8 e1 30 00 00       	call   0x4130ae
40ffcd:	6a 00                	push   $0x0
40ffcf:	8b f0                	mov    %eax,%esi
40ffd1:	e8 35 31 00 00       	call   0x41310b
40ffd6:	83 c4 0c             	add    $0xc,%esp
40ffd9:	8b c6                	mov    %esi,%eax
40ffdb:	eb 02                	jmp    0x40ffdf
40ffdd:	33 c0                	xor    %eax,%eax
40ffdf:	5e                   	pop    %esi
40ffe0:	5d                   	pop    %ebp
40ffe1:	c3                   	ret
40ffe2:	8b ff                	mov    %edi,%edi
40ffe4:	55                   	push   %ebp
40ffe5:	8b ec                	mov    %esp,%ebp
40ffe7:	5d                   	pop    %ebp
40ffe8:	e9 e3 fc ff ff       	jmp    0x40fcd0
40ffed:	83 3d a0 49 43 00 00 	cmpl   $0x0,0x4349a0
40fff4:	74 03                	je     0x40fff9
40fff6:	33 c0                	xor    %eax,%eax
40fff8:	c3                   	ret
40fff9:	56                   	push   %esi
40fffa:	57                   	push   %edi
40fffb:	e8 ab b3 00 00       	call   0x41b3ab
410000:	8b f0                	mov    %eax,%esi
410002:	85 f6                	test   %esi,%esi
410004:	75 05                	jne    0x41000b
410006:	83 cf ff             	or     $0xffffffff,%edi
410009:	eb 24                	jmp    0x41002f
41000b:	56                   	push   %esi
41000c:	e8 2a 00 00 00       	call   0x41003b