409c79:	33 d2                	xor    %edx,%edx
409c7b:	8b ce                	mov    %esi,%ecx
409c7d:	e8 60 03 00 00       	call   0x409fe2
409c82:	8b ce                	mov    %esi,%ecx
409c84:	e8 02 08 00 00       	call   0x40a48b
409c89:	85 c0                	test   %eax,%eax
409c8b:	74 47                	je     0x409cd4
409c8d:	ff 15 dc 22 41 00    	call   *0x4122dc
409c93:	6a 0a                	push   $0xa
409c95:	89 38                	mov    %edi,(%eax)
409c97:	8d 45 fc             	lea    -0x4(%ebp),%eax
409c9a:	66 83 3e 2d          	cmpw   $0x2d,(%esi)
409c9e:	50                   	push   %eax
409c9f:	56                   	push   %esi
409ca0:	75 08                	jne    0x409caa
409ca2:	ff 15 e4 22 41 00    	call   *0x4122e4
409ca8:	eb 06                	jmp    0x409cb0
409caa:	ff 15 e8 22 41 00    	call   *0x4122e8
409cb0:	83 c4 0c             	add    $0xc,%esp
409cb3:	8b f0                	mov    %eax,%esi
409cb5:	ff 15 dc 22 41 00    	call   *0x4122dc
409cbb:	83 38 22             	cmpl   $0x22,(%eax)
409cbe:	74 14                	je     0x409cd4
409cc0:	8b 4d fc             	mov    -0x4(%ebp),%ecx
409cc3:	85 c9                	test   %ecx,%ecx
409cc5:	74 09                	je     0x409cd0
409cc7:	e8 bf 07 00 00       	call   0x40a48b
409ccc:	85 c0                	test   %eax,%eax
409cce:	75 04                	jne    0x409cd4
409cd0:	8b c6                	mov    %esi,%eax
409cd2:	eb 14                	jmp    0x409ce8
409cd4:	ff 15 48 20 41 00    	call   *0x412048
409cda:	85 c0                	test   %eax,%eax
409cdc:	75 08                	jne    0x409ce6
409cde:	6a 57                	push   $0x57
409ce0:	ff 15 74 20 41 00    	call   *0x412074
409ce6:	33 c0                	xor    %eax,%eax
409ce8:	5f                   	pop    %edi
409ce9:	5e                   	pop    %esi
409cea:	c9                   	leave
409ceb:	c3                   	ret
409cec:	8b ff                	mov    %edi,%edi
409cee:	55                   	push   %ebp
409cef:	8b ec                	mov    %esp,%ebp
409cf1:	51                   	push   %ecx
409cf2:	56                   	push   %esi
409cf3:	57                   	push   %edi
409cf4:	33 ff                	xor    %edi,%edi
409cf6:	89 7d fc             	mov    %edi,-0x4(%ebp)
409cf9:	85 c9                	test   %ecx,%ecx
409cfb:	0f 84 85 00 00 00    	je     0x409d86
409d01:	57                   	push   %edi
409d02:	8b d1                	mov    %ecx,%edx
409d04:	33 c9                	xor    %ecx,%ecx
409d06:	57                   	push   %edi
409d07:	e8 97 f8 ff ff       	call   0x4095a3
409d0c:	8b f0                	mov    %eax,%esi
409d0e:	85 f6                	test   %esi,%esi
409d10:	75 0e                	jne    0x409d20
409d12:	ff 15 48 20 41 00    	call   *0x412048
409d18:	85 c0                	test   %eax,%eax
409d1a:	75 7c                	jne    0x409d98
409d1c:	6a 08                	push   $0x8
409d1e:	eb 72                	jmp    0x409d92
409d20:	51                   	push   %ecx
409d21:	33 d2                	xor    %edx,%edx
409d23:	8b ce                	mov    %esi,%ecx
409d25:	e8 b8 02 00 00       	call   0x409fe2
409d2a:	8b ce                	mov    %esi,%ecx
409d2c:	e8 5a 07 00 00       	call   0x40a48b
409d31:	85 c0                	test   %eax,%eax
409d33:	74 63                	je     0x409d98
409d35:	39 7d 08             	cmp    %edi,0x8(%ebp)
409d38:	75 06                	jne    0x409d40
409d3a:	66 83 3e 2d          	cmpw   $0x2d,(%esi)
409d3e:	74 58                	je     0x409d98
409d40:	ff 15 dc 22 41 00    	call   *0x4122dc
409d46:	83 7d 08 01          	cmpl   $0x1,0x8(%ebp)
409d4a:	6a 0a                	push   $0xa
409d4c:	89 38                	mov    %edi,(%eax)
409d4e:	8d 45 fc             	lea    -0x4(%ebp),%eax
409d51:	50                   	push   %eax
409d52:	56                   	push   %esi
409d53:	75 08                	jne    0x409d5d
409d55:	ff 15 e4 22 41 00    	call   *0x4122e4
409d5b:	eb 06                	jmp    0x409d63
409d5d:	ff 15 e8 22 41 00    	call   *0x4122e8
409d63:	83 c4 0c             	add    $0xc,%esp
409d66:	ff 15 dc 22 41 00    	call   *0x4122dc
409d6c:	83 38 22             	cmpl   $0x22,(%eax)
409d6f:	74 27                	je     0x409d98
409d71:	8b 4d fc             	mov    -0x4(%ebp),%ecx
409d74:	85 c9                	test   %ecx,%ecx
409d76:	74 09                	je     0x409d81
409d78:	e8 0e 07 00 00       	call   0x40a48b
409d7d:	85 c0                	test   %eax,%eax
409d7f:	75 17                	jne    0x409d98
409d81:	33 c0                	xor    %eax,%eax
409d83:	40                   	inc    %eax
409d84:	eb 14                	jmp    0x409d9a
409d86:	ff 15 48 20 41 00    	call   *0x412048
409d8c:	85 c0                	test   %eax,%eax
409d8e:	75 08                	jne    0x409d98
409d90:	6a 57                	push   $0x57
409d92:	ff 15 74 20 41 00    	call   *0x412074
409d98:	33 c0                	xor    %eax,%eax
409d9a:	5f                   	pop    %edi
409d9b:	5e                   	pop    %esi
409d9c:	c9                   	leave
409d9d:	c2 04 00             	ret    $0x4
409da0:	8b ff                	mov    %edi,%edi
409da2:	56                   	push   %esi
409da3:	8b f1                	mov    %ecx,%esi
409da5:	57                   	push   %edi
409da6:	8b fa                	mov    %edx,%edi
409da8:	85 f6                	test   %esi,%esi
409daa:	75 0e                	jne    0x409dba
409dac:	ff 15 48 20 41 00    	call   *0x412048
409db2:	85 c0                	test   %eax,%eax
409db4:	75 2a                	jne    0x409de0
409db6:	6a 57                	push   $0x57
409db8:	eb 20                	jmp    0x409dda
409dba:	e8 cc 06 00 00       	call   0x40a48b
409dbf:	85 c0                	test   %eax,%eax
409dc1:	74 12                	je     0x409dd5
409dc3:	57                   	push   %edi
409dc4:	56                   	push   %esi
409dc5:	ff 15 40 21 41 00    	call   *0x412140
409dcb:	85 c0                	test   %eax,%eax
409dcd:	74 06                	je     0x409dd5
409dcf:	2b c6                	sub    %esi,%eax
409dd1:	d1 f8                	sar    $1,%eax
409dd3:	eb 0e                	jmp    0x409de3
409dd5:	68 90 04 00 00       	push   $0x490
409dda:	ff 15 74 20 41 00    	call   *0x412074
409de0:	83 c8 ff             	or     $0xffffffff,%eax
409de3:	5f                   	pop    %edi
409de4:	5e                   	pop    %esi
409de5:	c2 08 00             	ret    $0x8
409de8:	8b ff                	mov    %edi,%edi
409dea:	55                   	push   %ebp
409deb:	8b ec                	mov    %esp,%ebp
409ded:	83 ec 0c             	sub    $0xc,%esp
409df0:	53                   	push   %ebx
409df1:	56                   	push   %esi
409df2:	57                   	push   %edi
409df3:	8b f9                	mov    %ecx,%edi
409df5:	8b f2                	mov    %edx,%esi
409df7:	85 ff                	test   %edi,%edi
409df9:	0f 84 a8 00 00 00    	je     0x409ea7
409dff:	85 f6                	test   %esi,%esi
409e01:	0f 84 a0 00 00 00    	je     0x409ea7
409e07:	8b ce                	mov    %esi,%ecx
409e09:	e8 7d 06 00 00       	call   0x40a48b
409e0e:	6a 01                	push   $0x1
409e10:	33 d2                	xor    %edx,%edx
409e12:	33 c9                	xor    %ecx,%ecx
409e14:	8d 58 04             	lea    0x4(%eax),%ebx
409e17:	53                   	push   %ebx
409e18:	e8 86 f7 ff ff       	call   0x4095a3
409e1d:	89 45 fc             	mov    %eax,-0x4(%ebp)
409e20:	85 c0                	test   %eax,%eax
409e22:	75 12                	jne    0x409e36
409e24:	ff 15 48 20 41 00    	call   *0x412048
409e2a:	85 c0                	test   %eax,%eax
409e2c:	0f 85 87 00 00 00    	jne    0x409eb9
409e32:	6a 08                	push   $0x8
409e34:	eb 7d                	jmp    0x409eb3
409e36:	8b cf                	mov    %edi,%ecx
409e38:	e8 4e 06 00 00       	call   0x40a48b
409e3d:	83 c0 04             	add    $0x4,%eax
409e40:	33 c9                	xor    %ecx,%ecx
409e42:	6a 01                	push   $0x1
409e44:	50                   	push   %eax
409e45:	33 d2                	xor    %edx,%edx
409e47:	89 45 f8             	mov    %eax,-0x8(%ebp)
409e4a:	41                   	inc    %ecx
409e4b:	e8 53 f7 ff ff       	call   0x4095a3
409e50:	89 45 f4             	mov    %eax,-0xc(%ebp)
409e53:	85 c0                	test   %eax,%eax
409e55:	74 cd                	je     0x409e24
409e57:	56                   	push   %esi
409e58:	8b 75 fc             	mov    -0x4(%ebp),%esi
409e5b:	68 54 18 40 00       	push   $0x401854
409e60:	53                   	push   %ebx
409e61:	56                   	push   %esi
409e62:	e8 bd f5 ff ff       	call   0x409424
409e67:	83 c4 10             	add    $0x10,%esp
409e6a:	85 c0                	test   %eax,%eax
409e6c:	79 06                	jns    0x409e74
409e6e:	0f b7 c0             	movzwl %ax,%eax
409e71:	50                   	push   %eax
409e72:	eb 3f                	jmp    0x409eb3
409e74:	57                   	push   %edi
409e75:	8b 7d f4             	mov    -0xc(%ebp),%edi
409e78:	68 54 18 40 00       	push   $0x401854
409e7d:	ff 75 f8             	push   -0x8(%ebp)
409e80:	57                   	push   %edi
409e81:	e8 9e f5 ff ff       	call   0x409424
409e86:	83 c4 10             	add    $0x10,%esp
409e89:	85 c0                	test   %eax,%eax
409e8b:	78 e1                	js     0x409e6e
409e8d:	6a 00                	push   $0x0
409e8f:	ff 75 08             	push   0x8(%ebp)
409e92:	8b d7                	mov    %edi,%edx
409e94:	8b ce                	mov    %esi,%ecx
409e96:	e8 a5 00 00 00       	call   0x409f40
409e9b:	33 c9                	xor    %ecx,%ecx
409e9d:	83 f8 ff             	cmp    $0xffffffff,%eax
409ea0:	0f 95 c1             	setne  %cl
409ea3:	8b c1                	mov    %ecx,%eax
409ea5:	eb 14                	jmp    0x409ebb
409ea7:	ff 15 48 20 41 00    	call   *0x412048
409ead:	85 c0                	test   %eax,%eax
409eaf:	75 08                	jne    0x409eb9
409eb1:	6a 57                	push   $0x57
409eb3:	ff 15 74 20 41 00    	call   *0x412074
409eb9:	33 c0                	xor    %eax,%eax
409ebb:	5f                   	pop    %edi
409ebc:	5e                   	pop    %esi
409ebd:	5b                   	pop    %ebx
409ebe:	c9                   	leave
409ebf:	c2 04 00             	ret    $0x4
409ec2:	8b ff                	mov    %edi,%edi
409ec4:	55                   	push   %ebp
409ec5:	8b ec                	mov    %esp,%ebp
409ec7:	51                   	push   %ecx
409ec8:	53                   	push   %ebx
409ec9:	56                   	push   %esi
409eca:	57                   	push   %edi
409ecb:	8b f9                	mov    %ecx,%edi
409ecd:	8b c2                	mov    %edx,%eax
409ecf:	89 45 fc             	mov    %eax,-0x4(%ebp)
409ed2:	85 ff                	test   %edi,%edi
409ed4:	74 4e                	je     0x409f24
409ed6:	85 c0                	test   %eax,%eax
409ed8:	74 4a                	je     0x409f24
409eda:	8b c8                	mov    %eax,%ecx
409edc:	e8 aa 05 00 00       	call   0x40a48b
409ee1:	8b d8                	mov    %eax,%ebx
409ee3:	85 db                	test   %ebx,%ebx
409ee5:	74 36                	je     0x409f1d
409ee7:	8b cf                	mov    %edi,%ecx
409ee9:	e8 9d 05 00 00       	call   0x40a48b
409eee:	85 c0                	test   %eax,%eax
409ef0:	74 2b                	je     0x409f1d
409ef2:	8b cf                	mov    %edi,%ecx
409ef4:	e8 92 05 00 00       	call   0x40a48b
409ef9:	85 c0                	test   %eax,%eax
409efb:	74 20                	je     0x409f1d
409efd:	33 f6                	xor    %esi,%esi
409eff:	85 db                	test   %ebx,%ebx
409f01:	74 1a                	je     0x409f1d
409f03:	8b 45 fc             	mov    -0x4(%ebp),%eax
409f06:	51                   	push   %ecx
409f07:	51                   	push   %ecx
409f08:	8b cf                	mov    %edi,%ecx
409f0a:	66 8b 14 70          	mov    (%eax,%esi,2),%dx
409f0e:	e8 8d fe ff ff       	call   0x409da0
409f13:	83 f8 ff             	cmp    $0xffffffff,%eax
409f16:	75 21                	jne    0x409f39
409f18:	46                   	inc    %esi
409f19:	3b f3                	cmp    %ebx,%esi
409f1b:	72 e6                	jb     0x409f03
409f1d:	68 90 04 00 00       	push   $0x490
409f22:	eb 0c                	jmp    0x409f30
409f24:	ff 15 48 20 41 00    	call   *0x412048
409f2a:	85 c0                	test   %eax,%eax
409f2c:	75 08                	jne    0x409f36
409f2e:	6a 57                	push   $0x57
409f30:	ff 15 74 20 41 00    	call   *0x412074
409f36:	83 c8 ff             	or     $0xffffffff,%eax
409f39:	5f                   	pop    %edi
409f3a:	5e                   	pop    %esi
409f3b:	5b                   	pop    %ebx
409f3c:	c9                   	leave
409f3d:	c2 08 00             	ret    $0x8
409f40:	8b ff                	mov    %edi,%edi
409f42:	55                   	push   %ebp
409f43:	8b ec                	mov    %esp,%ebp
409f45:	53                   	push   %ebx
409f46:	56                   	push   %esi
409f47:	8b d9                	mov    %ecx,%ebx
409f49:	57                   	push   %edi
409f4a:	8b fa                	mov    %edx,%edi
409f4c:	85 db                	test   %ebx,%ebx
409f4e:	74 51                	je     0x409fa1
409f50:	85 ff                	test   %edi,%edi
409f52:	74 4d                	je     0x409fa1
409f54:	e8 32 05 00 00       	call   0x40a48b
409f59:	8b cf                	mov    %edi,%ecx
409f5b:	8b f0                	mov    %eax,%esi
409f5d:	e8 29 05 00 00       	call   0x40a48b
409f62:	85 c0                	test   %eax,%eax
409f64:	74 34                	je     0x409f9a
409f66:	85 f6                	test   %esi,%esi
409f68:	74 30                	je     0x409f9a
409f6a:	8b 4d 0c             	mov    0xc(%ebp),%ecx
409f6d:	3b ce                	cmp    %esi,%ecx
409f6f:	73 29                	jae    0x409f9a
409f71:	2b f1                	sub    %ecx,%esi
409f73:	3b f0                	cmp    %eax,%esi
409f75:	72 23                	jb     0x409f9a
409f77:	83 7d 08 01          	cmpl   $0x1,0x8(%ebp)
409f7b:	8d 04 4b             	lea    (%ebx,%ecx,2),%eax
409f7e:	57                   	push   %edi
409f7f:	50                   	push   %eax
409f80:	75 08                	jne    0x409f8a
409f82:	ff 15 3c 21 41 00    	call   *0x41213c
409f88:	eb 06                	jmp    0x409f90
409f8a:	ff 15 38 21 41 00    	call   *0x412138
409f90:	85 c0                	test   %eax,%eax
409f92:	74 06                	je     0x409f9a
409f94:	2b c3                	sub    %ebx,%eax
409f96:	d1 f8                	sar    $1,%eax
409f98:	eb 1c                	jmp    0x409fb6
409f9a:	68 90 04 00 00       	push   $0x490
409f9f:	eb 0c                	jmp    0x409fad
409fa1:	ff 15 48 20 41 00    	call   *0x412048
409fa7:	85 c0                	test   %eax,%eax
409fa9:	75 08                	jne    0x409fb3
409fab:	6a 57                	push   $0x57
409fad:	ff 15 74 20 41 00    	call   *0x412074
409fb3:	83 c8 ff             	or     $0xffffffff,%eax
409fb6:	5f                   	pop    %edi
409fb7:	5e                   	pop    %esi
409fb8:	5b                   	pop    %ebx
409fb9:	5d                   	pop    %ebp
409fba:	c2 08 00             	ret    $0x8
409fbd:	8b ff                	mov    %edi,%edi
409fbf:	56                   	push   %esi
409fc0:	8b f1                	mov    %ecx,%esi
409fc2:	e8 c4 04 00 00       	call   0x40a48b
409fc7:	85 c0                	test   %eax,%eax
409fc9:	75 02                	jne    0x409fcd
409fcb:	5e                   	pop    %esi
409fcc:	c3                   	ret
409fcd:	33 c0                	xor    %eax,%eax
409fcf:	50                   	push   %eax
409fd0:	50                   	push   %eax
409fd1:	50                   	push   %eax
409fd2:	50                   	push   %eax
409fd3:	6a ff                	push   $0xffffffff
409fd5:	56                   	push   %esi
409fd6:	50                   	push   %eax
409fd7:	6a 01                	push   $0x1
409fd9:	ff 15 c4 20 41 00    	call   *0x4120c4
409fdf:	48                   	dec    %eax
409fe0:	5e                   	pop    %esi
409fe1:	c3                   	ret