40528f:	ff 75 f0             	push   -0x10(%ebp)
405292:	8d 95 c4 fb ff ff    	lea    -0x43c(%ebp),%edx
405298:	50                   	push   %eax
405299:	ff b5 d8 fd ff ff    	push   -0x228(%ebp)
40529f:	51                   	push   %ecx
4052a0:	8b 8d c0 fb ff ff    	mov    -0x440(%ebp),%ecx
4052a6:	e8 ca f5 00 00       	call   0x414875
4052ab:	8b d8                	mov    %eax,%ebx
4052ad:	85 db                	test   %ebx,%ebx
4052af:	75 2a                	jne    0x4052db
4052b1:	8b 55 e8             	mov    -0x18(%ebp),%edx
4052b4:	85 d2                	test   %edx,%edx
4052b6:	74 66                	je     0x40531e
4052b8:	8b 8d d0 fd ff ff    	mov    -0x230(%ebp),%ecx
4052be:	85 c9                	test   %ecx,%ecx
4052c0:	74 64                	je     0x405326
4052c2:	ff b5 bc fb ff ff    	push   -0x444(%ebp)
4052c8:	ff b5 b8 fb ff ff    	push   -0x448(%ebp)
4052ce:	ff b5 c4 fb ff ff    	push   -0x43c(%ebp)
4052d4:	e8 31 01 00 00       	call   0x40540a
4052d9:	8b d8                	mov    %eax,%ebx
4052db:	8b 45 e8             	mov    -0x18(%ebp),%eax
4052de:	89 1d dc 65 43 00    	mov    %ebx,0x4365dc
4052e4:	89 75 e8             	mov    %esi,-0x18(%ebp)
4052e7:	85 c0                	test   %eax,%eax
4052e9:	74 08                	je     0x4052f3
4052eb:	50                   	push   %eax
4052ec:	ff 15 e0 a3 44 00    	call   *0x44a3e0
4052f2:	59                   	pop    %ecx
4052f3:	8b 85 d0 fd ff ff    	mov    -0x230(%ebp),%eax
4052f9:	89 b5 d0 fd ff ff    	mov    %esi,-0x230(%ebp)
4052ff:	85 c0                	test   %eax,%eax
405301:	74 08                	je     0x40530b
405303:	50                   	push   %eax
405304:	ff 15 e0 a3 44 00    	call   *0x44a3e0
40530a:	59                   	pop    %ecx
40530b:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40530e:	8b c3                	mov    %ebx,%eax
405310:	5f                   	pop    %edi
405311:	5e                   	pop    %esi
405312:	33 cd                	xor    %ebp,%ecx
405314:	5b                   	pop    %ebx
405315:	e8 16 18 01 00       	call   0x416b30
40531a:	c9                   	leave
40531b:	c2 04 00             	ret    $0x4
40531e:	8d 95 e0 fd ff ff    	lea    -0x220(%ebp),%edx
405324:	eb 92                	jmp    0x4052b8
405326:	8d 8d c8 fb ff ff    	lea    -0x438(%ebp),%ecx
40532c:	eb 94                	jmp    0x4052c2
40532e:	8b ff                	mov    %edi,%edi
405330:	55                   	push   %ebp
405331:	8b ec                	mov    %esp,%ebp
405333:	81 ec 88 04 00 00    	sub    $0x488,%esp
405339:	a1 b4 e0 42 00       	mov    0x42e0b4,%eax
40533e:	33 c5                	xor    %ebp,%eax
405340:	89 45 f8             	mov    %eax,-0x8(%ebp)
405343:	8b 45 08             	mov    0x8(%ebp),%eax
405346:	53                   	push   %ebx
405347:	8b d9                	mov    %ecx,%ebx
405349:	89 85 84 fb ff ff    	mov    %eax,-0x47c(%ebp)
40534f:	56                   	push   %esi
405350:	8b f3                	mov    %ebx,%esi
405352:	33 c9                	xor    %ecx,%ecx
405354:	57                   	push   %edi
405355:	89 8d 88 fb ff ff    	mov    %ecx,-0x478(%ebp)
40535b:	8d 7e 02             	lea    0x2(%esi),%edi
40535e:	66 8b 06             	mov    (%esi),%ax
405361:	83 c6 02             	add    $0x2,%esi
405364:	66 3b c1             	cmp    %cx,%ax
405367:	75 f5                	jne    0x40535e
405369:	2b f7                	sub    %edi,%esi
40536b:	d1 fe                	sar    $1,%esi
40536d:	8d 46 02             	lea    0x2(%esi),%eax
405370:	3b c2                	cmp    %edx,%eax
405372:	77 53                	ja     0x4053c7
405374:	8b cb                	mov    %ebx,%ecx
405376:	33 ff                	xor    %edi,%edi
405378:	8d 51 02             	lea    0x2(%ecx),%edx
40537b:	66 8b 01             	mov    (%ecx),%ax
40537e:	83 c1 02             	add    $0x2,%ecx
405381:	66 3b c7             	cmp    %di,%ax
405384:	75 f5                	jne    0x40537b
405386:	8b b5 84 fb ff ff    	mov    -0x47c(%ebp),%esi
40538c:	2b ca                	sub    %edx,%ecx
40538e:	d1 f9                	sar    $1,%ecx
405390:	53                   	push   %ebx
405391:	8d 41 fe             	lea    -0x2(%ecx),%eax
405394:	89 85 78 fb ff ff    	mov    %eax,-0x488(%ebp)
40539a:	89 06                	mov    %eax,(%esi)
40539c:	ff 15 98 a0 44 00    	call   *0x44a098
4053a2:	83 f8 ff             	cmp    $0xffffffff,%eax
4053a5:	0f 84 c2 3f 01 00    	je     0x41936d
4053ab:	a8 10                	test   $0x10,%al
4053ad:	0f 85 d2 3f 01 00    	jne    0x419385
4053b3:	33 c0                	xor    %eax,%eax
4053b5:	40                   	inc    %eax
4053b6:	8b 4d f8             	mov    -0x8(%ebp),%ecx
4053b9:	5f                   	pop    %edi
4053ba:	5e                   	pop    %esi
4053bb:	33 cd                	xor    %ebp,%ecx
4053bd:	5b                   	pop    %ebx
4053be:	e8 6d 17 01 00       	call   0x416b30
4053c3:	c9                   	leave
4053c4:	c2 04 00             	ret    $0x4
4053c7:	33 c0                	xor    %eax,%eax
4053c9:	eb eb                	jmp    0x4053b6
4053cb:	8b ff                	mov    %edi,%edi
4053cd:	55                   	push   %ebp
4053ce:	8b ec                	mov    %esp,%ebp
4053d0:	51                   	push   %ecx
4053d1:	53                   	push   %ebx
4053d2:	56                   	push   %esi
4053d3:	8b 75 08             	mov    0x8(%ebp),%esi
4053d6:	8b da                	mov    %edx,%ebx
4053d8:	57                   	push   %edi
4053d9:	8b 7d 0c             	mov    0xc(%ebp),%edi
4053dc:	8b c1                	mov    %ecx,%eax
4053de:	89 45 fc             	mov    %eax,-0x4(%ebp)
4053e1:	8b 36                	mov    (%esi),%esi
4053e3:	f7 de                	neg    %esi
4053e5:	1b f6                	sbb    %esi,%esi
4053e7:	83 27 00             	andl   $0x0,(%edi)
4053ea:	83 c6 03             	add    $0x3,%esi
4053ed:	56                   	push   %esi
4053ee:	53                   	push   %ebx
4053ef:	50                   	push   %eax
4053f0:	ff 15 0c a1 44 00    	call   *0x44a10c
4053f6:	85 c0                	test   %eax,%eax
4053f8:	0f 84 20 42 01 00    	je     0x41961e
4053fe:	33 c0                	xor    %eax,%eax
405400:	40                   	inc    %eax
405401:	89 07                	mov    %eax,(%edi)
405403:	5f                   	pop    %edi
405404:	5e                   	pop    %esi
405405:	5b                   	pop    %ebx
405406:	c9                   	leave
405407:	c2 08 00             	ret    $0x8
40540a:	8b ff                	mov    %edi,%edi
40540c:	55                   	push   %ebp
40540d:	8b ec                	mov    %esp,%ebp
40540f:	83 e4 f8             	and    $0xfffffff8,%esp
405412:	81 ec 8c 06 00 00    	sub    $0x68c,%esp
405418:	a1 b4 e0 42 00       	mov    0x42e0b4,%eax
40541d:	33 c4                	xor    %esp,%eax
40541f:	89 84 24 88 06 00 00 	mov    %eax,0x688(%esp)
405426:	8b 45 0c             	mov    0xc(%ebp),%eax
405429:	53                   	push   %ebx
40542a:	56                   	push   %esi
40542b:	57                   	push   %edi
40542c:	be 04 01 00 00       	mov    $0x104,%esi
405431:	89 44 24 18          	mov    %eax,0x18(%esp)
405435:	33 db                	xor    %ebx,%ebx
405437:	89 54 24 28          	mov    %edx,0x28(%esp)
40543b:	56                   	push   %esi
40543c:	8d 84 24 5c 02 00 00 	lea    0x25c(%esp),%eax
405443:	89 5c 24 30          	mov    %ebx,0x30(%esp)
405447:	53                   	push   %ebx
405448:	50                   	push   %eax
405449:	8b f9                	mov    %ecx,%edi
40544b:	89 9c 24 6c 04 00 00 	mov    %ebx,0x46c(%esp)
405452:	c6 84 24 70 04 00 00 	movb   $0x1,0x470(%esp)
405459:	01
40545a:	89 b4 24 74 04 00 00 	mov    %esi,0x474(%esp)
405461:	e8 57 2b 01 00       	call   0x417fbd
405466:	83 c4 0c             	add    $0xc,%esp
405469:	89 9c 24 48 02 00 00 	mov    %ebx,0x248(%esp)
405470:	8d 44 24 40          	lea    0x40(%esp),%eax
405474:	c6 84 24 4c 02 00 00 	movb   $0x1,0x24c(%esp)
40547b:	01
40547c:	89 b4 24 50 02 00 00 	mov    %esi,0x250(%esp)
405483:	56                   	push   %esi
405484:	53                   	push   %ebx
405485:	50                   	push   %eax
405486:	e8 32 2b 01 00       	call   0x417fbd
40548b:	33 c0                	xor    %eax,%eax
40548d:	8d 8c 24 64 02 00 00 	lea    0x264(%esp),%ecx
405494:	83 c4 0c             	add    $0xc,%esp
405497:	bb e3 7e 00 00       	mov    $0x7ee3,%ebx
40549c:	38 84 24 64 04 00 00 	cmp    %al,0x464(%esp)
4054a3:	0f 94 c0             	sete   %al
4054a6:	48                   	dec    %eax
4054a7:	23 c3                	and    %ebx,%eax
4054a9:	03 c6                	add    %esi,%eax
4054ab:	50                   	push   %eax
4054ac:	e8 3f 8f 00 00       	call   0x40e3f0
4054b1:	85 c0                	test   %eax,%eax
4054b3:	0f 88 fa 41 01 00    	js     0x4196b3
4054b9:	33 c0                	xor    %eax,%eax
4054bb:	8d 4c 24 40          	lea    0x40(%esp),%ecx
4054bf:	38 84 24 4c 02 00 00 	cmp    %al,0x24c(%esp)
4054c6:	0f 94 c0             	sete   %al
4054c9:	48                   	dec    %eax
4054ca:	23 c3                	and    %ebx,%eax
4054cc:	03 c6                	add    %esi,%eax
4054ce:	50                   	push   %eax
4054cf:	e8 1c 8f 00 00       	call   0x40e3f0
4054d4:	85 c0                	test   %eax,%eax
4054d6:	0f 88 d7 41 01 00    	js     0x4196b3
4054dc:	8b cf                	mov    %edi,%ecx
4054de:	e8 46 04 00 00       	call   0x405929
4054e3:	6a 2a                	push   $0x2a
4054e5:	8b d8                	mov    %eax,%ebx
4054e7:	8b f7                	mov    %edi,%esi
4054e9:	58                   	pop    %eax
4054ea:	6a 3f                	push   $0x3f
4054ec:	66 89 84 24 90 06 00 	mov    %ax,0x690(%esp)
4054f3:	00
4054f4:	58                   	pop    %eax
4054f5:	66 89 84 24 8e 06 00 	mov    %ax,0x68e(%esp)
4054fc:	00
4054fd:	8d 4e 02             	lea    0x2(%esi),%ecx
405500:	33 c0                	xor    %eax,%eax
405502:	6a 02                	push   $0x2
405504:	66 89 84 24 94 06 00 	mov    %ax,0x694(%esp)
40550b:	00
40550c:	5a                   	pop    %edx
40550d:	66 8b 06             	mov    (%esi),%ax
405510:	03 f2                	add    %edx,%esi
405512:	66 3b 44 24 2c       	cmp    0x2c(%esp),%ax
405517:	75 f4                	jne    0x40550d
405519:	2b f1                	sub    %ecx,%esi
40551b:	8d 94 24 8c 06 00 00 	lea    0x68c(%esp),%edx
405522:	8b cf                	mov    %edi,%ecx
405524:	d1 fe                	sar    $1,%esi
405526:	e8 8f 49 00 00       	call   0x409eba
40552b:	3b c6                	cmp    %esi,%eax
40552d:	1b f6                	sbb    %esi,%esi
40552f:	f7 de                	neg    %esi
405531:	89 74 24 34          	mov    %esi,0x34(%esp)
405535:	83 fb ff             	cmp    $0xffffffff,%ebx
405538:	0f 84 31 41 01 00    	je     0x41966f
40553e:	83 fb 01             	cmp    $0x1,%ebx
405541:	0f 8f df 41 01 00    	jg     0x419726
405547:	83 7d 10 00          	cmpl   $0x0,0x10(%ebp)
40554b:	0f 85 9f 03 00 00    	jne    0x4058f0
405551:	6a 02                	push   $0x2
405553:	5b                   	pop    %ebx
405554:	88 5c 24 12          	mov    %bl,0x12(%esp)
405558:	c6 44 24 13 01       	movb   $0x1,0x13(%esp)
40555d:	6a 20                	push   $0x20
40555f:	58                   	pop    %eax
405560:	8d 4c 24 1c          	lea    0x1c(%esp),%ecx
405564:	89 44 24 38          	mov    %eax,0x38(%esp)
405568:	51                   	push   %ecx
405569:	8b 4c 24 1c          	mov    0x1c(%esp),%ecx
40556d:	8b d7                	mov    %edi,%edx
40556f:	ff 71 18             	push   0x18(%ecx)
405572:	33 c9                	xor    %ecx,%ecx
405574:	51                   	push   %ecx
405575:	50                   	push   %eax
405576:	b9 d0 59 41 00       	mov    $0x4159d0,%ecx
40557b:	e8 1a 03 01 00       	call   0x41589a
405580:	84 c0                	test   %al,%al
405582:	0f 84 c1 41 01 00    	je     0x419749
405588:	33 c9                	xor    %ecx,%ecx
40558a:	89 4c 24 24          	mov    %ecx,0x24(%esp)
40558e:	89 4c 24 14          	mov    %ecx,0x14(%esp)
405592:	8d 8c 24 58 02 00 00 	lea    0x258(%esp),%ecx
405599:	57                   	push   %edi
40559a:	e8 a2 50 00 00       	call   0x40a641
40559f:	8b 8c 24 60 04 00 00 	mov    0x460(%esp),%ecx
4055a6:	85 c9                	test   %ecx,%ecx
4055a8:	0f 84 e7 41 01 00    	je     0x419795
4055ae:	6a 5c                	push   $0x5c
4055b0:	5a                   	pop    %edx
4055b1:	e8 3f ac 00 00       	call   0x4101f5
4055b6:	8d 34 03             	lea    (%ebx,%eax,1),%esi
4055b9:	89 74 24 3c          	mov    %esi,0x3c(%esp)
4055bd:	83 3d 9c 25 43 00 00 	cmpl   $0x0,0x43259c
4055c4:	0f 85 de 43 01 00    	jne    0x4199a8
4055ca:	8b 8c 24 60 04 00 00 	mov    0x460(%esp),%ecx
4055d1:	85 c9                	test   %ecx,%ecx
4055d3:	0f 84 c8 41 01 00    	je     0x4197a1
4055d9:	8b 7c 24 18          	mov    0x18(%esp),%edi
4055dd:	8b 94 24 68 04 00 00 	mov    0x468(%esp),%edx
4055e4:	8b 47 18             	mov    0x18(%edi),%eax
4055e7:	83 c0 2c             	add    $0x2c,%eax
4055ea:	50                   	push   %eax
4055eb:	8b c6                	mov    %esi,%eax
4055ed:	2b c1                	sub    %ecx,%eax
4055ef:	8b ce                	mov    %esi,%ecx
4055f1:	d1 f8                	sar    $1,%eax
4055f3:	2b d0                	sub    %eax,%edx
4055f5:	e8 a6 9d 00 00       	call   0x40f3a0
4055fa:	ff 74 24 28          	push   0x28(%esp)
4055fe:	8d 4c 24 44          	lea    0x44(%esp),%ecx
405602:	e8 3a 50 00 00       	call   0x40a641
405607:	80 7c 24 12 01       	cmpb   $0x1,0x12(%esp)
40560c:	0f 84 69 02 00 00    	je     0x40587b
405612:	33 c0                	xor    %eax,%eax
405614:	c6 84 24 7c 06 00 00 	movb   $0x1,0x67c(%esp)
40561b:	01
40561c:	be 04 01 00 00       	mov    $0x104,%esi
405621:	89 84 24 78 06 00 00 	mov    %eax,0x678(%esp)
405628:	56                   	push   %esi
405629:	50                   	push   %eax
40562a:	8d 84 24 78 04 00 00 	lea    0x478(%esp),%eax
405631:	89 b4 24 88 06 00 00 	mov    %esi,0x688(%esp)
405638:	50                   	push   %eax
405639:	e8 7f 29 01 00       	call   0x417fbd
40563e:	33 c0                	xor    %eax,%eax
405640:	8d 8c 24 7c 04 00 00 	lea    0x47c(%esp),%ecx
405647:	83 c4 0c             	add    $0xc,%esp
40564a:	38 84 24 7c 06 00 00 	cmp    %al,0x67c(%esp)
405651:	0f 94 c0             	sete   %al
405654:	48                   	dec    %eax
405655:	25 e3 7e 00 00       	and    $0x7ee3,%eax
40565a:	03 c6                	add    %esi,%eax
40565c:	50                   	push   %eax
40565d:	e8 8e 8d 00 00       	call   0x40e3f0
405662:	85 c0                	test   %eax,%eax
405664:	0f 88 55 41 01 00    	js     0x4197bf
40566a:	8b 8c 24 78 06 00 00 	mov    0x678(%esp),%ecx
405671:	85 c9                	test   %ecx,%ecx
405673:	0f 84 72 41 01 00    	je     0x4197eb
405679:	8b 84 24 48 02 00 00 	mov    0x248(%esp),%eax
405680:	85 c0                	test   %eax,%eax
405682:	0f 84 6f 41 01 00    	je     0x4197f7
405688:	33 f6                	xor    %esi,%esi
40568a:	56                   	push   %esi
40568b:	51                   	push   %ecx
40568c:	ff b4 24 58 02 00 00 	push   0x258(%esp)
405693:	50                   	push   %eax
405694:	ff 15 a4 a0 44 00    	call   *0x44a0a4
40569a:	85 c0                	test   %eax,%eax
40569c:	0f 84 fa 41 01 00    	je     0x41989c
4056a2:	3d e7 7f 00 00       	cmp    $0x7fe7,%eax
4056a7:	0f 83 ef 41 01 00    	jae    0x41989c
4056ad:	8b 8c 24 78 06 00 00 	mov    0x678(%esp),%ecx
4056b4:	8b f9                	mov    %ecx,%edi
4056b6:	85 c9                	test   %ecx,%ecx
4056b8:	0f 84 42 41 01 00    	je     0x419800
4056be:	8d 57 02             	lea    0x2(%edi),%edx
4056c1:	66 8b 07             	mov    (%edi),%ax
4056c4:	03 fb                	add    %ebx,%edi
4056c6:	66 3b c6             	cmp    %si,%ax
4056c9:	75 f6                	jne    0x4056c1
4056cb:	2b fa                	sub    %edx,%edi
4056cd:	d1 ff                	sar    $1,%edi
4056cf:	85 c9                	test   %ecx,%ecx
4056d1:	0f 84 35 41 01 00    	je     0x41980c
4056d7:	8b 84 24 60 04 00 00 	mov    0x460(%esp),%eax
4056de:	85 c0                	test   %eax,%eax
4056e0:	0f 84 32 41 01 00    	je     0x419818
4056e6:	56                   	push   %esi
4056e7:	51                   	push   %ecx
4056e8:	ff b4 24 70 04 00 00 	push   0x470(%esp)
4056ef:	50                   	push   %eax
4056f0:	ff 15 a4 a0 44 00    	call   *0x44a0a4
4056f6:	85 c0                	test   %eax,%eax