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
4071b4:	6a 08                	push   $0x8
4071b6:	68 58 4b 41 00       	push   $0x414b58
4071bb:	e8 50 c2 ff ff       	call   0x403410
4071c0:	8b 45 08             	mov    0x8(%ebp),%eax
4071c3:	ff 30                	push   (%eax)
4071c5:	e8 02 06 00 00       	call   0x4077cc
4071ca:	59                   	pop    %ecx
4071cb:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
4071cf:	8b 45 0c             	mov    0xc(%ebp),%eax
4071d2:	8b 00                	mov    (%eax),%eax
4071d4:	8b 00                	mov    (%eax),%eax
4071d6:	8b 48 48             	mov    0x48(%eax),%ecx
4071d9:	85 c9                	test   %ecx,%ecx
4071db:	74 18                	je     0x4071f5
4071dd:	83 c8 ff             	or     $0xffffffff,%eax
4071e0:	f0 0f c1 01          	lock xadd %eax,(%ecx)
4071e4:	75 0f                	jne    0x4071f5
4071e6:	81 f9 28 61 41 00    	cmp    $0x416128,%ecx
4071ec:	74 07                	je     0x4071f5
4071ee:	51                   	push   %ecx
4071ef:	e8 85 06 00 00       	call   0x407879
4071f4:	59                   	pop    %ecx
4071f5:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
4071fc:	e8 12 00 00 00       	call   0x407213
407201:	8b 4d f0             	mov    -0x10(%ebp),%ecx
407204:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40720b:	59                   	pop    %ecx
40720c:	5f                   	pop    %edi
40720d:	5e                   	pop    %esi
40720e:	5b                   	pop    %ebx
40720f:	c9                   	leave
407210:	c2 0c 00             	ret    $0xc
407213:	8b 45 10             	mov    0x10(%ebp),%eax
407216:	ff 30                	push   (%eax)
407218:	e8 f7 05 00 00       	call   0x407814
40721d:	59                   	pop    %ecx
40721e:	c3                   	ret
40721f:	6a 08                	push   $0x8
407221:	68 78 4b 41 00       	push   $0x414b78
407226:	e8 e5 c1 ff ff       	call   0x403410
40722b:	8b 45 08             	mov    0x8(%ebp),%eax
40722e:	ff 30                	push   (%eax)
407230:	e8 97 05 00 00       	call   0x4077cc
407235:	59                   	pop    %ecx
407236:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40723a:	6a 00                	push   $0x0
40723c:	8b 45 0c             	mov    0xc(%ebp),%eax
40723f:	8b 00                	mov    (%eax),%eax
407241:	ff 30                	push   (%eax)
407243:	e8 0d 02 00 00       	call   0x407455
407248:	59                   	pop    %ecx
407249:	59                   	pop    %ecx
40724a:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
407251:	e8 12 00 00 00       	call   0x407268
407256:	8b 4d f0             	mov    -0x10(%ebp),%ecx
407259:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
407260:	59                   	pop    %ecx
407261:	5f                   	pop    %edi
407262:	5e                   	pop    %esi
407263:	5b                   	pop    %ebx
407264:	c9                   	leave
407265:	c2 0c 00             	ret    $0xc
407268:	8b 45 10             	mov    0x10(%ebp),%eax
40726b:	ff 30                	push   (%eax)
40726d:	e8 a2 05 00 00       	call   0x407814
407272:	59                   	pop    %ecx
407273:	c3                   	ret
407274:	6a 08                	push   $0x8
407276:	68 38 4b 41 00       	push   $0x414b38
40727b:	e8 90 c1 ff ff       	call   0x403410
407280:	8b 45 08             	mov    0x8(%ebp),%eax
407283:	ff 30                	push   (%eax)
407285:	e8 42 05 00 00       	call   0x4077cc
40728a:	59                   	pop    %ecx
40728b:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40728f:	8b 4d 0c             	mov    0xc(%ebp),%ecx
407292:	8b 41 04             	mov    0x4(%ecx),%eax
407295:	8b 00                	mov    (%eax),%eax
407297:	ff 30                	push   (%eax)
407299:	8b 01                	mov    (%ecx),%eax
40729b:	ff 30                	push   (%eax)
40729d:	e8 b3 01 00 00       	call   0x407455
4072a2:	59                   	pop    %ecx
4072a3:	59                   	pop    %ecx
4072a4:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
4072ab:	e8 12 00 00 00       	call   0x4072c2
4072b0:	8b 4d f0             	mov    -0x10(%ebp),%ecx
4072b3:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
4072ba:	59                   	pop    %ecx
4072bb:	5f                   	pop    %edi
4072bc:	5e                   	pop    %esi
4072bd:	5b                   	pop    %ebx
4072be:	c9                   	leave
4072bf:	c2 0c 00             	ret    $0xc
4072c2:	8b 45 10             	mov    0x10(%ebp),%eax
4072c5:	ff 30                	push   (%eax)
4072c7:	e8 48 05 00 00       	call   0x407814
4072cc:	59                   	pop    %ecx
4072cd:	c3                   	ret
4072ce:	8b ff                	mov    %edi,%edi
4072d0:	55                   	push   %ebp
4072d1:	8b ec                	mov    %esp,%ebp
4072d3:	83 ec 14             	sub    $0x14,%esp
4072d6:	8b 45 08             	mov    0x8(%ebp),%eax
4072d9:	33 c9                	xor    %ecx,%ecx
4072db:	41                   	inc    %ecx
4072dc:	6a 43                	push   $0x43
4072de:	89 48 18             	mov    %ecx,0x18(%eax)
4072e1:	8b 45 08             	mov    0x8(%ebp),%eax
4072e4:	c7 00 c8 fc 40 00    	movl   $0x40fcc8,(%eax)
4072ea:	8b 45 08             	mov    0x8(%ebp),%eax
4072ed:	89 88 50 03 00 00    	mov    %ecx,0x350(%eax)
4072f3:	8b 45 08             	mov    0x8(%ebp),%eax
4072f6:	59                   	pop    %ecx
4072f7:	6a 05                	push   $0x5
4072f9:	c7 40 48 28 61 41 00 	movl   $0x416128,0x48(%eax)
407300:	8b 45 08             	mov    0x8(%ebp),%eax
407303:	66 89 48 6c          	mov    %cx,0x6c(%eax)
407307:	8b 45 08             	mov    0x8(%ebp),%eax
40730a:	66 89 88 72 01 00 00 	mov    %cx,0x172(%eax)
407311:	8d 4d ff             	lea    -0x1(%ebp),%ecx
407314:	8b 45 08             	mov    0x8(%ebp),%eax
407317:	83 a0 4c 03 00 00 00 	andl   $0x0,0x34c(%eax)
40731e:	8d 45 08             	lea    0x8(%ebp),%eax
407321:	89 45 f0             	mov    %eax,-0x10(%ebp)
407324:	58                   	pop    %eax
407325:	89 45 f8             	mov    %eax,-0x8(%ebp)
407328:	89 45 ec             	mov    %eax,-0x14(%ebp)
40732b:	8d 45 f8             	lea    -0x8(%ebp),%eax
40732e:	50                   	push   %eax
40732f:	8d 45 f0             	lea    -0x10(%ebp),%eax
407332:	50                   	push   %eax
407333:	8d 45 ec             	lea    -0x14(%ebp),%eax
407336:	50                   	push   %eax
407337:	e8 26 fe ff ff       	call   0x407162
40733c:	8d 45 08             	lea    0x8(%ebp),%eax
40733f:	89 45 f4             	mov    %eax,-0xc(%ebp)
407342:	8d 4d ff             	lea    -0x1(%ebp),%ecx
407345:	6a 04                	push   $0x4
407347:	8d 45 0c             	lea    0xc(%ebp),%eax
40734a:	89 45 f8             	mov    %eax,-0x8(%ebp)
40734d:	58                   	pop    %eax
40734e:	89 45 ec             	mov    %eax,-0x14(%ebp)
407351:	89 45 f0             	mov    %eax,-0x10(%ebp)
407354:	8d 45 ec             	lea    -0x14(%ebp),%eax
407357:	50                   	push   %eax
407358:	8d 45 f4             	lea    -0xc(%ebp),%eax
40735b:	50                   	push   %eax
40735c:	8d 45 f0             	lea    -0x10(%ebp),%eax
40735f:	50                   	push   %eax
407360:	e8 0f ff ff ff       	call   0x407274
407365:	c9                   	leave
407366:	c3                   	ret
407367:	8b ff                	mov    %edi,%edi
407369:	55                   	push   %ebp
40736a:	8b ec                	mov    %esp,%ebp
40736c:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
407370:	74 12                	je     0x407384
407372:	ff 75 08             	push   0x8(%ebp)
407375:	e8 0e 00 00 00       	call   0x407388
40737a:	ff 75 08             	push   0x8(%ebp)
40737d:	e8 f7 04 00 00       	call   0x407879
407382:	59                   	pop    %ecx
407383:	59                   	pop    %ecx
407384:	5d                   	pop    %ebp
407385:	c2 04 00             	ret    $0x4
407388:	8b ff                	mov    %edi,%edi
40738a:	55                   	push   %ebp
40738b:	8b ec                	mov    %esp,%ebp
40738d:	8b 45 08             	mov    0x8(%ebp),%eax
407390:	83 ec 10             	sub    $0x10,%esp
407393:	8b 08                	mov    (%eax),%ecx
407395:	81 f9 c8 fc 40 00    	cmp    $0x40fcc8,%ecx
40739b:	74 0a                	je     0x4073a7
40739d:	51                   	push   %ecx