52a514:	89 85 7c ff ff ff    	mov    %eax,-0x84(%ebp)
52a51a:	33 c0                	xor    %eax,%eax
52a51c:	89 85 64 ff ff ff    	mov    %eax,-0x9c(%ebp)
52a522:	89 85 74 ff ff ff    	mov    %eax,-0x8c(%ebp)
52a528:	8b 77 08             	mov    0x8(%edi),%esi
52a52b:	89 85 60 ff ff ff    	mov    %eax,-0xa0(%ebp)
52a531:	89 45 88             	mov    %eax,-0x78(%ebp)
52a534:	89 45 8c             	mov    %eax,-0x74(%ebp)
52a537:	89 85 68 ff ff ff    	mov    %eax,-0x98(%ebp)
52a53d:	8b 07                	mov    (%edi),%eax
52a53f:	89 7d dc             	mov    %edi,-0x24(%ebp)
52a542:	89 55 d8             	mov    %edx,-0x28(%ebp)
52a545:	c7 85 70 ff ff ff 00 	movl   $0x0,-0x90(%ebp)
52a54c:	00 00 00
52a54f:	c7 85 78 ff ff ff 00 	movl   $0x0,-0x88(%ebp)
52a556:	00 00 00
52a559:	c6 45 af 00          	movb   $0x0,-0x51(%ebp)
52a55d:	89 85 6c ff ff ff    	mov    %eax,-0x94(%ebp)
52a563:	89 75 90             	mov    %esi,-0x70(%ebp)
52a566:	85 f6                	test   %esi,%esi
52a568:	75 20                	jne    0x52a58a
52a56a:	39 77 74             	cmp    %esi,0x74(%edi)
52a56d:	75 0a                	jne    0x52a579
52a56f:	f6 40 4c 08          	testb  $0x8,0x4c(%eax)
52a573:	75 04                	jne    0x52a579
52a575:	c6 47 17 01          	movb   $0x1,0x17(%edi)
52a579:	57                   	push   %edi
52a57a:	e8 91 7e 01 00       	call   0x542410
52a57f:	8b 55 d8             	mov    -0x28(%ebp),%edx
52a582:	8b f0                	mov    %eax,%esi
52a584:	83 c4 04             	add    $0x4,%esp
52a587:	89 75 90             	mov    %esi,-0x70(%ebp)
52a58a:	0f bf 5a 2a          	movswl 0x2a(%edx),%ebx
52a58e:	8b 4a 24             	mov    0x24(%edx),%ecx
52a591:	89 5d 80             	mov    %ebx,-0x80(%ebp)
52a594:	84 c9                	test   %cl,%cl
52a596:	78 10                	js     0x52a5a8
52a598:	c7 45 b0 00 00 00 00 	movl   $0x0,-0x50(%ebp)
52a59f:	c7 45 84 01 00 00 00 	movl   $0x1,-0x7c(%ebp)
52a5a6:	eb 24                	jmp    0x52a5cc
52a5a8:	8b 52 08             	mov    0x8(%edx),%edx
52a5ab:	89 55 b0             	mov    %edx,-0x50(%ebp)
52a5ae:	85 d2                	test   %edx,%edx
52a5b0:	74 13                	je     0x52a5c5
52a5b2:	8b 42 38             	mov    0x38(%edx),%eax
52a5b5:	24 03                	and    $0x3,%al
52a5b7:	3c 02                	cmp    $0x2,%al
52a5b9:	74 07                	je     0x52a5c2
52a5bb:	8b 52 14             	mov    0x14(%edx),%edx
52a5be:	85 d2                	test   %edx,%edx
52a5c0:	75 f0                	jne    0x52a5b2
52a5c2:	89 55 b0             	mov    %edx,-0x50(%ebp)
52a5c5:	0f b7 42 32          	movzwl 0x32(%edx),%eax
52a5c9:	89 45 84             	mov    %eax,-0x7c(%ebp)
52a5cc:	f7 c1 00 08 00 00    	test   $0x800,%ecx
52a5d2:	0f 84 d7 02 00 00    	je     0x52a8af
52a5d8:	33 d2                	xor    %edx,%edx
52a5da:	33 ff                	xor    %edi,%edi
52a5dc:	33 c0                	xor    %eax,%eax
52a5de:	89 55 c8             	mov    %edx,-0x38(%ebp)
52a5e1:	89 7d bc             	mov    %edi,-0x44(%ebp)
52a5e4:	89 45 d4             	mov    %eax,-0x2c(%ebp)
52a5e7:	33 c9                	xor    %ecx,%ecx
52a5e9:	89 4d cc             	mov    %ecx,-0x34(%ebp)
52a5ec:	85 db                	test   %ebx,%ebx
52a5ee:	0f 8e 73 02 00 00    	jle    0x52a867
52a5f4:	33 ff                	xor    %edi,%edi
52a5f6:	89 7d b4             	mov    %edi,-0x4c(%ebp)
52a5f9:	0f 1f 80 00 00 00 00 	nopl   0x0(%eax)
52a600:	8b 5d d8             	mov    -0x28(%ebp),%ebx
52a603:	8b 5b 04             	mov    0x4(%ebx),%ebx
52a606:	03 df                	add    %edi,%ebx
52a608:	0f b6 7b 0c          	movzbl 0xc(%ebx),%edi
52a60c:	85 ff                	test   %edi,%edi
52a60e:	0f 84 32 02 00 00    	je     0x52a846
52a614:	8b 45 d8             	mov    -0x28(%ebp),%eax
52a617:	0f bf 40 28          	movswl 0x28(%eax),%eax
52a61b:	3b c8                	cmp    %eax,%ecx
52a61d:	0f 84 20 02 00 00    	je     0x52a843
52a623:	0f b7 43 10          	movzwl 0x10(%ebx),%eax
52a627:	83 e0 60             	and    $0x60,%eax
52a62a:	74 10                	je     0x52a63c
52a62c:	85 d2                	test   %edx,%edx
52a62e:	75 0c                	jne    0x52a63c
52a630:	8b 45 d4             	mov    -0x2c(%ebp),%eax
52a633:	40                   	inc    %eax
52a634:	89 45 d4             	mov    %eax,-0x2c(%ebp)
52a637:	e9 0a 02 00 00       	jmp    0x52a846
52a63c:	83 7d c4 00          	cmpl   $0x0,-0x3c(%ebp)
52a640:	8b 55 c8             	mov    -0x38(%ebp),%edx
52a643:	74 14                	je     0x52a659
52a645:	8b 55 c4             	mov    -0x3c(%ebp),%edx
52a648:	83 3c 8a 00          	cmpl   $0x0,(%edx,%ecx,4)
52a64c:	8b 55 c8             	mov    -0x38(%ebp),%edx
52a64f:	7d 08                	jge    0x52a659
52a651:	85 c0                	test   %eax,%eax
52a653:	0f 84 ea 01 00 00    	je     0x52a843
52a659:	80 7d 28 0b          	cmpb   $0xb,0x28(%ebp)
52a65d:	8b 4d cc             	mov    -0x34(%ebp),%ecx
52a660:	74 19                	je     0x52a67b
52a662:	0f b6 7d 28          	movzbl 0x28(%ebp),%edi
52a666:	83 ff 05             	cmp    $0x5,%edi
52a669:	75 1a                	jne    0x52a685
52a66b:	85 d2                	test   %edx,%edx
52a66d:	75 05                	jne    0x52a674
52a66f:	39 53 04             	cmp    %edx,0x4(%ebx)
52a672:	75 1d                	jne    0x52a691
52a674:	bf 02 00 00 00       	mov    $0x2,%edi
52a679:	eb 16                	jmp    0x52a691
52a67b:	83 ff 0b             	cmp    $0xb,%edi
52a67e:	75 e6                	jne    0x52a666
52a680:	bf 02 00 00 00       	mov    $0x2,%edi
52a685:	85 d2                	test   %edx,%edx
52a687:	74 08                	je     0x52a691
52a689:	85 c0                	test   %eax,%eax
52a68b:	0f 84 b2 01 00 00    	je     0x52a843
52a691:	51                   	push   %ecx
52a692:	ff 75 d8             	push   -0x28(%ebp)
52a695:	e8 b6 37 01 00       	call   0x53de50
52a69a:	8b 55 1c             	mov    0x1c(%ebp),%edx
52a69d:	83 c4 08             	add    $0x8,%esp
52a6a0:	98                   	cwtl
52a6a1:	42                   	inc    %edx
52a6a2:	03 d0                	add    %eax,%edx
52a6a4:	8d 47 ff             	lea    -0x1(%edi),%eax
52a6a7:	89 55 c0             	mov    %edx,-0x40(%ebp)
52a6aa:	83 f8 04             	cmp    $0x4,%eax
52a6ad:	0f 87 44 01 00 00    	ja     0x52a7f7
52a6b3:	ff 24 85 04 c5 52 00 	jmp    *0x52c504(,%eax,4)
52a6ba:	52                   	push   %edx
52a6bb:	6a 33                	push   $0x33
52a6bd:	56                   	push   %esi
52a6be:	e8 bd 73 01 00       	call   0x541a80
52a6c3:	ff 45 bc             	incl   -0x44(%ebp)
52a6c6:	8b f8                	mov    %eax,%edi
52a6c8:	8b 43 04             	mov    0x4(%ebx),%eax
52a6cb:	8b 5d c0             	mov    -0x40(%ebp),%ebx
52a6ce:	53                   	push   %ebx
52a6cf:	50                   	push   %eax
52a6d0:	ff 75 dc             	push   -0x24(%ebp)
52a6d3:	89 45 a8             	mov    %eax,-0x58(%ebp)
52a6d6:	e8 75 ab ff ff       	call   0x525250
52a6db:	83 c4 18             	add    $0x18,%esp
52a6de:	3b c3                	cmp    %ebx,%eax
52a6e0:	74 28                	je     0x52a70a
52a6e2:	8b 4d dc             	mov    -0x24(%ebp),%ecx
52a6e5:	8b 49 08             	mov    0x8(%ecx),%ecx
52a6e8:	85 c9                	test   %ecx,%ecx
52a6ea:	74 1e                	je     0x52a70a
52a6ec:	53                   	push   %ebx
52a6ed:	50                   	push   %eax
52a6ee:	8b 45 a8             	mov    -0x58(%ebp),%eax
52a6f1:	8b 40 04             	mov    0x4(%eax),%eax
52a6f4:	25 00 00 20 00       	and    $0x200000,%eax
52a6f9:	f7 d8                	neg    %eax
52a6fb:	1b c0                	sbb    %eax,%eax
52a6fd:	83 c0 4e             	add    $0x4e,%eax
52a700:	50                   	push   %eax
52a701:	51                   	push   %ecx
52a702:	e8 d9 73 01 00       	call   0x541ae0
52a707:	83 c4 10             	add    $0x10,%esp
52a70a:	8b 56 6c             	mov    0x6c(%esi),%edx
52a70d:	85 ff                	test   %edi,%edi
52a70f:	79 03                	jns    0x52a714
52a711:	8d 7a ff             	lea    -0x1(%edx),%edi
52a714:	8b 06                	mov    (%esi),%eax
52a716:	80 78 51 00          	cmpb   $0x0,0x51(%eax)
52a71a:	74 0d                	je     0x52a729
52a71c:	b8 ec 02 73 00       	mov    $0x7302ec,%eax
52a721:	89 50 08             	mov    %edx,0x8(%eax)
52a724:	e9 17 01 00 00       	jmp    0x52a840
52a729:	8b 46 68             	mov    0x68(%esi),%eax
52a72c:	8d 0c bf             	lea    (%edi,%edi,4),%ecx
52a72f:	89 54 88 08          	mov    %edx,0x8(%eax,%ecx,4)
52a733:	8d 04 88             	lea    (%eax,%ecx,4),%eax
52a736:	e9 05 01 00 00       	jmp    0x52a840
52a73b:	8b 4d dc             	mov    -0x24(%ebp),%ecx
52a73e:	8b 41 74             	mov    0x74(%ecx),%eax
52a741:	85 c0                	test   %eax,%eax
52a743:	0f 45 c8             	cmovne %eax,%ecx
52a746:	c6 41 15 01          	movb   $0x1,0x15(%ecx)
52a74a:	ff 33                	push   (%ebx)
52a74c:	8b 45 d8             	mov    -0x28(%ebp),%eax
52a74f:	ff 30                	push   (%eax)
52a751:	68 24 9d 6b 00       	push   $0x6b9d24
52a756:	ff b5 6c ff ff ff    	push   -0x94(%ebp)
52a75c:	e8 df 67 00 00       	call   0x530f40
52a761:	8b 4e 6c             	mov    0x6c(%esi),%ecx
52a764:	83 c4 10             	add    $0x10,%esp
52a767:	8b d0                	mov    %eax,%edx
52a769:	8b 5d c0             	mov    -0x40(%ebp),%ebx
52a76c:	89 55 a8             	mov    %edx,-0x58(%ebp)
52a76f:	39 4e 70             	cmp    %ecx,0x70(%esi)
52a772:	7f 17                	jg     0x52a78b
52a774:	53                   	push   %ebx
52a775:	57                   	push   %edi
52a776:	68 13 05 00 00       	push   $0x513
52a77b:	6a 43                	push   $0x43
52a77d:	56                   	push   %esi
52a77e:	e8 7d bd fd ff       	call   0x506500
52a783:	8b 55 a8             	mov    -0x58(%ebp),%edx
52a786:	83 c4 14             	add    $0x14,%esp
52a789:	eb 2b                	jmp    0x52a7b6
52a78b:	8d 41 01             	lea    0x1(%ecx),%eax
52a78e:	89 46 6c             	mov    %eax,0x6c(%esi)
52a791:	8d 0c 89             	lea    (%ecx,%ecx,4),%ecx
52a794:	8b 46 68             	mov    0x68(%esi),%eax
52a797:	c7 04 88 43 00 00 00 	movl   $0x43,(%eax,%ecx,4)
52a79e:	c7 44 88 04 13 05 00 	movl   $0x513,0x4(%eax,%ecx,4)
52a7a5:	00
52a7a6:	89 7c 88 08          	mov    %edi,0x8(%eax,%ecx,4)
52a7aa:	89 5c 88 0c          	mov    %ebx,0xc(%eax,%ecx,4)
52a7ae:	c7 44 88 10 00 00 00 	movl   $0x0,0x10(%eax,%ecx,4)
52a7b5:	00
52a7b6:	8b 06                	mov    (%esi),%eax
52a7b8:	80 78 51 00          	cmpb   $0x0,0x51(%eax)
52a7bc:	74 0e                	je     0x52a7cc
52a7be:	52                   	push   %edx
52a7bf:	6a f9                	push   $0xfffffff9
52a7c1:	50                   	push   %eax
52a7c2:	e8 e9 94 fd ff       	call   0x503cb0
52a7c7:	83 c4 0c             	add    $0xc,%esp
52a7ca:	eb 12                	jmp    0x52a7de
52a7cc:	8b 46 6c             	mov    0x6c(%esi),%eax
52a7cf:	8d 0c 80             	lea    (%eax,%eax,4),%ecx
52a7d2:	8b 46 68             	mov    0x68(%esi),%eax
52a7d5:	c6 44 88 ed f9       	movb   $0xf9,-0x13(%eax,%ecx,4)
52a7da:	89 54 88 fc          	mov    %edx,-0x4(%eax,%ecx,4)
52a7de:	8b 46 6c             	mov    0x6c(%esi),%eax
52a7e1:	85 c0                	test   %eax,%eax
52a7e3:	7e 5b                	jle    0x52a840
52a7e5:	8d 0c 80             	lea    (%eax,%eax,4),%ecx
52a7e8:	ba 01 00 00 00       	mov    $0x1,%edx
52a7ed:	8b 46 68             	mov    0x68(%esi),%eax
52a7f0:	66 89 54 88 ee       	mov    %dx,-0x12(%eax,%ecx,4)
52a7f5:	eb 49                	jmp    0x52a840
52a7f7:	8b 4e 6c             	mov    0x6c(%esi),%ecx
52a7fa:	39 4e 70             	cmp    %ecx,0x70(%esi)
52a7fd:	7f 13                	jg     0x52a812
52a7ff:	6a 00                	push   $0x0
52a801:	ff 75 2c             	push   0x2c(%ebp)
52a804:	52                   	push   %edx
52a805:	6a 32                	push   $0x32
52a807:	56                   	push   %esi
52a808:	e8 f3 bc fd ff       	call   0x506500
52a80d:	83 c4 14             	add    $0x14,%esp
52a810:	eb 2e                	jmp    0x52a840
52a812:	8d 41 01             	lea    0x1(%ecx),%eax
52a815:	89 46 6c             	mov    %eax,0x6c(%esi)
52a818:	8d 0c 89             	lea    (%ecx,%ecx,4),%ecx
52a81b:	8b 46 68             	mov    0x68(%esi),%eax
52a81e:	89 54 88 04          	mov    %edx,0x4(%eax,%ecx,4)
52a822:	8b 55 2c             	mov    0x2c(%ebp),%edx
52a825:	c7 04 88 32 00 00 00 	movl   $0x32,(%eax,%ecx,4)
52a82c:	89 54 88 08          	mov    %edx,0x8(%eax,%ecx,4)
52a830:	c7 44 88 0c 00 00 00 	movl   $0x0,0xc(%eax,%ecx,4)
52a837:	00
52a838:	c7 44 88 10 00 00 00 	movl   $0x0,0x10(%eax,%ecx,4)
52a83f:	00
52a840:	8b 55 c8             	mov    -0x38(%ebp),%edx
52a843:	8b 45 d4             	mov    -0x2c(%ebp),%eax
52a846:	8b 5d cc             	mov    -0x34(%ebp),%ebx
52a849:	8b 7d b4             	mov    -0x4c(%ebp),%edi
52a84c:	43                   	inc    %ebx
52a84d:	83 c7 14             	add    $0x14,%edi
52a850:	89 5d cc             	mov    %ebx,-0x34(%ebp)
52a853:	8b cb                	mov    %ebx,%ecx
52a855:	89 7d b4             	mov    %edi,-0x4c(%ebp)
52a858:	3b 5d 80             	cmp    -0x80(%ebp),%ebx
52a85b:	0f 8c 9f fd ff ff    	jl     0x52a600
52a861:	8b 5d 80             	mov    -0x80(%ebp),%ebx
52a864:	8b 7d bc             	mov    -0x44(%ebp),%edi
52a867:	85 c0                	test   %eax,%eax
52a869:	75 04                	jne    0x52a86f
52a86b:	85 ff                	test   %edi,%edi
52a86d:	74 3d                	je     0x52a8ac
52a86f:	85 d2                	test   %edx,%edx
52a871:	75 39                	jne    0x52a8ac
52a873:	ba 01 00 00 00       	mov    $0x1,%edx
52a878:	89 55 c8             	mov    %edx,-0x38(%ebp)
52a87b:	85 ff                	test   %edi,%edi
52a87d:	0f 8e 64 fd ff ff    	jle    0x52a5e7
52a883:	8b 4d d8             	mov    -0x28(%ebp),%ecx
52a886:	f6 41 24 60          	testb  $0x60,0x24(%ecx)
52a88a:	0f 84 57 fd ff ff    	je     0x52a5e7
52a890:	8b 45 1c             	mov    0x1c(%ebp),%eax
52a893:	51                   	push   %ecx
52a894:	40                   	inc    %eax
52a895:	50                   	push   %eax
52a896:	ff 75 dc             	push   -0x24(%ebp)
52a899:	e8 22 53 ff ff       	call   0x51fbc0
52a89e:	8b 55 c8             	mov    -0x38(%ebp),%edx
52a8a1:	83 c4 0c             	add    $0xc,%esp
52a8a4:	8b 45 d4             	mov    -0x2c(%ebp),%eax
52a8a7:	e9 3b fd ff ff       	jmp    0x52a5e7
52a8ac:	8b 7d dc             	mov    -0x24(%ebp),%edi
52a8af:	8b 5d d8             	mov    -0x28(%ebp),%ebx
52a8b2:	8b 53 18             	mov    0x18(%ebx),%edx
52a8b5:	89 55 bc             	mov    %edx,-0x44(%ebp)
52a8b8:	85 d2                	test   %edx,%edx
52a8ba:	0f 84 6b 02 00 00    	je     0x52ab2b
52a8c0:	8b 85 6c ff ff ff    	mov    -0x94(%ebp),%eax
52a8c6:	8b 40 20             	mov    0x20(%eax),%eax
52a8c9:	25 00 02 00 00       	and    $0x200,%eax
52a8ce:	83 c8 00             	or     $0x0,%eax
52a8d1:	0f 85 54 02 00 00    	jne    0x52ab2b
52a8d7:	8b 45 1c             	mov    0x1c(%ebp),%eax
52a8da:	f7 d0                	not    %eax
52a8dc:	89 47 34             	mov    %eax,0x34(%edi)
52a8df:	8a 45 28             	mov    0x28(%ebp),%al
52a8e2:	0f b6 d8             	movzbl %al,%ebx
52a8e5:	3c 0b                	cmp    $0xb,%al
52a8e7:	75 05                	jne    0x52a8ee
52a8e9:	bb 02 00 00 00       	mov    $0x2,%ebx
52a8ee:	33 c9                	xor    %ecx,%ecx
52a8f0:	89 4d cc             	mov    %ecx,-0x34(%ebp)
52a8f3:	39 0a                	cmp    %ecx,(%edx)
52a8f5:	0f 8e 26 02 00 00    	jle    0x52ab21
52a8fb:	8d 42 08             	lea    0x8(%edx),%eax
52a8fe:	c7 45 a8 fd ff 00 00 	movl   $0xfffd,-0x58(%ebp)
52a905:	89 45 9c             	mov    %eax,-0x64(%ebp)
52a908:	0f 1f 84 00 00 00 00 	nopl   0x0(%eax,%eax,1)
52a90f:	00
52a910:	83 7d c4 00          	cmpl   $0x0,-0x3c(%ebp)
52a914:	8b 78 fc             	mov    -0x4(%eax),%edi
52a917:	74 57                	je     0x52a970
52a919:	8b 4d c4             	mov    -0x3c(%ebp),%ecx
52a91c:	0f 57 c0             	xorps  %xmm0,%xmm0
52a91f:	33 c0                	xor    %eax,%eax
52a921:	c7 45 f8 00 00 00 00 	movl   $0x0,-0x8(%ebp)
52a928:	66 0f d6 45 f0       	movq   %xmm0,-0x10(%ebp)
52a92d:	89 4d f8             	mov    %ecx,-0x8(%ebp)
52a930:	8b 4d cc             	mov    -0x34(%ebp),%ecx
52a933:	66 89 45 f4          	mov    %ax,-0xc(%ebp)
52a937:	0f 11 45 e0          	movups %xmm0,-0x20(%ebp)
52a93b:	c7 45 e4 90 80 4f 00 	movl   $0x4f8090,-0x1c(%ebp)
52a942:	85 ff                	test   %edi,%edi
52a944:	74 17                	je     0x52a95d
52a946:	8d 45 e0             	lea    -0x20(%ebp),%eax
52a949:	57                   	push   %edi
52a94a:	50                   	push   %eax
52a94b:	e8 60 56 03 00       	call   0x55ffb0
52a950:	66 8b 45 f4          	mov    -0xc(%ebp),%ax
52a954:	83 c4 08             	add    $0x8,%esp
52a957:	8b 4d cc             	mov    -0x34(%ebp),%ecx
52a95a:	8b 55 bc             	mov    -0x44(%ebp),%edx
52a95d:	80 7d 24 00          	cmpb   $0x0,0x24(%ebp)
52a961:	75 04                	jne    0x52a967
52a963:	66 23 45 a8          	and    -0x58(%ebp),%ax
52a967:	66 85 c0             	test   %ax,%ax