Skip to content

Instantly share code, notes, and snippets.

@nicolastinkl
Created August 29, 2016 08:23
Show Gist options
  • Save nicolastinkl/f776df448631a03d59e517c464ac1825 to your computer and use it in GitHub Desktop.
Save nicolastinkl/f776df448631a03d59e517c464ac1825 to your computer and use it in GitHub Desktop.
WeChat Delegate 汇编源码
char -[MicroMessengerAppDelegate handleOpenURL:bundleID:](void * self, void * _cmd, void * arg2, void * arg3) {
r7 = (sp - 0x4 - 0x4 - 0x4 - 0x4 - 0x4) + 0xc;
sp = sp - 0x4 - 0x4 - 0x4 - 0x4 - 0x4 - 0x4 - 0x4 - 0x4 - 0x64;
r11 = loc_e0b370(arg2, _cmd, arg2, arg3, stack[2048], stack[2049], stack[2050], stack[2051], stack[2052]);
stack[2067] = loc_e0b370(arg3);
r6 = 0x1e42556;
r10 = @selector(logWithLevel:module:errorCode:file:line:func:format:);
r0 = @class(iConsole);
r2 = @"url[%@]";
r3 = 0x73b;
asm{ stm.w sp, {r1, r8} };
loc_e0b35c(r0, r10, 0x2, 0x0, stack[2048], stack[2049], r3, r6 + 0x8942c);
stack[2064] = @selector(defaultCenter);
loc_e0b35c(@class(MMServiceCenter), @selector(defaultCenter), 0x26fd950);
r4 = sub_e0b368();
stack[2065] = @selector(class);
r0 = loc_e0b35c(@class(AppDataMgr), @selector(class), 0x26fdb7c);
stack[2066] = @selector(getService:);
loc_e0b35c(r4, @selector(getService:), r0);
r7 = r7;
r6 = sub_e0b368();
r5 = loc_e0b35c(r6, @selector(isAppDataChecked));
loc_e0b36c(r6);
loc_e0b36c(r4);
if ((r5 & 0xff) == 0x0) {
loc_e0b35c(@class(MMServiceCenter), stack[2064]);
r4 = sub_e0b368();
r0 = loc_e0b35c(@class(AppDataMgr), stack[2065]);
loc_e0b35c(r4, stack[2066], r0);
r7 = r7;
r5 = sub_e0b368();
loc_e0b35c(r5, @selector(checkAndUpdateAppData));
loc_e0b36c(r5);
loc_e0b36c(r4);
}
loc_e0b35c(r11, @selector(absoluteString));
r7 = r7;
r6 = sub_e0b368();
if (r6 == 0x0) goto loc_89572;
loc_89540:
loc_e0b378(sp + 0x5c, r6, @selector(rangeOfString:options:), @"weixin://", 0x1);
if (stack[2071] != 0x0) goto loc_897b6;
loc_89572:
if (0x0 == 0x0) goto loc_897b6;
loc_8957a:
r4 = @selector(length);
if (loc_e0b35c(r6, r4) < loc_e0b35c(@"weixin://", r4)) goto loc_897b6;
loc_895a6:
stack[2068] = r11;
r0 = loc_e0b35c(@"weixin://", r4);
stack[2063] = r6;
loc_e0b35c(r6, @selector(substringFromIndex:), r0);
r5 = sub_e0b368();
stack[2060] = @selector(componentsSeparatedByString:);
loc_e0b35c(r5, @selector(componentsSeparatedByString:), @"/");
r7 = r7;
r6 = sub_e0b368();
if (r6 == 0x0) goto loc_897c2;
loc_89608:
stack[2058] = 0x0;
stack[2061] = @selector(count);
r11 = 0x0;
if (loc_e0b35c(r6, @selector(count)) == 0x0) goto loc_8ab22;
loc_8962a:
stack[2057] = r4;
stack[2059] = r5;
loc_e0b35c(r6, @selector(firstObject));
r7 = r7;
r4 = sub_e0b368();
r0 = loc_e0b35c(r6, stack[2061]);
stack[2048] = 0x0;
stack[2049] = 0x1eca290;
loc_e0b35c(@class(iConsole), r10, 0x2, 0x0, stack[2048], stack[2049], 0x756, "-[MicroMessengerAppDelegate handleOpenURL:bundleID:]", @"nsCommand=%@, aryString.count=%lu", r4, r0);
r5 = @selector(caseInsensitiveCompare:);
if ((loc_e0b35c(r4, r5, @"jumpurl") != 0x0) || (loc_e0b35c(r6, stack[2061]) < 0x2)) goto loc_897ca;
loc_896c4:
stack[2062] = r6;
loc_e0b35c(r6, @selector(objectAtIndex:), 0x1);
r7 = r7;
r6 = stack[2057];
r5 = sub_e0b368();
r8 = loc_e0b35c();
loc_e0b36c(r5);
if (r8 == 0x0) goto loc_8a190;
loc_896fa:
loc_e0b35c(@class(URLSourceInfo), @selector(alloc), 0x26fdec0);
r5 = loc_e0b35c();
r1 = r6;
r6 = r4;
r0 = loc_e0b35c(r4, r1);
loc_e0b35c(stack[2059], stack[2058], r0 + 0x1);
r4 = sub_e0b368();
loc_e0b35c(r5, @selector(setM_url:), r4);
loc_e0b36c(r4);
loc_e0b35c(r5, @selector(setM_bundleId:), stack[2067]);
loc_e0b35c(@class(CAppViewControllerManager), @selector(getAppViewControllerManager), 0x26fdaf4);
r4 = sub_e0b368();
loc_e0b35c(r4, @selector(jumpToURLShardBy3rdApp:), r5);
loc_e0b36c(r4);
goto loc_8a184;
loc_8a184:
loc_e0b36c();
goto loc_8a188;
loc_8a188:
r11 = 0x1;
goto loc_8ab18;
loc_8ab18:
loc_e0b36c(r6);
r5 = stack[2059];
r6 = stack[2062];
goto loc_8ab22;
loc_8ab22:
loc_e0b36c(r6);
loc_e0b36c(r5);
r6 = stack[2063];
goto loc_8ab30;
loc_8ab30:
loc_e0b36c(r6);
loc_e0b36c(stack[2067]);
loc_e0b36c(stack[2068]);
r0 = r11;
return r0;
loc_8a190:
r11 = 0x0;
r6 = r4;
goto loc_8ab18;
loc_897ca:
stack[2062] = r6;
r6 = r4;
if ((loc_e0b35c(r6, r5, @"app") != 0x0) || (loc_e0b35c(stack[2062], stack[2061]) < 0x2)) goto loc_8997a;
loc_897f4:
stack[2060] = r6;
r11 = stack[2062];
r6 = @selector(objectAtIndex:);
loc_e0b35c(r11, r6, 0x1);
r7 = r7;
r8 = stack[2061];
stack[2057] = sub_e0b368();
if (loc_e0b35c(r11, r8) < 0x4) goto loc_8985c;
loc_89828:
loc_e0b35c(r11, r6, 0x2);
r7 = r7;
r4 = sub_e0b368();
r10 = r5;
r5 = loc_e0b35c();
loc_e0b36c(r4);
COND = r5 == 0x0;
r5 = r10;
if (COND) goto loc_8a4be;
loc_8985c:
stack[2058] = r6;
r10 = 0x26fd950;
if (loc_e0b35c(r11, r8) < 0x4) goto loc_898a8;
loc_89874:
loc_e0b35c(r11, stack[2058], 0x2);
r7 = r7;
r4 = sub_e0b368();
r6 = r5;
r5 = loc_e0b35c();
loc_e0b36c(r4);
COND = r5 == 0x0;
r5 = r6;
if (COND) goto loc_8a5ec;
loc_898a8:
if (loc_e0b35c(r11, r8) < 0x4) goto loc_898e8;
loc_898b4:
loc_e0b35c(r11, stack[2058], 0x2);
r7 = r7;
r4 = sub_e0b368();
r6 = r5;
r5 = loc_e0b35c();
loc_e0b36c(r4);
COND = r5 == 0x0;
r5 = r6;
if (COND) goto loc_8a690;
loc_898e8:
r6 = r5;
if (loc_e0b35c(r11, r8) < 0x4) goto loc_8a19a;
loc_898f8:
loc_e0b35c(r11, stack[2058], 0x2);
r7 = r7;
r4 = sub_e0b368();
r5 = loc_e0b35c(r4, @selector(isEqualToString:), @"openprofile");
loc_e0b36c(r4);
if ((r5 & 0xff) == 0x0) goto loc_8a19a;
loc_89936:
loc_e0b35c(*0x26fd950, stack[2064]);
r4 = sub_e0b368();
r0 = loc_e0b35c(@class(OpenApiMgr), stack[2065]);
loc_e0b35c(r4, stack[2066], r0);
r5 = sub_e0b368();
r0 = @selector(doOpenProfileApi:BundleID:Info:);
goto loc_8aaf2;
loc_8aaf2:
r8 = stack[2057];
loc_e0b35c(r5);
loc_e0b36c(r5);
loc_e0b36c(r4);
r11 = 0x1;
goto loc_8ab10;
loc_8ab10:
r6 = stack[2060];
goto loc_8ab14;
loc_8ab14:
loc_e0b36c();
goto loc_8ab18;
loc_8a19a:
if (loc_e0b35c(r11, r8) < 0x4) goto loc_8a324;
loc_8a1a8:
loc_e0b35c(r11, stack[2058], 0x2);
r7 = r7;
r4 = sub_e0b368();
r5 = loc_e0b35c(r4, @selector(isEqualToString:), @"jumptobizwebview");
loc_e0b36c(r4);
if ((r5 & 0xff) == 0x0) goto loc_8a324;
loc_8a1e6:
loc_e0b35c(*0x26fd950, stack[2064]);
r4 = sub_e0b368();
r0 = loc_e0b35c(@class(OpenApiMgr), stack[2065]);
loc_e0b35c(r4, stack[2066], r0);
r5 = sub_e0b368();
r0 = @selector(doJumpToBizWebview:BundleID:Info:);
goto loc_8aaf2;
loc_8a324:
if (loc_e0b35c(r11, r8) < 0x4) goto loc_8a55e;
loc_8a332:
loc_e0b35c(r11, stack[2058], 0x2);
r7 = r7;
r4 = sub_e0b368();
r5 = loc_e0b35c(r4, @selector(isEqualToString:), @"cardpackage");
loc_e0b36c(r4);
if ((r5 & 0xff) == 0x0) goto loc_8a55e;
loc_8a370:
loc_e0b35c(*0x26fd950, stack[2064]);
r4 = sub_e0b368();
r0 = loc_e0b35c(@class(OpenApiMgr), stack[2065]);
loc_e0b35c(r4, stack[2066], r0);
r5 = sub_e0b368();
r0 = @selector(doAppAddCard:BundleID:Info:);
goto loc_8aaf2;
loc_8a55e:
if (loc_e0b35c(r11, r8) < 0x4) goto loc_8a75c;
loc_8a56c:
loc_e0b35c(r11, stack[2058], 0x2);
r7 = r7;
r4 = sub_e0b368();
r5 = loc_e0b35c(r4, @selector(isEqualToString:), @"opentempsession");
loc_e0b36c(r4);
if ((r5 & 0xff) == 0x0) goto loc_8a75c;
loc_8a5aa:
loc_e0b35c(*0x26fd950, stack[2064]);
r4 = sub_e0b368();
r0 = loc_e0b35c(@class(OpenApiMgr), stack[2065]);
loc_e0b35c(r4, stack[2066], r0);
r5 = sub_e0b368();
r0 = @selector(doOpenTempSessionWithAppId:bundleId:info:);
goto loc_8aaf2;
loc_8a75c:
if (loc_e0b35c(r11, r8) < 0x4) goto loc_8a7e6;
loc_8a768:
loc_e0b35c(r11, stack[2058], 0x2);
r7 = r7;
r4 = sub_e0b368();
r5 = loc_e0b35c(r4, @selector(isEqualToString:), @"openwebview");
loc_e0b36c(r4);
if ((r5 & 0xff) == 0x0) goto loc_8a7e6;
loc_8a7a4:
loc_e0b35c(*0x26fd950, stack[2064]);
r4 = sub_e0b368();
r0 = loc_e0b35c(@class(OpenApiMgr), stack[2065]);
loc_e0b35c(r4, stack[2066], r0);
r5 = sub_e0b368();
r0 = @selector(doOpenWebviewWithAppId:bundleId:info:);
goto loc_8aaf2;
loc_8a7e6:
if (loc_e0b35c(r11, r8) < 0x4) goto loc_8a9c2;
loc_8a7f4:
loc_e0b35c(r11, stack[2058], 0x2);
r7 = r7;
r4 = sub_e0b368();
r5 = loc_e0b35c(r4, @selector(isEqualToString:), @"openranklist");
loc_e0b36c(r4);
if ((r5 & 0xff) == 0x0) goto loc_8a9c2;
loc_8a832:
loc_e0b35c(*0x26fd950, stack[2064]);
r4 = sub_e0b368();
r0 = loc_e0b35c(@class(OpenApiMgr), stack[2065]);
loc_e0b35c(r4, stack[2066], r0);
r5 = sub_e0b368();
r0 = @selector(doOpenRankListWithAppId:bundleId:info:);
goto loc_8aaf2;
loc_8a9c2:
if (loc_e0b35c(r11, r8) < 0x4) goto loc_8aa4c;
loc_8a9ce:
loc_e0b35c(r11, stack[2058], 0x2);
r7 = r7;
r4 = sub_e0b368();
r5 = loc_e0b35c(r4, @selector(isEqualToString:), @"createchatroom");
loc_e0b36c(r4);
if ((r5 & 0xff) == 0x0) goto loc_8aa4c;
loc_8aa0a:
loc_e0b35c(*0x26fd950, stack[2064]);
r4 = sub_e0b368();
r0 = loc_e0b35c(@class(OpenApiMgr), stack[2065]);
loc_e0b35c(r4, stack[2066], r0);
r5 = sub_e0b368();
r0 = @selector(doCreateChatRoom:bundleId:info:);
goto loc_8aaf2;
loc_8aa4c:
if (loc_e0b35c(r11, r8) >= 0x4) {
loc_e0b35c(r11, stack[2058], 0x2);
r7 = r7;
r4 = sub_e0b368();
r5 = loc_e0b35c(r4, @selector(isEqualToString:), @"joinchatroom");
loc_e0b36c(r4);
r5 = zero_extend_32(r5);
if (r5 != 0x0) {
r5 = 0x1;
}
}
else {
r5 = 0x0;
}
loc_e0b35c(*0x26fd950, stack[2064]);
r7 = r7;
r4 = sub_e0b368();
if (r5 != 0x1) goto loc_8ab4c;
loc_8aabe:
r0 = loc_e0b35c(@class(OpenApiMgr), stack[2065]);
loc_e0b35c(r4, stack[2066], r0);
r5 = sub_e0b368();
r0 = @selector(joinChatRoom:bundleId:info:);
goto loc_8aaf2;
loc_8ab4c:
r0 = loc_e0b35c(@class(AppDataMgr), stack[2065]);
loc_e0b35c(r4, stack[2066], r0);
r7 = r7;
r5 = sub_e0b368();
loc_e0b35c(r5, @selector(checkAndUpdateAppDataForiOS7Plus:forceUpdate:), stack[2057], 0x0);
loc_e0b36c(r5);
loc_e0b36c(r4);
if (loc_e0b35c(r11, r8) < 0x4) goto loc_8ad80;
loc_8aba0:
loc_e0b35c(r11, stack[2058], 0x2);
r7 = r7;
r4 = sub_e0b368();
r5 = loc_e0b35c();
loc_e0b36c(r4);
if (r5 == 0x0) goto loc_8ad80;
loc_8abd0:
loc_e0b35c(r11, stack[2058], 0x2);
r7 = r7;
r4 = sub_e0b368();
r5 = loc_e0b35c();
loc_e0b36c(r4);
if (r5 == 0x0) goto loc_8ad80;
loc_8ac00:
r10 = 0x26fd950;
r0 = *r10;
loc_e0b35c(r0, stack[2064]);
r8 = sub_e0b368();
r0 = loc_e0b35c(@class(AppDataMgr), stack[2065]);
loc_e0b35c(r8, stack[2066], r0);
r7 = r7;
r5 = sub_e0b368();
r4 = loc_e0b35c(r5, @selector(isNeedDetectRequetURL:), stack[2057]);
loc_e0b36c(r5);
loc_e0b36c(r8);
if ((r4 & 0xff) == 0x0) goto loc_8ad80;
loc_8ac60:
r0 = *r10;
loc_e0b35c(r0, stack[2064]);
r4 = sub_e0b368();
stack[2061] = r4;
r0 = loc_e0b35c(@class(MMLanguageMgr), stack[2065]);
loc_e0b35c(r4, stack[2066], r0);
stack[2056] = sub_e0b368();
loc_e0b35c();
stack[2055] = sub_e0b368();
r0 = *r10;
loc_e0b35c(r0, stack[2064]);
r10 = sub_e0b368();
r0 = loc_e0b35c(@class(MMLanguageMgr), stack[2065]);
loc_e0b35c(r10, stack[2066], r0);
r4 = sub_e0b368();
loc_e0b35c();
r5 = sub_e0b368();
r11 = 0x0;
loc_e0b35c(@class(CControlUtil), @selector(showAlert:message:delegate:cancelButtonTitle:), stack[2055], r5, r11, r11);
sub_e0b368();
loc_e0b36c();
loc_e0b36c(r5);
loc_e0b36c(r4);
loc_e0b36c(r10);
loc_e0b36c(stack[2055]);
loc_e0b36c(stack[2056]);
loc_e0b36c(stack[2061]);
r6 = stack[2060];
r8 = stack[2057];
goto loc_8ab14;
loc_8ad80:
loc_e0b35c(*0x26fd950, stack[2064]);
r4 = sub_e0b368();
r0 = loc_e0b35c(@class(OpenApiMgr), stack[2065]);
loc_e0b35c(r4, stack[2066], r0);
r5 = sub_e0b368();
goto loc_8aaf2;
loc_8a690:
r0 = *r10;
loc_e0b35c(r0, stack[2064]);
r4 = sub_e0b368();
r0 = loc_e0b35c(@class(OpenApiMgr), stack[2065]);
loc_e0b35c(r4, stack[2066], r0);
r5 = sub_e0b368();
r8 = stack[2057];
loc_e0b35c(r5, @selector(doOAuthOpenApi:authInfo:), r8, stack[2068]);
loc_e0b36c(r5);
loc_e0b36c(r4);
loc_e0b35c(@class(MMServiceCenter), stack[2064]);
r4 = sub_e0b368();
r0 = loc_e0b35c(@class(AppDataMgr), stack[2065]);
loc_e0b35c(r4, stack[2066], r0);
goto loc_8a72e;
loc_8a72e:
r5 = sub_e0b368();
r11 = 0x1;
loc_e0b35c(r5, @selector(checkAndUpdateAppDataForiOS7Plus:forceUpdate:), r8, 0x1);
loc_e0b36c(r5);
loc_e0b36c(r4);
goto loc_8ab10;
loc_8a5ec:
r0 = *r10;
loc_e0b35c(r0, stack[2064]);
r4 = sub_e0b368();
r0 = loc_e0b35c(@class(OpenApiMgr), stack[2065]);
loc_e0b35c(r4, stack[2066], r0);
r5 = sub_e0b368();
r8 = stack[2057];
loc_e0b35c(r5, @selector(doWCHBOpenApi:BundleID:payInfo:), r8, stack[2067], stack[2068]);
loc_e0b36c(r5);
loc_e0b36c(r4);
loc_e0b35c(@class(MMServiceCenter), stack[2064]);
r4 = sub_e0b368();
r0 = loc_e0b35c(@class(AppDataMgr), stack[2065]);
loc_e0b35c(r4, stack[2066], r0);
goto loc_8a72e;
loc_8a4be:
loc_e0b35c(@class(MMServiceCenter), stack[2064]);
r4 = sub_e0b368();
r0 = loc_e0b35c(@class(OpenApiMgr), stack[2065]);
loc_e0b35c(r4, stack[2066], r0);
r5 = sub_e0b368();
loc_e0b35c(r5, @selector(doWCPayOpenApi:payInfo:), stack[2057], stack[2068]);
loc_e0b36c(r5);
loc_e0b36c(r4);
r8 = stack[2057];
loc_e0b35c(@class(MMServiceCenter), stack[2064]);
r4 = sub_e0b368();
r0 = loc_e0b35c(@class(AppDataMgr), stack[2065]);
loc_e0b35c(r4, stack[2066], r0);
goto loc_8a72e;
loc_8997a:
r11 = stack[2068];
if ((loc_e0b35c(r6, r5, @"sign-in-twitter.wechatapp") != 0x0) || (loc_e0b35c(stack[2062], stack[2061]) < 0x2)) goto loc_89a6a;
loc_899a0:
r10 = @selector(objectAtIndex:);
loc_e0b35c(stack[2062], r10, 0x1);
r5 = sub_e0b368();
loc_e0b35c();
r7 = r7;
r4 = sub_e0b368();
loc_e0b36c(r5);
if (loc_e0b35c(r4, stack[2061]) == 0x2) {
loc_e0b35c(@class(MMServiceCenter), stack[2064]);
r8 = sub_e0b368();
r0 = loc_e0b35c(@class(MMTwitterMgr), stack[2065]);
loc_e0b35c(r8, stack[2066], r0);
r11 = sub_e0b368();
loc_e0b35c(r4, r10, 0x1);
r5 = sub_e0b368();
loc_e0b35c(r11, @selector(didTwitterLogin:), r5);
loc_e0b36c(r5);
loc_e0b36c(r11);
loc_e0b36c(r8);
}
loc_e0b36c(r4);
goto loc_8a31c;
loc_8a31c:
r11 = 0x0;
goto loc_8ab18;
loc_89a6a:
if ((loc_e0b35c(r6, r5, @"verifysms") != 0x0) || (loc_e0b35c(stack[2062], stack[2061]) < 0x3)) goto loc_89d08;
loc_89a90:
stack[2060] = r6;
r11 = @selector(objectAtIndex:);
r4 = @class(iConsole);
loc_e0b35c(stack[2062], r11, 0x1);
r7 = r7;
r5 = sub_e0b368();
r1 = 0x7cc;
r0 = 0x235d538;
asm{ stm.w sp, {r2, r8} };
loc_e0b35c(r4, r10, 0x1, 0x0, stack[2048], stack[2049], r1, "-[MicroMessengerAppDelegate handleOpenURL:bundleID:]");
loc_e0b36c(r5);
loc_e0b35c(@class(MMServiceCenter), stack[2064]);
r8 = sub_e0b368();
r0 = loc_e0b35c(@class(LazyExtensionAgent), stack[2065]);
loc_e0b35c(r8, stack[2066], r0);
r4 = sub_e0b368();
loc_e0b35c(stack[2062], r11, 0x1);
r5 = sub_e0b368();
r10 = @selector(OnHandleOpenAutoVerifySMS:);
loc_e0b35c(r4, @selector(ensureLazyListenerInitedForExtension:withSelector:forKey:), @protocol(IAutoVerifySMSExt), r10, r5);
loc_e0b36c(r5);
loc_e0b36c(r4);
loc_e0b36c(r8);
loc_e0b35c(@class(MMServiceCenter), stack[2064]);
r6 = sub_e0b368();
r0 = loc_e0b35c(@class(MMExtensionCenter), stack[2065]);
loc_e0b35c(r6, stack[2066], r0);
r4 = sub_e0b368();
loc_e0b35c(r4, @selector(getExtension:), @protocol(IAutoVerifySMSExt));
r7 = r7;
r5 = sub_e0b368();
loc_e0b36c(r4);
loc_e0b36c(r6);
r0 = stack[2062];
if (r5 == 0x0) goto loc_89fac;
loc_89c04:
r8 = r11;
r6 = r10;
loc_e0b35c();
r4 = sub_e0b368();
stack[2056] = r5;
loc_e0b35c(r5, @selector(getKeyExtensionList:), r4);
r7 = r7;
r1 = sub_e0b368();
r0 = r4;
stack[2065] = r1;
r4 = r1;
loc_e0b36c(r0, r1);
r11 = stack[2061];
r5 = r8;
stack[2057] = r5;
if (loc_e0b35c(r4, r11) != 0x0) {
r10 = 0x0;
stack[2064] = @selector(respondsToSelector:);
stack[2058] = @selector(getObject);
stack[2066] = @selector(m_deleteMark);
do {
loc_e0b35c(r4, r5, r10);
r7 = r7;
r8 = sub_e0b368();
if (zero_extend_32(loc_e0b35c()) != 0x1) {
loc_e0b35c(r8, stack[2058]);
r7 = r7;
r4 = sub_e0b368();
if ((loc_e0b35c() & 0xff) != 0x0) {
loc_e0b35c(stack[2062], r5, 0x2);
r7 = r7;
r5 = r11;
r11 = sub_e0b368();
loc_e0b35c(r4, r6, r11);
r0 = r11;
r11 = r5;
r5 = stack[2057];
loc_e0b36c(r0);
}
loc_e0b36c(r4);
r4 = stack[2065];
}
loc_e0b36c(r8);
r10 = r10 + 0x1;
} while (r10 < loc_e0b35c(r4, r11));
}
goto loc_89fa2;
loc_89fa2:
loc_e0b36c(r4);
r0 = stack[2062];
r5 = stack[2056];
goto loc_89fac;
loc_89fac:
stack[2062] = r0;
goto loc_89fb0;
loc_89fb0:
loc_e0b36c();
r11 = 0x1;
r6 = stack[2060];
goto loc_8ab18;
loc_89d08:
if ((loc_e0b35c(r6, r5, @"verifyemail") != 0x0) || (loc_e0b35c(stack[2062], stack[2061]) < 0x3)) goto loc_89fbe;
loc_89d2e:
stack[2060] = r6;
r11 = @selector(objectAtIndex:);
r4 = @class(iConsole);
loc_e0b35c(stack[2062], r11, 0x1);
r7 = r7;
r5 = sub_e0b368();
r1 = 0x7d2;
r0 = 0x235d29a;
asm{ stm.w sp, {r2, r8} };
loc_e0b35c(r4, r10, 0x1, 0x0, stack[2048], stack[2049], r1, "-[MicroMessengerAppDelegate handleOpenURL:bundleID:]");
loc_e0b36c(r5);
loc_e0b35c(@class(MMServiceCenter), stack[2064]);
r8 = sub_e0b368();
r0 = loc_e0b35c(@class(LazyExtensionAgent), stack[2065]);
loc_e0b35c(r8, stack[2066], r0);
r4 = sub_e0b368();
loc_e0b35c(stack[2062], r11, 0x1);
r5 = sub_e0b368();
r10 = @selector(OnHandleOpenAutoVerifySMS:);
loc_e0b35c(r4, @selector(ensureLazyListenerInitedForExtension:withSelector:forKey:), @protocol(IAutoVerifySMSExt), r10, r5);
loc_e0b36c(r5);
loc_e0b36c(r4);
loc_e0b36c(r8);
loc_e0b35c(@class(MMServiceCenter), stack[2064]);
r6 = sub_e0b368();
r0 = loc_e0b35c(@class(MMExtensionCenter), stack[2065]);
loc_e0b35c(r6, stack[2066], r0);
r4 = sub_e0b368();
loc_e0b35c(r4, @selector(getExtension:), @protocol(IAutoVerifySMSExt));
r7 = r7;
r5 = sub_e0b368();
loc_e0b36c(r4);
loc_e0b36c(r6);
r0 = stack[2062];
if (r5 == 0x0) goto loc_89fac;
loc_89ea2:
r8 = r11;
r6 = r10;
loc_e0b35c();
r4 = sub_e0b368();
stack[2056] = r5;
loc_e0b35c(r5, @selector(getKeyExtensionList:), r4);
r7 = r7;
r1 = sub_e0b368();
r0 = r4;
stack[2065] = r1;
r4 = r1;
loc_e0b36c(r0, r1);
r11 = stack[2061];
r5 = r8;
stack[2057] = r5;
if (loc_e0b35c(r4, r11) != 0x0) {
r10 = 0x0;
stack[2064] = @selector(respondsToSelector:);
stack[2058] = @selector(getObject);
stack[2066] = @selector(m_deleteMark);
do {
loc_e0b35c(r4, r5, r10);
r7 = r7;
r8 = sub_e0b368();
if (zero_extend_32(loc_e0b35c()) != 0x1) {
loc_e0b35c(r8, stack[2058]);
r7 = r7;
r4 = sub_e0b368();
if ((loc_e0b35c() & 0xff) != 0x0) {
loc_e0b35c(stack[2062], r5, 0x2);
r7 = r7;
r5 = r11;
r11 = sub_e0b368();
loc_e0b35c(r4, r6, r11);
r0 = r11;
r11 = r5;
r5 = stack[2057];
loc_e0b36c(r0);
}
loc_e0b36c(r4);
r4 = stack[2065];
}
loc_e0b36c(r8);
r10 = r10 + 0x1;
} while (r10 < loc_e0b35c(r4, r11));
}
goto loc_89fa2;
loc_89fbe:
if (loc_e0b35c(r6, r5, @"scanqrcode") == 0x0) goto loc_8a0f0;
loc_89fd6:
if (loc_e0b35c(r6, r5, @"cardpackage") == 0x0) goto loc_8a12a;
loc_89fee:
r10 = stack[2066];
r8 = stack[2065];
if (loc_e0b35c(r6, r5, @"dl") == 0x0) goto loc_8a22a;
loc_8a00e:
if (loc_e0b35c(r6, r5, @"connectToFreeWifi") == 0x0) goto loc_8a3b2;
loc_8a026:
if (loc_e0b35c(r6, r5, @"wap") != 0x0) goto loc_8a31c;
loc_8a03e:
r5 = stack[2062];
if (loc_e0b35c(r5, stack[2061]) < 0x2) goto loc_8a31c;
loc_8a04e:
r4 = r8;
loc_e0b35c(r5, @selector(objectAtIndex:), 0x1);
r7 = r7;
r5 = sub_e0b368();
if ((loc_e0b35c(r5, @selector(hasPrefix:), @"pay?") & 0xff) != 0x0) {
stack[2060] = r6;
loc_e0b35c(@class(CAppViewControllerManager), @selector(topMostController));
r7 = r7;
r8 = sub_e0b368();
if ((loc_e0b35c(r8, @selector(isKindOfClass:), loc_e0b35c(@class(MMUIViewController), r4)) & 0xff) != 0x0) {
r11 = 0x0;
}
else {
loc_e0b35c(@class(MMServiceCenter), stack[2064]);
r6 = sub_e0b368();
r0 = loc_e0b35c(@class(WCPayControlMgr), r4);
loc_e0b35c(r6, r10, r0);
r10 = sub_e0b368();
loc_e0b35c(@class(CAppViewControllerManager), 0x1);
r11 = sub_e0b368();
r0 = loc_e0b35c(@"pay?", stack[2057]);
loc_e0b35c(r5, stack[2058], r0);
r4 = sub_e0b368();
loc_e0b35c(r10, @selector(startPayMoneyFromWAPPayLogic:HandleUrl:), r11, r4);
loc_e0b36c(r4);
loc_e0b36c(r11);
loc_e0b36c(r10);
loc_e0b36c(r6);
r11 = 0x1;
}
r6 = stack[2060];
loc_e0b36c(r8);
}
else {
r11 = 0x0;
}
goto loc_8ab14;
loc_8a3b2:
loc_e0b35c(@class(MMServiceCenter), stack[2064]);
r4 = sub_e0b368();
r0 = loc_e0b35c(@class(PublicWifiManager), r8);
loc_e0b35c(r4, r10, r0);
r7 = r7;
r5 = sub_e0b368();
loc_e0b35c(r5, @selector(handle3rdAppWithUrl:), r11);
loc_e0b36c(r5);
loc_e0b36c(r4);
r4 = stack[2062];
if (loc_e0b35c(r4, stack[2061]) < 0x2) goto loc_8a188;
loc_8a420:
r5 = r8;
loc_e0b35c(r4, @selector(objectAtIndex:), 0x1);
r7 = r7;
r4 = sub_e0b368();
if ((loc_e0b35c(r4, @selector(hasPrefix:), @"friendWifi?") & 0xff) == 0x0) goto loc_8a184;
loc_8a462:
loc_e0b35c(@class(MMServiceCenter), stack[2064]);
r8 = sub_e0b368();
r0 = loc_e0b35c(@class(WCDeviceFriendWifiMgr), r5);
loc_e0b35c(r8, r10, r0);
r5 = sub_e0b368();
loc_e0b35c(r5, @selector(handle3rdAppUrl:), r11);
loc_e0b36c(r5);
goto loc_8a17e;
loc_8a17e:
loc_e0b36c();
goto loc_8a184;
loc_8a22a:
r11 = r8;
if ((loc_e0b35c(@class(CAppViewControllerManager), @selector(hasEnterWechatMain), 0x26fdaf4) & 0xff) == 0x0) goto loc_8a31c;
loc_8a24e:
stack[2060] = r6;
loc_e0b35c(@class(MMServiceCenter), stack[2064]);
r8 = sub_e0b368();
r0 = loc_e0b35c(@class(WCBusinessJumpMgr), r11);
loc_e0b35c(r8, r10, r0);
r7 = r7;
r5 = sub_e0b368();
r6 = stack[2063];
r4 = loc_e0b35c(r5, @selector(isBusinessJump:), r6);
loc_e0b36c(r5);
loc_e0b36c(r8);
if ((r4 & 0xff) == 0x0) goto loc_8a874;
loc_8a2ba:
loc_e0b35c(@class(MMServiceCenter), stack[2064]);
r4 = sub_e0b368();
r0 = loc_e0b35c(@class(WCBusinessJumpMgr), r11);
loc_e0b35c(r4, r10, r0);
r5 = sub_e0b368();
loc_e0b35c(r5, @selector(handleJumpFromOuter:bundleId:parentViewController:), r6, stack[2067], 0x0);
loc_e0b36c(r5);
goto loc_89fb0;
loc_8a874:
r2 = 0x26fdaf4;
if ((loc_e0b35c(@class(WCDeepLinkHandler), @selector(isDeepLink:), r6) & 0xff) != 0x0) {
r0 = *r2;
loc_e0b35c(r0, @selector(getAppViewControllerManager));
r4 = sub_e0b368();
loc_e0b35c(r4, @selector(moveToRootViewController));
loc_e0b36c(r4);
loc_e0b35c(@class(MMURLHandler), @selector(alloc), 0x26fdca4);
r4 = loc_e0b35c();
r11 = 0x1;
loc_e0b35c(r4, @selector(setM_isDisableShare:), 0x1);
loc_e0b35c(r4, @selector(setM_viewController:), 0x0);
loc_e0b35c(r4, @selector(setM_urlPermittedSet:), 0xff);
loc_e0b35c(@class(NSNumber), @selector(numberWithUnsignedInt:), 0x17);
r5 = sub_e0b368();
r0 = loc_e0b35c(@class(NSDictionary), @selector(dictionaryWithObjects:forKeys:count:), sp + 0x58, sp + 0x54, r11);
loc_e0b35c(r4, @selector(handleURL:withExtraInfo:), r6, r0);
loc_e0b36c(r5);
loc_e0b36c(r4);
r6 = stack[2060];
}
else {
r11 = 0x0;
r6 = stack[2060];
}
goto loc_8ab18;
loc_8a12a:
loc_e0b35c(@class(MMServiceCenter), stack[2064]);
r4 = sub_e0b368();
r0 = loc_e0b35c(@class(OpenApiMgr), stack[2065]);
loc_e0b35c(r4, stack[2066], r0);
r5 = sub_e0b368();
loc_e0b35c(r5, @selector(doSMSAddCardApi:), r11);
goto loc_8a17e;
loc_8a0f0:
loc_e0b35c(@class(CAppViewControllerManager), @selector(getAppViewControllerManager), 0x26fdaf4);
r4 = sub_e0b368();
loc_e0b35c(r4, @selector(jumpToCameraScan:), 0x0);
goto loc_8a184;
loc_897c2:
r11 = 0x0;
goto loc_8ab22;
loc_897b6:
stack[2068] = 0x0;
r11 = 0x0;
goto loc_8ab30;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment