406d78:	66 85 c0             	test   %ax,%ax
406d7b:	75 04                	jne    0x406d81
406d7d:	b0 01                	mov    $0x1,%al
406d7f:	5d                   	pop    %ebp
406d80:	c3                   	ret
406d81:	50                   	push   %eax
406d82:	e8 d6 00 00 00       	call   0x406e5d
406d87:	83 c4 04             	add    $0x4,%esp
406d8a:	84 c0                	test   %al,%al
406d8c:	74 07                	je     0x406d95
406d8e:	66 83 79 02 00       	cmpw   $0x0,0x2(%ecx)
406d93:	74 e8                	je     0x406d7d
406d95:	32 c0                	xor    %al,%al
406d97:	5d                   	pop    %ebp
406d98:	c3                   	ret
406d99:	8b ff                	mov    %edi,%edi
406d9b:	55                   	push   %ebp
406d9c:	8b ec                	mov    %esp,%ebp
406d9e:	8b 55 08             	mov    0x8(%ebp),%edx
406da1:	8b ca                	mov    %edx,%ecx
406da3:	56                   	push   %esi
406da4:	57                   	push   %edi
406da5:	33 ff                	xor    %edi,%edi
406da7:	8d 71 02             	lea    0x2(%ecx),%esi
406daa:	66 8b 01             	mov    (%ecx),%ax
406dad:	83 c1 02             	add    $0x2,%ecx
406db0:	66 3b c7             	cmp    %di,%ax
406db3:	75 f5                	jne    0x406daa
406db5:	2b ce                	sub    %esi,%ecx
406db7:	d1 f9                	sar    $1,%ecx
406db9:	83 f9 05             	cmp    $0x5,%ecx
406dbc:	0f 82 95 00 00 00    	jb     0x406e57
406dc2:	0f b7 02             	movzwl (%edx),%eax
406dc5:	50                   	push   %eax
406dc6:	e8 92 00 00 00       	call   0x406e5d
406dcb:	83 c4 04             	add    $0x4,%esp
406dce:	84 c0                	test   %al,%al
406dd0:	0f 84 81 00 00 00    	je     0x406e57
406dd6:	0f b7 42 02          	movzwl 0x2(%edx),%eax
406dda:	50                   	push   %eax
406ddb:	e8 7d 00 00 00       	call   0x406e5d
406de0:	83 c4 04             	add    $0x4,%esp
406de3:	84 c0                	test   %al,%al
406de5:	74 70                	je     0x406e57
406de7:	0f b7 42 04          	movzwl 0x4(%edx),%eax
406deb:	50                   	push   %eax
406dec:	e8 6c 00 00 00       	call   0x406e5d
406df1:	83 c4 04             	add    $0x4,%esp
406df4:	84 c0                	test   %al,%al
406df6:	75 5f                	jne    0x406e57
406df8:	8d 4a 06             	lea    0x6(%edx),%ecx
406dfb:	0f b7 01             	movzwl (%ecx),%eax
406dfe:	66 85 c0             	test   %ax,%ax
406e01:	74 54                	je     0x406e57
406e03:	50                   	push   %eax
406e04:	e8 54 00 00 00       	call   0x406e5d
406e09:	83 c4 04             	add    $0x4,%esp
406e0c:	84 c0                	test   %al,%al
406e0e:	75 0b                	jne    0x406e1b
406e10:	83 c1 02             	add    $0x2,%ecx
406e13:	0f b7 01             	movzwl (%ecx),%eax
406e16:	66 85 c0             	test   %ax,%ax
406e19:	75 e8                	jne    0x406e03
406e1b:	66 39 39             	cmp    %di,(%ecx)
406e1e:	74 37                	je     0x406e57
406e20:	83 c1 02             	add    $0x2,%ecx
406e23:	66 39 39             	cmp    %di,(%ecx)
406e26:	74 2f                	je     0x406e57
406e28:	0f b7 01             	movzwl (%ecx),%eax
406e2b:	66 85 c0             	test   %ax,%ax
406e2e:	74 23                	je     0x406e53
406e30:	50                   	push   %eax
406e31:	e8 27 00 00 00       	call   0x406e5d
406e36:	83 c4 04             	add    $0x4,%esp
406e39:	84 c0                	test   %al,%al
406e3b:	75 0b                	jne    0x406e48
406e3d:	83 c1 02             	add    $0x2,%ecx
406e40:	0f b7 01             	movzwl (%ecx),%eax
406e43:	66 85 c0             	test   %ax,%ax
406e46:	75 e8                	jne    0x406e30
406e48:	66 39 39             	cmp    %di,(%ecx)
406e4b:	74 06                	je     0x406e53
406e4d:	66 39 79 02          	cmp    %di,0x2(%ecx)
406e51:	75 04                	jne    0x406e57
406e53:	b0 01                	mov    $0x1,%al
406e55:	eb 02                	jmp    0x406e59
406e57:	32 c0                	xor    %al,%al
406e59:	5f                   	pop    %edi
406e5a:	5e                   	pop    %esi
406e5b:	5d                   	pop    %ebp
406e5c:	c3                   	ret
406e5d:	8b ff                	mov    %edi,%edi
406e5f:	55                   	push   %ebp
406e60:	8b ec                	mov    %esp,%ebp
406e62:	66 83 7d 08 5c       	cmpw   $0x5c,0x8(%ebp)
406e67:	74 0b                	je     0x406e74
406e69:	66 83 7d 08 2f       	cmpw   $0x2f,0x8(%ebp)
406e6e:	74 04                	je     0x406e74
406e70:	33 c0                	xor    %eax,%eax
406e72:	5d                   	pop    %ebp
406e73:	c3                   	ret
406e74:	33 c0                	xor    %eax,%eax
406e76:	40                   	inc    %eax
406e77:	5d                   	pop    %ebp
406e78:	c3                   	ret
406e79:	8b ff                	mov    %edi,%edi
406e7b:	55                   	push   %ebp
406e7c:	8b ec                	mov    %esp,%ebp
406e7e:	81 ec 10 02 00 00    	sub    $0x210,%esp
406e84:	a1 0c 30 42 00       	mov    0x42300c,%eax
406e89:	33 c5                	xor    %ebp,%eax
406e8b:	89 45 fc             	mov    %eax,-0x4(%ebp)
406e8e:	56                   	push   %esi
406e8f:	8b 75 08             	mov    0x8(%ebp),%esi
406e92:	68 20 bd 41 00       	push   $0x41bd20
406e97:	56                   	push   %esi
406e98:	e8 ad 4d 00 00       	call   0x40bc4a
406e9d:	59                   	pop    %ecx
406e9e:	59                   	pop    %ecx
406e9f:	85 c0                	test   %eax,%eax
406ea1:	75 04                	jne    0x406ea7
406ea3:	32 c0                	xor    %al,%al
406ea5:	eb 70                	jmp    0x406f17
406ea7:	53                   	push   %ebx
406ea8:	8d 85 f0 fd ff ff    	lea    -0x210(%ebp),%eax
406eae:	33 db                	xor    %ebx,%ebx
406eb0:	50                   	push   %eax
406eb1:	68 04 01 00 00       	push   $0x104
406eb6:	8d 85 f4 fd ff ff    	lea    -0x20c(%ebp),%eax
406ebc:	89 9d f0 fd ff ff    	mov    %ebx,-0x210(%ebp)
406ec2:	56                   	push   %esi
406ec3:	50                   	push   %eax
406ec4:	e8 97 fc ff ff       	call   0x406b60
406ec9:	8b d0                	mov    %eax,%edx
406ecb:	83 c4 10             	add    $0x10,%esp
406ece:	85 d2                	test   %edx,%edx
406ed0:	74 36                	je     0x406f08
406ed2:	8b ca                	mov    %edx,%ecx
406ed4:	57                   	push   %edi
406ed5:	8d 79 02             	lea    0x2(%ecx),%edi
406ed8:	66 8b 01             	mov    (%ecx),%ax
406edb:	83 c1 02             	add    $0x2,%ecx
406ede:	66 3b c3             	cmp    %bx,%ax
406ee1:	75 f5                	jne    0x406ed8
406ee3:	2b cf                	sub    %edi,%ecx
406ee5:	d1 f9                	sar    $1,%ecx
406ee7:	5f                   	pop    %edi
406ee8:	83 f9 03             	cmp    $0x3,%ecx
406eeb:	74 0b                	je     0x406ef8
406eed:	52                   	push   %edx
406eee:	e8 a6 fe ff ff       	call   0x406d99
406ef3:	59                   	pop    %ecx
406ef4:	84 c0                	test   %al,%al
406ef6:	74 10                	je     0x406f08
406ef8:	56                   	push   %esi
406ef9:	ff 15 10 b1 41 00    	call   *0x41b110
406eff:	33 db                	xor    %ebx,%ebx
406f01:	43                   	inc    %ebx
406f02:	3b c3                	cmp    %ebx,%eax
406f04:	77 02                	ja     0x406f08
406f06:	33 db                	xor    %ebx,%ebx
406f08:	ff b5 f0 fd ff ff    	push   -0x210(%ebp)
406f0e:	e8 4c 0b 00 00       	call   0x407a5f
406f13:	59                   	pop    %ecx
406f14:	8a c3                	mov    %bl,%al
406f16:	5b                   	pop    %ebx
406f17:	8b 4d fc             	mov    -0x4(%ebp),%ecx
406f1a:	33 cd                	xor    %ebp,%ecx
406f1c:	5e                   	pop    %esi
406f1d:	e8 34 c0 ff ff       	call   0x402f56
406f22:	8b e5                	mov    %ebp,%esp
406f24:	5d                   	pop    %ebp
406f25:	c3                   	ret
406f26:	8b ff                	mov    %edi,%edi
406f28:	55                   	push   %ebp
406f29:	8b ec                	mov    %esp,%ebp
406f2b:	5d                   	pop    %ebp
406f2c:	e9 f8 f7 ff ff       	jmp    0x406729
406f31:	8b ff                	mov    %edi,%edi
406f33:	55                   	push   %ebp
406f34:	8b ec                	mov    %esp,%ebp
406f36:	83 ec 14             	sub    $0x14,%esp
406f39:	56                   	push   %esi
406f3a:	8b 75 08             	mov    0x8(%ebp),%esi
406f3d:	85 f6                	test   %esi,%esi
406f3f:	75 13                	jne    0x406f54
406f41:	e8 c1 0d 00 00       	call   0x407d07
406f46:	6a 16                	push   $0x16
406f48:	5e                   	pop    %esi
406f49:	89 30                	mov    %esi,(%eax)
406f4b:	e8 de 0c 00 00       	call   0x407c2e
406f50:	8b c6                	mov    %esi,%eax
406f52:	eb 53                	jmp    0x406fa7
406f54:	57                   	push   %edi
406f55:	6a 09                	push   $0x9
406f57:	83 c8 ff             	or     $0xffffffff,%eax
406f5a:	8b fe                	mov    %esi,%edi
406f5c:	59                   	pop    %ecx
406f5d:	f3 ab                	rep stos %eax,%es:(%edi)
406f5f:	8b 7d 0c             	mov    0xc(%ebp),%edi
406f62:	85 ff                	test   %edi,%edi
406f64:	75 13                	jne    0x406f79
406f66:	e8 9c 0d 00 00       	call   0x407d07
406f6b:	6a 16                	push   $0x16
406f6d:	5e                   	pop    %esi
406f6e:	89 30                	mov    %esi,(%eax)
406f70:	e8 b9 0c 00 00       	call   0x407c2e
406f75:	8b c6                	mov    %esi,%eax
406f77:	eb 2d                	jmp    0x406fa6
406f79:	53                   	push   %ebx
406f7a:	33 db                	xor    %ebx,%ebx
406f7c:	39 5f 04             	cmp    %ebx,0x4(%edi)
406f7f:	7f 06                	jg     0x406f87
406f81:	7c 16                	jl     0x406f99
406f83:	39 1f                	cmp    %ebx,(%edi)
406f85:	72 12                	jb     0x406f99
406f87:	6a 07                	push   $0x7
406f89:	58                   	pop    %eax
406f8a:	39 47 04             	cmp    %eax,0x4(%edi)
406f8d:	7c 1d                	jl     0x406fac
406f8f:	7f 08                	jg     0x406f99
406f91:	81 3f ff 6f 40 93    	cmpl   $0x93406fff,(%edi)
406f97:	76 13                	jbe    0x406fac
406f99:	e8 69 0d 00 00       	call   0x407d07
406f9e:	6a 16                	push   $0x16
406fa0:	5e                   	pop    %esi
406fa1:	89 30                	mov    %esi,(%eax)
406fa3:	8b c6                	mov    %esi,%eax
406fa5:	5b                   	pop    %ebx
406fa6:	5f                   	pop    %edi
406fa7:	5e                   	pop    %esi
406fa8:	8b e5                	mov    %ebp,%esp
406faa:	5d                   	pop    %ebp
406fab:	c3                   	ret
406fac:	e8 b3 63 00 00       	call   0x40d364
406fb1:	8d 45 f8             	lea    -0x8(%ebp),%eax
406fb4:	89 5d f8             	mov    %ebx,-0x8(%ebp)
406fb7:	50                   	push   %eax
406fb8:	89 5d f4             	mov    %ebx,-0xc(%ebp)
406fbb:	89 5d fc             	mov    %ebx,-0x4(%ebp)
406fbe:	e8 da 59 00 00       	call   0x40c99d
406fc3:	59                   	pop    %ecx
406fc4:	85 c0                	test   %eax,%eax
406fc6:	0f 85 e4 01 00 00    	jne    0x4071b0
406fcc:	8d 45 f4             	lea    -0xc(%ebp),%eax
406fcf:	50                   	push   %eax
406fd0:	e8 f4 59 00 00       	call   0x40c9c9
406fd5:	59                   	pop    %ecx
406fd6:	85 c0                	test   %eax,%eax
406fd8:	0f 85 d2 01 00 00    	jne    0x4071b0
406fde:	8d 45 fc             	lea    -0x4(%ebp),%eax
406fe1:	50                   	push   %eax
406fe2:	e8 0e 5a 00 00       	call   0x40c9f5
406fe7:	59                   	pop    %ecx
406fe8:	85 c0                	test   %eax,%eax
406fea:	0f 85 c0 01 00 00    	jne    0x4071b0
406ff0:	8b 5f 04             	mov    0x4(%edi),%ebx
406ff3:	8b 0f                	mov    (%edi),%ecx
406ff5:	85 db                	test   %ebx,%ebx
406ff7:	7c 7f                	jl     0x407078
406ff9:	7f 08                	jg     0x407003
406ffb:	81 f9 80 f4 03 00    	cmp    $0x3f480,%ecx
407001:	76 75                	jbe    0x407078
407003:	6a 07                	push   $0x7
407005:	58                   	pop    %eax
407006:	3b d8                	cmp    %eax,%ebx
407008:	7f 6e                	jg     0x407078
40700a:	7c 08                	jl     0x407014
40700c:	81 f9 7f 7b 3c 93    	cmp    $0x933c7b7f,%ecx
407012:	73 64                	jae    0x407078
407014:	8b 45 fc             	mov    -0x4(%ebp),%eax
407017:	99                   	cltd
407018:	2b c8                	sub    %eax,%ecx
40701a:	8d 45 ec             	lea    -0x14(%ebp),%eax
40701d:	50                   	push   %eax
40701e:	1b da                	sbb    %edx,%ebx
407020:	89 4d ec             	mov    %ecx,-0x14(%ebp)
407023:	56                   	push   %esi
407024:	89 5d f0             	mov    %ebx,-0x10(%ebp)
407027:	e8 e6 5b 00 00       	call   0x40cc12
40702c:	59                   	pop    %ecx
40702d:	59                   	pop    %ecx
40702e:	85 c0                	test   %eax,%eax
407030:	0f 85 6f ff ff ff    	jne    0x406fa5
407036:	39 45 f8             	cmp    %eax,-0x8(%ebp)
407039:	0f 84 2a 01 00 00    	je     0x407169
40703f:	56                   	push   %esi
407040:	e8 70 63 00 00       	call   0x40d3b5
407045:	59                   	pop    %ecx
407046:	85 c0                	test   %eax,%eax
407048:	0f 84 1b 01 00 00    	je     0x407169
40704e:	8b 45 f4             	mov    -0xc(%ebp),%eax
407051:	99                   	cltd
407052:	29 45 ec             	sub    %eax,-0x14(%ebp)
407055:	8d 45 ec             	lea    -0x14(%ebp),%eax
407058:	50                   	push   %eax
407059:	19 55 f0             	sbb    %edx,-0x10(%ebp)
40705c:	56                   	push   %esi
40705d:	e8 b0 5b 00 00       	call   0x40cc12
407062:	59                   	pop    %ecx
407063:	59                   	pop    %ecx
407064:	85 c0                	test   %eax,%eax
407066:	0f 85 39 ff ff ff    	jne    0x406fa5
40706c:	c7 46 20 01 00 00 00 	movl   $0x1,0x20(%esi)
407073:	e9 f1 00 00 00       	jmp    0x407169
407078:	57                   	push   %edi
407079:	56                   	push   %esi
40707a:	e8 93 5b 00 00       	call   0x40cc12
40707f:	59                   	pop    %ecx
407080:	59                   	pop    %ecx
407081:	85 c0                	test   %eax,%eax
407083:	0f 85 1c ff ff ff    	jne    0x406fa5
407089:	83 7d f8 00          	cmpl   $0x0,-0x8(%ebp)
40708d:	8b 06                	mov    (%esi),%eax
40708f:	99                   	cltd
407090:	8b f8                	mov    %eax,%edi
407092:	8b da                	mov    %edx,%ebx
407094:	74 1a                	je     0x4070b0
407096:	56                   	push   %esi
407097:	e8 19 63 00 00       	call   0x40d3b5
40709c:	59                   	pop    %ecx
40709d:	85 c0                	test   %eax,%eax
40709f:	74 0f                	je     0x4070b0
4070a1:	8b 45 fc             	mov    -0x4(%ebp),%eax
4070a4:	03 45 f4             	add    -0xc(%ebp),%eax
4070a7:	c7 46 20 01 00 00 00 	movl   $0x1,0x20(%esi)
4070ae:	eb 03                	jmp    0x4070b3
4070b0:	8b 45 fc             	mov    -0x4(%ebp),%eax
4070b3:	99                   	cltd
4070b4:	2b f8                	sub    %eax,%edi
4070b6:	6a 00                	push   $0x0
4070b8:	6a 3c                	push   $0x3c
4070ba:	1b da                	sbb    %edx,%ebx
4070bc:	53                   	push   %ebx
4070bd:	57                   	push   %edi
4070be:	e8 7d 10 01 00       	call   0x418140
4070c3:	89 06                	mov    %eax,(%esi)
4070c5:	85 c0                	test   %eax,%eax
4070c7:	79 0b                	jns    0x4070d4
4070c9:	83 c0 3c             	add    $0x3c,%eax
4070cc:	83 c7 c4             	add    $0xffffffc4,%edi
4070cf:	89 06                	mov    %eax,(%esi)
4070d1:	83 d3 ff             	adc    $0xffffffff,%ebx
4070d4:	6a 00                	push   $0x0
4070d6:	6a 3c                	push   $0x3c
4070d8:	53                   	push   %ebx
4070d9:	57                   	push   %edi
4070da:	e8 b1 0f 01 00       	call   0x418090
4070df:	8b f8                	mov    %eax,%edi
4070e1:	8b da                	mov    %edx,%ebx