40f31c:	0f 84 56 ff ff ff    	je     0x40f278
40f322:	68 04 ef 40 00       	push   $0x40ef04
40f327:	2b c1                	sub    %ecx,%eax
40f329:	6a 04                	push   $0x4
40f32b:	50                   	push   %eax
40f32c:	8d 04 8a             	lea    (%edx,%ecx,4),%eax
40f32f:	50                   	push   %eax
40f330:	e8 2b 5f 00 00       	call   0x415260
40f335:	83 c4 10             	add    $0x10,%esp
40f338:	e9 3b ff ff ff       	jmp    0x40f278
40f33d:	8b ff                	mov    %edi,%edi
40f33f:	56                   	push   %esi
40f340:	57                   	push   %edi
40f341:	8b f9                	mov    %ecx,%edi
40f343:	8b 37                	mov    (%edi),%esi
40f345:	eb 0b                	jmp    0x40f352
40f347:	ff 36                	push   (%esi)
40f349:	e8 d6 a4 ff ff       	call   0x409824
40f34e:	59                   	pop    %ecx
40f34f:	83 c6 04             	add    $0x4,%esi
40f352:	3b 77 04             	cmp    0x4(%edi),%esi
40f355:	75 f0                	jne    0x40f347
40f357:	ff 37                	push   (%edi)
40f359:	e8 c6 a4 ff ff       	call   0x409824
40f35e:	59                   	pop    %ecx
40f35f:	5f                   	pop    %edi
40f360:	5e                   	pop    %esi
40f361:	c3                   	ret
40f362:	8b ff                	mov    %edi,%edi
40f364:	55                   	push   %ebp
40f365:	8b ec                	mov    %esp,%ebp
40f367:	56                   	push   %esi
40f368:	57                   	push   %edi
40f369:	8b f1                	mov    %ecx,%esi
40f36b:	e8 27 00 00 00       	call   0x40f397
40f370:	8b f8                	mov    %eax,%edi
40f372:	85 ff                	test   %edi,%edi
40f374:	74 0d                	je     0x40f383
40f376:	ff 75 08             	push   0x8(%ebp)
40f379:	e8 a6 a4 ff ff       	call   0x409824
40f37e:	59                   	pop    %ecx
40f37f:	8b c7                	mov    %edi,%eax
40f381:	eb 0e                	jmp    0x40f391
40f383:	8b 4e 04             	mov    0x4(%esi),%ecx
40f386:	8b 45 08             	mov    0x8(%ebp),%eax
40f389:	89 01                	mov    %eax,(%ecx)
40f38b:	83 46 04 04          	addl   $0x4,0x4(%esi)
40f38f:	33 c0                	xor    %eax,%eax
40f391:	5f                   	pop    %edi
40f392:	5e                   	pop    %esi
40f393:	5d                   	pop    %ebp
40f394:	c2 04 00             	ret    $0x4
40f397:	8b ff                	mov    %edi,%edi
40f399:	56                   	push   %esi
40f39a:	8b f1                	mov    %ecx,%esi
40f39c:	57                   	push   %edi
40f39d:	8b 7e 08             	mov    0x8(%esi),%edi
40f3a0:	39 7e 04             	cmp    %edi,0x4(%esi)
40f3a3:	74 04                	je     0x40f3a9
40f3a5:	33 c0                	xor    %eax,%eax
40f3a7:	eb 72                	jmp    0x40f41b
40f3a9:	83 3e 00             	cmpl   $0x0,(%esi)
40f3ac:	75 2b                	jne    0x40f3d9
40f3ae:	6a 04                	push   $0x4
40f3b0:	6a 04                	push   $0x4
40f3b2:	e8 f5 a4 ff ff       	call   0x4098ac
40f3b7:	6a 00                	push   $0x0
40f3b9:	89 06                	mov    %eax,(%esi)
40f3bb:	e8 64 a4 ff ff       	call   0x409824
40f3c0:	8b 06                	mov    (%esi),%eax
40f3c2:	83 c4 0c             	add    $0xc,%esp
40f3c5:	85 c0                	test   %eax,%eax
40f3c7:	75 05                	jne    0x40f3ce
40f3c9:	6a 0c                	push   $0xc
40f3cb:	58                   	pop    %eax
40f3cc:	eb 4d                	jmp    0x40f41b
40f3ce:	89 46 04             	mov    %eax,0x4(%esi)
40f3d1:	83 c0 10             	add    $0x10,%eax
40f3d4:	89 46 08             	mov    %eax,0x8(%esi)
40f3d7:	eb cc                	jmp    0x40f3a5
40f3d9:	2b 3e                	sub    (%esi),%edi
40f3db:	c1 ff 02             	sar    $0x2,%edi
40f3de:	81 ff ff ff ff 7f    	cmp    $0x7fffffff,%edi
40f3e4:	77 e3                	ja     0x40f3c9
40f3e6:	53                   	push   %ebx
40f3e7:	6a 04                	push   $0x4
40f3e9:	8d 1c 3f             	lea    (%edi,%edi,1),%ebx
40f3ec:	53                   	push   %ebx
40f3ed:	ff 36                	push   (%esi)
40f3ef:	e8 1b a3 ff ff       	call   0x40970f
40f3f4:	83 c4 0c             	add    $0xc,%esp
40f3f7:	85 c0                	test   %eax,%eax
40f3f9:	75 05                	jne    0x40f400
40f3fb:	6a 0c                	push   $0xc
40f3fd:	5e                   	pop    %esi
40f3fe:	eb 10                	jmp    0x40f410
40f400:	89 06                	mov    %eax,(%esi)
40f402:	8d 0c b8             	lea    (%eax,%edi,4),%ecx
40f405:	8d 04 98             	lea    (%eax,%ebx,4),%eax
40f408:	89 4e 04             	mov    %ecx,0x4(%esi)
40f40b:	89 46 08             	mov    %eax,0x8(%esi)
40f40e:	33 f6                	xor    %esi,%esi
40f410:	6a 00                	push   $0x0
40f412:	e8 0d a4 ff ff       	call   0x409824
40f417:	59                   	pop    %ecx
40f418:	8b c6                	mov    %esi,%eax
40f41a:	5b                   	pop    %ebx
40f41b:	5f                   	pop    %edi
40f41c:	5e                   	pop    %esi
40f41d:	c3                   	ret
40f41e:	8b ff                	mov    %edi,%edi
40f420:	55                   	push   %ebp
40f421:	8b ec                	mov    %esp,%ebp
40f423:	5d                   	pop    %ebp
40f424:	e9 f3 fa ff ff       	jmp    0x40ef1c
40f429:	6a 08                	push   $0x8
40f42b:	68 88 1e 42 00       	push   $0x421e88
40f430:	e8 1b 47 ff ff       	call   0x403b50
40f435:	8b 45 08             	mov    0x8(%ebp),%eax
40f438:	ff 30                	push   (%eax)
40f43a:	e8 66 fa ff ff       	call   0x40eea5
40f43f:	59                   	pop    %ecx
40f440:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40f444:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40f447:	e8 48 00 00 00       	call   0x40f494
40f44c:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40f453:	e8 08 00 00 00       	call   0x40f460
40f458:	e8 39 47 ff ff       	call   0x403b96
40f45d:	c2 0c 00             	ret    $0xc
40f460:	8b 45 10             	mov    0x10(%ebp),%eax
40f463:	ff 30                	push   (%eax)
40f465:	e8 83 fa ff ff       	call   0x40eeed
40f46a:	59                   	pop    %ecx
40f46b:	c3                   	ret
40f46c:	8b ff                	mov    %edi,%edi
40f46e:	55                   	push   %ebp
40f46f:	8b ec                	mov    %esp,%ebp
40f471:	83 ec 0c             	sub    $0xc,%esp
40f474:	8b 45 08             	mov    0x8(%ebp),%eax
40f477:	8d 4d ff             	lea    -0x1(%ebp),%ecx
40f47a:	89 45 f8             	mov    %eax,-0x8(%ebp)
40f47d:	89 45 f4             	mov    %eax,-0xc(%ebp)
40f480:	8d 45 f8             	lea    -0x8(%ebp),%eax
40f483:	50                   	push   %eax
40f484:	ff 75 0c             	push   0xc(%ebp)
40f487:	8d 45 f4             	lea    -0xc(%ebp),%eax
40f48a:	50                   	push   %eax
40f48b:	e8 99 ff ff ff       	call   0x40f429
40f490:	8b e5                	mov    %ebp,%esp
40f492:	5d                   	pop    %ebp
40f493:	c3                   	ret
40f494:	8b ff                	mov    %edi,%edi
40f496:	56                   	push   %esi
40f497:	8b f1                	mov    %ecx,%esi
40f499:	6a 0c                	push   $0xc
40f49b:	8b 06                	mov    (%esi),%eax
40f49d:	8b 00                	mov    (%eax),%eax
40f49f:	8b 40 48             	mov    0x48(%eax),%eax
40f4a2:	8b 40 04             	mov    0x4(%eax),%eax
40f4a5:	a3 a8 46 42 00       	mov    %eax,0x4246a8
40f4aa:	8b 06                	mov    (%esi),%eax
40f4ac:	8b 00                	mov    (%eax),%eax
40f4ae:	8b 40 48             	mov    0x48(%eax),%eax
40f4b1:	8b 40 08             	mov    0x8(%eax),%eax
40f4b4:	a3 ac 46 42 00       	mov    %eax,0x4246ac
40f4b9:	8b 06                	mov    (%esi),%eax
40f4bb:	8b 00                	mov    (%eax),%eax
40f4bd:	8b 40 48             	mov    0x48(%eax),%eax
40f4c0:	8b 80 1c 02 00 00    	mov    0x21c(%eax),%eax
40f4c6:	a3 a4 46 42 00       	mov    %eax,0x4246a4
40f4cb:	8b 06                	mov    (%esi),%eax
40f4cd:	8b 00                	mov    (%eax),%eax
40f4cf:	8b 40 48             	mov    0x48(%eax),%eax
40f4d2:	83 c0 0c             	add    $0xc,%eax
40f4d5:	50                   	push   %eax
40f4d6:	6a 0c                	push   $0xc
40f4d8:	68 b0 46 42 00       	push   $0x4246b0
40f4dd:	e8 d2 06 00 00       	call   0x40fbb4
40f4e2:	8b 06                	mov    (%esi),%eax
40f4e4:	b9 01 01 00 00       	mov    $0x101,%ecx
40f4e9:	51                   	push   %ecx
40f4ea:	8b 00                	mov    (%eax),%eax
40f4ec:	8b 40 48             	mov    0x48(%eax),%eax
40f4ef:	83 c0 18             	add    $0x18,%eax
40f4f2:	50                   	push   %eax
40f4f3:	51                   	push   %ecx
40f4f4:	68 98 33 42 00       	push   $0x423398
40f4f9:	e8 b6 06 00 00       	call   0x40fbb4
40f4fe:	8b 06                	mov    (%esi),%eax
40f500:	b9 00 01 00 00       	mov    $0x100,%ecx
40f505:	51                   	push   %ecx
40f506:	8b 00                	mov    (%eax),%eax
40f508:	8b 40 48             	mov    0x48(%eax),%eax
40f50b:	05 19 01 00 00       	add    $0x119,%eax
40f510:	50                   	push   %eax
40f511:	51                   	push   %ecx
40f512:	68 a0 34 42 00       	push   $0x4234a0
40f517:	e8 98 06 00 00       	call   0x40fbb4
40f51c:	a1 c0 37 42 00       	mov    0x4237c0,%eax
40f521:	83 c4 30             	add    $0x30,%esp
40f524:	83 c9 ff             	or     $0xffffffff,%ecx
40f527:	f0 0f c1 08          	lock xadd %ecx,(%eax)
40f52b:	75 13                	jne    0x40f540
40f52d:	a1 c0 37 42 00       	mov    0x4237c0,%eax
40f532:	3d a0 35 42 00       	cmp    $0x4235a0,%eax
40f537:	74 07                	je     0x40f540
40f539:	50                   	push   %eax
40f53a:	e8 e5 a2 ff ff       	call   0x409824
40f53f:	59                   	pop    %ecx
40f540:	8b 06                	mov    (%esi),%eax
40f542:	8b 00                	mov    (%eax),%eax
40f544:	8b 40 48             	mov    0x48(%eax),%eax
40f547:	a3 c0 37 42 00       	mov    %eax,0x4237c0
40f54c:	8b 06                	mov    (%esi),%eax
40f54e:	8b 00                	mov    (%eax),%eax
40f550:	8b 40 48             	mov    0x48(%eax),%eax
40f553:	f0 ff 00             	lock incl (%eax)
40f556:	5e                   	pop    %esi
40f557:	c3                   	ret
40f558:	8b ff                	mov    %edi,%edi
40f55a:	55                   	push   %ebp
40f55b:	8b ec                	mov    %esp,%ebp
40f55d:	8b 45 08             	mov    0x8(%ebp),%eax
40f560:	2d a4 03 00 00       	sub    $0x3a4,%eax
40f565:	74 28                	je     0x40f58f
40f567:	83 e8 04             	sub    $0x4,%eax
40f56a:	74 1c                	je     0x40f588
40f56c:	83 e8 0d             	sub    $0xd,%eax
40f56f:	74 10                	je     0x40f581
40f571:	83 e8 01             	sub    $0x1,%eax
40f574:	74 04                	je     0x40f57a
40f576:	33 c0                	xor    %eax,%eax
40f578:	5d                   	pop    %ebp
40f579:	c3                   	ret
40f57a:	a1 a8 ca 41 00       	mov    0x41caa8,%eax
40f57f:	5d                   	pop    %ebp
40f580:	c3                   	ret
40f581:	a1 a4 ca 41 00       	mov    0x41caa4,%eax
40f586:	5d                   	pop    %ebp
40f587:	c3                   	ret
40f588:	a1 a0 ca 41 00       	mov    0x41caa0,%eax
40f58d:	5d                   	pop    %ebp
40f58e:	c3                   	ret
40f58f:	a1 9c ca 41 00       	mov    0x41ca9c,%eax
40f594:	5d                   	pop    %ebp
40f595:	c3                   	ret
40f596:	8b ff                	mov    %edi,%edi
40f598:	55                   	push   %ebp
40f599:	8b ec                	mov    %esp,%ebp
40f59b:	83 ec 10             	sub    $0x10,%esp
40f59e:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40f5a1:	6a 00                	push   $0x0
40f5a3:	e8 09 61 ff ff       	call   0x4056b1
40f5a8:	83 25 bc 46 42 00 00 	andl   $0x0,0x4246bc
40f5af:	8b 45 08             	mov    0x8(%ebp),%eax
40f5b2:	83 f8 fe             	cmp    $0xfffffffe,%eax
40f5b5:	75 12                	jne    0x40f5c9
40f5b7:	c7 05 bc 46 42 00 01 	movl   $0x1,0x4246bc
40f5be:	00 00 00
40f5c1:	ff 15 7c b1 41 00    	call   *0x41b17c
40f5c7:	eb 2c                	jmp    0x40f5f5
40f5c9:	83 f8 fd             	cmp    $0xfffffffd,%eax
40f5cc:	75 12                	jne    0x40f5e0
40f5ce:	c7 05 bc 46 42 00 01 	movl   $0x1,0x4246bc
40f5d5:	00 00 00
40f5d8:	ff 15 44 b1 41 00    	call   *0x41b144
40f5de:	eb 15                	jmp    0x40f5f5
40f5e0:	83 f8 fc             	cmp    $0xfffffffc,%eax
40f5e3:	75 10                	jne    0x40f5f5
40f5e5:	8b 45 f4             	mov    -0xc(%ebp),%eax
40f5e8:	c7 05 bc 46 42 00 01 	movl   $0x1,0x4246bc
40f5ef:	00 00 00
40f5f2:	8b 40 08             	mov    0x8(%eax),%eax
40f5f5:	80 7d fc 00          	cmpb   $0x0,-0x4(%ebp)
40f5f9:	74 0a                	je     0x40f605
40f5fb:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40f5fe:	83 a1 50 03 00 00 fd 	andl   $0xfffffffd,0x350(%ecx)
40f605:	8b e5                	mov    %ebp,%esp
40f607:	5d                   	pop    %ebp
40f608:	c3                   	ret
40f609:	8b ff                	mov    %edi,%edi
40f60b:	55                   	push   %ebp
40f60c:	8b ec                	mov    %esp,%ebp
40f60e:	53                   	push   %ebx
40f60f:	8b 5d 08             	mov    0x8(%ebp),%ebx
40f612:	56                   	push   %esi
40f613:	57                   	push   %edi
40f614:	68 01 01 00 00       	push   $0x101
40f619:	33 ff                	xor    %edi,%edi
40f61b:	8d 73 18             	lea    0x18(%ebx),%esi
40f61e:	57                   	push   %edi
40f61f:	56                   	push   %esi
40f620:	e8 3b 54 ff ff       	call   0x404a60
40f625:	89 7b 04             	mov    %edi,0x4(%ebx)
40f628:	33 c0                	xor    %eax,%eax
40f62a:	89 7b 08             	mov    %edi,0x8(%ebx)
40f62d:	83 c4 0c             	add    $0xc,%esp
40f630:	89 bb 1c 02 00 00    	mov    %edi,0x21c(%ebx)
40f636:	b9 01 01 00 00       	mov    $0x101,%ecx
40f63b:	8d 7b 0c             	lea    0xc(%ebx),%edi
40f63e:	ab                   	stos   %eax,%es:(%edi)
40f63f:	ab                   	stos   %eax,%es:(%edi)
40f640:	ab                   	stos   %eax,%es:(%edi)
40f641:	bf a0 35 42 00       	mov    $0x4235a0,%edi
40f646:	2b fb                	sub    %ebx,%edi
40f648:	8a 04 37             	mov    (%edi,%esi,1),%al
40f64b:	88 06                	mov    %al,(%esi)
40f64d:	46                   	inc    %esi
40f64e:	83 e9 01             	sub    $0x1,%ecx
40f651:	75 f5                	jne    0x40f648
40f653:	8d 8b 19 01 00 00    	lea    0x119(%ebx),%ecx
40f659:	ba 00 01 00 00       	mov    $0x100,%edx
40f65e:	8a 04 39             	mov    (%ecx,%edi,1),%al
40f661:	88 01                	mov    %al,(%ecx)
40f663:	41                   	inc    %ecx
40f664:	83 ea 01             	sub    $0x1,%edx
40f667:	75 f5                	jne    0x40f65e
40f669:	5f                   	pop    %edi
40f66a:	5e                   	pop    %esi
40f66b:	5b                   	pop    %ebx
40f66c:	5d                   	pop    %ebp
40f66d:	c3                   	ret
40f66e:	8b ff                	mov    %edi,%edi
40f670:	55                   	push   %ebp
40f671:	8b ec                	mov    %esp,%ebp
40f673:	81 ec 20 07 00 00    	sub    $0x720,%esp
40f679:	a1 0c 30 42 00       	mov    0x42300c,%eax
40f67e:	33 c5                	xor    %ebp,%eax
40f680:	89 45 fc             	mov    %eax,-0x4(%ebp)
40f683:	53                   	push   %ebx
40f684:	56                   	push   %esi
40f685:	8b 75 08             	mov    0x8(%ebp),%esi
40f688:	8d 85 e8 f8 ff ff    	lea    -0x718(%ebp),%eax
40f68e:	57                   	push   %edi
40f68f:	50                   	push   %eax
40f690:	ff 76 04             	push   0x4(%esi)
40f693:	ff 15 80 b1 41 00    	call   *0x41b180
40f699:	33 db                	xor    %ebx,%ebx
40f69b:	bf 00 01 00 00       	mov    $0x100,%edi
40f6a0:	85 c0                	test   %eax,%eax
40f6a2:	0f 84 f0 00 00 00    	je     0x40f798
40f6a8:	8b c3                	mov    %ebx,%eax
40f6aa:	88 84 05 fc fe ff ff 	mov    %al,-0x104(%ebp,%eax,1)
40f6b1:	40                   	inc    %eax
40f6b2:	3b c7                	cmp    %edi,%eax
40f6b4:	72 f4                	jb     0x40f6aa
40f6b6:	8a 85 ee f8 ff ff    	mov    -0x712(%ebp),%al
40f6bc:	8d 8d ee f8 ff ff    	lea    -0x712(%ebp),%ecx
40f6c2:	c6 85 fc fe ff ff 20 	movb   $0x20,-0x104(%ebp)
40f6c9:	eb 1f                	jmp    0x40f6ea