406c8e:	83 ef 04             	sub    $0x4,%edi
406c91:	3b fe                	cmp    %esi,%edi
406c93:	72 54                	jb     0x406ce9
406c95:	8b 07                	mov    (%edi),%eax
406c97:	3b 45 fc             	cmp    -0x4(%ebp),%eax
406c9a:	74 f2                	je     0x406c8e
406c9c:	33 c2                	xor    %edx,%eax
406c9e:	8b 55 fc             	mov    -0x4(%ebp),%edx
406ca1:	d3 c8                	ror    %cl,%eax
406ca3:	8b c8                	mov    %eax,%ecx
406ca5:	89 17                	mov    %edx,(%edi)
406ca7:	89 45 f0             	mov    %eax,-0x10(%ebp)
406caa:	ff 15 18 f1 40 00    	call   *0x40f118
406cb0:	ff 55 f0             	call   *-0x10(%ebp)
406cb3:	8b 03                	mov    (%ebx),%eax
406cb5:	8b 15 14 60 41 00    	mov    0x416014,%edx
406cbb:	8b ca                	mov    %edx,%ecx
406cbd:	83 e1 1f             	and    $0x1f,%ecx
406cc0:	8b 00                	mov    (%eax),%eax
406cc2:	8b 18                	mov    (%eax),%ebx
406cc4:	8b 40 04             	mov    0x4(%eax),%eax
406cc7:	33 da                	xor    %edx,%ebx
406cc9:	d3 cb                	ror    %cl,%ebx
406ccb:	33 c2                	xor    %edx,%eax
406ccd:	d3 c8                	ror    %cl,%eax
406ccf:	3b 5d f8             	cmp    -0x8(%ebp),%ebx
406cd2:	89 5d f0             	mov    %ebx,-0x10(%ebp)
406cd5:	8b 5d ec             	mov    -0x14(%ebp),%ebx
406cd8:	75 05                	jne    0x406cdf
406cda:	3b 45 f4             	cmp    -0xc(%ebp),%eax
406cdd:	74 af                	je     0x406c8e
406cdf:	8b 75 f0             	mov    -0x10(%ebp),%esi
406ce2:	8b f8                	mov    %eax,%edi
406ce4:	89 45 f4             	mov    %eax,-0xc(%ebp)
406ce7:	eb a2                	jmp    0x406c8b
406ce9:	83 fe ff             	cmp    $0xffffffff,%esi
406cec:	74 0d                	je     0x406cfb
406cee:	56                   	push   %esi
406cef:	e8 85 0b 00 00       	call   0x407879
406cf4:	8b 15 14 60 41 00    	mov    0x416014,%edx
406cfa:	59                   	pop    %ecx
406cfb:	8b 03                	mov    (%ebx),%eax
406cfd:	8b 00                	mov    (%eax),%eax
406cff:	89 10                	mov    %edx,(%eax)
406d01:	8b 03                	mov    (%ebx),%eax
406d03:	8b 00                	mov    (%eax),%eax
406d05:	89 50 04             	mov    %edx,0x4(%eax)
406d08:	8b 03                	mov    (%ebx),%eax
406d0a:	8b 00                	mov    (%eax),%eax
406d0c:	89 50 08             	mov    %edx,0x8(%eax)
406d0f:	33 c0                	xor    %eax,%eax
406d11:	5e                   	pop    %esi
406d12:	5f                   	pop    %edi
406d13:	5b                   	pop    %ebx
406d14:	c9                   	leave
406d15:	c3                   	ret
406d16:	8b ff                	mov    %edi,%edi
406d18:	55                   	push   %ebp
406d19:	8b ec                	mov    %esp,%ebp
406d1b:	ff 75 08             	push   0x8(%ebp)
406d1e:	68 d4 6e 41 00       	push   $0x416ed4
406d23:	e8 6b 00 00 00       	call   0x406d93
406d28:	59                   	pop    %ecx
406d29:	59                   	pop    %ecx
406d2a:	5d                   	pop    %ebp
406d2b:	c3                   	ret
406d2c:	6a 10                	push   $0x10
406d2e:	b8 50 ef 40 00       	mov    $0x40ef50,%eax
406d33:	e8 ad 7f 00 00       	call   0x40ece5
406d38:	8d 45 08             	lea    0x8(%ebp),%eax
406d3b:	89 45 e8             	mov    %eax,-0x18(%ebp)
406d3e:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
406d42:	8d 4d f3             	lea    -0xd(%ebp),%ecx
406d45:	6a 02                	push   $0x2
406d47:	58                   	pop    %eax
406d48:	89 45 ec             	mov    %eax,-0x14(%ebp)
406d4b:	89 45 e4             	mov    %eax,-0x1c(%ebp)
406d4e:	8d 45 ec             	lea    -0x14(%ebp),%eax
406d51:	50                   	push   %eax
406d52:	8d 45 e8             	lea    -0x18(%ebp),%eax
406d55:	50                   	push   %eax
406d56:	8d 45 e4             	lea    -0x1c(%ebp),%eax
406d59:	50                   	push   %eax
406d5a:	e8 25 fd ff ff       	call   0x406a84
406d5f:	e8 6d 7f 00 00       	call   0x40ecd1
406d64:	c3                   	ret
406d65:	cc                   	int3
406d66:	cc                   	int3
406d67:	cc                   	int3
406d68:	cc                   	int3
406d69:	cc                   	int3
406d6a:	8b ff                	mov    %edi,%edi
406d6c:	55                   	push   %ebp
406d6d:	8b ec                	mov    %esp,%ebp
406d6f:	8b 4d 08             	mov    0x8(%ebp),%ecx
406d72:	85 c9                	test   %ecx,%ecx
406d74:	75 05                	jne    0x406d7b
406d76:	83 c8 ff             	or     $0xffffffff,%eax
406d79:	5d                   	pop    %ebp
406d7a:	c3                   	ret
406d7b:	8b 01                	mov    (%ecx),%eax
406d7d:	3b 41 08             	cmp    0x8(%ecx),%eax
406d80:	75 0d                	jne    0x406d8f
406d82:	a1 14 60 41 00       	mov    0x416014,%eax
406d87:	89 01                	mov    %eax,(%ecx)
406d89:	89 41 04             	mov    %eax,0x4(%ecx)
406d8c:	89 41 08             	mov    %eax,0x8(%ecx)
406d8f:	33 c0                	xor    %eax,%eax
406d91:	5d                   	pop    %ebp
406d92:	c3                   	ret
406d93:	8b ff                	mov    %edi,%edi
406d95:	55                   	push   %ebp
406d96:	8b ec                	mov    %esp,%ebp
406d98:	83 ec 14             	sub    $0x14,%esp
406d9b:	8d 45 08             	lea    0x8(%ebp),%eax
406d9e:	89 45 ec             	mov    %eax,-0x14(%ebp)
406da1:	8d 4d ff             	lea    -0x1(%ebp),%ecx
406da4:	6a 02                	push   $0x2
406da6:	8d 45 0c             	lea    0xc(%ebp),%eax
406da9:	89 45 f0             	mov    %eax,-0x10(%ebp)
406dac:	58                   	pop    %eax
406dad:	89 45 f8             	mov    %eax,-0x8(%ebp)
406db0:	89 45 f4             	mov    %eax,-0xc(%ebp)
406db3:	8d 45 f8             	lea    -0x8(%ebp),%eax
406db6:	50                   	push   %eax
406db7:	8d 45 ec             	lea    -0x14(%ebp),%eax
406dba:	50                   	push   %eax
406dbb:	8d 45 f4             	lea    -0xc(%ebp),%eax
406dbe:	50                   	push   %eax
406dbf:	e8 1b fd ff ff       	call   0x406adf
406dc4:	c9                   	leave
406dc5:	c3                   	ret
406dc6:	c7 05 ec 6e 41 00 58 	movl   $0x416058,0x416eec
406dcd:	60 41 00
406dd0:	b0 01                	mov    $0x1,%al
406dd2:	c3                   	ret
406dd3:	68 d4 6e 41 00       	push   $0x416ed4
406dd8:	e8 8d ff ff ff       	call   0x406d6a
406ddd:	c7 04 24 e0 6e 41 00 	movl   $0x416ee0,(%esp)
406de4:	e8 81 ff ff ff       	call   0x406d6a
406de9:	59                   	pop    %ecx
406dea:	b0 01                	mov    $0x1,%al
406dec:	c3                   	ret
406ded:	e8 fe f6 ff ff       	call   0x4064f0
406df2:	b0 01                	mov    $0x1,%al
406df4:	c3                   	ret
406df5:	8b ff                	mov    %edi,%edi
406df7:	56                   	push   %esi
406df8:	8b 35 14 60 41 00    	mov    0x416014,%esi
406dfe:	56                   	push   %esi
406dff:	e8 55 ee ff ff       	call   0x405c59
406e04:	56                   	push   %esi
406e05:	e8 8e ef ff ff       	call   0x405d98
406e0a:	56                   	push   %esi
406e0b:	e8 b8 33 00 00       	call   0x40a1c8
406e10:	56                   	push   %esi
406e11:	e8 d1 f1 ff ff       	call   0x405fe7
406e16:	56                   	push   %esi
406e17:	e8 6e fa ff ff       	call   0x40688a
406e1c:	83 c4 14             	add    $0x14,%esp
406e1f:	b0 01                	mov    $0x1,%al
406e21:	5e                   	pop    %esi
406e22:	c3                   	ret
406e23:	6a 00                	push   $0x0
406e25:	e8 63 d1 ff ff       	call   0x403f8d
406e2a:	59                   	pop    %ecx
406e2b:	c3                   	ret
406e2c:	8b ff                	mov    %edi,%edi
406e2e:	55                   	push   %ebp
406e2f:	8b ec                	mov    %esp,%ebp
406e31:	51                   	push   %ecx
406e32:	68 4c 70 41 00       	push   $0x41704c
406e37:	8d 4d ff             	lea    -0x1(%ebp),%ecx
406e3a:	e8 54 00 00 00       	call   0x406e93
406e3f:	b0 01                	mov    $0x1,%al
406e41:	c9                   	leave
406e42:	c3                   	ret
406e43:	8b ff                	mov    %edi,%edi
406e45:	56                   	push   %esi
406e46:	ff 35 88 73 41 00    	push   0x417388
406e4c:	e8 28 0a 00 00       	call   0x407879
406e51:	ff 35 8c 73 41 00    	push   0x41738c
406e57:	33 f6                	xor    %esi,%esi
406e59:	89 35 88 73 41 00    	mov    %esi,0x417388
406e5f:	e8 15 0a 00 00       	call   0x407879
406e64:	ff 35 60 70 41 00    	push   0x417060
406e6a:	89 35 8c 73 41 00    	mov    %esi,0x41738c
406e70:	e8 04 0a 00 00       	call   0x407879
406e75:	ff 35 64 70 41 00    	push   0x417064
406e7b:	89 35 60 70 41 00    	mov    %esi,0x417060
406e81:	e8 f3 09 00 00       	call   0x407879
406e86:	83 c4 10             	add    $0x10,%esp
406e89:	89 35 64 70 41 00    	mov    %esi,0x417064
406e8f:	b0 01                	mov    $0x1,%al
406e91:	5e                   	pop    %esi
406e92:	c3                   	ret
406e93:	8b ff                	mov    %edi,%edi
406e95:	55                   	push   %ebp
406e96:	8b ec                	mov    %esp,%ebp
406e98:	56                   	push   %esi
406e99:	8b 75 08             	mov    0x8(%ebp),%esi
406e9c:	83 c9 ff             	or     $0xffffffff,%ecx
406e9f:	8b 06                	mov    (%esi),%eax
406ea1:	f0 0f c1 08          	lock xadd %ecx,(%eax)
406ea5:	75 15                	jne    0x406ebc
406ea7:	57                   	push   %edi
406ea8:	bf 28 61 41 00       	mov    $0x416128,%edi
406ead:	39 3e                	cmp    %edi,(%esi)
406eaf:	74 0a                	je     0x406ebb
406eb1:	ff 36                	push   (%esi)
406eb3:	e8 c1 09 00 00       	call   0x407879
406eb8:	59                   	pop    %ecx
406eb9:	89 3e                	mov    %edi,(%esi)
406ebb:	5f                   	pop    %edi
406ebc:	5e                   	pop    %esi
406ebd:	5d                   	pop    %ebp
406ebe:	c2 04 00             	ret    $0x4
406ec1:	68 10 fe 40 00       	push   $0x40fe10
406ec6:	68 90 fd 40 00       	push   $0x40fd90
406ecb:	e8 66 31 00 00       	call   0x40a036
406ed0:	59                   	pop    %ecx
406ed1:	59                   	pop    %ecx
406ed2:	c3                   	ret
406ed3:	8b ff                	mov    %edi,%edi
406ed5:	55                   	push   %ebp
406ed6:	8b ec                	mov    %esp,%ebp
406ed8:	80 7d 08 00          	cmpb   $0x0,0x8(%ebp)
406edc:	74 12                	je     0x406ef0
406ede:	83 3d 84 73 41 00 00 	cmpl   $0x0,0x417384
406ee5:	74 05                	je     0x406eec
406ee7:	e8 93 37 00 00       	call   0x40a67f
406eec:	b0 01                	mov    $0x1,%al
406eee:	5d                   	pop    %ebp
406eef:	c3                   	ret
406ef0:	68 10 fe 40 00       	push   $0x40fe10
406ef5:	68 90 fd 40 00       	push   $0x40fd90
406efa:	e8 9f 31 00 00       	call   0x40a09e
406eff:	59                   	pop    %ecx
406f00:	59                   	pop    %ecx
406f01:	5d                   	pop    %ebp
406f02:	c3                   	ret
406f03:	8b ff                	mov    %edi,%edi
406f05:	55                   	push   %ebp
406f06:	8b ec                	mov    %esp,%ebp
406f08:	8b 4d 10             	mov    0x10(%ebp),%ecx
406f0b:	8b 45 0c             	mov    0xc(%ebp),%eax
406f0e:	81 e1 ff ff f7 ff    	and    $0xfff7ffff,%ecx
406f14:	23 c1                	and    %ecx,%eax
406f16:	56                   	push   %esi
406f17:	8b 75 08             	mov    0x8(%ebp),%esi
406f1a:	a9 e0 fc f0 fc       	test   $0xfcf0fce0,%eax
406f1f:	74 24                	je     0x406f45
406f21:	85 f6                	test   %esi,%esi
406f23:	74 0d                	je     0x406f32
406f25:	6a 00                	push   $0x0
406f27:	6a 00                	push   $0x0
406f29:	e8 3d 39 00 00       	call   0x40a86b
406f2e:	59                   	pop    %ecx
406f2f:	59                   	pop    %ecx
406f30:	89 06                	mov    %eax,(%esi)
406f32:	e8 19 0a 00 00       	call   0x407950
406f37:	6a 16                	push   $0x16
406f39:	5e                   	pop    %esi
406f3a:	89 30                	mov    %esi,(%eax)
406f3c:	e8 db ed ff ff       	call   0x405d1c
406f41:	8b c6                	mov    %esi,%eax
406f43:	eb 1a                	jmp    0x406f5f
406f45:	51                   	push   %ecx
406f46:	ff 75 0c             	push   0xc(%ebp)
406f49:	85 f6                	test   %esi,%esi
406f4b:	74 09                	je     0x406f56
406f4d:	e8 19 39 00 00       	call   0x40a86b
406f52:	89 06                	mov    %eax,(%esi)
406f54:	eb 05                	jmp    0x406f5b
406f56:	e8 10 39 00 00       	call   0x40a86b
406f5b:	59                   	pop    %ecx
406f5c:	59                   	pop    %ecx
406f5d:	33 c0                	xor    %eax,%eax
406f5f:	5e                   	pop    %esi
406f60:	5d                   	pop    %ebp
406f61:	c3                   	ret
406f62:	6a 08                	push   $0x8
406f64:	68 f8 4a 41 00       	push   $0x414af8
406f69:	e8 a2 c4 ff ff       	call   0x403410
406f6e:	e8 2d 05 00 00       	call   0x4074a0
406f73:	8b 70 0c             	mov    0xc(%eax),%esi
406f76:	85 f6                	test   %esi,%esi
406f78:	74 1e                	je     0x406f98
406f7a:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
406f7e:	8b ce                	mov    %esi,%ecx
406f80:	ff 15 18 f1 40 00    	call   *0x40f118
406f86:	ff d6                	call   *%esi
406f88:	eb 07                	jmp    0x406f91
406f8a:	33 c0                	xor    %eax,%eax
406f8c:	40                   	inc    %eax
406f8d:	c3                   	ret
406f8e:	8b 65 e8             	mov    -0x18(%ebp),%esp
406f91:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
406f98:	e8 01 00 00 00       	call   0x406f9e
406f9d:	cc                   	int3
406f9e:	e8 fe 31 00 00       	call   0x40a1a1
406fa3:	85 c0                	test   %eax,%eax
406fa5:	74 08                	je     0x406faf
406fa7:	6a 16                	push   $0x16
406fa9:	e8 38 32 00 00       	call   0x40a1e6
406fae:	59                   	pop    %ecx
406faf:	f6 05 40 60 41 00 02 	testb  $0x2,0x416040
406fb6:	74 22                	je     0x406fda
406fb8:	6a 17                	push   $0x17
406fba:	ff 15 40 f0 40 00    	call   *0x40f040
406fc0:	85 c0                	test   %eax,%eax
406fc2:	74 05                	je     0x406fc9
406fc4:	6a 07                	push   $0x7
406fc6:	59                   	pop    %ecx
406fc7:	cd 29                	int    $0x29
406fc9:	6a 01                	push   $0x1
406fcb:	68 15 00 00 40       	push   $0x40000015
406fd0:	6a 03                	push   $0x3
406fd2:	e8 49 eb ff ff       	call   0x405b20
406fd7:	83 c4 0c             	add    $0xc,%esp
406fda:	6a 03                	push   $0x3
406fdc:	e8 d6 f8 ff ff       	call   0x4068b7
406fe1:	cc                   	int3
406fe2:	8b ff                	mov    %edi,%edi
406fe4:	55                   	push   %ebp
406fe5:	8b ec                	mov    %esp,%ebp
406fe7:	8b 55 08             	mov    0x8(%ebp),%edx
406fea:	56                   	push   %esi
406feb:	57                   	push   %edi
406fec:	85 d2                	test   %edx,%edx
406fee:	74 11                	je     0x407001
406ff0:	8b 4d 0c             	mov    0xc(%ebp),%ecx
406ff3:	85 c9                	test   %ecx,%ecx
406ff5:	74 0a                	je     0x407001
406ff7:	8b 75 10             	mov    0x10(%ebp),%esi
406ffa:	85 f6                	test   %esi,%esi
406ffc:	75 18                	jne    0x407016
406ffe:	c6 02 00             	movb   $0x0,(%edx)
407001:	e8 4a 09 00 00       	call   0x407950
407006:	6a 16                	push   $0x16
407008:	5e                   	pop    %esi
407009:	89 30                	mov    %esi,(%eax)
40700b:	e8 0c ed ff ff       	call   0x405d1c
407010:	5f                   	pop    %edi
407011:	8b c6                	mov    %esi,%eax
407013:	5e                   	pop    %esi
407014:	5d                   	pop    %ebp
407015:	c3                   	ret
407016:	8b fa                	mov    %edx,%edi
407018:	2b f2                	sub    %edx,%esi