407304:	8a 02                	mov    (%edx),%al
407306:	0a c0                	or     %al,%al
407308:	74 09                	je     0x407313
40730a:	83 c2 01             	add    $0x1,%edx
40730d:	0f ab 04 24          	bts    %eax,(%esp)
407311:	eb f1                	jmp    0x407304
407313:	8b 75 08             	mov    0x8(%ebp),%esi
407316:	8b ff                	mov    %edi,%edi
407318:	8a 06                	mov    (%esi),%al
40731a:	0a c0                	or     %al,%al
40731c:	74 0c                	je     0x40732a
40731e:	83 c6 01             	add    $0x1,%esi
407321:	0f a3 04 24          	bt     %eax,(%esp)
407325:	73 f1                	jae    0x407318
407327:	8d 46 ff             	lea    -0x1(%esi),%eax
40732a:	83 c4 20             	add    $0x20,%esp
40732d:	5e                   	pop    %esi
40732e:	c9                   	leave
40732f:	c3                   	ret
407330:	8b ff                	mov    %edi,%edi
407332:	55                   	push   %ebp
407333:	8b ec                	mov    %esp,%ebp
407335:	83 ec 10             	sub    $0x10,%esp
407338:	ff 75 0c             	push   0xc(%ebp)
40733b:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40733e:	e8 93 b3 ff ff       	call   0x4026d6
407343:	0f b6 45 08          	movzbl 0x8(%ebp),%eax
407347:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40734a:	8b 89 c8 00 00 00    	mov    0xc8(%ecx),%ecx
407350:	0f b7 04 41          	movzwl (%ecx,%eax,2),%eax
407354:	25 00 80 00 00       	and    $0x8000,%eax
407359:	80 7d fc 00          	cmpb   $0x0,-0x4(%ebp)
40735d:	74 07                	je     0x407366
40735f:	8b 4d f8             	mov    -0x8(%ebp),%ecx
407362:	83 61 70 fd          	andl   $0xfffffffd,0x70(%ecx)
407366:	c9                   	leave
407367:	c3                   	ret
407368:	8b ff                	mov    %edi,%edi
40736a:	55                   	push   %ebp
40736b:	8b ec                	mov    %esp,%ebp
40736d:	81 ec 28 03 00 00    	sub    $0x328,%esp
407373:	a1 04 b0 40 00       	mov    0x40b004,%eax
407378:	33 c5                	xor    %ebp,%eax
40737a:	89 45 fc             	mov    %eax,-0x4(%ebp)
40737d:	f6 05 10 bb 40 00 01 	testb  $0x1,0x40bb10
407384:	56                   	push   %esi
407385:	74 08                	je     0x40738f
407387:	6a 0a                	push   $0xa
407389:	e8 b1 b9 ff ff       	call   0x402d3f
40738e:	59                   	pop    %ecx
40738f:	e8 ae dd ff ff       	call   0x405142
407394:	85 c0                	test   %eax,%eax
407396:	74 08                	je     0x4073a0
407398:	6a 16                	push   $0x16
40739a:	e8 b0 dd ff ff       	call   0x40514f
40739f:	59                   	pop    %ecx
4073a0:	f6 05 10 bb 40 00 02 	testb  $0x2,0x40bb10
4073a7:	0f 84 ca 00 00 00    	je     0x407477
4073ad:	89 85 e0 fd ff ff    	mov    %eax,-0x220(%ebp)
4073b3:	89 8d dc fd ff ff    	mov    %ecx,-0x224(%ebp)
4073b9:	89 95 d8 fd ff ff    	mov    %edx,-0x228(%ebp)
4073bf:	89 9d d4 fd ff ff    	mov    %ebx,-0x22c(%ebp)
4073c5:	89 b5 d0 fd ff ff    	mov    %esi,-0x230(%ebp)
4073cb:	89 bd cc fd ff ff    	mov    %edi,-0x234(%ebp)
4073d1:	66 8c 95 f8 fd ff ff 	data16 mov %ss,-0x208(%ebp)
4073d8:	66 8c 8d ec fd ff ff 	data16 mov %cs,-0x214(%ebp)
4073df:	66 8c 9d c8 fd ff ff 	data16 mov %ds,-0x238(%ebp)
4073e6:	66 8c 85 c4 fd ff ff 	data16 mov %es,-0x23c(%ebp)
4073ed:	66 8c a5 c0 fd ff ff 	data16 mov %fs,-0x240(%ebp)
4073f4:	66 8c ad bc fd ff ff 	data16 mov %gs,-0x244(%ebp)
4073fb:	9c                   	pushf
4073fc:	8f 85 f0 fd ff ff    	pop    -0x210(%ebp)
407402:	8b 75 04             	mov    0x4(%ebp),%esi
407405:	8d 45 04             	lea    0x4(%ebp),%eax
407408:	89 85 f4 fd ff ff    	mov    %eax,-0x20c(%ebp)
40740e:	c7 85 30 fd ff ff 01 	movl   $0x10001,-0x2d0(%ebp)
407415:	00 01 00
407418:	89 b5 e8 fd ff ff    	mov    %esi,-0x218(%ebp)
40741e:	8b 40 fc             	mov    -0x4(%eax),%eax
407421:	6a 50                	push   $0x50
407423:	89 85 e4 fd ff ff    	mov    %eax,-0x21c(%ebp)
407429:	8d 85 d8 fc ff ff    	lea    -0x328(%ebp),%eax
40742f:	6a 00                	push   $0x0
407431:	50                   	push   %eax
407432:	e8 e9 f4 ff ff       	call   0x406920
407437:	8d 85 d8 fc ff ff    	lea    -0x328(%ebp),%eax
40743d:	83 c4 0c             	add    $0xc,%esp
407440:	89 85 28 fd ff ff    	mov    %eax,-0x2d8(%ebp)
407446:	8d 85 30 fd ff ff    	lea    -0x2d0(%ebp),%eax
40744c:	6a 00                	push   $0x0
40744e:	c7 85 d8 fc ff ff 15 	movl   $0x40000015,-0x328(%ebp)
407455:	00 00 40
407458:	89 b5 e4 fc ff ff    	mov    %esi,-0x31c(%ebp)
40745e:	89 85 2c fd ff ff    	mov    %eax,-0x2d4(%ebp)
407464:	ff 15 7c 10 40 00    	call   *0x40107c
40746a:	8d 85 28 fd ff ff    	lea    -0x2d8(%ebp),%eax
407470:	50                   	push   %eax
407471:	ff 15 78 10 40 00    	call   *0x401078
407477:	6a 03                	push   $0x3
407479:	e8 3f b8 ff ff       	call   0x402cbd
40747e:	cc                   	int3
40747f:	6a 10                	push   $0x10
407481:	68 98 a6 40 00       	push   $0x40a698
407486:	e8 e9 c7 ff ff       	call   0x403c74
40748b:	33 c0                	xor    %eax,%eax
40748d:	8b 5d 08             	mov    0x8(%ebp),%ebx
407490:	33 ff                	xor    %edi,%edi
407492:	3b df                	cmp    %edi,%ebx
407494:	0f 95 c0             	setne  %al
407497:	3b c7                	cmp    %edi,%eax
407499:	75 1d                	jne    0x4074b8
40749b:	e8 b9 d6 ff ff       	call   0x404b59
4074a0:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
4074a6:	57                   	push   %edi
4074a7:	57                   	push   %edi
4074a8:	57                   	push   %edi
4074a9:	57                   	push   %edi
4074aa:	57                   	push   %edi
4074ab:	e8 41 d6 ff ff       	call   0x404af1
4074b0:	83 c4 14             	add    $0x14,%esp
4074b3:	83 c8 ff             	or     $0xffffffff,%eax
4074b6:	eb 53                	jmp    0x40750b
4074b8:	83 3d e4 0a 89 00 03 	cmpl   $0x3,0x890ae4
4074bf:	75 38                	jne    0x4074f9
4074c1:	6a 04                	push   $0x4
4074c3:	e8 43 d9 ff ff       	call   0x404e0b
4074c8:	59                   	pop    %ecx
4074c9:	89 7d fc             	mov    %edi,-0x4(%ebp)
4074cc:	53                   	push   %ebx
4074cd:	e8 33 e8 ff ff       	call   0x405d05
4074d2:	59                   	pop    %ecx
4074d3:	89 45 e0             	mov    %eax,-0x20(%ebp)
4074d6:	3b c7                	cmp    %edi,%eax
4074d8:	74 0b                	je     0x4074e5
4074da:	8b 73 fc             	mov    -0x4(%ebx),%esi
4074dd:	83 ee 09             	sub    $0x9,%esi
4074e0:	89 75 e4             	mov    %esi,-0x1c(%ebp)
4074e3:	eb 03                	jmp    0x4074e8
4074e5:	8b 75 e4             	mov    -0x1c(%ebp),%esi
4074e8:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
4074ef:	e8 25 00 00 00       	call   0x407519
4074f4:	39 7d e0             	cmp    %edi,-0x20(%ebp)
4074f7:	75 10                	jne    0x407509
4074f9:	53                   	push   %ebx
4074fa:	57                   	push   %edi
4074fb:	ff 35 dc cd 45 00    	push   0x45cddc
407501:	ff 15 2c 11 40 00    	call   *0x40112c
407507:	8b f0                	mov    %eax,%esi
407509:	8b c6                	mov    %esi,%eax
40750b:	e8 a9 c7 ff ff       	call   0x403cb9
407510:	c3                   	ret
407511:	33 ff                	xor    %edi,%edi
407513:	8b 5d 08             	mov    0x8(%ebp),%ebx
407516:	8b 75 e4             	mov    -0x1c(%ebp),%esi
407519:	6a 04                	push   $0x4
40751b:	e8 11 d8 ff ff       	call   0x404d31
407520:	59                   	pop    %ecx
407521:	c3                   	ret
407522:	6a 02                	push   $0x2
407524:	e8 0e b5 ff ff       	call   0x402a37
407529:	59                   	pop    %ecx
40752a:	c3                   	ret
40752b:	6a 0c                	push   $0xc
40752d:	68 b8 a6 40 00       	push   $0x40a6b8
407532:	e8 3d c7 ff ff       	call   0x403c74
407537:	83 65 e4 00          	andl   $0x0,-0x1c(%ebp)
40753b:	8b 75 08             	mov    0x8(%ebp),%esi
40753e:	3b 35 cc 0a 89 00    	cmp    0x890acc,%esi
407544:	77 22                	ja     0x407568
407546:	6a 04                	push   $0x4
407548:	e8 be d8 ff ff       	call   0x404e0b
40754d:	59                   	pop    %ecx
40754e:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
407552:	56                   	push   %esi
407553:	e8 8c ef ff ff       	call   0x4064e4
407558:	59                   	pop    %ecx
407559:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40755c:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
407563:	e8 09 00 00 00       	call   0x407571
407568:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40756b:	e8 49 c7 ff ff       	call   0x403cb9
407570:	c3                   	ret
407571:	6a 04                	push   $0x4
407573:	e8 b9 d7 ff ff       	call   0x404d31
407578:	59                   	pop    %ecx
407579:	c3                   	ret
40757a:	8b ff                	mov    %edi,%edi
40757c:	55                   	push   %ebp
40757d:	8b ec                	mov    %esp,%ebp
40757f:	56                   	push   %esi
407580:	8b 75 08             	mov    0x8(%ebp),%esi
407583:	83 fe e0             	cmp    $0xffffffe0,%esi
407586:	0f 87 a1 00 00 00    	ja     0x40762d
40758c:	53                   	push   %ebx
40758d:	57                   	push   %edi
40758e:	8b 3d 04 11 40 00    	mov    0x401104,%edi
407594:	83 3d dc cd 45 00 00 	cmpl   $0x0,0x45cddc
40759b:	75 18                	jne    0x4075b5
40759d:	e8 48 b9 ff ff       	call   0x402eea
4075a2:	6a 1e                	push   $0x1e
4075a4:	e8 96 b7 ff ff       	call   0x402d3f
4075a9:	68 ff 00 00 00       	push   $0xff
4075ae:	e8 d8 b4 ff ff       	call   0x402a8b
4075b3:	59                   	pop    %ecx
4075b4:	59                   	pop    %ecx
4075b5:	a1 e4 0a 89 00       	mov    0x890ae4,%eax
4075ba:	83 f8 01             	cmp    $0x1,%eax
4075bd:	75 0e                	jne    0x4075cd
4075bf:	85 f6                	test   %esi,%esi
4075c1:	74 04                	je     0x4075c7
4075c3:	8b c6                	mov    %esi,%eax
4075c5:	eb 03                	jmp    0x4075ca
4075c7:	33 c0                	xor    %eax,%eax
4075c9:	40                   	inc    %eax
4075ca:	50                   	push   %eax
4075cb:	eb 1c                	jmp    0x4075e9
4075cd:	83 f8 03             	cmp    $0x3,%eax
4075d0:	75 0b                	jne    0x4075dd
4075d2:	56                   	push   %esi
4075d3:	e8 53 ff ff ff       	call   0x40752b
4075d8:	59                   	pop    %ecx
4075d9:	85 c0                	test   %eax,%eax
4075db:	75 16                	jne    0x4075f3
4075dd:	85 f6                	test   %esi,%esi
4075df:	75 01                	jne    0x4075e2
4075e1:	46                   	inc    %esi
4075e2:	83 c6 0f             	add    $0xf,%esi
4075e5:	83 e6 f0             	and    $0xfffffff0,%esi
4075e8:	56                   	push   %esi
4075e9:	6a 00                	push   $0x0
4075eb:	ff 35 dc cd 45 00    	push   0x45cddc
4075f1:	ff d7                	call   *%edi
4075f3:	8b d8                	mov    %eax,%ebx
4075f5:	85 db                	test   %ebx,%ebx
4075f7:	75 2e                	jne    0x407627
4075f9:	6a 0c                	push   $0xc
4075fb:	5e                   	pop    %esi
4075fc:	39 05 88 d0 45 00    	cmp    %eax,0x45d088
407602:	74 15                	je     0x407619
407604:	ff 75 08             	push   0x8(%ebp)
407607:	e8 8f dd ff ff       	call   0x40539b
40760c:	59                   	pop    %ecx
40760d:	85 c0                	test   %eax,%eax
40760f:	74 0f                	je     0x407620
407611:	8b 75 08             	mov    0x8(%ebp),%esi
407614:	e9 7b ff ff ff       	jmp    0x407594
407619:	e8 3b d5 ff ff       	call   0x404b59
40761e:	89 30                	mov    %esi,(%eax)
407620:	e8 34 d5 ff ff       	call   0x404b59
407625:	89 30                	mov    %esi,(%eax)
407627:	5f                   	pop    %edi
407628:	8b c3                	mov    %ebx,%eax
40762a:	5b                   	pop    %ebx
40762b:	eb 14                	jmp    0x407641
40762d:	56                   	push   %esi
40762e:	e8 68 dd ff ff       	call   0x40539b
407633:	59                   	pop    %ecx
407634:	e8 20 d5 ff ff       	call   0x404b59
407639:	c7 00 0c 00 00 00    	movl   $0xc,(%eax)
40763f:	33 c0                	xor    %eax,%eax
407641:	5e                   	pop    %esi
407642:	5d                   	pop    %ebp
407643:	c3                   	ret
407644:	6a 0c                	push   $0xc
407646:	68 d8 a6 40 00       	push   $0x40a6d8
40764b:	e8 24 c6 ff ff       	call   0x403c74
407650:	8b 4d 08             	mov    0x8(%ebp),%ecx
407653:	33 ff                	xor    %edi,%edi
407655:	3b cf                	cmp    %edi,%ecx
407657:	76 2e                	jbe    0x407687
407659:	6a e0                	push   $0xffffffe0
40765b:	58                   	pop    %eax
40765c:	33 d2                	xor    %edx,%edx
40765e:	f7 f1                	div    %ecx
407660:	3b 45 0c             	cmp    0xc(%ebp),%eax
407663:	1b c0                	sbb    %eax,%eax
407665:	40                   	inc    %eax
407666:	75 1f                	jne    0x407687
407668:	e8 ec d4 ff ff       	call   0x404b59
40766d:	c7 00 0c 00 00 00    	movl   $0xc,(%eax)
407673:	57                   	push   %edi
407674:	57                   	push   %edi
407675:	57                   	push   %edi
407676:	57                   	push   %edi
407677:	57                   	push   %edi
407678:	e8 74 d4 ff ff       	call   0x404af1
40767d:	83 c4 14             	add    $0x14,%esp
407680:	33 c0                	xor    %eax,%eax
407682:	e9 d5 00 00 00       	jmp    0x40775c
407687:	0f af 4d 0c          	imul   0xc(%ebp),%ecx
40768b:	8b f1                	mov    %ecx,%esi
40768d:	89 75 08             	mov    %esi,0x8(%ebp)
407690:	3b f7                	cmp    %edi,%esi
407692:	75 03                	jne    0x407697
407694:	33 f6                	xor    %esi,%esi
407696:	46                   	inc    %esi
407697:	33 db                	xor    %ebx,%ebx
407699:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
40769c:	83 fe e0             	cmp    $0xffffffe0,%esi
40769f:	77 69                	ja     0x40770a
4076a1:	83 3d e4 0a 89 00 03 	cmpl   $0x3,0x890ae4
4076a8:	75 4b                	jne    0x4076f5
4076aa:	83 c6 0f             	add    $0xf,%esi
4076ad:	83 e6 f0             	and    $0xfffffff0,%esi
4076b0:	89 75 0c             	mov    %esi,0xc(%ebp)
4076b3:	8b 45 08             	mov    0x8(%ebp),%eax
4076b6:	3b 05 cc 0a 89 00    	cmp    0x890acc,%eax
4076bc:	77 37                	ja     0x4076f5
4076be:	6a 04                	push   $0x4
4076c0:	e8 46 d7 ff ff       	call   0x404e0b
4076c5:	59                   	pop    %ecx
4076c6:	89 7d fc             	mov    %edi,-0x4(%ebp)
4076c9:	ff 75 08             	push   0x8(%ebp)
4076cc:	e8 13 ee ff ff       	call   0x4064e4
4076d1:	59                   	pop    %ecx
4076d2:	89 45 e4             	mov    %eax,-0x1c(%ebp)
4076d5:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
4076dc:	e8 5f 00 00 00       	call   0x407740
4076e1:	8b 5d e4             	mov    -0x1c(%ebp),%ebx
4076e4:	3b df                	cmp    %edi,%ebx
4076e6:	74 11                	je     0x4076f9
4076e8:	ff 75 08             	push   0x8(%ebp)
4076eb:	57                   	push   %edi
4076ec:	53                   	push   %ebx
4076ed:	e8 2e f2 ff ff       	call   0x406920
4076f2:	83 c4 0c             	add    $0xc,%esp
4076f5:	3b df                	cmp    %edi,%ebx
4076f7:	75 61                	jne    0x40775a
4076f9:	56                   	push   %esi
4076fa:	6a 08                	push   $0x8
4076fc:	ff 35 dc cd 45 00    	push   0x45cddc
407702:	ff 15 04 11 40 00    	call   *0x401104
407708:	8b d8                	mov    %eax,%ebx
40770a:	3b df                	cmp    %edi,%ebx
40770c:	75 4c                	jne    0x40775a
40770e:	39 3d 88 d0 45 00    	cmp    %edi,0x45d088
407714:	74 33                	je     0x407749
407716:	56                   	push   %esi
407717:	e8 7f dc ff ff       	call   0x40539b
40771c:	59                   	pop    %ecx
40771d:	85 c0                	test   %eax,%eax
40771f:	0f 85 72 ff ff ff    	jne    0x407697
407725:	8b 45 10             	mov    0x10(%ebp),%eax
407728:	3b c7                	cmp    %edi,%eax
40772a:	0f 84 50 ff ff ff    	je     0x407680
407730:	c7 00 0c 00 00 00    	movl   $0xc,(%eax)
407736:	e9 45 ff ff ff       	jmp    0x407680
40773b:	33 ff                	xor    %edi,%edi
40773d:	8b 75 0c             	mov    0xc(%ebp),%esi
407740:	6a 04                	push   $0x4