40530d:	53                   	push   %ebx
40530e:	56                   	push   %esi
40530f:	57                   	push   %edi
405310:	8b f9                	mov    %ecx,%edi
405312:	8b 57 1c             	mov    0x1c(%edi),%edx
405315:	8d 47 3c             	lea    0x3c(%edi),%eax
405318:	39 02                	cmp    %eax,(%edx)
40531a:	75 1a                	jne    0x405336
40531c:	83 7d 14 01          	cmpl   $0x1,0x14(%ebp)
405320:	75 14                	jne    0x405336
405322:	83 7f 38 00          	cmpl   $0x0,0x38(%edi)
405326:	75 0e                	jne    0x405336
405328:	8b 75 0c             	mov    0xc(%ebp),%esi
40532b:	8b 5d 10             	mov    0x10(%ebp),%ebx
40532e:	83 c6 ff             	add    $0xffffffff,%esi
405331:	83 d3 ff             	adc    $0xffffffff,%ebx
405334:	eb 06                	jmp    0x40533c
405336:	8b 5d 10             	mov    0x10(%ebp),%ebx
405339:	8b 75 0c             	mov    0xc(%ebp),%esi
40533c:	83 7f 4c 00          	cmpl   $0x0,0x4c(%edi)
405340:	74 69                	je     0x4053ab
405342:	e8 7f 0d 00 00       	call   0x4060c6
405347:	84 c0                	test   %al,%al
405349:	74 60                	je     0x4053ab
40534b:	8b c6                	mov    %esi,%eax
40534d:	0b c3                	or     %ebx,%eax
40534f:	75 06                	jne    0x405357
405351:	83 7d 14 01          	cmpl   $0x1,0x14(%ebp)
405355:	74 14                	je     0x40536b
405357:	ff 75 14             	push   0x14(%ebp)
40535a:	53                   	push   %ebx
40535b:	56                   	push   %esi
40535c:	ff 77 4c             	push   0x4c(%edi)
40535f:	e8 69 39 01 00       	call   0x418ccd
405364:	83 c4 10             	add    $0x10,%esp
405367:	85 c0                	test   %eax,%eax
405369:	75 40                	jne    0x4053ab
40536b:	8d 44 24 10          	lea    0x10(%esp),%eax
40536f:	50                   	push   %eax
405370:	ff 77 4c             	push   0x4c(%edi)
405373:	e8 d9 a0 02 00       	call   0x42f451
405378:	59                   	pop    %ecx
405379:	59                   	pop    %ecx
40537a:	85 c0                	test   %eax,%eax
40537c:	75 2d                	jne    0x4053ab
40537e:	8b cf                	mov    %edi,%ecx
405380:	e8 1e 0d 00 00       	call   0x4060a3
405385:	8b 45 08             	mov    0x8(%ebp),%eax
405388:	8b 77 40             	mov    0x40(%edi),%esi
40538b:	8b 7f 44             	mov    0x44(%edi),%edi
40538e:	8b 4c 24 10          	mov    0x10(%esp),%ecx
405392:	83 20 00             	andl   $0x0,(%eax)
405395:	8b 54 24 14          	mov    0x14(%esp),%edx
405399:	83 60 04 00          	andl   $0x0,0x4(%eax)
40539d:	89 48 08             	mov    %ecx,0x8(%eax)
4053a0:	89 50 0c             	mov    %edx,0xc(%eax)
4053a3:	89 70 10             	mov    %esi,0x10(%eax)
4053a6:	89 78 14             	mov    %edi,0x14(%eax)
4053a9:	eb 0c                	jmp    0x4053b7
4053ab:	51                   	push   %ecx
4053ac:	51                   	push   %ecx
4053ad:	8b 4d 08             	mov    0x8(%ebp),%ecx
4053b0:	e8 26 0f 00 00       	call   0x4062db
4053b5:	8b c1                	mov    %ecx,%eax
4053b7:	5f                   	pop    %edi
4053b8:	5e                   	pop    %esi
4053b9:	5b                   	pop    %ebx
4053ba:	8b e5                	mov    %ebp,%esp
4053bc:	5d                   	pop    %ebp
4053bd:	c2 14 00             	ret    $0x14
4053c0:	55                   	push   %ebp
4053c1:	8b ec                	mov    %esp,%ebp
4053c3:	83 e4 f8             	and    $0xfffffff8,%esp
4053c6:	83 ec 2c             	sub    $0x2c,%esp
4053c9:	a1 c0 d0 43 00       	mov    0x43d0c0,%eax
4053ce:	33 c4                	xor    %esp,%eax
4053d0:	89 44 24 28          	mov    %eax,0x28(%esp)
4053d4:	53                   	push   %ebx
4053d5:	8b d9                	mov    %ecx,%ebx
4053d7:	56                   	push   %esi
4053d8:	57                   	push   %edi
4053d9:	8b 43 1c             	mov    0x1c(%ebx),%eax
4053dc:	8b 08                	mov    (%eax),%ecx
4053de:	85 c9                	test   %ecx,%ecx
4053e0:	74 23                	je     0x405405
4053e2:	8b 53 2c             	mov    0x2c(%ebx),%edx
4053e5:	8b 32                	mov    (%edx),%esi
4053e7:	8d 04 0e             	lea    (%esi,%ecx,1),%eax
4053ea:	3b c8                	cmp    %eax,%ecx
4053ec:	73 17                	jae    0x405405
4053ee:	8d 46 ff             	lea    -0x1(%esi),%eax
4053f1:	89 02                	mov    %eax,(%edx)
4053f3:	8b 4b 1c             	mov    0x1c(%ebx),%ecx
4053f6:	8b 11                	mov    (%ecx),%edx
4053f8:	8d 42 01             	lea    0x1(%edx),%eax
4053fb:	89 01                	mov    %eax,(%ecx)
4053fd:	0f b6 02             	movzbl (%edx),%eax
405400:	e9 81 01 00 00       	jmp    0x405586
405405:	83 7b 4c 00          	cmpl   $0x0,0x4c(%ebx)
405409:	75 08                	jne    0x405413
40540b:	83 c8 ff             	or     $0xffffffff,%eax
40540e:	e9 73 01 00 00       	jmp    0x405586
405413:	8b cb                	mov    %ebx,%ecx
405415:	e8 89 0c 00 00       	call   0x4060a3
40541a:	8b 43 4c             	mov    0x4c(%ebx),%eax
40541d:	33 c9                	xor    %ecx,%ecx
40541f:	50                   	push   %eax
405420:	39 4b 38             	cmp    %ecx,0x38(%ebx)
405423:	75 19                	jne    0x40543e
405425:	e8 eb ab 01 00       	call   0x420015
40542a:	83 cf ff             	or     $0xffffffff,%edi
40542d:	59                   	pop    %ecx
40542e:	3b c7                	cmp    %edi,%eax
405430:	0f 84 4e 01 00 00    	je     0x405584
405436:	0f b6 f8             	movzbl %al,%edi
405439:	e9 46 01 00 00       	jmp    0x405584
40543e:	c7 44 24 34 0f 00 00 	movl   $0xf,0x34(%esp)
405445:	00
405446:	89 4c 24 30          	mov    %ecx,0x30(%esp)
40544a:	88 4c 24 20          	mov    %cl,0x20(%esp)
40544e:	e8 c2 ab 01 00       	call   0x420015
405453:	83 cf ff             	or     $0xffffffff,%edi
405456:	e9 c5 00 00 00       	jmp    0x405520
40545b:	50                   	push   %eax
40545c:	6a 01                	push   $0x1
40545e:	8d 4c 24 24          	lea    0x24(%esp),%ecx
405462:	e8 4f 0b 00 00       	call   0x405fb6
405467:	83 7c 24 30 10       	cmpl   $0x10,0x30(%esp)
40546c:	8d 4c 24 1c          	lea    0x1c(%esp),%ecx
405470:	8b 44 24 2c          	mov    0x2c(%esp),%eax
405474:	8d 74 24 1c          	lea    0x1c(%esp),%esi
405478:	0f 43 4c 24 1c       	cmovae 0x1c(%esp),%ecx
40547d:	0f 43 74 24 1c       	cmovae 0x1c(%esp),%esi
405482:	03 c1                	add    %ecx,%eax
405484:	8b 4b 38             	mov    0x38(%ebx),%ecx
405487:	8b 11                	mov    (%ecx),%edx
405489:	8d 4c 24 18          	lea    0x18(%esp),%ecx
40548d:	51                   	push   %ecx
40548e:	8d 4c 24 18          	lea    0x18(%esp),%ecx
405492:	51                   	push   %ecx
405493:	8d 4c 24 1b          	lea    0x1b(%esp),%ecx
405497:	51                   	push   %ecx
405498:	8d 4c 24 20          	lea    0x20(%esp),%ecx
40549c:	51                   	push   %ecx
40549d:	8b 4b 38             	mov    0x38(%ebx),%ecx
4054a0:	50                   	push   %eax
4054a1:	56                   	push   %esi
4054a2:	8d 43 40             	lea    0x40(%ebx),%eax
4054a5:	50                   	push   %eax
4054a6:	ff 52 18             	call   *0x18(%edx)
4054a9:	85 c0                	test   %eax,%eax
4054ab:	0f 88 c6 00 00 00    	js     0x405577
4054b1:	83 f8 01             	cmp    $0x1,%eax
4054b4:	7e 39                	jle    0x4054ef
4054b6:	83 f8 03             	cmp    $0x3,%eax
4054b9:	0f 85 b8 00 00 00    	jne    0x405577
4054bf:	83 7c 24 2c 01       	cmpl   $0x1,0x2c(%esp)
4054c4:	72 52                	jb     0x405518
4054c6:	83 7c 24 30 10       	cmpl   $0x10,0x30(%esp)
4054cb:	72 5e                	jb     0x40552b
4054cd:	8b 44 24 1c          	mov    0x1c(%esp),%eax
4054d1:	85 c0                	test   %eax,%eax
4054d3:	75 5a                	jne    0x40552f
4054d5:	88 44 24 13          	mov    %al,0x13(%esp)
4054d9:	e8 93 71 01 00       	call   0x41c671
4054de:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
4054e4:	e8 05 7f 00 00       	call   0x40d3ee
4054e9:	8a 44 24 13          	mov    0x13(%esp),%al
4054ed:	eb 46                	jmp    0x405535
4054ef:	8d 44 24 13          	lea    0x13(%esp),%eax
4054f3:	39 44 24 18          	cmp    %eax,0x18(%esp)
4054f7:	75 41                	jne    0x40553a
4054f9:	83 7c 24 30 10       	cmpl   $0x10,0x30(%esp)
4054fe:	8d 4c 24 1c          	lea    0x1c(%esp),%ecx
405502:	8b 44 24 14          	mov    0x14(%esp),%eax
405506:	0f 43 4c 24 1c       	cmovae 0x1c(%esp),%ecx
40550b:	2b c1                	sub    %ecx,%eax
40550d:	50                   	push   %eax
40550e:	51                   	push   %ecx
40550f:	8d 4c 24 24          	lea    0x24(%esp),%ecx
405513:	e8 bf 09 00 00       	call   0x405ed7
405518:	ff 73 4c             	push   0x4c(%ebx)
40551b:	e8 f5 aa 01 00       	call   0x420015
405520:	59                   	pop    %ecx
405521:	3b c7                	cmp    %edi,%eax
405523:	0f 85 32 ff ff ff    	jne    0x40545b
405529:	eb 4c                	jmp    0x405577
40552b:	8d 44 24 1c          	lea    0x1c(%esp),%eax
40552f:	8a 00                	mov    (%eax),%al
405531:	88 44 24 13          	mov    %al,0x13(%esp)
405535:	0f b6 f8             	movzbl %al,%edi
405538:	eb 3d                	jmp    0x405577
40553a:	83 7c 24 30 10       	cmpl   $0x10,0x30(%esp)
40553f:	8d 44 24 1c          	lea    0x1c(%esp),%eax
405543:	8b 74 24 2c          	mov    0x2c(%esp),%esi
405547:	0f 43 44 24 1c       	cmovae 0x1c(%esp),%eax
40554c:	8b 4c 24 14          	mov    0x14(%esp),%ecx
405550:	2b f1                	sub    %ecx,%esi
405552:	03 f0                	add    %eax,%esi
405554:	85 f6                	test   %esi,%esi
405556:	7e 1a                	jle    0x405572
405558:	ff 73 4c             	push   0x4c(%ebx)
40555b:	4e                   	dec    %esi
40555c:	0f be 04 0e          	movsbl (%esi,%ecx,1),%eax
405560:	50                   	push   %eax
405561:	e8 bb af 01 00       	call   0x420521
405566:	59                   	pop    %ecx
405567:	59                   	pop    %ecx
405568:	85 f6                	test   %esi,%esi
40556a:	7e 06                	jle    0x405572
40556c:	8b 4c 24 14          	mov    0x14(%esp),%ecx
405570:	eb e6                	jmp    0x405558
405572:	0f b6 7c 24 13       	movzbl 0x13(%esp),%edi
405577:	6a 00                	push   $0x0
405579:	6a 01                	push   $0x1
40557b:	8d 4c 24 24          	lea    0x24(%esp),%ecx
40557f:	e8 7b 08 00 00       	call   0x405dff
405584:	8b c7                	mov    %edi,%eax
405586:	8b 4c 24 34          	mov    0x34(%esp),%ecx
40558a:	5f                   	pop    %edi
40558b:	5e                   	pop    %esi
40558c:	5b                   	pop    %ebx
40558d:	33 cc                	xor    %esp,%ecx
40558f:	e8 13 47 00 00       	call   0x409ca7
405594:	8b e5                	mov    %ebp,%esp
405596:	5d                   	pop    %ebp
405597:	c3                   	ret
405598:	56                   	push   %esi
405599:	8b f1                	mov    %ecx,%esi
40559b:	8b 46 1c             	mov    0x1c(%esi),%eax
40559e:	8b 08                	mov    (%eax),%ecx
4055a0:	85 c9                	test   %ecx,%ecx
4055a2:	74 10                	je     0x4055b4
4055a4:	8b 46 2c             	mov    0x2c(%esi),%eax
4055a7:	8b 00                	mov    (%eax),%eax
4055a9:	03 c1                	add    %ecx,%eax
4055ab:	3b c8                	cmp    %eax,%ecx
4055ad:	73 05                	jae    0x4055b4
4055af:	0f b6 01             	movzbl (%ecx),%eax
4055b2:	5e                   	pop    %esi
4055b3:	c3                   	ret
4055b4:	8b 06                	mov    (%esi),%eax
4055b6:	8b ce                	mov    %esi,%ecx
4055b8:	57                   	push   %edi
4055b9:	ff 50 1c             	call   *0x1c(%eax)
4055bc:	8b f8                	mov    %eax,%edi
4055be:	83 c8 ff             	or     $0xffffffff,%eax
4055c1:	3b f8                	cmp    %eax,%edi
4055c3:	74 0a                	je     0x4055cf
4055c5:	8b 06                	mov    (%esi),%eax
4055c7:	8b ce                	mov    %esi,%ecx
4055c9:	57                   	push   %edi
4055ca:	ff 50 10             	call   *0x10(%eax)
4055cd:	8b c7                	mov    %edi,%eax
4055cf:	5f                   	pop    %edi
4055d0:	5e                   	pop    %esi
4055d1:	c3                   	ret
4055d2:	53                   	push   %ebx
4055d3:	8b 5c 24 08          	mov    0x8(%esp),%ebx
4055d7:	55                   	push   %ebp
4055d8:	56                   	push   %esi
4055d9:	8b f1                	mov    %ecx,%esi
4055db:	83 cd ff             	or     $0xffffffff,%ebp
4055de:	8b 46 1c             	mov    0x1c(%esi),%eax
4055e1:	8b 08                	mov    (%eax),%ecx
4055e3:	85 c9                	test   %ecx,%ecx
4055e5:	74 28                	je     0x40560f
4055e7:	8b 46 0c             	mov    0xc(%esi),%eax
4055ea:	39 08                	cmp    %ecx,(%eax)
4055ec:	73 21                	jae    0x40560f
4055ee:	3b dd                	cmp    %ebp,%ebx
4055f0:	74 08                	je     0x4055fa
4055f2:	0f b6 41 ff          	movzbl -0x1(%ecx),%eax
4055f6:	3b c3                	cmp    %ebx,%eax
4055f8:	75 15                	jne    0x40560f
4055fa:	8b 46 2c             	mov    0x2c(%esi),%eax
4055fd:	ff 00                	incl   (%eax)
4055ff:	8b 46 1c             	mov    0x1c(%esi),%eax
405602:	ff 08                	decl   (%eax)
405604:	33 c0                	xor    %eax,%eax
405606:	3b dd                	cmp    %ebp,%ebx
405608:	0f 44 d8             	cmove  %eax,%ebx
40560b:	8b c3                	mov    %ebx,%eax
40560d:	eb 5c                	jmp    0x40566b
40560f:	83 7e 4c 00          	cmpl   $0x0,0x4c(%esi)
405613:	57                   	push   %edi
405614:	74 52                	je     0x405668
405616:	3b dd                	cmp    %ebp,%ebx
405618:	74 4e                	je     0x405668
40561a:	83 7e 38 00          	cmpl   $0x0,0x38(%esi)
40561e:	75 12                	jne    0x405632
405620:	ff 76 4c             	push   0x4c(%esi)
405623:	0f b6 cb             	movzbl %bl,%ecx
405626:	51                   	push   %ecx
405627:	e8 f5 ae 01 00       	call   0x420521
40562c:	59                   	pop    %ecx
40562d:	59                   	pop    %ecx
40562e:	3b c5                	cmp    %ebp,%eax
405630:	75 32                	jne    0x405664
405632:	8b 7e 1c             	mov    0x1c(%esi),%edi
405635:	8d 4e 3c             	lea    0x3c(%esi),%ecx
405638:	39 0f                	cmp    %ecx,(%edi)
40563a:	74 2c                	je     0x405668
40563c:	8b 56 0c             	mov    0xc(%esi),%edx
40563f:	88 19                	mov    %bl,(%ecx)
405641:	8b 02                	mov    (%edx),%eax
405643:	3b c1                	cmp    %ecx,%eax
405645:	74 0d                	je     0x405654
405647:	89 46 50             	mov    %eax,0x50(%esi)
40564a:	8b 46 2c             	mov    0x2c(%esi),%eax
40564d:	8b 00                	mov    (%eax),%eax
40564f:	03 07                	add    (%edi),%eax
405651:	89 46 54             	mov    %eax,0x54(%esi)
405654:	89 0a                	mov    %ecx,(%edx)
405656:	8b 46 1c             	mov    0x1c(%esi),%eax
405659:	89 08                	mov    %ecx,(%eax)
40565b:	8b 46 2c             	mov    0x2c(%esi),%eax
40565e:	c7 00 01 00 00 00    	movl   $0x1,(%eax)
405664:	8b c3                	mov    %ebx,%eax
405666:	eb 02                	jmp    0x40566a
405668:	8b c5                	mov    %ebp,%eax
40566a:	5f                   	pop    %edi
40566b:	5e                   	pop    %esi
40566c:	5d                   	pop    %ebp
40566d:	5b                   	pop    %ebx
40566e:	c2 04 00             	ret    $0x4
405671:	55                   	push   %ebp
405672:	8b ec                	mov    %esp,%ebp
405674:	83 e4 f8             	and    $0xfffffff8,%esp
405677:	83 ec 2c             	sub    $0x2c,%esp
40567a:	a1 c0 d0 43 00       	mov    0x43d0c0,%eax
40567f:	33 c4                	xor    %esp,%eax
405681:	89 44 24 28          	mov    %eax,0x28(%esp)
405685:	53                   	push   %ebx
405686:	56                   	push   %esi
405687:	57                   	push   %edi
405688:	83 cf ff             	or     $0xffffffff,%edi
40568b:	8b d9                	mov    %ecx,%ebx
40568d:	39 7d 08             	cmp    %edi,0x8(%ebp)
405690:	75 07                	jne    0x405699
405692:	33 c0                	xor    %eax,%eax
405694:	e9 5e 01 00 00       	jmp    0x4057f7
405699:	8b 43 20             	mov    0x20(%ebx),%eax
40569c:	8b 08                	mov    (%eax),%ecx
40569e:	85 c9                	test   %ecx,%ecx
4056a0:	74 25                	je     0x4056c7
4056a2:	8b 53 30             	mov    0x30(%ebx),%edx
4056a5:	8b 32                	mov    (%edx),%esi
4056a7:	8d 04 0e             	lea    (%esi,%ecx,1),%eax
4056aa:	3b c8                	cmp    %eax,%ecx