Commons talk:CropTool/Archive 1

From Wikimedia Commons, the free media repository
Jump to navigation Jump to search
Archive 1 Archive 2 →

Gadget

Any objection to make a gadget of this awesomeness? :-) Jean-Fred (talk) 09:40, 9 December 2013 (UTC)

Not from me :) – Danmichaelo (δ) 11:51, 9 December 2013 (UTC)
If I get the dependencies list then I'll set it up. /Lokal_Profil 19:36, 18 February 2014 (UTC)
✓ Done with the help of Steinsplitter. /Lokal_Profil 18:36, 12 March 2014 (UTC)
And text changed to point users to the gadget. Future .js updates (including an i18n mechanism) goes to the (edit-protected) Mediawiki:Gadget-CropTool.js page. /Lokal_Profil 11:37, 13 March 2014 (UTC)

Option to rename

The gadget worked great, but I'm creating a detail of a painting (File:Paolo Veronese - Adoration of the Magi - WGA24820.jpg) and certainly don't want to replace the original full view. I had been told the gadget would give me an option to rename the crop & create a new version, but it didn't. So I've reverted my cropped version & given the inflexibility of Commons, can't see how to split the crop version off from the file without exporting and reloading under a new name. Am I missing something? The gadget is rather dangerous in this state, as new detail crops may start replacing originals when they should not. But nice gadget! Johnbod (talk) 15:13, 18 December 2013 (UTC)

As for splitting: sysops can do it − see COM:SPLIT.
I agree with your general opinion. In fact, could it be possible to have the 'upload as new version' behaviour as default? Per COM:OVERWRITE, this is the most likely usecase.
Jean-Fred (talk) 15:55, 18 December 2013 (UTC)
upload new version as new file
It is possible to upload the new version as a new file (c.f. screenshot on the side). Also I think that the most used option is the first one (Overwrite original, which is already default). Having a look at Category:Images with borders reveals that most of the images that should be cropped rectangular only need some black (yellow, green or whatever color) border removed. This is considered a minor edit and always should overwrite the old version instead of creating a new file and leaving a useless piece of chunk behind which will eventually be nominated for deletion. --McZusatz (talk) 18:22, 18 December 2013 (UTC)
Thanks. Strange - I don't remember seeing that, and I was looking out for it; I'll experiment later. Category:Images with borders only gives one set of images the tool could be used on (I would say a fairly minor one), and it should not be assumed it is the main one. Vast numbers of images on Commons aren't really suitable for use in articles without cropping for compositional reasons, and others have details people could want to select, but should not be over-written. Is there a record of images cropped with the tool? COM:OVERWRITE specifically says only "minor" crops should overwrite. Nearly all the ones I am likely to do will be pretty major, and I'm sure there will be others like me. Before seeing this I re-uploaded my Veronese crop as File:20131218150544!Paolo Veronese - Adoration of the Magi - WGA24820cropped.jpg which only shows about 30% of the painting. Many very famous large paintings have their own categories with up to 30 cropped details - eg Category:Details of The Triumph of Death by Peter Bruegel the Elder with 26 files. Johnbod (talk) 15:40, 19 December 2013 (UTC)
Ok, it seems highly depended on the user. I may file a bug to request an option which allows the user to set a default behavior for himself. OK? --McZusatz (talk) 00:56, 20 December 2013 (UTC)
Johnbod, did you retry the tool? I'm aware of the risk, which is why I tried making the option to "upload as new file" easily visible, and also added a link to COM:OVERWRITE. It is also the reason why edit summaries include information about percentage cropped. An image replacement with an edit summary like "Cropped 26 % horizontally and 45 % vertically…"[1] should warn patrollers. A CropTool log is found here. Regarding which option to be the default, I'm not sure. McZusatz's idea about remembering the option per user seems like it might be a good idea. – Danmichaelo (δ) 14:16, 22 December 2013 (UTC)
Yes, I did, and of course found it. But I'm worried I hadn't the first time, even though I was looking for it. I think the type could be bolder. Let's see if bad overwriting becomes a common problem. Thanks for your responses all! It's certainly a great tool. Johnbod (talk) 03:00, 23 December 2013 (UTC)

Additional functions

Hello! Thanks for providing this useful tool. I would like to ask if some additional functionality could be developed and added, which would be useful for Wikivoyage community, but likely not only for us.

1) At WV we have a feature of Page banner, which uses photos cropped to 7:1 width to length ratio (usually 2100:300 px) (see Category:Wikivoyage_banners). For our work it would be very useful to be able to crop Commons pictures to a given ratio. 2) It would be great if the selection for cropping could be rotated, as well, in order to straighten non-horizontal horizons for example, while using this tool.

I wonder if such changes could be added. Thanks again! --Danapit (talk) 15:22, 19 December 2013 (UTC)

Danapit, these are both good ideas that I would like to add if I find time. Tracked as #17 and #18. – Danmichaelo (δ) 14:35, 22 December 2013 (UTC)
Danmichaelo, thanks for your feedback, it would be great to see the functions implemented ;) --Danapit (talk) 06:15, 24 December 2013 (UTC)
Great. I came here to suggest the same feature Dana but you beat me to it. --Saqib (talk) 13:58, 6 February 2014 (UTC)
@Danapit and Saqib: Finally got around to add this. You can now choose to keep the current ratio or use a custom ratio, and the ratio will be remembered from visit to visit. – Danmichaelo (δ) 18:02, 11 October 2015 (UTC)
Danmichaelo, thanks a lot. Much appreciated! --Danapit (talk) 06:34, 12 October 2015 (UTC)
Again, after using your tool for a while now, I really like it a lot. It saves so much time. Thanks!!! --Danapit (talk) 20:53, 22 October 2015 (UTC)

Change in userscript

Note that I made a change in the userscript today to ensure filenames with special characters are passed correctly to the tool. If you have already added the code snippet to your Special:MyPage/common.js, you should update it to the new version. I paste it here too for convenience:

//CropTool code begins, see [[Commons:CropTool]] for details
(function(mw, $){
    if (mw.config.get( 'wgNamespaceNumber' ) !== 6) return;
    if (mw.config.get( 'wgAction' ) !== 'view') return;
 
    $( function () {
    	var title = mw.config.get( 'wgTitle' ).replace(/ /g, '_'),
            croplink = '//tools.wmflabs.org/croptool/?title=' + encodeURIComponent(title);
        mw.util.addPortletLink(
            "p-tb",
            croplink,
            "CropTool",
            "t-crop",
            "Crop this image"
        );
    } );
})(mediaWiki, jQuery);

Danmichaelo (δ) 22:53, 22 December 2013 (UTC)

What about importScript('CommonsMediawiki:croptool.js');? (The subpage needs to be created first, but for future updates no one will ever have to edit their common.js anymore.) --McZusatz (talk) 01:15, 23 December 2013 (UTC)
Seems like Commons:CropTool/croptool.js is not recognized as javascript. It's possible that js is only allowed in the MediaWiki and User namespaces, although I can't find a reference right now. Perhaps we should try to make it a gadget, do you know if there is a place to propose new gadgets? – Danmichaelo (δ) 11:28, 23 December 2013 (UTC)
In regards to gadgets, I think user:rillke can give you some useful links. --McZusatz (talk) 18:38, 23 December 2013 (UTC)
You are absolutely right: Only pages ending .js in MediaWiki and User namespace have the JavaScript content-model by default and for editing them special user rights apply: C.f. ContentHandler.php l.212 ff.
Separate scripts have the downside that for each of them, an extra request is made to the server; gadgets are better in this regard because they can be registered with ResourceLoader and thus be served together as just one with spaces and comments stripped (=minified). Nevertheless, this would the solution for adding this link, I am in favour for.
About gadgets: We already have plenty of them and how they are displayed and managed currently suggests that there shouldn't be too many of them, at least not gadgets visible in the preferences. A search through them is missing, tags, usage numbers/popularity, date created, compatibility and user rating as well and our current i18n system for both, the description and the gadget scripts are inefficient. -- Rillke(q?) 20:32, 23 December 2013 (UTC)

Remove watermark template

It would be helpful if CropTool also removed {{Watermark}} if it is found on the description page, or at least if it had an option for doing that. darkweasel94 21:40, 24 March 2014 (UTC)

Yeah, planning to add that – Danmichaelo (δ) 20:49, 11 May 2014 (UTC)
Just for reference: A checkbox for this was added in June. – Danmichaelo (δ) 18:04, 11 October 2015 (UTC)

Is it working?

I can't get it to work at all at the moment. It just takes me to the wmflabs page and it can't even get doing it from there to work. Johnbod (talk) 13:58, 6 May 2014 (UTC)

It works for me. Did you authenticate the app to do uploads in your name? --McZusatz (talk) 15:22, 6 May 2014 (UTC)
ages ago (as Johnbod), though recently it asked me to do it again, and it now isn't working for me. On this name I can't even get it to appear in the menu, despite ticking it in preferences. Wiki CRUK John (talk) 16:55, 6 May 2014 (UTC)
Hm, that's weird. If it doesn't even appear in the menu, it doesn't really sound like a problem specific to CropTool. Which browser did you use? Did you try others? – Danmichaelo (δ) 20:48, 11 May 2014 (UTC)

New problem with PNGs?

Hi, Today I'm finding it's impossible to edit PNG files using the crop tool. I get an error message that says:

File had unknown mime type image/png

An example is this image; as you can see in the edit history, I already did crop using CropTool a few days ago; but if I try to do so again today, I get the error message above. I also get it on similar PNG files in that category (but not a JPG I tested elsewhere). -Pete F (talk) 18:02, 4 July 2014 (UTC)

CropTool can only crop JPEGs. COM:CropTool says so in the first sentence. darkweasel94 18:19, 4 July 2014 (UTC)
Aah, I must have misremembered -- I cropped a few similar files by different processes last week. Thanks for setting me straight :) -Pete F (talk) 19:41, 4 July 2014 (UTC)

Edit conflicts

I'll just note here that CropTool doesn't currently handle edit conflicts well. Yesterday I had one (someone uploaded a new version while I was selecting my crop region) and, when previewing, simply got no image, and then "Upload failed" when trying to upload. I don't know if it's possible at all to give a better error message in that case (I only realized what was going on when visiting the file page again), but if it is, it should be done. darkweasel94 08:55, 17 July 2014 (UTC)

@Darkweasel94: I'll look into it. It should be possible to give a better error message. – Danmichaelo (δ) 09:13, 23 August 2014 (UTC)

Review templates

Please ensure that license review templates are not copied into the cropped images as they have never been reviewed. This are templates like License review, Flickrreview or several upload bot review templates. --Denniss (talk) 21:39, 15 August 2014 (UTC)

Another tweak would be to add a carriage return/line feed after placing the extracted from template so it's not mangled with cats. --Denniss (talk) 22:00, 15 August 2014 (UTC)
@Denniss: Sorry this took so long. CropTool now tries to remove license review templates using this regexp. Let me know if you see something I'm missing. I also think the carriage return issue has been solved at some point. – Danmichaelo (δ) 20:33, 20 September 2015 (UTC)

Using it with local images at the Wikipedias

To use CropTool with local images at any other Wikimedia project than Commons, add the following code snippet for your common.js file. The wgRevisionId check ensures it only shows up in the Tools menu for local files:

//CropTool code begins, see https://commons.wikimedia.org/wiki/Commons:CropTool
(function(mw, $){
    if (mw.config.get( 'wgNamespaceNumber' ) !== 6) return;
    if (mw.config.get( 'wgAction' ) !== 'view') return;
    if (!mw.config.get( 'wgRevisionId' )) return;

    $( function () {
        var title = wgServer + wgArticlePath.replace( '$1', wgPageName ),
            croplink = '//tools.wmflabs.org/croptool/?title=' + encodeURIComponent( title );
        mw.util.addPortletLink(
            "p-tb",
            croplink,
            "CropTool",
            "t-crop",
            "Crop this image"
        );
    });
})( mediaWiki, jQuery );

Danmichaelo (δ) 10:50, 23 August 2014 (UTC)

Where is the commons.js file? I didn't see it at my Commons Pref page. TIA, Pete Tillman (talk) 20:35, 26 August 2014 (UTC)
You may find it over here: [[special:myPage/common.js]]. --McZusatz (talk) 22:36, 28 August 2014 (UTC)

Croptool is down

https://tools.wmflabs.org/croptool/ is returning error messages for the last 2 days. Help? Cropbot is also down. --Pete Tillman (talk) 15:03, 10 October 2014 (UTC)

I'm having trouble cropping File:Wien 132 (3186743779).jpg. For some reason the image appears rotated by 90 degrees when loaded in CropTool. If I then select the crop region I want on that rotated image, it crops something totally different and adds a gray area below the cropped image, with a suggested edit summary "Cropped -31 % horizontally and 26 % vertically using CropTool with lossless mode.". Doing a 0° rotation with Rotatebot didn't work. darkweasel94 18:07, 30 November 2014 (UTC)

@Darkweasel94: Sorry it took so long to fix this. This turned out to be due to a bug in the imagemagick library used by the tool. See issue #45 for more info. – Danmichaelo (δ) 17:35, 12 April 2015 (UTC)

scale

is it possible to scale a photo, so that you can choose to keep the ratio the same, say 3:4 -- Cherubino (talk) 00:45, 9 May 2015 (UTC)

Currently, no. Might add support for it in the future. – Danmichaelo (δ) 20:08, 20 September 2015 (UTC)
@Cherubino: This was just added. – Danmichaelo (δ) 18:05, 11 October 2015 (UTC)
Thanks! -- Cherubino (talk) 21:01, 11 October 2015 (UTC)

Djvu

Is there any planned change to support djvu files ? That would be great to be able to extract the treasures hidden in djvu files! Symac (talk) 06:33, 22 September 2015 (UTC)

@Symac: Do you mean cropping all the pages in one operation? Or extracting a figure from a specific page? I haven't really worked with djvu, so I'm not sure how much work would be involved, but I could have a look. – Danmichaelo (δ) 14:50, 24 September 2015 (UTC)

Cache issue

I've been having cache issues. After uploading this and this file I wanted to crop them. But in CropTool the old version would still show up in the preview. The latter, uploaded a few days ago, has since updated its cache. I've since done the first manually but it's still an issue I thought worth mentioning. --Vera (talk) 12:24, 7 December 2015 (UTC)

Mediawiki Software and thumb cache bug, not related to croptool. --Denniss (talk) 14:39, 7 December 2015 (UTC)

Thanks

I just want to say thanks for creating such a useful tool. I was not looking forward to the process of downloading a particular image, cropping it, and then uploading the cropped version. I was particularly concerned that I might put the wrong licensing on the cropped image. The CropTool widget made it simple to create a cropped image, and it left intact all of the original licensing. Etamni  13:41, 9 May 2016 (UTC)

EXIF metadata

Does the CropTool preserve all (or most) of the EXIF metadata of the original image? Loadmaster (talk) 18:11, 25 May 2016 (UTC)

As far as I can see on e.g. File:Vienna Aerials July 2013 - 03 (9484050483) (cropped).jpg, it preserves all of it. darkweasel94 23:38, 25 May 2016 (UTC)

Bug Template settings (+request)

The tool should set {{Image extracted|…}} (new request for the source-file) and {{Extracted from|…}} to the |other_versions parameter field, not at the whole text end (behind anything), this is an bug. Additional we should replace {{Own}} with {{Own work by original uploader}}!? Example,[2]User: Perhelion 15:19, 20 June 2016 (UTC)

@Perhelion: Sorry I didn't notice the message here. It now adds {{Derivative versions}} and {{Extracted from}} to |other_versions. I wasn't aware of the {{Image extracted}}, but it seems to be more to the point than {{Derivative versions}}, so I will change the tool to use that one instead. I wasn't aware of {{Own work by original uploader}}, but it also seems like a relevant template to use, I'll put that on the issues list. – Danmichaelo (δ) 20:22, 30 August 2016 (UTC)

Last changes

Which one of the options looks better? I believe the second one using <gallery>. There are two options. Changing crop tool and replace {{Derivative versions}} with <gallery>. Or adjusting the {{Derivative versions}} to the same format like <gallery>. -- Geagea (talk) 12:36, 11 August 2016 (UTC)

@Geagea: To start with, I will replace {{Derivative versions}} with {{Image extracted}}, as suggested in the topic above. But I agree that a gallery looks better, so i would support modifying the {{Image extracted}} template to use <gallery>. Others might object, but it's worth a discussion on the template discussion page! – Danmichaelo (δ) 20:35, 30 August 2016 (UTC)
@Danmichaelo: See Village pump. -- Geagea (talk) 21:47, 30 August 2016 (UTC)

Adding categiries

The new file getting all the same info as the original. In the Crop tool page. It can be useful if we add an option to add or remove categories. It is helpful when we crop few file of a few people from the same file. -- Geagea (talk) 12:43, 11 August 2016 (UTC)

Right, I'll put that on the issues list (here). – Danmichaelo (δ) 20:43, 30 August 2016 (UTC)

Precise/lossless

What does the option "crop method" precise/lossless do? Appears not to be explained anywhere. --Nenntmichruhigip (talk) 17:26, 29 November 2016 (UTC)

Try doing a web search for "lossless JPEG cropping" or similar, that should explain it. TLDR: Lossless = it might be a few pixels larger than selected but the quality will be the same as before; precise = recompress as JPEG and lose a bit of quality, but crop exactly where selected. The reason why it works like that lies in internal details of the JPEG format which, if you're really interested, you might want to research yourself. darkweasel94 20:55, 29 November 2016 (UTC)
Actually, now that you mentioned it, I know which "details of the JPEG format" you mean :-) Does CropTool in lossless mode sometimes make the image smaller than selected? Step 4 from the Tutorial suggests this. --Nenntmichruhigip (talk) 11:02, 30 November 2016 (UTC)
It is always bigger not smaller. That was explaines somewhere. But anyway you see the picture before uploading and you can correct ist and therefore this is not a big problem. --Kersti (talk) 02:04, 27 December 2016 (UTC)
If you hover the "precise" and "lossless" labels, there is a tooltip explaining the two modes, but I guess this could be easy to miss. Perhaps a question mark icon next to the labels would help indicating that help is available? – Danmichaelo (δ) 18:49, 28 December 2016 (UTC)

Appraisal templates should not be copied over on the new file page

Hi,

I noticed that this tool had been used by Kersti Nebelsiek to extract a cropped version of File:Geotrygon montana Parc des Mamelles Guadeloupe 2010-04-04.jpg into this File:Geotrygon montana Parc des Mamelles Guadeloupe 2010-04-04 (cropped).jpg. The original version had been assessed as both a Quality Image and a Valued Image and thus contains both the {{QualityImage}} and {{VI}} templates, the latter with arguments. CropTool copied these over to the extracted file page in the original version. That is not how it should work as these assessments are the result of human review per image, and derivative versions do not automatically inherit these assessments, as it requires a new review. For the VI it is such that only one VI is allowed per scope, but both the original and extracted versions have the same scope, which is clearly in conflict with with objectives with VIs. I have manually removed the two templates from the cropped version.

I do not blame the user of CropTool for this, although I guess it is always a good idea to check if the cropped file page is OK. On the other hand, it could be anticipated by a user of the tool that "such things" were taken into account by the tool. I hope such a check can be implemented to avoid copying over those templates. In addition to the two templates there is also the (terribly complicated) {{Assessments}} template to consider.

I think that it would be a good idea to check for other cases where these templates have been incorrectly copied to the new file page. -- Slaunger (talk) 01:45, 27 December 2016 (UTC)

Thanks for the correction! Another Template-Problem with the CropTool is, that the "extracted images"-template ist copied. Of couse in most cases the extracted images of the bigger picture are not part of the new crop. --Kersti (talk) 02:00, 27 December 2016 (UTC)
(ec) I just had a look at Extracted images. In this category alone there are +200 file pages, which also has the {{QualityImage}} template. I did a quick spot check on the first five I found
All have had the template copied from the original, but they are not QIs. This is not good! -- Slaunger (talk) 02:08, 27 December 2016 (UTC)
Not only the templates, but also some irrelevant (hidden) categories. Regards, Yann (talk) 09:43, 27 December 2016 (UTC)
The tool already had support for not copying certain templates, but unfortunately the list missed important templates like {{Quality image}}. It has now been extended to cover the templates mentioned here (thanks to Steinsplitter for helping!) The list is here, let me know if you know more templates or categories that should be added to it! – Danmichaelo (δ) 18:29, 28 December 2016 (UTC)
Very nice work, Danmichaelo and Steinsplitter! That is a nice improvement. Does the new code also hinder in overwriting the same image with a cropped version if it already has one or more of the appraisal templates? -- Slaunger (talk) 18:53, 28 December 2016 (UTC)
Nope, but I will add that. – Danmichaelo (δ) 19:02, 28 December 2016 (UTC)

Better tutorial and/or an improved process needed

The tutorial solely focuses on the technical aspect of the crop, and not on the responsibility that is placed on the user using the tool in reviewing that the file page of the cropped image fits its purpose. Often a description needs to be updated such that it only describes the cropped content, some categories not applicable for the cropped image needs to be removed, and as long as the tool itself does not handle this automatically, the user has the responsibility to check that there are no {{QualityImage}}, {{VI}}, {{Assessments}} temlpates on the cropped image, that there are no hidden user categories like "Quality images by User:XXX". Several other templates needs to be checked for such as {{LargeImage}}. In fact I am concerned that it appears any user has access to this tool without review of user awareness of these limitations of the tool or without review of the cropped file pages. As I have reported above, there are very many severe errors being made by users of the tool - probably because the tutorial makes it appear that you do not have to consider the file page of the cropped image. -- Slaunger (talk) 12:23, 27 December 2016 (UTC)

I just tried the tool. I am concerned that the default option is to overwrite the existing file instead of uploading as a new file. I think it would be better to default to uploading as a new file, and in that process the user should get a preview of the new file page and be asked to make the needed changes to make sure the file page metadata fits the cropped content. -- Slaunger (talk) 12:44, 27 December 2016 (UTC)
It should not be possible with the tool to overwrite an existing file page with a cropped version for cases, where a human appraisal review has passed the image to QI, VI or FP status (if {{QualityImage}}, {{VI}} or {{Assessments}} is present). As these reviews have been done of the image in its original state. The same goes for finalists on WLM, winners of photo contest etc. -- Slaunger (talk) 12:43, 27 December 2016 (UTC)
Many issues raised here. (i) Reminding the user to review the result seems like a good idea, both in the tutorial and in the tool itself. (ii) Automatic removal of common quality assessments has been deployed, see above. (iii) default option is tricky, has been discussed before, depends on use case. (iv) Not allowing overwriting images with quality assessment templates seems like a very good idea. I will implement that (#83). – Danmichaelo (δ) 19:00, 28 December 2016 (UTC)
regarding (iii), yes, I understand this is tricky as a very common use case is to remove watermarks, and in that case you want to overwrite - and seldomly chnage much else on the file page. Thanks for taking my proposal (iv) avoid hindering overwriting of files with appraisal templates into your backlog. -- Slaunger (talk) 19:05, 28 December 2016 (UTC)
are you going to give the option to crop as a new file? this would be recommended for archival images. Slowking4 § Sander.v.Ginkel's revenge 02:40, 14 April 2017 (UTC)

Instead of generating stand-alone Crops there should be function of creating them just like any scaling is done

OF COURSE. Only to by-the-way mention the simplest thing one can imagine. --Itu (talk) 22:00, 17 March 2017 (UTC)

Do not crop template

Please see - and feel free to comment on - the proposal at Commons:Village_pump/Archive/2017/02#Do_not_crop_template. Andy Mabbett (talk) 22:16, 17 February 2017 (UTC)

CropTool now detects both {{Do not crop}} and {{Border is intentional}} and will not allow overwriting files with these templates. – Danmichaelo (δ) 23:55, 25 June 2017 (UTC)

Adding CropTool to Tools menu

This Project page says, "...but it's more convenient to have a link in your "Tools" menu at Wikimedia Commons. To set that up, click here."

I clicked "click here" and nothing happened, at least no link in my "Tools" menu. Either it is broken or it takes more than "click here" User-duck (talk) 04:54, 28 June 2017 (UTC)

@User-duck: You're supposed to get this message. If you don't, you can always activate go to gadgets and activate it there. – Danmichaelo (δ) 12:12, 5 July 2017 (UTC)

abusefilter-warning

I have attempted to use CropTool (in unlinked mode) to crop File:Ceidwad Byd, album cover.jpg. When I attempt to upload the cropped image as a different file I get an error message:

  • Upload failed! [api] Received error: abusefilter-warning : ⧼abusefilter-warning-otrs⧽

I think this is caused by the {{PermissionOTRS}} tag in the image that I am trying to crop. Is this a bug. There do not appear to be any license conditions that restrict derivative works. User:Andrewssi2 reported the same problem at MediaWiki talk:Abusefilter-warning-otrs#Crop Tool error, but got no response. Verbcatcher (talk) 01:33, 1 July 2017 (UTC)

I have raised this at Commons:OTRS/Noticeboard#Copying OTRS tags to derivitive works Verbcatcher (talk) 01:47, 1 July 2017 (UTC)
The response at Commons:OTRS/Noticeboard#Copying OTRS tags to derivitive works was that you should not copy a {{PermissionOTRS}} tag to the page of a cropped image, specifically "if you correctly source and license the modified file, the PermissionOTRS in the page of the source file will suffice". I think the error was caused by CropTool attempting to copy this tag. I suggest CropTool is modified to skip this tag. Verbcatcher (talk) 23:44, 1 July 2017 (UTC)
Thanks. If there are no licensing issues in removing this tag from derived works then it would be great to remove it from the derivative crop image. --Andrewssi2 (talk) 01:27, 2 July 2017 (UTC)
Thanks for clarifying. I added the {{PermissionOTRS}} to the list of templates that CropTool should not copy over to a new file.[3] Let me know if you know more templates that should not be copied. – Danmichaelo (δ) 12:38, 5 July 2017 (UTC)
Thank you. I have used the amended tool sucessfully to crop File:Cartref - album cover.jpg (which had the tag) to produce File:Arthur Davies (tenor).jpg, which does not. Verbcatcher (talk) 21:33, 5 July 2017 (UTC)

Broken

Hi,

The tool is broken. There is also a message on the village pump. Pyb (talk) 09:01, 4 July 2017 (UTC)

 Agree The following message appears when I tried to crop File:Triatomarubrovaria.jpg:

[Error] Command "/data/project/croptool/jpeg-9a/jpegtran -copy all -crop '772x566+658+874' '/mnt/nfs/labstore-secondary-tools-project/croptool/public_html/files/20e61760acf49e4935893abc6dddd482737888b3.jpg' > '/mnt/nfs/labstore-secondary-tools-project/croptool/public_html/files/20e61760acf49e4935893abc6dddd482737888b3_cropped.jpg' 2>&1" exited with code 2: 2

--ArgonSim (talk) 19:05, 4 July 2017 (UTC)

@ArgonSim: Works now, right? Pretty sure this was caused by temporary problems at Tool Labs. – Danmichaelo (δ) 12:14, 5 July 2017 (UTC)
@Danmichaelo: I still have a problem. This is a screenshot of what I see https://ibb.co/g7DrkF Thx for your help. Pyb (talk) 10:33, 6 July 2017 (UTC)
@Pyb: Hm, is this IE? Which version? Could you try a hard reload (pressing Ctrl+F5 or similar key combo depending on the browser/OS) to rule out cache issues. – Danmichaelo (δ) 10:44, 6 July 2017 (UTC)
@Danmichaelo: I have FF 54.0.1. Everything is ok now. I've deleted all my cookies to be able to log in on Tool Labs. Pyb (talk) 11:07, 6 July 2017 (UTC)

Hi, @Danmichaelo: ,

the tool worked once for me this morning[4],

then, on every pic, I get "CropTool : {{currentUrlParams.title}}" and initial loading takes on forever... the problem is the same on any image. - same as Pyb's image above...

Is it a problem with the tool labs ? Thanks for your help. --Hsarrazin (talk) 11:14, 7 July 2017 (UTC)

PS : I work on Safari or Firefox last version, and it's the same on both... --Hsarrazin (talk) 13:24, 7 July 2017 (UTC)

@Pyb and Hsarrazin: I also got a report here, so there seems to be intermittent problems for some users atm., but I have no idea why (This is not like the "usual" Tool Labs problems). If you have a chance to check console for errors ([5]), please do. Otherwise, I will try to see if I can find a way to track this down. – Danmichaelo (δ) 21:58, 8 July 2017 (UTC)
✓ Done @Pyb and Hsarrazin: Managed to reproduce the problem after I got an error report here. Turns out it only crashed if you had previously set the aspect ratio to "keep" (CropTool remembers this setting), this was why i couldn't initially reproduce the problem.. Should be fixed now though! – Danmichaelo (δ) 16:31, 11 July 2017 (UTC)

Trimming audio files

Is there a tool which can trim audio files without using Commons? I've been looking round for one with no luck so far. Richard Nevell (WMUK) (talk) 15:54, 10 October 2017 (UTC)

Bug report: rotated and deformed image

First, thanks for your tool, it's very useful. Usually. Now take a look at File:Thanuja (cropped).JPG. I cropped out an obvious part of File:Thanuja.JPG, but the result seems to have been crushed and rotated. I tried to rotate it vertically again, but the crushing didn't get fixed. I'm leaving the resulting image undeleted so you can debug. --GRuban (talk) 16:49, 6 September 2017 (UTC)

✓ Done This was not CropTool's issue, it was a problem with thumbnail generation – see phab:T173804. --jdx Re: 08:32, 11 October 2017 (UTC)

Delta format

Why there is no standard for a "delta-format" that represents the changes that are applied to the original image? Would really be great to have it. --Arnd (talk) 21:44, 1 November 2017 (UTC)

Bug: filename in templates

I fixed several times such filenames with "=", which are not working without parameter name "1=". e.q. Please add a check or something. -- User: Perhelion 06:23, 14 October 2017 (UTC)

This was reported on GitHub as well, and a check was added on 15 Oct. – Danmichaelo (δ) 00:49, 4 December 2017 (UTC)

Bug: duplicate parameters

DragonflySixtyseven alerted me to some issues with this template, namely the fact that it seems to be giving duplicate arguments when used (see Special:Diff/265732879, Special:Diff/264798559, and this rather interesting history). PetScan shows a maximum of 126 pages that have this issue.

I don't know what's causing the Tool to duplicate arguments, but it's something that should probably be fixed. Primefac (talk) 18:19, 2 November 2017 (UTC)

Sorry about that. There was a bug causing the argument number to not increase above 2, so it continued to add |2= rather than moving to |3=, |4= and so on. This was just fixed. – Danmichaelo (δ) 00:55, 4 December 2017 (UTC)

Down?

Is crop tool not working for anyone else? Hasn't worked for me since yesterday, but I hadn't attempted to use if for several days prior to that. GMGtalk 14:16, 21 December 2017 (UTC)

Yes ! I used crop tool several days before it was out of order. According to me the explanation could be the up date of Chrome since yesterday. --Kaviraf (talk) 15:00, 21 December 2017 (UTC)--
I tried it yesterday on IE also, and it still wouldn't work. GMGtalk 18:06, 21 December 2017 (UTC)
Works now. GMGtalk 22:31, 21 December 2017 (UTC)

Unsupported file types

CropTool should not be displayed in the toolbox if the file page currently viewed is not supported (e.g. TIFF or SVG). --Leyo 15:30, 3 January 2018 (UTC)

✓ Done [6] -- User: Perhelion 01:38, 13 January 2018 (UTC)
Thank you! --Leyo 23:06, 13 January 2018 (UTC)

Abuse filter error?

Upload failed! [api] Received error: abusefilter-warning : ⧼abusefilter-warning-review⧽}}

What the heck is that supposed to mean? I... don't think I'm doing anything other than I normally do, or is this just crop tool being wonky? GMGtalk 13:09, 31 January 2018 (UTC)

Well crap. I tried it again after posting and of course it worked. Still no idea what went wrong there... GMGtalk 13:09, 31 January 2018 (UTC)

Click and drag won't work.

The stupid zoom does, but that's not what I need. Johnbod (talk) 01:25, 3 April 2018 (UTC)

Timing out, 502 Bad Gateway

I have reported this at phab:T192788.   — Jeff G. ツ please ping or talk to me 14:38, 23 April 2018 (UTC)

Resolved

  — Jeff G. ツ please ping or talk to me 13:56, 24 April 2018 (UTC)

Levels adjusted, even in "precise mode" / PNG

I just noticed that a crop I performed to remove a caption resulted in a file with substantially lower quality: File:Luella Clay Carson.png Any idea why this would happen? Are the levels of PNG files (or files more generally) adjusted when performing crops with this tool? -Pete Forsyth (talk) 00:25, 30 April 2018 (UTC)

@Peteforsyth: No, they shouldn't be adjusted like that, please file a phabricator task.   — Jeff G. ツ please ping or talk to me 03:21, 30 April 2018 (UTC)
Thanks -- done: phab:T193409 -Pete Forsyth (talk) 16:04, 30 April 2018 (UTC)
@Peteforsyth: Sorry, please read the new Maintenance notice above.   — Jeff G. ツ please ping or talk to me 02:31, 1 May 2018 (UTC)

Is “CropTool with lossless mode” always lossless?

Look at File:MET 29G A30R4.jpg #filehistory. Is it only one Incnis Mrsi to whom odd numbers in pixel dimensions are striking? Incnis Mrsi (talk) 19:47, 30 April 2018 (UTC)

@Incnis Mrsi: Odd numbers in pixel dimensions do not mean the crop was not lossless. The top and left edge must lie on an block boundary, but the bottom and right edge need not do so. – Danmichaelo (δ) 11:03, 19 May 2018 (UTC)

503 Service Unavailable

Tool seems to have gone down over the past 20 minutes or so. GMGtalk 18:15, 6 June 2018 (UTC)

502 Bad Gateway

Crop Tool seems to be unresponsive today. Any reason why? Editorofthewiki (talk) 18:37, 20 May 2018 (UTC)

@Editorofthewiki and Danmichaelo: I have confirmed and reported this at https://github.com/danmichaelo/croptool/issues/112.   — Jeff G. ツ please ping or talk to me 22:26, 20 May 2018 (UTC)
@Editorofthewiki: Restarted.   — Jeff G. ツ please ping or talk to me 22:48, 20 May 2018 (UTC)
Danmichaelo, 502 Bad Gateway again. Mind restarting? Huntster (t @ c) 03:04, 13 June 2018 (UTC)
I think that Croptool is down again. Last upload was yesterday at 10:27 UTC.--KRLS (talk) 07:51, 13 June 2018 (UTC)
CropTool is showing this error. Where to report ?--Let There Be Sunshine (talk) 08:18, 13 June 2018 (UTC)
@Danmichaelo, Huntster, KRLS, and Let There Be Sunshine: I added to issue 112 linked above.   — Jeff G. ツ please ping or talk to me 08:35, 13 June 2018 (UTC)
@Huntster, KRLS, and Let There Be Sunshine: It's up now, after a restart ended about 25h of downtime.   — Jeff G. ツ please ping or talk to me 12:27, 13 June 2018 (UTC)

CropTool hanging on "Just a moment"

@Danmichaelo: Looks like the server needs to be restarted again. Based on the recent changes, it seems like it's been down for about 3 hours. --Ahecht (TALK
PAGE
) 03:07, 10 June 2018 (UTC)

Restarted. – Danmichaelo (δ) 03:31, 10 June 2018 (UTC)
Looks like it's doing the same thing again. Been "loading" for about 20 minutes now. GMGtalk 12:21, 29 June 2018 (UTC)
Restarted. Also, Zhuyifei1999 collected some data from the processes before the restart that hopefully can be used to make some progress understanding the problem. I'm a bit bewildered as to what happens. – Danmichaelo (δ) 14:23, 29 June 2018 (UTC)

Croptool down again

@ Danmichaelo, the server seems to need restarting again. D. Benjamin Miller (talk) 12:12, 8 July 2018 (UTC)

@Danmichaelo and Zhuyifei1999: The last edit it tagged was 16:24, 7 July 2018 (UTC), 22 hours ago.   — Jeff G. ツ please ping or talk to me 14:37, 8 July 2018 (UTC)

@Danmichaelo: This time the issue seems to be different. PID 24839 on tools-webgrid-lighttpd-1428.tools.eqiad.wmflabs:
__lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135
135	../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: No such file or directory.
(gdb) bt
#0  __lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135
#1  0x00002b2ea6bba649 in _L_lock_909 () from /lib/x86_64-linux-gnu/libpthread.so.0
#2  0x00002b2ea6bba470 in __GI___pthread_mutex_lock (mutex=0x1295180) at ../nptl/pthread_mutex_lock.c:79
#3  0x00002b2eae6e6f54 in LockSemaphoreInfo () from /usr/lib/x86_64-linux-gnu/libMagickCore.so.5
#4  0x00002b2eae5e17b4 in ReadImage () from /usr/lib/x86_64-linux-gnu/libMagickCore.so.5
#5  0x00002b2eae2e8bea in MagickReadImage () from /usr/lib/x86_64-linux-gnu/libMagickWand.so.5
#6  0x00002b2eae00b9ee in php_imagick_read_file () from /usr/lib/php5/20121212/imagick.so
#7  0x00002b2eae012858 in zim_imagick___construct () from /usr/lib/php5/20121212/imagick.so
#8  0x00000000006d7d2b in dtrace_execute_internal ()
#9  0x00002b2ea7226476 in xdebug_execute_internal (current_execute_data=0x2b2ea4b15140, fci=0x0, return_value_used=0)
    at /build/buildd/xdebug-2.2.3/xdebug-2.2.3/xdebug.c:1551
#10 0x0000000000797120 in ?? ()
#11 0x0000000000711a58 in execute_ex ()
#12 0x00000000006d7c29 in dtrace_execute_ex ()
#13 0x00002b2ea7225a7c in xdebug_execute_ex (execute_data=0x2b2ea4b15140) at /build/buildd/xdebug-2.2.3/xdebug-2.2.3/xdebug.c:1437
#14 0x0000000000797770 in ?? ()
#15 0x0000000000711a58 in execute_ex ()
#16 0x00000000006d7c29 in dtrace_execute_ex ()
#17 0x00002b2ea7225a7c in xdebug_execute_ex (execute_data=0x2b2ea4b14fe8) at /build/buildd/xdebug-2.2.3/xdebug-2.2.3/xdebug.c:1437
#18 0x0000000000797770 in ?? ()
#19 0x0000000000711a58 in execute_ex ()
#20 0x00000000006d7c29 in dtrace_execute_ex ()
#21 0x00002b2ea7225a7c in xdebug_execute_ex (execute_data=0x2b2ea4b14ed8) at /build/buildd/xdebug-2.2.3/xdebug-2.2.3/xdebug.c:1437
#22 0x0000000000797770 in ?? ()
#23 0x0000000000711a58 in execute_ex ()
#24 0x00000000006d7c29 in dtrace_execute_ex ()
#25 0x00002b2ea7225a7c in xdebug_execute_ex (execute_data=0x2b2ea4b14bc8) at /build/buildd/xdebug-2.2.3/xdebug-2.2.3/xdebug.c:1437
#26 0x00000000006d9f21 in zend_call_function ()
#27 0x000000000060ce62 in zif_call_user_func_array ()
#28 0x00000000006d7d2b in dtrace_execute_internal ()
#29 0x00002b2ea7226476 in xdebug_execute_internal (current_execute_data=0x2b2ea4b149b8, fci=0x0, return_value_used=1)
    at /build/buildd/xdebug-2.2.3/xdebug-2.2.3/xdebug.c:1551
#30 0x0000000000797120 in ?? ()
#31 0x0000000000711a58 in execute_ex ()
---Type <return> to continue, or q <return> to quit---q
Quit
(gdb) up 2
#2  0x00002b2ea6bba470 in __GI___pthread_mutex_lock (mutex=0x1295180) at ../nptl/pthread_mutex_lock.c:79
79	../nptl/pthread_mutex_lock.c: No such file or directory.
(gdb) p mutex
$1 = (pthread_mutex_t *) 0x1295180
(gdb) p *mutex
$2 = {__data = {__lock = 2, __count = 0, __owner = 24839, __nusers = 1, __kind = 0, __spins = 0, __elision = 0, __list = {__prev = 0x0, 
      __next = 0x0}}, __size = "\002\000\000\000\000\000\000\000\aa\000\000\001", '\000' <repeats 26 times>, __align = 2}
It's waiting on a mutex lock held by the same process. There doesn't seem to be a signal handler being called like last time. --Zhuyifei1999 (talk) 15:19, 8 July 2018 (UTC)
I'm completely in the wild here. Checked the memory log now and the memory usage (from memory_get_usage()) is very stable over time, so I don't see any obvious indications of a memory leak. – Danmichaelo (δ) 23:04, 8 July 2018 (UTC)
I don't think there's a memory leak either. Last time there was a signal handler being called during malloc, which is likely a memory issue, but this time the stack does not contain signal handling. Could it be libMagick forgot to release some locks? --Zhuyifei1999 (talk) 05:26, 9 July 2018 (UTC)
There are quite a few calls to LockSemaphoreInfo in ReadImage, so I looked at the disassembly:
Extended content
(gdb) disassemble
Dump of assembler code for function ReadImage:
   0x00002b2eae5e0ad0 <+0>:	push   %r15
   0x00002b2eae5e0ad2 <+2>:	push   %r14
   0x00002b2eae5e0ad4 <+4>:	push   %r13
   0x00002b2eae5e0ad6 <+6>:	mov    %rdi,%r13
   0x00002b2eae5e0ad9 <+9>:	push   %r12
   0x00002b2eae5e0adb <+11>:	push   %rbp
   0x00002b2eae5e0adc <+12>:	push   %rbx
   0x00002b2eae5e0add <+13>:	sub    $0x50c8,%rsp
   0x00002b2eae5e0ae4 <+20>:	mov    %fs:0x28,%rax
   0x00002b2eae5e0aed <+29>:	mov    %rax,0x50b8(%rsp)
   0x00002b2eae5e0af5 <+37>:	xor    %eax,%eax
   0x00002b2eae5e0af7 <+39>:	test   %rdi,%rdi
   0x00002b2eae5e0afa <+42>:	mov    %rsi,0x20(%rsp)
   0x00002b2eae5e0aff <+47>:	je     0x2b2eae5e1bab <ReadImage+4315>
   0x00002b2eae5e0b05 <+53>:	mov    $0xabacadab,%eax
   0x00002b2eae5e0b0a <+58>:	cmp    %rax,0x4170(%rdi)
   0x00002b2eae5e0b11 <+65>:	jne    0x2b2eae5e1b8c <ReadImage+4284>
   0x00002b2eae5e0b17 <+71>:	mov    0x4148(%rdi),%edi
   0x00002b2eae5e0b1d <+77>:	test   %edi,%edi
   0x00002b2eae5e0b1f <+79>:	jne    0x2b2eae5e1770 <ReadImage+3232>
   0x00002b2eae5e0b25 <+85>:	cmpq   $0x0,0x20(%rsp)
   0x00002b2eae5e0b2b <+91>:	je     0x2b2eae5e1b6d <ReadImage+4253>
   0x00002b2eae5e0b31 <+97>:	mov    %r13,%rdi
   0x00002b2eae5e0b34 <+100>:	lea    0x20b0(%rsp),%r14
   0x00002b2eae5e0b3c <+108>:	callq  0x2b2eae6703c0 <CloneImageInfo>
   0x00002b2eae5e0b41 <+113>:	lea    0x3148(%rax),%r15
   0x00002b2eae5e0b48 <+120>:	mov    $0x1000,%edx
   0x00002b2eae5e0b4d <+125>:	mov    %r14,%rdi
   0x00002b2eae5e0b50 <+128>:	mov    %rax,%rbx
   0x00002b2eae5e0b53 <+131>:	mov    %r15,%rsi
   0x00002b2eae5e0b56 <+134>:	lea    0x148(%rbx),%r12
   0x00002b2eae5e0b5d <+141>:	callq  0x2b2eae6fd5c0 <CopyMagickString>
   0x00002b2eae5e0b62 <+146>:	mov    0x20(%rsp),%rdx
   0x00002b2eae5e0b67 <+151>:	xor    %esi,%esi
   0x00002b2eae5e0b69 <+153>:	mov    %rbx,%rdi
   0x00002b2eae5e0b6c <+156>:	callq  0x2b2eae6754d0 <SetImageInfo>
   0x00002b2eae5e0b71 <+161>:	lea    0xb0(%rsp),%rax
   0x00002b2eae5e0b79 <+169>:	mov    $0x1000,%edx
   0x00002b2eae5e0b7e <+174>:	mov    %r15,%rsi
   0x00002b2eae5e0b81 <+177>:	mov    %rax,%rdi
   0x00002b2eae5e0b84 <+180>:	mov    %rax,0x30(%rsp)
   0x00002b2eae5e0b89 <+185>:	callq  0x2b2eae6fd5c0 <CopyMagickString>
   0x00002b2eae5e0b8e <+190>:	lea    0x10b0(%rsp),%rax
   0x00002b2eae5e0b96 <+198>:	mov    $0x1000,%edx
   0x00002b2eae5e0b9b <+203>:	mov    %r12,%rsi
   0x00002b2eae5e0b9e <+206>:	mov    %rax,%rdi
   0x00002b2eae5e0ba1 <+209>:	mov    %rax,0x38(%rsp)
   0x00002b2eae5e0ba6 <+214>:	callq  0x2b2eae6fd5c0 <CopyMagickString>
   0x00002b2eae5e0bab <+219>:	mov    %r12,%rdx
   0x00002b2eae5e0bae <+222>:	mov    $0x1,%esi
   0x00002b2eae5e0bb3 <+227>:	mov    $0x1,%edi
   0x00002b2eae5e0bb8 <+232>:	callq  0x2b2eae6a4f50 <IsRightsAuthorized>
   0x00002b2eae5e0bbd <+237>:	test   %eax,%eax
   0x00002b2eae5e0bbf <+239>:	je     0x2b2eae5e18f0 <ReadImage+3616>
   0x00002b2eae5e0bc5 <+245>:	callq  0x2b2eae6483c0 <AcquireExceptionInfo>
   0x00002b2eae5e0bca <+250>:	mov    %r12,%rdi
   0x00002b2eae5e0bcd <+253>:	mov    %rax,%rsi
   0x00002b2eae5e0bd0 <+256>:	mov    %rax,0x18(%rsp)
   0x00002b2eae5e0bd5 <+261>:	callq  0x2b2eae682e60 <GetMagickInfo>
   0x00002b2eae5e0bda <+266>:	mov    0x18(%rsp),%rdx
   0x00002b2eae5e0bdf <+271>:	mov    %rax,%rbp
   0x00002b2eae5e0be2 <+274>:	mov    %rdx,%rdi
   0x00002b2eae5e0be5 <+277>:	callq  0x2b2eae647ba0 <DestroyExceptionInfo>
   0x00002b2eae5e0bea <+282>:	test   %rbp,%rbp
   0x00002b2eae5e0bed <+285>:	je     0x2b2eae5e0c1b <ReadImage+331>
   0x00002b2eae5e0bef <+287>:	mov    %rbp,%rdi
   0x00002b2eae5e0bf2 <+290>:	callq  0x2b2eae682390 <GetMagickEndianSupport>
   0x00002b2eae5e0bf7 <+295>:	test   %eax,%eax
   0x00002b2eae5e0bf9 <+297>:	je     0x2b2eae5e14e0 <ReadImage+2576>
   0x00002b2eae5e0bff <+303>:	mov    0x54(%r13),%esi
   0x00002b2eae5e0c03 <+307>:	test   %esi,%esi
   0x00002b2eae5e0c05 <+309>:	je     0x2b2eae5e1970 <ReadImage+3744>
   0x00002b2eae5e0c0b <+315>:	mov    %rbp,%rdi
   0x00002b2eae5e0c0e <+318>:	callq  0x2b2eae682490 <GetMagickSeekableStream>
   0x00002b2eae5e0c13 <+323>:	test   %eax,%eax
   0x00002b2eae5e0c15 <+325>:	jne    0x2b2eae5e14f7 <ReadImage+2599>
   0x00002b2eae5e0c1b <+331>:	callq  0x2b2eae67ba70 <NewImageList>
   0x00002b2eae5e0c20 <+336>:	cmpq   $0x0,0x4028e8(%rip)        # 0x2b2eae9e3510
   0x00002b2eae5e0c28 <+344>:	je     0x2b2eae5e198c <ReadImage+3772>
   0x00002b2eae5e0c2e <+350>:	test   %rbp,%rbp
   0x00002b2eae5e0c31 <+353>:	je     0x2b2eae5e1628 <ReadImage+2904>
   0x00002b2eae5e0c37 <+359>:	mov    %rbp,%rdi
   0x00002b2eae5e0c3a <+362>:	callq  0x2b2eae6820e0 <GetImageDecoder>
   0x00002b2eae5e0c3f <+367>:	test   %rax,%rax
   0x00002b2eae5e0c42 <+370>:	je     0x2b2eae5e1628 <ReadImage+2904>
   0x00002b2eae5e0c48 <+376>:	mov    %rbp,%rdi
   0x00002b2eae5e0c4b <+379>:	callq  0x2b2eae6820e0 <GetImageDecoder>
   0x00002b2eae5e0c50 <+384>:	test   %rax,%rax
   0x00002b2eae5e0c53 <+387>:	je     0x2b2eae5e1649 <ReadImage+2937>
   0x00002b2eae5e0c59 <+393>:	mov    %rbp,%rdi
   0x00002b2eae5e0c5c <+396>:	callq  0x2b2eae682510 <GetMagickThreadSupport>
   0x00002b2eae5e0c61 <+401>:	test   $0x1,%al
   0x00002b2eae5e0c63 <+403>:	je     0x2b2eae5e17a8 <ReadImage+3288>
   0x00002b2eae5e0c69 <+409>:	mov    %rbp,%rdi
   0x00002b2eae5e0c6c <+412>:	callq  0x2b2eae6820e0 <GetImageDecoder>
   0x00002b2eae5e0c71 <+417>:	mov    0x20(%rsp),%rsi
   0x00002b2eae5e0c76 <+422>:	mov    %rbx,%rdi
   0x00002b2eae5e0c79 <+425>:	callq  *%rax
   0x00002b2eae5e0c7b <+427>:	mov    0x8(%rbx),%edx
   0x00002b2eae5e0c7e <+430>:	mov    %rax,%r12
   0x00002b2eae5e0c81 <+433>:	test   %edx,%edx
   0x00002b2eae5e0c83 <+435>:	jne    0x2b2eae5e17e0 <ReadImage+3344>
   0x00002b2eae5e0c89 <+441>:	test   %r12,%r12
   0x00002b2eae5e0c8c <+444>:	je     0x2b2eae5e1760 <ReadImage+3216>
   0x00002b2eae5e0c92 <+450>:	mov    0x20(%rsp),%rax
   0x00002b2eae5e0c97 <+455>:	mov    (%rax),%eax
   0x00002b2eae5e0c99 <+457>:	cmp    $0x18f,%eax
   0x00002b2eae5e0c9e <+462>:	ja     0x2b2eae5e1821 <ReadImage+3409>
   0x00002b2eae5e0ca4 <+468>:	mov    %r12,%rdi
   0x00002b2eae5e0ca7 <+471>:	callq  0x2b2eae5a9470 <IsBlobTemporary>
   0x00002b2eae5e0cac <+476>:	test   %eax,%eax
   0x00002b2eae5e0cae <+478>:	jne    0x2b2eae5e1862 <ReadImage+3474>
   0x00002b2eae5e0cb4 <+484>:	mov    %r12,%rdi
   0x00002b2eae5e0cb7 <+487>:	callq  0x2b2eae67b860 <GetNextImageInList>
   0x00002b2eae5e0cbc <+492>:	test   %rax,%rax
   0x00002b2eae5e0cbf <+495>:	je     0x2b2eae5e0cd4 <ReadImage+516>
   0x00002b2eae5e0cc1 <+497>:	mov    0x30(%rbx),%rdi
   0x00002b2eae5e0cc5 <+501>:	xor    %esi,%esi
   0x00002b2eae5e0cc7 <+503>:	callq  0x2b2eae6623e0 <IsSceneGeometry>
   0x00002b2eae5e0ccc <+508>:	test   %eax,%eax
   0x00002b2eae5e0cce <+510>:	jne    0x2b2eae5e1870 <ReadImage+3488>
   0x00002b2eae5e0cd4 <+516>:	mov    %r12,%rdi
   0x00002b2eae5e0cd7 <+519>:	callq  0x2b2eae5a8d00 <GetBlobError>
   0x00002b2eae5e0cdc <+524>:	test   %eax,%eax
   0x00002b2eae5e0cde <+526>:	jne    0x2b2eae5e199d <ReadImage+3789>
   0x00002b2eae5e0ce4 <+532>:	test   %r12,%r12
   0x00002b2eae5e0ce7 <+535>:	mov    %r12,0x48(%rsp)
   0x00002b2eae5e0cec <+540>:	je     0x2b2eae5e13b8 <ReadImage+2280>
   0x00002b2eae5e0cf2 <+546>:	lea    0x30b0(%rsp),%rcx
   0x00002b2eae5e0cfa <+554>:	mov    %r12,%rax
   0x00002b2eae5e0cfd <+557>:	lea    0x40b0(%rsp),%rbp
   0x00002b2eae5e0d05 <+565>:	mov    %rcx,0x18(%rsp)
   0x00002b2eae5e0d0a <+570>:	jmpq   0x2b2eae5e0ddf <ReadImage+783>
   0x00002b2eae5e0d0f <+575>:	nop
   0x00002b2eae5e0d10 <+576>:	movsd  0x15f9a0(%rip),%xmm1        # 0x2b2eae7406b8
   0x00002b2eae5e0d18 <+584>:	mov    0x48(%rsp),%r15
   0x00002b2eae5e0d1d <+589>:	movapd %xmm1,%xmm0
   0x00002b2eae5e0d21 <+593>:	movsd  %xmm1,0x28(%rsp)
   0x00002b2eae5e0d27 <+599>:	addsd  0x80(%rsp),%xmm0
   0x00002b2eae5e0d30 <+608>:	callq  0x2b2eae594ea0 <floor@plt>
   0x00002b2eae5e0d35 <+613>:	movsd  0x15f99b(%rip),%xmm2        # 0x2b2eae7406d8
   0x00002b2eae5e0d3d <+621>:	movsd  0x28(%rsp),%xmm1
   0x00002b2eae5e0d43 <+627>:	ucomisd %xmm2,%xmm0
   0x00002b2eae5e0d47 <+631>:	jae    0x2b2eae5e1398 <ReadImage+2248>
   0x00002b2eae5e0d4d <+637>:	cvttsd2si %xmm0,%rdx
   0x00002b2eae5e0d52 <+642>:	cmp    %rdx,0x1b8(%r15)
   0x00002b2eae5e0d59 <+649>:	jbe    0x2b2eae5e0d62 <ReadImage+658>
   0x00002b2eae5e0d5b <+651>:	mov    %rdx,0x1b8(%r15)
   0x00002b2eae5e0d62 <+658>:	and    $0x8,%r12d
   0x00002b2eae5e0d66 <+662>:	je     0x2b2eae5e0d86 <ReadImage+694>
   0x00002b2eae5e0d68 <+664>:	addsd  0x88(%rsp),%xmm1
   0x00002b2eae5e0d71 <+673>:	movapd %xmm1,%xmm0
   0x00002b2eae5e0d75 <+677>:	callq  0x2b2eae594ea0 <floor@plt>
   0x00002b2eae5e0d7a <+682>:	cvttsd2si %xmm0,%rdx
   0x00002b2eae5e0d7f <+687>:	mov    %rdx,0x1c0(%r15)
   0x00002b2eae5e0d86 <+694>:	lea    0x182352(%rip),%rsi        # 0x2b2eae7630df
   0x00002b2eae5e0d8d <+701>:	mov    %r13,%rdi
   0x00002b2eae5e0d90 <+704>:	callq  0x2b2eae693cb0 <GetImageOption>
   0x00002b2eae5e0d95 <+709>:	test   %rax,%rax
   0x00002b2eae5e0d98 <+712>:	je     0x2b2eae5e0db6 <ReadImage+742>
   0x00002b2eae5e0d9a <+714>:	mov    0x48(%rsp),%r12
   0x00002b2eae5e0d9f <+719>:	mov    %rax,%rdx
   0x00002b2eae5e0da2 <+722>:	xor    %esi,%esi
   0x00002b2eae5e0da4 <+724>:	mov    $0x12,%edi
   0x00002b2eae5e0da9 <+729>:	callq  0x2b2eae694450 <ParseCommandOption>
   0x00002b2eae5e0dae <+734>:	mov    %eax,0x1a4(%r12)
   0x00002b2eae5e0db6 <+742>:	mov    0xe4(%rbx),%eax
   0x00002b2eae5e0dbc <+748>:	test   %eax,%eax
   0x00002b2eae5e0dbe <+750>:	jne    0x2b2eae5e12d0 <ReadImage+2048>
   0x00002b2eae5e0dc4 <+756>:	mov    0x48(%rsp),%r12
   0x00002b2eae5e0dc9 <+761>:	mov    %r12,%rdi
   0x00002b2eae5e0dcc <+764>:	callq  0x2b2eae67b860 <GetNextImageInList>
   0x00002b2eae5e0dd1 <+769>:	test   %rax,%rax
   0x00002b2eae5e0dd4 <+772>:	mov    %rax,0x48(%rsp)
   0x00002b2eae5e0dd9 <+777>:	je     0x2b2eae5e13b8 <ReadImage+2280>
   0x00002b2eae5e0ddf <+783>:	mov    0x18(%rsp),%rdx
   0x00002b2eae5e0de4 <+788>:	movl   $0x0,0x1c(%rax)
   0x00002b2eae5e0deb <+795>:	mov    $0x1,%esi
   0x00002b2eae5e0df0 <+800>:	mov    %r14,%rdi
   0x00002b2eae5e0df3 <+803>:	callq  0x2b2eae712360 <GetPathComponent>
   0x00002b2eae5e0df8 <+808>:	cmpb   $0x0,0x30b0(%rsp)
   0x00002b2eae5e0e00 <+816>:	je     0x2b2eae5e1330 <ReadImage+2144>
   0x00002b2eae5e0e06 <+822>:	mov    0x48(%rsp),%rax
   0x00002b2eae5e0e0b <+827>:	mov    $0x1000,%edx
   0x00002b2eae5e0e10 <+832>:	mov    %r14,%rsi
   0x00002b2eae5e0e13 <+835>:	lea    0x1268(%rax),%rdi
   0x00002b2eae5e0e1a <+842>:	callq  0x2b2eae6fd5c0 <CopyMagickString>
   0x00002b2eae5e0e1f <+847>:	mov    %r12,%rdi
   0x00002b2eae5e0e22 <+850>:	callq  0x2b2eae5a9470 <IsBlobTemporary>
   0x00002b2eae5e0e27 <+855>:	test   %eax,%eax
   0x00002b2eae5e0e29 <+857>:	jne    0x2b2eae5e1310 <ReadImage+2112>
   0x00002b2eae5e0e2f <+863>:	mov    0x48(%rsp),%rdi
   0x00002b2eae5e0e34 <+868>:	cmpq   $0x0,0x3268(%rdi)
   0x00002b2eae5e0e3c <+876>:	jne    0x2b2eae5e0e49 <ReadImage+889>
   0x00002b2eae5e0e3e <+878>:	mov    0x28(%rdi),%rax
   0x00002b2eae5e0e42 <+882>:	mov    %rax,0x3268(%rdi)
   0x00002b2eae5e0e49 <+889>:	cmpq   $0x0,0x3270(%rdi)
   0x00002b2eae5e0e51 <+897>:	jne    0x2b2eae5e0e5e <ReadImage+910>
   0x00002b2eae5e0e53 <+899>:	mov    0x30(%rdi),%rax
   0x00002b2eae5e0e57 <+903>:	mov    %rax,0x3270(%rdi)
   0x00002b2eae5e0e5e <+910>:	lea    0x168cf1(%rip),%rsi        # 0x2b2eae749b56
   0x00002b2eae5e0e65 <+917>:	callq  0x2b2eae6a6d10 <GetImageProperty>
   0x00002b2eae5e0e6a <+922>:	test   %rax,%rax
   0x00002b2eae5e0e6d <+925>:	je     0x2b2eae5e1448 <ReadImage+2424>
   0x00002b2eae5e0e73 <+931>:	mov    0x48(%rsp),%r12
   0x00002b2eae5e0e78 <+936>:	mov    $0xa,%edx
   0x00002b2eae5e0e7d <+941>:	xor    %esi,%esi
   0x00002b2eae5e0e7f <+943>:	mov    %rax,%rdi
   0x00002b2eae5e0e82 <+946>:	callq  0x2b2eae5945b0 <strtol@plt>
   0x00002b2eae5e0e87 <+951>:	mov    0x48(%rsp),%rdi
   0x00002b2eae5e0e8c <+956>:	lea    0x168cc3(%rip),%rsi        # 0x2b2eae749b56
   0x00002b2eae5e0e93 <+963>:	mov    %eax,0x18(%r12)
   0x00002b2eae5e0e98 <+968>:	callq  0x2b2eae6a58e0 <DeleteImageProperty>
   0x00002b2eae5e0e9d <+973>:	mov    0x48(%rsp),%rdi
   0x00002b2eae5e0ea2 <+978>:	lea    0x168cbe(%rip),%rsi        # 0x2b2eae749b67
   0x00002b2eae5e0ea9 <+985>:	callq  0x2b2eae6a58e0 <DeleteImageProperty>
   0x00002b2eae5e0eae <+990>:	mov    0x48(%rsp),%rdi
   0x00002b2eae5e0eb3 <+995>:	lea    0x168cbe(%rip),%rsi        # 0x2b2eae749b78
   0x00002b2eae5e0eba <+1002>:	callq  0x2b2eae6a6d10 <GetImageProperty>
   0x00002b2eae5e0ebf <+1007>:	test   %rax,%rax
   0x00002b2eae5e0ec2 <+1010>:	je     0x2b2eae5e0f27 <ReadImage+1111>
   0x00002b2eae5e0ec4 <+1012>:	mov    0x48(%rsp),%rdx
   0x00002b2eae5e0ec9 <+1017>:	movsd  0x15f157(%rip),%xmm3        # 0x2b2eae740028
   0x00002b2eae5e0ed1 <+1025>:	lea    0x50(%rsp),%rsi
   0x00002b2eae5e0ed6 <+1030>:	mov    %rax,%rdi
   0x00002b2eae5e0ed9 <+1033>:	movsd  %xmm3,0x58(%rsp)
   0x00002b2eae5e0edf <+1039>:	movsd  0x108(%rdx),%xmm0
   0x00002b2eae5e0ee7 <+1047>:	movsd  %xmm0,0x50(%rsp)
   0x00002b2eae5e0eed <+1053>:	callq  0x2b2eae662690 <ParseGeometry>
   0x00002b2eae5e0ef2 <+1058>:	xorpd  %xmm4,%xmm4
   0x00002b2eae5e0ef6 <+1062>:	mov    0x48(%rsp),%rdi
   0x00002b2eae5e0efb <+1067>:	movsd  0x58(%rsp),%xmm0
   0x00002b2eae5e0f01 <+1073>:	ucomisd %xmm4,%xmm0
   0x00002b2eae5e0f05 <+1077>:	jp     0x2b2eae5e0f09 <ReadImage+1081>
   0x00002b2eae5e0f07 <+1079>:	je     0x2b2eae5e0f1b <ReadImage+1099>
   0x00002b2eae5e0f09 <+1081>:	movsd  0x50(%rsp),%xmm1
   0x00002b2eae5e0f0f <+1087>:	divsd  %xmm0,%xmm1
   0x00002b2eae5e0f13 <+1091>:	movsd  %xmm1,0x108(%rdi)
   0x00002b2eae5e0f1b <+1099>:	lea    0x168c56(%rip),%rsi        # 0x2b2eae749b78
   0x00002b2eae5e0f22 <+1106>:	callq  0x2b2eae6a58e0 <DeleteImageProperty>
   0x00002b2eae5e0f27 <+1111>:	mov    0x48(%rsp),%rdi
   0x00002b2eae5e0f2c <+1116>:	lea    0x168c56(%rip),%rsi        # 0x2b2eae749b89
   0x00002b2eae5e0f33 <+1123>:	callq  0x2b2eae6a6d10 <GetImageProperty>
   0x00002b2eae5e0f38 <+1128>:	test   %rax,%rax
   0x00002b2eae5e0f3b <+1131>:	je     0x2b2eae5e0fa0 <ReadImage+1232>
   0x00002b2eae5e0f3d <+1133>:	mov    0x48(%rsp),%rdx
   0x00002b2eae5e0f42 <+1138>:	movsd  0x15f0de(%rip),%xmm5        # 0x2b2eae740028
   0x00002b2eae5e0f4a <+1146>:	lea    0x50(%rsp),%rsi
   0x00002b2eae5e0f4f <+1151>:	mov    %rax,%rdi
   0x00002b2eae5e0f52 <+1154>:	movsd  %xmm5,0x58(%rsp)
   0x00002b2eae5e0f58 <+1160>:	movsd  0x110(%rdx),%xmm0
   0x00002b2eae5e0f60 <+1168>:	movsd  %xmm0,0x50(%rsp)
   0x00002b2eae5e0f66 <+1174>:	callq  0x2b2eae662690 <ParseGeometry>
   0x00002b2eae5e0f6b <+1179>:	xorpd  %xmm6,%xmm6
   0x00002b2eae5e0f6f <+1183>:	mov    0x48(%rsp),%rdi
   0x00002b2eae5e0f74 <+1188>:	movsd  0x58(%rsp),%xmm0
   0x00002b2eae5e0f7a <+1194>:	ucomisd %xmm6,%xmm0
   0x00002b2eae5e0f7e <+1198>:	jp     0x2b2eae5e0f82 <ReadImage+1202>
   0x00002b2eae5e0f80 <+1200>:	je     0x2b2eae5e0f94 <ReadImage+1220>
   0x00002b2eae5e0f82 <+1202>:	movsd  0x50(%rsp),%xmm1
   0x00002b2eae5e0f88 <+1208>:	divsd  %xmm0,%xmm1
   0x00002b2eae5e0f8c <+1212>:	movsd  %xmm1,0x110(%rdi)
   0x00002b2eae5e0f94 <+1220>:	lea    0x168bee(%rip),%rsi        # 0x2b2eae749b89
   0x00002b2eae5e0f9b <+1227>:	callq  0x2b2eae6a58e0 <DeleteImageProperty>
   0x00002b2eae5e0fa0 <+1232>:	mov    0x48(%rsp),%rdi
   0x00002b2eae5e0fa5 <+1237>:	lea    0x168bee(%rip),%rsi        # 0x2b2eae749b9a
   0x00002b2eae5e0fac <+1244>:	callq  0x2b2eae6a6d10 <GetImageProperty>
   0x00002b2eae5e0fb1 <+1249>:	test   %rax,%rax
   0x00002b2eae5e0fb4 <+1252>:	je     0x2b2eae5e1470 <ReadImage+2464>
   0x00002b2eae5e0fba <+1258>:	mov    0x48(%rsp),%r12
   0x00002b2eae5e0fbf <+1263>:	mov    $0xa,%edx
   0x00002b2eae5e0fc4 <+1268>:	xor    %esi,%esi
   0x00002b2eae5e0fc6 <+1270>:	mov    %rax,%rdi
   0x00002b2eae5e0fc9 <+1273>:	callq  0x2b2eae5945b0 <strtol@plt>
   0x00002b2eae5e0fce <+1278>:	mov    0x48(%rsp),%rdi
   0x00002b2eae5e0fd3 <+1283>:	sub    $0x1,%eax
   0x00002b2eae5e0fd6 <+1286>:	lea    0x168bd1(%rip),%rsi        # 0x2b2eae749bae
   0x00002b2eae5e0fdd <+1293>:	mov    %eax,0xe0(%r12)
   0x00002b2eae5e0fe5 <+1301>:	callq  0x2b2eae6a58e0 <DeleteImageProperty>
   0x00002b2eae5e0fea <+1306>:	mov    0x48(%rsp),%rdi
   0x00002b2eae5e0fef <+1311>:	lea    0x168ba4(%rip),%rsi        # 0x2b2eae749b9a
   0x00002b2eae5e0ff6 <+1318>:	callq  0x2b2eae6a58e0 <DeleteImageProperty>
   0x00002b2eae5e0ffb <+1323>:	mov    0x48(%rsp),%rax
   0x00002b2eae5e1000 <+1328>:	cmpq   $0x0,0x118(%rax)
   0x00002b2eae5e1008 <+1336>:	jne    0x2b2eae5e1015 <ReadImage+1349>
   0x00002b2eae5e100a <+1338>:	mov    0x28(%rax),%rdx
   0x00002b2eae5e100e <+1342>:	mov    %rdx,0x118(%rax)
   0x00002b2eae5e1015 <+1349>:	cmpq   $0x0,0x120(%rax)
   0x00002b2eae5e101d <+1357>:	jne    0x2b2eae5e102a <ReadImage+1370>
   0x00002b2eae5e101f <+1359>:	mov    0x30(%rax),%rdx
   0x00002b2eae5e1023 <+1363>:	mov    %rdx,0x120(%rax)
   0x00002b2eae5e102a <+1370>:	lea    0x168b91(%rip),%rsi        # 0x2b2eae749bc2
   0x00002b2eae5e1031 <+1377>:	mov    %rbx,%rdi
   0x00002b2eae5e1034 <+1380>:	callq  0x2b2eae693cb0 <GetImageOption>
   0x00002b2eae5e1039 <+1385>:	test   %rax,%rax
   0x00002b2eae5e103c <+1388>:	je     0x2b2eae5e106d <ReadImage+1437>
   0x00002b2eae5e103e <+1390>:	mov    0x48(%rsp),%rsi
   0x00002b2eae5e1043 <+1395>:	mov    %rax,%rdx
   0x00002b2eae5e1046 <+1398>:	mov    %rbx,%rdi
   0x00002b2eae5e1049 <+1401>:	callq  0x2b2eae6aab10 <InterpretImageProperties>
   0x00002b2eae5e104e <+1406>:	mov    0x48(%rsp),%rdi
   0x00002b2eae5e1053 <+1411>:	lea    0x168b68(%rip),%rsi        # 0x2b2eae749bc2
   0x00002b2eae5e105a <+1418>:	mov    %rax,%r12
   0x00002b2eae5e105d <+1421>:	mov    %rax,%rdx
   0x00002b2eae5e1060 <+1424>:	callq  0x2b2eae6a61b0 <SetImageProperty>
   0x00002b2eae5e1065 <+1429>:	mov    %r12,%rdi
   0x00002b2eae5e1068 <+1432>:	callq  0x2b2eae6fd710 <DestroyString>
   0x00002b2eae5e106d <+1437>:	lea    0x16c604(%rip),%rsi        # 0x2b2eae74d678
   0x00002b2eae5e1074 <+1444>:	mov    %rbx,%rdi
   0x00002b2eae5e1077 <+1447>:	callq  0x2b2eae693cb0 <GetImageOption>
   0x00002b2eae5e107c <+1452>:	test   %rax,%rax
   0x00002b2eae5e107f <+1455>:	je     0x2b2eae5e10b0 <ReadImage+1504>
   0x00002b2eae5e1081 <+1457>:	mov    0x48(%rsp),%rsi
   0x00002b2eae5e1086 <+1462>:	mov    %rax,%rdx
   0x00002b2eae5e1089 <+1465>:	mov    %rbx,%rdi
   0x00002b2eae5e108c <+1468>:	callq  0x2b2eae6aab10 <InterpretImageProperties>
   0x00002b2eae5e1091 <+1473>:	mov    0x48(%rsp),%rdi
   0x00002b2eae5e1096 <+1478>:	lea    0x16c5db(%rip),%rsi        # 0x2b2eae74d678
   0x00002b2eae5e109d <+1485>:	mov    %rax,%r12
   0x00002b2eae5e10a0 <+1488>:	mov    %rax,%rdx
   0x00002b2eae5e10a3 <+1491>:	callq  0x2b2eae6a61b0 <SetImageProperty>
   0x00002b2eae5e10a8 <+1496>:	mov    %r12,%rdi
   0x00002b2eae5e10ab <+1499>:	callq  0x2b2eae6fd710 <DestroyString>
   0x00002b2eae5e10b0 <+1504>:	lea    0x18243b(%rip),%rsi        # 0x2b2eae7634f2
   0x00002b2eae5e10b7 <+1511>:	mov    %rbx,%rdi
   0x00002b2eae5e10ba <+1514>:	callq  0x2b2eae693cb0 <GetImageOption>
   0x00002b2eae5e10bf <+1519>:	test   %rax,%rax
   0x00002b2eae5e10c2 <+1522>:	je     0x2b2eae5e10f3 <ReadImage+1571>
   0x00002b2eae5e10c4 <+1524>:	mov    0x48(%rsp),%rsi
   0x00002b2eae5e10c9 <+1529>:	mov    %rax,%rdx
   0x00002b2eae5e10cc <+1532>:	mov    %rbx,%rdi
   0x00002b2eae5e10cf <+1535>:	callq  0x2b2eae6aab10 <InterpretImageProperties>
   0x00002b2eae5e10d4 <+1540>:	mov    0x48(%rsp),%rdi
   0x00002b2eae5e10d9 <+1545>:	lea    0x182412(%rip),%rsi        # 0x2b2eae7634f2
   0x00002b2eae5e10e0 <+1552>:	mov    %rax,%r12
   0x00002b2eae5e10e3 <+1555>:	mov    %rax,%rdx
   0x00002b2eae5e10e6 <+1558>:	callq  0x2b2eae6a61b0 <SetImageProperty>
   0x00002b2eae5e10eb <+1563>:	mov    %r12,%rdi
   0x00002b2eae5e10ee <+1566>:	callq  0x2b2eae6fd710 <DestroyString>
   0x00002b2eae5e10f3 <+1571>:	mov    0x48(%rsp),%rax
   0x00002b2eae5e10f8 <+1576>:	lea    0x162788(%rip),%rsi        # 0x2b2eae743887
   0x00002b2eae5e10ff <+1583>:	lea    0x2268(%rax),%rdi
   0x00002b2eae5e1106 <+1590>:	callq  0x2b2eae6fea60 <LocaleCompare>
   0x00002b2eae5e110b <+1595>:	test   %eax,%eax
   0x00002b2eae5e110d <+1597>:	je     0x2b2eae5e12f0 <ReadImage+2080>
   0x00002b2eae5e1113 <+1603>:	mov    0x20(%rbx),%rdi
   0x00002b2eae5e1117 <+1607>:	test   %rdi,%rdi
   0x00002b2eae5e111a <+1610>:	je     0x2b2eae5e112a <ReadImage+1626>
   0x00002b2eae5e111c <+1612>:	cmpq   $0x0,0x128(%rbx)
   0x00002b2eae5e1124 <+1620>:	je     0x2b2eae5e1590 <ReadImage+2752>
   0x00002b2eae5e112a <+1626>:	mov    0x48(%rsp),%rdi
   0x00002b2eae5e112f <+1631>:	lea    0x168a9c(%rip),%rsi        # 0x2b2eae749bd2
   0x00002b2eae5e1136 <+1638>:	callq  0x2b2eae6abcc0 <GetImageProfile>
   0x00002b2eae5e113b <+1643>:	test   %rax,%rax
   0x00002b2eae5e113e <+1646>:	mov    %rax,%r12
   0x00002b2eae5e1141 <+1649>:	je     0x2b2eae5e14b8 <ReadImage+2536>
   0x00002b2eae5e1147 <+1655>:	mov    0x48(%rsp),%r15
   0x00002b2eae5e114c <+1660>:	mov    %r12,%rdi
   0x00002b2eae5e114f <+1663>:	callq  0x2b2eae6fe8a0 <GetStringInfoLength>
   0x00002b2eae5e1154 <+1668>:	mov    %r12,%rdi
   0x00002b2eae5e1157 <+1671>:	mov    %rax,0x32d0(%r15)
   0x00002b2eae5e115e <+1678>:	mov    0x48(%rsp),%r15
   0x00002b2eae5e1163 <+1683>:	callq  0x2b2eae6fe830 <GetStringInfoDatum>
   0x00002b2eae5e1168 <+1688>:	mov    %rax,0x32d8(%r15)
   0x00002b2eae5e116f <+1695>:	mov    0x48(%rsp),%rdi
   0x00002b2eae5e1174 <+1700>:	lea    0x168a5f(%rip),%rsi        # 0x2b2eae749bda
   0x00002b2eae5e117b <+1707>:	callq  0x2b2eae6abcc0 <GetImageProfile>
   0x00002b2eae5e1180 <+1712>:	test   %rax,%rax
   0x00002b2eae5e1183 <+1715>:	mov    %rax,%r12
   0x00002b2eae5e1186 <+1718>:	je     0x2b2eae5e1490 <ReadImage+2496>
   0x00002b2eae5e118c <+1724>:	mov    0x48(%rsp),%r15
   0x00002b2eae5e1191 <+1729>:	mov    %r12,%rdi
   0x00002b2eae5e1194 <+1732>:	callq  0x2b2eae6fe8a0 <GetStringInfoLength>
   0x00002b2eae5e1199 <+1737>:	mov    %r12,%rdi
   0x00002b2eae5e119c <+1740>:	mov    %rax,0x32f0(%r15)
   0x00002b2eae5e11a3 <+1747>:	mov    0x48(%rsp),%r15
   0x00002b2eae5e11a8 <+1752>:	callq  0x2b2eae6fe830 <GetStringInfoDatum>
   0x00002b2eae5e11ad <+1757>:	mov    %rax,0x32f8(%r15)
   0x00002b2eae5e11b4 <+1764>:	mov    0x48(%rsp),%rdi
   0x00002b2eae5e11b9 <+1769>:	callq  0x2b2eae5a8ff0 <GetBlobProperties>
   0x00002b2eae5e11be <+1774>:	mov    0x58(%rax),%rdi
   0x00002b2eae5e11c2 <+1778>:	mov    %rbp,%rdx
   0x00002b2eae5e11c5 <+1781>:	mov    $0x1000,%esi
   0x00002b2eae5e11ca <+1786>:	callq  0x2b2eae6fe6c0 <FormatMagickTime>
   0x00002b2eae5e11cf <+1791>:	mov    0x48(%rsp),%rdi
   0x00002b2eae5e11d4 <+1796>:	lea    0x168a09(%rip),%rsi        # 0x2b2eae749be4
   0x00002b2eae5e11db <+1803>:	mov    %rbp,%rdx
   0x00002b2eae5e11de <+1806>:	callq  0x2b2eae6a61b0 <SetImageProperty>
   0x00002b2eae5e11e3 <+1811>:	mov    0x48(%rsp),%rdi
   0x00002b2eae5e11e8 <+1816>:	callq  0x2b2eae5a8ff0 <GetBlobProperties>
   0x00002b2eae5e11ed <+1821>:	mov    0x68(%rax),%rdi
   0x00002b2eae5e11f1 <+1825>:	mov    %rbp,%rdx
   0x00002b2eae5e11f4 <+1828>:	mov    $0x1000,%esi
   0x00002b2eae5e11f9 <+1833>:	callq  0x2b2eae6fe6c0 <FormatMagickTime>
   0x00002b2eae5e11fe <+1838>:	mov    0x48(%rsp),%rdi
   0x00002b2eae5e1203 <+1843>:	lea    0x1689e6(%rip),%rsi        # 0x2b2eae749bf0
   0x00002b2eae5e120a <+1850>:	mov    %rbp,%rdx
   0x00002b2eae5e120d <+1853>:	callq  0x2b2eae6a61b0 <SetImageProperty>
   0x00002b2eae5e1212 <+1858>:	lea    0x181e14(%rip),%rsi        # 0x2b2eae76302d
   0x00002b2eae5e1219 <+1865>:	mov    %r13,%rdi
   0x00002b2eae5e121c <+1868>:	callq  0x2b2eae693cb0 <GetImageOption>
   0x00002b2eae5e1221 <+1873>:	test   %rax,%rax
   0x00002b2eae5e1224 <+1876>:	je     0x2b2eae5e0d86 <ReadImage+694>
   0x00002b2eae5e122a <+1882>:	lea    0x80(%rsp),%rsi
   0x00002b2eae5e1232 <+1890>:	mov    %rax,%rdi
   0x00002b2eae5e1235 <+1893>:	callq  0x2b2eae662690 <ParseGeometry>
   0x00002b2eae5e123a <+1898>:	test   $0x80,%ah
   0x00002b2eae5e123d <+1901>:	mov    %eax,%r12d
   0x00002b2eae5e1240 <+1904>:	jne    0x2b2eae5e0d10 <ReadImage+576>
   0x00002b2eae5e1246 <+1910>:	test   $0x40,%ah
   0x00002b2eae5e1249 <+1913>:	je     0x2b2eae5e1350 <ReadImage+2176>
   0x00002b2eae5e124f <+1919>:	movsd  0x15f461(%rip),%xmm1        # 0x2b2eae7406b8
   0x00002b2eae5e1257 <+1927>:	mov    0x48(%rsp),%r15
   0x00002b2eae5e125c <+1932>:	movapd %xmm1,%xmm0
   0x00002b2eae5e1260 <+1936>:	movsd  %xmm1,0x28(%rsp)
   0x00002b2eae5e1266 <+1942>:	addsd  0x80(%rsp),%xmm0
   0x00002b2eae5e126f <+1951>:	callq  0x2b2eae594ea0 <floor@plt>
   0x00002b2eae5e1274 <+1956>:	movsd  0x15f45c(%rip),%xmm2        # 0x2b2eae7406d8
   0x00002b2eae5e127c <+1964>:	movsd  0x28(%rsp),%xmm1
   0x00002b2eae5e1282 <+1970>:	ucomisd %xmm2,%xmm0
   0x00002b2eae5e1286 <+1974>:	jae    0x2b2eae5e13f8 <ReadImage+2344>
   0x00002b2eae5e128c <+1980>:	cvttsd2si %xmm0,%rdx
   0x00002b2eae5e1291 <+1985>:	cmp    %rdx,0x1b8(%r15)
   0x00002b2eae5e1298 <+1992>:	jae    0x2b2eae5e0d62 <ReadImage+658>
   0x00002b2eae5e129e <+1998>:	movapd %xmm1,%xmm0
   0x00002b2eae5e12a2 <+2002>:	movsd  %xmm1,0x28(%rsp)
   0x00002b2eae5e12a8 <+2008>:	addsd  0x88(%rsp),%xmm0
   0x00002b2eae5e12b1 <+2017>:	callq  0x2b2eae594ea0 <floor@plt>
   0x00002b2eae5e12b6 <+2022>:	cvttsd2si %xmm0,%rdx
   0x00002b2eae5e12bb <+2027>:	movsd  0x28(%rsp),%xmm1
   0x00002b2eae5e12c1 <+2033>:	mov    %rdx,0x1c0(%r15)
   0x00002b2eae5e12c8 <+2040>:	jmpq   0x2b2eae5e0d62 <ReadImage+658>
   0x00002b2eae5e12cd <+2045>:	nopl   (%rax)
   0x00002b2eae5e12d0 <+2048>:	mov    0x3bfd01(%rip),%rax        # 0x2b2eae9a0fd8
   0x00002b2eae5e12d7 <+2055>:	mov    0x48(%rsp),%rdi
   0x00002b2eae5e12dc <+2060>:	xor    %edx,%edx
   0x00002b2eae5e12de <+2062>:	mov    (%rax),%rsi
   0x00002b2eae5e12e1 <+2065>:	callq  0x2b2eae6696b0 <IdentifyImage>
   0x00002b2eae5e12e6 <+2070>:	jmpq   0x2b2eae5e0dc4 <ReadImage+756>
   0x00002b2eae5e12eb <+2075>:	nopl   0x0(%rax,%rax,1)
   0x00002b2eae5e12f0 <+2080>:	mov    0x48(%rsp),%rax
   0x00002b2eae5e12f5 <+2085>:	lea    0x1688ce(%rip),%rdi        # 0x2b2eae749bca
   0x00002b2eae5e12fc <+2092>:	lea    0x118(%rax),%rsi
   0x00002b2eae5e1303 <+2099>:	callq  0x2b2eae662460 <ParseAbsoluteGeometry>
   0x00002b2eae5e1308 <+2104>:	jmpq   0x2b2eae5e1113 <ReadImage+1603>
   0x00002b2eae5e130d <+2109>:	nopl   (%rax)
   0x00002b2eae5e1310 <+2112>:	mov    0x48(%rsp),%rax
   0x00002b2eae5e1315 <+2117>:	mov    0x30(%rsp),%rsi
   0x00002b2eae5e131a <+2122>:	mov    $0x1000,%edx
   0x00002b2eae5e131f <+2127>:	lea    0x268(%rax),%rdi
   0x00002b2eae5e1326 <+2134>:	callq  0x2b2eae6fd5c0 <CopyMagickString>
   0x00002b2eae5e132b <+2139>:	jmpq   0x2b2eae5e0e2f <ReadImage+863>
   0x00002b2eae5e1330 <+2144>:	mov    0x48(%rsp),%rax
   0x00002b2eae5e1335 <+2149>:	mov    0x38(%rsp),%rsi
   0x00002b2eae5e133a <+2154>:	mov    $0x1000,%edx
   0x00002b2eae5e133f <+2159>:	lea    0x2268(%rax),%rdi
   0x00002b2eae5e1346 <+2166>:	callq  0x2b2eae6fd5c0 <CopyMagickString>
   0x00002b2eae5e134b <+2171>:	jmpq   0x2b2eae5e0e06 <ReadImage+822>
   0x00002b2eae5e1350 <+2176>:	movsd  0x15f360(%rip),%xmm1        # 0x2b2eae7406b8
   0x00002b2eae5e1358 <+2184>:	movsd  0x80(%rsp),%xmm0
   0x00002b2eae5e1361 <+2193>:	movsd  %xmm1,0x28(%rsp)
   0x00002b2eae5e1367 <+2199>:	addsd  %xmm1,%xmm0
   0x00002b2eae5e136b <+2203>:	callq  0x2b2eae594ea0 <floor@plt>
   0x00002b2eae5e1370 <+2208>:	ucomisd 0x15f360(%rip),%xmm0        # 0x2b2eae7406d8
   0x00002b2eae5e1378 <+2216>:	mov    0x48(%rsp),%r15
   0x00002b2eae5e137d <+2221>:	movsd  0x28(%rsp),%xmm1
   0x00002b2eae5e1383 <+2227>:	jae    0x2b2eae5e1418 <ReadImage+2376>
   0x00002b2eae5e1389 <+2233>:	cvttsd2si %xmm0,%rdx
   0x00002b2eae5e138e <+2238>:	jmpq   0x2b2eae5e0d5b <ReadImage+651>
   0x00002b2eae5e1393 <+2243>:	nopl   0x0(%rax,%rax,1)
   0x00002b2eae5e1398 <+2248>:	subsd  %xmm2,%xmm0
   0x00002b2eae5e139c <+2252>:	movabs $0x8000000000000000,%rcx
   0x00002b2eae5e13a6 <+2262>:	cvttsd2si %xmm0,%rdx
   0x00002b2eae5e13ab <+2267>:	xor    %rcx,%rdx
   0x00002b2eae5e13ae <+2270>:	jmpq   0x2b2eae5e0d52 <ReadImage+642>
   0x00002b2eae5e13b3 <+2275>:	nopl   0x0(%rax,%rax,1)
   0x00002b2eae5e13b8 <+2280>:	mov    %rbx,%rdi
   0x00002b2eae5e13bb <+2283>:	callq  0x2b2eae66e550 <DestroyImageInfo>
   0x00002b2eae5e13c0 <+2288>:	mov    %r12,%rdi
   0x00002b2eae5e13c3 <+2291>:	callq  0x2b2eae67b460 <GetFirstImageInList>
   0x00002b2eae5e13c8 <+2296>:	mov    0x50b8(%rsp),%rcx
   0x00002b2eae5e13d0 <+2304>:	xor    %fs:0x28,%rcx
   0x00002b2eae5e13d9 <+2313>:	jne    0x2b2eae5e1b68 <ReadImage+4248>
   0x00002b2eae5e13df <+2319>:	add    $0x50c8,%rsp
   0x00002b2eae5e13e6 <+2326>:	pop    %rbx
   0x00002b2eae5e13e7 <+2327>:	pop    %rbp
   0x00002b2eae5e13e8 <+2328>:	pop    %r12
   0x00002b2eae5e13ea <+2330>:	pop    %r13
   0x00002b2eae5e13ec <+2332>:	pop    %r14
   0x00002b2eae5e13ee <+2334>:	pop    %r15
   0x00002b2eae5e13f0 <+2336>:	retq   
   0x00002b2eae5e13f1 <+2337>:	nopl   0x0(%rax)
   0x00002b2eae5e13f8 <+2344>:	subsd  %xmm2,%xmm0
   0x00002b2eae5e13fc <+2348>:	movabs $0x8000000000000000,%rcx
   0x00002b2eae5e1406 <+2358>:	cvttsd2si %xmm0,%rdx
   0x00002b2eae5e140b <+2363>:	xor    %rcx,%rdx
   0x00002b2eae5e140e <+2366>:	jmpq   0x2b2eae5e1291 <ReadImage+1985>
   0x00002b2eae5e1413 <+2371>:	nopl   0x0(%rax,%rax,1)
   0x00002b2eae5e1418 <+2376>:	subsd  0x15f2b8(%rip),%xmm0        # 0x2b2eae7406d8
   0x00002b2eae5e1420 <+2384>:	cvttsd2si %xmm0,%rdx
   0x00002b2eae5e1425 <+2389>:	mov    %rdx,0x1b8(%r15)
   0x00002b2eae5e142c <+2396>:	movabs $0x8000000000000000,%rdx
   0x00002b2eae5e1436 <+2406>:	xor    %rdx,0x1b8(%r15)
   0x00002b2eae5e143d <+2413>:	jmpq   0x2b2eae5e0d62 <ReadImage+658>
   0x00002b2eae5e1442 <+2418>:	nopw   0x0(%rax,%rax,1)
   0x00002b2eae5e1448 <+2424>:	mov    0x48(%rsp),%rdi
   0x00002b2eae5e144d <+2429>:	lea    0x168713(%rip),%rsi        # 0x2b2eae749b67
   0x00002b2eae5e1454 <+2436>:	callq  0x2b2eae6a6d10 <GetImageProperty>
   0x00002b2eae5e1459 <+2441>:	test   %rax,%rax
   0x00002b2eae5e145c <+2444>:	je     0x2b2eae5e0eae <ReadImage+990>
   0x00002b2eae5e1462 <+2450>:	jmpq   0x2b2eae5e0e73 <ReadImage+931>
   0x00002b2eae5e1467 <+2455>:	nopw   0x0(%rax,%rax,1)
   0x00002b2eae5e1470 <+2464>:	mov    0x48(%rsp),%rdi
   0x00002b2eae5e1475 <+2469>:	lea    0x168732(%rip),%rsi        # 0x2b2eae749bae
   0x00002b2eae5e147c <+2476>:	callq  0x2b2eae6a6d10 <GetImageProperty>
   0x00002b2eae5e1481 <+2481>:	test   %rax,%rax
   0x00002b2eae5e1484 <+2484>:	je     0x2b2eae5e0ffb <ReadImage+1323>
   0x00002b2eae5e148a <+2490>:	jmpq   0x2b2eae5e0fba <ReadImage+1258>
   0x00002b2eae5e148f <+2495>:	nop
   0x00002b2eae5e1490 <+2496>:	mov    0x48(%rsp),%rdi
   0x00002b2eae5e1495 <+2501>:	lea    0x168743(%rip),%rsi        # 0x2b2eae749bdf
   0x00002b2eae5e149c <+2508>:	callq  0x2b2eae6abcc0 <GetImageProfile>
   0x00002b2eae5e14a1 <+2513>:	test   %rax,%rax
   0x00002b2eae5e14a4 <+2516>:	mov    %rax,%r12
   0x00002b2eae5e14a7 <+2519>:	je     0x2b2eae5e11b4 <ReadImage+1764>
   0x00002b2eae5e14ad <+2525>:	jmpq   0x2b2eae5e118c <ReadImage+1724>
   0x00002b2eae5e14b2 <+2530>:	nopw   0x0(%rax,%rax,1)
   0x00002b2eae5e14b8 <+2536>:	mov    0x48(%rsp),%rdi
   0x00002b2eae5e14bd <+2541>:	lea    0x168712(%rip),%rsi        # 0x2b2eae749bd6
   0x00002b2eae5e14c4 <+2548>:	callq  0x2b2eae6abcc0 <GetImageProfile>
   0x00002b2eae5e14c9 <+2553>:	test   %rax,%rax
   0x00002b2eae5e14cc <+2556>:	mov    %rax,%r12
   0x00002b2eae5e14cf <+2559>:	je     0x2b2eae5e116f <ReadImage+1695>
   0x00002b2eae5e14d5 <+2565>:	jmpq   0x2b2eae5e1147 <ReadImage+1655>
   0x00002b2eae5e14da <+2570>:	nopw   0x0(%rax,%rax,1)
   0x00002b2eae5e14e0 <+2576>:	movl   $0x0,0x54(%rbx)
   0x00002b2eae5e14e7 <+2583>:	mov    %rbp,%rdi
   0x00002b2eae5e14ea <+2586>:	callq  0x2b2eae682490 <GetMagickSeekableStream>
   0x00002b2eae5e14ef <+2591>:	test   %eax,%eax
   0x00002b2eae5e14f1 <+2593>:	je     0x2b2eae5e0c1b <ReadImage+331>
   0x00002b2eae5e14f7 <+2599>:	mov    %rbx,%rdi
   0x00002b2eae5e14fa <+2602>:	callq  0x2b2eae6749b0 <AcquireImage>
   0x00002b2eae5e14ff <+2607>:	lea    0x268(%rax),%rdi
   0x00002b2eae5e1506 <+2614>:	mov    $0x1000,%edx
   0x00002b2eae5e150b <+2619>:	mov    %r15,%rsi
   0x00002b2eae5e150e <+2622>:	mov    %rax,0x18(%rsp)
   0x00002b2eae5e1513 <+2627>:	callq  0x2b2eae6fd5c0 <CopyMagickString>
   0x00002b2eae5e1518 <+2632>:	mov    0x20(%rsp),%rcx
   0x00002b2eae5e151d <+2637>:	mov    0x18(%rsp),%rsi
   0x00002b2eae5e1522 <+2642>:	mov    $0x2,%edx
   0x00002b2eae5e1527 <+2647>:	mov    %r13,%rdi
   0x00002b2eae5e152a <+2650>:	callq  0x2b2eae5aba30 <OpenBlob>
   0x00002b2eae5e152f <+2655>:	test   %eax,%eax
   0x00002b2eae5e1531 <+2657>:	je     0x2b2eae5e1a43 <ReadImage+3955>
   0x00002b2eae5e1537 <+2663>:	mov    0x18(%rsp),%rdi
   0x00002b2eae5e153c <+2668>:	callq  0x2b2eae5a93b0 <IsBlobSeekable>
   0x00002b2eae5e1541 <+2673>:	test   %eax,%eax
   0x00002b2eae5e1543 <+2675>:	jne    0x2b2eae5e156d <ReadImage+2717>
   0x00002b2eae5e1545 <+2677>:	mov    0x20(%rsp),%rdx
   0x00002b2eae5e154a <+2682>:	mov    0x18(%rsp),%rdi
   0x00002b2eae5e154f <+2687>:	mov    %r15,%rsi
   0x00002b2eae5e1552 <+2690>:	movb   $0x0,0x3148(%rbx)
   0x00002b2eae5e1559 <+2697>:	callq  0x2b2eae5a9ce0 <ImageToFile>
   0x00002b2eae5e155e <+2702>:	test   %eax,%eax
   0x00002b2eae5e1560 <+2704>:	je     0x2b2eae5e1b44 <ReadImage+4212>
   0x00002b2eae5e1566 <+2710>:	movl   $0x1,0x8(%rbx)
   0x00002b2eae5e156d <+2717>:	mov    0x18(%rsp),%rdi
   0x00002b2eae5e1572 <+2722>:	callq  0x2b2eae5ab710 <CloseBlob>
   0x00002b2eae5e1577 <+2727>:	mov    0x18(%rsp),%rdi
   0x00002b2eae5e157c <+2732>:	callq  0x2b2eae66db80 <DestroyImage>
   0x00002b2eae5e1581 <+2737>:	jmpq   0x2b2eae5e0c1b <ReadImage+331>
   0x00002b2eae5e1586 <+2742>:	nopw   %cs:0x0(%rax,%rax,1)
   0x00002b2eae5e1590 <+2752>:	lea    0x80(%rsp),%r12
   0x00002b2eae5e1598 <+2760>:	mov    %r12,%rsi
   0x00002b2eae5e159b <+2763>:	callq  0x2b2eae662460 <ParseAbsoluteGeometry>
   0x00002b2eae5e15a0 <+2768>:	mov    0x48(%rsp),%rcx
   0x00002b2eae5e15a5 <+2773>:	mov    0x80(%rsp),%rdx
   0x00002b2eae5e15ad <+2781>:	cmp    %rdx,0x28(%rcx)
   0x00002b2eae5e15b1 <+2785>:	je     0x2b2eae5e18a8 <ReadImage+3544>
   0x00002b2eae5e15b7 <+2791>:	test   $0x3,%al
   0x00002b2eae5e15b9 <+2793>:	jne    0x2b2eae5e18c8 <ReadImage+3576>
   0x00002b2eae5e15bf <+2799>:	test   $0xc,%al
   0x00002b2eae5e15c1 <+2801>:	mov    %rcx,%rdi
   0x00002b2eae5e15c4 <+2804>:	je     0x2b2eae5e112f <ReadImage+1631>
   0x00002b2eae5e15ca <+2810>:	mov    0x20(%rsp),%r15
   0x00002b2eae5e15cf <+2815>:	mov    0x20(%rbx),%rsi
   0x00002b2eae5e15d3 <+2819>:	mov    %r12,%rdx
   0x00002b2eae5e15d6 <+2822>:	mov    %r15,%rcx
   0x00002b2eae5e15d9 <+2825>:	callq  0x2b2eae6636d0 <ParseRegionGeometry>
   0x00002b2eae5e15de <+2830>:	mov    0x48(%rsp),%rdi
   0x00002b2eae5e15e3 <+2835>:	mov    0x88(%rsp),%rdx
   0x00002b2eae5e15eb <+2843>:	mov    %r15,%r8
   0x00002b2eae5e15ee <+2846>:	mov    0x80(%rsp),%rsi
   0x00002b2eae5e15f6 <+2854>:	mov    0x190(%rdi),%ecx
   0x00002b2eae5e15fc <+2860>:	movsd  0x180(%rdi),%xmm0
   0x00002b2eae5e1604 <+2868>:	callq  0x2b2eae6df0c0 <ResizeImage>
   0x00002b2eae5e1609 <+2873>:	test   %rax,%rax
   0x00002b2eae5e160c <+2876>:	je     0x2b2eae5e112a <ReadImage+1626>
   0x00002b2eae5e1612 <+2882>:	lea    0x48(%rsp),%rdi
   0x00002b2eae5e1617 <+2887>:	mov    %rax,%rsi
   0x00002b2eae5e161a <+2890>:	callq  0x2b2eae67c760 <ReplaceImageInList>
   0x00002b2eae5e161f <+2895>:	jmpq   0x2b2eae5e112a <ReadImage+1626>
   0x00002b2eae5e1624 <+2900>:	nopl   0x0(%rax)
   0x00002b2eae5e1628 <+2904>:	mov    0x20(%rsp),%rdx
   0x00002b2eae5e162d <+2909>:	xor    %esi,%esi
   0x00002b2eae5e162f <+2911>:	mov    %r12,%rdi
   0x00002b2eae5e1632 <+2914>:	callq  0x2b2eae5ea2a0 <GetDelegateInfo>
   0x00002b2eae5e1637 <+2919>:	test   %rax,%rax
   0x00002b2eae5e163a <+2922>:	je     0x2b2eae5e1a5c <ReadImage+3980>
   0x00002b2eae5e1640 <+2928>:	test   %rbp,%rbp
   0x00002b2eae5e1643 <+2931>:	jne    0x2b2eae5e0c48 <ReadImage+376>
   0x00002b2eae5e1649 <+2937>:	mov    0x20(%rsp),%rdx
   0x00002b2eae5e164e <+2942>:	xor    %esi,%esi
   0x00002b2eae5e1650 <+2944>:	mov    %r12,%rdi
   0x00002b2eae5e1653 <+2947>:	callq  0x2b2eae5ea2a0 <GetDelegateInfo>
   0x00002b2eae5e1658 <+2952>:	test   %rax,%rax
   0x00002b2eae5e165b <+2955>:	mov    %rax,0x18(%rsp)
   0x00002b2eae5e1660 <+2960>:	je     0x2b2eae5e1af0 <ReadImage+4128>
   0x00002b2eae5e1666 <+2966>:	mov    %rbx,%rdi
   0x00002b2eae5e1669 <+2969>:	callq  0x2b2eae6749b0 <AcquireImage>
   0x00002b2eae5e166e <+2974>:	test   %rax,%rax
   0x00002b2eae5e1671 <+2977>:	mov    %rax,%rbp
   0x00002b2eae5e1674 <+2980>:	je     0x2b2eae5e1760 <ReadImage+3216>
   0x00002b2eae5e167a <+2986>:	lea    0x268(%rax),%rdi
   0x00002b2eae5e1681 <+2993>:	mov    $0x1000,%edx
   0x00002b2eae5e1686 <+2998>:	mov    %r15,%rsi
   0x00002b2eae5e1689 <+3001>:	callq  0x2b2eae6fd5c0 <CopyMagickString>
   0x00002b2eae5e168e <+3006>:	mov    0x18(%rsp),%rdi
   0x00002b2eae5e1693 <+3011>:	movb   $0x0,0x3148(%rbx)
   0x00002b2eae5e169a <+3018>:	callq  0x2b2eae5eac30 <GetDelegateThreadSupport>
   0x00002b2eae5e169f <+3023>:	test   %eax,%eax
   0x00002b2eae5e16a1 <+3025>:	je     0x2b2eae5e1958 <ReadImage+3720>
   0x00002b2eae5e16a7 <+3031>:	mov    0x20(%rsp),%r8
   0x00002b2eae5e16ac <+3036>:	xor    %ecx,%ecx
   0x00002b2eae5e16ae <+3038>:	mov    %r12,%rdx
   0x00002b2eae5e16b1 <+3041>:	mov    %rbp,%rsi
   0x00002b2eae5e16b4 <+3044>:	mov    %rbx,%rdi
   0x00002b2eae5e16b7 <+3047>:	callq  0x2b2eae5eacb0 <InvokeDelegate>
   0x00002b2eae5e16bc <+3052>:	mov    0x18(%rsp),%rdi
   0x00002b2eae5e16c1 <+3057>:	callq  0x2b2eae5eac30 <GetDelegateThreadSupport>
   0x00002b2eae5e16c6 <+3062>:	test   %eax,%eax
   0x00002b2eae5e16c8 <+3064>:	je     0x2b2eae5e1940 <ReadImage+3696>
   0x00002b2eae5e16ce <+3070>:	mov    %rbp,%rdi
   0x00002b2eae5e16d1 <+3073>:	callq  0x2b2eae67c3a0 <DestroyImageList>
   0x00002b2eae5e16d6 <+3078>:	mov    0x20(%rsp),%rbp
   0x00002b2eae5e16db <+3083>:	xor    %esi,%esi
   0x00002b2eae5e16dd <+3085>:	mov    %rbx,%rdi
   0x00002b2eae5e16e0 <+3088>:	movl   $0x1,0x8(%rbx)
   0x00002b2eae5e16e7 <+3095>:	mov    %rbp,%rdx
   0x00002b2eae5e16ea <+3098>:	callq  0x2b2eae6754d0 <SetImageInfo>
   0x00002b2eae5e16ef <+3103>:	mov    %rbp,%rsi
   0x00002b2eae5e16f2 <+3106>:	mov    %r12,%rdi
   0x00002b2eae5e16f5 <+3109>:	callq  0x2b2eae682e60 <GetMagickInfo>
   0x00002b2eae5e16fa <+3114>:	test   %rax,%rax
   0x00002b2eae5e16fd <+3117>:	mov    %rax,%rbp
   0x00002b2eae5e1700 <+3120>:	je     0x2b2eae5e1713 <ReadImage+3139>
   0x00002b2eae5e1702 <+3122>:	mov    %rax,%rdi
   0x00002b2eae5e1705 <+3125>:	callq  0x2b2eae6820e0 <GetImageDecoder>
   0x00002b2eae5e170a <+3130>:	test   %rax,%rax
   0x00002b2eae5e170d <+3133>:	jne    0x2b2eae5e0c59 <ReadImage+393>
   0x00002b2eae5e1713 <+3139>:	mov    %r15,%rdi
   0x00002b2eae5e1716 <+3142>:	callq  0x2b2eae711e00 <IsPathAccessible>
   0x00002b2eae5e171b <+3147>:	test   %eax,%eax
   0x00002b2eae5e171d <+3149>:	je     0x2b2eae5e1a93 <ReadImage+4035>
   0x00002b2eae5e1723 <+3155>:	lea    0x1745da(%rip),%rax        # 0x2b2eae755d04
   0x00002b2eae5e172a <+3162>:	mov    0x20(%rsp),%rdi
   0x00002b2eae5e172f <+3167>:	lea    0x15f7d2(%rip),%r9        # 0x2b2eae740f08
   0x00002b2eae5e1736 <+3174>:	lea    0x168689(%rip),%rdx        # 0x2b2eae749dc6
   0x00002b2eae5e173d <+3181>:	lea    0x1683e0(%rip),%rsi        # 0x2b2eae749b24
   0x00002b2eae5e1744 <+3188>:	mov    %r15,0x8(%rsp)
   0x00002b2eae5e1749 <+3193>:	mov    %rax,(%rsp)
   0x00002b2eae5e174d <+3197>:	mov    $0x1a4,%r8d
   0x00002b2eae5e1753 <+3203>:	mov    $0x242,%ecx
   0x00002b2eae5e1758 <+3208>:	xor    %eax,%eax
   0x00002b2eae5e175a <+3210>:	callq  0x2b2eae648330 <ThrowMagickException>
   0x00002b2eae5e175f <+3215>:	nop
   0x00002b2eae5e1760 <+3216>:	mov    %rbx,%rdi
   0x00002b2eae5e1763 <+3219>:	callq  0x2b2eae66e550 <DestroyImageInfo>
   0x00002b2eae5e1768 <+3224>:	xor    %eax,%eax
   0x00002b2eae5e176a <+3226>:	jmpq   0x2b2eae5e13c8 <ReadImage+2296>
   0x00002b2eae5e176f <+3231>:	nop
   0x00002b2eae5e1770 <+3232>:	lea    0x3148(%r13),%r9
   0x00002b2eae5e1777 <+3239>:	lea    0x17b456(%rip),%r8        # 0x2b2eae75cbd4
   0x00002b2eae5e177e <+3246>:	lea    0x168641(%rip),%rdx        # 0x2b2eae749dc6
   0x00002b2eae5e1785 <+3253>:	lea    0x168398(%rip),%rsi        # 0x2b2eae749b24
   0x00002b2eae5e178c <+3260>:	mov    $0x1b9,%ecx
   0x00002b2eae5e1791 <+3265>:	mov    $0x1,%edi
   0x00002b2eae5e1796 <+3270>:	xor    %eax,%eax
   0x00002b2eae5e1798 <+3272>:	callq  0x2b2eae680330 <LogMagickEvent>
   0x00002b2eae5e179d <+3277>:	jmpq   0x2b2eae5e0b25 <ReadImage+85>
   0x00002b2eae5e17a2 <+3282>:	nopw   0x0(%rax,%rax,1)
   0x00002b2eae5e17a8 <+3288>:	mov    0x401d61(%rip),%rdi        # 0x2b2eae9e3510
   0x00002b2eae5e17af <+3295>:	callq  0x2b2eae6e6f30 <LockSemaphoreInfo>
=> 0x00002b2eae5e17b4 <+3300>:	mov    %rbp,%rdi
   0x00002b2eae5e17b7 <+3303>:	callq  0x2b2eae6820e0 <GetImageDecoder>
   0x00002b2eae5e17bc <+3308>:	mov    0x20(%rsp),%rsi
   0x00002b2eae5e17c1 <+3313>:	mov    %rbx,%rdi
   0x00002b2eae5e17c4 <+3316>:	callq  *%rax
   0x00002b2eae5e17c6 <+3318>:	mov    0x401d43(%rip),%rdi        # 0x2b2eae9e3510
   0x00002b2eae5e17cd <+3325>:	mov    %rax,%r12
   0x00002b2eae5e17d0 <+3328>:	callq  0x2b2eae6e7150 <UnlockSemaphoreInfo>
   0x00002b2eae5e17d5 <+3333>:	mov    0x8(%rbx),%edx
   0x00002b2eae5e17d8 <+3336>:	test   %edx,%edx
   0x00002b2eae5e17da <+3338>:	je     0x2b2eae5e0c89 <ReadImage+441>
   0x00002b2eae5e17e0 <+3344>:	mov    %r15,%rdi
   0x00002b2eae5e17e3 <+3347>:	callq  0x2b2eae6e3130 <RelinquishUniqueFileResource>
   0x00002b2eae5e17e8 <+3352>:	test   %r12,%r12
   0x00002b2eae5e17eb <+3355>:	movl   $0x0,0x8(%rbx)
   0x00002b2eae5e17f2 <+3362>:	je     0x2b2eae5e1760 <ReadImage+3216>
   0x00002b2eae5e17f8 <+3368>:	mov    0x30(%rsp),%rsi
   0x00002b2eae5e17fd <+3373>:	lea    0x268(%r12),%rdi
   0x00002b2eae5e1805 <+3381>:	mov    $0x1000,%edx
   0x00002b2eae5e180a <+3386>:	callq  0x2b2eae6fd5c0 <CopyMagickString>
   0x00002b2eae5e180f <+3391>:	mov    0x20(%rsp),%rax
   0x00002b2eae5e1814 <+3396>:	mov    (%rax),%eax
   0x00002b2eae5e1816 <+3398>:	cmp    $0x18f,%eax
   0x00002b2eae5e181b <+3403>:	jbe    0x2b2eae5e0ca4 <ReadImage+468>
   0x00002b2eae5e1821 <+3409>:	lea    0x2268(%r12),%r9
   0x00002b2eae5e1829 <+3417>:	lea    0x168450(%rip),%r8        # 0x2b2eae749c80
   0x00002b2eae5e1830 <+3424>:	lea    0x16858f(%rip),%rdx        # 0x2b2eae749dc6
   0x00002b2eae5e1837 <+3431>:	lea    0x1682e6(%rip),%rsi        # 0x2b2eae749b24
   0x00002b2eae5e183e <+3438>:	mov    %eax,(%rsp)
   0x00002b2eae5e1841 <+3441>:	mov    $0x25f,%ecx
   0x00002b2eae5e1846 <+3446>:	mov    $0x100,%edi
   0x00002b2eae5e184b <+3451>:	xor    %eax,%eax
   0x00002b2eae5e184d <+3453>:	callq  0x2b2eae680330 <LogMagickEvent>
   0x00002b2eae5e1852 <+3458>:	mov    %r12,%rdi
   0x00002b2eae5e1855 <+3461>:	callq  0x2b2eae5a9470 <IsBlobTemporary>
   0x00002b2eae5e185a <+3466>:	test   %eax,%eax
   0x00002b2eae5e185c <+3468>:	je     0x2b2eae5e0cb4 <ReadImage+484>
   0x00002b2eae5e1862 <+3474>:	mov    %r15,%rdi
   0x00002b2eae5e1865 <+3477>:	callq  0x2b2eae6e3130 <RelinquishUniqueFileResource>
   0x00002b2eae5e186a <+3482>:	jmpq   0x2b2eae5e0cb4 <ReadImage+484>
   0x00002b2eae5e186f <+3487>:	nop
   0x00002b2eae5e1870 <+3488>:	mov    0x30(%rbx),%rsi
   0x00002b2eae5e1874 <+3492>:	mov    0x20(%rsp),%rdx
   0x00002b2eae5e1879 <+3497>:	mov    %r12,%rdi
   0x00002b2eae5e187c <+3500>:	callq  0x2b2eae67ba80 <CloneImages>
   0x00002b2eae5e1881 <+3505>:	test   %rax,%rax
   0x00002b2eae5e1884 <+3508>:	mov    %rax,%rbp
   0x00002b2eae5e1887 <+3511>:	je     0x2b2eae5e1a02 <ReadImage+3890>
   0x00002b2eae5e188d <+3517>:	mov    %r12,%rdi
   0x00002b2eae5e1890 <+3520>:	callq  0x2b2eae67c3a0 <DestroyImageList>
   0x00002b2eae5e1895 <+3525>:	mov    %rbp,%rdi
   0x00002b2eae5e1898 <+3528>:	callq  0x2b2eae67b460 <GetFirstImageInList>
   0x00002b2eae5e189d <+3533>:	mov    %rax,%r12
   0x00002b2eae5e18a0 <+3536>:	jmpq   0x2b2eae5e0cd4 <ReadImage+516>
   0x00002b2eae5e18a5 <+3541>:	nopl   (%rax)
   0x00002b2eae5e18a8 <+3544>:	mov    0x88(%rsp),%rdx
   0x00002b2eae5e18b0 <+3552>:	cmp    %rdx,0x30(%rcx)
   0x00002b2eae5e18b4 <+3556>:	mov    %rcx,%rdi
   0x00002b2eae5e18b7 <+3559>:	jne    0x2b2eae5e15b7 <ReadImage+2791>
   0x00002b2eae5e18bd <+3565>:	jmpq   0x2b2eae5e112f <ReadImage+1631>
   0x00002b2eae5e18c2 <+3570>:	nopw   0x0(%rax,%rax,1)
   0x00002b2eae5e18c8 <+3576>:	mov    0x20(%rsp),%rdx
   0x00002b2eae5e18cd <+3581>:	mov    %r12,%rsi
   0x00002b2eae5e18d0 <+3584>:	mov    %rcx,%rdi
   0x00002b2eae5e18d3 <+3587>:	callq  0x2b2eae706760 <CropImage>
   0x00002b2eae5e18d8 <+3592>:	test   %rax,%rax
   0x00002b2eae5e18db <+3595>:	jne    0x2b2eae5e1612 <ReadImage+2882>
   0x00002b2eae5e18e1 <+3601>:	jmpq   0x2b2eae5e112a <ReadImage+1626>
   0x00002b2eae5e18e6 <+3606>:	nopw   %cs:0x0(%rax,%rax,1)
   0x00002b2eae5e18f0 <+3616>:	callq  0x2b2eae5947d0 <__errno_location@plt>
   0x00002b2eae5e18f5 <+3621>:	mov    0x20(%rsp),%rdi
   0x00002b2eae5e18fa <+3626>:	movl   $0x1,(%rax)
   0x00002b2eae5e1900 <+3632>:	lea    0x1743fd(%rip),%rax        # 0x2b2eae755d04
   0x00002b2eae5e1907 <+3639>:	lea    0x15f3a8(%rip),%r9        # 0x2b2eae740cb6
   0x00002b2eae5e190e <+3646>:	lea    0x1684b1(%rip),%rdx        # 0x2b2eae749dc6
   0x00002b2eae5e1915 <+3653>:	lea    0x168208(%rip),%rsi        # 0x2b2eae749b24
   0x00002b2eae5e191c <+3660>:	mov    %rax,(%rsp)
   0x00002b2eae5e1920 <+3664>:	mov    %r15,0x8(%rsp)
   0x00002b2eae5e1925 <+3669>:	mov    $0x1f3,%r8d
   0x00002b2eae5e192b <+3675>:	mov    $0x1c6,%ecx
   0x00002b2eae5e1930 <+3680>:	xor    %eax,%eax
   0x00002b2eae5e1932 <+3682>:	callq  0x2b2eae648330 <ThrowMagickException>
   0x00002b2eae5e1937 <+3687>:	xor    %eax,%eax
   0x00002b2eae5e1939 <+3689>:	jmpq   0x2b2eae5e13c8 <ReadImage+2296>
   0x00002b2eae5e193e <+3694>:	xchg   %ax,%ax
   0x00002b2eae5e1940 <+3696>:	mov    0x401bc9(%rip),%rdi        # 0x2b2eae9e3510
   0x00002b2eae5e1947 <+3703>:	callq  0x2b2eae6e7150 <UnlockSemaphoreInfo>
   0x00002b2eae5e194c <+3708>:	jmpq   0x2b2eae5e16ce <ReadImage+3070>
   0x00002b2eae5e1951 <+3713>:	nopl   0x0(%rax)
   0x00002b2eae5e1958 <+3720>:	mov    0x401bb1(%rip),%rdi        # 0x2b2eae9e3510
   0x00002b2eae5e195f <+3727>:	callq  0x2b2eae6e6f30 <LockSemaphoreInfo>
   0x00002b2eae5e1964 <+3732>:	jmpq   0x2b2eae5e16a7 <ReadImage+3031>
   0x00002b2eae5e1969 <+3737>:	nopl   0x0(%rax)
   0x00002b2eae5e1970 <+3744>:	mov    %rbp,%rdi
   0x00002b2eae5e1973 <+3747>:	callq  0x2b2eae682410 <GetMagickRawSupport>
   0x00002b2eae5e1978 <+3752>:	test   %eax,%eax
   0x00002b2eae5e197a <+3754>:	je     0x2b2eae5e0c0b <ReadImage+315>
   0x00002b2eae5e1980 <+3760>:	movl   $0x1,0x54(%rbx)
   0x00002b2eae5e1987 <+3767>:	jmpq   0x2b2eae5e0c0b <ReadImage+315>
   0x00002b2eae5e198c <+3772>:	lea    0x401b7d(%rip),%rdi        # 0x2b2eae9e3510
   0x00002b2eae5e1993 <+3779>:	callq  0x2b2eae6e6bc0 <AcquireSemaphoreInfo>
   0x00002b2eae5e1998 <+3784>:	jmpq   0x2b2eae5e0c2e <ReadImage+350>
   0x00002b2eae5e199d <+3789>:	callq  0x2b2eae5947d0 <__errno_location@plt>
   0x00002b2eae5e19a2 <+3794>:	mov    (%rax),%edi
   0x00002b2eae5e19a4 <+3796>:	callq  0x2b2eae647d00 <GetExceptionMessage>
   0x00002b2eae5e19a9 <+3801>:	mov    0x20(%rsp),%rdi
   0x00002b2eae5e19ae <+3806>:	mov    %rax,%rbp
   0x00002b2eae5e19b1 <+3809>:	mov    %rax,0x10(%rsp)
   0x00002b2eae5e19b6 <+3814>:	lea    0x15d803(%rip),%rax        # 0x2b2eae73f1c0
   0x00002b2eae5e19bd <+3821>:	lea    0x168334(%rip),%r9        # 0x2b2eae749cf8
   0x00002b2eae5e19c4 <+3828>:	lea    0x1683fb(%rip),%rdx        # 0x2b2eae749dc6
   0x00002b2eae5e19cb <+3835>:	lea    0x168152(%rip),%rsi        # 0x2b2eae749b24
   0x00002b2eae5e19d2 <+3842>:	mov    $0x1ae,%r8d
   0x00002b2eae5e19d8 <+3848>:	mov    $0x277,%ecx
   0x00002b2eae5e19dd <+3853>:	mov    %rax,(%rsp)
   0x00002b2eae5e19e1 <+3857>:	mov    %r15,0x8(%rsp)
   0x00002b2eae5e19e6 <+3862>:	xor    %eax,%eax
   0x00002b2eae5e19e8 <+3864>:	callq  0x2b2eae648330 <ThrowMagickException>
   0x00002b2eae5e19ed <+3869>:	mov    %rbp,%rdi
   0x00002b2eae5e19f0 <+3872>:	callq  0x2b2eae6fd710 <DestroyString>
   0x00002b2eae5e19f5 <+3877>:	mov    %r12,%rdi
   0x00002b2eae5e19f8 <+3880>:	callq  0x2b2eae67c3a0 <DestroyImageList>
   0x00002b2eae5e19fd <+3885>:	jmpq   0x2b2eae5e1760 <ReadImage+3216>
   0x00002b2eae5e1a02 <+3890>:	lea    0x1742fb(%rip),%rax        # 0x2b2eae755d04
   0x00002b2eae5e1a09 <+3897>:	mov    0x20(%rsp),%rdi
   0x00002b2eae5e1a0e <+3902>:	lea    0x1682bb(%rip),%r9        # 0x2b2eae749cd0
   0x00002b2eae5e1a15 <+3909>:	lea    0x1683aa(%rip),%rdx        # 0x2b2eae749dc6
   0x00002b2eae5e1a1c <+3916>:	lea    0x168101(%rip),%rsi        # 0x2b2eae749b24
   0x00002b2eae5e1a23 <+3923>:	mov    %r15,0x8(%rsp)
   0x00002b2eae5e1a28 <+3928>:	mov    %rax,(%rsp)
   0x00002b2eae5e1a2c <+3932>:	mov    $0x19a,%r8d
   0x00002b2eae5e1a32 <+3938>:	mov    $0x26c,%ecx
   0x00002b2eae5e1a37 <+3943>:	xor    %eax,%eax
   0x00002b2eae5e1a39 <+3945>:	callq  0x2b2eae648330 <ThrowMagickException>
   0x00002b2eae5e1a3e <+3950>:	jmpq   0x2b2eae5e0cd4 <ReadImage+516>
   0x00002b2eae5e1a43 <+3955>:	mov    %rbx,%rdi
   0x00002b2eae5e1a46 <+3958>:	callq  0x2b2eae66e550 <DestroyImageInfo>
   0x00002b2eae5e1a4b <+3963>:	mov    0x18(%rsp),%rdi
   0x00002b2eae5e1a50 <+3968>:	callq  0x2b2eae66db80 <DestroyImage>
   0x00002b2eae5e1a55 <+3973>:	xor    %eax,%eax
   0x00002b2eae5e1a57 <+3975>:	jmpq   0x2b2eae5e13c8 <ReadImage+2296>
   0x00002b2eae5e1a5c <+3980>:	mov    0x20(%rsp),%rbp
   0x00002b2eae5e1a61 <+3985>:	xor    %esi,%esi
   0x00002b2eae5e1a63 <+3987>:	mov    %rbx,%rdi
   0x00002b2eae5e1a66 <+3990>:	mov    %rbp,%rdx
   0x00002b2eae5e1a69 <+3993>:	callq  0x2b2eae6754d0 <SetImageInfo>
   0x00002b2eae5e1a6e <+3998>:	mov    0x30(%rsp),%rsi
   0x00002b2eae5e1a73 <+4003>:	mov    $0x1000,%edx
   0x00002b2eae5e1a78 <+4008>:	mov    %r15,%rdi
   0x00002b2eae5e1a7b <+4011>:	callq  0x2b2eae6fd5c0 <CopyMagickString>
   0x00002b2eae5e1a80 <+4016>:	mov    %rbp,%rsi
   0x00002b2eae5e1a83 <+4019>:	mov    %r12,%rdi
   0x00002b2eae5e1a86 <+4022>:	callq  0x2b2eae682e60 <GetMagickInfo>
   0x00002b2eae5e1a8b <+4027>:	mov    %rax,%rbp
   0x00002b2eae5e1a8e <+4030>:	jmpq   0x2b2eae5e1640 <ReadImage+2928>
   0x00002b2eae5e1a93 <+4035>:	callq  0x2b2eae5947d0 <__errno_location@plt>
   0x00002b2eae5e1a98 <+4040>:	mov    (%rax),%edi
   0x00002b2eae5e1a9a <+4042>:	callq  0x2b2eae647d00 <GetExceptionMessage>
   0x00002b2eae5e1a9f <+4047>:	mov    0x20(%rsp),%rdi
   0x00002b2eae5e1aa4 <+4052>:	mov    %rax,%rbp
   0x00002b2eae5e1aa7 <+4055>:	mov    %rax,0x10(%rsp)
   0x00002b2eae5e1aac <+4060>:	lea    0x15d70d(%rip),%rax        # 0x2b2eae73f1c0
   0x00002b2eae5e1ab3 <+4067>:	lea    0x15d729(%rip),%r9        # 0x2b2eae73f1e3
   0x00002b2eae5e1aba <+4074>:	lea    0x168305(%rip),%rdx        # 0x2b2eae749dc6
   0x00002b2eae5e1ac1 <+4081>:	lea    0x16805c(%rip),%rsi        # 0x2b2eae749b24
   0x00002b2eae5e1ac8 <+4088>:	mov    %r15,0x8(%rsp)
   0x00002b2eae5e1acd <+4093>:	mov    $0x1ae,%r8d
   0x00002b2eae5e1ad3 <+4099>:	mov    %rax,(%rsp)
   0x00002b2eae5e1ad7 <+4103>:	mov    $0x247,%ecx
   0x00002b2eae5e1adc <+4108>:	xor    %eax,%eax
   0x00002b2eae5e1ade <+4110>:	callq  0x2b2eae648330 <ThrowMagickException>
   0x00002b2eae5e1ae3 <+4115>:	mov    %rbp,%rdi
   0x00002b2eae5e1ae6 <+4118>:	callq  0x2b2eae6fd710 <DestroyString>
   0x00002b2eae5e1aeb <+4123>:	jmpq   0x2b2eae5e1760 <ReadImage+3216>
   0x00002b2eae5e1af0 <+4128>:	lea    0x17420d(%rip),%rax        # 0x2b2eae755d04
   0x00002b2eae5e1af7 <+4135>:	mov    0x20(%rsp),%rdi
   0x00002b2eae5e1afc <+4140>:	lea    0x15f405(%rip),%r9        # 0x2b2eae740f08
   0x00002b2eae5e1b03 <+4147>:	lea    0x1682bc(%rip),%rdx        # 0x2b2eae749dc6
   0x00002b2eae5e1b0a <+4154>:	lea    0x168013(%rip),%rsi        # 0x2b2eae749b24
   0x00002b2eae5e1b11 <+4161>:	mov    $0x220,%ecx
   0x00002b2eae5e1b16 <+4166>:	mov    %rax,(%rsp)
   0x00002b2eae5e1b1a <+4170>:	mov    %r15,0x8(%rsp)
   0x00002b2eae5e1b1f <+4175>:	xor    %eax,%eax
   0x00002b2eae5e1b21 <+4177>:	mov    $0x1a4,%r8d
   0x00002b2eae5e1b27 <+4183>:	callq  0x2b2eae648330 <ThrowMagickException>
   0x00002b2eae5e1b2c <+4188>:	mov    0x8(%rbx),%ecx
   0x00002b2eae5e1b2f <+4191>:	test   %ecx,%ecx
   0x00002b2eae5e1b31 <+4193>:	je     0x2b2eae5e1760 <ReadImage+3216>
   0x00002b2eae5e1b37 <+4199>:	mov    %r15,%rdi
   0x00002b2eae5e1b3a <+4202>:	callq  0x2b2eae6e3130 <RelinquishUniqueFileResource>
   0x00002b2eae5e1b3f <+4207>:	jmpq   0x2b2eae5e1760 <ReadImage+3216>
   0x00002b2eae5e1b44 <+4212>:	mov    0x18(%rsp),%r14
   0x00002b2eae5e1b49 <+4217>:	mov    %r14,%rdi
   0x00002b2eae5e1b4c <+4220>:	callq  0x2b2eae5ab710 <CloseBlob>
   0x00002b2eae5e1b51 <+4225>:	mov    %rbx,%rdi
   0x00002b2eae5e1b54 <+4228>:	callq  0x2b2eae66e550 <DestroyImageInfo>
   0x00002b2eae5e1b59 <+4233>:	mov    %r14,%rdi
   0x00002b2eae5e1b5c <+4236>:	callq  0x2b2eae66db80 <DestroyImage>
   0x00002b2eae5e1b61 <+4241>:	xor    %eax,%eax
   0x00002b2eae5e1b63 <+4243>:	jmpq   0x2b2eae5e13c8 <ReadImage+2296>
   0x00002b2eae5e1b68 <+4248>:	callq  0x2b2eae594930 <__stack_chk_fail@plt>
   0x00002b2eae5e1b6d <+4253>:	lea    0x16825c(%rip),%rcx        # 0x2b2eae749dd0
   0x00002b2eae5e1b74 <+4260>:	lea    0x167fa9(%rip),%rsi        # 0x2b2eae749b24
   0x00002b2eae5e1b7b <+4267>:	lea    0x15d586(%rip),%rdi        # 0x2b2eae73f108
   0x00002b2eae5e1b82 <+4274>:	mov    $0x1bb,%edx
   0x00002b2eae5e1b87 <+4279>:	callq  0x2b2eae593b80 <__assert_fail@plt>
   0x00002b2eae5e1b8c <+4284>:	lea    0x16823d(%rip),%rcx        # 0x2b2eae749dd0
   0x00002b2eae5e1b93 <+4291>:	lea    0x167f8a(%rip),%rsi        # 0x2b2eae749b24
   0x00002b2eae5e1b9a <+4298>:	lea    0x15dd0f(%rip),%rdi        # 0x2b2eae73f8b0
   0x00002b2eae5e1ba1 <+4305>:	mov    $0x1b6,%edx
   0x00002b2eae5e1ba6 <+4310>:	callq  0x2b2eae593b80 <__assert_fail@plt>
   0x00002b2eae5e1bab <+4315>:	lea    0x16821e(%rip),%rcx        # 0x2b2eae749dd0
   0x00002b2eae5e1bb2 <+4322>:	lea    0x167f6b(%rip),%rsi        # 0x2b2eae749b24
   0x00002b2eae5e1bb9 <+4329>:	lea    0x15f2d8(%rip),%rdi        # 0x2b2eae740e98
   0x00002b2eae5e1bc0 <+4336>:	mov    $0x1b5,%edx
   0x00002b2eae5e1bc5 <+4341>:	callq  0x2b2eae593b80 <__assert_fail@plt>
End of assembler dump.
It'll take lots of time to analyse this disassembly and match with the C code, but, on a quick glance, GetImageDecoder should immediately follow LockSemaphoreInfo, but I don't see anything obviously similar in the C code. --Zhuyifei1999 (talk) 05:40, 9 July 2018 (UTC)