40f371:	89 37                	mov    %esi,(%edi)
40f373:	33 f6                	xor    %esi,%esi
40f375:	46                   	inc    %esi
40f376:	eb 1f                	jmp    0x40f397
40f378:	85 c0                	test   %eax,%eax
40f37a:	75 0c                	jne    0x40f388
40f37c:	83 7d f8 04          	cmpl   $0x4,-0x8(%ebp)
40f380:	75 06                	jne    0x40f388
40f382:	83 7d fc 04          	cmpl   $0x4,-0x4(%ebp)
40f386:	74 eb                	je     0x40f373
40f388:	50                   	push   %eax
40f389:	53                   	push   %ebx
40f38a:	68 10 01 00 00       	push   $0x110
40f38f:	e8 bf f2 ff ff       	call   0x40e653
40f394:	83 c4 0c             	add    $0xc,%esp
40f397:	5f                   	pop    %edi
40f398:	8b c6                	mov    %esi,%eax
40f39a:	5e                   	pop    %esi
40f39b:	5b                   	pop    %ebx
40f39c:	c9                   	leave
40f39d:	c2 04 00             	ret    $0x4
40f3a0:	8b ff                	mov    %edi,%edi
40f3a2:	55                   	push   %ebp
40f3a3:	8b ec                	mov    %esp,%ebp
40f3a5:	83 ec 18             	sub    $0x18,%esp
40f3a8:	53                   	push   %ebx
40f3a9:	56                   	push   %esi
40f3aa:	57                   	push   %edi
40f3ab:	6a 08                	push   $0x8
40f3ad:	58                   	pop    %eax
40f3ae:	89 55 f0             	mov    %edx,-0x10(%ebp)
40f3b1:	33 ff                	xor    %edi,%edi
40f3b3:	89 4d ec             	mov    %ecx,-0x14(%ebp)
40f3b6:	89 45 f4             	mov    %eax,-0xc(%ebp)
40f3b9:	8d 58 78             	lea    0x78(%eax),%ebx
40f3bc:	c7 45 fc fe 00 00 00 	movl   $0xfe,-0x4(%ebp)
40f3c3:	6a 02                	push   $0x2
40f3c5:	33 c9                	xor    %ecx,%ecx
40f3c7:	8b c3                	mov    %ebx,%eax
40f3c9:	5a                   	pop    %edx
40f3ca:	f7 e2                	mul    %edx
40f3cc:	0f 90 c1             	seto   %cl
40f3cf:	f7 d9                	neg    %ecx
40f3d1:	0b c8                	or     %eax,%ecx
40f3d3:	51                   	push   %ecx
40f3d4:	e8 f8 be 00 00       	call   0x41b2d1
40f3d9:	8b f0                	mov    %eax,%esi
40f3db:	59                   	pop    %ecx
40f3dc:	85 f6                	test   %esi,%esi
40f3de:	74 39                	je     0x40f419
40f3e0:	8b 45 fc             	mov    -0x4(%ebp),%eax
40f3e3:	89 45 f8             	mov    %eax,-0x8(%ebp)
40f3e6:	8d 45 f8             	lea    -0x8(%ebp),%eax
40f3e9:	50                   	push   %eax
40f3ea:	56                   	push   %esi
40f3eb:	8d 45 e8             	lea    -0x18(%ebp),%eax
40f3ee:	50                   	push   %eax
40f3ef:	57                   	push   %edi
40f3f0:	ff 75 f0             	push   -0x10(%ebp)
40f3f3:	ff 75 ec             	push   -0x14(%ebp)
40f3f6:	ff 15 14 30 42 00    	call   *0x423014
40f3fc:	89 45 f4             	mov    %eax,-0xc(%ebp)
40f3ff:	2b c7                	sub    %edi,%eax
40f401:	74 0b                	je     0x40f40e
40f403:	48                   	dec    %eax
40f404:	83 e8 01             	sub    $0x1,%eax
40f407:	75 0b                	jne    0x40f414
40f409:	66 89 06             	mov    %ax,(%esi)
40f40c:	eb 56                	jmp    0x40f464
40f40e:	83 7d e8 01          	cmpl   $0x1,-0x18(%ebp)
40f412:	74 45                	je     0x40f459
40f414:	33 c0                	xor    %eax,%eax
40f416:	66 89 06             	mov    %ax,(%esi)
40f419:	8b 4d 08             	mov    0x8(%ebp),%ecx
40f41c:	56                   	push   %esi
40f41d:	ff 15 08 34 42 00    	call   *0x423408
40f423:	56                   	push   %esi
40f424:	e8 b3 be 00 00       	call   0x41b2dc
40f429:	81 45 fc 00 01 00 00 	addl   $0x100,-0x4(%ebp)
40f430:	83 eb 80             	sub    $0xffffff80,%ebx
40f433:	59                   	pop    %ecx
40f434:	81 fb 00 10 00 00    	cmp    $0x1000,%ebx
40f43a:	72 87                	jb     0x40f3c3
40f43c:	8b 45 f4             	mov    -0xc(%ebp),%eax
40f43f:	50                   	push   %eax
40f440:	ff 75 f0             	push   -0x10(%ebp)
40f443:	68 93 00 00 00       	push   $0x93
40f448:	e8 06 f2 ff ff       	call   0x40e653
40f44d:	83 c4 0c             	add    $0xc,%esp
40f450:	8b c7                	mov    %edi,%eax
40f452:	5f                   	pop    %edi
40f453:	5e                   	pop    %esi
40f454:	5b                   	pop    %ebx
40f455:	c9                   	leave
40f456:	c2 04 00             	ret    $0x4
40f459:	8b 45 f8             	mov    -0x8(%ebp),%eax
40f45c:	d1 e8                	shr    $1,%eax
40f45e:	33 c9                	xor    %ecx,%ecx
40f460:	66 89 0c 46          	mov    %cx,(%esi,%eax,2)
40f464:	8b 4d 08             	mov    0x8(%ebp),%ecx
40f467:	56                   	push   %esi
40f468:	ff 15 08 34 42 00    	call   *0x423408
40f46e:	56                   	push   %esi
40f46f:	e8 68 be 00 00       	call   0x41b2dc
40f474:	33 ff                	xor    %edi,%edi
40f476:	59                   	pop    %ecx
40f477:	47                   	inc    %edi
40f478:	eb d6                	jmp    0x40f450
40f47a:	8b ff                	mov    %edi,%edi
40f47c:	55                   	push   %ebp
40f47d:	8b ec                	mov    %esp,%ebp
40f47f:	83 e4 f8             	and    $0xfffffff8,%esp
40f482:	83 ec 2c             	sub    $0x2c,%esp
40f485:	a1 e4 05 42 00       	mov    0x4205e4,%eax
40f48a:	33 c4                	xor    %esp,%eax
40f48c:	89 44 24 28          	mov    %eax,0x28(%esp)
40f490:	53                   	push   %ebx
40f491:	56                   	push   %esi
40f492:	57                   	push   %edi
40f493:	8d 44 24 0c          	lea    0xc(%esp),%eax
40f497:	33 db                	xor    %ebx,%ebx
40f499:	50                   	push   %eax
40f49a:	6a 02                	push   $0x2
40f49c:	53                   	push   %ebx
40f49d:	be 50 5a 40 00       	mov    $0x405a50,%esi
40f4a2:	89 5c 24 18          	mov    %ebx,0x18(%esp)
40f4a6:	56                   	push   %esi
40f4a7:	68 02 00 00 80       	push   $0x80000002
40f4ac:	8b fb                	mov    %ebx,%edi
40f4ae:	ff 15 08 30 42 00    	call   *0x423008
40f4b4:	85 c0                	test   %eax,%eax
40f4b6:	74 29                	je     0x40f4e1
40f4b8:	83 f8 05             	cmp    $0x5,%eax
40f4bb:	75 10                	jne    0x40f4cd
40f4bd:	68 91 00 00 00       	push   $0x91
40f4c2:	e8 8c f1 ff ff       	call   0x40e653
40f4c7:	59                   	pop    %ecx
40f4c8:	e9 30 01 00 00       	jmp    0x40f5fd
40f4cd:	50                   	push   %eax
40f4ce:	56                   	push   %esi
40f4cf:	68 92 00 00 00       	push   $0x92
40f4d4:	e8 7a f1 ff ff       	call   0x40e653
40f4d9:	83 c4 0c             	add    $0xc,%esp
40f4dc:	e9 1c 01 00 00       	jmp    0x40f5fd
40f4e1:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
40f4e5:	ba 2c 5a 40 00       	mov    $0x405a2c,%edx
40f4ea:	e8 22 01 00 00       	call   0x40f611
40f4ef:	85 c0                	test   %eax,%eax
40f4f1:	75 0f                	jne    0x40f502
40f4f3:	ff 74 24 0c          	push   0xc(%esp)
40f4f7:	ff 15 0c 30 42 00    	call   *0x42300c
40f4fd:	e9 fb 00 00 00       	jmp    0x40f5fd
40f502:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
40f506:	ba 00 5a 40 00       	mov    $0x405a00,%edx
40f50b:	e8 01 01 00 00       	call   0x40f611
40f510:	85 c0                	test   %eax,%eax
40f512:	74 df                	je     0x40f4f3
40f514:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
40f518:	ba e4 59 40 00       	mov    $0x4059e4,%edx
40f51d:	e8 ef 00 00 00       	call   0x40f611
40f522:	85 c0                	test   %eax,%eax
40f524:	74 cd                	je     0x40f4f3
40f526:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
40f52a:	ba c4 59 40 00       	mov    $0x4059c4,%edx
40f52f:	e8 dd 00 00 00       	call   0x40f611
40f534:	85 c0                	test   %eax,%eax
40f536:	74 bb                	je     0x40f4f3
40f538:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
40f53c:	ba 9c 59 40 00       	mov    $0x40599c,%edx
40f541:	e8 cb 00 00 00       	call   0x40f611
40f546:	85 c0                	test   %eax,%eax
40f548:	74 a9                	je     0x40f4f3
40f54a:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
40f54e:	ba 54 59 40 00       	mov    $0x405954,%edx
40f553:	e8 b9 00 00 00       	call   0x40f611
40f558:	85 c0                	test   %eax,%eax
40f55a:	74 97                	je     0x40f4f3
40f55c:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
40f560:	ba 7c 59 40 00       	mov    $0x40597c,%edx
40f565:	e8 a7 00 00 00       	call   0x40f611
40f56a:	85 c0                	test   %eax,%eax
40f56c:	74 85                	je     0x40f4f3
40f56e:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
40f572:	e8 c8 1b 00 00       	call   0x41113f
40f577:	85 c0                	test   %eax,%eax
40f579:	0f 84 74 ff ff ff    	je     0x40f4f3
40f57f:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
40f583:	ba 68 58 40 00       	mov    $0x405868,%edx
40f588:	e8 84 00 00 00       	call   0x40f611
40f58d:	85 c0                	test   %eax,%eax
40f58f:	0f 84 5e ff ff ff    	je     0x40f4f3
40f595:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
40f599:	ba 34 58 40 00       	mov    $0x405834,%edx
40f59e:	e8 6e 00 00 00       	call   0x40f611
40f5a3:	ff 74 24 0c          	push   0xc(%esp)
40f5a7:	85 c0                	test   %eax,%eax
40f5a9:	0f 84 48 ff ff ff    	je     0x40f4f7
40f5af:	ff 15 0c 30 42 00    	call   *0x42300c
40f5b5:	33 ff                	xor    %edi,%edi
40f5b7:	47                   	inc    %edi
40f5b8:	8b 35 10 00 42 00    	mov    0x420010,%esi
40f5be:	85 f6                	test   %esi,%esi
40f5c0:	74 3b                	je     0x40f5fd
40f5c2:	68 00 20 00 00       	push   $0x2000
40f5c7:	53                   	push   %ebx
40f5c8:	e8 6f 73 ff ff       	call   0x40693c
40f5cd:	84 c0                	test   %al,%al
40f5cf:	74 2c                	je     0x40f5fd
40f5d1:	83 fe 05             	cmp    $0x5,%esi
40f5d4:	76 27                	jbe    0x40f5fd
40f5d6:	68 00 20 00 00       	push   $0x2000
40f5db:	53                   	push   %ebx
40f5dc:	e8 5b 73 ff ff       	call   0x40693c
40f5e1:	84 c0                	test   %al,%al
40f5e3:	74 18                	je     0x40f5fd
40f5e5:	8d 44 24 10          	lea    0x10(%esp),%eax
40f5e9:	50                   	push   %eax
40f5ea:	6a 02                	push   $0x2
40f5ec:	53                   	push   %ebx
40f5ed:	53                   	push   %ebx
40f5ee:	68 b9 64 40 00       	push   $0x4064b9
40f5f3:	68 10 00 42 00       	push   $0x420010
40f5f8:	e8 b3 72 ff ff       	call   0x4068b0
40f5fd:	8b 4c 24 34          	mov    0x34(%esp),%ecx
40f601:	8b c7                	mov    %edi,%eax
40f603:	5f                   	pop    %edi
40f604:	5e                   	pop    %esi
40f605:	5b                   	pop    %ebx
40f606:	33 cc                	xor    %esp,%ecx
40f608:	e8 13 c0 00 00       	call   0x41b620
40f60d:	8b e5                	mov    %ebp,%esp
40f60f:	5d                   	pop    %ebp
40f610:	c3                   	ret
40f611:	8b ff                	mov    %edi,%edi
40f613:	56                   	push   %esi
40f614:	57                   	push   %edi
40f615:	8b fa                	mov    %edx,%edi
40f617:	57                   	push   %edi
40f618:	51                   	push   %ecx
40f619:	ff 15 18 30 42 00    	call   *0x423018
40f61f:	85 c0                	test   %eax,%eax
40f621:	74 18                	je     0x40f63b
40f623:	83 f8 02             	cmp    $0x2,%eax
40f626:	74 13                	je     0x40f63b
40f628:	50                   	push   %eax
40f629:	57                   	push   %edi
40f62a:	68 96 00 00 00       	push   $0x96
40f62f:	33 f6                	xor    %esi,%esi
40f631:	e8 1d f0 ff ff       	call   0x40e653
40f636:	83 c4 0c             	add    $0xc,%esp
40f639:	eb 11                	jmp    0x40f64c
40f63b:	33 f6                	xor    %esi,%esi
40f63d:	33 c9                	xor    %ecx,%ecx
40f63f:	46                   	inc    %esi
40f640:	83 f8 02             	cmp    $0x2,%eax
40f643:	0f 95 c1             	setne  %cl
40f646:	09 0d f8 09 42 00    	or     %ecx,0x4209f8
40f64c:	5f                   	pop    %edi
40f64d:	8b c6                	mov    %esi,%eax
40f64f:	5e                   	pop    %esi
40f650:	c3                   	ret
40f651:	8b ff                	mov    %edi,%edi
40f653:	55                   	push   %ebp
40f654:	8b ec                	mov    %esp,%ebp
40f656:	51                   	push   %ecx
40f657:	51                   	push   %ecx
40f658:	53                   	push   %ebx
40f659:	56                   	push   %esi
40f65a:	57                   	push   %edi
40f65b:	8d 45 fc             	lea    -0x4(%ebp),%eax
40f65e:	89 55 f8             	mov    %edx,-0x8(%ebp)
40f661:	50                   	push   %eax
40f662:	33 f6                	xor    %esi,%esi
40f664:	bf 50 5a 40 00       	mov    $0x405a50,%edi
40f669:	46                   	inc    %esi
40f66a:	8b d9                	mov    %ecx,%ebx
40f66c:	56                   	push   %esi
40f66d:	6a 00                	push   $0x0
40f66f:	57                   	push   %edi
40f670:	68 02 00 00 80       	push   $0x80000002
40f675:	ff 15 08 30 42 00    	call   *0x423008
40f67b:	85 c0                	test   %eax,%eax
40f67d:	74 28                	je     0x40f6a7
40f67f:	83 f8 05             	cmp    $0x5,%eax
40f682:	75 0d                	jne    0x40f691
40f684:	68 91 00 00 00       	push   $0x91
40f689:	e8 c5 ef ff ff       	call   0x40e653
40f68e:	59                   	pop    %ecx
40f68f:	eb 0f                	jmp    0x40f6a0
40f691:	50                   	push   %eax
40f692:	57                   	push   %edi
40f693:	68 92 00 00 00       	push   $0x92
40f698:	e8 b6 ef ff ff       	call   0x40e653
40f69d:	83 c4 0c             	add    $0xc,%esp
40f6a0:	33 f6                	xor    %esi,%esi
40f6a2:	e9 9f 00 00 00       	jmp    0x40f746
40f6a7:	8b 7d 10             	mov    0x10(%ebp),%edi
40f6aa:	ba 20 59 40 00       	mov    $0x405920,%edx
40f6af:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40f6b2:	57                   	push   %edi
40f6b3:	e8 8a fc ff ff       	call   0x40f342
40f6b8:	85 c0                	test   %eax,%eax
40f6ba:	75 0b                	jne    0x40f6c7
40f6bc:	ff 75 fc             	push   -0x4(%ebp)
40f6bf:	ff 15 0c 30 42 00    	call   *0x42300c
40f6c5:	eb d9                	jmp    0x40f6a0
40f6c7:	83 3f 00             	cmpl   $0x0,(%edi)
40f6ca:	74 02                	je     0x40f6ce
40f6cc:	89 33                	mov    %esi,(%ebx)
40f6ce:	8b 7d 1c             	mov    0x1c(%ebp),%edi
40f6d1:	ba 94 58 40 00       	mov    $0x405894,%edx
40f6d6:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40f6d9:	57                   	push   %edi
40f6da:	e8 63 fc ff ff       	call   0x40f342
40f6df:	85 c0                	test   %eax,%eax
40f6e1:	74 d9                	je     0x40f6bc
40f6e3:	33 db                	xor    %ebx,%ebx
40f6e5:	39 1f                	cmp    %ebx,(%edi)
40f6e7:	74 05                	je     0x40f6ee
40f6e9:	8b 45 0c             	mov    0xc(%ebp),%eax
40f6ec:	89 30                	mov    %esi,(%eax)
40f6ee:	8b 7d 14             	mov    0x14(%ebp),%edi
40f6f1:	ba fc 58 40 00       	mov    $0x4058fc,%edx
40f6f6:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40f6f9:	57                   	push   %edi
40f6fa:	e8 a1 fc ff ff       	call   0x40f3a0
40f6ff:	85 c0                	test   %eax,%eax
40f701:	74 21                	je     0x40f724
40f703:	8b 07                	mov    (%edi),%eax
40f705:	39 58 f8             	cmp    %ebx,-0x8(%eax)
40f708:	74 05                	je     0x40f70f
40f70a:	8b 45 f8             	mov    -0x8(%ebp),%eax
40f70d:	89 30                	mov    %esi,(%eax)
40f70f:	8b 7d 18             	mov    0x18(%ebp),%edi
40f712:	ba c8 58 40 00       	mov    $0x4058c8,%edx
40f717:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40f71a:	57                   	push   %edi
40f71b:	e8 80 fc ff ff       	call   0x40f3a0
40f720:	85 c0                	test   %eax,%eax
40f722:	75 0d                	jne    0x40f731
40f724:	ff 75 fc             	push   -0x4(%ebp)
40f727:	ff 15 0c 30 42 00    	call   *0x42300c
40f72d:	8b f3                	mov    %ebx,%esi
40f72f:	eb 15                	jmp    0x40f746
40f731:	8b 07                	mov    (%edi),%eax
40f733:	39 58 f8             	cmp    %ebx,-0x8(%eax)
40f736:	74 05                	je     0x40f73d
40f738:	8b 4d 08             	mov    0x8(%ebp),%ecx
40f73b:	89 31                	mov    %esi,(%ecx)
40f73d:	ff 75 fc             	push   -0x4(%ebp)