40c214:	59                   	pop    %ecx
40c215:	e8 95 e3 ff ff       	call   0x40a5af
40c21a:	8b 45 b8             	mov    -0x48(%ebp),%eax
40c21d:	85 c0                	test   %eax,%eax
40c21f:	74 22                	je     0x40c243
40c221:	6a 0a                	push   $0xa
40c223:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
40c226:	51                   	push   %ecx
40c227:	ff 30                	push   (%eax)
40c229:	ff 15 20 f1 40 00    	call   *0x40f120
40c22f:	83 c4 0c             	add    $0xc,%esp
40c232:	8d 45 e4             	lea    -0x1c(%ebp),%eax
40c235:	8d 55 cc             	lea    -0x34(%ebp),%edx
40c238:	89 45 cc             	mov    %eax,-0x34(%ebp)
40c23b:	6a 29                	push   $0x29
40c23d:	59                   	pop    %ecx
40c23e:	e8 6c e3 ff ff       	call   0x40a5af
40c243:	83 fb ff             	cmp    $0xffffffff,%ebx
40c246:	74 15                	je     0x40c25d
40c248:	f7 c3 00 01 00 00    	test   $0x100,%ebx
40c24e:	74 0d                	je     0x40c25d
40c250:	8d 55 a0             	lea    -0x60(%ebp),%edx
40c253:	b9 84 00 00 00       	mov    $0x84,%ecx
40c258:	e8 52 e3 ff ff       	call   0x40a5af
40c25d:	8b c7                	mov    %edi,%eax
40c25f:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40c262:	5f                   	pop    %edi
40c263:	5e                   	pop    %esi
40c264:	33 cd                	xor    %ebp,%ecx
40c266:	5b                   	pop    %ebx
40c267:	e8 b4 9d ff ff       	call   0x406020
40c26c:	c9                   	leave
40c26d:	c2 0c 00             	ret    $0xc
40c270:	8b ff                	mov    %edi,%edi
40c272:	55                   	push   %ebp
40c273:	8b ec                	mov    %esp,%ebp
40c275:	83 ec 5c             	sub    $0x5c,%esp
40c278:	a1 04 e0 40 00       	mov    0x40e004,%eax
40c27d:	33 c5                	xor    %ebp,%eax
40c27f:	89 45 fc             	mov    %eax,-0x4(%ebp)
40c282:	8b 45 0c             	mov    0xc(%ebp),%eax
40c285:	53                   	push   %ebx
40c286:	56                   	push   %esi
40c287:	89 45 ac             	mov    %eax,-0x54(%ebp)
40c28a:	33 f6                	xor    %esi,%esi
40c28c:	8b 45 10             	mov    0x10(%ebp),%eax
40c28f:	8b da                	mov    %edx,%ebx
40c291:	57                   	push   %edi
40c292:	89 45 a4             	mov    %eax,-0x5c(%ebp)
40c295:	8b 45 14             	mov    0x14(%ebp),%eax
40c298:	6a 2c                	push   $0x2c
40c29a:	89 45 b0             	mov    %eax,-0x50(%ebp)
40c29d:	8d 45 b4             	lea    -0x4c(%ebp),%eax
40c2a0:	56                   	push   %esi
40c2a1:	50                   	push   %eax
40c2a2:	89 4d a8             	mov    %ecx,-0x58(%ebp)
40c2a5:	e8 5f a5 ff ff       	call   0x406809
40c2aa:	8b 7d 08             	mov    0x8(%ebp),%edi
40c2ad:	83 c4 0c             	add    $0xc,%esp
40c2b0:	83 ff 01             	cmp    $0x1,%edi
40c2b3:	74 28                	je     0x40c2dd
40c2b5:	76 14                	jbe    0x40c2cb
40c2b7:	83 ff 03             	cmp    $0x3,%edi
40c2ba:	76 1d                	jbe    0x40c2d9
40c2bc:	83 ff 04             	cmp    $0x4,%edi
40c2bf:	74 11                	je     0x40c2d2
40c2c1:	83 ff 05             	cmp    $0x5,%edi
40c2c4:	76 05                	jbe    0x40c2cb
40c2c6:	83 ff 0a             	cmp    $0xa,%edi
40c2c9:	76 0e                	jbe    0x40c2d9
40c2cb:	b8 00 01 00 00       	mov    $0x100,%eax
40c2d0:	eb 0e                	jmp    0x40c2e0
40c2d2:	b8 80 00 00 00       	mov    $0x80,%eax
40c2d7:	eb 07                	jmp    0x40c2e0
40c2d9:	6a 40                	push   $0x40
40c2db:	eb 02                	jmp    0x40c2df
40c2dd:	6a 20                	push   $0x20
40c2df:	58                   	pop    %eax
40c2e0:	50                   	push   %eax
40c2e1:	53                   	push   %ebx
40c2e2:	ff 75 a8             	push   -0x58(%ebp)
40c2e5:	ff 15 3c 00 41 00    	call   *0x41003c
40c2eb:	8b 4d b0             	mov    -0x50(%ebp),%ecx
40c2ee:	89 01                	mov    %eax,(%ecx)
40c2f0:	85 c0                	test   %eax,%eax
40c2f2:	75 19                	jne    0x40c30d
40c2f4:	ff 15 40 f0 40 00    	call   *0x40f040
40c2fa:	8b d0                	mov    %eax,%edx
40c2fc:	b9 88 14 40 00       	mov    $0x401488,%ecx
40c301:	e8 7a c6 ff ff       	call   0x408980
40c306:	8b f0                	mov    %eax,%esi
40c308:	e9 89 00 00 00       	jmp    0x40c396
40c30d:	8b 45 a4             	mov    -0x5c(%ebp),%eax
40c310:	8b 4d ac             	mov    -0x54(%ebp),%ecx
40c313:	89 45 b8             	mov    %eax,-0x48(%ebp)
40c316:	e8 a6 f4 ff ff       	call   0x40b7c1
40c31b:	89 45 b4             	mov    %eax,-0x4c(%ebp)
40c31e:	39 75 ac             	cmp    %esi,-0x54(%ebp)
40c321:	74 37                	je     0x40c35a
40c323:	8d 45 b4             	lea    -0x4c(%ebp),%eax
40c326:	50                   	push   %eax
40c327:	8b 45 b0             	mov    -0x50(%ebp),%eax
40c32a:	6a 01                	push   $0x1
40c32c:	57                   	push   %edi
40c32d:	ff 30                	push   (%eax)
40c32f:	ff 15 34 00 41 00    	call   *0x410034
40c335:	85 c0                	test   %eax,%eax
40c337:	75 1a                	jne    0x40c353
40c339:	ff 15 40 f0 40 00    	call   *0x40f040
40c33f:	8b f0                	mov    %eax,%esi
40c341:	85 f6                	test   %esi,%esi
40c343:	74 0e                	je     0x40c353
40c345:	b9 60 42 40 00       	mov    $0x404260,%ecx
40c34a:	8b d6                	mov    %esi,%edx
40c34c:	e8 2f c6 ff ff       	call   0x408980
40c351:	eb 43                	jmp    0x40c396
40c353:	8d 45 bc             	lea    -0x44(%ebp),%eax
40c356:	6a 00                	push   $0x0
40c358:	eb 2c                	jmp    0x40c386
40c35a:	8d 45 e0             	lea    -0x20(%ebp),%eax
40c35d:	50                   	push   %eax
40c35e:	8b 45 b0             	mov    -0x50(%ebp),%eax
40c361:	57                   	push   %edi
40c362:	ff 30                	push   (%eax)
40c364:	ff 15 8c 00 41 00    	call   *0x41008c
40c36a:	85 c0                	test   %eax,%eax
40c36c:	75 13                	jne    0x40c381
40c36e:	ff 15 40 f0 40 00    	call   *0x40f040
40c374:	8b f0                	mov    %eax,%esi
40c376:	85 f6                	test   %esi,%esi
40c378:	74 07                	je     0x40c381
40c37a:	b9 84 42 40 00       	mov    $0x404284,%ecx
40c37f:	eb c9                	jmp    0x40c34a
40c381:	8d 45 e0             	lea    -0x20(%ebp),%eax
40c384:	6a 01                	push   $0x1
40c386:	89 45 b0             	mov    %eax,-0x50(%ebp)
40c389:	33 d2                	xor    %edx,%edx
40c38b:	8d 45 b0             	lea    -0x50(%ebp),%eax
40c38e:	8b cb                	mov    %ebx,%ecx
40c390:	50                   	push   %eax
40c391:	e8 fa 96 ff ff       	call   0x405a90
40c396:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40c399:	8b c6                	mov    %esi,%eax
40c39b:	5f                   	pop    %edi
40c39c:	5e                   	pop    %esi
40c39d:	33 cd                	xor    %ebp,%ecx
40c39f:	5b                   	pop    %ebx
40c3a0:	e8 7b 9c ff ff       	call   0x406020
40c3a5:	c9                   	leave
40c3a6:	c2 10 00             	ret    $0x10
40c3a9:	8b ff                	mov    %edi,%edi
40c3ab:	55                   	push   %ebp
40c3ac:	8b ec                	mov    %esp,%ebp
40c3ae:	83 ec 20             	sub    $0x20,%esp
40c3b1:	56                   	push   %esi
40c3b2:	57                   	push   %edi
40c3b3:	68 04 47 40 00       	push   $0x404704
40c3b8:	ff 75 08             	push   0x8(%ebp)
40c3bb:	89 55 e8             	mov    %edx,-0x18(%ebp)
40c3be:	33 ff                	xor    %edi,%edi
40c3c0:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
40c3c3:	c7 45 f0 01 00 00 c0 	movl   $0xc0000001,-0x10(%ebp)
40c3ca:	ff 15 28 f1 40 00    	call   *0x40f128
40c3d0:	59                   	pop    %ecx
40c3d1:	f7 d8                	neg    %eax
40c3d3:	59                   	pop    %ecx
40c3d4:	1b f6                	sbb    %esi,%esi
40c3d6:	8d 45 f4             	lea    -0xc(%ebp),%eax
40c3d9:	57                   	push   %edi
40c3da:	50                   	push   %eax
40c3db:	6a 01                	push   $0x1
40c3dd:	ff 75 0c             	push   0xc(%ebp)
40c3e0:	46                   	inc    %esi
40c3e1:	ff 15 14 00 41 00    	call   *0x410014
40c3e7:	85 c0                	test   %eax,%eax
40c3e9:	75 17                	jne    0x40c402
40c3eb:	ff 15 40 f0 40 00    	call   *0x40f040
40c3f1:	8b d0                	mov    %eax,%edx
40c3f3:	b9 b8 47 40 00       	mov    $0x4047b8,%ecx
40c3f8:	e8 83 c5 ff ff       	call   0x408980
40c3fd:	e9 30 01 00 00       	jmp    0x40c532
40c402:	8d 45 e0             	lea    -0x20(%ebp),%eax
40c405:	50                   	push   %eax
40c406:	8d 45 f8             	lea    -0x8(%ebp),%eax
40c409:	50                   	push   %eax
40c40a:	ff 75 f4             	push   -0xc(%ebp)
40c40d:	ff 15 c4 f0 40 00    	call   *0x40f0c4
40c413:	85 c0                	test   %eax,%eax
40c415:	75 24                	jne    0x40c43b
40c417:	ff 15 40 f0 40 00    	call   *0x40f040
40c41d:	8b d0                	mov    %eax,%edx
40c41f:	b9 20 48 40 00       	mov    $0x404820,%ecx
40c424:	e8 57 c5 ff ff       	call   0x408980
40c429:	ff 75 f4             	push   -0xc(%ebp)
40c42c:	8b f0                	mov    %eax,%esi
40c42e:	ff 15 68 f0 40 00    	call   *0x40f068
40c434:	8b c6                	mov    %esi,%eax
40c436:	e9 f7 00 00 00       	jmp    0x40c532
40c43b:	66 8b 45 f8          	mov    -0x8(%ebp),%ax
40c43f:	53                   	push   %ebx
40c440:	6a 04                	push   $0x4
40c442:	59                   	pop    %ecx
40c443:	66 23 c1             	and    %cx,%ax
40c446:	0f b7 d8             	movzwl %ax,%ebx
40c449:	f7 db                	neg    %ebx
40c44b:	0f b7 c0             	movzwl %ax,%eax
40c44e:	1b db                	sbb    %ebx,%ebx
40c450:	81 e3 00 00 04 00    	and    $0x40000,%ebx
40c456:	f7 d8                	neg    %eax
40c458:	1b c0                	sbb    %eax,%eax
40c45a:	23 c1                	and    %ecx,%eax
40c45c:	f6 45 f8 10          	testb  $0x10,-0x8(%ebp)
40c460:	89 45 ec             	mov    %eax,-0x14(%ebp)
40c463:	74 1e                	je     0x40c483
40c465:	83 c8 08             	or     $0x8,%eax
40c468:	81 cb 00 00 00 01    	or     $0x1000000,%ebx
40c46e:	89 45 ec             	mov    %eax,-0x14(%ebp)
40c471:	8d 45 ff             	lea    -0x1(%ebp),%eax
40c474:	50                   	push   %eax
40c475:	57                   	push   %edi
40c476:	6a 01                	push   $0x1
40c478:	6a 08                	push   $0x8
40c47a:	ff 15 40 f1 40 00    	call   *0x40f140
40c480:	89 45 f0             	mov    %eax,-0x10(%ebp)
40c483:	53                   	push   %ebx
40c484:	85 f6                	test   %esi,%esi
40c486:	74 0c                	je     0x40c494
40c488:	57                   	push   %edi
40c489:	ff 75 e8             	push   -0x18(%ebp)
40c48c:	ff 15 4c 00 41 00    	call   *0x41004c
40c492:	eb 0c                	jmp    0x40c4a0
40c494:	ff 75 08             	push   0x8(%ebp)
40c497:	ff 75 e4             	push   -0x1c(%ebp)
40c49a:	ff 15 3c 00 41 00    	call   *0x41003c
40c4a0:	8b d8                	mov    %eax,%ebx
40c4a2:	85 db                	test   %ebx,%ebx
40c4a4:	75 2c                	jne    0x40c4d2
40c4a6:	85 f6                	test   %esi,%esi
40c4a8:	be 68 3c 40 00       	mov    $0x403c68,%esi
40c4ad:	75 05                	jne    0x40c4b4
40c4af:	be 88 14 40 00       	mov    $0x401488,%esi
40c4b4:	ff 15 40 f0 40 00    	call   *0x40f040
40c4ba:	8b d0                	mov    %eax,%edx
40c4bc:	8b ce                	mov    %esi,%ecx
40c4be:	e8 bd c4 ff ff       	call   0x408980
40c4c3:	ff 75 f4             	push   -0xc(%ebp)
40c4c6:	8b f0                	mov    %eax,%esi
40c4c8:	ff 15 68 f0 40 00    	call   *0x40f068
40c4ce:	8b c6                	mov    %esi,%eax
40c4d0:	eb 5f                	jmp    0x40c531
40c4d2:	39 7d f0             	cmp    %edi,-0x10(%ebp)
40c4d5:	7c 0f                	jl     0x40c4e6
40c4d7:	8d 45 ff             	lea    -0x1(%ebp),%eax
40c4da:	50                   	push   %eax
40c4db:	57                   	push   %edi
40c4dc:	6a 01                	push   $0x1
40c4de:	6a 08                	push   $0x8
40c4e0:	ff 15 40 f1 40 00    	call   *0x40f140
40c4e6:	ff 75 f4             	push   -0xc(%ebp)
40c4e9:	ff 75 ec             	push   -0x14(%ebp)
40c4ec:	53                   	push   %ebx
40c4ed:	ff 15 58 00 41 00    	call   *0x410058
40c4f3:	85 c0                	test   %eax,%eax
40c4f5:	75 16                	jne    0x40c50d
40c4f7:	ff 15 40 f0 40 00    	call   *0x40f040
40c4fd:	8b d0                	mov    %eax,%edx
40c4ff:	b9 5c 48 40 00       	mov    $0x40485c,%ecx
40c504:	e8 77 c4 ff ff       	call   0x408980
40c509:	8b f8                	mov    %eax,%edi
40c50b:	eb 12                	jmp    0x40c51f
40c50d:	6a 64                	push   $0x64
40c50f:	8d 55 e4             	lea    -0x1c(%ebp),%edx
40c512:	c7 45 e4 5c 48 40 00 	movl   $0x40485c,-0x1c(%ebp)
40c519:	59                   	pop    %ecx
40c51a:	e8 90 e0 ff ff       	call   0x40a5af
40c51f:	53                   	push   %ebx
40c520:	ff 15 48 00 41 00    	call   *0x410048
40c526:	ff 75 f4             	push   -0xc(%ebp)
40c529:	ff 15 68 f0 40 00    	call   *0x40f068
40c52f:	8b c7                	mov    %edi,%eax
40c531:	5b                   	pop    %ebx
40c532:	5f                   	pop    %edi
40c533:	5e                   	pop    %esi
40c534:	c9                   	leave
40c535:	c2 08 00             	ret    $0x8
40c538:	8b ff                	mov    %edi,%edi
40c53a:	55                   	push   %ebp
40c53b:	8b ec                	mov    %esp,%ebp
40c53d:	81 ec 28 04 00 00    	sub    $0x428,%esp
40c543:	a1 04 e0 40 00       	mov    0x40e004,%eax
40c548:	33 c5                	xor    %ebp,%eax
40c54a:	89 45 fc             	mov    %eax,-0x4(%ebp)
40c54d:	53                   	push   %ebx
40c54e:	56                   	push   %esi
40c54f:	57                   	push   %edi
40c550:	89 8d f8 fb ff ff    	mov    %ecx,-0x408(%ebp)
40c556:	8d b5 fc fb ff ff    	lea    -0x404(%ebp),%esi
40c55c:	8b 4d 08             	mov    0x8(%ebp),%ecx
40c55f:	33 c0                	xor    %eax,%eax
40c561:	68 04 47 40 00       	push   $0x404704
40c566:	51                   	push   %ecx
40c567:	89 95 e4 fb ff ff    	mov    %edx,-0x41c(%ebp)
40c56d:	bf 00 00 02 00       	mov    $0x20000,%edi
40c572:	89 8d e0 fb ff ff    	mov    %ecx,-0x420(%ebp)
40c578:	89 85 e8 fb ff ff    	mov    %eax,-0x418(%ebp)
40c57e:	88 85 f4 fb ff ff    	mov    %al,-0x40c(%ebp)
40c584:	ff 15 28 f1 40 00    	call   *0x40f128
40c58a:	59                   	pop    %ecx
40c58b:	f7 d8                	neg    %eax
40c58d:	59                   	pop    %ecx
40c58e:	1b db                	sbb    %ebx,%ebx
40c590:	8d 85 f4 fb ff ff    	lea    -0x40c(%ebp),%eax
40c596:	50                   	push   %eax
40c597:	6a 00                	push   $0x0
40c599:	6a 01                	push   $0x1
40c59b:	43                   	inc    %ebx
40c59c:	6a 08                	push   $0x8
40c59e:	89 9d ec fb ff ff    	mov    %ebx,-0x414(%ebp)
40c5a4:	ff 15 40 f1 40 00    	call   *0x40f140
40c5aa:	89 85 d8 fb ff ff    	mov    %eax,-0x428(%ebp)
40c5b0:	85 c0                	test   %eax,%eax
40c5b2:	78 05                	js     0x40c5b9
40c5b4:	bf 00 00 02 01       	mov    $0x1020000,%edi
40c5b9:	57                   	push   %edi
40c5ba:	85 db                	test   %ebx,%ebx
40c5bc:	74 10                	je     0x40c5ce
40c5be:	6a 00                	push   $0x0
40c5c0:	ff b5 e4 fb ff ff    	push   -0x41c(%ebp)
40c5c6:	ff 15 4c 00 41 00    	call   *0x41004c
40c5cc:	eb 12                	jmp    0x40c5e0
40c5ce:	ff b5 e0 fb ff ff    	push   -0x420(%ebp)
40c5d4:	ff b5 f8 fb ff ff    	push   -0x408(%ebp)
40c5da:	ff 15 3c 00 41 00    	call   *0x41003c
40c5e0:	8b d8                	mov    %eax,%ebx
40c5e2:	85 db                	test   %ebx,%ebx
40c5e4:	75 0c                	jne    0x40c5f2
40c5e6:	ff 15 40 f0 40 00    	call   *0x40f040
40c5ec:	89 85 e8 fb ff ff    	mov    %eax,-0x418(%ebp)
40c5f2:	83 bd d8 fb ff ff 00 	cmpl   $0x0,-0x428(%ebp)
40c5f9:	7c 17                	jl     0x40c612
40c5fb:	8d 85 f4 fb ff ff    	lea    -0x40c(%ebp),%eax
40c601:	50                   	push   %eax
40c602:	6a 00                	push   $0x0
40c604:	ff b5 f4 fb ff ff    	push   -0x40c(%ebp)
40c60a:	6a 08                	push   $0x8
40c60c:	ff 15 40 f1 40 00    	call   *0x40f140
40c612:	8b 85 e8 fb ff ff    	mov    -0x418(%ebp),%eax
40c618:	83 f8 05             	cmp    $0x5,%eax
40c61b:	75 47                	jne    0x40c664
40c61d:	f7 c7 00 00 00 01    	test   $0x1000000,%edi