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
40701a:	8a 04 3e             	mov    (%esi,%edi,1),%al
40701d:	88 07                	mov    %al,(%edi)
40701f:	47                   	inc    %edi
407020:	84 c0                	test   %al,%al
407022:	74 14                	je     0x407038
407024:	83 e9 01             	sub    $0x1,%ecx
407027:	75 f1                	jne    0x40701a
407029:	85 c9                	test   %ecx,%ecx
40702b:	75 0b                	jne    0x407038
40702d:	88 0a                	mov    %cl,(%edx)
40702f:	e8 1c 09 00 00       	call   0x407950
407034:	6a 22                	push   $0x22
407036:	eb d0                	jmp    0x407008
407038:	33 f6                	xor    %esi,%esi
40703a:	eb d4                	jmp    0x407010
40703c:	8b ff                	mov    %edi,%edi
40703e:	55                   	push   %ebp
40703f:	8b ec                	mov    %esp,%ebp
407041:	5d                   	pop    %ebp
407042:	e9 1c 09 00 00       	jmp    0x407963
407047:	cc                   	int3
407048:	cc                   	int3
407049:	cc                   	int3
40704a:	cc                   	int3
40704b:	cc                   	int3
40704c:	cc                   	int3
40704d:	cc                   	int3
40704e:	cc                   	int3
40704f:	cc                   	int3
407050:	8b ff                	mov    %edi,%edi
407052:	55                   	push   %ebp
407053:	8b ec                	mov    %esp,%ebp
407055:	51                   	push   %ecx
407056:	53                   	push   %ebx
407057:	56                   	push   %esi
407058:	57                   	push   %edi
407059:	8b d9                	mov    %ecx,%ebx
40705b:	e8 a3 ea ff ff       	call   0x405b03
407060:	ff 73 04             	push   0x4(%ebx)
407063:	8d 73 0c             	lea    0xc(%ebx),%esi
407066:	89 45 fc             	mov    %eax,-0x4(%ebp)
407069:	56                   	push   %esi
40706a:	8b 50 4c             	mov    0x4c(%eax),%edx
40706d:	8d 7b 10             	lea    0x10(%ebx),%edi
407070:	89 16                	mov    %edx,(%esi)
407072:	8b 50 48             	mov    0x48(%eax),%edx
407075:	50                   	push   %eax
407076:	89 17                	mov    %edx,(%edi)
407078:	e8 ba 3b 00 00       	call   0x40ac37
40707d:	ff 73 04             	push   0x4(%ebx)
407080:	8b 75 fc             	mov    -0x4(%ebp),%esi
407083:	57                   	push   %edi
407084:	56                   	push   %esi
407085:	e8 0b 3c 00 00       	call   0x40ac95
40708a:	8b 86 50 03 00 00    	mov    0x350(%esi),%eax
407090:	83 c4 18             	add    $0x18,%esp
407093:	a8 02                	test   $0x2,%al
407095:	75 0d                	jne    0x4070a4
407097:	83 c8 02             	or     $0x2,%eax
40709a:	89 86 50 03 00 00    	mov    %eax,0x350(%esi)
4070a0:	c6 43 14 02          	movb   $0x2,0x14(%ebx)
4070a4:	5f                   	pop    %edi
4070a5:	5e                   	pop    %esi
4070a6:	5b                   	pop    %ebx
4070a7:	8b e5                	mov    %ebp,%esp
4070a9:	5d                   	pop    %ebp
4070aa:	c3                   	ret
4070ab:	cc                   	int3
4070ac:	cc                   	int3
4070ad:	cc                   	int3
4070ae:	cc                   	int3
4070af:	cc                   	int3
4070b0:	53                   	push   %ebx
4070b1:	56                   	push   %esi
4070b2:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
4070b6:	8b 54 24 10          	mov    0x10(%esp),%edx
4070ba:	8b 5c 24 14          	mov    0x14(%esp),%ebx
4070be:	f7 c3 ff ff ff ff    	test   $0xffffffff,%ebx
4070c4:	74 50                	je     0x407116
4070c6:	2b ca                	sub    %edx,%ecx
4070c8:	f7 c2 03 00 00 00    	test   $0x3,%edx
4070ce:	74 17                	je     0x4070e7
4070d0:	0f b6 04 11          	movzbl (%ecx,%edx,1),%eax
4070d4:	3a 02                	cmp    (%edx),%al
4070d6:	75 48                	jne    0x407120
4070d8:	85 c0                	test   %eax,%eax
4070da:	74 3a                	je     0x407116
4070dc:	42                   	inc    %edx
4070dd:	83 eb 01             	sub    $0x1,%ebx
4070e0:	76 34                	jbe    0x407116
4070e2:	f6 c2 03             	test   $0x3,%dl
4070e5:	75 e9                	jne    0x4070d0
4070e7:	8d 04 11             	lea    (%ecx,%edx,1),%eax
4070ea:	25 ff 0f 00 00       	and    $0xfff,%eax
4070ef:	3d fc 0f 00 00       	cmp    $0xffc,%eax
4070f4:	77 da                	ja     0x4070d0
4070f6:	8b 04 11             	mov    (%ecx,%edx,1),%eax
4070f9:	3b 02                	cmp    (%edx),%eax
4070fb:	75 d3                	jne    0x4070d0
4070fd:	83 eb 04             	sub    $0x4,%ebx
407100:	76 14                	jbe    0x407116
407102:	8d b0 ff fe fe fe    	lea    -0x1010101(%eax),%esi
407108:	83 c2 04             	add    $0x4,%edx
40710b:	f7 d0                	not    %eax
40710d:	23 c6                	and    %esi,%eax
40710f:	a9 80 80 80 80       	test   $0x80808080,%eax
407114:	74 d1                	je     0x4070e7
407116:	33 c0                	xor    %eax,%eax
407118:	5e                   	pop    %esi
407119:	5b                   	pop    %ebx
40711a:	c3                   	ret
40711b:	eb 03                	jmp    0x407120
40711d:	cc                   	int3
40711e:	cc                   	int3
40711f:	cc                   	int3
407120:	1b c0                	sbb    %eax,%eax
407122:	83 c8 01             	or     $0x1,%eax
407125:	5e                   	pop    %esi
407126:	5b                   	pop    %ebx
407127:	c3                   	ret
407128:	8b ff                	mov    %edi,%edi
40712a:	55                   	push   %ebp
40712b:	8b ec                	mov    %esp,%ebp
40712d:	8b 45 10             	mov    0x10(%ebp),%eax
407130:	85 c0                	test   %eax,%eax
407132:	75 02                	jne    0x407136
407134:	5d                   	pop    %ebp
407135:	c3                   	ret
407136:	8b 4d 0c             	mov    0xc(%ebp),%ecx
407139:	8b 55 08             	mov    0x8(%ebp),%edx
40713c:	56                   	push   %esi
40713d:	83 e8 01             	sub    $0x1,%eax
407140:	74 15                	je     0x407157
407142:	0f b7 32             	movzwl (%edx),%esi
407145:	66 85 f6             	test   %si,%si
407148:	74 0d                	je     0x407157
40714a:	66 3b 31             	cmp    (%ecx),%si
40714d:	75 08                	jne    0x407157
40714f:	83 c2 02             	add    $0x2,%edx
407152:	83 c1 02             	add    $0x2,%ecx
407155:	eb e6                	jmp    0x40713d
407157:	0f b7 02             	movzwl (%edx),%eax
40715a:	0f b7 09             	movzwl (%ecx),%ecx
40715d:	2b c1                	sub    %ecx,%eax
40715f:	5e                   	pop    %esi
407160:	5d                   	pop    %ebp
407161:	c3                   	ret
407162:	6a 08                	push   $0x8
407164:	68 18 4b 41 00       	push   $0x414b18
407169:	e8 a2 c2 ff ff       	call   0x403410
40716e:	8b 45 08             	mov    0x8(%ebp),%eax
407171:	ff 30                	push   (%eax)
407173:	e8 54 06 00 00       	call   0x4077cc
407178:	59                   	pop    %ecx
407179:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40717d:	8b 45 0c             	mov    0xc(%ebp),%eax
407180:	8b 00                	mov    (%eax),%eax
407182:	8b 00                	mov    (%eax),%eax
407184:	8b 40 48             	mov    0x48(%eax),%eax
407187:	f0 ff 00             	lock incl (%eax)
40718a:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
407191:	e8 12 00 00 00       	call   0x4071a8
407196:	8b 4d f0             	mov    -0x10(%ebp),%ecx
407199:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
4071a0:	59                   	pop    %ecx
4071a1:	5f                   	pop    %edi
4071a2:	5e                   	pop    %esi
4071a3:	5b                   	pop    %ebx
4071a4:	c9                   	leave
4071a5:	c2 0c 00             	ret    $0xc
4071a8:	8b 45 10             	mov    0x10(%ebp),%eax
4071ab:	ff 30                	push   (%eax)
4071ad:	e8 62 06 00 00       	call   0x407814
4071b2:	59                   	pop    %ecx
4071b3:	c3                   	ret