Skip to content

Instantly share code, notes, and snippets.

@dorentus
Forked from bdash/dynamic_cast.mm
Created August 30, 2016 02:23
Show Gist options
  • Save dorentus/9223d6bec29cd05045035fb1bc20a756 to your computer and use it in GitHub Desktop.
Save dorentus/9223d6bec29cd05045035fb1bc20a756 to your computer and use it in GitHub Desktop.
Excerpt from Hopper pseudocode from __dynamic_cast in libc++abi.dylib
if ((*(int8_t *)guard variable for __dynamic_cast::use_strcmp == 0x0) && (___cxa_guard_acquire(guard variable for __dynamic_cast::use_strcmp, rsi, rdx, rcx, r8, r9) != 0x0)) {
rsi = *_NSGetProgname();
rcx = 0x1;
if (strcmp("Adobe Illustrator", rsi) != 0x0) {
rsi = *_NSGetProgname();
rdx = 0x13;
rcx = strncmp("Adobe Photoshop CS5", rsi, rdx) == 0x0 ? 0x1 : 0x0;
}
*(int8_t *)__dynamic_cast::use_strcmp = rcx;
___cxa_guard_release(guard variable for __dynamic_cast::use_strcmp, rsi, rdx, rcx, r8, r9);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment