405305:	ff 75 18             	push   0x18(%ebp)
405308:	ff 75 14             	push   0x14(%ebp)
40530b:	ff 75 10             	push   0x10(%ebp)
40530e:	ff 75 0c             	push   0xc(%ebp)
405311:	ff 75 08             	push   0x8(%ebp)
405314:	e8 1f 00 00 00       	call   0x405338
405319:	83 c4 14             	add    $0x14,%esp
40531c:	89 45 18             	mov    %eax,0x18(%ebp)
40531f:	85 db                	test   %ebx,%ebx
405321:	74 0a                	je     0x40532d
405323:	6a 13                	push   $0x13
405325:	e8 2c 1d 00 00       	call   0x407056
40532a:	59                   	pop    %ecx
40532b:	eb 03                	jmp    0x405330
40532d:	56                   	push   %esi
40532e:	ff d7                	call   *%edi
405330:	8b 45 18             	mov    0x18(%ebp),%eax
405333:	5f                   	pop    %edi
405334:	5e                   	pop    %esi
405335:	5b                   	pop    %ebx
405336:	5d                   	pop    %ebp
405337:	c3                   	ret
405338:	55                   	push   %ebp
405339:	8b ec                	mov    %esp,%ebp
40533b:	53                   	push   %ebx
40533c:	56                   	push   %esi
40533d:	57                   	push   %edi
40533e:	8b 7d 0c             	mov    0xc(%ebp),%edi
405341:	33 db                	xor    %ebx,%ebx
405343:	3b fb                	cmp    %ebx,%edi
405345:	74 15                	je     0x40535c
405347:	39 5d 10             	cmp    %ebx,0x10(%ebp)
40534a:	74 10                	je     0x40535c
40534c:	8a 17                	mov    (%edi),%dl
40534e:	3a d3                	cmp    %bl,%dl
405350:	75 11                	jne    0x405363
405352:	8b 45 08             	mov    0x8(%ebp),%eax
405355:	3b c3                	cmp    %ebx,%eax
405357:	74 03                	je     0x40535c
405359:	66 89 18             	mov    %bx,(%eax)
40535c:	33 c0                	xor    %eax,%eax
40535e:	5f                   	pop    %edi
40535f:	5e                   	pop    %esi
405360:	5b                   	pop    %ebx
405361:	5d                   	pop    %ebp
405362:	c3                   	ret
405363:	8b 45 18             	mov    0x18(%ebp),%eax
405366:	3b c3                	cmp    %ebx,%eax
405368:	75 0d                	jne    0x405377
40536a:	8b 0d 6c 18 41 00    	mov    0x41186c,%ecx
405370:	a1 7c 18 41 00       	mov    0x41187c,%eax
405375:	eb 05                	jmp    0x40537c
405377:	8b 08                	mov    (%eax),%ecx
405379:	8b 40 04             	mov    0x4(%eax),%eax
40537c:	3b cb                	cmp    %ebx,%ecx
40537e:	75 13                	jne    0x405393
405380:	8b 45 08             	mov    0x8(%ebp),%eax
405383:	3b c3                	cmp    %ebx,%eax
405385:	74 07                	je     0x40538e
405387:	66 0f b6 ca          	movzbw %dl,%cx
40538b:	66 89 08             	mov    %cx,(%eax)
40538e:	6a 01                	push   $0x1
405390:	58                   	pop    %eax
405391:	eb cb                	jmp    0x40535e
405393:	8b 75 14             	mov    0x14(%ebp),%esi
405396:	39 1e                	cmp    %ebx,(%esi)
405398:	74 43                	je     0x4053dd
40539a:	88 56 01             	mov    %dl,0x1(%esi)
40539d:	83 3d 60 0d 41 00 01 	cmpl   $0x1,0x410d60
4053a4:	7e 25                	jle    0x4053cb
4053a6:	33 c9                	xor    %ecx,%ecx
4053a8:	39 5d 08             	cmp    %ebx,0x8(%ebp)
4053ab:	0f 95 c1             	setne  %cl
4053ae:	51                   	push   %ecx
4053af:	ff 75 08             	push   0x8(%ebp)
4053b2:	6a 02                	push   $0x2
4053b4:	56                   	push   %esi
4053b5:	6a 09                	push   $0x9
4053b7:	50                   	push   %eax
4053b8:	ff 15 d4 d0 40 00    	call   *0x40d0d4
4053be:	85 c0                	test   %eax,%eax
4053c0:	74 09                	je     0x4053cb
4053c2:	89 1e                	mov    %ebx,(%esi)
4053c4:	a1 60 0d 41 00       	mov    0x410d60,%eax
4053c9:	eb 93                	jmp    0x40535e
4053cb:	89 1e                	mov    %ebx,(%esi)
4053cd:	e8 0c 1d 00 00       	call   0x4070de
4053d2:	c7 00 2a 00 00 00    	movl   $0x2a,(%eax)
4053d8:	83 c8 ff             	or     $0xffffffff,%eax
4053db:	eb 81                	jmp    0x40535e
4053dd:	8b 1d ec 09 41 00    	mov    0x4109ec,%ebx
4053e3:	0f b6 ca             	movzbl %dl,%ecx
4053e6:	f6 44 4b 01 80       	testb  $0x80,0x1(%ebx,%ecx,2)
4053eb:	74 3c                	je     0x405429
4053ed:	8b 0d 60 0d 41 00    	mov    0x410d60,%ecx
4053f3:	39 4d 10             	cmp    %ecx,0x10(%ebp)
4053f6:	73 06                	jae    0x4053fe
4053f8:	88 16                	mov    %dl,(%esi)
4053fa:	6a fe                	push   $0xfffffffe
4053fc:	eb 92                	jmp    0x405390
4053fe:	83 f9 01             	cmp    $0x1,%ecx
405401:	7e 1b                	jle    0x40541e
405403:	33 d2                	xor    %edx,%edx
405405:	39 55 08             	cmp    %edx,0x8(%ebp)
405408:	0f 95 c2             	setne  %dl
40540b:	52                   	push   %edx
40540c:	ff 75 08             	push   0x8(%ebp)
40540f:	51                   	push   %ecx
405410:	57                   	push   %edi
405411:	6a 09                	push   $0x9
405413:	50                   	push   %eax
405414:	ff 15 d4 d0 40 00    	call   *0x40d0d4
40541a:	85 c0                	test   %eax,%eax
40541c:	75 a6                	jne    0x4053c4
40541e:	80 7f 01 00          	cmpb   $0x0,0x1(%edi)
405422:	75 a0                	jne    0x4053c4
405424:	83 26 00             	andl   $0x0,(%esi)
405427:	eb a4                	jmp    0x4053cd
405429:	33 c9                	xor    %ecx,%ecx
40542b:	39 4d 08             	cmp    %ecx,0x8(%ebp)
40542e:	0f 95 c1             	setne  %cl
405431:	51                   	push   %ecx
405432:	ff 75 08             	push   0x8(%ebp)
405435:	6a 01                	push   $0x1
405437:	57                   	push   %edi
405438:	6a 09                	push   $0x9
40543a:	50                   	push   %eax
40543b:	ff 15 d4 d0 40 00    	call   *0x40d0d4
405441:	85 c0                	test   %eax,%eax
405443:	0f 85 45 ff ff ff    	jne    0x40538e
405449:	eb 82                	jmp    0x4053cd
40544b:	55                   	push   %ebp
40544c:	8b ec                	mov    %esp,%ebp
40544e:	51                   	push   %ecx
40544f:	51                   	push   %ecx
405450:	8b 45 08             	mov    0x8(%ebp),%eax
405453:	83 f8 ff             	cmp    $0xffffffff,%eax
405456:	75 06                	jne    0x40545e
405458:	66 0d ff ff          	or     $0xffff,%ax
40545c:	c9                   	leave
40545d:	c3                   	ret
40545e:	88 45 0b             	mov    %al,0xb(%ebp)
405461:	8d 45 f8             	lea    -0x8(%ebp),%eax
405464:	83 65 f8 00          	andl   $0x0,-0x8(%ebp)
405468:	6a 00                	push   $0x0
40546a:	50                   	push   %eax
40546b:	8d 45 0b             	lea    0xb(%ebp),%eax
40546e:	6a 01                	push   $0x1
405470:	50                   	push   %eax
405471:	8d 45 fe             	lea    -0x2(%ebp),%eax
405474:	50                   	push   %eax
405475:	e8 5b fe ff ff       	call   0x4052d5
40547a:	83 c4 14             	add    $0x14,%esp
40547d:	85 c0                	test   %eax,%eax
40547f:	b8 ff ff 00 00       	mov    $0xffff,%eax
405484:	7c 04                	jl     0x40548a
405486:	0f b7 45 fe          	movzwl -0x2(%ebp),%eax
40548a:	c9                   	leave
40548b:	c3                   	ret
40548c:	56                   	push   %esi
40548d:	e8 52 1d 00 00       	call   0x4071e4
405492:	ff 35 d0 1e 41 00    	push   0x411ed0
405498:	e8 ab 1e 00 00       	call   0x407348
40549d:	8b 15 d0 1e 41 00    	mov    0x411ed0,%edx
4054a3:	59                   	pop    %ecx
4054a4:	8b 0d cc 1e 41 00    	mov    0x411ecc,%ecx
4054aa:	8b f1                	mov    %ecx,%esi
4054ac:	2b f2                	sub    %edx,%esi
4054ae:	83 c6 04             	add    $0x4,%esi
4054b1:	3b c6                	cmp    %esi,%eax
4054b3:	73 3d                	jae    0x4054f2
4054b5:	52                   	push   %edx
4054b6:	e8 8d 1e 00 00       	call   0x407348
4054bb:	83 c0 10             	add    $0x10,%eax
4054be:	50                   	push   %eax
4054bf:	ff 35 d0 1e 41 00    	push   0x411ed0
4054c5:	e8 46 1d 00 00       	call   0x407210
4054ca:	83 c4 0c             	add    $0xc,%esp
4054cd:	85 c0                	test   %eax,%eax
4054cf:	75 04                	jne    0x4054d5
4054d1:	33 f6                	xor    %esi,%esi
4054d3:	eb 2c                	jmp    0x405501
4054d5:	8b 0d cc 1e 41 00    	mov    0x411ecc,%ecx
4054db:	2b 0d d0 1e 41 00    	sub    0x411ed0,%ecx
4054e1:	a3 d0 1e 41 00       	mov    %eax,0x411ed0
4054e6:	c1 f9 02             	sar    $0x2,%ecx
4054e9:	8d 0c 88             	lea    (%eax,%ecx,4),%ecx
4054ec:	89 0d cc 1e 41 00    	mov    %ecx,0x411ecc
4054f2:	8b 44 24 08          	mov    0x8(%esp),%eax
4054f6:	89 01                	mov    %eax,(%ecx)
4054f8:	83 05 cc 1e 41 00 04 	addl   $0x4,0x411ecc
4054ff:	8b f0                	mov    %eax,%esi
405501:	e8 e7 1c 00 00       	call   0x4071ed
405506:	8b c6                	mov    %esi,%eax
405508:	5e                   	pop    %esi
405509:	c3                   	ret
40550a:	ff 74 24 04          	push   0x4(%esp)
40550e:	e8 79 ff ff ff       	call   0x40548c
405513:	f7 d8                	neg    %eax
405515:	1b c0                	sbb    %eax,%eax
405517:	59                   	pop    %ecx
405518:	f7 d8                	neg    %eax
40551a:	48                   	dec    %eax
40551b:	c3                   	ret
40551c:	68 80 00 00 00       	push   $0x80
405521:	e8 67 1e 00 00       	call   0x40738d
405526:	85 c0                	test   %eax,%eax
405528:	59                   	pop    %ecx
405529:	a3 d0 1e 41 00       	mov    %eax,0x411ed0
40552e:	75 0d                	jne    0x40553d
405530:	6a 18                	push   $0x18
405532:	e8 45 02 00 00       	call   0x40577c
405537:	a1 d0 1e 41 00       	mov    0x411ed0,%eax
40553c:	59                   	pop    %ecx
40553d:	83 20 00             	andl   $0x0,(%eax)
405540:	a1 d0 1e 41 00       	mov    0x411ed0,%eax
405545:	a3 cc 1e 41 00       	mov    %eax,0x411ecc
40554a:	c3                   	ret
40554b:	53                   	push   %ebx
40554c:	56                   	push   %esi
40554d:	be a0 05 41 00       	mov    $0x4105a0,%esi
405552:	57                   	push   %edi
405553:	56                   	push   %esi
405554:	6a 01                	push   $0x1
405556:	e8 9a 03 00 00       	call   0x4058f5
40555b:	56                   	push   %esi
40555c:	e8 b8 1e 00 00       	call   0x407419
405561:	8b f8                	mov    %eax,%edi
405563:	8d 44 24 20          	lea    0x20(%esp),%eax
405567:	50                   	push   %eax
405568:	ff 74 24 20          	push   0x20(%esp)
40556c:	56                   	push   %esi
40556d:	e8 5e 1f 00 00       	call   0x4074d0
405572:	56                   	push   %esi
405573:	57                   	push   %edi
405574:	8b d8                	mov    %eax,%ebx
405576:	e8 2b 1f 00 00       	call   0x4074a6
40557b:	56                   	push   %esi
40557c:	6a 01                	push   $0x1
40557e:	e8 c4 03 00 00       	call   0x405947
405583:	83 c4 28             	add    $0x28,%esp
405586:	8b c3                	mov    %ebx,%eax
405588:	5f                   	pop    %edi
405589:	5e                   	pop    %esi
40558a:	5b                   	pop    %ebx
40558b:	c3                   	ret
40558c:	53                   	push   %ebx
40558d:	55                   	push   %ebp
40558e:	56                   	push   %esi
40558f:	57                   	push   %edi
405590:	8b 7c 24 14          	mov    0x14(%esp),%edi
405594:	83 3d 60 0d 41 00 01 	cmpl   $0x1,0x410d60
40559b:	7e 0f                	jle    0x4055ac
40559d:	0f b6 07             	movzbl (%edi),%eax
4055a0:	6a 08                	push   $0x8
4055a2:	50                   	push   %eax
4055a3:	e8 32 27 00 00       	call   0x407cda
4055a8:	59                   	pop    %ecx
4055a9:	59                   	pop    %ecx
4055aa:	eb 0f                	jmp    0x4055bb
4055ac:	0f b6 07             	movzbl (%edi),%eax
4055af:	8b 0d ec 09 41 00    	mov    0x4109ec,%ecx
4055b5:	8a 04 41             	mov    (%ecx,%eax,2),%al
4055b8:	83 e0 08             	and    $0x8,%eax
4055bb:	85 c0                	test   %eax,%eax
4055bd:	74 03                	je     0x4055c2
4055bf:	47                   	inc    %edi
4055c0:	eb d2                	jmp    0x405594
4055c2:	0f b6 37             	movzbl (%edi),%esi
4055c5:	47                   	inc    %edi
4055c6:	83 fe 2d             	cmp    $0x2d,%esi
4055c9:	8b ee                	mov    %esi,%ebp
4055cb:	74 05                	je     0x4055d2
4055cd:	83 fe 2b             	cmp    $0x2b,%esi
4055d0:	75 04                	jne    0x4055d6
4055d2:	0f b6 37             	movzbl (%edi),%esi
4055d5:	47                   	inc    %edi
4055d6:	33 db                	xor    %ebx,%ebx
4055d8:	83 3d 60 0d 41 00 01 	cmpl   $0x1,0x410d60
4055df:	7e 0c                	jle    0x4055ed
4055e1:	6a 04                	push   $0x4
4055e3:	56                   	push   %esi
4055e4:	e8 f1 26 00 00       	call   0x407cda
4055e9:	59                   	pop    %ecx
4055ea:	59                   	pop    %ecx
4055eb:	eb 0b                	jmp    0x4055f8
4055ed:	a1 ec 09 41 00       	mov    0x4109ec,%eax
4055f2:	8a 04 70             	mov    (%eax,%esi,2),%al
4055f5:	83 e0 04             	and    $0x4,%eax
4055f8:	85 c0                	test   %eax,%eax
4055fa:	74 0d                	je     0x405609
4055fc:	8d 04 9b             	lea    (%ebx,%ebx,4),%eax
4055ff:	8d 5c 46 d0          	lea    -0x30(%esi,%eax,2),%ebx
405603:	0f b6 37             	movzbl (%edi),%esi
405606:	47                   	inc    %edi
405607:	eb cf                	jmp    0x4055d8
405609:	83 fd 2d             	cmp    $0x2d,%ebp
40560c:	8b c3                	mov    %ebx,%eax
40560e:	75 02                	jne    0x405612
405610:	f7 d8                	neg    %eax
405612:	5f                   	pop    %edi
405613:	5e                   	pop    %esi
405614:	5d                   	pop    %ebp
405615:	5b                   	pop    %ebx
405616:	c3                   	ret
405617:	ff 74 24 04          	push   0x4(%esp)
40561b:	e8 6c ff ff ff       	call   0x40558c
405620:	59                   	pop    %ecx
405621:	c3                   	ret
405622:	55                   	push   %ebp
405623:	8b ec                	mov    %esp,%ebp
405625:	83 ec 20             	sub    $0x20,%esp
405628:	8b 45 08             	mov    0x8(%ebp),%eax
40562b:	56                   	push   %esi
40562c:	89 45 e8             	mov    %eax,-0x18(%ebp)
40562f:	89 45 e0             	mov    %eax,-0x20(%ebp)
405632:	8d 45 10             	lea    0x10(%ebp),%eax
405635:	c7 45 ec 42 00 00 00 	movl   $0x42,-0x14(%ebp)
40563c:	50                   	push   %eax
40563d:	8d 45 e0             	lea    -0x20(%ebp),%eax
405640:	ff 75 0c             	push   0xc(%ebp)
405643:	c7 45 e4 ff ff ff 7f 	movl   $0x7fffffff,-0x1c(%ebp)
40564a:	50                   	push   %eax
40564b:	e8 80 1e 00 00       	call   0x4074d0
405650:	83 c4 0c             	add    $0xc,%esp
405653:	ff 4d e4             	decl   -0x1c(%ebp)
405656:	8b f0                	mov    %eax,%esi
405658:	78 08                	js     0x405662
40565a:	8b 45 e0             	mov    -0x20(%ebp),%eax
40565d:	80 20 00             	andb   $0x0,(%eax)
405660:	eb 0d                	jmp    0x40566f
405662:	8d 45 e0             	lea    -0x20(%ebp),%eax
405665:	50                   	push   %eax
405666:	6a 00                	push   $0x0
405668:	e8 17 27 00 00       	call   0x407d84
40566d:	59                   	pop    %ecx
40566e:	59                   	pop    %ecx
40566f:	8b c6                	mov    %esi,%eax
405671:	5e                   	pop    %esi
405672:	c9                   	leave
405673:	c3                   	ret
405674:	55                   	push   %ebp
405675:	8b ec                	mov    %esp,%ebp
405677:	6a ff                	push   $0xffffffff
405679:	68 f0 d3 40 00       	push   $0x40d3f0
40567e:	68 74 87 40 00       	push   $0x408774
405683:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
405689:	50                   	push   %eax
40568a:	64 89 25 00 00 00 00 	mov    %esp,%fs:0x0
405691:	83 ec 58             	sub    $0x58,%esp