40facf:	89 17                	mov    %edx,(%edi)
40fad1:	8b 4f 04             	mov    0x4(%edi),%ecx
40fad4:	89 4d f0             	mov    %ecx,-0x10(%ebp)
40fad7:	89 45 ec             	mov    %eax,-0x14(%ebp)
40fada:	89 77 04             	mov    %esi,0x4(%edi)
40fadd:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
40fae1:	85 c9                	test   %ecx,%ecx
40fae3:	74 05                	je     0x40faea
40fae5:	e8 38 82 00 00       	call   0x417d22
40faea:	8b c7                	mov    %edi,%eax
40faec:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40faef:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40faf6:	59                   	pop    %ecx
40faf7:	5f                   	pop    %edi
40faf8:	5e                   	pop    %esi
40faf9:	c9                   	leave
40fafa:	c2 04 00             	ret    $0x4
40fafd:	55                   	push   %ebp
40fafe:	8b ec                	mov    %esp,%ebp
40fb00:	6a ff                	push   $0xffffffff
40fb02:	68 47 d8 48 00       	push   $0x48d847
40fb07:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
40fb0d:	50                   	push   %eax
40fb0e:	51                   	push   %ecx
40fb0f:	51                   	push   %ecx
40fb10:	56                   	push   %esi
40fb11:	57                   	push   %edi
40fb12:	a1 94 80 4b 00       	mov    0x4b8094,%eax
40fb17:	33 c5                	xor    %ebp,%eax
40fb19:	50                   	push   %eax
40fb1a:	8d 45 f4             	lea    -0xc(%ebp),%eax
40fb1d:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
40fb23:	8b f9                	mov    %ecx,%edi
40fb25:	8b 45 08             	mov    0x8(%ebp),%eax
40fb28:	33 c9                	xor    %ecx,%ecx
40fb2a:	89 4d ec             	mov    %ecx,-0x14(%ebp)
40fb2d:	89 4d f0             	mov    %ecx,-0x10(%ebp)
40fb30:	8b 10                	mov    (%eax),%edx
40fb32:	8b 70 04             	mov    0x4(%eax),%esi
40fb35:	89 55 ec             	mov    %edx,-0x14(%ebp)
40fb38:	89 75 f0             	mov    %esi,-0x10(%ebp)
40fb3b:	89 08                	mov    %ecx,(%eax)
40fb3d:	89 48 04             	mov    %ecx,0x4(%eax)
40fb40:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40fb43:	8b 07                	mov    (%edi),%eax
40fb45:	89 17                	mov    %edx,(%edi)
40fb47:	8b 4f 04             	mov    0x4(%edi),%ecx
40fb4a:	89 4d f0             	mov    %ecx,-0x10(%ebp)
40fb4d:	89 45 ec             	mov    %eax,-0x14(%ebp)
40fb50:	89 77 04             	mov    %esi,0x4(%edi)
40fb53:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
40fb57:	85 c9                	test   %ecx,%ecx
40fb59:	74 05                	je     0x40fb60
40fb5b:	e8 c2 81 00 00       	call   0x417d22
40fb60:	8b c7                	mov    %edi,%eax
40fb62:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40fb65:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40fb6c:	59                   	pop    %ecx
40fb6d:	5f                   	pop    %edi
40fb6e:	5e                   	pop    %esi
40fb6f:	c9                   	leave
40fb70:	c2 04 00             	ret    $0x4
40fb73:	55                   	push   %ebp
40fb74:	8b ec                	mov    %esp,%ebp
40fb76:	6a ff                	push   $0xffffffff
40fb78:	68 6a d8 48 00       	push   $0x48d86a
40fb7d:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
40fb83:	50                   	push   %eax
40fb84:	51                   	push   %ecx
40fb85:	51                   	push   %ecx
40fb86:	56                   	push   %esi
40fb87:	57                   	push   %edi
40fb88:	a1 94 80 4b 00       	mov    0x4b8094,%eax
40fb8d:	33 c5                	xor    %ebp,%eax
40fb8f:	50                   	push   %eax
40fb90:	8d 45 f4             	lea    -0xc(%ebp),%eax
40fb93:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
40fb99:	8b f9                	mov    %ecx,%edi
40fb9b:	8b 45 08             	mov    0x8(%ebp),%eax
40fb9e:	33 c9                	xor    %ecx,%ecx
40fba0:	89 4d ec             	mov    %ecx,-0x14(%ebp)
40fba3:	89 4d f0             	mov    %ecx,-0x10(%ebp)
40fba6:	8b 10                	mov    (%eax),%edx
40fba8:	8b 70 04             	mov    0x4(%eax),%esi
40fbab:	89 55 ec             	mov    %edx,-0x14(%ebp)
40fbae:	89 75 f0             	mov    %esi,-0x10(%ebp)
40fbb1:	89 08                	mov    %ecx,(%eax)
40fbb3:	89 48 04             	mov    %ecx,0x4(%eax)
40fbb6:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40fbb9:	8b 07                	mov    (%edi),%eax
40fbbb:	89 17                	mov    %edx,(%edi)
40fbbd:	8b 4f 04             	mov    0x4(%edi),%ecx
40fbc0:	89 4d f0             	mov    %ecx,-0x10(%ebp)
40fbc3:	89 45 ec             	mov    %eax,-0x14(%ebp)
40fbc6:	89 77 04             	mov    %esi,0x4(%edi)
40fbc9:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
40fbcd:	85 c9                	test   %ecx,%ecx
40fbcf:	74 05                	je     0x40fbd6
40fbd1:	e8 4c 81 00 00       	call   0x417d22
40fbd6:	8b c7                	mov    %edi,%eax
40fbd8:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40fbdb:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40fbe2:	59                   	pop    %ecx
40fbe3:	5f                   	pop    %edi
40fbe4:	5e                   	pop    %esi
40fbe5:	c9                   	leave
40fbe6:	c2 04 00             	ret    $0x4
40fbe9:	55                   	push   %ebp
40fbea:	8b ec                	mov    %esp,%ebp
40fbec:	6a ff                	push   $0xffffffff
40fbee:	68 8d d8 48 00       	push   $0x48d88d
40fbf3:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
40fbf9:	50                   	push   %eax
40fbfa:	51                   	push   %ecx
40fbfb:	51                   	push   %ecx
40fbfc:	56                   	push   %esi
40fbfd:	57                   	push   %edi
40fbfe:	a1 94 80 4b 00       	mov    0x4b8094,%eax
40fc03:	33 c5                	xor    %ebp,%eax
40fc05:	50                   	push   %eax
40fc06:	8d 45 f4             	lea    -0xc(%ebp),%eax
40fc09:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
40fc0f:	8b f9                	mov    %ecx,%edi
40fc11:	8b 45 08             	mov    0x8(%ebp),%eax
40fc14:	33 c9                	xor    %ecx,%ecx
40fc16:	89 4d ec             	mov    %ecx,-0x14(%ebp)
40fc19:	89 4d f0             	mov    %ecx,-0x10(%ebp)
40fc1c:	8b 10                	mov    (%eax),%edx
40fc1e:	8b 70 04             	mov    0x4(%eax),%esi
40fc21:	89 55 ec             	mov    %edx,-0x14(%ebp)
40fc24:	89 75 f0             	mov    %esi,-0x10(%ebp)
40fc27:	89 08                	mov    %ecx,(%eax)
40fc29:	89 48 04             	mov    %ecx,0x4(%eax)
40fc2c:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40fc2f:	8b 07                	mov    (%edi),%eax
40fc31:	89 17                	mov    %edx,(%edi)
40fc33:	8b 4f 04             	mov    0x4(%edi),%ecx
40fc36:	89 4d f0             	mov    %ecx,-0x10(%ebp)
40fc39:	89 45 ec             	mov    %eax,-0x14(%ebp)
40fc3c:	89 77 04             	mov    %esi,0x4(%edi)
40fc3f:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
40fc43:	85 c9                	test   %ecx,%ecx
40fc45:	74 05                	je     0x40fc4c
40fc47:	e8 d6 80 00 00       	call   0x417d22
40fc4c:	8b c7                	mov    %edi,%eax
40fc4e:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40fc51:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40fc58:	59                   	pop    %ecx
40fc59:	5f                   	pop    %edi
40fc5a:	5e                   	pop    %esi
40fc5b:	c9                   	leave
40fc5c:	c2 04 00             	ret    $0x4
40fc5f:	55                   	push   %ebp
40fc60:	8b ec                	mov    %esp,%ebp
40fc62:	56                   	push   %esi
40fc63:	57                   	push   %edi
40fc64:	8b 7d 08             	mov    0x8(%ebp),%edi
40fc67:	8b f1                	mov    %ecx,%esi
40fc69:	3b f7                	cmp    %edi,%esi
40fc6b:	74 13                	je     0x40fc80
40fc6d:	ff 75 08             	push   0x8(%ebp)
40fc70:	ff 77 04             	push   0x4(%edi)
40fc73:	ff 37                	push   (%edi)
40fc75:	e8 62 2a ff ff       	call   0x4026dc
40fc7a:	8b 47 0c             	mov    0xc(%edi),%eax
40fc7d:	89 46 0c             	mov    %eax,0xc(%esi)
40fc80:	5f                   	pop    %edi
40fc81:	8b c6                	mov    %esi,%eax
40fc83:	5e                   	pop    %esi
40fc84:	5d                   	pop    %ebp
40fc85:	c2 04 00             	ret    $0x4
40fc88:	55                   	push   %ebp
40fc89:	8b ec                	mov    %esp,%ebp
40fc8b:	8b 41 08             	mov    0x8(%ecx),%eax
40fc8e:	83 ec 18             	sub    $0x18,%esp
40fc91:	56                   	push   %esi
40fc92:	8b 75 08             	mov    0x8(%ebp),%esi
40fc95:	3b 46 08             	cmp    0x8(%esi),%eax
40fc98:	75 42                	jne    0x40fcdc
40fc9a:	85 c0                	test   %eax,%eax
40fc9c:	75 04                	jne    0x40fca2
40fc9e:	b0 01                	mov    $0x1,%al
40fca0:	eb 3c                	jmp    0x40fcde
40fca2:	8b 01                	mov    (%ecx),%eax
40fca4:	3b 06                	cmp    (%esi),%eax
40fca6:	75 34                	jne    0x40fcdc
40fca8:	8b 41 04             	mov    0x4(%ecx),%eax
40fcab:	3b 46 04             	cmp    0x4(%esi),%eax
40fcae:	75 2c                	jne    0x40fcdc
40fcb0:	8b 41 0c             	mov    0xc(%ecx),%eax
40fcb3:	3b 46 0c             	cmp    0xc(%esi),%eax
40fcb6:	75 24                	jne    0x40fcdc
40fcb8:	8b 76 18             	mov    0x18(%esi),%esi
40fcbb:	8d 45 f4             	lea    -0xc(%ebp),%eax
40fcbe:	57                   	push   %edi
40fcbf:	8d 7d f4             	lea    -0xc(%ebp),%edi
40fcc2:	50                   	push   %eax
40fcc3:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40fcc4:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40fcc5:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40fcc6:	8b 71 18             	mov    0x18(%ecx),%esi
40fcc9:	8d 7d e8             	lea    -0x18(%ebp),%edi
40fccc:	8d 4d e8             	lea    -0x18(%ebp),%ecx
40fccf:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40fcd0:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40fcd1:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40fcd2:	e8 01 bb 00 00       	call   0x41b7d8
40fcd7:	5f                   	pop    %edi
40fcd8:	84 c0                	test   %al,%al
40fcda:	75 c2                	jne    0x40fc9e
40fcdc:	32 c0                	xor    %al,%al
40fcde:	5e                   	pop    %esi
40fcdf:	c9                   	leave
40fce0:	c2 04 00             	ret    $0x4
40fce3:	55                   	push   %ebp
40fce4:	8b ec                	mov    %esp,%ebp
40fce6:	56                   	push   %esi
40fce7:	8b 75 08             	mov    0x8(%ebp),%esi
40fcea:	57                   	push   %edi
40fceb:	8b f9                	mov    %ecx,%edi
40fced:	8b 47 48             	mov    0x48(%edi),%eax
40fcf0:	85 c0                	test   %eax,%eax
40fcf2:	74 3b                	je     0x40fd2f
40fcf4:	83 7e 48 00          	cmpl   $0x0,0x48(%esi)
40fcf8:	74 35                	je     0x40fd2f
40fcfa:	ff 76 48             	push   0x48(%esi)
40fcfd:	8b c8                	mov    %eax,%ecx
40fcff:	e8 d4 ba 00 00       	call   0x41b7d8
40fd04:	84 c0                	test   %al,%al
40fd06:	74 23                	je     0x40fd2b
40fd08:	56                   	push   %esi
40fd09:	8b cf                	mov    %edi,%ecx
40fd0b:	e8 78 ff ff ff       	call   0x40fc88
40fd10:	84 c0                	test   %al,%al
40fd12:	74 17                	je     0x40fd2b
40fd14:	8d 46 5c             	lea    0x5c(%esi),%eax
40fd17:	50                   	push   %eax
40fd18:	8d 47 5c             	lea    0x5c(%edi),%eax
40fd1b:	50                   	push   %eax
40fd1c:	e8 85 1d ff ff       	call   0x401aa6
40fd21:	59                   	pop    %ecx
40fd22:	59                   	pop    %ecx
40fd23:	84 c0                	test   %al,%al
40fd25:	74 04                	je     0x40fd2b
40fd27:	b0 01                	mov    $0x1,%al
40fd29:	eb 0a                	jmp    0x40fd35
40fd2b:	32 c0                	xor    %al,%al
40fd2d:	eb 06                	jmp    0x40fd35
40fd2f:	3b 46 48             	cmp    0x48(%esi),%eax
40fd32:	0f 94 c0             	sete   %al
40fd35:	5f                   	pop    %edi
40fd36:	5e                   	pop    %esi
40fd37:	5d                   	pop    %ebp
40fd38:	c2 04 00             	ret    $0x4
40fd3b:	55                   	push   %ebp
40fd3c:	8b ec                	mov    %esp,%ebp
40fd3e:	8b 55 08             	mov    0x8(%ebp),%edx
40fd41:	56                   	push   %esi
40fd42:	8b 75 0c             	mov    0xc(%ebp),%esi
40fd45:	8b 42 04             	mov    0x4(%edx),%eax
40fd48:	8b 4e 04             	mov    0x4(%esi),%ecx
40fd4b:	8b 40 04             	mov    0x4(%eax),%eax
40fd4e:	3b 41 04             	cmp    0x4(%ecx),%eax
40fd51:	75 0a                	jne    0x40fd5d
40fd53:	8b 02                	mov    (%edx),%eax
40fd55:	3b 06                	cmp    (%esi),%eax
40fd57:	75 04                	jne    0x40fd5d
40fd59:	b0 01                	mov    $0x1,%al
40fd5b:	eb 02                	jmp    0x40fd5f
40fd5d:	32 c0                	xor    %al,%al
40fd5f:	5e                   	pop    %esi
40fd60:	5d                   	pop    %ebp
40fd61:	c3                   	ret
40fd62:	55                   	push   %ebp
40fd63:	8b ec                	mov    %esp,%ebp
40fd65:	8b 41 0c             	mov    0xc(%ecx),%eax
40fd68:	2b 41 08             	sub    0x8(%ecx),%eax
40fd6b:	56                   	push   %esi
40fd6c:	6a 0c                	push   $0xc
40fd6e:	5e                   	pop    %esi
40fd6f:	99                   	cltd
40fd70:	f7 fe                	idiv   %esi
40fd72:	8b 55 08             	mov    0x8(%ebp),%edx
40fd75:	5e                   	pop    %esi
40fd76:	3b c2                	cmp    %edx,%eax
40fd78:	77 05                	ja     0x40fd7f
40fd7a:	8d 41 2c             	lea    0x2c(%ecx),%eax
40fd7d:	eb 06                	jmp    0x40fd85
40fd7f:	6b c2 0c             	imul   $0xc,%edx,%eax
40fd82:	03 41 08             	add    0x8(%ecx),%eax
40fd85:	5d                   	pop    %ebp
40fd86:	c2 04 00             	ret    $0x4
40fd89:	55                   	push   %ebp
40fd8a:	8b ec                	mov    %esp,%ebp
40fd8c:	8b 41 0c             	mov    0xc(%ecx),%eax
40fd8f:	2b 41 08             	sub    0x8(%ecx),%eax
40fd92:	56                   	push   %esi
40fd93:	6a 0c                	push   $0xc
40fd95:	5e                   	pop    %esi
40fd96:	99                   	cltd
40fd97:	f7 fe                	idiv   %esi
40fd99:	8b 55 08             	mov    0x8(%ebp),%edx
40fd9c:	5e                   	pop    %esi
40fd9d:	3b c2                	cmp    %edx,%eax
40fd9f:	77 05                	ja     0x40fda6
40fda1:	8d 41 2c             	lea    0x2c(%ecx),%eax
40fda4:	eb 06                	jmp    0x40fdac
40fda6:	6b c2 0c             	imul   $0xc,%edx,%eax
40fda9:	03 41 08             	add    0x8(%ecx),%eax
40fdac:	5d                   	pop    %ebp
40fdad:	c2 04 00             	ret    $0x4
40fdb0:	55                   	push   %ebp
40fdb1:	8b ec                	mov    %esp,%ebp
40fdb3:	83 ec 20             	sub    $0x20,%esp
40fdb6:	a1 94 80 4b 00       	mov    0x4b8094,%eax
40fdbb:	33 c5                	xor    %ebp,%eax
40fdbd:	89 45 fc             	mov    %eax,-0x4(%ebp)
40fdc0:	53                   	push   %ebx
40fdc1:	8b 5d 08             	mov    0x8(%ebp),%ebx
40fdc4:	8b d1                	mov    %ecx,%edx
40fdc6:	56                   	push   %esi
40fdc7:	8b 75 0c             	mov    0xc(%ebp),%esi
40fdca:	57                   	push   %edi
40fdcb:	8b 02                	mov    (%edx),%eax
40fdcd:	8b 4a 04             	mov    0x4(%edx),%ecx
40fdd0:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40fdd3:	8b c1                	mov    %ecx,%eax
40fdd5:	6a 10                	push   $0x10
40fdd7:	c1 e8 1c             	shr    $0x1c,%eax
40fdda:	5f                   	pop    %edi
40fddb:	89 55 e0             	mov    %edx,-0x20(%ebp)
40fdde:	89 45 e8             	mov    %eax,-0x18(%ebp)
40fde1:	3b f7                	cmp    %edi,%esi
40fde3:	73 3b                	jae    0x40fe20
40fde5:	56                   	push   %esi
40fde6:	51                   	push   %ecx
40fde7:	ff 75 e4             	push   -0x1c(%ebp)
40fdea:	e8 d8 35 01 00       	call   0x4233c7
40fdef:	8b d0                	mov    %eax,%edx
40fdf1:	83 c4 0c             	add    $0xc,%esp
40fdf4:	85 d2                	test   %edx,%edx
40fdf6:	74 20                	je     0x40fe18
40fdf8:	83 7d e8 00          	cmpl   $0x0,-0x18(%ebp)
40fdfc:	8b 4d e0             	mov    -0x20(%ebp),%ecx
40fdff:	6a 08                	push   $0x8
40fe01:	58                   	pop    %eax
40fe02:	0f 44 f8             	cmove  %eax,%edi
40fe05:	8b 49 08             	mov    0x8(%ecx),%ecx
40fe08:	0f af f7             	imul   %edi,%esi
40fe0b:	8b 04 0e             	mov    (%esi,%ecx,1),%eax