Commons talk:CropTool/Archive 1
This is an archive of past discussions. Do not edit the contents of this page. If you wish to start a new discussion or revive an old one, please do so on the current talk page. |
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)
- Done with the help of Steinsplitter. /Lokal_Profil 18:36, 12 March 2014 (UTC)
- If I get the dependencies list then I'll set it up. /Lokal_Profil 19:36, 18 February 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)
- 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)
- 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)
- 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)
- 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)
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)
- Danmichaelo, thanks a lot. Much appreciated! --Danapit (talk) 06:34, 12 October 2015 (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)
- Great. I came here to suggest the same feature Dana but you beat me to it. --Saqib (talk) 13:58, 6 February 2014 (UTC)
- Danmichaelo, thanks for your feedback, it would be great to see the functions implemented ;) --Danapit (talk) 06:15, 24 December 2013 (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('
? (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)CommonsMediawiki:croptool.js');- 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)
- 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)
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)
- @Cherubino: This was just added. – Danmichaelo (δ) 18:05, 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
- See vrasion A by the tool using {{Derivative versions}}.
- See version B using
<gallery>
.
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)
- 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)
- 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)
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
- File:Verbier banner Mont Fort.jpg
- File:Carlia longipes 3068 (cropped).jpg
- File:Gleacher Center.jpg
- File:Chicago Grant Park night pano (Willis Tower).jpg (This also has a copied {{LargeImage}} temlate, which is clearly not applicable for the cropped version)
- File:Chicago Grant Park night pano (Smurfit-Stone Building "Go Hawks").jpg (This and the previous has user categories, which are not applicable for the derived version)
- 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)
- 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)
- 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)
- Not only the templates, but also some irrelevant (hidden) categories. Regards, Yann (talk) 09:43, 27 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)
- 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)
- 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)
- 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)
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)
- 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)
- 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)
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)
- @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 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)
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)
— 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)
- Thanks -- done: phab:T193409 -Pete Forsyth (talk) 16:04, 30 April 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)
- Looks like it's doing the same thing again. Been "loading" for about 20 minutes now. GMGtalk 12:21, 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)
- I'm completely in the wild here. Checked the memory log now and the memory usage (from
- 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)