40f377:	66 c7 00 0c 20       	movw   $0x200c,(%eax)
40f37c:	8b 85 fc fc ff ff    	mov    -0x304(%ebp),%eax
40f382:	89 70 08             	mov    %esi,0x8(%eax)
40f385:	8b 9d f0 fc ff ff    	mov    -0x310(%ebp),%ebx
40f38b:	4b                   	dec    %ebx
40f38c:	85 db                	test   %ebx,%ebx
40f38e:	7c 1a                	jl     0x40f3aa
40f390:	43                   	inc    %ebx
40f391:	8d 85 04 fd ff ff    	lea    -0x2fc(%ebp),%eax
40f397:	8d 95 00 ff ff ff    	lea    -0x100(%ebp),%edx
40f39d:	8b 08                	mov    (%eax),%ecx
40f39f:	89 0a                	mov    %ecx,(%edx)
40f3a1:	83 c2 04             	add    $0x4,%edx
40f3a4:	83 c0 08             	add    $0x8,%eax
40f3a7:	4b                   	dec    %ebx
40f3a8:	75 f3                	jne    0x40f39d
40f3aa:	55                   	push   %ebp
40f3ab:	8b 9d f0 fc ff ff    	mov    -0x310(%ebp),%ebx
40f3b1:	4b                   	dec    %ebx
40f3b2:	8b c3                	mov    %ebx,%eax
40f3b4:	e8 23 fe ff ff       	call   0x40f1dc
40f3b9:	59                   	pop    %ecx
40f3ba:	84 c0                	test   %al,%al
40f3bc:	74 4c                	je     0x40f40a
40f3be:	8d 85 e8 fc ff ff    	lea    -0x318(%ebp),%eax
40f3c4:	50                   	push   %eax
40f3c5:	8d 85 00 ff ff ff    	lea    -0x100(%ebp),%eax
40f3cb:	50                   	push   %eax
40f3cc:	8b 85 ec fc ff ff    	mov    -0x314(%ebp),%eax
40f3d2:	50                   	push   %eax
40f3d3:	e8 9c eb ff ff       	call   0x40df74
40f3d8:	e8 33 fa ff ff       	call   0x40ee10
40f3dd:	8d 85 e4 fc ff ff    	lea    -0x31c(%ebp),%eax
40f3e3:	50                   	push   %eax
40f3e4:	8d 85 00 ff ff ff    	lea    -0x100(%ebp),%eax
40f3ea:	50                   	push   %eax
40f3eb:	56                   	push   %esi
40f3ec:	e8 83 eb ff ff       	call   0x40df74
40f3f1:	e8 1a fa ff ff       	call   0x40ee10
40f3f6:	8b 85 e8 fc ff ff    	mov    -0x318(%ebp),%eax
40f3fc:	8b d0                	mov    %eax,%edx
40f3fe:	8b 85 e4 fc ff ff    	mov    -0x31c(%ebp),%eax
40f404:	ff 95 f8 fc ff ff    	call   *-0x308(%ebp)
40f40a:	55                   	push   %ebp
40f40b:	8b c3                	mov    %ebx,%eax
40f40d:	e8 fa fd ff ff       	call   0x40f20c
40f412:	59                   	pop    %ecx
40f413:	84 c0                	test   %al,%al
40f415:	75 93                	jne    0x40f3aa
40f417:	eb 12                	jmp    0x40f42b
40f419:	53                   	push   %ebx
40f41a:	8b 85 fc fc ff ff    	mov    -0x304(%ebp),%eax
40f420:	50                   	push   %eax
40f421:	e8 e2 e6 ff ff       	call   0x40db08
40f426:	e8 e5 f9 ff ff       	call   0x40ee10
40f42b:	5f                   	pop    %edi
40f42c:	5e                   	pop    %esi
40f42d:	5b                   	pop    %ebx
40f42e:	8b e5                	mov    %ebp,%esp
40f430:	5d                   	pop    %ebp
40f431:	c3                   	ret
40f432:	8b c0                	mov    %eax,%eax
40f434:	e8 af 00 00 00       	call   0x40f4e8
40f439:	c3                   	ret
40f43a:	8b c0                	mov    %eax,%eax
40f43c:	53                   	push   %ebx
40f43d:	56                   	push   %esi
40f43e:	57                   	push   %edi
40f43f:	51                   	push   %ecx
40f440:	8b f2                	mov    %edx,%esi
40f442:	8b d8                	mov    %eax,%ebx
40f444:	66 f7 03 e8 bf       	testw  $0xbfe8,(%ebx)
40f449:	74 07                	je     0x40f452
40f44b:	8b c3                	mov    %ebx,%eax
40f44d:	e8 f2 fc ff ff       	call   0x40f144
40f452:	66 8b 3e             	mov    (%esi),%di
40f455:	66 83 ff 14          	cmp    $0x14,%di
40f459:	73 0e                	jae    0x40f469
40f45b:	56                   	push   %esi
40f45c:	53                   	push   %ebx
40f45d:	e8 a6 e6 ff ff       	call   0x40db08
40f462:	e8 a9 f9 ff ff       	call   0x40ee10
40f467:	eb 79                	jmp    0x40f4e2
40f469:	66 81 ff 00 01       	cmp    $0x100,%di
40f46e:	75 17                	jne    0x40f487
40f470:	66 c7 03 00 01       	movw   $0x100,(%ebx)
40f475:	33 c0                	xor    %eax,%eax
40f477:	89 43 08             	mov    %eax,0x8(%ebx)
40f47a:	8d 43 08             	lea    0x8(%ebx),%eax
40f47d:	8b 56 08             	mov    0x8(%esi),%edx
40f480:	e8 1f 4c ff ff       	call   0x4040a4
40f485:	eb 5b                	jmp    0x40f4e2
40f487:	66 81 ff 01 01       	cmp    $0x101,%di
40f48c:	75 13                	jne    0x40f4a1
40f48e:	66 89 3b             	mov    %di,(%ebx)
40f491:	8b 46 08             	mov    0x8(%esi),%eax
40f494:	89 43 08             	mov    %eax,0x8(%ebx)
40f497:	8b c3                	mov    %ebx,%eax
40f499:	ff 15 18 58 47 00    	call   *0x475818
40f49f:	eb 41                	jmp    0x40f4e2
40f4a1:	66 f7 c7 00 20       	test   $0x2000,%di
40f4a6:	74 10                	je     0x40f4b8
40f4a8:	b9 34 f4 40 00       	mov    $0x40f434,%ecx
40f4ad:	8b d6                	mov    %esi,%edx
40f4af:	8b c3                	mov    %ebx,%eax
40f4b1:	e8 b2 fd ff ff       	call   0x40f268
40f4b6:	eb 2a                	jmp    0x40f4e2
40f4b8:	8b d4                	mov    %esp,%edx
40f4ba:	8b c7                	mov    %edi,%eax
40f4bc:	e8 13 52 00 00       	call   0x4146d4
40f4c1:	84 c0                	test   %al,%al
40f4c3:	74 11                	je     0x40f4d6
40f4c5:	6a 00                	push   $0x0
40f4c7:	8b ce                	mov    %esi,%ecx
40f4c9:	8b d3                	mov    %ebx,%edx
40f4cb:	8b 44 24 04          	mov    0x4(%esp),%eax
40f4cf:	8b 18                	mov    (%eax),%ebx
40f4d1:	ff 53 28             	call   *0x28(%ebx)
40f4d4:	eb 0c                	jmp    0x40f4e2
40f4d6:	56                   	push   %esi
40f4d7:	53                   	push   %ebx
40f4d8:	e8 2b e6 ff ff       	call   0x40db08
40f4dd:	e8 2e f9 ff ff       	call   0x40ee10
40f4e2:	5a                   	pop    %edx
40f4e3:	5f                   	pop    %edi
40f4e4:	5e                   	pop    %esi
40f4e5:	5b                   	pop    %ebx
40f4e6:	c3                   	ret
40f4e7:	90                   	nop
40f4e8:	53                   	push   %ebx
40f4e9:	56                   	push   %esi
40f4ea:	8b da                	mov    %edx,%ebx
40f4ec:	8b f0                	mov    %eax,%esi
40f4ee:	3b f3                	cmp    %ebx,%esi
40f4f0:	74 36                	je     0x40f528
40f4f2:	66 f7 03 e8 bf       	testw  $0xbfe8,(%ebx)
40f4f7:	75 26                	jne    0x40f51f
40f4f9:	66 f7 06 e8 bf       	testw  $0xbfe8,(%esi)
40f4fe:	74 07                	je     0x40f507
40f500:	8b c6                	mov    %esi,%eax
40f502:	e8 3d fc ff ff       	call   0x40f144
40f507:	8b 03                	mov    (%ebx),%eax
40f509:	89 06                	mov    %eax,(%esi)
40f50b:	8b 43 04             	mov    0x4(%ebx),%eax
40f50e:	89 46 04             	mov    %eax,0x4(%esi)
40f511:	8b 43 08             	mov    0x8(%ebx),%eax
40f514:	89 46 08             	mov    %eax,0x8(%esi)
40f517:	8b 43 0c             	mov    0xc(%ebx),%eax
40f51a:	89 46 0c             	mov    %eax,0xc(%esi)
40f51d:	eb 09                	jmp    0x40f528
40f51f:	8b d3                	mov    %ebx,%edx
40f521:	8b c6                	mov    %esi,%eax
40f523:	e8 14 ff ff ff       	call   0x40f43c
40f528:	5e                   	pop    %esi
40f529:	5b                   	pop    %ebx
40f52a:	c3                   	ret
40f52b:	90                   	nop
40f52c:	55                   	push   %ebp
40f52d:	8b ec                	mov    %esp,%ebp
40f52f:	83 c4 f0             	add    $0xfffffff0,%esp
40f532:	53                   	push   %ebx
40f533:	56                   	push   %esi
40f534:	57                   	push   %edi
40f535:	8b f9                	mov    %ecx,%edi
40f537:	8b f2                	mov    %edx,%esi
40f539:	8b d8                	mov    %eax,%ebx
40f53b:	8d 45 f0             	lea    -0x10(%ebp),%eax
40f53e:	50                   	push   %eax
40f53f:	e8 b4 e5 ff ff       	call   0x40daf8
40f544:	33 c0                	xor    %eax,%eax
40f546:	55                   	push   %ebp
40f547:	68 88 f5 40 00       	push   $0x40f588
40f54c:	64 ff 30             	push   %fs:(%eax)
40f54f:	64 89 20             	mov    %esp,%fs:(%eax)
40f552:	8b d6                	mov    %esi,%edx
40f554:	8d 45 f0             	lea    -0x10(%ebp),%eax
40f557:	e8 8c ff ff ff       	call   0x40f4e8
40f55c:	8d 45 f0             	lea    -0x10(%ebp),%eax
40f55f:	ff 15 14 58 47 00    	call   *0x475814
40f565:	0f b7 cf             	movzwl %di,%ecx
40f568:	8d 55 f0             	lea    -0x10(%ebp),%edx
40f56b:	8b c3                	mov    %ebx,%eax
40f56d:	e8 42 02 00 00       	call   0x40f7b4
40f572:	33 c0                	xor    %eax,%eax
40f574:	5a                   	pop    %edx
40f575:	59                   	pop    %ecx
40f576:	59                   	pop    %ecx
40f577:	64 89 10             	mov    %edx,%fs:(%eax)
40f57a:	68 8f f5 40 00       	push   $0x40f58f
40f57f:	8d 45 f0             	lea    -0x10(%ebp),%eax
40f582:	e8 39 fc ff ff       	call   0x40f1c0
40f587:	c3                   	ret
40f588:	e9 c7 44 ff ff       	jmp    0x403a54
40f58d:	eb f0                	jmp    0x40f57f
40f58f:	5f                   	pop    %edi
40f590:	5e                   	pop    %esi
40f591:	5b                   	pop    %ebx
40f592:	8b e5                	mov    %ebp,%esp
40f594:	5d                   	pop    %ebp
40f595:	c3                   	ret
40f596:	8b c0                	mov    %eax,%eax
40f598:	55                   	push   %ebp
40f599:	8b ec                	mov    %esp,%ebp
40f59b:	6a 00                	push   $0x0
40f59d:	53                   	push   %ebx
40f59e:	8b d8                	mov    %eax,%ebx
40f5a0:	33 c0                	xor    %eax,%eax
40f5a2:	55                   	push   %ebp
40f5a3:	68 d6 f5 40 00       	push   $0x40f5d6
40f5a8:	64 ff 30             	push   %fs:(%eax)
40f5ab:	64 89 20             	mov    %esp,%fs:(%eax)
40f5ae:	8d 45 fc             	lea    -0x4(%ebp),%eax
40f5b1:	e8 4a 36 00 00       	call   0x412c00
40f5b6:	8b c3                	mov    %ebx,%eax
40f5b8:	8b 55 fc             	mov    -0x4(%ebp),%edx
40f5bb:	e8 f0 3f 00 00       	call   0x4135b0
40f5c0:	33 c0                	xor    %eax,%eax
40f5c2:	5a                   	pop    %edx
40f5c3:	59                   	pop    %ecx
40f5c4:	59                   	pop    %ecx
40f5c5:	64 89 10             	mov    %edx,%fs:(%eax)
40f5c8:	68 dd f5 40 00       	push   $0x40f5dd
40f5cd:	8d 45 fc             	lea    -0x4(%ebp),%eax
40f5d0:	e8 5b 51 ff ff       	call   0x404730
40f5d5:	c3                   	ret
40f5d6:	e9 79 44 ff ff       	jmp    0x403a54
40f5db:	eb f0                	jmp    0x40f5cd
40f5dd:	5b                   	pop    %ebx
40f5de:	59                   	pop    %ecx
40f5df:	5d                   	pop    %ebp
40f5e0:	c3                   	ret
40f5e1:	8d 40 00             	lea    0x0(%eax),%eax
40f5e4:	55                   	push   %ebp
40f5e5:	8b ec                	mov    %esp,%ebp
40f5e7:	6a 00                	push   $0x0
40f5e9:	53                   	push   %ebx
40f5ea:	8b d8                	mov    %eax,%ebx
40f5ec:	33 c0                	xor    %eax,%eax
40f5ee:	55                   	push   %ebp
40f5ef:	68 22 f6 40 00       	push   $0x40f622
40f5f4:	64 ff 30             	push   %fs:(%eax)
40f5f7:	64 89 20             	mov    %esp,%fs:(%eax)
40f5fa:	8d 45 fc             	lea    -0x4(%ebp),%eax
40f5fd:	e8 d6 2e 00 00       	call   0x4124d8
40f602:	8b c3                	mov    %ebx,%eax
40f604:	8b 55 fc             	mov    -0x4(%ebp),%edx
40f607:	e8 78 3f 00 00       	call   0x413584
40f60c:	33 c0                	xor    %eax,%eax
40f60e:	5a                   	pop    %edx
40f60f:	59                   	pop    %ecx
40f610:	59                   	pop    %ecx
40f611:	64 89 10             	mov    %edx,%fs:(%eax)
40f614:	68 29 f6 40 00       	push   $0x40f629
40f619:	8d 45 fc             	lea    -0x4(%ebp),%eax
40f61c:	e8 2f 4a ff ff       	call   0x404050
40f621:	c3                   	ret
40f622:	e9 2d 44 ff ff       	jmp    0x403a54
40f627:	eb f0                	jmp    0x40f619
40f629:	5b                   	pop    %ebx
40f62a:	59                   	pop    %ecx
40f62b:	5d                   	pop    %ebp
40f62c:	c3                   	ret
40f62d:	8d 40 00             	lea    0x0(%eax),%eax
40f630:	55                   	push   %ebp
40f631:	8b ec                	mov    %esp,%ebp
40f633:	6a 00                	push   $0x0
40f635:	53                   	push   %ebx
40f636:	8b d8                	mov    %eax,%ebx
40f638:	33 c0                	xor    %eax,%eax
40f63a:	55                   	push   %ebp
40f63b:	68 6e f6 40 00       	push   $0x40f66e
40f640:	64 ff 30             	push   %fs:(%eax)
40f643:	64 89 20             	mov    %esp,%fs:(%eax)
40f646:	8d 45 fc             	lea    -0x4(%ebp),%eax
40f649:	e8 56 3c 00 00       	call   0x4132a4
40f64e:	8b c3                	mov    %ebx,%eax
40f650:	8b 55 fc             	mov    -0x4(%ebp),%edx
40f653:	e8 bc 3f 00 00       	call   0x413614
40f658:	33 c0                	xor    %eax,%eax
40f65a:	5a                   	pop    %edx
40f65b:	59                   	pop    %ecx
40f65c:	59                   	pop    %ecx
40f65d:	64 89 10             	mov    %edx,%fs:(%eax)
40f660:	68 75 f6 40 00       	push   $0x40f675
40f665:	8d 45 fc             	lea    -0x4(%ebp),%eax
40f668:	e8 b3 62 ff ff       	call   0x405920
40f66d:	c3                   	ret
40f66e:	e9 e1 43 ff ff       	jmp    0x403a54
40f673:	eb f0                	jmp    0x40f665
40f675:	5b                   	pop    %ebx
40f676:	59                   	pop    %ecx
40f677:	5d                   	pop    %ebp
40f678:	c3                   	ret
40f679:	8d 40 00             	lea    0x0(%eax),%eax
40f67c:	55                   	push   %ebp
40f67d:	8b ec                	mov    %esp,%ebp
40f67f:	6a 00                	push   $0x0
40f681:	53                   	push   %ebx
40f682:	8b d8                	mov    %eax,%ebx
40f684:	33 c0                	xor    %eax,%eax
40f686:	55                   	push   %ebp
40f687:	68 ba f6 40 00       	push   $0x40f6ba
40f68c:	64 ff 30             	push   %fs:(%eax)
40f68f:	64 89 20             	mov    %esp,%fs:(%eax)
40f692:	8d 45 fc             	lea    -0x4(%ebp),%eax
40f695:	e8 3e 3b 00 00       	call   0x4131d8
40f69a:	8b c3                	mov    %ebx,%eax
40f69c:	8b 55 fc             	mov    -0x4(%ebp),%edx
40f69f:	e8 44 3f 00 00       	call   0x4135e8
40f6a4:	33 c0                	xor    %eax,%eax
40f6a6:	5a                   	pop    %edx
40f6a7:	59                   	pop    %ecx
40f6a8:	59                   	pop    %ecx
40f6a9:	64 89 10             	mov    %edx,%fs:(%eax)
40f6ac:	68 c1 f6 40 00       	push   $0x40f6c1
40f6b1:	8d 45 fc             	lea    -0x4(%ebp),%eax
40f6b4:	e8 67 62 ff ff       	call   0x405920
40f6b9:	c3                   	ret
40f6ba:	e9 95 43 ff ff       	jmp    0x403a54
40f6bf:	eb f0                	jmp    0x40f6b1
40f6c1:	5b                   	pop    %ebx
40f6c2:	59                   	pop    %ecx
40f6c3:	5d                   	pop    %ebp
40f6c4:	c3                   	ret
40f6c5:	8d 40 00             	lea    0x0(%eax),%eax
40f6c8:	53                   	push   %ebx
40f6c9:	56                   	push   %esi
40f6ca:	57                   	push   %edi
40f6cb:	8b f1                	mov    %ecx,%esi
40f6cd:	8b da                	mov    %edx,%ebx
40f6cf:	8b f8                	mov    %eax,%edi
40f6d1:	66 8b 03             	mov    (%ebx),%ax
40f6d4:	8b d0                	mov    %eax,%edx
40f6d6:	66 81 e2 ff 0f       	and    $0xfff,%dx
40f6db:	66 83 fa 14          	cmp    $0x14,%dx
40f6df:	72 2d                	jb     0x40f70e
40f6e1:	8b d3                	mov    %ebx,%edx
40f6e3:	8b c7                	mov    %edi,%eax
40f6e5:	b9 08 00 00 00       	mov    $0x8,%ecx
40f6ea:	e8 c5 00 00 00       	call   0x40f7b4
40f6ef:	56                   	push   %esi
40f6f0:	6a 00                	push   $0x0
40f6f2:	68 00 04 00 00       	push   $0x400
40f6f7:	57                   	push   %edi
40f6f8:	57                   	push   %edi
40f6f9:	a1 fc 47 47 00       	mov    0x4747fc,%eax
40f6fe:	8b 00                	mov    (%eax),%eax
40f700:	ff d0                	call   *%eax
40f702:	66 8b 13             	mov    (%ebx),%dx
40f705:	8b ce                	mov    %esi,%ecx