Skip to content

Instantly share code, notes, and snippets.

@smirn0v
Created August 18, 2015 13:25
Show Gist options
  • Save smirn0v/467fca27bb75452f9f08 to your computer and use it in GitHub Desktop.
Save smirn0v/467fca27bb75452f9f08 to your computer and use it in GitHub Desktop.
have alpha channel
function methImpl_UIImage__isInvisibleAndGetIsTranslucent_ {
rbx = rdx;
rax = objc_getAssociatedObject(rdi, ___imageIsInvisibleKey);
r14 = rax;
rax = objc_getAssociatedObject(rdi, ___imageIsTranslucentKey);
r15 = rax;
if (r14 != 0x0) goto loc_0x40052;
goto loc_3fe1b;
loc_40052:
if (rbx != 0x0) {
rax = [r15 boolValue];
*(int8_t *)rbx = rax;
}
rax = [r14 boolValue];
return rax;
loc_3fe1b:
var_40 = rbx;
rbx = *objc_msgSend;
[r12 size];
var_48 = xmm0;
var_56 = xmm1;
rax = [r12 CGImage];
rax = CGImageGetBitmapInfo(rax);
rbx = 0x1;
asm{ xorpd %xmm0, %xmm0 };
if (var_48 != xmm0) goto loc_0x3fe6c;
goto loc_3fe62;
loc_3fe6c:
if (var_56 != xmm0) goto loc_0x3fe80;
goto loc_3fe7a;
loc_3fe80:
if ((rax & 0x1f) > 0x6) goto loc_0x3fe9c;
goto loc_3fe88;
loc_3fe9c:
rbx = 0x1;
(rbx)(r12, *objc_sel_size);
var_56 = xmm0;
var_48 = xmm1;
(rbx)(r12, @selector(scale));
_UIGraphicsBeginImageContextWithOptions(0x0);
var_80 = var_56;
var_88 = var_48;
var_56 = r12;
(rbx)(r12, @selector(drawInRect:));
rax = _UIGraphicsGetCurrentContext();
r14 = rax;
rax = CGBitmapContextGetData(r14);
r12 = rax;
rax = CGBitmapContextGetWidth(r14);
rbx = rax;
rax = CGBitmapContextGetHeight(r14);
r13 = rax;
rax = CGBitmapContextGetBytesPerRow(r14);
var_48 = rax;
rax = __UIApplicationLinkedOnOrAfter(0x6);
rax = rax == 0x0 ? 0xff : 0x0;
if (r13 <= 0x0) goto loc_0x3ffd4;
goto loc_3ff6a;
loc_3ffd4:
r15 = 0x0;
loc_3ffda:
_UIGraphicsEndImageContext();
r12 = var_56;
rbx = *objc_msgSend;
loc_3ffea:
rax = (rbx)(*bind__OBJC_CLASS_$_NSNumber, @selector(numberWithBool:), r14 & 0x1 & 0xff);
r14 = rax;
rax = (rbx)(*bind__OBJC_CLASS_$_NSNumber, @selector(numberWithBool:), r15 & 0x1 & 0xff);
r15 = rax;
objc_setAssociatedObject(r12, ___imageIsInvisibleKey, r14, 0x301);
objc_setAssociatedObject(r12, ___imageIsTranslucentKey, r15, 0x301);
rbx = var_40;
goto loc_40052;
loc_3ff6a:
r8 = (rax & 0xff) + (rax & 0xff) * 0x2;
rcx = 0x0;
r9 = var_48;
loc_3ff7d:
if (rbx <= 0x0) goto loc_0x3ffbe;
goto loc_3ff81;
loc_3ffbe:
if (((((0x0 & 0x1) == 0x0) || ((r14 & 0x1) != 0x0))) && (rcx + 0x1 < r13)) goto loc_0x3ff7d;
goto loc_3ffda;
loc_3ff81:
temp_0 = rcx;
temp_1 = r9;
rdx = SIGN_EXTEND(LOWORD(temp_0 * temp_1)) + r8;
rsi = 0x0;
rdi = 0x0;
loc_3ff91:
if (*(int8_t *)(r12 + SIGN_EXTEND(rdi) + rdx) != 0x0) {
r14 = 0x0;
}
if (rax != 0xffffffffffffffff) {
rbx = 0x1;
}
if (((0x0 & 0x1) != 0x0) && ((r14 & 0x1) == 0x0)) goto loc_0x3ffbe;
rdi = rdi + 0x4;
if (rsi + 0x1 < rbx) goto loc_0x3ff91;
goto loc_3ffbe;
loc_3fe88:
r15 = 0x0;
if (BIT_TEST(0x61, rax)) goto loc_0x3ffea;
goto loc_3fe9c;
loc_3fe7a:
if (CPU_EFLAGS & FLG_NP) goto loc_3ffea;
goto loc_3fe80;
loc_3fe62:
if (CPU_EFLAGS & FLG_P) goto loc_3fe6c;
goto loc_3ffea;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment