40613c:	8b 11                	mov    (%ecx),%edx
40613e:	8d 47 40             	lea    0x40(%edi),%eax
406141:	50                   	push   %eax
406142:	ff 52 20             	call   *0x20(%edx)
406145:	83 e8 00             	sub    $0x0,%eax
406148:	74 0f                	je     0x406159
40614a:	83 e8 01             	sub    $0x1,%eax
40614d:	74 0e                	je     0x40615d
40614f:	48                   	dec    %eax
406150:	83 e8 01             	sub    $0x1,%eax
406153:	74 66                	je     0x4061bb
406155:	32 db                	xor    %bl,%bl
406157:	eb 64                	jmp    0x4061bd
406159:	c6 47 3d 00          	movb   $0x0,0x3d(%edi)
40615d:	8b 54 24 28          	mov    0x28(%esp),%edx
406161:	8d 44 24 14          	lea    0x14(%esp),%eax
406165:	8b 5c 24 14          	mov    0x14(%esp),%ebx
406169:	83 fa 10             	cmp    $0x10,%edx
40616c:	8b 74 24 10          	mov    0x10(%esp),%esi
406170:	0f 43 c3             	cmovae %ebx,%eax
406173:	2b f0                	sub    %eax,%esi
406175:	74 25                	je     0x40619c
406177:	ff 77 4c             	push   0x4c(%edi)
40617a:	83 fa 10             	cmp    $0x10,%edx
40617d:	8d 44 24 18          	lea    0x18(%esp),%eax
406181:	56                   	push   %esi
406182:	0f 43 c3             	cmovae %ebx,%eax
406185:	6a 01                	push   $0x1
406187:	50                   	push   %eax
406188:	e8 66 a2 01 00       	call   0x4203f3
40618d:	83 c4 10             	add    $0x10,%esp
406190:	3b f0                	cmp    %eax,%esi
406192:	75 c1                	jne    0x406155
406194:	8b 54 24 28          	mov    0x28(%esp),%edx
406198:	8b 5c 24 14          	mov    0x14(%esp),%ebx
40619c:	80 7f 3d 00          	cmpb   $0x0,0x3d(%edi)
4061a0:	74 19                	je     0x4061bb
4061a2:	85 f6                	test   %esi,%esi
4061a4:	0f 85 71 ff ff ff    	jne    0x40611b
4061aa:	56                   	push   %esi
4061ab:	6a 08                	push   $0x8
4061ad:	8d 4c 24 1c          	lea    0x1c(%esp),%ecx
4061b1:	e8 00 fe ff ff       	call   0x405fb6
4061b6:	e9 58 ff ff ff       	jmp    0x406113
4061bb:	b3 01                	mov    $0x1,%bl
4061bd:	6a 00                	push   $0x0
4061bf:	6a 01                	push   $0x1
4061c1:	8d 4c 24 1c          	lea    0x1c(%esp),%ecx
4061c5:	e8 35 fc ff ff       	call   0x405dff
4061ca:	8a c3                	mov    %bl,%al
4061cc:	eb 02                	jmp    0x4061d0
4061ce:	b0 01                	mov    $0x1,%al
4061d0:	8b 4c 24 2c          	mov    0x2c(%esp),%ecx
4061d4:	5f                   	pop    %edi
4061d5:	5e                   	pop    %esi
4061d6:	5b                   	pop    %ebx
4061d7:	33 cc                	xor    %esp,%ecx
4061d9:	e8 c9 3a 00 00       	call   0x409ca7
4061de:	8b e5                	mov    %ebp,%esp
4061e0:	5d                   	pop    %ebp
4061e1:	c3                   	ret
4061e2:	55                   	push   %ebp
4061e3:	8b ec                	mov    %esp,%ebp
4061e5:	51                   	push   %ecx
4061e6:	83 7d 0c 01          	cmpl   $0x1,0xc(%ebp)
4061ea:	53                   	push   %ebx
4061eb:	56                   	push   %esi
4061ec:	8b f1                	mov    %ecx,%esi
4061ee:	0f 94 c0             	sete   %al
4061f1:	33 db                	xor    %ebx,%ebx
4061f3:	57                   	push   %edi
4061f4:	88 46 48             	mov    %al,0x48(%esi)
4061f7:	88 5e 3d             	mov    %bl,0x3d(%esi)
4061fa:	e8 31 02 00 00       	call   0x406430
4061ff:	8b 7d 08             	mov    0x8(%ebp),%edi
406202:	85 ff                	test   %edi,%edi
406204:	74 39                	je     0x40623f
406206:	8d 45 fc             	lea    -0x4(%ebp),%eax
406209:	89 5d 0c             	mov    %ebx,0xc(%ebp)
40620c:	50                   	push   %eax
40620d:	8d 45 08             	lea    0x8(%ebp),%eax
406210:	89 5d 08             	mov    %ebx,0x8(%ebp)
406213:	50                   	push   %eax
406214:	8d 45 0c             	lea    0xc(%ebp),%eax
406217:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40621a:	50                   	push   %eax
40621b:	57                   	push   %edi
40621c:	e8 6a 77 01 00       	call   0x41d98b
406221:	8b 45 0c             	mov    0xc(%ebp),%eax
406224:	83 c4 10             	add    $0x10,%esp
406227:	89 46 0c             	mov    %eax,0xc(%esi)
40622a:	89 46 10             	mov    %eax,0x10(%esi)
40622d:	8b 45 08             	mov    0x8(%ebp),%eax
406230:	89 46 1c             	mov    %eax,0x1c(%esi)
406233:	89 46 20             	mov    %eax,0x20(%esi)
406236:	8b 45 fc             	mov    -0x4(%ebp),%eax
406239:	89 46 2c             	mov    %eax,0x2c(%esi)
40623c:	89 46 30             	mov    %eax,0x30(%esi)
40623f:	a1 a4 ff 43 00       	mov    0x43ffa4,%eax
406244:	8b 0d a8 ff 43 00    	mov    0x43ffa8,%ecx
40624a:	89 7e 4c             	mov    %edi,0x4c(%esi)
40624d:	5f                   	pop    %edi
40624e:	89 5e 38             	mov    %ebx,0x38(%esi)
406251:	89 46 40             	mov    %eax,0x40(%esi)
406254:	89 4e 44             	mov    %ecx,0x44(%esi)
406257:	5e                   	pop    %esi
406258:	5b                   	pop    %ebx
406259:	c9                   	leave
40625a:	c2 08 00             	ret    $0x8
40625d:	53                   	push   %ebx
40625e:	56                   	push   %esi
40625f:	8b f1                	mov    %ecx,%esi
406261:	33 db                	xor    %ebx,%ebx
406263:	57                   	push   %edi
406264:	39 5e 4c             	cmp    %ebx,0x4c(%esi)
406267:	75 04                	jne    0x40626d
406269:	8b fb                	mov    %ebx,%edi
40626b:	eb 1c                	jmp    0x406289
40626d:	e8 54 fe ff ff       	call   0x4060c6
406272:	ff 76 4c             	push   0x4c(%esi)
406275:	33 ff                	xor    %edi,%edi
406277:	84 c0                	test   %al,%al
406279:	0f 45 fe             	cmovne %esi,%edi
40627c:	e8 12 d4 00 00       	call   0x413693
406281:	59                   	pop    %ecx
406282:	33 c9                	xor    %ecx,%ecx
406284:	85 c0                	test   %eax,%eax
406286:	0f 45 f9             	cmovne %ecx,%edi
406289:	8b ce                	mov    %esi,%ecx
40628b:	88 5e 48             	mov    %bl,0x48(%esi)
40628e:	88 5e 3d             	mov    %bl,0x3d(%esi)
406291:	e8 9a 01 00 00       	call   0x406430
406296:	8b 0d a4 ff 43 00    	mov    0x43ffa4,%ecx
40629c:	8b c7                	mov    %edi,%eax
40629e:	8b 15 a8 ff 43 00    	mov    0x43ffa8,%edx
4062a4:	5f                   	pop    %edi
4062a5:	89 5e 4c             	mov    %ebx,0x4c(%esi)
4062a8:	89 5e 38             	mov    %ebx,0x38(%esi)
4062ab:	89 4e 40             	mov    %ecx,0x40(%esi)
4062ae:	89 56 44             	mov    %edx,0x44(%esi)
4062b1:	5e                   	pop    %esi
4062b2:	5b                   	pop    %ebx
4062b3:	c3                   	ret
4062b4:	51                   	push   %ecx
4062b5:	83 7c 24 08 00       	cmpl   $0x0,0x8(%esp)
4062ba:	74 1b                	je     0x4062d7
4062bc:	8b 51 0c             	mov    0xc(%ecx),%edx
4062bf:	0b 54 24 08          	or     0x8(%esp),%edx
4062c3:	8b c2                	mov    %edx,%eax
4062c5:	83 c8 04             	or     $0x4,%eax
4062c8:	83 79 38 00          	cmpl   $0x0,0x38(%ecx)
4062cc:	6a 00                	push   $0x0
4062ce:	0f 44 d0             	cmove  %eax,%edx
4062d1:	52                   	push   %edx
4062d2:	e8 73 de ff ff       	call   0x40414a
4062d7:	59                   	pop    %ecx
4062d8:	c2 08 00             	ret    $0x8
4062db:	a1 b0 84 43 00       	mov    0x4384b0,%eax
4062e0:	8b 15 b4 84 43 00    	mov    0x4384b4,%edx
4062e6:	89 01                	mov    %eax,(%ecx)
4062e8:	33 c0                	xor    %eax,%eax
4062ea:	89 41 08             	mov    %eax,0x8(%ecx)
4062ed:	89 41 0c             	mov    %eax,0xc(%ecx)
4062f0:	89 51 04             	mov    %edx,0x4(%ecx)
4062f3:	89 41 10             	mov    %eax,0x10(%ecx)
4062f6:	89 41 14             	mov    %eax,0x14(%ecx)
4062f9:	8b c1                	mov    %ecx,%eax
4062fb:	c2 08 00             	ret    $0x8
4062fe:	f6 44 24 04 01       	testb  $0x1,0x4(%esp)
406303:	56                   	push   %esi
406304:	8b f1                	mov    %ecx,%esi
406306:	c7 06 8c 84 43 00    	movl   $0x43848c,(%esi)
40630c:	74 0a                	je     0x406318
40630e:	6a 08                	push   $0x8
406310:	56                   	push   %esi
406311:	e8 da 06 00 00       	call   0x4069f0
406316:	59                   	pop    %ecx
406317:	59                   	pop    %ecx
406318:	8b c6                	mov    %esi,%eax
40631a:	5e                   	pop    %esi
40631b:	c2 04 00             	ret    $0x4
40631e:	51                   	push   %ecx
40631f:	53                   	push   %ebx
406320:	55                   	push   %ebp
406321:	56                   	push   %esi
406322:	57                   	push   %edi
406323:	8b 7c 24 18          	mov    0x18(%esp),%edi
406327:	8b f1                	mov    %ecx,%esi
406329:	83 cf 0f             	or     $0xf,%edi
40632c:	8d 5e 14             	lea    0x14(%esi),%ebx
40632f:	83 ff fe             	cmp    $0xfffffffe,%edi
406332:	76 06                	jbe    0x40633a
406334:	8b 7c 24 18          	mov    0x18(%esp),%edi
406338:	eb 35                	jmp    0x40636f
40633a:	8b 03                	mov    (%ebx),%eax
40633c:	33 d2                	xor    %edx,%edx
40633e:	8b c8                	mov    %eax,%ecx
406340:	89 44 24 10          	mov    %eax,0x10(%esp)
406344:	8b c7                	mov    %edi,%eax
406346:	c7 44 24 18 03 00 00 	movl   $0x3,0x18(%esp)
40634d:	00
40634e:	f7 74 24 18          	divl   0x18(%esp)
406352:	d1 e9                	shr    $1,%ecx
406354:	8b eb                	mov    %ebx,%ebp
406356:	3b c8                	cmp    %eax,%ecx
406358:	76 15                	jbe    0x40636f
40635a:	8b 54 24 10          	mov    0x10(%esp),%edx
40635e:	6a fe                	push   $0xfffffffe
406360:	58                   	pop    %eax
406361:	2b c1                	sub    %ecx,%eax
406363:	3b d0                	cmp    %eax,%edx
406365:	77 05                	ja     0x40636c
406367:	8d 3c 11             	lea    (%ecx,%edx,1),%edi
40636a:	eb 03                	jmp    0x40636f
40636c:	6a fe                	push   $0xfffffffe
40636e:	5f                   	pop    %edi
40636f:	33 d2                	xor    %edx,%edx
406371:	51                   	push   %ecx
406372:	8d 4f 01             	lea    0x1(%edi),%ecx
406375:	42                   	inc    %edx
406376:	e8 0b ae ff ff       	call   0x401186
40637b:	8b 6c 24 20          	mov    0x20(%esp),%ebp
40637f:	89 44 24 1c          	mov    %eax,0x1c(%esp)
406383:	59                   	pop    %ecx
406384:	85 ed                	test   %ebp,%ebp
406386:	74 14                	je     0x40639c
406388:	83 3b 10             	cmpl   $0x10,(%ebx)
40638b:	72 04                	jb     0x406391
40638d:	8b 16                	mov    (%esi),%edx
40638f:	eb 02                	jmp    0x406393
406391:	8b d6                	mov    %esi,%edx
406393:	55                   	push   %ebp
406394:	8b c8                	mov    %eax,%ecx
406396:	e8 1d d7 ff ff       	call   0x403ab8
40639b:	59                   	pop    %ecx
40639c:	6a 00                	push   $0x0
40639e:	6a 01                	push   $0x1
4063a0:	8b ce                	mov    %esi,%ecx
4063a2:	e8 58 fa ff ff       	call   0x405dff
4063a7:	85 f6                	test   %esi,%esi
4063a9:	74 06                	je     0x4063b1
4063ab:	8b 44 24 18          	mov    0x18(%esp),%eax
4063af:	89 06                	mov    %eax,(%esi)
4063b1:	89 3b                	mov    %edi,(%ebx)
4063b3:	89 6e 10             	mov    %ebp,0x10(%esi)
4063b6:	83 ff 10             	cmp    $0x10,%edi
4063b9:	72 02                	jb     0x4063bd
4063bb:	8b 36                	mov    (%esi),%esi
4063bd:	5f                   	pop    %edi
4063be:	c6 04 2e 00          	movb   $0x0,(%esi,%ebp,1)
4063c2:	5e                   	pop    %esi
4063c3:	5d                   	pop    %ebp
4063c4:	5b                   	pop    %ebx
4063c5:	59                   	pop    %ecx
4063c6:	c2 08 00             	ret    $0x8
4063c9:	55                   	push   %ebp
4063ca:	8b ec                	mov    %esp,%ebp
4063cc:	83 7d 0c 01          	cmpl   $0x1,0xc(%ebp)
4063d0:	8b d1                	mov    %ecx,%edx
4063d2:	75 13                	jne    0x4063e7
4063d4:	83 7a 14 10          	cmpl   $0x10,0x14(%edx)
4063d8:	72 02                	jb     0x4063dc
4063da:	8b 12                	mov    (%edx),%edx
4063dc:	8b 45 08             	mov    0x8(%ebp),%eax
4063df:	8a 4d 10             	mov    0x10(%ebp),%cl
4063e2:	88 0c 02             	mov    %cl,(%edx,%eax,1)
4063e5:	eb 1e                	jmp    0x406405
4063e7:	83 7a 14 10          	cmpl   $0x10,0x14(%edx)
4063eb:	72 02                	jb     0x4063ef
4063ed:	8b 12                	mov    (%edx),%edx
4063ef:	ff 75 0c             	push   0xc(%ebp)
4063f2:	0f be 45 10          	movsbl 0x10(%ebp),%eax
4063f6:	50                   	push   %eax
4063f7:	8b 45 08             	mov    0x8(%ebp),%eax
4063fa:	03 c2                	add    %edx,%eax
4063fc:	50                   	push   %eax
4063fd:	e8 be 4f 00 00       	call   0x40b3c0
406402:	83 c4 0c             	add    $0xc,%esp
406405:	5d                   	pop    %ebp
406406:	c2 0c 00             	ret    $0xc
406409:	8b 44 24 04          	mov    0x4(%esp),%eax
40640d:	39 41 10             	cmp    %eax,0x10(%ecx)
406410:	72 18                	jb     0x40642a
406412:	83 79 14 10          	cmpl   $0x10,0x14(%ecx)
406416:	89 41 10             	mov    %eax,0x10(%ecx)
406419:	72 04                	jb     0x40641f
40641b:	8b 11                	mov    (%ecx),%edx
40641d:	eb 02                	jmp    0x406421
40641f:	8b d1                	mov    %ecx,%edx
406421:	c6 04 02 00          	movb   $0x0,(%edx,%eax,1)
406425:	8b c1                	mov    %ecx,%eax
406427:	c2 04 00             	ret    $0x4
40642a:	e8 a4 bd ff ff       	call   0x4021d3
40642f:	cc                   	int3
406430:	53                   	push   %ebx
406431:	55                   	push   %ebp
406432:	56                   	push   %esi
406433:	57                   	push   %edi
406434:	8b f9                	mov    %ecx,%edi
406436:	8d 6f 04             	lea    0x4(%edi),%ebp
406439:	89 6f 0c             	mov    %ebp,0xc(%edi)
40643c:	8d 77 08             	lea    0x8(%edi),%esi
40643f:	89 77 10             	mov    %esi,0x10(%edi)
406442:	8d 5f 14             	lea    0x14(%edi),%ebx
406445:	89 5f 1c             	mov    %ebx,0x1c(%edi)
406448:	8d 57 18             	lea    0x18(%edi),%edx
40644b:	89 57 20             	mov    %edx,0x20(%edi)
40644e:	8d 4f 24             	lea    0x24(%edi),%ecx
406451:	89 4f 2c             	mov    %ecx,0x2c(%edi)
406454:	8d 47 28             	lea    0x28(%edi),%eax
406457:	89 47 30             	mov    %eax,0x30(%edi)
40645a:	33 ff                	xor    %edi,%edi
40645c:	89 3e                	mov    %edi,(%esi)
40645e:	89 3a                	mov    %edi,(%edx)
406460:	89 38                	mov    %edi,(%eax)
406462:	89 7d 00             	mov    %edi,0x0(%ebp)
406465:	89 3b                	mov    %edi,(%ebx)
406467:	89 39                	mov    %edi,(%ecx)
406469:	5f                   	pop    %edi
40646a:	5e                   	pop    %esi
40646b:	5d                   	pop    %ebp
40646c:	5b                   	pop    %ebx
40646d:	c3                   	ret
40646e:	55                   	push   %ebp
40646f:	8b ec                	mov    %esp,%ebp
406471:	83 ec 0c             	sub    $0xc,%esp
406474:	53                   	push   %ebx
406475:	33 db                	xor    %ebx,%ebx
406477:	56                   	push   %esi
406478:	57                   	push   %edi
406479:	8b f9                	mov    %ecx,%edi
40647b:	53                   	push   %ebx
40647c:	53                   	push   %ebx
40647d:	89 5f 30             	mov    %ebx,0x30(%edi)
406480:	89 5f 08             	mov    %ebx,0x8(%edi)
406483:	89 5f 10             	mov    %ebx,0x10(%edi)
406486:	c7 47 14 01 02 00 00 	movl   $0x201,0x14(%edi)
40648d:	c7 47 18 06 00 00 00 	movl   $0x6,0x18(%edi)
406494:	89 5f 1c             	mov    %ebx,0x1c(%edi)
406497:	89 5f 20             	mov    %ebx,0x20(%edi)
40649a:	89 5f 24             	mov    %ebx,0x24(%edi)
40649d:	89 5f 28             	mov    %ebx,0x28(%edi)
4064a0:	89 5f 2c             	mov    %ebx,0x2c(%edi)
4064a3:	e8 a2 dc ff ff       	call   0x40414a
4064a8:	6a 08                	push   $0x8
4064aa:	e8 11 05 00 00       	call   0x4069c0
4064af:	8b f0                	mov    %eax,%esi
4064b1:	59                   	pop    %ecx
4064b2:	85 f6                	test   %esi,%esi
4064b4:	74 0d                	je     0x4064c3